Sometimes it’s not so Good when People are Happy to see You

“There he is!” both my fellow engineers said as I walked into the office this morning. I knew right away that this was not going to be the Monday I expected it to be.

“The database is down,” my boss said before I reached my chair. “Totally dead.”

“Ah, shit,” I replied, dropping my backpack and logging in. I typed a few commands so my tools were pointing at the right place, then started to check the database cluster.

It looked fine, humming away quietly to itself.

I checked the services that allow our software running elsewhere to connect to the database. All the stuff we controlled looked perfectly normal. That wasn’t a surprise; it would take active intervention to break them.

Yet, from the outside, those services were not responding. Something was definitely wrong, but it was not something our group had any control over.

As I was poking and prodding at the system, my boss was speaking behind me. “Maybe you could document some troubleshooting tips?” he asked. “I got as far as the init command, then I had no idea what to do.”

“I can write down some basics,” I said, too wrapped up in my own troubleshooting world to be polite, “but it’s going to assume you have a basic working knowledge of the tools.” I’d been hinting for a while that maybe he should get up to speed on the stuff. Fortunately my boss finds politeness to be inferior to directness. He’s an engineer.

After several minutes confirming that there was nothing I could do, I sent an urgent email to the list where the keepers of the infrastructure communicate. “All our systems are broken!” I said.

Someone else jumped in with more info, including the fact that he had detected the problem long before, while I was commuting. Apparently it had not occurred to him to notify anyone.

The problem affected a lot of people. There was much hurt. I can’t believe that while I was traveling to work and the system went to hell, no one else had bothered to mention it in the regular communication channels, from either the consumer or provider side.

After a while, things worked again, then stopped working, and finally started working for realsies. Eight hours after the problem started, and seven hours after it was formally recognized, the “it’s fixed” message came out, but by then we had been operating normally for several hours.

By moving our stuff to systems run by others, we made an assumption that those others are experts at running systems, and they could run things well enough that we could turn our own efforts into making new services. It’s an economically parsimonious idea.

But those systems have to work. When they don’t, I’m the one that gets the stink-eye in my department. Or the all-too-happy greeting.


And Now We Wait

I have been working on a big project for the better part of a year now. It is a massive overhaul of the systems my department uses in their daily grind. Over time, those systems have become downright awful, and much of the awfulness was beyond our ability to address. A key part of the system was run by our IT department.

That system was never very good, but as our needs changed, the system… stayed the same. Any change would cost hundreds of thousands of funny-money dollars and take a year just to find out that it was going to be another year, and another bucket of funny-money. It’s budget-dollars, not real dollars, but spending on that system would take budget-dollars away from other projects.

This antique system left the rest of our tools making terrible compromises so that the missing functionality could be wedged in. It was time for a change, and I set out to replace that system we didn’t control with a better one that we did.

Hand in hand with that, is that my department’s servers are very, very old in server years. My employer, meanwhile, has created new services so departments like ours don’t need to maintain our own hardware. So this change became not just a massive software update, but a major infrastructure upgrade as well.

I underestimated just how much our applications had been warped to accommodate the crazy compromises. Unwarping them was worthwhile, but time-consuming, and none of these applications had been built with testing in mind. On top of that, the new infrastructure placed its own limits on the applications that required further refactoring.

The goal: to pull the tablecloth off the table without disturbing the dishes, then to slip in a new tablecloth.

For the first few months I worked alone, but as the Big Day approached (and receded), the rest of my team got increasingly involved. I managed to hand off the DNS and server config stuff to my boss just in the nick of time, before the complexity of that exploded in my face.

Not totally alone; I must amend. There were people in many other groups — the people creating the pretty dang awesome new infrastructure tools we are using, who went out of their way to accommodate me and help me along, even though my group is tiny in the scheme of things.

I mentioned the Big Day. That’s not quite accurate. Much like “Happy Hour from 3-7 p.m.”, the Big Day started three hours ago and lasts through the weekend. Right now a script is running, a complex bit of software I have devoted hundreds of hours to, that pulls the data out of the old databases, reconciles an incredible number of different ways the data can disagree, patches the Definitive Data together and houses them in their new, shiny home. When the script is done tomorrow morning, it will never be run again. It will be archived as a historical curiosity and that’s that.

So this evening my boss put all our systems on hold, and we began the migration. After the first giddy flurry of excitement as we all worked to make sure we were ready, I started my script. “And now we wait,” I wrote to the team.


Silicon Valley’s Heartbeat

Today on the way to work I saw three brand-new Teslas, and an Audi R8 (Audi’s V-10 powered street-legal race car) with temporary plates. On the way home I saw another new R8, and a bright yellow McLaren fresh from the dealership. Did you know that Maserati has an SUV (SuV)? I didn’t until this afternoon. And of course there were more new Teslas.

At one point on the way to work I was peering through the windows of the Tesla Model M in front of me to see if the Tesla Model X in front of it was also brand-new.

The sales team up the highway at Tesla Central must salivate over April 16th.

In mid-April and in mid-October, employee stock grants at Apple vest. I assume Google has a similar schedule, along with all the other large tech companies in the area. Including, I imagine, Tesla. (Note: I couldn’t come up with the right Facebook wisecrack to put here.)

Twice a year, there is a gush of cash from the tech companies, and with it a surge in spending on real estate and fancy cars. It’s probably good to be in sales here; you can go on vacation during the months of May, June, November, and December, and still be around to glut when that mighty money heart pumps once more.

I am now part of this heartbeat as well, but not to the frivolous-quarter-million-dollar-car level. For me the stock vesting is a windfall to invest, so that I might one day not have to work at all. This year the investment also helps family members, which makes it double-cool. Alas, for me there will be no Audi R8 Spyder. It’s a mid-engine convertible that can do 150 as easily as I can sneeze, but it looks a little butt-heavy to me anyway.


The Leaving-for-Work Song, Improved

Most of us who grew up in these United States are familiar with the song, “Head, Shoulders, Knees and Toes”.

The Official Sweetie of MR&HBI and I have a version of the song we sing when I’m on my way out the door to go to work:

Keys, wallet, badge and phone (badge and phone),
Keys, wallet, badge and phone (badge and phone),
Lunch and computer and sunglasses and hat,
Keys, wallet, badge and phone! (badge and phone)

Rather than do the calisthenics of the original tune, I pat each pocket or gesture to the location of each item. It’s a good system for the memory-impaired. After a recent bike commute, as I changed into my work clothes at the office, the song was modified slightly:

Keys, wallet, badge and phone (and underwear),
Keys, wallet, badge and phone (and underwear),
Lunch and computer and sunglasses and hat,
Keys, wallet, badge and phone! (and underweeeeeeaaaar)

Jazz hands are optional for the last phrase.


Help Wanted

Anybody know a kickass Web engineer looking for work? I’m happy to discuss specific technologies and whatnot with anyone who might be interested.

I’m back!

Well, more or less. The months-long grind at work is over, culminating with a swift kick to the professional groin as I missed my deadline despite working every waking hour (after a while I enforced a five-hours-of-sleep rule) for a couple of months, and even before that at least ten hours a day, weekends included, since January.

My apologies to those I’ve snubbed in the last while, especially those passing birthday wishes my direction. What I had planned as a glorious celebration of my half-century on this planet turned out to be a really shitty day.

I’ve taken a little time off from work since then, to get my feet under me, to get my health habits restored, and to generally feel human again. I still dream about the project, and find myself lying in the early mornings going through the solutions to some of the pending tasks on a project that no longer exists. It was so very close to being so very very cool.

The last few days I’ve managed to get a little bit of creative juice flowing, and perhaps soon I’ll be ready to write that retrospective on the last fifty years. April 2th (rhymes with ‘tooth’) has come and gone, but still deserves some observation. In the meantime I’ve got The Monster Within, which by God I’m going to see in book form this year if I have to publish it myself.

Next week I might be ready for human interaction again, so those I’ve been ignoring should be hearing from me soon. Thanks for your patience!


Parking Postits

I’d like to have a set of post-it-style notes printed up, with a variety of messages for a variety of parking situations. Some of the messages might include:

  • By what definition could this vehicle possibly be considered a compact?
  • This is a nice car! It would be a shame if it was damaged because you never learned to park. Just sayin’.
  • One slot per car, asshole.
  • I don’t care if the Amazon Kindle team is packed into way too small a space. That doesn’t mean you can use our parking garage.

The last one is fairly specific; and honestly if I were in charge I’d cut a deal with Amazon and lease them bottom level of our garage. The others, though, I think you can appreciate.


It’s Beer-Blogging Thursday, Dammit!

I try to set aside an evening each week to go to a bar, relax, and write up a couple of blog episodes. Thing is, I’ve been completely crushed at work (it’s the end of the fiscal year, and I work in the finance department). Finding time to sleep has been a challenge for a couple of stretches lately.

Yesterday my team released not one, but two software tools. A big day! One of those tools is perennially caught in the confusion of fiscal-year shifts, and so today was about last-minute fixes.

Still, I got out of work at a reasonable time, and drove through unreasonable traffic to reach one of my chosen beer-blogging havens. (They’re playing AmeriFootball on a Thursday. Huh.) Anyway, I carved out some space and set up the ol’ bloggin’ box… and proceeded to extend the custom-search feature in one of my work projects. It’s an elegant solution to a problem that had been haunting me, so it’s by no means time wasted.

But holy heck, here I am, at a time I’ve designated for doing pretty much anything but work, and I’m doing work. My head is completely over on the analytical side of my cranium, to the point that I’ve been dreaming about database queries. I’ve gotta unshackle the creative neurons, the ones that never fire the same way twice. Get out the heart-shock paddles! I need to reset my brain!


My New Cube

Welp, it’s official, I’m a salaried employee of Apple. It’s not that big a change from being a contractor; I’ll be doing the same work as before.

While I was traveling my department moved to a new building, so when I got to my new cube for the first time, this is what I saw:


And yes, I do get a discount on stuff, and yes, they assume I’ll be buying for friends and family as well. So if you need a Mac system or an iPod (no iPads at this time), let me know.


Working With a Screen-Toucher

Yes, It’s true. One of the people I work with touches his computer monitor with his fingers. I never suspected that a place like Apple could harbor such people.

Today we were in a meeting discussing our project. He’s doing the database stuff; I’m concentrating on the presentation layer (see my previous rants about HTML). We were sitting side-by-side, each with his laptop open. On his screen was a dump of the data structure he was sending over to my code. “Here is the list of …”

Actually, I’m not sure what he said after that. I was staring in horror at the end of his finger, where it was pressed firmly against the surface of his screen. “Data list value array,” my co-worker said. I heard none of it. Here’s what I was thinking: Fingerprints. Photons baffled and confused. Acidic oils burning through the surface. Pixels, suffocating, twisting in agony. His screen was covered in fingerprints, the oils from countless screen-touchings built up into a layer that my eyes could no longer focus past.

“Will that work?” he asked.

“Um…” I replied. I wondered what it was that he was talking about. I wondered how he could work when his screen was—

His hand shot out, left index finger extended, directly at my screen. My lovely, lovely, screen, only three weeks out of the box — pristine, innocent of the bruising touch of errant digits. Nooooooooooo!

Perhaps it was my sharp intake of breath that interrupted the course of his rampaging digit. Perhaps he’s already aware that while touching one’s own screen is one thing, touching the screen of another is quite something else. The tip of his finger stopped just above the surface of my virgin monitor and hovered there, twitching, as he described something about something. There was a corner of my mind sending up a flare that perhaps the actual words that my co-worker spoke might be important. The signal was lost among the klaxons and Emergency Broadcast System alerts that demanded that every neuron be devoted to ongoing analysis of the motion of The Finger. The Homeland Security lobe of my brain was altering the threat level meter a dozen times per second, adjusting duct tape and adrenaline with every minute vibration of the chemical-weapon-bearing heathen on the doorstep. The threat level never dipped below ‘orange’.

After two draining seconds the threat receded. My screen, even now, does not understand the horror that nearly came to pass. (Or does it? My laptop shares an intimate network with thousands of others. Perhaps there are legends and stories that pass between them. Perhaps those other computers smile to themselves at the excited puppylike banter of my computer — “Wow! I’m running MySQL server!” — while the grizzled veterans roll their eyes. Meanwhile, the old-timers quietly admire the stoicism of my co-worker’s laptop. “Someone did that to me, I’d just kernel panic,” the headless X-serve in its air-conditioned enclosure says.)

Meanwhile, my co-worker thinks he’s told me stuff. I was sitting right there and looking where he pointed, so I must have been paying attention. I’m reasonably confident that he was speaking, I think I would have noticed if his voice stopped. Probably. He isn’t talking now, however, so he must be waiting for me to say something.

“I’ll be working on that next,” I say. “Can you send me a summary in an email?”


The Nerf of These People!

On my second day of work, at 3:38 pm, the first shot was fired. Within moments my co-workers were bristling with sophisticated foam-dart-launching technology, and my first Nerf battle was underway. Someone loaned me a long, bolt-action sniper “rifle” with a magazine that held about ten darts. I didn’t dive into the thick of the conflict, but I did take opportune shots when targets presented themselves. I also experimented with bouncing shots off the ceiling, trying to hit my coworkers from above. That wasn’t very successful.

One thing was clear: If I intend to survive among Apple’s finance help line employees, I’d better start packing heat. Plastic-tipped foam heat, to be precise.

Toward that end the light of my life visited our local Target, where she discovered just how elaborate the Nerf arsenal has become. Not knowing what my co-workers were packing, she didn’t want me to have some completely over-the-top weapon if no one else was that crazy. So, she bought a pistol that fired suction-cup darts (which I have dubbed “hollow points”) and had a cool little laser-like sight mechanism.

My sweetie brought it home and, much like a ten-year-old on Christmas morning, I liberated the weapon from the confines of its packaging and checked it out.

The gun used a pneumatic plunger driven by a spring to propel the darts. Unfortunately, the plunger was not very good a plunging, and the darts barely made it out the end of the gun. I was thwarted by plastic/pneumatic impotence. Sad times.

My ever-supportive sweetie has made another trip to Target to trade in The Little Pistol that Couldn’t for another model. I have assured her that it will not be possible to upstage my co-workers. “Large magazine, short barrel,” I have told her.

When I get home this evening my new cubicle warfare equipment might be waiting for me. What will it be like? I can’t wait!


First Day of Work

I went to bed last night almost-employed, knowing that my start date would be soon. This morning I was awakened by the phone ringing, and learned that today was my first day. I got my act together, shoveled down a bowl of cereal, brushed my teeth and off I went.

I am now an Apple employee. Well, a contract employee working at Apple. I have my own cubicle, a phone (hooked up tomorrow), a laptop and big monitor, and a badge that gets me into buildings I couldn’t get into before. I’ll be putting together tools to help their Finance department to finance stuff more easily. On the side I’ll throw the WebKit team some code now and then.

I am told that tomorrow afternoon I may regret not having a nerf gun.


Birds, Hands, and Bushes

Less than a week ago I was uncertain where I might be picking up enough work to pay rent. I wasn’t too worried, to be honest, but there was a lot of unknown. Monday I was contacted by my good friends at TEK Systems, a contract placement firm, wondering if I would be interested in a job at Apple. I responded with an enthusiastic affirmative. From all I’ve heard, Apple is a great place to work.

Karen and Brian at TEK Systems set up an interview for me on Tuesday. Brian met me outside the building, took care of introductions, and I met with the woman who could potentially become my manager. The job was interesting; doing rapid development of Web-based tools for Apple’s financial group. I kicked butt in that interview, and left feeling that I’d probably landed myself a job in the land of Jobs. I got home and kicked off my shoes and called my TEK pals and told them I thought it had gone well, and that if Apple offered the position TEK Systems could accept on my behalf.

Later that evening, I checked my email. There was a message there from a recruiter at Apple, saying that the WebKit group had seen this page and wondered if I’d be interested in a full-time position as a WebKit developer. Cool! I’d be doing what I’d already been doing only now getting paid for it.

If only one of the jobs had been at Apple, my decision would have been easy. I mean, what are the odds of getting interest from another group at the same company on the same day, anyway?

So then I had a bit of a dilemma. On the one hand I had hit it off really well with the boss in the first interview, on the other hand the second opportunity was doing something I feel passionate about in an environment where I could grow a lot more personally. I haven’t had anyone to review my code in a long time. I wrote back to the Apple recruiter that I would be interested and quickly contacted TEK Systems to tell them of the wrinkle.

Wednesday I spoke to one of the WebKit guys, who asked me a few programming questions but mainly just wanted to get a feel for whether he thought I would fit. I passed that hurdle, the next step was another more technical phone meeting with another member of the team, on Thursday. I told everyone involved that time was critical.

Somewhere in there — Wednesday evening, maybe? — the first Apple group formally said they wanted me to work for them, and they want to get started as soon as possible. (Although my potential future boss was totally cool about me talking to another part of Apple. She’s a believer, and will be happy for me no matter where I end up — as long as it’s at Apple.

Wednesday night I didn’t sleep much. I had an offer for a good job with some cool people. They wouldn’t wait forever for me to decide. “I could just take the job,” I thought. “I’ll have my foot in the door at Apple and the flexibility that contract employment allows. Plus, I can keep working on WebKit in my free time.” That last thought made up my mind. WebKit is where I want to be, but I’ll be plenty happy with either.

So, Thursday I cleared the second hurdle for getting a full-time WebKit job. After the technical phone interview the Apple recruiter called me and asked if I still wanted to move forward. “Yes,” I said, but told him that I had a standing offer elsewhere at Apple and I didn’t want to jerk them around too long. He understood, and thus there was Friday.

Friday. Wow. The interview process for a permanent job at Apple is not trivial. Eight meetings, two interviewers per meeting. Many of the sessions involved solving coding problems on a whiteboard, which can be stressful to say the least. Because the whole thing was put together on zero notice, there were no breaks between interviews. I sat in the conference room (other meetings were moved to accommodate this process), and they came at me two by two (although they were all very friendly about it).

How did I do? I’m not sure. There are certainly places I could have done better. My C++ skills are atrophied. But I’m pretty good at problem-solving and eventually I came up with good solutions to the problems they threw at me, which is the main thing they were testing me for. Ultimately, however, any programmer should be able to solve those problems. Did I distinguish myself enough from the pack to make them choose me?

The one meeting they couldn’t schedule on Friday was the one where all those people get together and decide wether to hire me. Monday morning, they tell me. Meanwhile I haven’t had direct contact with the other Manager who already offered me a job. She’s been waiting a few days now for my answer, and she needs someone in there quickly. How long will she wait? Hopefully at least until noon tomorrow.

Brief coda: TEK Systems has been great for me, and even though they don’t make any money if I take the full-time job they have been very supportive. I can strongly recommend the company, especially Karen Do, who is my primary contact there. She has been terrific.


A Job I’m Glad I Don’t Have

As you might be able to tell from the paucity of episodes here at MR&HBI, I’ve rejoined the ranks of the employed. My writing has taken a real beating, so today I’m going to spend some time writing about work. You don’t have to thank me, it’s what I do.

I don’t mind writing software; I’m pretty good at it and I can make pretty decent money doing it. I would much rather write code than dig ditches, for instance, and luckily for me the world has decided that making Web sites is worth more than roadside drainage. (Before you go and say, “that’s because it takes skill and training to make a Web site, but anyone could dig a ditch’, ask yourself – could you dig ditches for a living? If the economy were turned upside-down, that ditch-digger living in his nice house would say, ‘anyone can make a living sitting on their ass in front of a computer, but I dig ditches. I’m glad things are the way they are, is all I’m saying.)

My current job sends me dangerously into territory I don’t much like, however, and that’s the area known as Information Technology. It’s not really a good name for the job, which is about setting up computers and keeping them running. It’s less about making things and more about making things work.

Last night, for instance, I moved the Web product I’m working on to a different server and it didn’t work. Naturally I assumed the problem was in my code (it had worked on that server in the past), so it was several hours later that I discovered that for reasons I still don’t know, the server failed when it tried to compress very large messages. Just *poof* no response beyond the number 500 (something went wrong). To make things more fun the server was specifically set up to not write out a lot of error messages to its log. I turned off the compression feature (with a hammer) and things worked again. Five hours or so spent to add seven characters to a PHP file, to make things work the same way they already did on other servers. Welcome to the world of IT.

I think the original intention of the phrase information technology referred to the the information that would be stored, manipulated, and distributed by machines. What the I really stands for is the vast store of arcane crap you have to know to do that job well. What line of the php.ini file to modify if you want zlib output buffering and utf-8 character encoding. How to set up all the computers in an office to use a local domain name server first. That’s the information in IT.

The worst thing about having an IT job is this, however: When you’re doing a good job, no one notices. When a company is running smoothly, that’s a sign that the IT department can be downsized. There are no problems! What are those guys doing all day? Having things not happen as part of your job description makes for tricky times when you do your job well. Of course, when something does go wrong people know just where to find you.

So if you work in a company that has people on payroll working to keep your technology humming along, cut them a little slack. Someone’s got to do that stuff; be glad it’s not you. I do enough IT now to know that I’d rather let someone else have the pleasure.


Well, now I’ve gone and done it! I have a short-term job, helping to program up a fancy Web-based learning management system for a couple of companies in the medical industry. I didn’t really look for the job, but it found me anyway.

This month is going to be pretty crazy; and I won’t have nearly the time to get ready for the World Fantasy Convention now. On the other hand, I’ll be able to pay rent. That’s pretty important, what with this being the rainy season and all. Don’t know what’s going to happen to the ol’ blog here; I was a little bit employed at the start of my homeless tour and still managed to keep things alive, so let’s hope.

Long ago, when I was dabbling in radio, a mentor told me “if you have a safety net, you will fall into it.” I had a safety net, a job programming computers. I fell into it. I’m going to have to be very, very careful that I don’t allow that to happen again.