Older blog entries for apenwarr (starting at number 224)

4 Jan 2007 (updated 7 Jan 2007 at 01:07 UTC) »

2007-01-03: NITI in Retrospect: The Weaver 1.0 Manual; Manuals That Don't Suck; Blank Page Poetry; Bonus: Deleted Netwinder Jokes

NITI in Retrospect: The Weaver 1.0 Manual

Ah, the irony. Just a day after I told sfllaw that I'm too lazy to put any pictures in this journal, I just spent about half an hour uploading some image scans (thanks, dad!).

Collection: Weaver Manual

My dad has what I believe to be the only traceable copy of the Weaver 1.0 manual currently in existence. Weaver, for those following the story, is the product-name-turned-codename of the early versions of Nitix.

Manuals That Don't Suck

Not so long ago I wrote about GourD, NITI's new system for generating quality documentation in a hopefully scalable way. I talked about the idea of an artistic integrator: someone who has been through the entire thing, from cover to cover, and made sure it's consistent and flows in a reasonable order.

Back then, that integrator was me. The content was co-written by dcoombs and myself in about a week, and then I went over it for stylistic consistency. The result? One of our earliest customers actually said that "it was so interesting that I ended up reading it cover to cover." So did the people making the (now defunct) Corel Netwinder: it earned me a contract to write the manual for their Netwinder OfficeServer. That contract, in turn, was the turning point in our tiny little startup: the payment on completion made us profitable for the very first time (including founders' salaries).

Other things of interest in the Weaver 1.0 manual: the pages were 5.5x8.5 inches (exactly half an 8.5x11 sheet, not coincidentally), which makes it look less scary than a full-sized 8.5x11 manual. The binding was cerlox, not "true" glue binding, because cerlox lies flat on a table like any reference manual should do. And there were less than 100 pages, because nobody wants to read a manual longer than 100 pages. (Of course, Weaver 1.0 had almost no features.)

Click the image to see a few page scans. My favourite is the Tunnel Vision diagram, from back when tunnelv was a hub-and-spoke system.

Blank Page Poetry

One of the great things about treating your manual as an art form is that you get to be an artist. When I get to be an artist, apparently I'm silly.

This particular art form was inspired by all the wasted space in manuals on "this page intentionally left blank" pages. Wasted space?! We're running a startup company on a shoestring budget, here, we can't be wasting space! So we didn't. Here's the progression of intentionally blank pages as you weave your way through the manual.

    This page intentionally left blank.
    ---
    This page intentionally not blank.
    ---
    Blankliness is next to godliness.
    ---
    There once was a page that was blank;
    Some people thought 'twas a prank.
        They read it out loud
        In front of a crowd
    And everyone thought that it stank. (--dcoombs)
    ---
    A blank page is not to be read;
    It should be skipped over briefly instead.
        If you follow this rule,
        You'll not be a fool,
    Nor confusedly scratching your head. (--me)
    ---
    We made this page blank not for spite;
    Nor even to give you a fright.
        They're publishing woes,
        For everyone knows
    That chapters must start on the right. (--me, or maybe dcoombs)
    ---
    A blank page causes despair;
    Something's supposed to be there.
        Did the printer break down?
        Did the ink jets leave town?
    We were hoping that no one would care. (--my mom)
    ---
    Please send useless filler to
    poetry@worldvisions.ca

(The poetry@ address is long dead. You can still send useless filler directly to me, if you want. And people do.)

And the moral of the story is, um, dcoombs writes better limericks than me.

Bonus: Deleted Netwinder Jokes

Incidentally, the aforementioned Netwinder guys changed almost nothing about the manual I wrote for them except for two jokes, which I will record here for reference since they're now too bankrupt to sue me.

First:

    (Context: I'm talking about using email aliases as mailing lists. We've added several names, including Al Gore, who back in 1999 had recently invented the internet, to a "smart-people@example.com" mailing list.)

    You can edit existing aliases in a similar way. For example, if you realize that Al Gore isn't smart after all, you can remove him from the smart-people alias by clicking the word Edit next to smart-people in the alias list. Edit the list of destinations, changing it to just einstein newton, and press OK.

What did they change? They replaced "Al Gore" in my example to "Mickey Mouse." Mickey Mouse is widely agreed not to be smart, but that's not the point. Apparently insulting what would turn out to be about 48% of the American voting districts (more than 50% of the popular vote) was not expected to be good for business. Wimps.

Second:

    (Context: Here, I'm explaining the concept of virtual web domains.)

    Consider what happens when you phone the cable company to request a service. You'll be sent to a voice mail system that asks you to push one button for sales, another button for service, another button to check your current billing information, and so on. Now, you and I both know that the cable company only employs one person to answer the phone calls during normal business hours (1 PM to 3 PM on alternate Tuesdays). But because you've gone through all the voice mail menus and your selections show up on his computer screen, the representative can answer the phone differently based on your requests. For example, he might choose to say "Hi, you've reached the sales department, please hold," or "Hi, you've reached the service department, please hold," as appropriate.

They removed this paragraph completely. Apparently insulting all the cable companies in the world at once was a bit much for them, since they were hoping to license their product through cable companies (sound familiar?). Wimps.

Syndicated 2007-01-04 01:50:13 (Updated 2007-01-07 01:07:31) from apenwarr's log

2007-01-01: NITI in Retrospect; True Love

NITI in Retrospect

In the last little while I've been working at setting up a new company, having found myself in the odd situation of having easy access to financing even before I had an idea that needed financing. While convenient, that means I have a lot of responsibility, so I've been very careful not to take advantage of it until I know for sure what I want to do. Thus, I've spent the last few months trying to figure out what exactly that is.

During that process I've spent quite a bit of time discussing various options and theories and philisophies with a bunch of different people, and especially thinking back to the early days of NITI: what did I do last time I started a company? How did I know what was right or wrong? What mistakes did I make? What mistakes didn't I make? And what changed as NITI became more mature, so that what seems perfectly natural now in a mature company is completely the wrong choice when you're starting again fresh? The past seems like a good place to start. So I've decided I'll do a series of articles about decisions I remember from the early days of NITI, and their outcomes. I think you might find them interesting, and in any case I'm going to get a lot for myself out of writing them down.

True Love

Let's start with something relatively recent. In 2006, I went to the IBM Lotusphere conference to investigate and discuss the possibility of what is now Nitix for Domino. When I came back, I did a presentation to our developers that I titled "True Love," in which I described something important I learned at that conference.

At Lotusphere, there were two kinds of products being pushed by IBM. First, there was Lotus Notes/Domino and its addons. Second, there was the "IBM Workplace" series of applications. The former group had religiously addicted, passionate users who understood both technology and business needs; the latter had boring presentations and had been adopted by businesspeople who didn't know anything about technology. Incidentally, and you can quote me on this, the IBM Workplace technologies all suck rather massively. Lotus Domino, in stark contrast, only apparently sucks.

And this was my big revelation. Lotus Notes/Domino is rather famous among techies like me for having a gratuitously horrible user interface, for being slow and hard to install, and so on. All these things are true. But they have lots and lots of passionate users anyway who are in love with the product. Why? Because the core of Domino is so beautiful; I don't have the space to explain in detail right here, but at that conference I started to understand what that meant. The people who love Domino love it for very good reasons. When you use it to solve your weird business problems, it just works in ways that no other existing product does.

At the risk of sounding mushy, that revelation goes a lot deeper than my experiences with a random software product. What it taught me is the real difference between liking something, and really liking something, and being truly in love with something. I realized that being "truly in love" is a feeling that's not only reserved for that one special person in your life. But even when it's applied to a product, or concept, or company, it's exactly the same feeling. So in a slightly absurd way, Lotusphere 2006 is where I learned the meaning of true love.

By this point in the presentation I suppose I had alienated pretty much my entire audience, so I made a few jokes and drew diagrams with coloured balls and tried to make some kind of point about making our customers fall in love with our product. But the really important conclusion that I was drawing is that I had only ever been in love once before in my life, and it wasn't with a person. I was in love with my own life's work of more than eight years, namely NITI itself.

As I post the other "NITI in Retrospect" articles I plan to write, it won't sound exactly like a love story. But it is.

Syndicated 2007-01-02 05:30:42 from apenwarr's log

2006-12-31: Delirium 4: Isolation

Okay, this is the very last entry from back when I was having my kidney vacation. My mindset has changed a bit since I wrote this in my notebook, but I'll paste it here anyway for posterity, and because the Crazy Pills were a pretty good source of unusual thinking.

Delirium 4: Isolation

(Written around September 1st, 2006)

Before, I wrote about my precious instability that comes from keeping all my options open, constantly re-evaluating which direction I'll choose, but using a generally convergent decision algorityhm such that it seems like I'm consistent.

Given my subsequent career adjustments, I think I can claim that I at least wasn't totally lying about the whole thing.

But two recent events outside of my control have reminded me how, despite my best efforts, I've been "stabilized" more by the system than I had realized. Luckily for me, fate was conspiring to unlock my PLL, so to speak, and I'm more free now than I had ever realized I wasn't.

The two particular events I'm speaking of are my kidney vacation and the theft of my laptop.

First the laptop. The whole way it was configured - Linux, ion, text files, mutt, and so on, was based on the way I did my work before - in other words, my prior career. I have a feeling that my new work will be a lot more cross-platform and a lot more high-level, involving a lot more modern tools (like .NET for example). And I probably won't be developing operating systems for a while... so why not rethink it all from scratch? I think maybe I'll get a Mac this time. (Update: I did.)

Secondly, my kidney vacation really got me thinking. No, no, not about the fagility of life and the meaninglessness of it all and that kind of fluff. Come on, it was a kidney vacation, not a kidney failure.

No, it just gave me a lot of time to think about things I never think about because I'm too busy. And because of the absurd coincidence of having my laptop stolen right before I entered the hospital, I was really disconnected from all that stuff, probably more than I have been for 10 years. I spent a lot of time just staring at the walls and thinking, and I rediscovered something very important - I still like doing that. As much as we can talk about zone time and the genius of obsession, sometimes just sitting and thinking about stuff is really what's needed.

I think the most important that came to me during this time is just how little actually matters toward the final results in the end. I alluded to them in Imbalance and The Genius of Obsession but it deserves its own statement outright. Designers - like I try to be - tend to obsess about every little detail of their design and implementation, and woe be you if you stand in their way. And this obsession with details is, I think, a critical part of the genius creative process itself.

But I believe it's caring about the details that matters. The details themselves, the vast, vast majority of them, actually don't matter at all. That's why so many different creative ingenious things are cereated so differently by so many different kinds of people and teams in so many different places. All youneed to assemble are the essential ingredients and put together the essential details.

But which details are the essential ones? Well... I'm out of the hospital now. Perhaps I'll never know.

Attribution: this note is at least partially inspired by Stephen Wolfram's A New Kind of Science, which has an excellent discussion of how evolution actually reduces complexity rather than increasing it as most people think. His theory is that in fact, only a small number of factors need to be optimized for the system to survive - the rest are mostly just random. The argument is quite clever and I believe it can apply to all sorts of other systems, like the genius-creative systems I've been discussing.

Syndicated 2007-01-02 03:29:54 from apenwarr's log

2006-12-28: Influence

Influence

Here's a very concise summary of six factors people can use to manipulate you. The explanations are great, but the suggested self-defense techniques are pretty useless. Somehow that doesn't surprise me. Still, just being aware of these techniques can make you a bit more aware when people are using them on you.

Syndicated 2006-12-28 20:42:51 from apenwarr's log

2006-12-27: Please, please, steal my idea!

Please, please, steal my idea!

Now that I'm once again spending my time in the outside world, which is mostly Weaverless (and generally happy about it), there are a few things that grate on me endlessly.

The #1 worst one, by far, is everybody else's DHCP servers. In Weaver, we spent rather heroic amounts of effort making sure the DHCP server could do two things reliably: first, your workstation will always get assigned the same address every time it makes a request (as long as that address is still available). And second, if you moved a workstation from a static IP to a DHCP-assigned IP, the DHCP server would keep handing you that old static IP you used to use, as long as it was in the DHCP pool.

Everybody else's DHCP server software just gives out a random address from the pool every time. If you release/renew, you get a different random address. And if you switch a node from static to dynamic, it gets a different random address, just like everyone else.

The "everybody else" behaviour leads to a feature requirement that everyone seems to implement, called "DHCP reservations," in which you can (manually) tell the server that a particular MAC address should always get a particular IP address. If you do this for every workstation, you can get reasonable release/renew behaviour, because your dynamic addresses aren't dynamic anymore. Well, good for you. Weaver went for years without this feature, because the way it hands out DHCP addresses makes the feature perfectly unnecessary. Just set your node to the IP you want it to use, ping something, and switch it back to DHCP, and it'll keep getting assigned the same IP forever. (Eventually we implemented reservations because it's easier to give people what they want than to convince them they don't need it.)

A related Weaver feature that I sorely miss is auto-registration of hostnames in the DNS based on their WINS broadcasts. You're not supposed to do this, of course; WINS broadcasts are for WINS, not DNS. But it's so handy, because just starting up samba on a Linux machine suddenly makes its name show up in DNS. Windows machines don't care about DNS, of course, so Windows users never cared about this feature, but if you run Linux on your network, the feature reduces your DNS name maintenance (and the need to refer to local hosts by IP address) down to approximately zero.

Now, really, if I had just one of these features - a sensible DHCP server or an auto-registering DNS - my life would be okay, because I'd plug in a new machine, and with at most a one-time admin effort, it would have a name and an effectively static IP. But with neither - which is what all non-Weaver networks have - you have machines that hop IP addresses all the time and no way to register those machines in DNS! So you can't refer to them by name or by number. Just shoot me.

So here's my plea: someone, anyone, please steal the DHCP server idea and put it into your DHCP server software. Its basic form is trivially easy: when someone does a DHCPRELEASE, ignore them. (It's effectively a "please be stupid" request, and there's no law requiring you to be stupid.) When they do a DHCPDISCOVER or DHCPREQUEST, even without asking for a particular IP, look in your lease table and see if you have any (even released or expired) leases for that MAC address already; if so, give out the same one again. If not, now you can choose that random address, exactly once per MAC address. And if you're forced to choose an address but you've run out (because the above algorithm never expires a lease), reuse the oldest one first. You could even reuse DHCPRELEASEd ones before non-released ones, which maintains the spirit of DHCPRELEASE without being stupid.

If you think about it, the above isn't actually any harder at all than the boneheaded algorithm everyone uses. But it's so much better it makes my head explode. Ouch. There it goes now.

Syndicated 2006-12-28 10:45:48 from apenwarr's log

2006-12-24: Developer salary negotiations

Developer salary negotiations

Here's an excellent article about why developers shouldn't have to negotiate about salary. Short answer: they're bad at it and that's one of the reasons you hired them. But the article says it all much more eloquently than that.

Syndicated 2006-12-24 21:32:21 from apenwarr's log

2006-12-18: Alumnit; Reality

Alumnit

The first annual Alumnit Christmas party seems to have been a success, with almost nobody killed or MIA. And they even had special fireworks just for us!

Reality

During the aforementioned party someone from next door came to visit to ask us to keep the door closed, because when it's open noise will leak into the hallway and then into other people's rooms. They said this was because they were "filming a movie."

I've now gotten some clarification: two apartments on my floor are actually being rented to a Quebecois reality TV show which has been going on for several weeks. This explains in a much more understandable, yet somehow disappointing way, why I've met so many astonishingly beautiful French women wandering the halls around there lately.

Syndicated 2006-12-18 14:57:22 from apenwarr's log

2006-12-15: Notoriety

Notoriety

I don't have a point. I just needed to link to this cartoon, because it's astonishingly true. Don't forget to read the mouseover.

Syndicated 2006-12-15 14:04:36 from apenwarr's log

2006-12-13: Banks mining personal information?

Banks mining personal information?

pcolijn wrote about his suspicions that banks are "mining the data and no doubt selling it to all kinds of sketchy advertising companies" (referring specifically to CIBC in Canada).

As a newly-minted representative of the banking industry(*), I can tell you that this is actually nothing to worry about. First of all, Canada has pretty serious privacy laws that prevent people from doing various kinds of underhanded things without your permissions. Of course, you've probably signed away that permission by now. But secondly, banks are especially tightly regulated, and they just can't do that sort of thing, period.

Banks are only allowed to collect information about you that they need to run their business: in the case of credit cards, that means where you made a purchase and for how much, but not what you bought. And their own technology prevents them from collecting that information: they deliberately separate the credit card reader machines from the cash registers. A cashier enters the amount from the cash register into the reader, then you swipe your card and pay that amount. That means the bank never gets more information than the price, and the cash register never gets to see who you are or what your card number is. So the bank can't mine your product preferences, and the store can't even correlate one sale to the next. The store computer simply doesn't know who you are.

The bank could mine your store preferences, but they're not allowed to. And every single thing a bank does is examined carefully by government regulators, so it just doesn't happen. And even if it did happen, if they ever sold that information to someone else, the regulators would certaily have a heart attack. Banks only mine this information for security and fraud detection purposes. Or, in the case of CIBC, what seems to be an honest feature they created to actually help their customers. I know, I can't believe it either.

For stores, on the other hand, there are various ways to get around the mining restrictions. Any time you give a store your personal information, it becomes an information free-for-all. For example, loyalty/points cards do go through the cash register, precisely because the store wants to correlate your purchase habits. And cross-store cards like Air Miles mean advertisers can, and very much do, correlate your purchasing habits across stores. You didn't think all those stores just wanted to give you free stuff for fun, did you? That (combined with my laziness) is one reason I avoid loyalty cards.

I have no idea whether any of the above is true in the U.S. I do know they have rather, er, lax or nonexistent privacy laws. So watch out.

(*) Disclaimer: Everything I write anywhere is, at most, my own personal opinion, and sometimes not even that. I don't represent anyone or anything in the banking industry, least of all my employer, past employers, future employers, or clients, none of whom I expect to have any opinion on any topic whatsoever. But I don't represent them when I say that either. Please don't sue me. Thanks.

Syndicated 2006-12-13 14:52:27 from apenwarr's log

2006-12-09: Dueling Ambiguities

Dueling Ambiguities

A sign in the lobby of my apartment building today said, "Elevator will be shut down for servicing tomorrow from 11am to 2pm."

And someone had scrawled underneath, "Is tomorrow today or tomorrow?"

This struck me as interesting because the latter sentence would have been completely meaningless except in the meaningless context it was in. But in that context, it's a perfectly reasonable question. Sensical nonsense is one of my favourite literary forms.

Syndicated 2006-12-10 09:08:30 from apenwarr's log

215 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!