Oh, yes they can

Oracle, oh Oracle
Oh have you seen Oracle
Oracle’s EULA lately?

Don’t reverse that buggy code
Lest you make poor Maddi ‘splode…

(… you can learn a lot, from Oracle!)

— after Groucho Marx

link to discussion on HN


Posted in Uncategorized | Leave a comment

Fresh Oz

New Ozric Tentacles! (yay)


Posted in Uncategorized | 3 Comments

Newton Power

I stopped at a surplus computer hardware store today and found a bin with a couple hundred of these:


So, if your Newton MessagePad 100 needs a battery holder, I know where you can go (RE-PC in Tukwila, WA). I have no idea how these things wound up there.

Gaston Bastiens was the General Manager of Newton when I was there. He was not well liked, and he kept making crazy decisions. For instance, he decided it would be good idea to charge Newton developers a percentage of their profits (unheard of at the time, and lunacy for a struggling platform). And: When it was clear that the Newton wasn’t selling all that well, and unwanted Newts were stacking up in warehouses, Gaston had Apple buy parts to make another 80,000 units. I won’t even get started about the sea of T-shirts we were swimming in (there’s a big difference between “Buy $5000 more promotional shirts” and “Buy 5,000 more shirts”).

There were a lot of Newtons sitting in warehouses.

Also, many Newton Fax modems. Many, many of them. God only knows how many he ordered. There could well have been more Newton Fax modems than there were Newtons to plug them into.

One of our developer support folks (Bob E) found out that it was possible to order a palette of surplus Apple products delivered to your office. Hey, the stuff had no hope of being sold, so if someone had a use for it . . . Bob ordered a big palette of Fax modems, and when he shipped stuff off to developers (hardware, manuals, etc.) he would pour in some Fax modems as packing material.


We had a dev who liked to do anagrams. He maintained (somewhat tongue in cheek) that anagrams uncovered the true nature of things.

For myself, for instance: Dandy Loner

For Gaston: Neat Bong Assist (which is one of the reasons that a Newton easter egg is to write “Neat Bong”, select that text and hit the Assist button).

For one of our whip-cracking dev managers, a two parter: “Donate us a gun” (because) “Us at a dungeon“. The year we spent shipping Newton was a hard, hard year . . .


Posted in Uncategorized | 3 Comments

On Reviews

My first job performance reviews, first as a dishwasher and borderline incompetent kitchen robot for a minor restaurant chain, and then writing video games for Atari, were short and sweet. Every year or so I would sit down in my manager’s office and he’d say, “We think you’re doing a great job. Here’s a pay raise.” That was it. It only took a couple of minutes. We didn’t have a long talk about objectives, or chat about what had gone right or wrong, or make a strategy for the next year.  There were no head games or bullshit politics. Just: Everything’s fine, no problems. Here, have some money. I still consider this to be a state of innocence, and possibly an ideal. It was stress-free and I had no worries. I had a similar experience working as an intern for the federal government: Every once in a while they’d increment my GS rating and I’d get a little more money (not much, it was the government).

At Apple I was introduced to the torture of writing a self review.  This was an genius application of laziness on the part of management: Each employee had to write down what they had done, be honest about their accomplishments and failures, and hope for the best. Apple actually seemed to care what you wrote, but in the end it was all classic backward-looking stuff. “You did good, no problems. Here, have some money.”  Like washing dishes or writing video games or being a very junior government drone, there was nothing about objectives or future plans. (This was in the 80s and 90s, and I don’t know what reviews at Apple were like under return-of-Steve or if they changed in the post-Steve era. It’s possible they use chemical interrogation now. I could totally see that).

At Microsoft I sweated through years of similar self-reviews before learning the truth: By the time you were done with all the self-purging and 3AM panic attacks and had finally excreted the perfect gem of a critical but not /too/ critical self review, well, by that time all the numbers had been decided a month earlier in secret meetings and whatever was coming your way, candy or stick, was already a done deal. Short of your running nekkid through the lobby or installing Linux on your workstation, your review wasn’t going to change. You could write pretty much anything (“All work and no play make this developer a dull boy. All work and…”) and the only time it mattered was when you went looking for a new position inside the company and your new management got curious about the kind of drivel you’d written about yourself. The self review itself was “post-hoc, ergo propter hoc” bullshit, a substrate for your manager to justify what the secret meetings had decided. And at its core, the process was about humiliation and sowing self-doubt.

I went through three or four revisions of the performance system at Microsoft, and it became clear that the changes didn’t really matter much. The only invariant that counted was that unless you had a good manager, a real fighter ready to lay down honor and do personal combat for his or her direct reports, you got screwed. The tweaks to the review system just altered the details of how you got screwed, or how you came under special screwtiny [sic], and did nothing to fix the underlying screwedness of the review system’s philosophical base.  The road to success at Microsoft was to put yourself under a champion.

It gets more fucked up than that, but you’ve already heard most of it from various articles on Slate, et al, and the threads on Mini Microsoft. There are truths buried in the Mini Microsoft comments, though they are submerged by rants, name-calling and taunting.

I quit Microsoft over two years ago, and it took a whole year to get some perspective (I wrote a lot of this soon after quitting, and I’m quite happy I never published it; many of the paragraphs simply did a crescendo into incoherent ASCII screams of frustration and anger). I think that many of Microsoft’s technical failures in the last decade can be root caused in a review system that rewarded bad behavior, put the wrong people in positions of power, mis-identified the people that Microsoft should have kicked out, and caused the wrong people to get sick of things and leave. Maybe the new review system does the job; I keep hearing good things.

Posted in Uncategorized | 5 Comments


Holy crap.


I think . . . they rather missed the point.

I’m surprised that only 14 percent of Zappos employees quit. Just wow. Rotating Christ on ball-bearing roller skates wow. This constitution thing is kind of awesome, in its own sickening and twisted way. I’ll bet it’s about as much fun to work in this structure as it is to get a root canal in North Korea.

Posted in Uncategorized | 4 Comments

The New Corporate Campus Curse

Atari. 3COM. Apple (1992). Borland. Silicon Graphics. Sun (twice). Others that I have forgotten.


We’ll see.

Personally, I’d rather work in a barn.

Posted in Uncategorized | 6 Comments

Dear Oracle

Dear Oracle: If you ever install a directory whose name contains an ‘&’ in my system’s PATH environment variable again, I will travel directly to the Bay Area and it won’t be for fun. What were you thinking, that people wouldn’t notice? That it looked pretty? That writing out A-N-D was too hard? Are your directory names chosen by Marketing? (“Can you make that directory a little more puce? No, way too puce now. More, you know, edgy and confident puce, not blatant developer puce.”)

Of course, it would be nice if the Windows command interpreter wasn’t such an awful embarrassment and could do things like string quote escaping without losing its mind. I heard some of the political backstory to why cmd has been left to languish for the past two decades and was not surprised (summary: old and crusty NT dev, with matching territorialism and ego). Oh, and the answer to “cmd is crappy” is not PowerShell, thanks. Who said that? We can go outside and settle it, if you want.

Not really sure what the answer is. For instance, every time I write a bit of bash I want to throw up a little. The only shell programming language I didn’t actively hate was the MPW Shell, and that is decades dead now; MPW sure had some flaws, but parts of it were really nice.

But those ‘&’s don’t work anywhere, not matter how fucking puce they are.

Posted in Uncategorized | 13 Comments

m-x start-them-early

Since it was a national holiday, I took The Gibber into work for the day. I sat him down at a desk near me with a laptop and got him on the guest network. He played some MineCraft, and after a while I suggested he work on his book report a little.

“Here, use this,” I said, launching a program. “First, you can just type stuff and it appears. Then, control F goes Forward, control B goes Back, and control N and control P go the next and the previous lines. You can use the arrow keys, if you want.”

He typed some stuff and tried it out.

“Okay, now Control U and a number does the next thing you type that many times. Type Control U and thirty and the letter A.”


“Okay, Control U by itself just does four. Another control U multiplies that by four. And another.”


“Works for the commands that move around, too. Try it out.”


“And the Meta key (and now you know what that ESC key is for) makes things go _bigger_, so you can jump around by words and paragraphs…”


I show him C-X C-S and C-X C-C, and a little more, and five minutes later he’s happily typing away.

A cow-orker comes by and asks what I’m doing.

“Teaching him Emacs.”


“No son of mine will use vi.”


Posted in Uncategorized | 5 Comments

Comcastic (The Tale of the Good Tech)

[follow-up] So in the end, resolving the issue we had with Comcast took someone who knew what they were doing, with good debugging skills and a good attitude, and about 15 minutes. It helps to be methodical. It’s fine to twist knobs and keep trying stuff, but you need to be scientific about things. Write stuff down if you need to. Be organized. Change one variable at a time.

1. Examine the data carefully

Clueless tech: “I don’t even know where to start.”

Good tech: “Hmmm, only some channels work when they ALL should. Let’s look up some of these channel frequencies on the channel map reference and see if they’re correct.”

2. See if you can state the problem simply (possibly by recognizing that there is a problem)

Clueless tech: “Lots of channels aren’t working. Huh. Did you give us money for them?”

Good tech: “Channel 647 isn’t working, and it should.”

3. Ask yourself if there’s any more data you can gather

Clueless tech: [Argues about subscription packages with the customer]

Good tech: “Hmmm, I have a signal strength meter with me, maybe I should measure this.”

4. For a complex system, try tracing a fault back to its source.

Clueless tech: [still arguing about the channels we’re paying to not get. Shows me a page on his phone that he says supports his argument that we shouldn’t get those channels, I do research in front of him to show that he’s flat wrong and looking at stuff from years ago]

Good tech: “Hmm, no signal here on that frequency, maybe sampling the signal closer to the street will help localize the fault?”

5. While it might make sense to twist a knob a few times to see if the problem just goes away, twisting the same knob thirty or forty times only makes you look like a frustrated skinner box rat when the researcher has gone on vacation and fogotten to fill the pellet jar.

Clueless tech: “Let’s do that thing that didn’t work before, again, a few more times, because it’s the only tool I’ve got.”

Good tech: [Already out the door and finding the cable closet]

Root cause was one of the two things I thought might be the issue. The first possibility was a bad channel assignment from the head-end (and believe me, the software that runs the head-ends is crap), the second was a cable trap that had been left on the line. Turned out to be the trap; a filter had been installed maybe ten years ago in a locked utility closet and never removed, and it was happily quashing the signals between 270 and 670 Mhz, and since Comcast went entirely digital in our area a few years ago, these traps should just have been removed.

The first tech just flailed and couldn’t actually think about the problem, but could have solved it if he had paid attention.  The second tech knew a few failure modes, but more importantly he knew how to think about a problem.

6. Don’t design systems that lack end-to-end diagnostics. They will be expensive for you, and your customers will have little pity as they stand back and watch you flail. I’m happy to pay NASA to publically fail because they do stuff that is exciting, dangerous and hard; cable provisioning is none of those.

Posted in Uncategorized | 2 Comments

And we’re back

Nothing like a good random savaging from your $hostingProvider. Sorry about that. It’s been a week of downtime because the tools that $hostingProvider has for diagnosing problems are about as useful as a stack of moldy Ouija boards. Logs? Oh you can ask for logs, but they will not come. Forum quality on $hostingProvider ranges from “Cargo Cult” nonsense to “plz hlp” because it’s a cheap-ass neighborhood.

Me to support: “Site down. Apache looks utterly dead. Logs? WTF.”

Support: “Huh. Lots of stuff wrong, too much to describe, really, and we’re throttling traffic to that server because there are too many people on it. Why are you on that old server anyway?”

Me: “What?”

Support: “No problem, we’ll just move your site. Oh, wait. You have to delete all your old databases first.”

Me: “What?”

Support: “Bye now. Merry Christmas.”

Took another call to support to get Apache high enough to crash. Actually the support folks are pretty good, it’s the policies and configurations they’re called on to support that are, shall we say, legacy. It says so, right there.

Another call or two to have them repair permissions. On stuff. No word on what actually changed or what permissions they had to fix, just, um, you know . . . stuff that needed permissions changing. Oh yes, all this time, the entire time the site was down, the little status widget in the corner of my site’s administration page was cheerfully reassuring me that the site was 100% up and functional (while right next to that, a site preview page was declaring HORRIBLE ERROR and APACHE CATASTROPHE). Yay for modern technology.

So, I mucked with crap for a week, twisting knobs and pushing buttons and waiting for random pieces of web UI to agree with each other. Honestly, half of this time was looking at how to run the hell away from $hostingProvider by moving a few domains experimentally and discovering the roadblocks that $hostingProvider decided were necessary to prevent customer flight, go figure. Finally got things in order, restored the database, restored it again because $hostingProvider, and things seem to be working now. Hi there.

$hostingProvider will soon be an ex hosting provider. I’ve already moved a couple of domains, this one is next. It’s fun.

Posted in Uncategorized | 4 Comments