Gonna Be, Gonna Be Golden

A 50th anniversary is a good time to reflect on your relationships, and it seems lots of people have thoughts about their time with Apple today. I would definitely not be where I am in life without the company, for both good and bad, so here are mine.

Technically my days with Apple started by playing games on my next door neighbour’s Apple II in the late 70s or early 80s. When enough time has passed, the exact memories naturally become a little bit fuzzy. It was certainly before I got my own Commodore 64 in 1983, I know that much, but I don’t think I can exactly claim to have been there from the very beginning. Anyway, little did I know back then that I would actually get to house sit for the guy who designed the thing. Foreshadowing

My best friend’s dad was a university professor from California, and he had brought over an Apple II of some flavour. I don’t remember them being common over here otherwise, the UK had a weird home computer industry all of its own, but this was probably just the perspective of a little kid who only wanted to play video games.

I eventually graduated from my C64 to an Atari STe around 1989, which had better much games than a Mac, and built-in MIDI ports as well. It was also way cheaper than a Mac, and it was totally fine. There was a GUI and a mouse, and those are all the same anyway, right?

Then, just a year later, I started a degree in Computing Science at the University of Glasgow, and back then all the computers in the labs were Macs. Generally Mac Pluses or SE/30s, with the occasional brand new LC in the second year labs. And so I used them, and I realised quite quickly that Atari had completely ripped off the Mac GUI, and not exactly done an amazing job of doing so. 

I’ve had this experience two or three times in my life with technology, using something and realising that it’s an inflection point for everything else going forward. The first was those early days with the Mac. Okay, so I was six years late to the party, so you are entirely right to question my definition of early days. Still, the user interface was so well designed and thought out, and it just made sense to me in a way that no computer had really done before. System 7 came out shortly afterwards, and improved everything even more.

At this point we’d been doing most of the development work for our coursework in THINK Pascal, and I quickly realised I could use that to make my own applications. This history has been covered well, but I wrote the first version of my calculator PCalc in 1992, on my brand new Mac Classic. Sorry, Atari. I bought an LCII some time later, probably a month before the LCIII was announced. I even fitted it with a maths co-processor! I started working on my application launcher DragThing on that in 1994.

Again, this is well documented, but I was soon determined to work for Apple. And a few years later, I got my wish, working in the software engineering group in Cork, Ireland. It was a lot easier to get a job with Apple in late 1996 than it is today, but my existing apps certainly helped me get a foot in the door. However, as I discovered after joining the company and moving country, Apple was actually on the verge of complete bankruptcy.

I’m told that, like with having kids, you block out a lot of the difficult times of your life, and generally remember the good bits. Well, I remember a hell of a lot of bad stuff from those years, so who knows how bad it really was. 

Gil Amelio appeared and fired so many people across the company, that soon our little engineering group all fitted around the one table for lunch. It was an extremely stressful time to be at Apple, but also probably also one of the most interesting – I got to witness the return of Steve Jobs first hand, after all. Another inflection point, really.

I worked on a bunch of things while I was there, including the only two things that actually shipped from my less than four years – the Disney 101 Dalmatians and Hercules Print Studios that came with the Performas. That was the most enjoyable work, because it was relatively low stakes. I learned how to program in C++, use a UI framework (Metrowerks PowerPlant), and generally work as part of a team. I was even co-team-lead on the Hercules one. However, staring at pegasi all day meant that I did not go see the film, and I still have not to this today.

I was then on the iMac project somewhat unknowingly, and ultimately the Dock and Finder – the source of all my best Apple anecdotes. Then Steve Jobs happened, I resigned, etc., etc. You know how this story goes, I assume. In any case, I met a lot of good people at Apple, some of whom I am still in touch with today. Companies do not care for you, but at least some people do.

In all, it was a relatively short time working there. I was not important in the least, and I did not really do anything of note. I worked on lots of cool stuff that didn’t ultimately ship, sure. Put it this way, I am unlikely to be an entry in any Apple history book. 

And I was so relieved when I left. I was 27, and I was young enough then that I didn’t really know how stressed I had been working in that environment. The weight off my shoulders was enormous, even if being an indie developer came with its own set of slightly different artisanal weights. You know how some people have stress dreams about doing exams? I still have stress dreams that I’m back working at Apple.

I did not part on the best of terms from my ex, but they still remained a big part of my life, and we kept uncomfortably meeting up at parties.

I rewrote PCalc again after I left, and through a random pressing of my business card into the hand of one Phil Schiller at a WWDC, it ended up getting bundled with the iMac G4s in the US. I probably made more money from that deal, and a weekend’s work to change the app into US English, than I did from all my years of salary at Apple.

I am definitely still in Apple’s orbit, or perhaps just past their event horizon. I am forgetting many things now, including Widgetgate and Lodsys.

And yes, I also ended up getting to know Woz, and stayed with him for many years in a row during WWDC time. We’re still in touch occasionally to this day. It is absolutely wild to me that I know one of the founders of Apple, who basically invented the personal computer. I got to chat to Douglas Adams because of Apple as well – he used DragThing, and I added several features to it just because he asked. Frontier scripting? Absolutely, Mr Adams, right away sir.

I’ve also known Jason Snell for something like 32 years at this point, since he was a youth at MacUser, and nowadays have the pleasure of doing podcasts with him at The Incomparable and Relay. So many good friends in my life have happened because of Apple, directly or indirectly.

I’m also, I will admit, doing reasonably well because of them. Then again, Apple is doing pretty well because of me. If I calculate the 30% or 15% of all the sales of PCalc in the App Store, I’ve probably easily paid them back my entire Apple salary and all the PCalc licensing fees. But then again, the Apple stock I got in the late 90s is worth a little bit more these days too, so ultimately I can’t really complain.

Whenever I purchase a new Mac with the money I have made from selling things on the App Store, it does at least make me think how ridiculously circular these things are. A disturbing amount of my lifespan has consisted of moving money slowly back and forth between Apple and myself, whether I’m working for them or not. I think I’m currently ahead, but who knows what the future holds. I do sometimes wonder if I never actually stopped working for Apple.

Anyway, DragThing lasted nearly half an Apple, at 25 years. PCalc is still doing well, some 34 years later (I just need to hold on for another eight). Dice by PCalc is a recent addition, based on my return to playing D&D, but it at least constantly amuses me. I suspect I will still be doing this long after I retire.

So here’s to the next 50, Apple. I do still miss you sometimes.

I Live My Life a Quarter Century at a Time

So, we are coming up on a little anniversary for me this weekend. On the 5th of January 2000, Steve Jobs unveiled the new Aqua user interface of Mac OS X to the world at Macworld Expo.

The Age of Aquarius

Towards the end of the presentation, he showed off the Dock. You all know the Dock, it’s been at the bottom of your Mac screen for what feels like forever (if you keep it in the correct location, anyway).

“Now I’d like to show you one of the coolest things about Mac OS X…”

The version he showed was quite different to what actually ended up shipping, with square boxes around the icons, and an actual “Dock” folder in your user’s home folder that contained aliases to the items stored.

I should know – I had spent the previous 18 months or so as the main engineer working away on it. At that very moment, I was watching from a cubicle in Apple Cork, in Ireland. For the second time in my short Apple career, I said a quiet prayer to the gods of demos, hoping that things didn’t break. For context, I was in my twenties at this point and scared witless.

I didn’t design the dock – that was Bas Ording, a talented young UI designer that Steve had personally recruited. But it was my job to take his prototypes built in Macromind Director and turn them into working code, as part of the Finder team.

I had already written another dock – DragThing – before I worked for Apple, and that had helped me get a job there. I moved over from Scotland to Ireland in late 1996 with my future wife, with both of us joining the small software team there. It was primarily a manufacturing plant, but there was a little bit of software and hardware testing and engineering that went on around the edges.

I worked on a number of things in the early days. I was on the Copland installer for two weeks before the project was cancelled. Then, a couple of Disney Print Studio CDs that shipped with the Performas. I loved doing UI stuff, but somehow ended up working on a command line Mac OS X Server authentication component for At Ease that was to be used with a new line of diskless netboot computers that nobody had actually seen. It turned out I’d actually been on the iMac project all this time, and in the end they got hard drives.

In the middle of all that, when I was out in Cupertino, I was asked if I wanted to work on a secret project with the code name “Überbar”. I was shown some prototypes and basically told that six people had seen it, and if it leaked they would know it was me that had talked. I figured if anybody was finally going to kill off DragThing, it might as well be me.

The new Finder (codename “Millennium”) was at this point being written on Mac OS 9, because Mac OS X wasn’t exactly firing on all cylinders quite yet. The filesystem wasn’t working well, which is not super helpful when you are trying to write a user interface on top of it. The Dock was part of the Finder then, and could lean on all the high level C++ interfaces for dealing with disks and files that the rest of the team was working on. So, I started on Mac OS 9, working away in Metrowerks Codewarrior. The Finder was a Carbon app, so we could actually make quite a bit of early progress on 9, before the OS was ready for us. I vividly remember the first time we got the code running on Mac OS X.

Because the Dock was a huge secret, along with the rest of the Aqua user interface, it was only enabled on a handful of machines. I didn’t see the shiny lickable buttons of Aqua itself for quite a while after I’d been working on the Dock . There were rumours that any screenshot of Aqua would have the hardware MAC address of the machine encoded into the image, so leaks could be tracked down.

Before I had ever seen the new UI, there was one moment where I had somehow – I genuinely don’t remember why on earth this happened – had been tasked with designing a placeholder boot screen for the OS itself. I made a blue shiny Apple with pinstripes, in the style of the iMac.

Secret Stripes Suppressed

It lasted precisely one build before being yanked out extremely quickly. I assume because somebody was unhappy with the entirely coincidental Aqua-like appearance.

But I trundled away, making the best dock that I could while staying true to the original design, and making frequent trips to the US, initially living out of the Cupertino Inn across the road from Infinite Loop.

You may have heard me tell this story before, and I apologise if so. But it’s been long enough that people just know me for PCalc, and don’t even remember DragThing, let alone events that happened before some of you were even born.

At one point during a trip over, Steve was talking to Bas and asked how things were coming along with the Dock. He replied something along the lines of “going well, the engineer is over from Ireland right now, etc”. Steve left, and then visited my manager’s manager’s manager and said the fateful words (as reported to me by people who were in the room where it happened).

“It has come to my attention that the engineer working on the Dock is in FUCKING IRELAND”.

I was told that I had to move to Cupertino. Immediately. Or else.

I did not wish to move to the States. I liked being in Europe. Ultimately, after much consideration, many late night conversations with my wife, and even buying a guide to moving, I said no.

They said ok then. We’ll just tell Steve you did move.

And so for the next year, I flew back and forth between Cork to Cupertino, and stayed out there as much as regulations would allow. I had an office on the Finder team corridor. I can only imagine that Steve would walk by looking for me, and they would say he’d just missed me, while I was being bundled onto a plane at the other end. I had to come over whenever there were Dock demos, but I was not allowed to be left in the same room as Steve, lest I reveal the truth. The demo room with the blanked out windows had two doors, and I went out one before he came in the other.

In the end, Macworld 2000 happened, and finally all the secrets were revealed to the world. I hoped that at this point, it didn’t matter where I was, and I could finally relax. Less than a month later, exactly on my birthday I believe, I got another call.

I had to move to Cupertino. Or else. And this time, the “else” was that I would be taken off the Dock and the Finder, and I couldn’t be guaranteed any interesting work ever again.

So I politely declined, and resigned. About three weeks later, the rest of the remaining software group in Cork was fired. Clearly, the plan had been to get rid of everybody, but they couldn’t tell me that at the time. I should have waited and I’d have got a payoff at least…

My version of the Dock shipped once to developers, with the Developer Preview 3 of Mac OS X. John Siracusa absolutely hated it. We remain friends.

After that, the engineer who took over from me rewrote the Dock entirely, and none of my code actually shipped to the public in the end. Eighteen months of hard work out the window, ah well.

But I learned a great deal, made a lot of friends, and the experience spurred me on to resurrect DragThing for Mac OS X, which proved very popular for quite some time. PCalc also came back to life around then, and that’s still going today!

As a final note, when I left Apple for the last time, and emptied out my drawers, at the very bottom of the last drawer I found my distinctly unsigned NDA.

Catalytic Converter

Catalyst is in some ways a miraculous technology – just click a check box and instantly have a working Mac version of your app. And, given the source code of a relatively modern iOS app, it certainly works. Even PCalc’s About screen worked out of the box.

“Your developers were so preoccupied with whether or not they could that they didn’t stop to think if they should.”

But that is just step one of a much longer process.

I wanted to explore how feasible it would be to move PCalc to Catalyst, but my criteria was that I would only release something that was better than the existing Mac version. It would be great if I could. Even though a lot of core logic code is shared between the different versions, most of the user interface code isn’t, so I currently have to write that twice which means less time spent on both versions.

For a developer without an existing Mac app, that equation is certainly a different one.

The “single check box” Catalyst version of PCalc is a single resizable window, with many tables and popovers that seem to me to be out-of-place on the Mac.

It does all work though!

Things that work well with touch, don’t necessarily look or feel great. In fact, I would say that the more an app uses the standard iOS user interface elements, the less it feels right on the Mac.

For something like a game that is all custom UI anyway, you probably couldn’t even tell, although Catalyst currently isn’t a great fit for game developers either.

It became pretty clear to me that I would need to rewrite a lot of the user interface, to find a happy middle ground between the iPad and the Mac. Which would probably benefit both in the long run, to be fair. But with everything else that was going on this summer, I couldn’t justify that work, with no guarantees at the end of the day that I would have something I was happy to ship. So, I mainly focused my time on things like Shortcuts and Dark Mode, and iOS 13 support in general.

I decided I would commit to a Catalyst version of my “Dice by PCalc” app. It’s a smaller app, and not so high stakes, but it still touches a lot of the OS. That would give me a feel for how well Catalyst works today.

Time to roll the dice…

And I have something that is functional, that I shipped on day one. I’m still not 100% happy with it yet though.

Once you get past that first check box, and want to build out Mac-specific features like menus, the APIs start to feel rougher and unfinished. For example, the ability to put images in menus only started working late in the Catalina beta cycle, and the menu APIs are not nearly as comprehensive as the underlying Mac equivalents.

SceneKit fails entirely on older machines with Nvidia GPUs, leading to black windows, a bug that made it all the way to Catalina GM. Multiple window support works, but I ran into a lot of problems there too. Some APIs like the share sheet are just not present.

There’s still no direct way to read the state of the keyboard either, so detecting that the user is holding down option as you drag something isn’t easy. That also affects games that want to offer keyboard controls. I found a way through public APIs, and App Review did approve the app using this technique, but it isn’t ideal by any means. Similarly for really simple things like changing the cursor.

Some user interface elements like the spinning carousel pickers felt especially out-of-place, and unintuitive – you can’t click and drag on them to change the value, you have to use a scroll wheel/gesture.

Before polishing

The nearest equivalent on the Mac would be something like a popup menu button. But there’s no popup menu button on iOS, so I have resorted to writing my own – and that is one of the classic blunders.

After polishing

It’s the kind of thing that Apple should supply as standard, but I get the feeling they just ran out of time. The OS releases don’t seem to have gone very smoothly in general, from my outside perspective.

Documentation for Catalyst has been almost non-existent too, which has made things a lot harder than they should be.

From the business side, there is also no way for somebody to get the Catalyst version of the app for free when they buy the iOS version. And no great way to share in-app purchases either if you have a free app. That generally means that somebody will have to pay a second time to get a copy. There is definitely an argument that building a Catalyst version is actual work, work that should be paid for, but I can equally see the side of consumers that have been told it’s just a simple check box. Apple said a shared store will come in two years, but that’s still a way off.

I am hopeful that this is just a 1.0 (if you count the Mojave apps as a public beta), and things will continue to improve. It’s a great foundation, but there’s still a way to go before I could use it for PCalc. The real question is, what will be the state of Catalyst vs the state of Swift UI in future years? If one gains significant traction with developers, will Apple stop investing resources in the other? Time will tell.

For now, buy my Dice app 🙂

Record Breakers

I’m impressed, PCalc 1.4 and PCalc Lite 1.4 were approved and available in about two and a half days from submission to the App Store. That’s the fastest I’ve seen so far – I submitted them late on Tuesday afternoon and they were both up there as of 3am Friday. Within two minutes of each other too, which is new.

I’ve updated the metadata on the apps so they should change release date to today when the store next pushes an update out to its servers – it usually takes an hour or two. I also changed the copyright strings to say  2009 – don’t forget that folks.

I wonder if updates to apps get the same level of scrutiny as new ones? I’d like to believe that someone out there somewhere in Cupertino has been assigned to my account and always reviews the same apps when they update. I suspect though, that they are just randomly assigned to whoever is free in the queue. Things are definitely getting faster though, but I don’t know if that’s just down to throwing more people at the problem, or improved procedures. Anyway, thank you mystery app store reviewer(s).

Both apps now sport a splashscreen, something that was previously frowned upon by The Powers That Be.

I thought I’d put a toe in the unknown waters of Apple guidelines and see if it was accepted, and it was. I’ve seen lots of apps that use one nowadays and it makes a lot of sense for PCalc anyway. The calculator themes and layouts meant you usually ended up with a jarring change of appearance after the app launched.

The initial display for an iPhone app is just a fixed picture while the actual code is loaded in the background. It’s meant to give the impression that the app has launched faster than it has, but more often than not it has the opposite effect and also makes the user think they can click on things before they really can.

I was also vaguely concerned by a new UI feature I added for 1.4.

PCalc now keeps track of the conversions (and constants) you use, and displays the most recently used at the top of each section. The idea is that you save a lot of taps if you use the same conversions frequently. I already had the code for tracking recent selections from desktop PCalc but it wasn’t wired up to any UI in the phone version.

Anyway, one of the features in the Mac version is a button that swaps the most recently used conversion round, so if you just did “Feet to Inches”, it would switch to be “Inches to Feet”. I wanted that in the phone version too, but it was tricky to find a good place to put it. Initially I just added a “Swap” button at the top left of the top level of the Conversions section. That worked, but I extended the feature to also show recent activity one level down in the individual categories. The top left position shows the back button in that case, so there was no room for the swap button.

The best place I could find was the right side of the cell that displays the conversion, so I needed a button.

I thought that the button you get for showing more information about an item was a good model – like you see in the network section of Settings.app. If you tap the button, something different happens than if you tap on the rest of the cell. There wasn’t anything appropriate provided by the system though, so I made a custom button, and painstakingly recreated something in Photoshop that was “in the style of” the system buttons but with a different symbol on it.

I really like trying to recreate iPhone and Mac UI elements in Photoshop. Most of them probably were made in Photoshop originally, so it’s fun to figure out how they implemented certain effects.

So, that’s my swap button – tap it, and it reverses the displayed conversion. You can then tap the cell to perform it.

I’d heard rumblings that Apple was cracking down on “non-standard” iPhone UI and not approving some apps because of it, so was worried this would qualify. But it was passed by the censors – either because they thought it was suitably Apple-like, or maybe they just didn’t notice. I hope the former!

Anyway, while I’ve been typing, the PCalc release dates have updated, even if the apps haven’t hit the front page yet. There seems to be a lot of caching in the App Store servers, so it can take a while for changes to be reflected everywhere – the iPhone store often shows different things to the iTunes one.

Ok, I’m off to do some product launch PR, hope you like the new releases!