Twitter | Search | |
Cameron Esfahani
My first full time job at Apple was working on QuickDraw. The team was very small: the manager and one other engineer. Right before I started, Apple shipped the first PPC Macs. The QD team had done a lot of work for that so they took long, deserved, multi week vacations.
Reply Retweet Like More
Cameron Esfahani Dec 1
Replying to @cameronesfahani
When they came back, they quit to create a startup; leaving me to be the sole QuickDraw engineer. My parent organization was quite large but all the other folks were working on QD3D, QDGX, Printing, Type. All of which had either just shipped or we’re still under development.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
To some, it was funny: the small, team of one, had more visibility than all those teams working on next generation frameworks. Personally, I was terrified: I was a junior engineer, with no graphics experience, now responsible for drawing basically everything you saw in macOS.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
But, I was good at assembly, at debugging and optimization. I was surrounded by smart folks. A major reason the original PPC machines felt so fast, even though most of all the software was emulated, was that big chunks of QD were ported to C and compiled native. But not all.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
I decided to take the remaining bits native. One of the largest bits still in assembly was the Palette Manager. It was responsible for making sure that apps would get the colors they desired. It was also written in some of the most gnarly ‘020 code I’d ever seen.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
If I could translate a dozen instructions a day, I felt like Odysseus. At this time, they were trying to ship QD3D, so they’d bring in dinners for engineers to stay late. Even though I wasn’t working on it, I was invited to eat. During these meals, I’d listen to them talk.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
They were trying to debug crashes and performance issues. All of them were very smart, but most didn’t have experience debugging on macOS and nearly no one knew PPC assembly. So I started helping them. We’d take our pizza to their office and fix a crash or optimize some code.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
After a few weeks I got to know most of the other teams and they knew that I could help them, even though I didn’t understand what they were working on. I even got a couple of Develop Puzzle Pages out of it. I tell this extremely detailed history as a preface to the next bit.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
One day my boss asked me to fly down to LA for the day. Apparently there was a developer there working on an app showcasing QuickDraw GX. It was important for Apple to have some cool GX apps. And these folks had one. “Go down for the day and help them debug it.”
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
I explained how I didn’t work on GX or know how it worked. He waved that off, “just do what you’ve been doing at dinner with the other teams.” So I got on the plane the next day and sat next to Powers Boothe. To this day I have no idea why he was in SJC and I was afraid to ask.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
A coworker who lived in LA and worked on GX was picking me up and we headed to some mall. Apparently the top floors were office spaces. I remember the smog was visible when we went up the elevator. We got to their office and I was finally told what they were working on.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
It was a greeting card kiosk. You would design these beautiful cards with awesome typography (yay GX!) on a touch screen. Once you were happy with your card, you’d print it then and there. The kiosk was some PowerMac running their app. And it was crashing. All the time.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
Well, this is what they flew me down for. So I sat down and started looking at the crashes in MacsBug. And right away I could tell something was weird. Structurally, most Mac apps look very similar. But this app was like nothing I’d ever seen before: heap and code were off.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
I asked if it was okay to see their code. They went off and eventually decided that was alright and put me in front of one of their developer’s computers with the source code open. “Uh. What is this?” “It’s our app” “But…what IS it?” “Oh, we’re writing it in SK8.”
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
I turned to my coworker and asked if he knew about this. I must’ve looked like I was going to throttle him as he put up his hands and denied any knowledge or responsibility. SK8 was a weird Lisp-like multimedia authoring environment that Apple ATG was developing. Look it up.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
Apparently this company’s management drank the Kool-Aid. Anything Apple had, they wanted to use. Someone in DTS or WWDR had mentioned SK8 to them? Of course they were going to develop their app with that! While they talked, I started drawing a matrix of every possible failure.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
Instead of just: - bugs in app (most likely) - bugs in GX (less likely) I also had to consider bugs in: - the SK8 compiler - the libraries - the bindings for the Mac API I installed SK8 on my laptop and began writing a HelloWorld app. I didn’t catch my flight that night…
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
My coworker let me crash on his couch. We stopped at Fatburger on the way to his house. I was pretty angry, it felt like negligence to convince/allow these developers to go down this SK8 path. Their app would’ve been difficult enough in a traditional language. The shake helped.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
The next day, wearing yesterday’s clothing, I spent hours trying to understand and debug all these GX printing callbacks written in SK8. Eventually it seemed like there was some state being lost going from GX back to the SK8 runtime. I took them aside and told them to dump it.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
I made the case that SK8 was buggy and unfinished and brought no real benefit. Their engineers had a “told you so” look on their faces and the management just looked sad. I headed back to Cupertino. They never shipped that kiosk. And I think they got out of Mac development.
Reply Retweet Like
Cameron Esfahani Dec 1
Replying to @cameronesfahani
A few months later I was working with some people in ATG on another project and I met some SK8 people. I described my experience and they were shocked that anyone at Apple was pushing 3rd party developers to use it…
Reply Retweet Like