Rebecca OwenPersonal website of Rebecca Owen, indie iOS developer, Mum, tech tinkerer, reader and occasional gamer.2024-02-26T00:00:00Zhttps://beccais.online/Rebecca Owenhttps://beccais.onlineFirst Year in Chronicling Commits2024-02-26T00:00:00Zhttps://beccais.online/2024/02/first-year-in-chronicling-commits/<p>It’s been just over a year since the first commit to the repository that would eventually become <a href="https://chroniclingapp.com/">Chronicling</a>, initially codenamed “Timber” — a playful, yet admittedly terrible, pun on logging. I used <a href="https://github.com/arzzen/git-quick-stats">Git Quick Stats</a> to make some little visualisations of the behind the scenes numbers.</p> <p>The first commit was made on the 31st of January 2023, and 12 months later, I’d made 904 commits and expanded to two new platforms, watchOS and visionOS. The monthly breakdown peaks around app launch in July, and a few months later with the introduction of iOS 17, watchOS 10 and notably interactive widgets. The daily and hourly breakdown simply shows that my indie dev time consistently happens when my little one is asleep!</p> <p>I spoke about the early days of development with Charlie on <a href="https://launchedfm.com/episodes/67-Chronicling-RebeccaOwen">Launched</a>. Reflecting on this, if there are any takeaways, I think it is about consistency. Largely motivated by the uncertain amounts of time I get to work on this while juggling parenting and the day job, I try and break down all features into the smallest possible units. Once I have small tasks to work on, I find it much easier to accomplish meaningful work and maintain momentum, even if I only have 10-15 minutes available in a day.</p> <pre><code>By Month: month sum Jan 55 |████ Feb 89 |███████ Mar 53 |████ Apr 130 |███████████ May 152 |█████████████ Jun 122 |██████████ <- WWDC '23 Jul 68 |██████ <- App launched on 7 July Aug 45 |████ Sep 57 |█████ <- iOS 17 launched on 18 Sep Oct 71 |██████ Nov 23 |██ Dec 28 |██ By Day: day sum Mon 94 |████████ Tue 127 |███████████ Wed 139 |████████████ Thu 154 |█████████████ Fri 130 |███████████ Sat 136 |████████████ Sun 113 |██████████ By Hour: hour sum 00 0 | 01 2 | 02 1 | 03 0 | 04 0 | 05 0 | 06 1 | 07 0 | 08 4 | 09 7 | 10 10 | 11 7 | 12 81 |███████ 13 154 |█████████████ 14 34 |███ 15 14 |█ 16 12 |█ 17 5 | 18 3 | 19 22 |█ 20 191 |█████████████████ 21 261 |███████████████████████ 22 82 |███████ 23 2 | </code></pre>Default Apps 20232023-11-09T21:35:12Zhttps://beccais.online/2023/11/default-apps-2023/<p>I’ve been enjoying the recent trend of default apps lists, inspired by <a href="https://listen.hemisphericviews.com/097">a recent podcast episode from Hemispheric Views</a>. The nature of the list has evolved a little on its journey around the internet, but here’s my contribution, with a few additional categories thrown in:</p> <ul> <li>📨 Mail Client: Apple Mail</li> <li>📮 Mail Service: <a href="https://mail.google.com/">Gmail</a> and <a href="https://ref.fm/u29721856">Fastmail</a> <em>(referral link)</em></li> <li>📝 Notes: <a href="https://obsidian.md/">Obsidian</a>, but also Apple Notes (for anything attachment heavy) and <a href="https://www.notion.so/">Notion</a> (for highly structured data like reading/health logs)</li> <li>✅ To-Do: <a href="https://culturedcode.com/things/">Things 3</a> and Apple Reminders (for shared tasks)</li> <li>📓 Scratchpad: <a href="https://tot.rocks/">Tot</a></li> <li>📷 iPhone Photo Shooting: Apple Camera or <a href="https://halide.cam/">Halide</a></li> <li>🟦 Photo Management: Apple Photos</li> <li>📆 Calendar: Apple Calendar</li> <li>📁 Cloud File Storage: iCloud Drive</li> <li>📖 RSS: <a href="https://readwise.io/read">Readwise Reader</a></li> <li>🙍🏻♂️ Contacts: Apple Contacts</li> <li>🌐 Browser: Safari, but I want to try <a href="https://arc.net/">Arc</a></li> <li>💬 Chat: iMessage, <a href="https://discord.com/">Discord</a> and <a href="https://www.whatsapp.com/">WhatsApp</a></li> <li>🔖 Bookmarks: <a href="https://raindrop.io/">Raindrop.io</a></li> <li>📑 Read It Later: <a href="https://readwise.io/read">Readwise Reader</a></li> <li>📔 Journal: <a href="https://dayoneapp.com/">Day One</a></li> <li>🛒 Shopping Lists: <a href="https://www.anylist.com/">AnyList</a>, with capture via Apple Reminders</li> <li>🍴 Meal Planning: <a href="https://www.notion.so/">Notion</a></li> <li>🎥 Media Tracking: <a href="https://www.getsequel.app/">Sequel</a> (syncing to <a href="https://trakt.tv/">Trakt</a>)</li> <li>🎵 Music: Apple Music and <a href="https://triode.app/">Triode</a> (for internet radio)</li> <li>🎤 Podcasts: <a href="https://pocketcasts.com/">PocketCasts</a></li> <li>🔐 Password Management: <a href="https://1password.com/">1Password</a> (mainly for family sharing)</li> <li>🐘 Mastodon: <a href="https://tapbots.com/ivory/">Ivory</a></li> <li>⌨️ Launcher: <a href="https://www.raycast.com/">Raycast</a></li> <li>🛤️ Habit etc. Tracking: <a href="https://chroniclingapp.com/">Chronicling</a> <em>(full disclosure: I am the developer behind this app!)</em></li> <li>🌤️ Weather: <a href="https://mercuryweather.app/">Mercury Weather</a></li> <li>👨🏻💻 Terminal: <a href="https://iterm2.com/">iTerm2</a></li> <li>🧮 Code Editor: Xcode and <a href="https://code.visualstudio.com/">Visual Studio Code</a></li> </ul> <p>You can find more of these posts (and likely some great new app ideas!) at Robb’s <a href="https://defaults.rknight.me/">defaults site</a>.</p>Sunday Shortcuts Archive2023-05-28T22:05:18Zhttps://beccais.online/2023/05/sunday-shortcuts-archive/<p>Last year, I experimented with writing a newsletter sharing a weekly shortcut. It never really took off, but I hope they might be of use to someone. The <a href="https://buttondown.email/becca/archive">full archive can be found here</a>, and I’ll link a few of my favourites below:</p> <ul> <li><a href="https://buttondown.email/becca/archive/sunday-shortcut-plan-movie-night/">Plan Movie Night</a></li> <li><a href="https://buttondown.email/becca/archive/sunday-shortcut-air-quality-check/">Air Quality Check</a></li> <li><a href="https://buttondown.email/becca/archive/sunday-shortcut-apple-music-collage/">Apple Music Collage</a></li> <li><a href="https://buttondown.email/becca/archive/sunday-shortcut-interstitial-journalling/">Interstitial Journalling</a></li> </ul>Using Discord as a Communication Hub for Friends and Family2022-04-16T21:02:11Zhttps://beccais.online/2022/04/using-discord-as-a-communication-hub/<p>Creating your own Discord server is fast, free, and not just for gamers. For the last couple of months, my husband and I have been using a Discord server alongside iMessage as our main method of digital communication.</p> <p>Some percentage of our communication is immediate and practical – “Do we need more milk?” – but a significant amount of our texts are shared links, films we want to watch, places we want to go, etc. We found this kind of thing gets lost in the single stream that most messaging apps use.</p> <p>Discord has a number of advantages over a conventional messaging app for these purposes:</p> <ul> <li><strong>Multiple channels for different topics.</strong> Topics can be grouped into categories. We have top level ‘fun’ and ‘serious’ categories, beneath which we have text channels for different areas of interest.</li> <li><strong>Pin and edit messages.</strong> For example, we use this to keep track of TV series we are behind on in our TV and film channel, and places we’d like to visit in travel.</li> <li><strong>Threads, both permanent and transient.</strong> This is really helpful when we share links to keep discussion all in one place.</li> <li><strong>Bots!</strong> I’ve created a personal bot which currently does a small number of specific things that suit our purposes. The framework is very extensible and could be used much more widely in future. There are thousands of third party bots, many totally free, that can be used to do all manner of things – <a href="https://www.jockiemusic.com/">play music</a>, <a href="https://top.gg/bot/518213843344687130">play chess</a>, <a href="https://top.gg/bot/707726135173054501">get the latest space news</a>, <a href="https://yagpdb.xyz/">follow subreddits</a>, or <a href="https://freestuffbot.xyz/">monitor free game offers</a>.</li> <li><strong>Granular notification control.</strong> Notifications can be managed per channel, so it’s easy to turn off those that are not of immediate interest.</li> <li><strong>Granular permissions.</strong> Users (including bots) can have restricted access to text and voice channels as you see fit. This could be useful in a wider family/friends setup.</li> <li><strong>Following announcements from other servers.</strong> You can follow announcement channels from other Discord servers. We use this to get news about latest game releases all in one place.</li> </ul> <p>This is only scratching the surface – one of the main features is voice chat, which we don’t use at all for this setup. Discord also supports streaming and events.</p> <p>To create your own Discord server, download the app and tap the ‘+’ icon in the left hand column to get started.</p>Automating My Daily Log Setup in Roam Using iOS Shortcuts2020-05-27T20:59:45Zhttps://beccais.online/2020/05/automating-my-daily-log-setup-in-roam-using-ios-shortcuts/<p>At the start of each day, I like to see a quick overview of my calendar, tasks and the local weather. I find this valuable both on the day, to make sure I’m scheduling my time wisely, and in retrospect, when I look back and wonder why I did (or didn’t) get much done last week. Accompanied by other logging and journaling practices, this helps me get a better handle on how I’m spending my time.</p> <p>The Shortcut I’m sharing here assumes use of first party apps for calendars and reminders, although more powerful task managers likely expose similar functionality. It collects the following information:</p> <ul> <li>Weather forecast for today (at the current location, using the stock Weather app)</li> <li>A quote of the day from an RSS feed</li> <li>Calendar events happening today, including the start and end times for non-all day events</li> <li>Tasks which are due today or overdue, from Reminders</li> <li>Tasks which are high priority (regardless of due date), from Reminders</li> </ul> <p>This information is formatted into a structure suitable for pasting directly into <a href="https://roamresearch.com/">Roam Research</a>, but could be easily re-formatted to suit any other note taking software of your choice. Simply modify the ‘Text’ blocks to structure the output in a way that suits you.</p> <p>To demonstrate how this works, a couple of the key ‘actions’ (the building blocks of iOS Shortcuts) querying the Reminders app are shown below. These filters are powerful and easily customizable, operating on most of the available attributes set in Reminders and sorting the results. Feel free to experiment with these filters to customize the Shortcut to your needs.</p> <p>At the end of the Shortcut, the output is collated and formatted in a single ‘Text’ block, here formatted assuming Roam outline-style nesting. <em>(N.B. At the time of writing, Roam does not yet expose an API, but this may be coming soon)</em>. Finally, the Shortcut opens the URL of your Roam database in Safari, so you can paste in the formatted content.</p> <p>If you’d like to try this out, you can get the Shortcut <a href="https://www.icloud.com/shortcuts/ee58f7f4c6544a1eae8c777cb99846e7">here</a>. If this is your first third party Shortcut, you will need to allow untrusted Shortcuts in Settings first.</p>Custom CSS Styling on iOS Using Shortcuts2020-05-24T00:00:00Zhttps://beccais.online/2020/05/custom-css-styling-on-ios-using-shortcuts/<p>Some websites could do with an extra lick of paint.</p> <p>Using a desktop browser, extensions like <a href="https://addons.mozilla.org/en-GB/firefox/addon/styl-us/">Stylus</a> are available to apply custom CSS to webpages. I’ve been using this tool with <a href="https://roamresearch.com/">Roam</a>, experimenting with many of the great themes the community have been sharing (in particular, the beautiful light theme shown in this post from <a href="https://maggieappleton.com/paintingroam">Maggie Appleton</a>). However, I spend a lot of my time on my iPad and wanted to have the same experience there. This is possible using iOS Shortcuts, with only a few simple actions.</p> <h2 id="applying-css-with-shortcuts">Applying CSS with Shortcuts</h2> <p>Inspired by this <a href="https://apple.stackexchange.com/questions/377492/is-css-injection-possible-on-ipad-using-safari">answer</a> on StackExchange, I wrote a pair of Shortcuts which take a standard CSS stylesheet as input and apply this style to any webpage in Safari through the share sheet. This uses some quick and dirty regex to parse the CSS file and wraps this in a JavaScript function, which runs on a webpage using the Shortcuts action provided by Safari.</p> <p>This all happens within Safari, without leaving the page, and persists as long as you stay at the same URL. Thankfully, when using with this Roam, this means the style changes persist as you roam around your database. Unfortunately, due to limitations with custom fonts in iOS, this doesn’t currently support fonts not available in Safari. If you’d like to try out these Shortcuts, they can be installed from the links below:</p> <ul> <li><a href="https://www.icloud.com/shortcuts/8a56f82b20fb4204a6b5ea99ce879582">Parse CSS Shortcut</a></li> <li><a href="https://www.icloud.com/shortcuts/c49e6b0ea1cd454e91b0f7aa85c16408">Apply Custom CSS Shortcut</a></li> </ul> <p>The <em>Parse CSS to Override</em> Shortcut is not called directly, but is run by the <em>Apply Custom CSS</em> Shortcut, which is added to the share sheet for web pages.</p> <p>By default, ‘Apply Custom CSS’ will open the file picker for you to choose a .css file to use. If you would instead like to quickly apply the same styling, you could modify this Shortcut to get a file at a specific path, or simply copy and paste the contents of the .css file into a Text block. This file or text block would then be passed as the input to the ‘Parse CSS to Override’ Shortcut.</p> <p>For my own use, I have duplicated the ‘Apply’ Shortcut <a href="https://www.icloud.com/shortcuts/33f617eb01934cc9a8d4c4cefe3f6657">specifically for Roam</a>, with a text block containing my current favorite custom theme so it runs super fast.</p> <p>All of the JavaScript run on the page is visible in the text blocks and I encourage you to read it before running. The first time you run the Shortcut, it will ask for access to files (if you wish to choose a stylesheet this way) and to the webpage on which it is run. If you have not added Shortcuts from the web before, you will also need to allow untrusted Shortcuts in Settings.</p>