Development Diary (Uncloaking)
November 29, 2019

Since finishing work on Sketch, I’ve been a bit quiet on this blog.

Initially I took quite a bit of time off because I needed a rest, and was battling various demons.

The largest of these was burn-out, which for me presented as a major loss of confidence and enthusiasm, brought about by long periods of professional conflict. This left me wondering whether I was any good at coding, and whether it was even what I wanted to do any more. I realised that if it was, I needed to find a healthier way of doing it. There are certain negative patterns that seem to have repeated a number of times at various stages in my working life; generally when I’m working full time on a project, have a sense of shared ownership of it, and feel that I want my future to be tied up with it. I needed to take some time to reflect on why these patterns happen, and to work out how to square a certain need for control1 with my genuine desire to work with other people as part of a team.

All of which is a big topic, worthy of a blog post (or more) in its own right, but this is not that post. Suffice to say that those battles are still part of my life, I’m still not sure I have all the answers, but on the whole I think I’m winning.

In the meantime, this post is about how (somewhat predictably, and very reassuringly), I couldn’t stay away from coding for long, and what I’ve been up to in the couple of years it’s been since I wrote my last line of Objective-C for Sketch.

I’ve actually being doing a lot of development (almost all in Swift) :)

Quite a bit of it has been for pet projects which aren’t particularly notable, or ready for prime-time, and I’ve blogged about some of that in the past. I might pick specific things out to talk about in the future if I ever get round to it, but pretty much everything I’ve done in that category is on github if you’re interested.

Along the way I’ve also done a few bits of contracting, which I’ve really enjoyed. I find that I have no control issues at all in these situations; I find it’s very liberating to take a brief from a client, give suggestions on a design or implementation strategy if asked to, but then just go in the direction that the client chooses, doing what they ask to the best of my abilities. It’s a trade-off between control and responsibility, which seems to work well for me if the job is fairly short and self-contained.

However, I haven’t been actively seeking out the contract work. Pretty early on I decided that the main thing I wanted (needed?) to do was to concentrate on my own products, and that requires focus. I struggle with that at the best of times, but it’s especially hard if you’re splitting your time with working on something for someone else2.

So… my own product. I had a ton of possible things I wanted to do, but for various reasons the thing I settled on was some book cataloguing software. It’s something I use myself, and there are products out there already (some quite well known), but I wasn’t satisfied with the state of any of them, and felt that I could do better. I also happen to have an expert in the family, which helps (even if she stole my company name to use for her twitter handle!).

This is not a product announcement, and my product is not ready for prime time yet, but to some small extent this is me coming out of stealth mode and admitting that it’s a thing. The working name is Bookish. I’d like that to be the final product name, but I think there may be a conflict with another old product, so I may have to think again.

It’s macOS and iOS, and aims to sync your collection seamlessly between your devices, and it has been through quite a few iterations already (Catalyst anyone?).

The main reason for this blog post is to follow up on something a friend said to me privately right back at the beginning of this process: “I hope you’re going to do a development diary”.

I’ve always enjoyed blogging, but I hadn’t really thought of doing that.

Partly because of the burnout and the fear that nobody would be interested anyway or that I’d say something stupid and reveal my ignorance.

Partly because it would take time away from the coding.

Partly also because it would mean having to admit what I was working on, and expose myself to all sorts of concerns about announcing it and then never finishing it, or someone else rushing something to market first, or… whatever else one worries about when one has a tendency to worry.

Anyway, at some point, I realised that my desire to re-engage with the development community had grown to the point where it overrides those concerns. So here we are.

One part of my way to convince myself to do it was the idea that I’d keep the posts conversational and unstructured. More of a stream of consciousness than a coherent story.

A key part of that in turn was to keep each individual post short. That doesn’t seem to be going too well does it? In that spirit though, I will shut up for now.

Currently Bookish is in small pieces on the floor, anyway, and I need to get back to it. I’ve taken it apart as I realised at some point that the database schema that I was using was not flexible enough for what I wanted to be able to do. Maybe I’ll talk more about why that happened in the next blog post. If I don’t get distracted…

  1. If indeed control is even the right word. Possibly it’s more about trust and mutual respect than control. I’m still not sure. 

  2. A certain amount of contracting keeps the wolf from the door. I’m lucky enough to have built up a bit of a buffer though, I have decided that now is the time to use it. I really need to give my own products most of my attention right now.