One Way to be Happy

All the staff and kids from our group home were walking back from the cafeteria when Jay, for no apparent reason, started screaming:  a high-pitched, ear-piercing shriek like nails on a chalkboard.

Cindy, our group home leader, gently pushed Jay’s wheelchair until it was facing a wall and put on the brakes.  His shrieks continued, only stopping so that he could breathe.  “Why don’t you take this one?” she asked, leaning close to my ear so I could hear her.

Jay has Rett syndrome, which is very similar to autism.  Or maybe autism.  And perhaps something else.  Nobody really seems to know for sure — but we’ve been given a plan of action for the tantrums, which essentially is to remove as many stimuli as possible and wait it out nearby.  Although as a caregiver it may be instinctive to try to soothe Jay by talking or touching, this doesn’t help, and just prolongs the episode.  So I have little to do but wait nearby, try not to get a headache, and make sure Jay doesn’t hurt himself — which, although very unlikely, is possible, so I’m not going to let him out of my sight.

Nobody else is in the cafeteria, so I’m soon joined by two friends who notice me sitting alone — Luke, a fellow caregiver and a patient named Kirby.  Kirby has an enzymatic deficiency that somewhat mimics Tourette’s syndome’s symptoms, and his hands are restrained (wrapped in padded cuffs and chained to his chair) to keep him from hurting himself.  Kirby greeted me with a hearty hello, then spit in my face.

“Oh shit,” Kirby apologized, looking mortified.  “Sorry.”

“Don’t worry about it,” I smiled.”It happens.”  Jay is still screaming his lungs out.  Luke handed me some paper towels which he always keeps at the ready.

The three of us talk for a while over Jay’s screaming.  Kirby punctuates the conversation with occasional profanity and unnecessary apologies, and every now and then the chains on his arms tighten and his body goes completely rigid.  What he’s trying to do (or not do) I can only guess.

A man on crutches somewhat unsteadily comes to our table and introduces himself as David.  This is unnecessary for us because all of us already know him… but he doesn’t know us, so we tell him our names, again.

David has been hit in the head by a golf ball which damaged his ability to form new memories, so that anything after the moment of impact can’t be permanently stored — like the movie Memento.  The injury had two other side effects — first, it had damaged his motor skills, making it difficult for him to walk, or golf, or generally move about.  Second, it has provided David with an intensely sunny disposition and charming personality that he insists he didn’t have before the accident.

David sat down next to Kirby and eyed Kirby’s restraints.  “Do you shake hands, is that okay?  I don’t want to be rude…”

Kirby smiled, “Well, it’s better if I don’t.  I can’t always control my hands.”  Kirby’s face twisted into a grimace and he shouted, “you pigfucker!”

David smiled brightly.  “Well, you certainly made me feel better!”

David’s brother Tom was apparently visiting, and joined us at the table.

“Can’t you shut that kid up?” Tom said to nobody in particular, as Jay continued to shriek.  I wasn’t particularly fond of Tom.

“Pigfucker!” said Kirby, but without the telltale grimace that normally accompanies an attack.

Luke stifled a laugh and announced that it was time for he and Kirby to go back, leaving me with David, who may remember me if he hasn’t looked away and thought about something else, Tom, and Jay’s wailing about 10 feet away.

“I’m David,” he introduced himself to me, holding out his hand cheerily.

Tom wore an expensive, three piece suit and nervously twirled the keys to a Porsche around his fingers.  “You look tired,” David said to him — something David said to Tom a lot, which was his gentle way of saying, “you look old,” which was inevitable, because the Tom that David remembered was from twelve years earlier, before the accident.

“Will you stop saying that?” Tom pleaded.  Again.

David shrugged, realizing he must have said it before.

“I’m sorry, I guess I don’t know how you guys put up with that,” Tom gestured vaguely in the direction of Jay, who took a deep breath, paused just long enough to give us hope that he might stop, then resumed his siren-like scream.

David seemed genuinely confused.  “Put up with what?  That kid is clearly upset, and there’s not a thing we can do about it because of his condition.  But it does remind us how fortunate we are.”

“Fortunate?”  Tom seemed incredulous.  “You can’t remember anything, you can’t walk, you gave up your career and everything you ever loved, you’re sitting in a crappy cafeteria without any food listening to a kid scream at the top of his lungs, and you’ll never get any better.  You’ll never leave this place.  You’ll never remember anything.  You’ll never work again.  When your kids visit, you don’t recognize them, you don’t know who your grandkids are and soon you’ll stop telling me I’m tired and you’ll say ‘good lord you’re old’ every time I come and visit you.  How can you consider yourself fortunate by any stretch of the imagination?”

David took Tom’s hand.  “I’m happy.  I can get around, I like meeting people, and now I meet people all the time.  This chair is comfortable.  This table’s a nice color.  Everything’s new to me.  I’m always learning.  I can forget about absolutely anything I don’t like just by not thinking about it, and I can remember what I want by writing it down.  Here’s an example.”  David showed Tom something written on his hand.  “It says you visit me all the time here.  I wouldn’t remember that, and I’m sorry, but I love that you’re here, and it’s great that there are so many people who love and care about me.  That’s what being fortunate is.”

I realized that Jay had been quiet now for a minute or two.  I stepped over to see if he had returned to the world.

“How are you doing, Jay?” I asked quietly.

“Tastes more meatier!” he yelled enthusiastically, echoing the words of a commercial he’d heard.  While the words may not make sense, they at least seemed to match his emotional state.  We headed home.


Fun with Extortionware, or Curse you, Java!

Safety on the internet — that is, protecting your computer from malware — used to be as simple as not downloading and running dodgy executable code.  Sure, some people were tricked, either via emails from “friends” or popups trying really hard to convince them to run a local binary.

Websites that wanted to provide a richer experience had a few options:  run ActiveX controls in IE — the notion of letting a binary run because a website told it to seemed stupid even at the time, even with the idea of “signed” ActiveX controls, so you’d know who provided a control.  There was Flash, a proprietary binary and scripting language now owned by Adobe, and then there was Java, which ran in its own virtual machine with limited access, which seemed like the saner of all the options.

Ransomware Screen

This ransomware screen appeared over pretty much everything

Recently, I stayed in a hotel where the first thing I did was poke through some of my history, looking for an article I’d been reading before — which I located, and about a paragraph in, my screen was entirely replaced with a (fake) FBI warning and a demand to pay a “release fee” of $200 to regain control of my computer.  This was accompanied by the hotel’s IP address, and a display window that was apparently supposed to turn on the PC’s camera and show me in my underwear.

This is known as the “FBI Green Dot Moneypak” scam, or the “FBI Moneypak Virus,” which actually covers a large family of extortionware — which is essentially a monetizing payload, like this scam, plus a way to deliver it to your computer.  In my case, the delivery mechanism appears to be a Java exploit, triggered by either a malicious ad from a site I’d visited before (at home we use a proxy that strips out suspicious ads, so it’s possible it had been there before, but my PC wasn’t actually infected until I visited the same site from the hotel.)

In my case, the infection was completely missed by malware scanners, which seemed to think that my PC was perfectly fine, and even ad hoc scanners proved relatively useless — even a few which claimed to be able to detect and remove this (detection is free, removal requires payment) were blissfully unaware that the infection had taken place.  Googling wasn’t a lot of help either, since I was either directed to sites with generic instructions to run whatever scanner they were hocking (none of which worked) or long lists of registry keys to check, none of which appeared to exist on my system.  So it was either hiding itself well, or too recent to be picked up by scan-based systems.

At any rate, since it was Windows 7, I was able to “switch user” to an Administrator account, and I since I hadn’t received a request to escalate permissions, chances were relatively good it hadn’t inserted itself too deeply into my OS.  I found two suspicious binaries — suspicious, because they weren’t where binaries typically go:  in c:\ProgramData was “lsass.exe” and in c:\Users\username\AppData\Local\Temp was “ctfmon.exe.”  Both of these are legitimate Windows binaries that would be run — lsass.exe, for example, is the Local Security Authority Subsystem Service, a legitimate version pretty much needs to be running or the system will restart, and ctfmon.exe activates the language bar.  Since I generally have that turned off, this is pretty suspicious, but even more suspicious is the location of these files.  Deleting them in safe mode (from an alternative account) cleared the infection, returning control of my PC.  The PC complained about not being able to find a few files it wanted to run on startup, but I considered that a good sign.

Meanwhile, I went back to my browser to examine the source of the infection, and surely enough, a Java plugin was enabled — and since it’s the only thing enabled, it’s pretty obvious that this was the source of the problem.

If you haven’t done so already, I’d recommend disabling your Java plugins (virtually no Internet site uses it any more) and any other plugins which you don’t actually need.  If you do use Flash, which is relatively hard to avoid, at least make sure it’s up to date.  Note that updating the version of Flash doesn’t necessarily update the plugin version, so check from within your browser, not just by looking at versions in the Control Panel.

Mozilla has a handy URL that actually works across browsers:



3D Printing — A Comedy of Errors

Printing a Proper Raft on a Makerbot Thing-O-Matic

Printing a Proper Raft on a Makerbot Thing-O-Matic

I recently acquired a Makerbot Thing-O-Matic, a printer I selected due to its apparent ubiquity and to its price — under $1000 if you do the assembly yourself.  With the heady optimism and overconfidence borne of having not yet attempted something, I dove in with my boxes of parts and wiki instructions.  Besides, I build stuff all the time, which is the point of having a 3D printer in the first place.

Another appeal of a largely community-supported machine is the lack of need to talk to tech support, which is usually a dismal experience.  I contacted a tech support for a popular anti-virus program which would occasionally inexplicably shut down when I was using it on public networks.  Tech support’s answer: don’t use public networks.

At any rate, aside from backtracking a few times (the combination of extra parts and following some outdated instructions led to a few false starts, and a quirk or two of design, assembling the little beast wasn’t a problem.  I didn’t start causing my own problems until I actually started printing.

I calibrated and made little adjustments in order to improve my print quality:

  • The stepper extruder didn’t have enough clearance to grip the filament, so I removed a washer
  • The extruder had trouble pushing the plastic through, so I increased the temperature
  • The raft was blobby, so I lowered the nozzle relative to the build platform
  • The raft didn’t stick to the build platform, so I raised the temperature of the build platform

After all this tweaking and adjusting, I was able to print some pretty good looking calibration cubes, that more or less looked like the pictures I was seeing on the web.  However, absolutely all of these adjustments were exactly the wrong thing to do.  I had managed to put together a set of tweaks that made fairly good, accurate prints, that warped crazily as soon as they were finished.

  • The stepper extruder doesn’t have much clearance for the filament because it grips the filament very tightly.  The filament should have bite marks from the extruder.  Putting the washer back in, I cut the filament in a “v” shape before feeding it in so that it could be gripped.
  • Turns out I could actually lower the temperature of the extruder, now not having any trouble pushing filament through the nozzle.
  • Having the nozzle so close to the build platform was pressing the raft right into whatever I was printing.  Raising the nozzle opened up the raft and allowed it to actually come off.
  • With the nozzle farther away from the build platform, it no longer tended to drag the plastic away from the platform, and the platform temperature could be lowered as well.

Weirdly, even with things boldly out of whack, I was able to produce some very good prints, although they took a lot of clean-up and sanding, and warping was a real issue.  The look of things hasn’t changed much, but less clean-up is necessary and less warping means more things will actually come out shaped closer to how they were designed.


A Brief Tale of ATM Ripoff and Redemption

I’ve become a bigger fan of than ever.  Even though it has a few minor flaws, it provides an excellent dashboard to see current and pending transactions to all accounts at once.

I’m not compulsive about checking my accounts, but I find its phone app handy to check occasionally to plan or check spending, which is where I noticed an unusual withdrawal from my account, from an ATM, for $167.36.  I don’t have a debit card, so this struck me as a fairly unusual amount to withdraw from an ATM, and I made a mental note to follow up as soon as my plane landed.

When I did, I made two additional discoveries:

  1. The ATM withdrawals had been made from Bogotá, Colombia
  2. Enough withdrawals had been made to completely drain my modest checking account

It’s worth pointing out that my ATM card was safely in my wallet, and I’d never given my pin out to anybody.  Nor had I used any dodgy teller machines — I’d like to think I’d notice a skimming device, but they can be fairly sophisticated — at any rate, I do keep an eye out for such things on general principal.

A google consensus links fraudulent withdrawals from Bogotá specifically to compromised ATM’s in La Antigua, Guatemala…  Where six months earlier, I’d spent a month.  At the time, I had been diligent about checking for unusual withdrawals or activity, and it had all been legitimate at the time, and for six months after.  (Articles describing the linkage are here, and here, among other places.)

There’s some rampant speculation in those articles, but I do know enough about ATM communication to know that no ATM uses “unencrypted communications.”  That said, through complicity, skimming, or compromised ATM software, both my card number and PIN were acquired and transmitted to Colombia, where six months later, a copy of my card was used to drain my account.

My bank was relatively helpful, first canceling my ATM card, and saying that they “would investigate.”  I waited a few days and called for more details — and I’m very glad I did, since I needed to fill out an affidavit and get it notarized.  I was gratified by some of its language:

“I fully realize that [this affidavit] may cause the arrest of a person or persons for the unauthorized use of Credit/Debit card identified in paragraph 1 above…”

I should certainly hope so.

I was also informed that the notarized affidavit needed to be in their possession within 10 days or the money could not be refunded.  Nice to know!  I, for one, would hate to lose a bunch of money because a clock ran out that I didn’t even know was running.  (10 days seems like an insanely short amount of time, given that bank statements are usually issued monthly.  I was given a vague reason about “Visa regulations,” which is slightly odd since it’s an ATM card, not a debit card, and I don’t know of any ties to Visa, but I’m not about to argue the point since I actually can get the paperwork back to them that quickly.)

I supposed I can relax a bit since the money is [provisionally] back in my account, but I’d feel even better if I knew that a group of culpable Colombians and Guatemalans were rotting in a jail cell right now.


On Running the Hell Away

In the 80s, I worked for an economic consulting firm and defense contractor in the heart of Washington, DC.  We had just landed an important contract in Ohio, and I had been assigned as the systems architect — I would need to move.  Invoking the transfer clause in my lease, I terminated the lease in my apartment, moved all my stuff into my car, and prepared to move to Ohio.  However, this left me a few days without an apartment working in the old office before I was supposed to report to the office in Ohio.

A friend offered his couch for a few days, except he wouldn’t be back in town until Friday night, and it was Thursday.  No problem, one night in a hotel wouldn’t be so bad.  Except, not having a lot of money, I figured one night without paying for a hotel would be even better, and hit upon the brilliant idea of spending the night at the office.

Figuring it was better to ask forgiveness than to ask permission and get denied, I thought I’d just avoid getting caught.  People must work late all the time, so surely it couldn’t be that bad if I did get caught.  At worst, I might get fired and not have to move to Ohio, I thought.  I was wrong about that.

Not wanting to prolong the experience, I had a long dinner, and showed up at the office around 10:00 p.m.  It was a large office, and the doors were all badged with access cards, except for a small, unmarked side door that took an actual, physical key.  Months earlier, I’d been handed the key by the manager of the server room to make it easier to move equipment, and I’d neglected to give it back — quite innocently — but now I wouldn’t have to explain why my card showed up on the entry records so late at night.  We did do defense work, after all, and I didn’t want to be mistaken for a spy.

Opening the door quietly, I snuck past the server room and froze, as I saw the beam of a flashlight dancing at the end of the hall.  My access card may or may not get me into the server room at this hour, but that would be a lot to explain.  I flattened against the wall in a side hall and waited.

The security guard didn’t shine his flashlight down the little dead end I’d stuck myself in, and continued on his way.  I figured the safest thing to do would be to go the other way, which would take me away from my cube, where I had originally been headed.  While it might be easier to explain why I was sleeping at my own cube at two in the morning, it hardly seemed comfortable, so I headed past the main reception desk.

It was a big glass desk, too open and visible, for my purposes.  On the desk there was an etched crystal globe about the size of a baseball which I liked, so I picked it up as a talisman, intending to return it at the end of the night.  (At least I was only sort of wrong about that.)

Hearing footsteps from the direction in which the guard went, I left the reception area and ran into the media room just behind it, a large room used for presentations and for impressing guests.  I dove and slid quietly across the marble floor under a “history table” that held various awards and stacks of brochures about our company.  The table was a lot shallower than I’d hoped.  I envisioned the guard’s flashlight beam settling on my backside and my halting attempt to explain just what the hell I was doing there.

Footsteps stopped at the door and I watched the wall light up as a beam scanned the room — it didn’t get below desk height — he clearly wasn’t looking for some idiot hiding under a table.  The footsteps moved on, and I breathed a sigh of relief.

One hall connected to the media room led to “mahogany row,” which wasn’t actually mahogany at all, but referred to a set of nicely appointed offices used by the company higher-ups.  Perfect, I thought, one of them probably has a couch, and maybe even a bathroom.  The hall looped around the front of the office to the reception area, so I wouldn’t be trapped, either.

Unfortunately, it hadn’t occurred to me that most of these offices would be locked with access cards.  I walked down the dark hallway, gently pushing a few doors experimentally, but of course they were all locked — some of our work was classified, after all, and not all of it went to the vault every night.  I got to the corner office — and couldn’t believe my luck — the door stood open about a hand’s width.  I couldn’t see much in the gloom, but I pushed the door open as quietly as I could.

This was Phil’s office, a company vice president.  We’d talked a couple of times, but were too far apart on the food chain to take much notice of each other, much less for me to spend any time in his office.  His windows were huge, and let enough light in for my dark-adjusted eyes to see more than grey outlines.

My heart jumped — there was clearly a man sitting on the floor, not moving.  I followed the man’s gaze to see Phil hanging from his neck from the ceiling behind his desk, his teal tie apparently tied into a noose.  The man on the floor stood up very slowly, and I saw that he was looking straight at me.  He looked classically Russian;  He was a short man, perhaps 5’2″, white, cold blue eyes, and no emotions in his facial expression.  In his gloved hand there was a gun, and he was raising it toward me.

My brain “unstuck” and I felt an adrenalin surge, and good advice sprung to my head, unbidden.  Your priority is to get away.  Then, act, before they think you will.  I threw the globe as hard as I could at the man.  At the same time, I yelled.  At this point, all concerns about evading the security guard melted away — better to be caught and fired than dead.

I should have turned away and just bolted, but I didn’t resist the urge to see where the globe landed.  I had aimed at his head (another mistake, I should have aimed for the center of his body) and he tilted his head slightly away from its path, not taking his eyes off me for a moment.  The globe crashed into the wall behind him, making a hole and sending up a small cloud of plaster dust.  Why are you still here? my brain screamed.

I felt a hand on my shoulder.

I twisted away and down, heading back around toward the reception area, looking only in front of me, and ran.  The hallway turned sharply, and I looked back again as I turned, to see the security guard crumpled and the small man stepping over him.  (Had I heard a gunshot?  I don’t think so, but my heartbeat is loud in my ears.)

In high school, I briefly held the school record for the 100 meter dash, of which I was fairly proud and considered joining the track team.  (The next day, my record was shattered by a boy who ran in cowboy boots and who later was selected as an alternate for the Olympics, but that’s beside the point.)  As long as I didn’t do anything stupid, that is.

During my brief high-school football career as a wide receiver, I intercepted a pass at the 1 yard line and ran down the field.  As I neared the opposite side of the field, I had a horrifying thought:  was I running the wrong way?  Was anybody chasing me?  I imagined both teams standing at the other end of the field, watching me in disbelief as I did something idiotic in front of thousands of people.  I slowed down a little and looked back … only to be flattened by the other team.  I had run an interception 97 yards and not made a touchdown.

My fellow team members called me “Almost” after that.

I wasn’t going to make that mistake again.  I didn’t stop, slow down, or look back as I vaulted down 5 flights of steps and ran down K street.  Downtown Washington DC is pretty deserted late at night, so there wasn’t a lot to slow me down.  After a few blocks, I stopped running in a straight line and random right and left turns until I was thoroughly exhausted.

At a gas station pay phone (yes, there were such things back then) I called the police.  Not wanting to go back to my car or the office, I took a cab to Alexandria and paid for a hotel.

The next day, I went to the office as usual, expecting quite a scene, but oddly — it was business as usual.  No police tape, no office buzz, nothing.  The globe was back at the reception desk, but was whitish over Eurasia with ground in plaster dust.  I detoured through the media room and looked down (now well-lit) mahogany row — every office was open except Phil’s.  Closed, but not barricaded or guarded.

Nothing seemed out of the ordinary, and I didn’t dare ask.


Entreprenurial Steve in Profile

While working for an Internet startup, our founder, CEO, and perhaps most importantly, boss, was a dynamic, unusual personality whom I’ll call Steve. Entreprenurial Steve.

A bundle of contradictions, in some ways I felt perfectly aligned, and in other ways, his thinking was so foreign to me that I couldn’t make heads nor tails of it. In all the time we worked together, for example, Steve never let anybody else pick up the check for a meal, and he was generous about inviting us out.  During a period where nobody in the company had any money and we were essentially working for free, Steve didn’t hesitate to take us to lunch every day, and often out to dinner.

Steve had (at least) two BMW’s, which seemed like kind of a status thing, except that Steve wouldn’t hesitate to loan them to whoever needed them.  Our secretary borrowed one and managed to total it in the parking garage (yes, I’m still unclear on how this can be accomplished) and Steve simply shrugged it off, saying, “It’s only a thing.  The important thing is if you’re okay.”

Yet, when I stopped on the street to hand some cash to a homeless person with a sign, Steve was completely baffled.  “Why would you give your money to that guy?  He’s not doing anything for you.”

“Five dollars means a lot more to him than it does to me,” I tried to explain.  “He needs it more than I do.”

“That’s crazy,” said Steve, shaking his head.  “I’m sure you can do something better with that five dollars.”  Weirdly, he handed me a five.  “Here,” he said.  “Don’t give this away.”

At times, it seemed that Steve held the company together through sheer force of will, when paychecks were bouncing and vendors weren’t being paid, his optimism and willingness to do anything to get it done for our customers was infectious, truly believing that our next sale would put us on firmer financial footing (which it always did, for a while) and that stability and prosperity was within our grasp.

Steve always seemed to know who to pay.  Starting, I suppose, with the lawyers.  “Get the most expensive lawyers you can,” Steve once explained to me.  “Even if you have to skimp on everything else.”

Our lights were always on.  Our Internet connection always worked.  Our phones always worked.  Other than that, I’m not sure anybody was paid at all.

Occasionally, a process server would come by, and Steve would invariably be gone.  Otherwise, he always seemed to be around, and I have no idea how he managed it.

Although clearly uncomfortable with kids, my precocious daughter asked him if she could use a computer.  Without hesitation, Steve handed her his personal laptop, explaining that he was going to a meeting and wouldn’t need it until the next day.  She dutifully returned it to his desk before we left.

The next day, we had a meeting with a potential customer.  Our presentations and servers were all online, so there was little prep necessary except for connecting to the Internet.  Steve booted his laptop, and instead of the familiar Windows chime, the room was treated to:

“Uh ohhhh!” from the Teletubbies.

A number of people in the room clearly had kids.  Steve was thrown off kilter, but shook off his utter mortification and made an excellent presentation.  (We got the deal, and I suspect the unexpected presence of the Teletubbies made us seem more human than slick and polished.)

A week later, my daughter asked to borrow Steve’s laptop.  Without hesitating, he handed it to her, but paused before letting it go.  “Try not to leave anything in the drive this time.”


Golden Age of the Internet Startup – Part 2

With a few sales under our belts, we packed up what little equipment we had, and moved to our new space in a downtown commercial high-rise, where we had an entire floor to ourselves.

An entire floor is a huge amount of space. There were ten of us now, including sales, marketing, etc., in a space that could hold 300. The space was fully furnished, and included a boardroom with a view, where all of us could sit, and have ample room for 20 more people.

This wasn’t unusual for any dot-com era startup, but perhaps it was unusual for one without venture capital funding. Bill explained that we hoped to expand quickly, and that more importantly, customers should be able to visit a place that inspires confidence.

One walked off the elevators into a large, well appointed lobby with leather seats and a stainless steel version of our logo on the wall, up to a reception desk, behind which was a glass wall displaying our opulent (and usually empty) boardroom, where one looked through it onto an expansive view of the city. From there, one could go right or left to weave through cube farms before reaching either outer wall, all floor-to-ceiling glass. The few employees scattered about and a few well placed plants and personal items give the impression that a large office had just gone to lunch, or is sequestered in meetings somewhere. You’d probably end up at a huge, well appointed corner office to meet the CEO, or perhaps the head of marketing, or the CTO, or the COO — there were four corners, after all.

Bill was right — the entire place spoke of money and confidence, without being too opulent. On the occasions when customers did come by, we avoided an empty look by using 3-4 cubes each, and inviting friends over to sit around for lunch. (Nobody would ask if all the people in the office actually worked there, but we certainly would not have lied if it came up.)

Along with the cubes and chairs came a big PBX system with hundreds of phones, handy partly since we were so far away from each other. This was in our full server room, where Bill invested in two racks full of servers, along with new PCs for everybody, plus a bunch for empty cubes.

None of the equipment was unused. For every empty cube with a PC humming under the desk, there was a system running tests, compiling code, copying backups, running competitor’s systems, providing remote access, and so on. In addition to selling our main line of software, we also did odd bits of consulting in order to provide the company with income — this included setting up and integrating competitor’s systems (which was handy for a number of obvious reasons) as well as odd jobs like data mining for grocery stores and other utterly unrelated technical tasks.

I sat in the back, near the server room, which gave me a unique view and made it easy to concentrate on writing code.

On the floor below us was a radio station, which we didn’t notice at all our first few months — then they either changed formats or management, or both, and suddenly it was apparent that my office was directly over some kind of listening or sound booth — and during the day, they started cranking up the noise so that not only could it clearly be heard in our office, it was hard to speak to somebody in the same room. I called the building management to complain.

“I’d like you to do something about our downstairs neighbors,” I shouted over the din. “We can’t hear ourselves think up here.”

“I can’t understand you,” said the building manager (a dour woman we’ll call Leslie.) “Maybe you could turn down your music.”

“That’s really my point,” I shouted. “That’s not our music. It’s coming from downstairs.”

“I’ll be right up,” said Leslie, lying through her teeth.

A couple hours and a few phone calls later, Leslie appeared. Perhaps coincidentally, but probably not, the music had been turned off moments before she marched up to my desk.

“I don’t hear anything,” Leslie told me, in an accusatory tone.

“Well, obviously you did when I called, since you complained you couldn’t hear me over the music,” I explained.

“That could have been anybody’s music,” said Leslie dismissively.

This seemed pretty disingenuous and odd, but this same pattern repeated itself a few times, before Leslie actually appeared in my office while a deep bass thump was still shaking my furniture.

“I don’t hear anything,” said Leslie.

“What?” I said, shouting over the noise.

“I said, I don’t hear anything,” she shouted. “I can ask them to turn it down, I guess, but I don’t hear any music at all.”

I didn’t know what to say at this point. I talked to our business manager later, who mumbled something about a possible dispute with the lease. Were they trying to make us leave? I’m not sure, but I was beginning to hate Leslie.

I once had a friend with the curious habit of jumping up in moving elevators, landing with stiff legs. This created a booming sound that resonated throughout a building, and he’d nonchalantly walk off the elevator to nervous stares of people waiting to get on, some of whom would think better of the idea.

With this in mind, I brought in a bowling ball. Next time the music started up, I ceremoniously dropped it on the floor, right above where the music seemed loudest, which was near the server room on a little bit of linoleum floor (the rest of the office was carpeted.) It worked better than I could have imagined — it sounded like the building had been hit with a wrecking ball, sending a BOOOOOM that resonated through the floor and walls. I did this a few more times before the music stopped, and put the ball into a desk drawer.

Leslie showed up a moment later. “Are you guys doing any construction up here?”

“Heavens no,” I told her. “Surely we’d notify the building.”

She eyed me suspiciously. “We’ve had complaints from the floor downstairs, the noise is interfering with their radio broadcast.”

“Is that so,” I mused. “Well, I don’t hear anything.”

She stood, listening, and looking around, presumably for signs of construction equipment.

“I said, I DON’T HEAR ANYTHING,” I shouted at her.

She left in a bit of a huff.

The radio station’s volume got loud a few more times, but a few drops of the bowling ball were enough to stop it quickly. Our downstairs neighbors seem to have quickly learned the cause-and-effect relationship, and the bowling ball became an ornament on my desk.

Leslie dropped by one day on an unrelated matter and noticed it, and appeared to connect the dots all of a sudden.

“Were you dropping that bowling ball on the floor? Because I have to warn you, that would be unacceptable,” she lectured. “I could hear something like that all the way on the first floor.”

Really? Awesome.

“Madam, that’s a valuable ball,” I replied. “Besides, I’m certain it would cause quite a bit of noise, which would be completely unreasonable in a professional office environment. It might be more appropriate for some kind of party floor with loud music. Do you hear any music?”

She ground her teeth a bit, but said nothing. We didn’t have any more trouble from her or the neighbors for the duration of our stay.


Golden Age of the Internet Startup

Y2K was a weird time for many in technology fields.  For my part, I was in charge of an e-commerce team at the time that many companies were just beginning to realize the importance of having a presence on the web at all.  Revenues for my brick-and-mortar company were just topping $1 billion…  then overnight, one of our biggest customers made a few dramatic changes, and as a company, we had to shrink to about a quarter of our size to match our wildly decreased revenues.

As the fledgling wing of the business, the e-commerce team bore a disproportionate amount of the downsizing effort, so I laid off most of my very large team.  Another round later, most of my considerably smaller team were laid off.  By the third or fourth round, I’d decided it would be better to taste the riches of the dot-com era than preside over a rapidly-dwindling department, and laid myself off.

Within a week, I had about a dozen job interviews lined up — the availability of dot-com money was in full swing, companies were paying a premium for barely-competent java programmers, and my Vice President of e-Commerce title placed me in demand.  I rejected most of them for various reasons:  I didn’t think much of their technology, or their business, or didn’t have enough control, or just plain didn’t like the interviewer — within two weeks, I settled on a company that seemed to have everything going for it:  supply chain software, capital provided by a consulting business, a foundation for a product, domain skills, and a fair (but not exorbitant) salary.  Perhaps even more important was the contagious enthusiasm exuded by the founder, whom we’ll call “Bill.”

Bill hired two people right away — me, as the Chief Development Officer, in charge of building and supporting our products, and “Jeff,” as the Chief Technical Officer, in charge of infrastructure, IT, and everything else.  Jeff showed me the clause in his contract that included a foosball table in the lounge — something I neglected to ask for — but presumably, we’d have the same lounge, so I wasn’t about to complain.

Our first offices were temporary space with Regus.  We had four desks or so, reception, internet service — a whole office presence.  Since it was shared office space, we rubbed elbows with other Internet startups, cheap lawyers, and a handful of dismal people doing god-knows-what, whom I’d notice carrying a paper lunch bag into their office, and sitting at a desk all day by themselves.  I never saw them with computers or on the phone, so I imagined them spending their waning years pretending to go to a job that no longer existed.

A few years earlier, when I worked for a company on behalf of the CTA, I was shown an empty room with four older people in it with computer printouts and those old adding machines with the crank handles.  It was explained to me that due to their seniority, they effectively could not be laid off, nor could they be forced to train for other jobs, but their skills were utterly obsolete.  So they were put to work verifying account spreadsheets printed by the mainframe, which was deliberately pointless and mind numbing work.  They were not allowed to read books, and had to be strictly on time every day and take only prescribed breaks, or be fired.  Meanwhile, they carefully ran their crank machines, their work destined immediately for the trash bins, waiting out their retirement clocks.  I couldn’t help thinking I might go insane first, or at least beg to be retrained for something.  Anything.

I was reminded of this every day at Regus as I walked past the office of a little guy with a moustache, who didn’t ever have anything on his desk but his lunch, and seemed to spend most of his time looking at a spot on the desk.  I’d flash him a sunny smile and wave, and I might get a half-hearted smile in return, if I was acknowledged at all.  I called him “Willy Loman” and looked forward to days when his door was closed.

We didn’t have dedicated connections or server hardware, so I set up web and email servers in my basement, which had pretty decent connectivity.  The old consulting wing of the company was based in California (with a few employees there) and a few more scattered around.  I managed to marshall these few people into building something we were able to sell to a large retailer, to manage their shipping process.  We didn’t have health insurance yet, but paychecks were regular and covered COBRA payments.

While Jeff and Bill sought funding, I used the few resources we had to build what we could, and put together increasingly ambitious plans based on our ability to secure funding, and our ability to sell what we already had to the burgeoning Internet retail market.

To put this in context, this is an era where a company could boost their stock price by putting an “e-” or a “.com” in their name, where startups would spend millions on waterfalls in their lobbies, Webvan and were in full, inexplicable swing, along with Kozmo and Flooz demonstrating that startup capital and a dot-com model were the fast track to corporate success.

On the other hand, we were a down-to-Earth, hard working company, were careful about our spending, and didn’t yet have funding.  What we did have was part of a product, a handful of competent employees, and an office that after a while, nobody bothered going to.  After all, the servers weren’t there, the employees were remote, and venture capitalists were elsewhere — as nice as Regus was, it was clearly temporary, shared office space, not the place you’d bring venture capitalists to impress them with your waterfall, and god knows you wouldn’t want Willy Loman around.

The CEO called and said we’d leased permanent space — it was time to move.


Interlude with Apple Developer Support

As a consumer, getting support for Apple’s devices is pretty easy.  If it’s in warranty or you have AppleCare, it’s not hard to get something fixed.  As a developer, however, working with Apple is … not so easy.

Apple has one of my widgets available for download, which periodically gets updated.  The usual procedure is to log in to Apple, update a few fields, point to the new URL, and everything’s fine in a day or two.

Lately, though, the form has been failing with the error, “Please fill in all required fields.”  There’s no indication of which fields or what to do, so after weeks of trying different combinations of things, I contacted Apple Developer Support.

Dear Apple Developer Support:

I maintain an OSX widget available at [URL.] I am trying to update it using the form at

However, the form *always* returns the same error: “Please fill in all required fields.”

There is no indication of what fields are not filled out, and I have meticulously filled out every single field. I have attempted to do so from every major browser, including Safari, Firefox, IE, and Chrome, from every OS including OSX and Windows, and from several countries including the US, Canada, and India.

I cannot get this form to work. Is there anything that can be done? Can you tell me what this form wants?

Almost immediately, I got a form letter that they are working diligently on whatever my issue may be, and then a few days after that:

Please include the line below in follow-up emails for this request.
Follow-up: 136749696

Re: Software Downloads feedback


Thank you for contacting Apple Developer Support regarding Software Downloads.

Feedback regarding Software Downloads may be submitted to Apple via the Mac OS X web

Please know that the email address you have written to is
used to provide program-level support to members of the Apple Developer Program. We are unable to provide general product support via this Apple channel.

Thank you for understanding our support policies. We appreciate the time that you have taken to send your comments to Apple.

Best regards,

Yutaka Ikeda
Apple Developer Support

So, I’m essentially told that they don’t help with downloads, only developer issues, and I’m directed back to the contact page where I found the address I sent my original email to.
Dear Apple Developer Support:

I am not trying to download anything. I am trying to use the developer site, which is not working.

Omitted: Several back and forth emails where I beg somebody to read my request, and not just send me a random form letter directing me to the contact page.  Also omitted:  I repeat the problem each time.

Please include the line below in follow-up emails for this request.

Follow-up: 136749696

Re: iOS Developer Program


Please know in order to consider your request, we need you to furnish the following

– Step by step information to reproduce the issue
– Screenshots reflecting the error messages
– System hardware and operating system configuration
– Browser and version
– Indicate type of connection (i.e., cable, DSL, corporate network, etc.)
– Indicate if you are behind a firewall
– Provide text for any error messages that you have received
– Indicate if you are behind a proxy server

Thank you for your assistance.

Best regards,

Jeremy Nickel
Apple Developer Support

Wait, what? Well, fine, at least I’ve been routed to the correct department.

Dear Apple Developer Support:

Are these delaying tactics? Because seriously, the initial instructions I
included aren’t hard to follow.

Go here:

Update the version. Or anything. Use any browser. It doesn’t matter.
Naturally, I’m logged in as me.

Watch it tell you you’re missing a required field.

I usually stop here, but for the full experience, you can spend weeks
trying to get somebody to take a look and provide anything other than a
moronic form response or a nonsensical request for more information.

A few days later, I got this response:

Please include the line below in follow-up emails for this request.

Follow-up: 136749696

Re: iOS Developer Program


Please know in order to consider your request, we need you to furnish the following

– Step by step information to reproduce the issue
– Screenshots reflecting the error messages
– System hardware and operating system configuration
– Browser and version
– Indicate type of connection (i.e., cable, DSL, corporate network, etc.)
– Indicate if you are behind a firewall
– Provide text for any error messages that you have received
– Indicate if you are behind a proxy server

Thank you for your assistance.

Best regards,

Jeremy Nickel
Apple Developer Support

Yes. It’s the exact same form letter. Frankly, at this point, I hate Jeremy Nickel, and I want him to burn in hell. Is it really so difficult to understand that a web page is broken? Seriously, Jeremy, if you can’t be bothered to actually read any of the email you get, are you really in the right position?

Dear Apple Developer Support:

Please do not send me this useless form letter again, I’ve answered every
goddamned question more than once. If you have an actual question, feel
free to ask. If you want to send me a form letter, please just tell me
directly “I’m really too stupid to handle this,” it’s more honest and

> Please include the line below in follow-up emails for this request.
> Follow-up: 136749696
> Re: iOS Developer Program
> Hello,
> Please know in order to consider your request, we need you to furnish the
> following information:
> – Step by step information to reproduce the issue

Provided. Three times.

> – Screenshots reflecting the error messages

Imagine the screen, with a red “Please fill out all required fields” on
it. If you seriously need a screen shot of that, let me know.

> – System hardware and operating system configuration

I’ve tried several dozen. It does not fucking matter.

> – Browser and version

I’ve tried several dozen. Safari, Firefox, IE, whatever.

> – Indicate type of connection (i.e., cable, DSL, corporate network,
> etc.)

Again, tried on dozens.

> – Indicate if you are behind a firewallÂ


> – Provide text for any error messages that you have receivedÂ

Once again, “Please fill out all required fields.”

> – Indicate if you are behind a proxy server

No. And yes. What the fuck? Who fucking cares? I’m just going to get the same fucking form letter from you anyway.

Tell you what, Jeremy, just fucking GO to the URL, and if it miraculously works for you, send me your operating system, your browser version, and whatever the fuck you filled in to make it work.


Medieval Life versus Modern Medicine

I’m a pretty big fan of science — and by that, I mean the scientific method and its reliance upon testable theories and repeatable outcomes.  As a corollary, I generally respect modern medicine, and it’s not unusual to think, hey, without modern medicine, where would I be?  To put it another way, if I lived in the Middle Ages, wouldn’t life suck?

My last foray into modern medicine involved a rotator cuff tear, followed by surgery, frozen shoulder syndrome, and six months of excruciating physical therapy.  If I were a medieval peasant, I probably wouldn’t be able to use my arm at all, right?

Well, no, it turns out my shoulder problems were caused by the modern antibiotics Levaquin and Cipro, both of which I was taking for medically dubious reasons (as many people do) and other antibiotics weren’t available because of my allergy to Augmentin.

Augmentin was prescribed to me when I had contracted a horrible kidney infection, and I actually developed the allergy while taking it.  But hey, modern medicine saved me from a kidney infection, right?

Yes, but since I acquired it in a hospital, I’m going to put this in the medieval column.  I was in the hospital due to kidney stones, which were so big, they wouldn’t pass on their own.  After lithotripsy failed, the more invasive laser surgery was required.

Kidney stones are pretty horrible, and it’s easy to imagine myself in a medieval hamlet, blaming demons or whatever for my bone crunching pain.  However, it turns out my kidney stones were caused by high fructose corn syrup, so it’s more likely I’d be dancing around my medieval hamlet in no pain whatsoever, probably wearing tights, which I understand was acceptable back then.

I’d also been in the hospital to have my gall bladder removed, due to gallstones, which anybody who’s had them can tell you are almost as bad as kidney stones.  Oh no!  My medieval self would be unequipped to deal with gallstones … but (by now, you can see this coming) wouldn’t actually have gallstone problems in the first place.  In an ironic twist, cutting high fructose corn syrup and fat out of my diet to avoid kidney stones led directly to gallstones.

So far, the Middle Ages are beating modern medicine by at least three points, and I’m not even counting the clothes.

Not that I’m anti-modern-medicine, by any means, and I’m not about to revive the medieval practice of buying Head-On headache sticks to ward off brain goblins.  Instead, I’m going to give full credit to modern medicine for Imitrex, which is truly wonderful.