Longform

The great unfollowing 😱

Inspired by @cedevroe’s semi-regular purges, I’ve gone through my many services and unfollowed, unsubscribed, and deleted everything. And, I mean everything! That’s all of my RSS feeds, newsletters, podcasts, and Micro.blog, Twitter, Instagram, and YouTube accounts. This seemed kind of crazy at first, until I realized that being so attached to these things is rather silly.

Before simply resubscribing to everything, I’m trying to take a more thoughtful approach to why I’m using each of these services.

All of my news feeds are in NetNewsWire with Feedbin as the back end. I’d accumulated a few dozen feeds here, the vast majority of which I was consistently just marking all as read. Many were feeds that I thought I should read, rather than actually wanted to read. I’m going to resubscribe to just the ones that seemed to consistently yield interesting (to me) articles, like Quanta Magazine and Aeon.

As newsletters arrive, I’ll unsubscribe from them. If I still see value, I’ll transition them over to Feebin and they’ll show up among the news feeds. Conceptually this makes sense to me, since they really are just another source of news, rather than actual correspondence to me.

Although I cleaned up my podcasts a couple of years ago, I’d added a few more since then. I think my original list is still the right one. Nevertheless, I’ve unsubscribed from them all and will reintroduce them slowly.

The YouTube algorithms are far too powerful and tempting. So, I’m shifting to adding specific channels to Feedbin. I like a few science and math oriented channels (such as Steve Mould, 3Blue1Brown, and Stand-up Maths), the rest were just mindless ways of passing the time.

Instagram used to be where I went to see pictures from friends about their adventures, kids, and pets. Over time my feed had become dominated by brands, especially fitness, beer, and whiskey. Nothing wrong with any of these, obviously, just not what I need to be seeing, So, back to just accounts for people I actually know. As an aside, I was surprised by how easy Instagram makes it to unfollow, including a helpful list of which accounts you interact with the most and the least.

I really like the idea of Twitter as a place to follow my interests. We all know that in practice it can be a pretty nasty place. As an experiment, I’m going to try only following topics there, rather than people. To be honest, though, I lost my Twitter scrolling habit about halfway through the Trump presidency and I’m not that tempted to return.

Micro.blog was tricky. As the opposite of Twitter, I’ve found lots of nice people having interesting conversations there on a wide array of topics. But, the point of this exercise is to clean out everything, so even here I’ve stopped following everyone. I suspect that I’ll end up mostly back where I started on this one.

I have to admit feeling a bit disoriented this morning. My usual routine is to scan through all of these sources while waking up with some coffee. There are lots of other things I can be doing in the morning though, starting with actually reading some of the articles I’ve accumulated in my ever lengthening read-it-later queue.

Although a purge like this can seem dramatic, I think it can also be therapeutic. Thanks to @cedevroe for prompting this.

Improving my running with a gait analysis šŸƒā€ā™‚ļø

In preparation for Tremblant, I had my gait analyzed to find out if there are any issues with my running form. I found the process surprisingly thorough and interesting.

Katie (a registered physiotherapist) started out with a general discussion about my running history and goals. Then she filmed me running on a treadmill for about five minutes. We set a fast pace, since that quickly exposes any sloppiness in my running. I have to admit that watching myself running in slow motion was a bit awkward, though my form wasn’t as bad as I’d imagined.

Katie identified two issues: too much side to side rotation of my arms and a pronounced dip on my left side.

The arms are pretty easy. I just need to be more mindful of how they’re swinging and focus on moving them forwards and backwards, rather than side to side. This better directs my energy towards forward movement.

The dip is more complicated. Katie tried a bunch of different strength tests to isolate the muscle and we found that my left glute was much stronger than my right, which is odd, given I’m right handed. To distinguish between strength and muscle activation, Katie tried an acupuncture needle in my right hip. Remarkably, just a couple of minutes later, I was then much stronger on the right side. We did another round on the treadmill and my hips were now nicely aligned.

This suggested to Katie that my strength is fine, rather it’s insufficient muscle activation that is leading to the dip. She prescribed some warmup exercises to help. I know that I have a deficient warm up routine (as in there isn’t one, I just start running), so this is a good excuse to improve this component of my running routine.

As someone that generally just puts on running shoes and gets going, I’m glad I put in some time to understand my gait and identify some opportunities for improvement. I hope to be running for many more years and this should help minimize injuries.

2021 iPhone Home Screens

My iPhone Home Screen continues to evolve and, now that we have Focus Modes, I’ve made some further adjustments.

Screenshot of three iOS HomeScreens based on Focus Modes

From left to right, I’m using three different Focus Modes: Personal, Work, and Fitness. The first two are entirely widget focused, while Fitness has a few app icons as well.

The dock has Drafts which, as the tagline says, is where text starts. This hasn’t changed from my earlier setups. The second icon launches a front-end Shortcut for Apple Notes. As I described in my Apple Note overview, this is an idea that I’ve borrowed from Matthew Cassinelli and provides a flexible interface to the app.

Personal

From top left, my Personal Home Screen starts with a stack of Reminders filtered to my Personal list, Fantastical, and Streaks. This is essentially my ā€œwhat should I be doingā€ stack.

Next is a stack with Photos and Siri Suggestions. The Photos widget consistently surfaces delightful photos, so I’ve given it a prominent spot. While the usefulness of Siri Suggestions are variable, I like the idea of my phone learning my habits and showing me relevant actions.

Through the middle, I have Weather on the left and the right is a stack of Apple Music and Overcast, which are my options for listening to something.

On the bottom left is a stack of Timery and Screen Time. These are there to keep me mindful of what I’m actually doing, especially on weekends. The Timery widget shows me a summary view of my projects. So, in this screenshot I’ve put in an hour on exercise, another hour on reading, and 20 minutes with some household chores. The Screen Time widget helps keep me honest about how much I’m using my devices, especially on weekends when I really should be looking at something besides a screen.

And on the bottom right is a stack of Day One and Notes, filtered to my Personal folder. Day One is there for capturing family events and reflections. While the Notes folder often has some useful reference material for our weekend activities.

Work

Curiously, my Work Home Screen is less complicated than my Personal one.

The top is a stack with Fantastical and Mail’s VIP widget. I’m not entirely convinced that the Mail widget is useful here. I almost always just want Fantastical reminding me of my next meeting or task.

Given the more variable number of tasks I tend to be doing while in work mode, I’ve got the Siri Suggestions widget in the middle. I took this screenshot on the weekend, so it isn’t indicative of what it usually shows, which tends to be one of the Shortcuts that I’m often launching to manage my workday.

Intentionally mirroring my Personal HomeScreen, the bottom row is a stack with two Timery widgets and a stack of two Notes widgets, one filtered to my Work folder and the other to my Meetings folder.

Fitness

The Fitness Home Screen is mostly an experiment. I spend the vast majority of my time in one of the other two Focus Modes, so I’m not yet convinced that I need any other Home Screens.

Regardless, this one has the Fitness widget at the top for seemingly obvious reasons.

The middle row has the Training Today widget to help keep me honest about rest. And then a cluster of icons on the right. The only one that is non-standard is ā€œWorkout mixā€, which is just a Shortcut to launch a good playlist in Apple Music.

The bottom row has Carrot Weather to make sure I’m not about to get rained on when heading out for a run. I’ve also added the Batteries widget there to make sure my Apple Watch and AirPods are ready for action.


I’ve set up Personal Automations to automatically switch between my Personal and Work Home Screens at 8:45 and 17:30. I’ve found these good reminders to keep my work activities within reasonable office hours. Starting a Workout automatically switches to the Fitness Home Screen.

There’s almost endless scope for fiddling with these. So, by writing them here, I’m adding some accountability to just stop that and use them for a while before making further changes.

Integrating Micro.blog Highlights with Apple Notes šŸ“’

Now that I’m committed to using Apple Notes, I wanted a way to download my Micro.blog Highlights into Notes.

I like using Bookmarks as a read-it-later service and the highlighting feature is great for quickly blogging excerpts from articles. For longer-term storage, though, and integration with the rest of my notes, it is much better to have the content of the highlights stored within Notes.

So, here’s a Shortcut Micro.blog Highlights to Notes that does exactly this. The Shortcut checks first to see if the highlight is already captured in a note to prevent duplication. It also checks to see if there’s already a note for the webpage, just with a different highlight, and appends the highlight to that note, instead of creating a new one.

At least, that’s the idea. I’ve found these checks very unreliable. Sometimes the Shortcut finds the match and appends, and sometimes it doesn’t and creates a new one. Part of the problem seems to be that if there’s any punctuation in the content, the Notes filter fails. For example, searching for ā€œWe begin with an obstinate fact:ā€ fails, then remove the ā€œ:ā€ and the search work fine. I can use regular expressions to remove all punctuation, but then my notes are all mangled.

After fiddling around with this for a while, I’m just going to move along and assume it is a bug in the Notes actions for Shortcuts. Perhaps not a fair conclusion. The worst case is that I get one note per highlight, rather than just one note per article, and sporadically a note is duplicated. This isn’t so bad, and debugging Shortcuts can be a nuisance. Given this, the Shortcut is likely better used in an empty Notes folder, that is, delete all the previously downloaded Highlights first.

Lessons from using Apple Notes for three months

Back in September, I committed to using Apple Notes for three months. The goal was to focus on my use cases for writing, rather than fiddling with new apps continuously.

Here’s what I’ve identified so far. Many of the approaches and features that I’m using in these use cases are readily available in other apps and often Notes is not the most efficient choice. Now that I’ve documented these use cases, I’d like to use them to assess alternative apps.

Meeting notes

Thanks to Timery, I know that 60% of my working time is spent in meeting. So many meetings!

For each one, I create a note to capture ideas, useful information, and tasks. I’ve automated this with a couple of Shortcuts. The one I use the most is ā€œStart My Next Meetingā€. This presents me with a list of upcoming meetings. I choose from the list and it creates a meeting note, starts a Timery timer, and opens the link to start the video call (typically Teams). The meeting note has the name of the meeting as the title, adds tags for #meeting and the Timery project, adds the date and time of the meeting, a list of attendees, and any notes from the calendar event. From this structure, I can then add notes throughout the meeting and extract any tasks into Reminders later.

I used Agenda for these sorts of notes before, which was powerful.

Daily summaries

Occasionally, I find myself at the end of a week with no clear sense of what I actually accomplished. To help with this, for the past year I’ve been recording the top three things I’ve done in a day into Day One (the 5 Minute PM template has been great for this).

To augment this, I’ve been using another Shortcut to create a Daily Work Report. This makes a note of the meetings I attended, tasks I completed, and tasks I created. These all get saved to a Daily Notes folder. I then use the day’s work report to pull out the highlights for Day One. There’s some redundancy here, though I find the process of choosing just three things for Day One is helpful.

Overall, I think that Day One is a better app for this use case.

Project notes

For each of my projects, I create a project note that states the purpose or objective of the project, key stakeholders, and timelines. Then I accumulate relevant notes and documents while making progress on the project. Creating these are also done via a simple Shortcut. I’ve experimented with using checklists for tasks in these notes, but find it isn’t as effective as my approach with MindNode and Reminders.

Once I finish a project, the associated note gets cleaned up and moved to an Archive folder to keep it out of the way.

Research

This is a rather broad category and, unlike the previous use cases, is for both work and personal notes. Much of this is capturing facts, quotes, and sources. If it is project specific, they go to the project note. Some are more generic and are kept as a standalone note. All of them get tags to help provide some structure. This is where Apple Notes ability to accept almost anything from the share sheet is powerful.

The new Quick Notes feature has been interesting for research. The ability to quickly highlight and then resurrect content on websites is great. I find actually working with the quick notes is pretty clumsy though. They have to stay in the Quick Notes folder and choosing which one to send content to can be tricky. I think there’s some great potential here and will keep experimenting.

For any webpages that I want to archive, I use another Shortcut that creates a plain-text note of the webpage along with some metadata and then adds the link to Pinboard. This has been surprisingly useful for recipes, when all I really want are the ingredients and steps, rather than the long history of the recipe’s development.

Other nice features

In addition to these use cases, there are a few nice features of Apple Notes that are worth mentioning.

Challenges

There are a few things that don’t work as well as they should:

Other use cases

I’ve found a few use cases that don’t yet fit in with Apple Notes. I’m using Drafts for all of these:


Restricting myself to Apple Notes was a helpful trick for crystallizing my use cases. Now that I’m three months in, I think I’ll stick with Apple Notes for a while longer. I’ve built up a good ecosystem of Shortcuts for working with the app and, of course, now have lots of content in the app.

Switching to iCloud+ Custom Email Domain šŸ“§

I’ve switched my personal email over to Apple’s custom email domain with iCloud Mail. A roughly ranked list of reasons for the switch is:

  1. One less account to worry about. Not that it was a big deal, but now I don’t need to know the various setup details for my personal email. Once I’ve logged into my iCloud account, my email is ready.
  2. I appreciate Apple’s commitment to privacy and trust that they’ll apply this commitment to my email account.
  3. I’m already paying for iCloud+ and, so, might as well use this feature and save some money by not paying for separate email hosting.
  4. I’m actively using Reminders and Notes in iCloud.com and the Mail interface there is decent, certainly better than the rudimentary one offered by my previous email host.

Setup was straightforward with clear instructions. Having said that, the only issue I had was that initiating the setup process simply didn’t work for a few weeks. I tried a couple of times a week and each time I just got a generic error. Then, for no apparent reason, one day it worked. I suspect this was just an issue with rolling out a new service.

I should point out that my email needs are very basic for this personal account. I don’t need many automated rules, tagging, or filtering. So, iCloud Mail is fine. I wouldn’t switch over my work account (even if corporate IT would allow it). I get something like 100x the email at work and need more sophisticated tools.

Besides the initial trouble with initiating the setup, everything has been working well for the past week. I’m well aware of Apple’s well-earned reputation for challenges with internet services and will be staying vigilant for at least the next few weeks. One of the great benefits of having my own domain name is the ease with which I can switch mail hosts.

The cansim R package is really helpful šŸ“¦ šŸ“Š

Statistics Canada has a wealth of data that are essential for good public policy. Often a good third of my analytical scripts are devoted to accessing and processing data from the Statistics Canada website, which always seems like a waste of effort and good opportunity for making silly errors. So, I was keen to test out the cansimpackage for R to see how it might help. The quick answer is “very much”.

The documentation for the cansim package is thorough and doesn’t need to be repeated here. I thought it might be useful to illustrate how helpful the package can be by refactoring some earlier work that explored consumer price inflation.

These scripts always start off with downloading and extracting the relevant data file:

cpi_url <- "https://www150.statcan.gc.ca/n1/tbl/csv/18100004-eng.zip" # (1)
if(file.exists("18100004-eng.zip")) { # (2)
    # Already downloaded
  }  else {
    download.file(cpi_url,
      destfile = "18100004-eng.zip", 
      quiet = TRUE)
    unzip("18100004-eng.zip") # (3)
  }
cpi <- readr::read_csv("18100004.csv") # (4)

A few things to note here:

  1. You need to know the url for the data. Sometimes the logic is clear and you can guess, but often that doesn’t work and you need to spelunk through the Stats Can website
  2. To avoid downloading the file every time I run the script, there’s a test to see if the file already exists
  3. This approach yields lots of files and folders that you need to manage, including making sure they’re ignored by version control
  4. Using the great readr package imports the final csv file

With cansim all I need to know is the data series number:

cansim_table <- "18-10-0004"
cpi <- cansim::get_cansim(cansim_table)

get_cansimdownloads the right file to a temporary directory, extracts the data, and imports it as a tidyverse-compatible data frame.

The get_cansim function has some other nice features. It automatically creates a Date column with the right type, inferred from the standard REF_DATE column. And, it also creates a val_norm column that intelligently converts the VALUE column. For example, converting percentage or thousand-dollar values into standard formats.

The cansim package is a great example of a really helpful utility package that allows me to focus on analysis, rather than fiddling around with data. Definitely worth checking out if you deal with data from Statistics Canada.

Readiness To Train with the Training Today app šŸƒā€ā™‚ļø

I’m trying to sequence my workouts in a more systematic way to avoid overtraining. I’ve found Training Today really helpful in determining this Readiness To Train (RTT). The app uses data collected by my Apple Watch to provide a straightforward indicator of how ambitious I should be on any particular day.

As an example, here’s today’s evaluation:

This matches how I feel 🄓. So, today was a good day for some recuperative yoga.

Scrolling back to Thursday, everything looked much better and I put in a good HIIT session:

Of course, the whole point of doing this is to adjust my training to match how my body is recovering. I clearly didn’t do this on Friday. Rather than catch up on some sleep, I choose to do a moderate workout and my RTT stayed on the floor. Not great, considering I’d signed up for an intense One Academy Endure Challenge on Saturday. I managed to finish, which is the main goal, but it didn’t feel good.

Comparing my RTT for this week’s Endure Challenge with the last one shows how this indicator can be informative:

My RTT was much higher back then and I felt really good during the challenge. This gives me comfort that RTT is actually measuring something real and actionable.

The Apple Watch screenshots shown above are part of the free version of the Training Today app. The more detailed chart above is included in a one-time in-app purchase. This gets you details like this:

And a simple widget, shown below on my fitness home screen:

I really like the focussed simplicity of Training Today, along with the straightforward one-time purchase. My Apple Watch is collecting lots of data about me and I’m glad I can use it to better manage my fitness.

Switching from Agenda to Craft, for now šŸ“…šŸ—’

In my corner of the internet, there’s a well trodden, twisted path of searching for the one true notes app. I’ve reached a fork in the path between Agenda and Craft. As I wrote earlier, I’ve been using Agenda for a while now and its date-based approach really suits my meeting-dominated work. Now, though, Craft has added calendar integration and I’m testing it out.

There are several things I really like about Craft, relative to Agenda:

  1. Document syncing is far more reliable. This isn’t entirely Agenda’s fault. I’m restricted by corporate policy from using iCloud Documents, so have been using Dropbox sync for Agenda. I often have to wait an indeterminate, though long, time before documents sync across my devices. Craft sync has been instantaneous and very reliable.
  2. Having access to my documents from a web browser is great. I’ll be back to working from the office on a Windows laptop soon and won’t have access to my iPad. So, web access will be important.
  3. Performance is much better on Craft. Agenda often freezes in the middle of typing and suffers from random crashes. This could very well be something about my particular setup, though it doesn’t happen in any other apps.

On the downside, I do miss Agenda’s simplicity. Craft has lots of ways to organize notes (such as cards and subpages). Of course, you can mostly ignore this, but I like Agenda’s well-thought-through approach that didn’t require much deliberation about where to put things.

Of course, having just made this switch, Apple announced Quick Notes and I may well be back on Apple Notes in a few months.

Choosing a podcast player šŸ¤”šŸŽ§

There’s been a fair bit of discussion over on Micro.blog about podcast players recently. I’ve switched among Overcast, Castro, and Apple Podcasts players over the years and, mostly to help myself think it through (again), here are my thoughts.

For me, there are three main criteria: audio quality, episode management, and OS integration. Though, I completely understand that others may have different criteria.

Like most podcast listeners, I listen at high speed, usually around 1.5x, which can distort the audio. Apple Podcasts player is definitely the worst for this criterion. For me, Overcast’s smart speed and voice boost features give it the edge over Castro, in terms of audio quality at increased speeds.

Castro is definitely the player of choice if you subscribe to more podcasts than you can listen to. The queue management features in Castro are very good. You can replicate some of this with Overcast, but that isn’t one of the app’s main features. Apple Podcasts player doesn’t offer much in this regard. Despite listing this as a criterion, I’ve actually elevated to subscription, rather than episode, triage. I carefully curate my list of podcasts and don’t add new ones very often. Given this, Overcast’s approach is more than sufficient for me.

OS integration is a bit unfair, as Apple has given themselves some nice features that independent app developers aren’t able to use. Nonetheless, Apple does a good job of intermixing podcasts and music into their Siri-powered widgets in iOS and the HomePods. With my reinforced interest in less screen time and use of home screen widgets, Apple Podcasts wins out here. This may change once Overcast releases a widget.

As just one example of the integration, here’s what happens when I plug headphones into my iPhone: a selection of music playlists and podcasts appears. I use this feature a lot.

Screenshot of the iOS audio widget

After all that, I’m using Apple Podcasts for now, mostly to take advantage of the OS integrations while I’m experimenting with a widget-based iPhone. I’m quite certain this is short term and that I’ll return to Overcast soon. In addition to the better audio quality, Overcast also has some nice refinements, like per subscription speed settings (I like to play music podcasts at 1x) and skip-forward amounts (Quirks and Quarks, for example, always has a two-minute preamble that I skip). These small refinements are typically what distinguishes the stock Apple apps from good indie apps.

I’m glad there are so many solid apps for podcast listening. Whatever your preferences, there’s sure to be one for you.

Transforming boxes of components into a gaming PC šŸ“¦šŸ•¹

Like any 12-year old, my son is pretty keen on gaming. As an all Apple house, his options were a bit constrained. So, we decided to build a PC from components.

I’d last built a PC about 30 years ago, when I wasn’t much older than him. I remember thinking it was cool to be using a machine I’d built myself, plus as a parent it seemed like a good educational experience. I have to admit to being a bit nervous about the whole thing, as there was certainly a scenario in which we spent an entire weekend unsuccessfully trying to get a bunch of malfunctioning components to work.

After much deliberation and analysis, we ordered our parts from Newegg and everything arrived within a couple of weeks.

Following along with this great step-by-step video, we assembled the components.

Given my initial anxiety, I was very relieved when we saw this screen. The BIOS booted up and showed that the RAM, SSD, and other components were all properly connected.

With that done, we then got to what ended up being the complicated part. Evidently part of the point of a gaming PC is to have lots of fans and lights. None of this was true when I was a kid and there were a daunting number of wires required to power the lights and fans. Sorting this out actually took a fair bit of time. But, eventually success!

Then our last challenge, which I likely should have anticipated much sooner. We didn’t bother ordering a DVD drive, since everything is online these days. But, our Windows installation showed up as a DVD and we couldn’t create any Windows install media on our Apple devices. Fortunately, we checked in with a slightly older kid down the street and he provided us with a USB drive with the right software. With that challenge solved, we finished the project!

Not counting choosing the components online, the whole project took about 5 hours from opening the boxes to booting into Windows for the first time. I’d definitely recommend it to anyone that’s tempted and technically inclined. My son is quite excited to be using a computer that he built from parts.

Scheduling random meetings with a Shortcut āš™ļøšŸ—“

Staying in touch with my team is important. So, I schedule a skip-level meeting with someone on the team each week. These informal conversations are great for getting to know everyone, finding out about new ideas, and learning about recent achievements.

Getting these organized across a couple of dozen people is logistically challenging and I’ve developed a Shortcut to automate most of the process.

Borrowing from Scotty Jackson, I have a base in AirTable with a record for each team member. I use this to store all sorts of useful information about everyone, including when we last had a skip-level meeting. The Shortcut uses this field to pull out team members that I haven’t met with in the past four months and then randomizes the list of names. Then it passes each name over to Fantastical while also incrementing the date by a week. The end result is a recurring set of weekly meetings, randomized across team members.

The hardest part of the Shortcut development was figuring out how to get the names in a random order. A big thank you to sylumer in the Automators forum for pointing out that the Files action can randomly sort any list, not just lists of files.

I’m not sharing the Shortcut here, since the implementation is very specific to my needs. Rather, I’m sharing some of the thinking behind the code, since I think that it demonstrates the general utility of something like Shortcuts for managing routine tasks with just a small amount of upfront effort.

Year of the Tangible

Inspired by Coretex, I’m declaring Tangible as my theme for 2021.

I’ve chosen this theme because I want to spend less time looking at a screen and more time with “tangible stuffā€. I’m sure that this is a common sentiment and declaring this theme will keep me focused on improvements.

Since working from home with an iPad, I’m averaging about 9 hours a day with an iOS device. This isn’t just a vague estimate; Screen Time gives me to-the-minute tracking of every app I’m actively using.

A generic day is something like:

  1. Exercise via Zoom in the morning
  2. Meditate with Waking Up on the iPhone
  3. Read news on my iPad while having breakfast
  4. Back and forth between Teams (almost 3 hours a day!) and Outlook on the iPad throughout the work day
  5. Learning guitar on YouTube and reading books in the iPad in the evening

Throw in some Netflix, journaling in DayOne, social networking, and random YouTube videos and I’m spending an incredible amount of time looking at a screen.

I’m certainly not a Luddite! The ability of these rectangles of glass to take on so many functions and provide so much meaningful content is astounding. There’s just something unsettling about the dominant role they play.

So, a few things I plan to try:

I’ll be adding much of this to Streaks, an app that I’ve found really helpful for building habits. I’ll also add a “tangible” tag to my time tracker to quantify the shift.

My hope is that I can find the right balance of screen time and tangible activities with intention.

MindNode is the best mind mapping app for iOS

Continuing my plan to update App Store reviews for my favourite apps, up next is MindNode.

MindNode is indispensable to my workflow. My main use for it is in tracking all of my projects and tasks, supported by MindNode’s Reminders integration. I can see all of my projects, grouped by areas of focus, simultaneously which is great for weekly reviews and for prioritizing my work.

I’ve also found it really helpful for sketching out project plans. I can get ideas out of my head easily with quick entry and then drag and drop nodes to explore connections. Seeing connections among items and rearranging them really brings out the critical elements.

MindNode’s design is fantastic and the app makes it really easy to apply styles across nodes. The relatively recent addition of tags has been great too. Overall, one of my most used apps.

Data Governance Sponsor recruitment

I’m very excited to be recruiting for a Data Governance Sponsor to join my team and help enhance the use of good data analytics in our decisions at Metrolinx.

I’m looking for someone that enjoys telling compelling stories with data and has a passion for collaborating to build clean and reliable analytical processes. If you know someone that could fit (maybe you!), please pass along the job ad

Supporting my favourite apps with App Store reviews šŸŽ–

I’ve been negligent in supporting some of my favourite apps on the App Store. In many cases, I reviewed the app a few years ago and then never refreshed my ratings. So, I’m making a new commitment to updating my reviews for apps by picking at least one each month to refresh.

First up is Fantastical. This one took a real hit when they switched to a subscription pricing model. I get the controversy with subscriptions in general. For me, Fantastical has earned a spot on my short list of apps that I support with an ongoing subscription.

And here’s my App Store review:

Fantastical is a great app and is definitely one of my top three most-used apps. Well worth the subscription price.

A few favourite features:

  • Integration of events and tasks into the calendar view
  • Access to event attachments
  • Automatic link detection for Teams and Zoom meetings

Trying out a new iPhone Home Screen šŸ“±

With the release of iOS 7, I’m reconsidering my earlier approach to the Home Screen. So far I’m trying out a fully automated first screen that uses the Smart Stack, Siri Suggestions, and Shortcut widgets. These are all automatically populated, based on anticipated use and have been quite prescient.

My second screen is all widgets with views from apps that I want to have always available. Although the dynamic content on the first screen has been really good, I do want some certainty about accessing specific content. This second screen replaces how I was using the Today View. I’m not really sure what to do with that feature anymore.

I’ve hidden all of the other screens and rely on the App Library and search to find anything else.

I still like the simplicity behind my earlier approach to the Home Screen. We’ll see if that is just what I’m used to. This new approach is worth testing out for at least a few weeks.

In defence of ā€œpoisonous"​ models ā˜ ļøšŸ§®

Skipping past the unnecessarily dramatic title, The Broken Algorithm That Poisoned American Transportation does make some useful points. As seems typical though these days, the good points are likely not the ones a quick reader would take away. My guess is most people see the headline and think that transportation demand models (TDMs) are inherently broken. Despite my biases, I don’t think this is actually true.

For me, the most important point is about a third of the way through:

nearly everyone agreed the biggest question is not whether the models can yield better results, but why we rely on them so much in the first place. At the heart of the matter is not a debate about TDMs or modeling in general, but the process for how we decide what our cities should look like.

Models are just a tool for helping guide decisions. Ideally we would use them to compare alternatives and pick a favoured “vector” of change (rough direction and magnitude). Then with continuous monitoring and refinements throughout the project’s lifecycle, we can guide decisions towards favoured outcomes. This is why scenario planning, sensitivity tests, and clear presentation of uncertainty are so important. This point is emphasized later in the article:

civil engineers doing the modeling tend to downplay the relevance of the precise numbers and speak more broadly about trends over time. Ideally, they argue, policymakers would run the model with varying population forecasts, land use patterns, and employment scenarios to get a range of expectations. Then, they would consider what range of those expectations the project actually works for.

Although I’m not a civil engineer, this sounds right to me! I get that people want certainty and precise numbers, I just don’t think anyone can provide these things. Major infrastructure projects have inherent risks and uncertainty. We need to acknowledge this and use judgement, along with a willingness to adjust over time. There is no magical crystal ball that can substitute for deliberation. [Me working from home:šŸ§™ā€ā™‚ļøšŸ”®]

Fortunately for the modellers among us, the article does acknowledge that we’re getting better:

As problematic as they have been, the models have gotten smarter. Especially in the last decade or so, more states are working from dynamic travel models that more closely reflect how humans actually behave. They are better at taking into consideration alternate modes of transportation like biking, walking, and public transportation. And, unlike previous versions, they’re able to model how widening one section of road might create bottlenecks in a different section.

But, wait:

Still, experts warn that unless we change the entire decision-making process behind these projects, a better model won’t accomplish anything. The models are typically not even run—and the results presented to the public—until after a state department of transportation has all but settled on a preferred project.

šŸ˜” Maybe it wasn’t the model’s fault after all.

This brings as back to the earlier point: we should be favouring more sophisticated decision-making processes, not just more sophisticated models.

Reading Shortcut for the iPad šŸ‘“āš™ļø

I haven’t yet adopted the minimalist style of my iPhone for my iPad. Rather, I’ve found that setting up “task oriented” Shortcuts on my home screen is a good alternative to arranging lots of app icons.

The one I use the most is a “Reading” Shortcut, since this is my dominant use of the iPad. Nothing particularly fancy. Just a list of potential reading sources and each one starts up a Timery timer, since I like to track how much time I’m reading.

Here’s a screenshot of the first few actions:

I like the bit of whimsy from using emoticons:

A nice feature of using a Shortcut for this is that I can add other actions, such as turning on Do Not Disturb or starting a specific playlist. I can also add and subtract reading sources over time, depending on my current habits. For example, the first one was Libby for a while, since I was reading lots of library books.

This is another example of how relatively simple Shortcuts can really help optimize how you use your iOS devices.

Reflection journal in Day One with an Agenda assist

I’ve been keeping a “director’s commentary” of my experiences in Day One since August 2, 2012 (5,882 entries and counting). I’ve found this incredibly helpful and really enjoy the “On This Day” feature that shows all of my past entries on a particular day.

For the past few months, I’ve added in a routine based on the “5 minute PM” template which prompts me to add three things that happened that day and one thing I could have done to make the day better. This is a great point of reflection and will build up a nice library of what I’ve been doing over time.

My days seem like such a whirlwind sometimes that I actually have trouble remembering what I did that day. So, my new habit is to scroll through my Today view in Agenda. This shows me all of my notes from the day’s meetings. I’ve also created a Shortcut that creates a new note in Agenda with all of my completed tasks from Reminders. This is a useful reminder of any non-meeting based things I’ve done (not everything is a meeting, yet).

I’m finding this new routine to be a very helpful part of my daily shutdown routine: I often identify the most important thing to do tomorrow by reviewing what I did today. And starting tomorrow off with my top priority already identified really helps get the day going quickly.

Different watch faces for work and home

watchOS 7 has some interesting new features for enhancing and sharing watch faces. After an initial explosion of developing many special purpose watch faces, I’ve settled on two: one for work and another for home.

Both watch faces use the Modular design with the date on the top left, time on the top right, and Messages on the bottom right. I like keeping the faces mostly the same for consistency and muscle memory.

My work watch face than adds the Fantastical complication right in the centre, since I often need to know which meeting I’m about to be late for. Reminders is on the bottom left and Mail in the bottom centre. I have this face set to white to not cause too much distraction.

My home watch face swaps in Now Playing in the centre, since I’m often listening to music or podcasts. And I have Activity in the bottom centre. This face is in orange, mostly to distinguish it from the work watch face.

Surprisingly, I’ve found this distinction between a work and home watch face even more important in quarantine. Switching from one face to another really helps enforce the transition between work and non-work when everything is all done at home.

The watch face that I’d really like to use is the Siri watch face. This one is supposed to intelligently expose information based on my habits. Sounds great, but almost never actually works.

Our Home Renovation Is Complete!

We’re very excited to move back home

Comparing predicted to actual votes for the 2019 Federal election

Our predictions for the 2019 Federal race in Toronto were generated by our agent-based model that uses demographic characteristics and results from previous elections. Now that the final results are available, we can see how our predictions performed at the Electoral District level.

For this analysis, we restrict the comparison to just the major parties, as they were the only parties for which we estimated vote share. We also only compare the actual results to the predictions of our base scenario. In the future, our work will focus much more on scenario planning to explain political campaigns.

We start by plotting the difference between the actual votes and the predicted votes at the party and district level.

Distribution of the difference between the predicted and actual proportion of votes for all parties

The mean absolute value of differences from the actual results is 5.3%. In addition, the median value of the differences is 1.28%, which means that we slightly overestimated support for parties. However, as the histogram shows, there is significant variation in this difference across districts. Our highest overestimation was 15.6% and lowest underestimation was -18.5%.

To better understand this variation, we can look at a plot of the geographical distribution of the differences. In this figure, we show each party separately to illuminate the geographical structure of the differences.

Geographical distribution of the difference between the predicted and actual proportion of votes by Electoral District and party

The overall distribution of differences doesn’t have a clear geographical bias. In some sense, this is good, as it shows our agent-based model isn’t systematically biased to any particular Electoral District.

However, our model does appear to generally overestimate NDP support while underestimating Liberal support. These slight biases are important indicators for us in recalibrating the model.

Overall, we’re very happy with an error distribution of around 5%. As described earlier, our primary objective is to explain political campaigns. Having accurate predictions is useful to this objective, but isn’t the primary concern. Rather, we’re much more interested in using the model that we’ve built for exploring different scenarios and helping to design political campaigns.

I'm not analyzing COVID data, though I'm impressed with Ontario's open data

I’m neither an epidemiologist nor a medical doctor. So, no one wants to see my amateur disease modelling.

That said, I’ve complained in the past about Ontario’s open data practices. So, I was very impressed with the usefulness of the data the Province is providing for COVID: a straightforward csv file that is regularly updated from a stable URL.

Using the data is easy. Here’s an example of creating a table of daily counts and cumulative totals:

data_source <- "[data.ontario.ca/dataset/f...](https://data.ontario.ca/dataset/f4112442-bdc8-45d2-be3c-12efae72fb27/resource/455fd63b-603d-4608-8216-7d8647f43350/download/conposcovidloc.csv)"
covid_data <- read_csv(data_source) %>% 
  select(ACCURATE_EPISODE_DATE) %>% 
  rename(date = ACCURATE_EPISODE_DATE) %>% 
  group_by(date) %>% 
  summarise(daily_count = n()) %>% 
  mutate(cumulative_count = cumsum(daily_count))

From there we can make some simple plots to get a sense of how the case load is changing.

And, I’ll leave it at that, at least for public posting šŸ¤“

Simple brew tea shortcut

Since I’m mostly stuck inside these days, I find I’m drinking more tea than usual. So, as a modification of my brew coffee shortcut, I’ve created a brew tea shortcut.

This one is slightly more complicated, since I want to do different things depending on if the tea is caffeinated or not.

We start by making this choice:

Then, if we choose caffeine, we log this to the Health app:

Uncaffeinated tea counts as water (at least for me):

And, then, regardless of the type of tea, we set a timer for 7 minutes:

Running this one requires more interactions with Siri, since she’ll ask which type we want. We can either reply by voice or by pressing the option we want on the screen.

A simple Shortcut for tracking workout time

I’ve been tracking my time at work for a while now, with the help of Toggl and Timery. Now that I’m working from home, work and home life are blending together, making it even more useful to track what I’m doing.

Physical exercise is essential to my sanity. So, I wanted to integrate my Apple Watch workouts into my time tracking. I thought I’d be able to leverage integration with the Health app through Shortcuts to add in workout times. Turns out you can’t access this kind of information and I had to take a more indirect route using the Automation features in Shortcuts.

I’ve setup two automations: one for when I start an Apple Watch workout and the other for when I stop the workout:

The starting automation just starts an entry in Timery:

The stopping automation, unsurprisingly, stops the running entry:

As with most of my Shortcuts, this is a simple one. Developing a portfolio of these simple automations is really helpful for optimizing my processes and freeing up time for my priorities.

Brew coffee shortcut

Shorcuts in iOS is a great tool. Automating tasks significantly boosts productivity and some really impressive shortcuts have been created.

That said, it is often the smaller automations that add up over time to make a big difference. My most used one is also the simplest in my Shortcuts Library. I use it every morning when I make my coffee. All the shortcut does is set a timer for 60 seconds (my chosen brew time for the Aeropress) and logs 90mg of caffeine into the Health app.

All I need to do is groggily say “Hey Siri, brew coffee” and then patiently wait for a minute. Well, that plus boil the water and grind the beans.

Simple, right? But that’s the point. Even simple tasks can be automated and yield consistencies and productivity gains.

Things cost more than they used to

I’m delivering a seminar on estimating capital costs for large transit projects soon. One of the main concepts that seems to confuse people is inflation (including the non-intuitive terms nominal and real costs). To guide this discussion, I’ve pulled data from Statistics Canada on the Consumer Price Index (CPI) to make a few points.

The first point is that, yes, things do cost more than they used to, since prices have consistently increased year over year (this is the whole point of monetary policy). I’m illustrating this with a long-term plot of CPI in Canada from 1914-01-01 to 2019-11-01.

Figure showing the long-term increase in CPI from 1914 to 2019. An image of an old fashioned cany bar is on the left and large pile of modern candy on the right.

I added in the images of candy bars to acknowledge my grandmother’s observation that, when she was a kid, candy only cost a penny. I also want to make a point that although costs have increased, we also now have a much greater diversity of candy to choose from. There’s an important analogy here for estimating the costs of projects, particulary those with a significant portion of machinery or technology assets.

The next point I want to make is that location matters, which I illustrate with a zoomed in look at CPI for Canada, Ontario, and Toronto.

Figure showing CPI from 2000 to 2019 with separate lines for Toronto, Ontario, and Canada. They mostly align until about 2015, when Ontario starts increasing faster than Canada and Toronto faster than Ontario.

This shows that over the last five years Toronto has seen higher price increases than the rest of the province and country. This has implications for project costing, since we may need to consider the source of materials and location of the project to choose the most appropriate CPI adjustment.

The last point I want to make is that the type of product also matters. To start, I illustrate this by comparing CPI for apples and alcoholic beverages (why not, there are 330 product types in the data and I have to pick a couple of examples to start).

Figure showing CPI from the 1950s with separate lines for apples and alcoholic beverages. Both are relatively flat through the 1950s and 1960s then start to increase rapidly. Apples fluctuate alot in each year.

In addition to showing how relative price inflation between products can change over time (the line for apples crosses the one for alcoholic beverages several times), this chart shows how short-term fluctuations in price can also differ. For example, the line for apples fluctuates dramatically within a year (these are monthly values), while alcoholic beverages is very smooth over time.

Once I’ve made the point with a simple example, I can then follow up with something more relevant to transit planners by showing how the price of transportation, public transportation, and parking have all changed over time, relative to each other and all-items (the standard indicator).

Figure showing CPI from 2000 to 2019 with separate lines for parking costs, transportation, public transit, and all-items. All-items is the lowest and closely tracked by transportation. Public transportation diverges around 2015 and rises dramatically. Parking fees are by far the highest.

At least half of transit planning seems to actually be about parking, so that parking fees line is particularly relevant.

Making these charts is pretty straightforward, the only real challenge is that the data file is large and unwieldy. The code I used is here.

Declaring podcasts bankruptcy

Podcasts are great. I really enjoy being able to pick and choose interesting conversations from such a broad swath of topics. Somewhere along the way though, I managed to subscribe to way more than I could ever listen to and the unlistened count was inducing anxiety (I know, a real first world problem).

So, time to start all over again and only subscribe to a chosen few:

When all together on a list like this, it looks like a lot. Many are biweekly though, so they don’t accumulate.

I use Overcast for listening to these. I’ve tried many other apps and this one has the right mix of features and simplicity for me. I also appreciate the freedom of the Apple Watch integration which allows me to leave my phone at home and still have podcasts to listen to.

Using our Agent-Based Model to scenario test the Canadian federal election

As outlined in our last two posts, our algorithm has ā€œlearnedā€ how to simulate the behavioural traits of over 2 million voters in Toronto. This allows us to turn their behavioural ā€œdialsā€ and see what happens.

To demonstrate, we’ll simulate three scenarios:

  1. The ā€œlikeabilityā€ of the Liberal Party falls by 10% from the baseline (i.e., continues to fall);
  2. The Conservative Party announces a policy stance regarding climate change much more aligned with the other parties; and
  3. People don’t vote strategically and no longer consider the probability of each candidate winning in their riding (i.e., they are free to vote for whomever they align with and like the most, somewhat as if proportional representation were a part of our voting system).

Let’s examine each scenario separately:

1 – If Liberal ā€œlikeabilityā€ fell

In this scenario, the ā€œlikeabilityā€ scores for the Liberals in each riding falls by 10% (the amount varies by riding). This could come from a new scandal (or increased salience and impact of previous ones).

What we see in this scenario is a nearly seven point drop in Liberal support across Toronto, about half of which would be picked up by the NDP. This would be particularly felt in certain ridings that are already less aligned on policy where changes in ā€œlikeabilityā€ have a greater impact. The Libs would only safely hold 13/25 seats, instead of 23/25.

From a seat perspective, the NDP would pick up another seat (for a total of three) in at least 80% of our simulations – namely York South-Weston. (It would also put four – Beaches-East York, Davenport, Spadina-Fort York, and University-Rosedale – into serious play.) Similarly, the Conservatives would pick up two seats in at least 80% of our simulations – namely Eglinton-Lawrence and York Centre (and put Don Valley North, Etobicoke Centre, and Willowdale into serious play).

This is a great example of how changing non-linear systems can produce results that are not linear (meaning they cannot be easily predicted by polls or regressions).

2 – If Conservatives undifferentiated themselves on climate change

In this scenario, the Conservatives announce a change to their policy position on a major issue, specifically climate change. The salience of this change would be immediate (this can also be changed, but for simplicity we won’t do so here). It may seem counterintuitive, but it appears that the Conservatives, by giving up a differentiating factor, would actually lose voters. Specifically, in this scenario, no seats change hands, but the Conservatives actually give up about three points to the Greens.

To work this through, imagine a voter who may like another party more, but chooses to vote Conservative specifically because their positions on climate change align. But if the party moved to align its climate change policy with other parties, that voter may decide that there is no longer a compelling enough reason to vote Conservative. If there are more of these voters than voters the party would pick up by changing this one policy (e.g., because there are enough other policies that still dissuade voters from shifting to the Conservatives), then the Conservatives become worse off. The intuition may be for the defecting Conservative voters discussed above to go Liberal instead (and some do), but in fact, once policies look more alike, ā€œlikeabilityā€ can take over, and the Greens do better there than the Liberals.

This is a great example of how the emergent properties of a changing system cannot be seen by other types of models.

Proportional Representations

Recent analysis done by P.J. Fournier (of 338Canada) for Macleans Magazine used 338Canada’s existing poll aggregations to estimate how many seats each party would win across Canada if (at least one form of) proportional representation was in place for the current federal election. It is an interesting thought experiment and allows for a discussion of the value of changing our electoral practice.

As supportive as we are of such analysis, this is an area of analysis perfectly set up for agent-based modeling. That’s because Fournier’s analysis assumes no change in voting behavior (as far as we can tell), whereas ABM can relax that assumption and see how the algorithm evolves.

To do so, we have our voters ignore the winning probabilities of each candidate and simply pick who they would want to (including their ā€œlikeabilityā€).

Perhaps surprisingly, the simulations show that the Liberals would lose significant support in Toronto (and likely elsewhere). They would drop to third place, behind the Conservatives (first place) and the Greens (second place). Toronto would transform into four-party city: depending on the form of proportional representation chosen, the city would have 9-12 Conservative seats, 4-7 Green seats, 2-5 Liberal seats, and 2-3 NDP seats.This suggests that most Liberal voters in Toronto are supportive only to avoid their third or fourth choice from winning. This ties in with the finding that Liberals are not well ā€œlikedā€ (i.e., outside of their policies), and might also suggest why the Liberals back-tracked on electoral reform – though such conjecture is outside our analytical scope. Nonetheless, it does support the idea that the Greens are not taken seriously because voters sense that the Greens are not taken seriously by other voters.

More demonstrations are possible

Overall, these three scenarios showcase how agent-based modeling can be used to see the emergent outcomes of various electoral landscapes. Many more simulations could be run, and we welcome ideas for things that would be interesting to the #cdnpoli community.