Change Displayed Text SizeGrow Displayed Text SizeShrink Displayed Text Size


Saturday, May 10, 2003

A big shout out to the guys at Unsanity, who not only write pretty good MacOS X software, but also have a pretty cool weblog. Now if only we could use Labels X as a way to add BeOS-like attributes to the Finder..... life would be better.

5/10/2003 01:31:42 AM ] [  ]



Sometimes hope is the only thing you have left to ground yourself in the world, and sometimes even that gets taken away from you. Some of the things I had looked forward to, that had given me hope, have changed. I'm left floating in uncertainty, my brightness slipping away.

From 7th grade on I ran. I ran cross country, and a little track, mostly because soccer got to be less and less of a challenge. One year for field day I did the distance run and actually finished. The next fall I signed up for cross country and not soccer and that was that, I haven't really played soccer since. XC was challenging, I had to push myself harder with each run, and though I wasn't the fastest runner I felt good in that I finished, and I suppose a lot of people couldn't do that.
I remember what it was like, to feel almost beaten, to want to walk it, to feel my knees burnt out and running on autopilot, to be numb with oxygen and endorphins, to almost want to quit and then see that finish line. Nobody cheered, really, at cross country meets. No girlfriends came out to watch a boring run. It was you and the finish line. It was you an the line you picked across grass, gravel, rocks, roots. When you saw that finish coming up, it could feel like it was in your hands, or it could feel like it was still 5km away.
The finish line in this part of my life keeps getting moved farther away. And I feel it.

5/10/2003 12:50:24 AM ] [  ]



I'm actually in a really bad mood, so I'm working on "unsolvable" problems to get my mind off things.
For a good portion of the week, I've been thinking through the problem of grouping emails reliably into threads. That means turning all those various "Re:Re: You are a putz" and "Fwd:I thought this was funny but I have a poor sense of humor" chains of emails into their own groups of messages. So the original "You are a putz" message has all of it's child responses grouped under it (at least in the data itself: not necessarily in your view of the emails). It's a surprisingly difficult problem, since all the various mail software handles even such basic functionality as replying to a message differently, and none of the popular email clients (Microsoft products in particular) follow the long-established specifications for what information should go where in an email's envelope (bet you didn't know email had envelopes, huh? that's where all the really good stuff is hidden, like the subject of your email). So to come up with a solution that can handle even most kinds of email messages is pretty difficult. Every time your store of email changes - like you get new mail- you have to go through all of your mails and rebuild a sort of "mental map" of what messages are connected to other messages.
This tends to get complex very quickly. For a mailing list or newsgroup service, it's much easier since you see pretty much all sides of a conversation. With an email client program, however, you are usually missing parts of it (your outgoing email, usually), and dealing with that is also complicated.
After a lot of searching with no end in sight I actually happened across [this small paper] on the subject, which also happens to be part of a draft to [extend IMAP to handle threads]. There is a slightly easier to read explanation of the algorithm [here]. Though it was hard for me to find, thank god that [jwz]([[blog]) was able to make it public. Unfortunately, it's pretty difficult to implement, and the Grendel implementation he wrote is pretty far from being a standalone object or class, it has some odd dependancies that make it difficult to read and work with. So I now don't have to think about how to build threads so much, but I do have to implement someone else's deeply nested process, which ain't fun.
There's a good reason that I'm implementing what some people would think is superfluous functionality fairly early in the development of an experimental portion of the UI. Yeah, say that 10 times fast. Every discussion is important, and the links between messages are often more important than the conversation itself. Rarely does an email message make any sense when it's alone. Taken from the context of the discussion it's a component of greatly reduces it's value. And that said, every mail message window that's part of a larger conversation will have a display readily available that can take you to the other parts of the conversation. So it's quite a bit like any message on [].

The other problem I am working on is People, or the "Peeps" map. Some email clients include a "PIM" or Personal Information Manager. These were all the buzz a few years back, but they're really just rolodexes. Two contact managers that stand apart from things that are glorified Rolodexes (like the MacOS X AddressBook) are [SBook5] and [Six Degrees]. SBook5 uses AI to build your contact database. Six Degrees scans your email (unfortunately, only working with Entourage/Outlook, not even IMAP) and builds a database from that, mapping connections between contacts.
Remember when I said the links between things are more often more important than the things themselves?
Creating a map of associations between contacts is important. Creating one that's fast to search is important for EvilToaster, since things like auto-completion of addresses is nice to have. Six Degrees builds a map based on the idea of "Six Degrees of Separation". A [project] at Columbia is trying to find out if the Six Degrees of Separation idea is true, but for our purposes it might as well be. The social networks we form through electronic communication are important not only because of the people forming individual nodes, but because of the shapes the network takes. The funny thing is, these kinds of maps of associations are very much like the kinds of data structures I used to work with in 3D, and leveraging my experience with 3D meshes is helping this along greatly.
That doesn't make it lot easier though. It's still very hard work, and a lot of though has to go into it. A lot of people would ask why I'm not using some kind of relational database for these things- relational databases, when actually being used for more than glorified hash tables, are actually slow and ugly and heavy. I looked at using [Prevayler], but the jury is still out on that in my mind. That could easily just be used as a post-step for serializing the data.

5/10/2003 12:37:32 AM ] [  ]


Thursday, May 08, 2003

Evil references

Some of the documents influencing the design of Evil Toaster:

Mail as a personal information space:
People as objects:
[Six Degrees]
Embracing the user:
[Developing Schemas for the Location of Common Web Objects]
[Apple Squandering The Advantage]
[Quinn's Human Interface Subtleties]
Being a good Netizen:
[Email Netiquette]
[Good Netkeeping Seal Of Approval]
[Embracing Standards]

At some point I'll go into more detail on why these things are important, but for now, start reading.

5/08/2003 10:32:59 PM ] [  ]



So with this new redesign, I'm also sketching out what I want to do when I bring the blog from blogspot to my own server.
Being the weirdo I am, I'm not going to use MoveableType, etc.; I'm going to implement my own blog publishing system. Right now, after giving it much thought, I'm heavily inclined to host it on BeOS.
Scott Hacker's old BeOS Tip Server ran on beos, and was very much like a weblog itself. He managed to set it up using shell scripts to work with BeOS's database filesystem, which opens up a whole lot of cool possibilities. You can look at a rundown of how his TrackerBase worked [here].
What sucks about BeOS is the network performance. It's significantly better in the leaked Dano, but since I just came into posession of a dual processor 604 Mac, I need a PowerPC OS and I don't think that Dano included PPC code.

Of course, if you want to make me happy, you could always help out by providing:
[A dual processor PC]
[2 processors for it]
And then I can run Dano on a nice dual processor machine and provider really cool blog hosting and other things for Chelle and I.
Come on. You know you want to fork over $200 for that.

5/08/2003 05:00:52 PM ] [  ]


Wednesday, May 07, 2003

Quality Hardware

Well yesterday my Xbox arrived from, but the games didn't arrive till today. I ran out to Blockbuster last night, and they, of course, didn't have any games worth playing anyway.
So imagine my glee when I look at the USPS tracking info for the games at work and see they have indeed arrived. When I got home, I opened up HALO, put it in, and got:
07 Your Xbox requires service.
Needless to say, I'm not happy. After a bit of research, I found that error code 07 is ["hard drive time out"]. So now I have to exchange it with Overstock or pay $75 for a new motherboard and hard drive from It doesn't help that Overstock requires all the original packing materials for an RMA, and I was lucky enough to retrieve them from the trash, though not before someone had used the boxes to get rid of some really skanky beer.

Yeah, I gave myself a birthday present and it was defective. Not happy.

5/07/2003 09:01:24 PM ] [  ]


EnGenius 200mW card for $70 has the [200mW EnGenius card] with antenna for just $70 now, and you can use coupons mentioned before for additional money off. I have the ~100mW version and I'm very happy with it, using the IOXperts driver, and I'd highly recommend the EnGenius cards to anyone.

5/07/2003 05:32:26 PM ] [  ]


Experimental changes

Yes, I'm playing with changes to the template.... have fun with it

5/07/2003 12:12:07 AM ] [  ]


Tuesday, May 06, 2003

Calendar Widget

Yes, I realize that the javascript calendar widget over there -->

is a bit messed up. I'm working on a new template, and eventually moving this all to the little Sparc Classic at my toes, but until then you can just suck it up, ok? :)

5/06/2003 10:38:25 PM ] [  ]


NSDisclosureButton.... conquered.

Some of you might have noticed this little button all over MacOS X since at least 10.1:

We're talking about the little arrow on the right that when clicked drops down a detailed view of your files. You might have also noticed that you never see it in non-Apple applications unless it's in a File dialog. For whatever reason, Apple decided not to make that widget available to developers outside of Apple.

This is one of the things I really do not like about "the new Apple" but I don't want to get on a rant here.
The class that creates that button is the private AppKit class "NSDisclosureButtonCell". Once you know the name of the class you can actually use it without much trouble, though it's a little tricky. After some playing around, I have a working example (note: just the button, not the disclosable view behavior - for that, use [DisclosableView]). You can download the source and ProjectBuilder project [here].
I'll probably update it soon with a fallback class so that if NSDisclosureButtonCell is not available, the button would still be functional. The source is free to use, and if you have comments or improvement, please let me know.

5/06/2003 10:33:37 PM ] [  ]


Monday, May 05, 2003

Kill me now.

I'm pissed.
Literally. I was ready to go to bed. Really I was. And so I went to the bathroom to pee. Now, unlike some folk, I tend to pee sitting down. Now, I sat down on the old terlet and it hit me. A cold slap to the nuts hit me, cold water that had been sitting there all day lapped at the Family Jewels. I'm not stranger to this, it does happen from time to time that the old swingset gets a little wet. It's a hazard of have big ole brass ones. Lacking much depth perception, and light since the bathroom has been without a working light since The Incident (the last incident, that is), as I peered into the icy clear water I did not accurately measure it's depth. Only after flushing it did I realize that indeed it was flooded, and unlike oh so many times it almost gave me a heart attack by going to the rim before receeding like a cruel joke, no this time it went over. This time I made a mad grab at the nearest perishable items and leapt out of the bathroom as an inch of water chased me.

So now I'm wearing wet clothes, with a pile of wet clothes in the bathroom smelling like god knows what, feeling icky like I really need to get a shower, and I can't cause the water is still a bit too deep to deal with.

Nasty. And I was having such a productive day too.

5/05/2003 01:12:49 AM ] [  ]


Sunday, May 04, 2003


John, his girlfriend, and I went to see X-Men 2 last night at [The Bridge], a "high end" theater in Culver City. The Bridge is supposed to be a high end theater - it has a bar/restaurant, and wireless ticket vendors roaming around. They didn't pick the greatest location in the world for it, so the crowd wasn't exactly their target demographic. I've been there once before to see Spy Game a while back, and at the time the place didn't really impress me.
One thing that does set the Bridge apart though is that they have an IMAX theater. So we went at 10:15 to catch the only IMAX screening of X-Men 2 for the day, which was well worth it. And opening it with the trailer for Matrix Revolutions was almost as good as the movie itself. Wide screens immerse you in the action, but sometimes it makes your head spin, since your eyes can't cover the entire thing unless you have perfect seats you miss things if the action is moving fast.
The Bridge has assigned seating - so I might as well try to reserve my seats for the Matrix Reloaded in IMAX as soon as I can!

The movie was pretty good- better than I thought - and pretty long. Some scenes stand out for me, and I was disappointed with how little was done with Deathstrike and what happened with Jean Grey. I won't ruin it for anyone though, go see the movie!

5/04/2003 11:53:45 PM ] [  ]