Memories of Steve

A version of this article about Steve Jobs first appeared in The Loop Magazine on his birthday during February of this year. Jim Dalrymple edited the original down in size and split it into two parts — decisions that didn’t bother me in the least and probably made it easier to read. Thanks, Jim — for that and publishing it in the first place.

But I decided to post the original, unexpurgated version here. Please note that I wrote this during the summer of last year, so adjust some temporal references as you read. And even if you don’t read this, you should download Jim’s magazine and subscribe because it is a delight.


I have no plans to watch that new movie about Steve Jobs. As I have no plans to read Walter Isaacson’s biography of him.

It’s not because I think those efforts are somehow not worthy of his memory. It’s just that I have my own recollections of the man. And I’m very jealous in guarding them. I don’t want those few and fleeting memories fractured and confused by other people’s interpretations.

Consider that a fair warning, because I’d like to recount a few of my own stories about Steve here. Not only for you, but for myself. Because maybe in the process I can remember him better.

Let me be up front saying that I did not know Steve well, but I had the opportunity to be around him on occasion. Mostly during design reviews of applications for which I was responsible. There were certainly other meetings, but I never visited his home and very rarely spent time with him unless others were part of the conversation.

And I was certainly not some kind of confidant. In fact, he probably always thought of me as the “Safari Guy.” Which is fine by me since there were worse ways for Steve Jobs to think of you.

Of course, Steve could recall my real name, too. Anyone at Apple or Pixar — both large organizations — will tell you that Steve knowing your name was an honor. But also occasionally a terrifying responsibility. That was the bargain.


I was privileged to work at Apple during its Renaissance. I thank Scott Forstall for that. For hiring me. And for introducing me to Steve.

But the first time I met Steve Jobs — actually just saw him in person — wasn’t at Apple. It was at the developer rollout of the original NeXT computer and its software, NeXTSTEP. Software which would eventually become Mac OS X. This was an all-day conference — I forget exactly where — probably during 1988.

Steve was supposed to address us potential NeXT developers at lunch. When the noon hour rolled around, I remember being very hungry and wanting to quickly find a quiet place in the oddly-shaped dining hall to eat my meal. I picked what I thought would be a remote table. Turns out it was right next to where a lectern would soon be placed, followed shortly by the honored speaker.

Steve walked out from some side door and up to the podium. Close enough for me to stand up, walk two steps and shake his hand. Not that I was stupid enough to try that.

He was dressed in a suit. Apparently he did that a lot in those days before he rediscovered jeans. Very professional looking. Almost too serious. Matching the intensity of his bearing and gaze. Obviously Steve intended to tell us all something very important.

And we were all still eating. Some of us hadn’t even started. It was an ungrateful din of crackling sandwich paper, clanging forks, slurping straws, gnashing teeth.

Obviously he wanted us to quiet down. You could tell because he paused several times for us to hush ourselves. And out of respect, awe, and probably some fear, we all tried our best to do so. But, dammit, the room was now packed and that many people just swallowing food makes a lot of noise. Sitting so close, I felt especially self-conscious.

Who the hell scheduled him to speak at that time? Knucklehead. It’s entirely possible that person was taken out later and shot.

Anyway, I do remember Steve’s seriousness and apparent impatience that day. But not a thing he said.


After I started at Apple in June of 2001, I saw Steve at a few on-campus events, company meetings, walking between buildings and such. You could also see Steve sometimes in the company cafeteria, Caffè Macs. He ate there just like the rest of us. Often sitting with Jony Ive.

I’m not sure whether this incident happened just before or after Apple announced the original iPod, but it was a fine Autumn day in Cupertino and I was eating lunch with Ken Kocienda and Richard Williamson, the first two engineers on my Safari team.

We were sitting at a table just outside one of the double doors to Caffè Macs. I can’t remember exactly what we were talking about. If we ever discussed “the project” — as we would sometimes refer to it when not in our offices — it was always in quiet tones and extremely obtuse language since Safari was still double secret and known to only a handful.

Anyway, while we were all munching on sandwiches and salads, Ken noticed a familiar face looking for an open table near the other end of the long patio curving around the front of the cafeteria. It was Bud Tribble.

Among many other achievements, Bud was famous for running the original Macintosh software team and being a co-founder at NeXT, where Richard had worked years earlier. Bud had also hired me at the now defunct Eazel which Ken and I had both worked just prior to joining Apple. Bud, in fact, helped me get the interview at Apple with Scott Forstall.

So all three of us knew him well.

Bud finally sat down with someone else who’s back was turned away from us, six or seven tables away. Ken said something like, “Hey, that’s Bud over there! Did you guys see him? What’s he doing here?”

Ken and I hadn’t seen Bud in months, not since Eazel shut down, so were all making guesses about the reason for his visit. Tiring of the conjecture, I finally just stood up, cupped my hands and called out to him.

“Hey, Bud! Come over and see your old pals when you’re done to talking to that guy.” Bud looked up — slight pause — and “that guy” turned around to stare at me.

It was Steve Jobs. Of course.

I will forever remember his look — a slightly lopsided and tight-lipped half-smile, eyebrows narrowed as if to say, “I don’t know who you are but I won’t forget that.”

Gulp.

When I sat back down at least I didn’t say something smartass like, “I am so fired,” in front of my two engineers. Although that’s what I thought at the time.

Ken and Richard thought it was pretty funny once Steve turned back around. Until he did, I think they were holding their breath, too.


Spoiler alert: I did not get fired.

And about nine or ten months into the Safari project, Scott Forstall figured we should start preparing to review its features, user interface and various behaviors with Steve. This would have been during the late Spring of 2002.

By that time Safari was a for-real application which could actually browse the Web. But it wasn’t called Safari yet. That christening wouldn’t happen until December, later that year.

Scott briefed me on what to expect and essentially how to behave during my first meeting with Steve and the subsequent reviews. And it was clear I would not be at a second meeting with Steve if I fucked up during the first one.

So I listened to Scott very carefully and took his most excellent advice. In retrospect, it should have been obvious. At least the general guidelines. But there were a few particulars I never would have thought of ahead of time.

Let me be clear. Steve was not some mercurial ogre or cartoon autocrat. He was just very, very busy. He didn’t have time for “yes men,” the easily frightened, or those who didn’t know what the fuck they were doing or talking about.

In that way, he wasn’t different from any other executive. At least those with good sense.

Steve expected excellence. Which is why he so often got it.

He knew when something was right, but he didn’t always tell you what he wanted when it wasn’t. And he was very clear when he didn’t like it. Some misinterpreted this behavior as being overly critical, but it was actually time-saving clarity, albeit uncomfortable on occasion.

Design was an iterative process with Steve. Which meant that it could take several sessions with him to complete that cycle. So patience was not just a virtue.

When Steve asked you a question? You didn’t ramble and, whatever you did, you didn’t make up an answer. If you didn’t know, you just said that you didn’t know. But then you told him when you’d have an answer. Again, this was just good advice to anyone “managing up,” as they say.

When demoing something to Steve, you had to pace yourself. If Steve said, “Stop,” you fucking stopped. Hands down and waited. And you didn’t jiggle the cursor while he was looking at the screen. Certain death.

If he wanted to drive the demo machine then, by God, you let him drive.

And if your software crashed, you didn’t make excuses. You just made damn sure that particular scenario didn’t happen again. Ever.

Most of all, you remained calm. Because that was so easy. Oh, yeah.

Anyway, the other thing Scott warned me about was that Steve might test me. Meaning that he might push me a bit to see what I would do. Sort of like a pitcher brushing back a batter with the high hard one. Fun.


I don’t actually remember much about that first meeting with Steve. Sorry, folks. Probably nothing to do with nervousness, I’m sure. But I was invited back. So I must not have screwed it up too badly. No doubt because not much actually happened.

At one of those subsequent reviews — it might have been the second meeting — Steve did put me on the spot. With a direct in-your-face question. In fact, I think it was the first thing he ever asked me.

We were reviewing the bookmarks user interface in the yet-to-be-released Safari. At that time, all bookmarks were contained in a single, separate modeless window. It was homely but easy to implement.

And Steve didn’t like it. Probably because he didn’t want the complication of switching between windows. We started looking at how other Mac browsers did it. He didn’t like those solutions either.

So he turned directly to me, leaned forward with that laser-like focus of his and asked, “What would you do?”

Considering that what we just demoed was what I had done — or, technically, what my engineers had done — I was screwed. Everything else in the world seemed to fade away in a blur around Steve’s face, and for a moment I couldn’t think. But I didn’t panic. Or soil myself.

After a beat I said, “I actually like what Internet Explorer for Windows does, with the bookmarks in the same window as the Web content. I just don’t like how it puts them in a sidebar. There’s got to be a better solution than a sidebar, but I don’t know what that is yet.”

And instead of being annoyed at my lame-ass answer, Steve said, “Show me what that looks like.”

Of course, he put me on the spot again because we didn’t have any machine running Windows handy. Which shouldn’t be surprising. But I dodged another fastball by finding a screenshot online with Safari itself. Score!

I was in the major leagues now.

One great take away from working with Steve is that there’s not much anyone can do to intimidate me now. So, bonus.


After a few reviews with Steve, I was allowed to do the live application demos of Safari sitting right next to him.

Normally someone from the design team demoed screenshots or non-code prototypes in Macromedia Director. And many times they also demoed the real application. But Scott wanted me to demo the live code because he thought I would be able to avoid the fragile edges and therefore the crashes.

Later, I initiated one of my engineers, John Sullivan, with this honor and doom. But in the beginning, it was me.

Toward the end of Summer in 2002, we were making progress with Safari’s look and feel. While reviewing some of the affordances in the main Safari window again with Steve, we focused on the status bar.

Steve didn’t like the status bar and didn’t see the need for it. “Who looks at URLs when you hover your mouse over a link?” He thought it was just too geeky.

Fortunately, Scott and I convinced Steve to keep the status bar as an option, not visible by default. But that meant we had a new problem. Where should we put the progress bar to indicate how much of the page was left to load?

Before, the progress bar lived inside the status bar. So we needed to find it a new home. We discussed all sorts of silly ideas including making it vertical along the edge of the window.

Remember, this was back in the day before the spinning gear or other smaller affordances were widely used to indicate progress. In the age of barber-pole blue Aqua, it had to be a bar.

The room got quiet. Steve and I sat side-by-side in front of the demo machine staring at Safari. Suddenly we turned to each other and said at the same time, “In the page address field!”

Smiles all around. Which I followed with, “I’ll have a working version of that for you by the end of the week.” Over-committing my engineering team, of course.

But I didn’t care. I had just invented something with the Big Guy. True, it was a trifle, but there’s no feeling like sharing even a tiny byline with Steve.

The irony of that invention is that years later I tried to get the whole feature removed. Because even when precision testing showed that Safari loaded pages faster than any other browser, that damn in-your-face progress bar made it seem slower to the user. It’s wonderful visibility was killing our reputation.

While we never did remove it, we finally changed the appearance and behavior of the progress bar. And that made me sad, even while it made me happy.


Sometimes during those design review meetings I got a glimpse of Steve that few were privileged to see.

Once a co-worker in the room acted a bit unfocused and bleary eyed so Steve paused the review to ask if he felt OK. That person apologized and responded that he’d been in the emergency room late into the night with his daughter after an accident at home.

Steve, visibly concerned, asked if it would be better to do the review later. The fellow thanked him and said no, we could proceed. Then Steve related a story about one of his own children who had a similar mishap a few weeks earlier and how much that had shook him, too. He told the fellow he could take off early that day, after the review.

Another time Steve himself looked a bit bleary eyed and apologized to all of us. He told us he’d been up all night.

The family dog had passed away sometime earlier so Steve and his family adopted a new puppy. After a few days with that strain, his wife told him it was his turn to stay up minding the animal so she and the kids could get some sleep. Which meant he had been sitting on the kitchen floor until morning with a cranky little dog trying to keep it quiet.

Even he thought that was funny, a good thing because several of us were trying not to laugh.

Yes, Steve could be intense at times. But he was also a real person. He had to deal with the ordinary and mundane aspects of life like everyone else. Maybe even enjoy them.


I’ve written before about being at 2003 Macworld keynote rehearsals, the event where Safari was unveiled. Also where Steve gave the first update on our new Apple Stores, at the time open less than a year.

Many technology and business pundits had already written off our retail effort claiming it would be a huge failure — yet another dumb-ass prediction about Apple. In fact, the stores had succeeded better than we expected. And Steve wanted to make damn sure everyone knew that. Especially the pundits.

During the two days of rehearsals, I sat about three or four rows away from the stage in the nearly empty presentation hall with Ken Kocienda. With the brightly lit stage in a dark hall, Ken and I were just visible enough for Steve or the support staff to see us if we were needed to troubleshoot the Safari demo.

But most of the time, we had nothing to do except sit there and watch The Master Presenter practice his magic.

Near the beginning of the first day Steve asked, “Is Phil here yet?” Meaning Phil Schiller, our head of Marketing. After a quick look around, somebody reported that he hadn’t arrived yet.

Steve explained to all of us that he was planning a little prank, we would see it first, and we had better not say anything about it when Phil did arrive later.

He then queued up the slides with the Apple Store update and inserted an extra special slide right at the end.

It. Was. Epic.

Laughter all around while we stared at the slide for a minute, a few moments to calm ourselves, and then the keynote was reset to the beginning. Great timing because that’s when Phil walked into the hall.

So Steve started the rehearsal, going through slides on the “Switcher” ad campaign and then the Apple Stores.

At the end of the retail update, he was supposed to conclude with something like “1.4 million visitors in the month of December alone,” but he added, “so to all of you in the press who doubted us…”

And then clicked to reveal his special slide — poster art I’m sure everyone has seen before — a 1940’s-style rendering of a grinning man holding a big mug of coffee next to his face with this text alongside like a world balloon:

“How about a nice cup of shut the fuck up.”

And then the best part — the part we didn’t know was coming — Steve paused, turned to his V.P. of Marketing and deadpanned, “What do you think, Phil? Too much?”

Ken and I struggled to keep from collapsing in another giggling fit and falling on the floor.

That Steve made such an effort to punk Phil not only meant he had a wonderful sense of mischief, but it was clear he thought well enough of Phil to know the man could take the joke. Which Phil did after a few moments of what I assume was panic.


Steve didn’t always wear blue jeans and a black turtleneck.

Sometime during my early years at Apple, I spoke with a veteran engineer in his first-floor office. He had his back to a window so I had a good view of the big path outside which led to Caffè Macs.

While looking out that window, I became distracted trying to figure out who was walking along that path with Jony Ive. The hand gestures seemed familiar, but… Wait. What the hell?

I pointed at who I saw out the window. My host turned around, looked and said, “Yeah, that’s how we know it’s really Summer — Steve is wearing short pants.” And apparently a short-sleeved, almost-tropical shirt with actual buttons.

Seriously, I didn’t recognize him at first. There were always a few strangely dressed folks around campus, including one fellow who regularly wore a plaid kilt. And I’m not even sure that guy was Scottish.

At least Steve looked like he was cool even if that wasn’t a particularly cool look for him.

And in retrospect, he did have a better tan than most of the rest of us geeks.


In my later years at Apple, I probably saw Steve less often than the early days of Safari development. Partly by circumstance and partly by my choice.

I had fewer new applications to review with him and often when I did, I tried to get someone on my staff to do the demo instead of myself. This made for less crowded reviews and it gave other folks experience dealing with Steve. I didn’t want to hog all the glory. Or all the doom.

Once there was a longer than usual stretch of time where I hadn’t been in a meeting with Steve. In fact, during that period, I didn’t recall seeing him in the cafeteria or walking around campus either.

And then I was called to participate in a design review with Steve.

When I walked into the meeting room I was shaken. Steve looked thin and haggard with an unhealthy color, like someone’s grandfather.

Just as unsettling was his demeanor. He seemed tired and without his usual focus.

We all knew Steve was sick. He had told us about the cancer. But until that time I didn’t realize how much it had ravaged him.

I don’t even remember the subject of that design review. When it was over, I left quickly and headed toward my office.

Realizing that what I saw had bothered me so intensely, I stopped at Darin Adler’s office rather than my own. I needed to talk to someone about it. As a manager, you should never share such things with someone who reports to you. But I had known Darin for years and trusted him not to freak out.

And he didn’t. But at the end of the day there wasn’t much for either of us to do except hope for the best and prepare for the worst. And get back to work.

Which is why, months later, I was actually relieved to hear that Steve would be getting a liver transplant. That idea scared a lot of folks, but I thought it felt hopeful.

When he returned from the operation, he still didn’t look like the Steve of old, but he looked much better than that last time. So much better that many of us hoped he would be with us for quite a while.


The last time I saw Steve we talked about Safari.

This was earlier in the Summer of 2011 before he resigned. Steve had been on another medical leave since January of that year. Getting thinner and weaker again, he still came into the office to do what he loved.

At a design review of a new Safari feature, the subject of the Windows version came up. Steve wanted to know what we could do to make it better and more competitive.

By this time I felt pretty relaxed being around Steve. So relaxed that I decided — what the hell — I’ll just be blunt.

Besides getting more folks at Apple to support development of Windows components the application depended on, I told him this wasn’t an engineering problem — I really needed advertising. And that Safari for Windows couldn’t compete with Chrome when Google put a download button for it on their home page and spent big on television, print and Web views.

Scott Forstall, also in the room, backed me up on this. Another reason Scott made a great boss.

Darin Adler, now running Safari and WebKit for me, had the presence of mind to add that the need for promotion wasn’t just a Windows Safari problem — Mac Safari would benefit from it too.

We were all huddled in the little design review room, some of us in chairs. I sat directly across and just a few feet from Steve.

He seemed to be thinking about the problem and the proposal for some time. He was actually considering this. And that was heartening. After all, Steve was famous for changing his mind.

But, in the end, he said no.

While not harsh about the decision at all, he didn’t really elaborate on the response. I assume his reason was focus. By then we had focused on iOS, iPhones and iPads. Hell, I don’t think we even advertised Macs or OS X on television at that time.

I wasn’t thrilled, but I could understand.

And when you can get the time for thoughtful reflection on your idea from a visionary like Steve — well, that’s a good day.


A few months later, I was home sick in bed with the flu, a little out of it due to medication and not at all aware of the news.

It’s not like all of us didn’t expect it, but it surprised me when Scott called to tell me that Steve had died. A courtesy that I’ve always greatly appreciated because I know how difficult it must have been to talk then.

And it seemed better that Steve passed away at home with his family around him. Because that’s how a good man goes.

After I called my staff and made sure they were aware and they were OK, I told them to let any of their team members leave for the day if they thought that was best. Most of them stayed anyway because they didn’t want to be alone.

Then I laid back down, alone, and selfishly realized how fortunate I had been to have known this man, if just for a little while.

A podcast about things you people wouldn’t believe →

Back on September 7 of last year, I sent Rene Ritchie and Guy English an email titled “Some ’80s films for your consideration.” This was shortly after our popular “Dune” podcast (and before the always insightful Matt Drance would join us to discuss “RoboCop”). At the time we were trying to come up with another geek movie to blather on about for 90 minutes.

The email was a list of 40 films that I thought were significant and timeless. On that list was “Blade Runner.” This is what I had to say about it in the email:

This is the biggest impact science fiction film of the ’80s, as far as I’m concerned. Everything changed after this one. In fact, the creators of RoboCop were inspired by it. But maybe it’s already been over-analyzed to death.

I wasn’t being hyperbolic. Every dystopian-cyberpunk-noir thriller that would follow has “Blade Runner” in its DNA. And there were a lot of them. Some might not exist at all if it weren’t for the singular and prescient vision of Ridley Scott and his collaborators.

Look at “Ghost in the Shell,” “Dark City” and “The Matrix.” Would those be the same without “Blade Runner?” I doubt it. Even Ronald Moore has said that the Cylons in his re-imagined “Battlestar Galactica” owe much to the replicants of “Blade Runner.”

That fear of everything already having been said about “Blade Runner” — at least everything of consequence — is why I had it so far down the list.

So I asked Rene to put off doing “the big one” for awhile. Maybe I thought we needed to first earn the right to discuss it. Who knows. For me, it was intimidating.

Eventually I realized that doing the podcast is not necessarily about saying something new. It’s about saying something true. That took the pressure off. Because I truly love this movie. I hope that comes through.

You can listen to our celebration of “Blade Runner” here.

As you wish, another ’80s movie podcast →

If you enjoyed the “RoboCop” show that Rene Ritchie recorded with Guy English, Matt Drance and myself last month, then we have another ’80s movie diversion for you — an inconceivable1 celebration of “The Princess Bride” that the four of us recorded last week.

That makes three ’80s movie podcasts so far, starting with “Dune” way back in August. And we plan to do still more. Seriously, one of these every month. We’re just crazy like that.

We’re focusing on ’80s movies because an ancient relic of that era, me, is available to do stream-of-unconsciousness commentary with folks who were probably children back then. And people wonder why I’m called “Gramps.”

  1. See what I did there?

He who controls the Spice, controls the podcast →

I did another podcast last week. With my usual broadcasting buddies, Guy English and Rene Ritchie. I’m not sure why they keep inviting me on their various shows, but I have so much fun talking to them it’s not like I’m going to say “no.” Even if they ask me again. Especially if they ask me again.

Anyway, this time we didn’t even talk about Apple. Much. No, this podcast was entirely (yeah, right) on the subject of “Dune,” the classic Frank Herbert novel and the surreal David Lynch film. In the process, I suffered a serious ’80s flashback and we had trouble staying on topic. No doubt due to all of us being jacked up on Melange. But even with all that Spice, Guy and Rene managed to sound articulate and informed while I talked over everyone else. Just like usual.

Why in God’s name they asked me to join them for a “Dune” podcast is still beyond me. It’s not really my area of known or even suspected expertise. So I just made shit up like any other media reviewer. Whatever works. I think this whole thing started as a bad run of “my name is a killing word” jokes between the three of us and a few other folks on Twitter back in June. And then it got completely out of hand so we had to record it.

Rene told me he hardly edited this one at all, other than clipping the beginning when we were futzing around with our microphones and exchanging mundane stuff about our personal lives. So if you want to hear me unvarnished and raw, I suppose this is as close as it gets.

The Spice must flow. And it did.

Remembering Penny

Penny

This is one of my favorite photos of Penny. She’s hard at work on one of the three chores she loved best, sniffing. The other two being eating and sleeping, of course. If all of those can be considered a career, then Penny was a seasoned professional.

There’s another picture here with her sister, Casey, when we celebrated Penny’s fifteenth birthday last Summer. That was a very happy day for all of us. Frankly, we never thought Penny would last that long. Every day after that was a gift. And we cherish them all.

Today would have been Penny’s sixteenth birthday.

Sweet sixteen for a Labrador Retriever is more like 99 for you and me. And toward the end, Penny did seem that ancient. But I like to remember when she was still black as a hairy coal, filled with mischief and energy, ready to chase those pesky cats or sneak away to find one of their feline bowel snacks. You dog people know what I mean.

Penny would eat just about anything. One time she chewed into my son’s backpack and swallowed two handfuls of foil-wrapped candies. Stomach-pump time for any other breed, but not Labradors in general nor Penny in particular. As they say, it came out all right in the end. Foil-wrapped, too. Watching her remanufacture those candies the next morning was an inspiration to anyone who’s ever been constipated.

She loved to eat healthy foods as well. Years ago when we worried that she might be putting on a little too much weight, we started feeding her carrots, broccoli and cauliflower as snacks. She loved them as much or more than her kibble or biscuits. But we quickly had to back away from that strategy due to the risk of a methane explosion. The cauliflower was especially dangerous and unpleasant.

But Penny loved the smells she made. Just like she loved all the odors. She didn’t even have to bury her head in the grass or dirt to enjoy them. At times, she would stand in our yard on the hilltop, leaning into the wind, her nose quivering, concentrating, trying to suss out all that lay below her. So focused. I never interrupted her when she was like that. I didn’t want to break her spell.

Another passion of hers was walking. Up the block and down the hill, all around and around. No doubt to get closer to whatever she had smelled from her perch above. Every morning after breakfast she wanted to get out and check her pee-mail. We would go strolling to investigate the neighbors, the deer, fresh lawn clippings, some spilled refuse, perhaps a varmint or two. And she never tired of it. Even treading the same paths every day. It was just as exciting to her as dog food.

Meetings were always fun for Penny. She could get scratched, smell some new humans, and pick up a few sympathy snacks. She never bit anyone nor threatened a child. Although she did lick a few of them pretty thoroughly. She certainly loved my son — they grew up together. But it took her awhile to accept Casey, our other dog. Penny had us all to herself for so long that I think she was a bit miffed at the newcomer. But once Casey was no longer an annoying puppy, they became family. Eventually they would curl up asleep next to each other.

Penny had a rich, double-thick coat of fur with a subtle but stylish wave running down the middle of her back. Beautiful and therapeutic. When I would come home from a long day at work — after she licked me repeatedly in my face – I would place my hands on her hairy head or fuzzy sides, scratching her, tickling her, stroking her back. And soon all the tension would leave my body, and all my worries would dim from my mind. Every time she would give me this gift. Every time.

She was dedicated to sleeping. Even as a puppy, Penny seemed to spend over half the day at it. And she had a snore that would shame an apnea-suffering fat man. Her dreams could be loud too. While not exactly violent, she sometimes moved and shook, twitching her legs, tail and nose. For a long time she slept on the bed at our feet. I always liked her close by, even if she was noisy and in the way. It just seemed right to have her there.

In her later years, when she could no longer leap up safely on the bed, Penny would curl up in the closet. Tucked away like a shadow in the shade. That little room became like a burrow for her, and she sought it out for comfort. And as I moved around during the night, I took comfort too in the gentle buzzing and creaking emanating from the darkness between the clothes and the hangers.

Now, when I get up in the middle of the night, I still pause to check on her in that closet. To make sure she’s okay. To make sure she’s safe. I thought I heard her collar tags jingle. Didn’t I hear it? And every time I’m sad all over again.

She’s gone away forever.

Toward the end of March, Penny couldn’t walk or even stand. Her bowel and bladder episodes were not at all regular. But on her last day she wanted a bit to eat again. So we bought her a bacon burger from Five Guys and fed some of it to her in little pieces. How many of us will have bacon on our last day?

We carried her out to the front lawn and let her lay on the grass so she could sniff the air and feel the breeze. A few of our neighbors came around to hug her and say goodbye. She was a celebrity on our block.

At the end of that day, my wife, son and I took her to the same room where we said goodbye to Casey. We kissed her, we hugged her, we stained her still beautiful coat with tears. And with all of us gathered around, and with her head resting on my knee just like Casey had done, Penny passed away from this world.

We placed her ashes in a little oak box on the mantle next to where Casey also rests. Together. They’ll always be my little girls. But I miss them so very, very much.

We love, you Penny. And we’ll never forget you. Find Casey and be at peace. Be at peace.

What I’ve been doing lately

A few words of explanation to those who are asking where I’ve gone and what I’ve been doing the last few months.

Sometime in March, shortly after I recorded my first “Debug” podcast, our dog Penny took a turn for the worse. My family and I struggled with her illness for long days and longer nights. And then we made a very hard decision. She passed away just before the month was over.

I won’t write her eulogy now. She deserves better than this haphazard post. But I hope to publish something in a few days, on what would have been her sixteenth birthday.

We were devasted by her loss. More so than I realized at the time. I unplugged myself from the Internet and most everything else I was doing then. I don’t even remember much of what happened the following week.

And then I realized I had to prepare my speech for the Úll conference starting on April 12. I’m thankful for the pressure of that deadline and my own natural tendency to procrastinate. It got my mind off grief and straight on to panic.

Now, public speaking doesn’t bother me much. Years ago I trained as a minister — a whole other story. But when you’re twenty years old, in the pulpit, and telling people four times your age that you have the absolute Word of God for their lives today — well, everything else is downhill from there in terms of pressure.

But I never want to do any kind of presentation without being prepared. The audience deserves better than that. So that had me worried. And blessedly focused.

What did me in was the way I wrote the speech. I scribbled down a 4,000-word outline — just an outline, mind you — and then proceeded to record myself trying it out. When I hit the 90-minute mark I knew I was screwed because we were limited to only 25 minutes at Úll. I figured I might get away with a half hour, but they would march me offstage if I went twice that long.

So it was cut, cut, cut and cut some more. Rewrite, rewrite, rewrite. Again and again.

I was still working on that speech the day before my wife and I got on the plane to Dublin. All the constraints, especially the time limit, actually improved it.

But the process of completing it burned me out on writing.

And then suddenly there was Úll — The Conference. I capitalize it because it’s simply the best event I’ve ever attended.

Not only are Paul Campbell and Dermot Daly crazed saints for hosting such a celebration, but how they attracted all these wonderful people to operate it, speak at it, and attend it — that’s a stunning accomplishment. You need to attend next year. Trust me.

And the venue? Perfect. Dublin is now one of my favorite cities. Some say you can’t swing a cat in that town without hitting a church or a pub. But it’s not just religion and relaxing there. Ireland is thick with history and gorgeous to behold. And after you’ve worn yourself out absorbing it? My advice is too absorb a Guinness and some pub food.

Every Guinness I’ve drank in America tastes like piss compared to the brew — like some magical beer milkshake — that they serve with such expertise and pride there. You have to try it.

But it was the people in Dublin that impressed me the most. Not only did my wife and I make wonderful new friends at Úll, but everyone else we met in Ireland were just so… nice. Even the cab drivers.

So Úll and Dublin were great. And then we got back from that 15-hour flight to find that Penny’s ashes had just been delivered to our home. It was like a punch in the gut. All those feelings were back.

Now, it’s not wrong to mourn and miss someone — and she was a some-one, not a some-thing. If you don’t, did they really matter? But you can’t dwell on just the loss.

That’s when I decided to throw myself into a new project. If I wasn’t so burned out, it would’ve been a writing project and you could’ve already read that here.

I say on this website that I’m a recovering programmer. Well, I’ve really fallen off the wagon this time.

Suddenly, I got a wild hair up my ass about MPlayer, the command line-based, cross-platform media player that geeks and other encoding freaks like myself use incessantly.

Even though it’s a command line program, it still presents a Cocoa UI when displaying video on OS X. But the various quirks and bugs in that UI had been getting on my nerves for a long time.

So I wrote a whole new front end for it. Not by patching it. But by running it as a background process, capturing its output and then dynamically presenting a new UI from yet another command line tool.

Stupid, I know. But it was a wonderful distraction. And the damn thing works just fine.

I call it “MPlayerShell.” The source code is available on Github and, thanks to Valerii Hiora, it’s installable via Homebrew too. You can read all about it here.

This is the project I talked about, but didn’t name, on my second “Debug” podcast with Guy English and Rene Ritchie. Props to Rene for leading off the show with one of my “F” bombs — the man never buries a good lede.

Anyway, the whole process of writing MPlayerShell took me nearly three weeks. Yes, I’m the world’s slowest software engineer. But part of that process was 1) Figuring out MPlayer’s peculiar APIs and behaviors, and 2) Learning to write in Objective-C on OS X again. Seriously, I hadn’t done that in years.

Now I’m on a mission. I must do more coding. That monkey is not crawling off my back anytime soon.

And I know exactly what I’m going to write.

I’m on the “Debug” podcast this week →

My thanks to Guy English and Rene Ritchie for inviting me on their podcast. I don’t know what they were thinking but they’re good people anyway.

Apparently we talked for an hour and a half. At least that’s the length of Rene’s final edit. I don’t remember half of what I said, but I certainly enjoyed droning on and on at those two. I might have mentioned Safari and WebKit maybe once or twice. And used the “F” word — you know, just so you’re certain it was me.

Meet me at the Úll conference in Dublin

I’ll be speaking at the Úll conference in Dublin, Ireland sometime during April. Thanks to Paul Campbell and Dermot Daly for the invitation, and thanks to Jim Dalrymple for talking me into it.

I got a chance to meet Paul at a four-hour lunch last week. He’s obviously both considerate and crazy enough to endure me talking for that long. Perhaps you are too.

If you like the content here at this website, my session will be like a really long-ass blog post. Except that you won’t have to read it. I’ll “perform” it live. Whatever the hell that means. Now I just have to finish writing it before I show up next month.

Of course, there are many other fine folks speaking at and joining in the conversation at the conference. I look forward to meeting them all.

See you there.

Regarding fake projects and loyalty tests

I meant to write this article a few weeks ago when I was on a roll here. In the meantime, life intruded with several distractions — some serious, like another illness for our 15-year-old Labrador Retriever, Penny. That situation caused me to completely unplug from the Internet for a few weeks to focus on her recovery. Penny is much better now and I’m trying to get back to that original thought.

Like me, many of you probably read Jacqui Cheng’s article on Ars Technica, “Does Apple really assign engineers to ‘fake’ projects as a loyalty test?” Her article was a response — a refutation, really — of a meme that wouldn’t seem to die.

Once you get past the overly dramatic headline, it’s a well-written, thoughtful piece with actual research, sprinkled with quotes from real people who know what they’re talking about, including a tweet from my friend Daniel Jalkut. Props to Ms. Cheng for being an honest-to-God journalist and doing the hard work on this one.

The conclusion to the article is, of course, “no,” Apple doesn’t do that.

And I can also confirm that’s the case. As a manager and then director at Apple for over 10 years, I never once assigned anyone to a fake project. And loyalty tests? I never heard of either practice there.

So, how do silly ideas like this stay alive? It’s because many don’t understand — even at a basic level – how Apple works.

A qualification for that understanding doesn’t require employment at Cupertino. I doubt very seriously if John Gruber, Jim Dalrymple or Horace Dediu — none of whom have ever worked for Apple — fell for that original story.

I picked those three folks as examples because all of them — as far as I’m concerned — have a good track record of discerning Apple’s motives and interpreting the company’s actions. There are certainly other people out there like those three, but sadly it’s a small number compared to the legion employed as media gas bags.

Anyway, here’s a lesson for the gas bag army — not that they’ll really take it.

As I’ve mentioned here before:

… at Apple, we defied business orthodoxy by being a functional rather than divisional organization. Meaning we were organized by product focus like a much smaller company, rather than in discrete business units like some the size of IBM or General Motors. It certainly staved off the complexity of duplication that continues to plague other companies.

This isn’t some insider scoop I gave away with that post. It’s been obvious to people on the outside for years.

Clearly, duplication of effort is not big in Cupertino. Even with two operating systems — iOS and OS X — the idea is to share technologies that make sense and keep those technologies from diverging too much. Otherwise it becomes really complicated to coordinate releases. It’s not perfect, but anyone who’s attended an Apple developer conference knows the company takes reducing even that kind of duplication seriously.

Which makes the idea of fake projects so ludicrous. That’s not even duplicated effort. That’s completely superfluous work. When you have a focus on efficiency like Apple, why would you waste time and resources doing that?

Apple is also known for having very high standards when it comes to hiring. And it’s clear that those candidates who make it through the interview process, are offered a job, and finally accept employment — well, those folks really want to be at Apple.

It’s also common knowledge that Apple keeps what they’re working on a secret until it’s unveiled to the public. There are very explicit rules for employees — told to them on their first day of their employment or later disclosure on a specific project— about what they can say regarding that project and to whom they can say it. And it’s very clear to everyone what happens if those rules are broken. Such a policy is probably not that much different from what other technology companies have these days. This is old news.

Now, if Apple is going to screen candidates so thoroughly and then explain the rules to them so carefully after they’re hired, what is the point of an additional loyalty test?

None. It’s a stupid idea. Not only stupid, it’s insulting to the person you just hired. And basically an excellent way to demotivate the person you invested so much time in finding.

So much of what is written about Apple these days is just horseshit meant to draw flies. And it makes me sad that somebody had to clean up after that particular pile.

Touring by yourself →

Dalton Caldwell after watching Phil Elvrum perform his solo act:

Going “indie” is clearly not for everyone, but I have the utmost respect for the people that are able and willing to do it.

Read the whole story of how Dalton arrived at that thought. It’s such a wonderful reminder of the courage people must summon to venture out on their own. I immediately sent this article to a friend who recently left Apple to start her own business. Just seemed an appropriate way to tell her how much I respect what she’s doing.

Power users vs. empowered users →

Rene Ritchie on the tension between the traditional desktop and the new world of touch:

When the iPad was announced, a friend and former colleague of mine lamented it as the death-knell of powerful, open computing. I welcomed it as the death-knell of me providing tech support for every relative and neighbor who walked into a Best Buy and walked out with a beige box of mystery and pain. Turns out, we were both right.

And this:

And that was Apple’s plan. It’s always been their plan. From Apple II to Mac to iPad to Siri or whatever’s next, Apple has relentlessly pushed form factor and interface towards the mainstream.

Don’t know how I missed this article last week, especially with that perfectly catchy title. Rene totally gets it. That was our plan. And we came to terms with the bargain that made it.

They’ll pry the Mac from my cold, dead hands, but I’m a geek. The good news for me and other power users? That Mac is not going away anytime soon. Plus, now we have an even better solution to recommend to everyone else. Nothing but upside since we can enjoy it too.

By the way, the support war stories within the article are great — the anecdotes aren’t just anecdotal. As I mentioned to Rene earlier today, we’ve all been there with friends and relatives.

Why I retired from Apple

Today is the one year anniversary of my last day at Apple. It’s Sunday now but it was a Friday back then. And that evening I was given a very warm sendoff by my crew and many others at The Fruit Company.

Several folks on the Safari and WebKit teams produced a video in order to more thoroughly embarrass me. Which didn’t work because I’m beyond embarrassment. But the experience was great. I loved it.

My wife and son joined me for the going-away party. I think it was a shock to my son to see how I was regarded at work. Of course, that didn’t mean he started respecting me at home but, hey, a man can dream.

Seeing all those folks that night — that last week, really — was so bittersweet. I still don’t know how many I’ll ever see again. If there’s one thing I miss most about Apple, it’s the people. They were always the best thing about the place.

Not that Apple was some kind of gulag, mind you. You got the chance to change the world there. And you did. Your work mattered. It was interesting and, as they say, challenging. Certainly no shortage of it either.

It’s Sunday night as I publish this. That means it’s a working night for most managers at Apple. Even more so for Director-level personnel like I was.

Why? Our veeps had to be ready for the big status and planning meeting on Monday morning and we had to be available to help them. Steve always had the meeting then. I assume to set the tone and the pace for the week. Good idea, really. I doubt that’s changed now.

It’s not like other folks there weren’t working nights and weekends too. Many of my engineers worked longer and harder than I did. It was a busy place. By our choice.

But I don’t miss any of the work.

What surprised me after I retired was not missing the control and authority I had, such as it was. My ego remained intact. And I didn’t feel diminished. I woke up February 18 without any minions. Of course, I woke up that morning without any obligations either.

Why did I retire? People often ask me that. When I’m feeling boorish I just say, “Because I could.”

The truth is I was done.

I accomplished far more there than I expected. And I had no dreams of greater power and glory, if such a thing were available to me. When I looked inside myself, I didn’t see ambition or even drive to continue. I’m not sure how that happened. Maybe I was just tired.

And when you’re responsible for so many people, you owe them more than that. Better to step aside and let others have their turn. So I did.

It’s not like I wanted to leave and start my own software business. People always assume I have some massive entrepreneurial spirit. But I’m not like that at all. At my core, I’m just a tinkerer who got very lucky.

I refer to myself here as a “recovering programmer.” That simply means I no longer pursue engineering as a primary activity. And that I’m self aware enough to know that I’ll occasionally fall off the wagon and start coding again.

But if there’s anything I do aspire to, it’s being a writer. So far it’s been hit and miss with maintaining that activity. It turns out writing is even harder than engineering. Who knew?

Even though my first month of floundering around, thick-fingered on this blog got me over a half million page views, I’m not vain enough to think it’s my snappy prose that drew the visitors. It was the subject matter.

No matter how hard I try, I can’t ever really leave Apple.

It’s not a toomah

Some of you inquired online as to whether I continue to exist as a going concern. I can understand your curiosity since I’ve been absent here and mostly absent elsewhere for more than a week. Let me assure you that I do still live, albeit in a rather feverish and mucus-filled fashion.

As near as I can tell, I don’t have influenza. That’s a very serious disease. That last time I caught the flu — the real it-can-kill-your-ass flu — I went to the hospital for several days. Thankfully, I don’t remember much from the whole ordeal. That was back in the 90s.

What I possess now is an uncommon cold. I call it that because a more humble infection just annoys for two or three days. This one knocked me flat for more than twice that and won’t seem to let its foot up off my chest without draining me of strength and will first.

At least it started out as a cold. While not the flu and not life-threatening, it’s certainly moved on to more than just occupying my nasal cavities and now appears to building a summer home in the more southern parts of my body.

So it might as well be the flu. Even if it’s more prosaic.

The worse part of this experience is that not only am I not writing or programming, but I have little desire to even amuse myself with the vast library of movies, television programs and books I long ago prepared for just such a sickness.

So I sleep. And drink water. Lots and lots of water. Whole bottles of water. Which, besides the cold itself, is why I can’t remain sleeping for very long. Sooner, rather than later, I need to return the deposit on those beverages. Which means my record is about three hours of sleep at one time. And the average is half that.

My advice? Don’t get sick this winter. There are some annoying creatures out there besides the flu. One of those jerks is staying with me now.

Lesson learned from a performance scare

Last Wednesday I posted this on Twitter and App.net:

It’s taking almost two seconds to completely regenerate all content on donmelton.com using Magneto. I need to speed that up.

As I’ve mentioned before, Magneto is a static site generator. It’s a tool I wrote myself, and what I use to create all the HTML, CSS, JavaScript, etc. that you’re reading now. The entire website is generated from this online source.

Some might think I was humble-bragging about Magneto’s speed, but I only had 42 posts here at the time and just under two seconds to generate that seemed a bit slothful to me.

Of course, I didn’t do anything about it right away — there are days when I make Jeff Lebowski look vigorous — but I did think on the problem for awhile. And then I was distracted by pictures of cats and bacon on Reddit. You know how it is.

But two days later, John Gruber made these two posts on Twitter:

Just fixed a punctuation typo in the first-ever DF Linked List entry, from 25 June 2004: df4.us/73

That was 18,989 items ago.

Stunning — not the typo, everyone makes those — but that he’s made over 18,989 posts to his website. That is truly impressive. Of course, he’s been doing it for over 10 years so you would expect him to have written maybe one or two.

Rather than make the “Finally!” joke like everyone else about him fixing the typo, I replied to John asking, “How long does it take to regenerate the site with Movable Type?” And he responded, “Good question. It’s been years since I’ve done a site-wide rebuild.”

And that… Got. Me. Thinking.

A site-wide rebuild? I do that here every time I make a single change. It’s just easier that way — no dependencies to calculate. And my website is still small so it makes sense, even if it’s taking almost two seconds right now. If Gruber doesn’t want to do a rebuild with Movable Type, maybe this is a bad approach. How long would it take Magneto to generate a website with 18,989 posts? Hmmm, how long?

So, I put down my White Russian, hung up my bathrobe, and got to work figuring that out.

First thing to do was fake up a shitload of posts. My usual approach to problems like this is a single and convoluted line of shell and sed script, typed and executed directly on the command line in Terminal.app. It’s gruesome, but I’m a hack and that gets the job done.

My not-a-real-script started copying my existing posts and then replacing their published timestamps. A minute into the process and I realized my outside loop counter was wrong and I would wind up with more that 20,000 posts. Oh well, it would just be a better test. And Gruber’s total number of posts was probably closer to that anyway.

Then life interrupted. Not just more pictures of cats and bacon this time, but actual family interaction. For several hours, too.

When I managed to get back to my precious iMac, it was late thirty and I was tired. I kicked off Magneto and started it chugging on 20,394 posts, along with all of the other content already included in the website.

And I waited. Five minutes into staring at Terminal.app I remembered there’s no way to tell which post Magneto was processing because everything happens in memory before it writes anything out to disk. This isn’t as stupid, wasteful, and uncommunicative as it sounds. That behavior was, in fact, by design.

I yawned and thought, screw it, this is taking too long. Something’s wrong, but I’ll just let it keep running and check the results in the morning. Off to bed.

Saturday morning.

Made my coffee and started reading the news. Halfway into my usual RSS feeds when the caffeine finally loosened the knot in my frontal lobes — I remembered. Say, what about that test I was running last night?

I switched over to Terminal.app. Magneto was done. Oh, how nice. But how long did that take? I looked at the console spew. Hmmm, 24,415.52 seconds — a lot. Lesse, that’s… trying to do the math in my head… switching to Calculator.app because I can’t count that high… that’s … MOTHER OF GOD?!? That’s 6 hours and 47 minutes! What the hell was Magneto doing?

I thought, there goes my performance bona fides. My reputation on Safari is shot. They’ll ask for my union card back.

So, I set to work figuring out what went wrong.

The first task was to measure. Folks online pointed me at ruby-prof, a great little code profiler for Ruby. I reduced the number of posts in the test to a thousand or so since I couldn’t stand to iterate all weekend on the problem.

And then it was lather, rinse and repeat with ruby-prof, while also adjusting the number of posts in the test.

It turns out, the problem was not with Magneto. I made an even stupider mistake — I trusted the tool to protect me and didn’t pay attention to how I was misusing it.

Now, Magneto is very simple. It’s devoid of features, really. It’s not even “blog aware” like some other systems. It requires you to write a site controller script, plugins and templates to tell it exactly how to generate blog posts, index pages, RSS feeds, etc. And you get to make all the policy — that’s its power.

When I wrote Magneto, I generated a thousand pages with Magneto before I released it just to make sure it didn’t have any glaring performance issues. It scaled well. Of course, I tested other things, too. And it was plenty speedy with a simple site controller script. A. Simple. Script.

However, I was much more cavalier with my own site controller script, plugins and templates that I wrote to use here. And I made the cardinal sin of never measuring the performance implications of that sloppy-ass code.

I was right when I thought almost two seconds was too long to generate 42 posts. That’s about .03 seconds per post. I thought I could do better on my hefty iMac.

But taking 6 hours and 47 minutes to generate 20,394 means it was taking 1.2 seconds per post. That’s not linear — not even close.

Thank god for ruby-prof. It took awhile, but I was able to zero in on the problems. Yes, it was more than one. But they were all the same issue — not caching the unchanging result of a slow subroutine that was repeated in every post.

All these rookie mistakes were in one of my plugins and one of my templates. None of it in Magneto itself. And after some judicious use of static variables and other grotesque hacks, I was able to improve things a tiny, tiny bit.

Now it takes only 5 minutes and 19 seconds to generate 20,394 posts. That’s a much more linear .016 seconds per post. And a 76.576x improvement overall — that’s not a percent improvement, that’s 76.576 times faster.

Yes, I was that stupid.

I’m sure I can find more improvements, but it’s unlikely that I’ll be able to generate over twenty thousand posts in less than 10 seconds without a massive upgrade in hardware. And 10 seconds is about the most I ever want to wait for something like that. Right now, 10 seconds would be about one thousand posts.

No, if I ever approach the proficiency and productivity of John Gruber, then for daily use I’ll need to extend Magneto or my site controller script to only rebuild what’s changed and cache what hasn’t.

In the meantime, I’ll be measuring more up front. Maybe I’ll even write about how I made a similar mistake with Safari and the other lessons we all learned from that.

Obama’s fighting words →

Conservative writer David Frum on President Barack Obama’s second inaugural address:

In the past, President Obama has spoken of the divisions between Republicans and Democrats as fundamentally unreal, subject to compromise and reconciliation by leaders of goodwill. Not this time. This time, he called his opponents out. Yes, many of them deserve it. Yet that does not make his words any less aggressive. Quite the contrary, actually:

We cannot mistake absolutism for principle, or substitute spectacle for politics, or treat name-calling as reasoned debate.

Those are not words intended to invite Republican cooperation, but to slam Republican non-cooperation; not to conciliate, but to confront. They were fighting words, and they portend a second term in which the president is fully as willing to take the fight to his opponents as they have been to take the fight to him.

Frum is at least more reasoned in his reaction compared to the faux indignation of other Republicans. Like schoolyard bullies, they just can’t believe the skinny kid wants his lunch money back now.

I don’t think President Obama is picking a fight. But it’s clear he’s not going to back away from one anymore.

15 things Kurt Vonnegut said better than anyone else ever has or will →

During a conversation on App.net today, Dalton Caldwell linked to this article to source a snippet from Kurt Vonnegut he had just posted.

Today isn’t the anniversary of anything significant in Vonnegut’s life. At least, not that I know of. And this article dates back to 2007, the year we were all robbed of his acerbic wit. But I never saw it before.

And I’m fascinated by the selection and exegesis of each of these quotations. My favorite of the fifteen is this koan from “Cat’s Cradle” regarding the curse of sentience:

Tiger got to hunt, bird got to fly; Man got to sit and wonder, “Why, why, why?” Tiger got to sleep, bird got to land; Man got to tell himself he understand.

Dalton Caldwell liked that one too. So much so, it was the very first post he made — and only the third anyone ever made — to App.net. Good start, sir.

So it goes.

In her final days as Commander of the International Space Station, Sunita Williams of NASA recorded an extensive tour of the orbital laboratory and downlinked the video on Nov. 18, just hours before she, cosmonaut Yuri Malenchenko and Flight Engineer Aki Hoshide of the Japan Aerospace Exploration Agency departed in their Soyuz TMA-05M spacecraft for a landing on the steppe of Kazakhstan. The tour includes scenes of each of the station’s modules and research facilities with a running narrative by Williams of the work that has taken place and which is ongoing aboard the orbital outpost.

After viewing this, I feel compelled to paraphrase the tagline from “Superman,” “You’ll believe a woman can fly.” And I do. She has the best job ever — superhero.

I can’t recall a longer look at non-fictional humans moving through a microgravity environment. Can you? Even with my Internet-depleted attention span, I couldn’t look away from this 25-minute video — watched the whole thing in one sitting. I bet you will too.

Via Andrew Sullivan.

Woody Allen on hypochondria →

Differentiating himself from a common hypochondriac, Woody Allen writes:

What I am is an alarmist, which is in the same ballpark as the hypochondriac or, should I say, the same emergency room. Still there is a fundamental difference. I don’t experience imaginary maladies — my maladies are real.

You can’t help but hear his voice in your head as your read the essay. It’s old schtick but it’s classic schtick. Good to see him writing something besides screenplays these days. More, please.

Via Mark Evanier.

Based on questions I keep getting on Twitter, App.net and elsewhere, let me update you on Penny, our Labrador Retriever, who stopped eating recently. Thank you all for your concern and my apologies for not posting this sooner. Penny has fully recovered. She’s no longer on an appetite stimulant and is eating normally — which means everything she can find. And we hope she keeps doing that for a long time.

A record hang gliding ride on the Texas wind →

A neat mixed media presentation by The New York Times to clearly explain what Jonny Durand and Dustin Martin did and how they did it.1 Of course, that was 475 miles and they still didn’t make it out of Texas.

Made me wonder how long it’s been since I took my first flight — a powered one — in the aborted pursuit of a private pilot license. Had to consult my log book. Turns out it was six years ago — yesterday. D’oh! Didn’t even celebrate.

What I should really do is haul my ass back to the airport and into that little Citabria again to finish getting my ticket.

  1. Another reason print is dead. Or dying. You know what I mean.

Suicide reporting on the Internet →

Charlie Lloyd on the response to the news of Aaron Swartz’s suicide:

You can tell people who’ve been near suicide before from those who haven’t. The ones for whom this is new are fitting it to a narrative. It’s the compassionate genius who was a little too good, or the activist hounded down by the government, or why would such a promising and beloved young person do something like this, or gosh there seems to be a link between creativity and mental illness, or some other well-meaning script.

Those of us for whom this brings back memories are, I think, a little less eager to see it as something that can be usefully explained, at least not by us.

There’s a collective sadness and anger on the Internet today. I have no idea if Aaron’s treatment by our government here in the United States provoked his action. Others can sort that out.

I did not know the man, but I did know his work — not just the breadth and depth of technologies he created and influenced, but his writing and activism.

Until I read Charlie’s article, I didn’t understand my own melancholy today. Years ago, one of my co-workers and friends took his own life. At that time, I wanted to punish myself for not seeing that act coming, and then for not understanding it after the fact. The thing is, neither reaction helps. Our responsibility is to help make sure it never happens to anyone else again.

Via too many folks on Twitter and App.net for me to remember where I saw this first.

Safari is released to the world

During the early development of Safari, I didn’t just worry about leaking our secret project through Apple’s IP address or our browser’s user agent string. It also concerned me that curious gawkers on the outside would notice who I was hiring at Apple.

Other than a bit part in a documentary about Netscape that aired on PBS, I wasn’t known to anyone but a few dozen other geeks in The Valley. Of course, several of those folks were aware I was now at Apple and working on some project I wouldn’t say anything about. And it doesn’t take many people in this town to snowball a bit of idle speculation.

I found out later that Andy Hertzfeld, an Apple veteran who I worked with at Eazel, had figured it all out by the time I showed up for my first day to work on the browser on June 25, 2001. Andy was very insightful that way. But thankfully he was also quiet about it at the time.

Hiring Darin Adler, also ex-Apple and ex-Eazel, in the Spring of 2002 was likely visible to others in the industry since he was much more well known than me. But because Darin had never worked on a dedicated Web browser like I had, no one made the connection.

However, when I hired Dave Hyatt in July 2002, then guesses started flying fast.

While at Netscape, Dave built the Chimera (now known as Camino) browser for Mac OS X and co-created the project that would later become Firefox. Both of these applications were based on the Mozilla Gecko layout engine on which Dave also worked. He was a true celebrity in the Web browser world, having his hands in just about every Mozilla project.

So, during the Summer of 2002, several bloggers and tech websites speculated that Dave must be bringing Chimera to the Mac. Except that Chimera was already a Mac application and didn’t need to be ported. So what the hell was Dave doing at Apple? Building another Gecko-based Mac browser? No one knew. And none of this made much sense. Which is probably why the rumors subsided so quickly.

But people would remember all of this when Safari debuted at Macworld in San Francisco on January 7, 2003. And at least one of them would remember it at full volume while Steve Jobs was on stage making that announcement.


Until I watched that video I found and posted of the Macworld keynote, I had completely forgotten what else was announced that day. Which is pretty sad considering I saw Steve rehearse the whole thing at least four times.

But you have to realize I was totally focused on Safari. And Scott Forstall, my boss, wanted me at those rehearsals in case something went wrong with it.

There’s nothing that can fill your underwear faster than seeing your product fail during a Steve Jobs demo.

One of my concerns at the time was network reliability. So, I brought Ken Kocienda, the first Safari engineer, with me to troubleshoot since he wrote so much of our networking code. If necessary, Ken could also diagnose and duct tape any other part of Safari too. He coined one of our team aphorisms, “If it doesn’t fit, you’re not shoving hard enough.”

Ken and I started at Apple on the same day so, technically, he’s the only original Safari team member I didn’t hire. But because we both worked at Eazel together, I knew that Ken was a world-class propellor-head and insisted Forstall assign him to my team — essentially a requirement for me taking the job.

Most of the time during those rehearsals, Ken and I had nothing to do except sit in the then empty audience and watch The Master Presenter at work — crafting his keynote. What a privilege to be a spectator during that process. At Apple, we were actually all students, not just spectators. When I see other companies clumsily announce products these days, I realize again how much the rest of the world lost now that Steve is gone.

At one rehearsal, Safari hung during Steve’s demo — unable to load any content. Before my pants could load any of its own, Ken discovered the entire network connection had failed. Nothing we could do. The IT folks fixed the problem quickly and set up a redundant system. But I still worried that it might happen again when it really mattered.


On the day of actual keynote, only a few of us from the Safari team were in the audience. Employee passes are always limited at these events for obvious reasons. But we did have great seats, just a few rows from the front — you didn’t want to be too close in case something really went wrong.

Steve started the Safari presentation with, “So, buckle up.” And that’s what I wished I could do then — seatbelt myself down. Then he defined one of our product goals as, “Speed. Speed.” So, I tensed up. Not that I didn’t agree, of course. I just knew what was coming soon:

Demo time.

And for the entire six minutes and 32 seconds that Steve used Safari on stage, I don’t remember taking a single breath. I was thinking about that network failure during rehearsal and screaming inside my head, “Stay online, stay online!” We only had one chance to make a first impression.

Of course, Steve, Safari and the network performed flawlessly. I shouldn’t have worried.

Then it was back to slides and Steve talking about how we built it. “We based Safari on an HTML rendering engine that is open source.” And right then is when everybody else remembered all those rumors from the Summer about Dave Hyatt bringing Chimera to Apple.

But I chose the engine we used — with my team’s and my management chain’s support, of course — a year before Dave joined the project. Dave thought it was a great decision too, once he arrived. But that engine wasn’t Gecko, the code inside Chimera.

It was KHTML. Specifically KHTML and KJS — the code inside KDE’s Konqueror Web browser on Linux. After the keynote was over, I sent this email to the KDE team to thank them and introduce ourselves. I did it right from where I was sitting too, once they turned the WiFi back on.

You can argue whether KHTML was the right decision — go ahead, after 10 years it doesn’t faze me anymore. I’ll detail my reasons in a later post. Spoiler alert: I don’t hate Gecko.

But back to Steve’s presentation.

Everyone was clapping that Apple embraced open source. Happy, happy, happy. And they were just certain what was coming next. Then Steve moved a new slide onto the screen. With only one word, “KHTML” — six-foot-high white letters on a blue background.

If you listen to that video I posted, notice that no one applauds here. Why? I’m guessing confusion and complete lack of recognition.

What you also can’t hear on the video is someone about 15 to 20 rows behind where we were sitting — obviously expecting the word “Gecko” up there — shout at what seemed like the top of his lungs:

“WHAT THE FUCK!?”

KHTML may have been a bigger surprise than Apple doing a browser at all. And that moment was glorious. We had punk’d the entire crowd.

Older dogs and newer tricks →

Gary Marcus on the widespread view called the “critical-period effect”:

The critical-period effect is the idea that you can’t do certain things — like learn a language, or learn an instrument — unless you start early in life. It’s a discouraging thought for anyone past adolescence. But, recently, the evidence for this idea had started to unwind.

He goes to detail some of the new evidence against that idea and his own adventures in learning guitar at the age of forty.

I’ve always believed — not just hoped — that you can continue learning new things when you’re an adult. Not just information and facts, but real skills — behaviors that are normally envied as talents.

I know this is true because I’ve been doing it my whole adult life. And I plan on learning new things until I run out of air to breathe. I’m not saying it’s easy when you’re my age. But don’t tell me it’s impossible.

Via Andrew Sullivan.

Ignore that bogus RSS feed entry in Google Reader

At 4:08 this afternoon, the Google Reader RSS feed aggregator decided to insert a bogus entry into their version of my RSS feed. My apologies, but I have no idea why they did this.

The bogus entry has the same title as one of my previous posts, but it doesn’t have any content.

If you don’t subscribe to my RSS feed using Google, then this problem doesn’t affect you.

My entire website, including the RSS feed, is static. That means all the HTML, XML, CSS, etc. here is just simple text files. I’ve verified that the RSS feed file on my ISP’s Web server does not contain this bogus entry.

I’m actually writing this in hope that a new post on my website and an new entry in my RSS feed will somehow reset Google’s whacky-ass view of the universe — at least that part of the universe where my feed is located.

Please let me know if you see this problem again.