Matt Gemmell

My new book CHANGER is out now!

An action-adventure novel — book 1 in the KESTREL series.

★★★★★ — Amazon

Keeping work at work

Development, General, Interface, Personal, Pie menus & Work 3 min read

Much-belated New Year’s resolution: set aside time for personal projects, and keep work at work.

Like everyone, I’ve been very guilty of bringing work home in recent months (and thankfully I mean that literally, since I’ve been able to either work via SSH, or to locally mirror sites on my PowerBook). That’s better than actually being in the office during the evening, but it’s still bringing work home with me, and it’s still unpaid overtime.

Lauren has exams coming up, so with her revision schedule it’s not really been the case that my evening work has cut hugely into our time together, but it has done to some extent. More significantly, it’s cut considerably into my time; be it playing videogames, doing some Cocoa development, reading, writing, blogging, or whatever. And it kind of got me down for a while there.

Accordingly, I’ve resolved to keep work at work. I’ve had some help with this in the form of us getting some new kit in the office lately (and shuffling around the existing kit), so I’m now back onto a Linux machine full-time with a couple of 20” Sony TFTs, and thus no longer taking my PowerBook into the office. I’ve cleaned all work-related stuff from the laptop (I backed it all up at the office beforehand, of course), and I now feel a lot better when the end of the workday arrives (5:30 pm in my case). I have my 20-minute walk home to wind down and change gears, and by the time dinner is done I’m ready to have the evening either to myself or to spend quality time with Lauren. I think we’re both a lot happier for it too.

There will inevitably be the occasional need for working late on a project, but I’m determined to not allow it to reach the stage it briefly did within the last month or so, where I was literally going home, taking 30 minutes for dinner, then working from 6:30 pm until 10 pm (and sometimes even later). Not sustainable or sensible. After all, we work to live, most assuredly not vice versa.

A main benefit I’m looking to get from all this is time to really get into some Cocoa development again. I’ve said many times before that my long-term goal is to have an at least moderately successful Mac OS X software company; enough to support me, plus a little extra. I feel I’ve been stalling on that for the past 6 months, just because I’ve been too tired in the evenings to really pursue it, and often had other commitments at weekends. I really want to get back into development in my own time, and to try to inch a bit closer to The Dream. Getting a chance to do that is just one way in which keeping a clear line between work stuff and my personal time will benefit me (and my relationship too).

I’ve put together a tentative roadmap for what I’ll be working on over the next half-year or more, with a view to producing finished products for release. I’ve tried to weigh up realistic factors, including the obvious stuff (like potential market, uniqueness, required development time, and technical complexity) as well as the just-as-important subjective considerations (such as personal fondness for each project, eagerness to work on it, and so on), and accordingly I’ve narrowed it down to an ordered list of four projects. I’m not going to give my ordering here, since I imagine it may change as these things tend to, but I’ll say that the list includes the icon app, the venerable-yet-never-released NeXT Dock, and of course my Pie Menus implementation. As ever, I’ll try to keep you posted via this blog.

At the moment, though, I’m occupied with that most enjoyable of things: a sub-project. You know the scenario well: you’re working away on an app, and you get an idea, but it’s just over the level of complexity that you’d want to write and test within an existing application. So, you break it out into yet another “* Test” new project, get it working, and polish it up a bit (and in my case, often release it as source code). I’m on just such a sub-project at the moment, intended for possible use in NeXT Dock. Simply put, it’s a Cocoa implementation of the “tile menus” seen in the Nintendo DS menu screens (i.e. where you can set your name, the date and time, your favourite colour and so on). I love the movement of the tiles, and the apparent least-distance-travelled layout algorithm (though I’m extrapolating a fair bit, given that none of the menus have more than about 4 items on the DS), and I wanted to get it working on Mac OS X and also see how I could make it scale to support an arbitrary number of menu items/tiles. No doubt more discussion of that, and some screenshots and/or code, in due course.

So, in summary, I’m feeling a lot better since having resolved to get more development done on personal projects, and I’m looking forward to being able to dive into Xcode of an evening. It’s worth noting that, perhaps counterintuitively, writing code all day (in my case almost always in PHP, with a fair helping of SQL queries, XHTML and CSS thrown in for good measure) does not in fact sicken you of programming for your personal projects. Indeed, I find that the day job actually makes me more eager to work on stuff that’s for me, rather than for <insert name of faceless client company here>. I’m keen to take advantage of that energy to create the stuff I really want to create, and see where I can go with it.

Wish me luck.