My Authors
Read all threads
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.
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.
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.
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.
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.
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.
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.
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.
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.”
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.
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.
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.
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.
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.”
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.
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.
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…
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.
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.
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.
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…
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Cameron Esfahani

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!