Monday, September 27, 2004

No Need to Work

AIM conversation today, before work:

<rml> don't bother coming into the office
<joe> why?
<rml> everyone, dead.
<joe> some sort of food poisoning?
<rml> if only. an ostrich got lose in the building.
<rml> for some reason, it had knives attached to its feet.
<rml> it was a one-bird killing machine.
<joe> well
<joe> only one person can bring down that bird
<joe> and i am that hero
<joe> if i die, tell my wife i love her

Joe, Ostrich Fighter, at a party at my place some months ago

Sunday, September 26, 2004

Regular Expression Magic

Sven: The behavior of [foo] expansion in regular expressions depends on your locale. In the traditional Unix C locale, [A-Z] is [ABCD...], but in other, newer, fancy-shmancy locales, characters are sorted in dictionary order, so [A-Z] is annoyingly [AaBbCcDd...], which is probably not what you want.

So you can set LC_ALL to C before running sed(1) and you should be good to go. This is probably the difference between the different distributions: different locales.

You could also use named character classes. I believe that [:upper:] means, in a nice locale-independent manner, all uppercase letters, where as [:lower:] means all lowercase letters. The brackets are part of the named character class, so if you want to specify the equivalent of what you and I think that [A-Z] means, you would do [[:upper:]].

Hope that helped, duder!

P.S. Your Hackergotchi make me think of of a European Nat. Which is not at all a bad thing, I promise.

My Special Day

Birthday was good.

Under the Golden Gate

Chatting with Luis and Joe the other night about why we do what we do. Software engineering is so wonderfully unique; it is the purest engineering application of logic, yet rife with creativity. We work with the most malleable media, essentially pure thought-stuff, confined by nothing physical, where a concept can go from first idea to implementation in minutes. Software does not require year-long experiments or expensive materials. And I really believe that we are at the point in software where truly awesome work is possible. There are few things that I would rather be doing.


Eric Shrock replied to Greg's retort of Eric's original post. I still do not agree, but his second round of arguments are a lot more valid than the first. He still misses the point, though, mightily. Greg again replied, although I think that he is addressing the minutia, these technical issues like serviceability (which I do think we are lacking in, if you are talking about a space such as HA enterprise where it is needed), and not the big picture that Eric is missing, which is what Linux is all about and how solid the kernel really is in comparison. If Eric's argument is that Linux is unacceptable because the kernel community is not welcoming of technology, such as servicability, that Solaris deems important, what happens to his thesis when Linux does get these features, which it ultimately will? What about the features that the other 90% of the world care about, that Linux already has and does better? Even these points are not the point, however, which is that with Linux and the community and open source, in time the kernel will converge on the missing features and sore points. And then what? Linux is already a solid well-designed kernel and if it is just n features that keep one away from it (and not even the lack of those features, but a perceived lack of interest in the community for those features), where is Solaris when Linux adds crash dumps (which exist in patches anyhow and vendors are shipping)? What then?

You need an argument more to the core, more fundamental than missing features, dude. But it is not my grave.

My Bike of Wanderlust

inotify hacking continues. Updated patches are available. John added the finishing touches on MOVED_TO/MOVED_FROM support, so you can now see the source and destination file on any rename and move. Also got some bug fixes, code cleanup, queue management, more specific events (not just, say, CREATE but more specifically, say, CREATE_SUBDIR), and so on. Looking good.

Trow set up a nice new domain for Planet Beagle.

After seeing Shaun of the Dead, it is clear that JimmyK is really ZombieK. And, no, even as a zombie he still does not have a job.

Thursday, September 23, 2004

We covered your desk in dead raccoons

Erick Shrock recently blogged on the issue of Sun simply moving to Linux. He suggests that such a move is impossible due to various properties of the Linux Kernel community. I am a rare discontent-member of that community, more outspoken than others, and I still disagree with his points.

My Feet

My friend and fellow kernel hacker, Greg K-H, offers a good rebuttal.

Updated inotify went out last night, with a new queue overflow signal and a lot of cleanup and fixes.

Wednesday, September 22, 2004

This is uncalled for

Last week, I setup Planet Beagle to allow the world to see the 24/7 lives of the Beagle hackers, those cool cats, who apparently have knives. Garrett kicked up the stylish look in minutes and it was then and there that I realized the power of our awesome design team.

We are slowly transitioning more hackers -- some insanely clever, handsome, and charming hackers -- to Beagle and related hearty endeavors and I am excited, eager for the tasty foodstuffs we shall unleash on the hungry world.

Dinner with Thomas while he was in town. On his left, World's Best Manager.

Everyone seems quick to deride the blunder known as "dnotify" and applaud a replacement, any replacement, man anything but that current mess, but in the name of fairness I present my treatise on why dnotify is what one might call not good:

  • dnotify requires the opening of one fd per each directory that you intend to watch.
    • The file descriptor pins the directory, disallowing the backing device to be unmounted, which absolutely wrecks havoc with removable media.
    • Watching many directories results in many open file descriptors, possibly hitting a per-process fd limit.
  • dnotify is directory-based. You only learn about changes to directories. Sure, a change to a file in a directory affects the directory, but you are then forced to keep a cache of stat structures around to compare things in order to find out which file.
  • dnotify's interface to user-space is awful.
    • dnotify uses signals to communicate with user-space.
    • Specifically, dnotify uses SIGIO.
    • But then you can pick a different signal! So by "signals," I really meant you need to use real-time signals if you want to queue the events.
  • dnotify basically ignores any problems that would arise in the VFS from hard links.
  • Rumor is that the "d" in "dnotify" does not stand for "directory" but for "suck."

A suitable replacement is "inotify." And now, my tract on what inotify brings to the table:

  • inotify's interface is a device node, not SIGIO.
    • You open only a single fd, to the device node. No more pinning directories or opening a million file descriptors.
    • Usage is nice: open the device, issue simple commands via ioctl(), and then block on the device. It returns events when, well, there are events to be returned.
    • You can select() on the device node and so it integrates with main loops like coffee mixed with vanilla milkshake.
  • inotify has an event that says "the filesystem that the item you were watching is on was unmounted" (this is particularly cool).
  • inotify can watch directories or files.
  • The "i" in inotify does not stand for "suck" but for "inode" -- the logical choice since inotify is inode-based.

Beacon of Hope

I have been hacking on inotify, patches left and right, forward progress being made. Both patches and SUSE kernel RPM packages have been made available. I am working hard, fighting strong, but change like this in the kernel is hard.

Last night, JimmyK and Shaw of the Dead and I earned another first place trivia victory. Seriously now.

I also sold my Canon 10D to JimmyK, who will soon be traipsing around India and wherever else adventure is to be found. I hope he has fun, because I am going to miss him.

Monday, September 20, 2004

There is a Turkey Vulture at the Federal Building

This weekend found me holed up in 1369, drinking tea, writing. Fingers to keyboard, writing apace, but the lure of Sunday's absolutely wonderful weather got me out before long. Late afternoon and I was walking along the Charles, taking photos. My camera and I ended up in Harvard Yard, Autumn had not yet taken toll but the trees were beautiful nonetheless. I stumbled across a big BBQ, for freshmen or student's in the dorms or whatever, and I enjoyed a nice hamburger and chatted with my classmates.

On Saturday, I ordered a bunch of books from on Graph Theory and related matters in Discrete Math. I often find myself in these kicks where I get a ton of books on a single topic and immerse myself in the subject. Last year, it was Emergence and Self-Organization and Swarm Intelligence. Next, I hope that it is salmon and other anadromous fish.

My insanely awesome library

And I need new books; over the weekend I reread ASWOHG, the only book I think I have ever read more than once, certainly one of my favorites.

After my meal at Harvard, I met up with Anna and JimmyK and Pat and Taylor for trivia. First place, natch.

What JimmyK looks like winning trivia

Still playing with inotify. Version 0.92 is posted. I built SUSE kernels with inotify support.

Aside from the obvious - 8.2 megapixels, 5 fps, a huge buffer, 9 AF points - a few other properties of the Canon EOS 20D are working to convince me that this was a worthwhile purchase, a true successor to my 10D, not just a move to bring feature parity between Miggy and I. Among others: A B&W mode, 1/8000 shutter speed, no more wussy mirror sound, and instant on.

Also, today, walking to lunch with Davey and Joey, we discovered a large turkey vulture in front of the federal building in Cambridge. Further investigation uncovered that the vulture is part of an overzealous janitor's plan to secure the building against terrorism. Apparently, and I kid you not here, I would never lie, the turkey vulture is a trained attack bird and will maim any intruders to the lucrative terrorist target known as the Department of Transportation.

This is going to be a busy week.

Friday, September 17, 2004

He thinks I cannot understand when he speaks Spanish

Last month, when the Canon EOS 20D was first announced, I casually mentioned to Miguel my interest in this fine beast, and how it was a worthy replacement for our 10D's. Today, eating pizza in the lounge, Miggy walks up, smiling, smug. Come in my office, duder he says. The light shining through his window, there in his office is a brand new 20D. I couldn't let you be the only cool cat. Wow, this baby is nice. I mean, unlike the 10D, the camera boots up immediately. I was losing precious minutes like Nat loses his house keys. I sprinted, well it was more of a jog, who am I kidding, I walked briskly to Calumet, a photo shop here in Cambridge. I would not let Miguel's reign last long.

The first photo with my new Canon 20D

It lasted twenty minutes, max.

Monday, September 13, 2004


Spent the weekend in Sebastapol for Foo Camp. Holy crap. The theory goes like this: Get some 150 odd people together for a camp out. Provide meeting rooms, food, drink, and Internet access. Don't even furnish a schedule - no, no, we are all into self-organization so just throw these people in a room and have them plan the entire conference in an hour. Fanciful, eh? Well, it works.

It has been a whirlwind camp out, numerous talks, too much wine, my broken ass tent, amazing people. The father of the Macintosh brought his teeny remote controlled plane. Some dude has a Segway...that he designed and built himself. Rockets flying in the sky. A chocolate printer (that is, a printer that prints chocolate, not a printer made of chocolate; in this case, the printer was made of legos).

My definition of it all: The sort of place where you can be talking shit about Perl or SPF and, lo and behold, there is Larry Wall or Meng Weng Wong and, well, now you gotta back up those words. I was exceedingly fortunate for the oppurtunity to go. Thanks, Tim.

Golden Gate rushing by

Occasionally, we stopped

Nat picked me up at SFO. We hung out in the city a bit, stopped at Peach's, got lunch, went to REI to get me a tent, visited the Golden Gate. Finally we made our way north. We stopped some more, got coffee, went to Kinkos, regaled ourselves of Flipper Johnny.

At Foo Camp, I had great conversation with Stuart Cheshire, the Zeroconf/Rendezvous/OpenTalk architect and Apple employee, about the Rendezvous client library on Linux, its license, and how we both know that this stuff rocks and is superior to UPnP so let's get on this. I think good things will be happening there. Zeroconf (or whatever it is called today) is an amazing piece of technology, at once very simple and greatly useful, and something we really want to have pervasive throughout Linux.

Nat and Orkut

My Tent aka The Worst Tent Ever

Edd is here. I don't know why they let these crazy Englishmen in. Anyhow, if you have not bought his book or mine, please do. When the two books are near each other, they glow. The ability to light a room is alone worth the purchase price.

During the camp, I heard from Greg K-H that the Kernel Events Layer found its way into his driver BK tree. It will not make 2.6.9, but will end up in an early 2.6.10-pre release. Sweet. Also, I rolled a GNOME Volume Manager 1.0.2 tarball, final for GNOME 2.8.0. Now to hack on inotify, because holy crap does dnotify suck.

Unfortunately, the weekend had to end and I am now back in Boston, in time for another crushing first place victory last night at Charlie's in trivia. I left Foo Camp with renewed motiviation and staggering hope for mankind.

Friday, September 10, 2004

Joey for President

Released GNOME Volume Manager 1.0 (nothing but translations since 0.9.10 and the GNOME code freeze, I swear)! Shortly after, put up version 1.0.1, which will, barring any last minute commits, be the GNOME 2.8 tarball.

My friend Chris has been toiling away in South Carolina on his snazzy new programming job. I miss his humor.

Thursday, September 9, 2004


Leaving tomorrow morning for Foo Camp. Nat and I are driving up from SFO and unlike last year, I have ensured that we are not going to confuse Sebastapol with a similar and nearby city such as, say, Portland. Unfortunately, however, the imperviable writing machine Chuck Palahniuk has not peppered out any travel writting for this destination.

The whole Foo Camp thing is pretty excited, and I am really psyched.

Much to my delight, snorp's "Bangkok Brothel" icon is not the only creatively chosen icon in his new applet.

red-carpet, resapplet, rhythmbox, netapplet, gaim

In this striking rendition, he pulls out all the stops: this icon may scream "you just rolled a three" to the uneducated, but what it really means to say is "you have updates available."

Jakub, Tuomas: The new resapplet icon is sweet. Thanks!

Clearly, I am the Applet King.

The third large hurricane of the season is distressing and depressing. In the monkey office, Luis and I, what with both being Florida boys and all, have been keeping abreast of all of these hurricanes with trepidation, and all of our friends and family back home are in our thoughts. This latest bastard storm looks like it might head straight for Gainesville, which would suck since Central Florida is nowhere near as "hurrican proof" as South Florida. All of my friends at school are certainly not worried, though, but surely only thinking will they cancel class? and dude, will the bars still be open? but I still wish them the best.

Been poking at inotify lately. I like it. I think using it for file change notification and kernel events layer for general asynchronous events is the way to go, providing the infrastructure for bringing kernel-desktop integration into, you know, the 21st century, or at least the 20th century.

Which reminds me, during my talk at OSCON, someone in the audience asked why something or another I was talking on was so important. I replied, "Dude, this is the 1990s, we need to get with it." I am suck a dork.

Anyhow, the kernel events layer is finally remodelled as signals emitted from kobjects and is now tied into sysfs. Andrew merged the patch into 2.6-mm.

Wednesday, September 8, 2004

Manitoba Karbone


Last week Joey moved from Brookline to Inman Square, which is nice as he now lives closer to me and to Charlie's. He is also a lot more talkative these days, presumably since he no longer has Jacob's witty conversation to engage him on a daily basis.

Joey's new place is very near Bukowski's, which segues me into my real reason for writing. He and Nat and I found ourselves there last night. Early in the night our waitress mistook Nat's youthful exuberance for something else and she cut him off. I was laughing pretty hard, but I did catch Nat proclaiming "but I am a 27 year old man!"

Sixty six percent of my home is now covered by AirTunes.

I seem to have a lot of applets:

red-carpet applet, resapplet, netapplet, gaim

That first icon is snorp's "Bangkok Brothel Emergency Exit" icon. What it means to say is "you have no updates available." Such a bounty of applets really drives home the need for a smarter more extendable gnome-session.