Hello, 2018

The last thing I wrote here was a retrospective on 2016, written one year and one day ago.

That’s… quite a while ago. You’d think I’d have written more, given how much happened this year. Off the top of my head:

  • I changed jobs, and am now working with the thoughtful geniuses at Fog Creek.
  • I got pretty serious about personal fitness, making great progress, right up until…
  • …I severed a tendon in my left pinky, which left me in a splint for most of the summer after surgery to reattach it (occupational and physical therapy are still ongoing, six months later)
  • we lost our wonderful fluffy companion of 15 years

Aside from the fitness bit, none of these were events that I expected or planned for. One thing I didn’t expect, however, is how much all of this upheaval would leave me wanting to withdraw from, well, everything. I guess it’s easiest to drop the stuff that doesn’t pay the rent, and once you start doing that, you risk kicking off a downward spiral — one that catches you by surprise one day, when you wake up and realize you’re fed up of not feeling like you’re doing anything that you used to enjoy anymore.

So, I’m going to work on getting back into a rhythm of Getting Things Done. I’m starting by setting aside protected time this week to read, to think, and to make some progress on projects (first up: I’d really like to update Per).

More tk.

Twenty-sixteen, reviewed

At the beginning of the year, I wrote down some goals for 2016. The year has come and gone, so it’s not a bad idea to have a bit of a look at how things went.


1. Post something here every Friday

I did pretty well at this for a while, up until late August. But as the year wore on it felt more and more that I was writing just for the sake of checking off a repeating to-do item, rather than writing a goal in and of itself.

Not only did I feel that in the quality of what I was writing, I think this started injecting stress into my life. That, of course, is bad.

I also found that trying to get some words up on screen every week took time away from working on some of the projects (writing or otherwise) that I really wanted to work on.

I’m going to continue with a less-frequent schedule, putting up a minimum of one article a month. I’m also going to try posting to Break Before Make more often—it’s been sorely neglected.

2. Post to a journal at least once every day

I discussed this six months ago. Maybe I’ll try a written journal, just because I like working on my penmanship, but honestly, it felt like something taken on because someone said it was a good idea, rather than because I found that it worked for me.

3. Make real progress towards my Mac app


I founded a company five years ago with the intention of releasing this.

While I’ve made no real inroads in the actual coding, I have made a pretty important decision regarding the focus of the app. I think this pivot will help more people, so I’ve fleshed out a bit of a roadmap for it.

I’m making 2017 the year it finally sees the light of day.

4. Contribute to open-source projects

Not much here. I did help update a library for Swift 3 but that wasn’t really much of a contribution, I don’t think—it was mainly more of a “fix what the Xcode migration assistant broke” kind of fix.

I also open-sourced my first iOS app, but haven’t really done much with that, either. It’s still more-or-less in burning-dumpster-fire state, which is to say, it really looks like a first iOS app.

5. Get in better shape

I did pretty well at running at least a couple of times a week between end of March and mid-October. Once the snow—or worse, freezing rain—started coming down, however, that trend kind of tapered off.

I miss it, so I’ve registered at a gym with an indoor track and a pool.

Onwards and upwards

Any day is a good day to make changes, because we live in a state of flux. So, despite missing marks and/or changing course over the last year, I’m still going to set some goals for the next year:

Goal: Health

As I said, I’m registering at a gym down the street from where I live, where I can do both strength and cardiovascular training. I’m not getting any younger, and holy crap am I feeling it.

Typically, when I start getting more physically active, everything else falls into place: sleeping longer, eating better, making better decisions.

Citius, Altius, Fortius.

Goal: Wealth

My iOS apps, despite their neglected state, are about helping people make smarter decisions about their money. My Mac app has the same goal, albeit a bit more involved.

By the way: as they haven’t been updated in a while, I’ve made the iOS apps free. Give them a try.

Goal: Self-mastery

In a good chunk of my writing, I tend to explore themes related to getting better. Generally, if I’m writing about it, it’s because it’s something that I struggle with, or that I’m trying to improve.

Rather than forcing that with weekly posts, I intend on posting longer-form, better-cited articles, at least once a month.

Here’s to the next 365 days. I truly hope they’re full of love, laughter, and health for you.

One decision

As I write this, I’m sitting at a Starbucks in a mall, two days before Christmas. I’m sipping a large black coffee distractedly, watching folks noodle on by, caught up in whatever last few errands they may need to run before hosting or visiting friends and family for the holidays.

The mall’s background music is calm, barely-audible, and shoppers don’t seem particularly stressed out, or rushed, or frustrated.

It’s possible that I’m projecting my mood on this scene, too. I don’t know.

This has been, for me, one of the least-stressful run-ups to the holidays ever. Part of that comes from the fact that our trips to see family are nicely spaced out this year, and part of it comes from the fact that I’ve been preparing for this since Christmas of last year.

Our flat has been perfumed with the scent of Fraser fir for weeks.

I’ve purchased all of my gifts, which I’ll be wrapping this evening.

My Christmas budget still has plenty of padding for any unexpected, last-minute purchases.


Knowing all your affairs are in order casts a lovely, warm glow on what can otherwise become a very hectic and chaotic time of year. Yeah, we missed the deadline for sending out Christmas cards—something we keep saying we want to do, but aren’t great about getting done—but otherwise, everything’s done.

Everything’s done because I made one decision during the holidays last year: make Christmas this year better.

Wishful thinking considered harmful

I used to feel that, hey, whatever, the Universe no doubt unfolds as it’s supposed to, and hopefully that means tomorrow will work out better than today did. I mean, I understood that my actions played some role in how that would play out, but, that said, there was always this feeling that things would work themselves out, because, well, they’d always somehow worked themselves out.

That is, until they didn’t.

Wishful thinking isn’t just optimism. It’s closing your eyes and hoping something works when you have no reasonable basis for thinking it will. Wishful thinking at the beginning of a project leads to big blowups at the end of a project. It undermines meaningful planning and may be at the root of more software problems than all other causes combined.

Steve McConnell, “Classic Mistakes Enumerated”

Mr McConnell wrote this with software development projects in mind, but it’s pretty broadly applicable to almost anything. Like post-secondary education. I did extremely well with little effort in high school, so I just expected that to continue through college.

That didn’t happen.

Instead, I got pretty well acquainted with a concept called “Academic Probation”, a set of policies and procedures designed around the concept of Getting Your Shit Together.

Instead of actually recognizing that each week was going worse than the last, and taking some kind of corrective action, I kept shrugging it off and convincing myself that it’d all work out. I figured I’d ace the final, or do great on the term project, or whatever. Procrastination, anxiety, burnout, whatever the reason, I didn’t do anything to stop the downward spiral—I just fantasized about having degrees conferred and being offered great jobs.

I think life-improvement gurus call this technique “goal visualization”, but it turns out that it’s not super effective without effort.

Judge, jury, and executor

Making a decision means consciously choosing what takes priority in your life, and this also means choosing what doesn’t take priority in your life. This has, historically, been the hard part for me; your time-management system can’t manage to tack an extra couple of hours onto your day, so if you decide that project A lives, then you’re by necessity deciding that projects B, C, and maybe even D must die. If you decide that you need to buy a new car, you’re by necessity deciding that you don’t get to retire for at least another year or two.

It’s only when I realized this that I started becoming the (relatively-more-) effective and productive person I am today.

Much like the KonMari method of tidying, you need a very specific mindset when you’re going through your tasks, or your budget, or your goals, or whatever. Except the decision to keep or drop a thing isn’t going to be based on whether it brings you joy; it’s going to be based on the fact that it requires sacrificing something. Something that you once sacrificed another thing for.

Which, in turn, you sacrificed something else for.

And so on.

Looking out the top of the windshield

Generally, as people, we’re not particularly good at forethought. Mired in the day-to-day, we neglect the future until it becomes a mistake-ridden past.

Luckily, fixing this isn’t especially hard—it just takes a certain amount of mindfulness.

When I was learning how to drive, one of the best pieces of advice that I got was to pick a point about three-quarters up the windshield in front of me, and try to look above that point at least as often as I look below it. The point of this exercise was to train yourself to look as far down the road as possible, as often as possible, without ignoring what’s going on right in front of you. In doing so, you see hazards and congestions and what-have-you long before they became an unavoidable problem. You can then make small, gentle course corrections right away, smoothly merging into another lane to avoid a pothole two blocks away.

Man, I wish I’d been able to grok the life lesson in that right away.

Long-term goals influence short-term goals. The farther out you plan, the easier it is to make decisions in the near-term about what gets to stay in your life, and what has to go.

In the end, you’re really only answering a single question: does this make [tomorrow / next week / next month / next year] better?

All the to-do lists and GTD methodologies in the world aren’t going to help you, until you can make that one decision.

"Omnifocus Quick-Entry window"

And yeah, we’ll be sending out Christmas cards next year.

On criticism

I see a lot of digital ink spilled on how some particular thing is

  • broken
  • taking a quality nose-dive
  • stupid
  • irrelevant
  • &cet.

And it’s good to be critical. With a bit of healthy skepticism, we avoid the reality-distortion fields that turn rational-minded folks into zealots. Nothing is so perfect that it can’t be improved, and I get that this is the place that a lot of these thinkpieces come from.

But the thing is, communication should serve some purpose. It doesn’t necessarily have to be some call to action, but it should, at the very least, let the audience answer one simple question:

What am I to do with this information?

In other words, if you’re telling me how crappy something is, what’s the point? Are you proposing some solution?

Or are you just complaining?

It’s okay if you are. We’re human and we have feelings about things. Talking about those feelings can help you find common ground with others who feel ways about stuff.

But let’s abstain from calling it criticism. Constructive criticism moves a thing forward; it offers the receivcer something to work with. This is key: it generates goodwill, and it helps make things better.

And—given that the world is made up of things—constructive criticism makes the world a slightly better place, by extension.

Which is nice.

Thoughts on Per

I haven’t posted here in a little while, thus breaking the streak that I was intending to maintain. I don’t feel too bad about this, because I’ve been working on other stuff in the meanwhile, but it’s nice to be writing again.

Specifically, in light of the coming App Store purge, I’ve been working on a big update to Per. While I’m not especially concerned that Per, in its current form, is at risk of being culled, it has been a long time since it was updated.


For one, I’m dropping support for anything prior to iOS 10. Per has a pretty tiny user base—maybe a couple hundred downloads—and I don’t see much in the way of daily active users1, but for such a tiny user base, I can’t justify putting effort into supporting iOS 8 and 9.

Second on the list is a pretty hefty redesign. I fully admit that Per is… kinda homely-looking. There are some interactions that I’m planning on (and have started experimenting with) for 2.0, and while it’s slow going, I like what I see so far.

I’m also thinking about taking advantage of some new input methods, but I don’t know yet how well that will work. I don’t want to tip my hand just yet because those may not be technically feasible, but it’s got me pretty interested in seeing what can be done2.

Third on the list is the business model for Per.

Per brings in pretty much zero revenue. Most of the downloads came from a period of time when I made my apps free for a week, whereas the normally-paid (at USD$1.99) version has seen only a handful of downloads at most.

Note that I haven’t marketed Per at all, save for a couple of tweets and blog posts, so this isn’t unexpected. But I think it’s time to change that.

Given the way the App Store economy works, it’s pretty clear that charging up-front is a barrier to getting your app downloaded. This is no secret, so some business model that includes free downloads makes sense.

One option is to make Per free, with an in-app purchase (IAP) to unlock advanced features, like the unit conversion and in-field math operations it already features, and the new input methods mentioned. This means zero revenue unless people want these features. How desirable are they in a relatively simple utility app like Per?

Another option is to make Per free, but ad-supported. Thing is, I personally don’t like the aesthetic that ads introduce in an app’s interface and experience, and I know I’m not the only one. So there would definitely have to be an IAP to remove ads. I have a couple of ideas on where and when I’d show an ad, so they wouldn’t be too annoying.

Both cases mean that current paying users would experience either reduced functionality, or an ad-filled experience. That sucks, so yet another option would be to create a new SKU. Folks that have the original version of Per get a fully-featured and ad-free upgrade, and new users could opt to pay for this version outright, whereas the other version of the app would implement one of the above options, but would list for free.

That’s a fair bit of extra administrative work for me, and confusing for both old and new users, so I don’t think I’ll do that.

I could also leave Per as-is and create a new SKU for Per 2. No further updates for the old app, but then that also probably means it’ll eventually be culled from the App Store anyhow.

Given that something like 3 users have actually paid for Per (thanks!), I think that I’ll skip the two-SKU options altogether, because they’re administrative headaches. This means that Per 2 will be a free upgrade, but will either be removing some features or including ads (sorry!).

Maybe there’s a way to check whether a user paid for an app or not, I’m not sure. Let me know!

As I mentioned, I know that Per is really just a simple utility app, but it’s something that my wife and I use pretty much every time we shop for groceries. It’s certainly useful, but I also want it to be great. That not only means redesigns and refactoring, but it also means getting it in the hands of as many people as possible.

More tk.

  1. I know that this could be because most people disable sharing this data when they set up their phone.

  2. Seems to me that, for some developers, adding a new feature to an older app has less to do with a revenue bump than it does the excitement of tackling a new problem. That's how I feel, anyhow.