- Published on
Q&A with James Thomson
My name is James Thomson, and I'm best known at this point as the developer of the PCalc scientific calculator for iOS and the Mac. Previously, I created DragThing, a popular application dock for the Mac. Both apps are now over two decades old at this point, with me being slightly older than them combined. In an earlier life, I was also employed by Apple in the late nineties, and worked on the OS X Finder and Dock amongst other things. After leaving Apple in 2000, I became a full-time indie developer.
How did you get started in software development?
In truth, I started out by doing simple programming the Commodore 64 and BBC Model B in the early eighties, but my formal software development career began at the Computing Science department of the University of Glasgow, in my home town. I'd always been interested in computers, pretty much since the first home computers appeared. As a boy, I played games on my C64 like "Revenge of the Mutant Camels" and aspired to write something like them myself. I knew I had to get a proper education in how to program before I could do that, so I applied to do computing at university. As it happened, I never did manage to finish a single game, although I started a lot of them. Instead, I created my first application, PCalc, in 1992 for the original Macintosh. It was meant to be a small test project to learn how to program the Mac, but I am still working on it 23 years later!
What software and hardware do you use for your work?
Probably all my software is made using a combination of Xcode, BBEdit, Photoshop, and Illustrator. I also use PCalc itself. The P of PCalc stands for "Programmers'", but really I just made the calculator I wanted to use myself.
As for hardware, I just got one of the new Retina iMacs a few months ago, and it is the perfect development machine - fast, silent, and with an amazing screen. The big high resolution screen is very useful as I can display a simulated retina iPhone or iPad onscreen next to the source code. I also keep all my email and social networks on a completely separate MacBook Air, so that when I'm using the iMac I can focus solely on code.
I also have a variety of iPhones and iPads running different versions of iOS, which I use for testing my code, and making sure it works everywhere.
At the other end of the technological scale, I keep a pen and paper on my desk at all times. I find it invaluable to write down notes as they occur to me, sketch ideas, and work out problems on paper. Yes, there are probably a hundred apps that could do this too, but I find it much more satisfying to physically cross out a to do list item, than to merely click a button.
What is your ideal work environment?
In the office, I have a nice Knoll Life chair which does wonders for my back. And a pretty standard Ikea desk which was designed for the massive CRT monitors of decades past. But probably the most useful thing is a pair of AKG K551 headphones, to isolate me from the rest of the world while I'm working. If I'm doing user interface design, I'll listen to podcasts, mostly non-technical stuff like the "Giant Bombcast". But if I'm writing code, I can't listen to speech, as my brain can't process two different kinds of languages at once, so I'll listen to music. Preferably something instrumental, like the soundtrack album to "Tron Legacy", which is scientifically proven to be the best album of the last decade to write code to.
In terms of sheer comfort, if I'm just answering support emails or working on the website, I'll sit on the sofa in the living room with the MacBook Air and work from there. It's probably not great for my back in the long term, but it's certainly cozy.
Favorite books and resources about development
I have a number of really excellent books about development on my shelf which I haven't read at all, and I think all the books I started out with are long gone out of print. Since then, I've always just poked and prodded at anything new to find out how it works. I don't think that a good application needs a manual, and equally a good development environment shouldn't either. Apple does have reasonable documentation on their developer site, the forums there are worth checking out, but for everything else either ask fellow developers on Twitter, or come up with a good Google search to find the answer. Almost every question you might have about AppKit has been asked on Stack Overflow at least once already, so that's always a good place to start looking.
Who are the developers you admire most?
Honestly, I admire any developer that's in it for the love of the craft - or just out of plain stubbornness in the face of overwhelming odds - rather than those with the sole intent of burning through all the VC money and selling their company to Facebook.