Older blog entries for apenwarr (starting at number 52)

Like Nature, Only Better

Today was an ideal spring day, and it reminded me why I like Montreal the way I do.

I had nothing better to do, so I went for a walk in Parc Mont Royal. The Sunday "Tam-Tams" session was in progress, which as usual made me think of self-organizing systems, but that's only tangentially relevant to my story. I found a little stream of water coming down the mountain - it's been raining a lot in the last few days - and decided, again, because there was nothing better to do, to find out where water comes from.

"Up" is the obvious answer. I traced the stream to a culvert and out (well, in) the other side. Then another, and finally to a hole where it seemed to disappear underground - well, appear from underground. Not to be stopped that easily, I followed the slope a surprisingly far distance uphill, and found at least two places where streams of about half the size as the original one went underground. There being only one of me, I decided to follow only one of them.

The slope was getting steeper as I got to the more "serious" parts of the mountain, and I noticed my stream - it was "my" stream by now - was shrinking. Looking back, I could see that a few little irrelevant trickles, feeding from every direction, joined my stream occasionally; as I passed each one, my stream, of course, reduced just a little bit each time.

Time passed, and I followed my stream to what eventually turned out to be its source - another tiny, irrelevant trickle, just like all the ones I had passed, coming from a small puddle in some wet grass. There was no big impressive lake draining, no mountain spring shooting water from a crack between two rocks... just another trickle, just like all the others.

I try not to post anything here unless it has a point. Perhaps you think my point will be something trite, like, "There's no ultimate source of power, and nobody is very strong all by himself; real power comes from a lot of little, irrelevant ones acting together." Yeesh. I hope you give me more credit than that.

I looked back down the hill toward where I had started. One thing I hadn't quite noticed on the way up struck me: that the walking path through the park seemed to stray back and forth rather near my little stream, without ever getting wet. In fact, the streambed wasn't entirely random; every so often, a culvert, or ditch, or cobblestone bed, or bridge, appeared, designed to keep the stream flowing smoothly out of the way of the path without allowing any flooding. Humans had been there before me, not just tracing the path of the stream, but adjusting it, controlling it, making it just slightly different so that it would work the way they want.

People are not the little, irrelevant trickles that combine together to become a mighty torrent; don't think of it that way. The irrelevant trickles and mighty torrents are just the forces of nature. People are the things that - with the right, tiny effort, applied in just the right places - make those torrents go just the way we want.

And this is why I like Montreal: other places I've been, like Toronto or Ottawa or New York or even Thunder Bay, give you the feeling of a great battle with nature that we won; to build New York, you can imagine that we gathered some trickles, created a big torrent, and blasted it at everything in sight until we built a monument to our power. There's nothing wrong with that - New York is very inspirational that way - but that's not how I feel in Montreal. What I feel here is that we handled things more like we handled that stream; we let nature run its course, and adjusted just a few things along the way. No excessive force; just a little tweak here, a little tweak there. The mentality here is different that way. I like it.

21 Apr 2005 (updated 21 Apr 2005 at 17:41 UTC) »
dcoombs wins

"I bet I'm going to be delicious!" the sheep said, a tad pre-sumptuously.

Deep Thoughts

Must come up with pun involving the word "pre-sumptuous." It's a tricky one.

Stupidest anti-correctness-proof argument I've ever read. But worth reading anyway, just for insanity value.
On Being Obviously Smart

Adrian: if people tell you you're smart, try ordering them around and see if they'll do what they're told. Works for me.

Safe kernel crash dumps

So over the last few days, I've spent altogether too much time messing with kmsgdump, a tool that takes your 'dmesg' output and dumps it to a floppy or the parallel port. Although there are other similar projects, like LKCD and kdump (sorry, no link), they make me nervous, because: HELLO, MY KERNEL JUST CRASHED! STOP TRYING TO USE IT FOR STUFF! You'd think this would be obvious, but LKCD actually has the nerve to go and run your disk driver, spewing interrupts and DMAing data all over the place. Sure, it seems to work fine... but that's because all the crashes I'm having right now are simulated ones. What happens if it's my disk driver having the problem, or the interrupt handler is dead, or... anything? Answer: uh, well, there's no documentation that even discusses this possibility.

kmsgdump is better, because at least it's written by paranoid people. In fact, it's so paranoid that it reboots into real mode and uses the BIOS to write to a floppy. Well, that's pretty safe, but unfortunately most Nitix systems don't have a floppy disk. So what do we do? Adapt it to write to the hard disk, of course. Yes, I realize I'm a hypocrite. :)

I did this as carefully as possible: it reads each sector from the disk into memory first and checks that the sector's signature is exactly right before it writes it back, so it's extremely unlikely that you'll manage to write the wrong sector; and in the end, the only danger you have to worry about is writing the wrong sector. We generate the target file in advance from Linux, lilo style. And it actually works!

I'll be contributing the changes back to rddunlap in case he wants them, but he currently (rather rightly) thinks I'm crazy. Meanwhile, if you think you need something like this, let me know and I can send you the patch.

And once upon a time I used to think that Linux never crashed...

Blue Man Group

At a suggestion from mich, I went to see Blue Man Group while I was visiting New York this week. They're really good. And, like I've heard from other people, awfully hard to explain.

The thing that struck me was how well done the whole thing was. The best acoustics I've ever heard anywhere. Really excellent synchronization of all sorts of people doing all sorts of things. (Synchronizing multiple people with that kind of sub-second accuracy really ought to be impossible.) Audience participation that actually works. Metaphysical ponderings. Streamers. Paintballs. Flying toblerone. And all executed amazingly well. So go see it.

I have no idea if they're the same as the Blue Men in Las Vegas, but I bet the acoustics are different there.

On Perfect Execution

All that makes me think.

For the last few years I've repressed my perfectionist streak, the idea being that it's better to successfully do lots of very good things than attempt to do a single thing perfectly and then fail. I think I can trace this back to first year university, when my marks changed from formerly being "let's see if we can get 100%" to "I sure hope I pass this exam." It's also the first year I ever heard of "diminishing returns," which is really the most fundamentally important concept in all of engineering. Computer Science people, and artists for that matter, don't hear about it much. It's a simple concept: if the last 10% of the work takes 90% of the effort, then you can often just skip doing that part. Your test scores, for example, will still be about 90%. And it really works, but it's not very fulfilling.

I tend to judge my work and other people's work on different scales; a kind of double standard. A lot of work that I mostly consider fine when done by someone else wouldn't really be acceptable to me if I did it. And since I'm delegating more and more work all the time, my overall happiness with the result tends to suffer. With years of effort, products get more and more complete and useful but less and less perfect.

People who know me know that I can be a bit harsh sometimes when I'm disappointed in some piece of work. The real problem, though, is how little time I have to criticize (constructively, one would hope) the many little details that really deserve it.

Are they pleasant to work with? Hard to say. It's like he doesn't have much invested in any particular personal transaction, so this feels like an irrelevant question.

Do they work well in a group? Not from what I've seen. He needs to work on his own, just stepping into other groups to give advice or contributions of handy tools, so forth; exactly what he does now.

-- from the Deniz archive

Multiple Intelligence

It's not exactly as if I had nothing better to do, but I was eating while browsing the web last night and randomly clicked on the (yet another statistically invalid) personality test that drheld had linked to. Now, this is perhaps the most statistically invalid psychology experiment I've ever seen, but I won't harp on that.

This test is called the "Rogers Indicator of Multiple Intelligences", ie. a mushified IQ test that everyone can feel good about taking, because you can't fail. And if you do, it's okay: the questions do nothing to test statistical validity of the answers, so just lie! Oops, sorry, I'll stop harping.

Anyway, drheld said he, "not surprisingly", ended up being in the "Logical/Mathematical" category. That sounded sensible to me, so off I went to discover that my fate was identical. Lo and behold, I was wrong: in fact, Logical/Mathematical was third, trailing "Verbal/Linguistic" and "Intrapersonal" (not "Interpersonal", that's another category) by a pretty wide margin.

In other words, I'm a communicator. An introvert communicator. Just shoot me.

Only *Almost* Crazy

I spent this week on bare inside edge of "completely out of control", jumping from project to project and person to person giving advice that, luckily, appears to have been correct more than 75% of the time. "Isn't your problem just that?" "Oh, of course!" "Could we do it this way instead and do almost no work?" "Oh, right!"

I have a feeling that most of these things just needed someone with a different perspective to look at them - and because I was constantly coming at one project after looking at a totally different one five minutes earlier, I was guaranteed to have a different view of things than the person who was stuck. It's convenient - you can look smart without having to actually be smart all the time.

Since all the due dates appear to have turned out to be Monday morning, I guess I'll find out then just how smart I am. :)

People Hacking Again

Today I was introduced to an area of Montreal that actually has streets with special bus lanes. This is actually funny for Montreal, which has great public transit (including a subway we call the Metro, as all good Franglish speakers will do) but such generally bad road systems - I personally suspect they are deliberately bad to discourage automobile traffic - that buses tend to move rather slowly.

These bus lanes are in the usual North American style, in which they paint little diamonds on the pavement and you're not supposed to drive your car there during peak hours. But there are two minor surprises involved. First, the lanes are the two center ones (one in each direction) instead of the outside ones. Second, and this is the fun part, in order to discourage people from driving their cars in them during peak hours, the bus lane on your side of the street is going the opposite direction from your car. That is, the left lane goes forwards, and the right lane goes backwards, if you see what I mean.

Aha. You see what I mean by "deliberately bad." It's obviously a great way to keep drivers out of the bus lanes - in that they're going to have a head-on collision with a bus if they drive there. But on the other hand, well... this scheme has actually been put out of service recently, "due to too many accidents."

There's a twist: the accidents were actually *not* cars having head-on collisions with buses. They were pedestrians getting run over by buses, because they would only look one way, run towards the median, and then get hit by a bus coming from the wrong direction.

Why am I telling you this story? Well, because it just struck me that there was a completely obvious reason that this scheme shouldn't have worked, and that problem didn't happen. Drivers just spend too much time staring in front of them to not notice an oncoming bus on the rare occasions where they're driving in the bus lane illegally. Instead, the scheme was doomed for a reason we *didn't* expect, just like a perfectly valid-sounding scheme could have been. So the moral is: don't judge a book by its cover? Theory vs. practice? Don't be afraid to try new things, because they'll fail anyway? I don't know, you tell me.

Supposed USB GPL Violations

In other news, hub mentioned someone accusing Silicon Labs of "blatantly" violating the GPL by writing a binary-only Linux USB driver. The theory goes that to do this, you "obviously must have" included the Linux USB header files, which are GPLed, and are therefore creating a derived work.

But actually, this is not necessarily such a "blatant" license violation. There are special copyright exceptions for things that "could only be useful if written in a particular way". For example, most legalese cannot be copyrighted, because there is theoretically only a limited set of ways that you could use to objectively say what you need to say about a particular legal problem.

It has been argued that the same could apply to C header files, because if you want to talk to the Linux USB layer - a perfectly legal thing to want to do, unless someone wrote a DMCA-enabled license stopping you from doing so (and *that* surely wouldn't be GPL compliant!), you *have* to use the structs and code defined in that header. You could reverse-engineer the interface, but some people would say you don't have to. Similarly, to write any Linux driver you pretty much end up including at least some of its headers. This has always been declared okay up to now - at least, I'm pretty sure Linus has said so explicitly.

(This all doesn't apply to "normal" code. There are lots of ways to write a program that does something. There may be only one sensible way, in C, to talk to another particular program. Remember those people who compare "interfaces" to "contracts"?)

What's the legal standing of all this? Beats me, the GPL has never been tested in court.

By the way, IANAL, YMMV, and so on. Please don't sue me.

43 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!