much frustration, sigh.
Bought new inline skates (K2 Enemy) last week, figured I'd give aggressive skating a try. Started out just skating around a bit to get a feel for them and tried a few jump/spins. Turns out that this isn't such a good idea on Boston sidewalks as the tiles tend to not be flush with each other but rather tend towards random jutting here and there. I managed the 180 but my right skate landed right where one tile jutted upwards a bit (not much, but enough) and "tripped" me throwing me off balance. Now, normally when I catch myself I land open-handed, but this time for some reason I caught myself with the back of my middle three fingers on my right hand and pretty much got the skin sanded right off.
(Note: aggressive skates have wheels much smaller than normal inline skates (55mm vs ~80mm), so getting tripped up by small rocks/sidewalks jutting up etc is much easier/more of a problem).
Lesson to be learned: don't pull a fejj.
I don't practice Santeria
I ain't got no crystal ball
Well I had a million bugs and I, I fixed them all
If I could find that Hanna and that bug she's found
Well I'd pop a cap in that bug and slap her bare behind
Evolution: Well, I fixed that optimisation patch from yesterday (turns out there was a way in which I was naming the cache files that broke it) and so now everything works. Whoo! So loading an IMAP folder for the first time in Evolution is now on the order of 2 to 3 times faster.
Tell that bug that if he knows what's good for him, he best go run and hide
cuz daddy's got a new .45!
Believe me when I say that I've got something for his punk-ass
Show me what it's for, make me understand it. I've been crawling in the dark looking for the answer
Evolution: Argh! Every damn time I try to write an optimisation for the current IMAP implementation I get bitten in the ass because the logic in the current IMAP codebase is Broken By Design (tm) and so whenever you make a seemingly fine change in one part of the code, another part completely breaks because of its dependency on the broken side effects of the function you changed. *sigh*
GNOME Summit: Whoohoo, god did not strike me down today! I actually made it, though I did get lost in the tangle of corridors between building 77 and building 33. Apparently I was supposed to go through doors marked "DO NOT OPEN! THIS IS A FIRE EXIT AND ALARMS WILL GO OFF" :-)
Plan9's 'plumber': Niiiice. For those that didn't attend the Plan9 talk, Rob Pike talked about his plumber library which originally started out as the Acme shell-type thing. You can check out some documenation at http://plan9.bell-labs.com/sys/doc/plumb.html. Someone else explained it in their diary entry, but from their description, it doesn't sound all that great - sounds like just a hyperlink. You really need to read the docs to get a feel for the awesomeness of it.
Afterwards I went up to the hacking lounge and was assaulted with questions/pokes/prods/etc by a number of people. I might even use the word "pelted". Keith Packard wanted more than 5 "Labels" which is a new feature in Evolution. "Why hard code to only 5? What's the point in that?" I dunno! I swear! I just copied Mozilla's interface! I figured if Mozilla felt 5 was good then it was good enough for me (not to mention everyone who begged me for this feature pointed me to Mozilla's implementation). Anyways, shouldn't be too hard to expand this to use a linked list of labels.
A few thoughts on the Plan9 plumber:
First, what to do if there are multiple viewers for something listening on the socket? Which window does the info go to? Obviously this'd be a problem in the Real World that Robe Pike's implementation doesn't seem to solve (although his implementation seems to be more a proof-of-concept rather than the final solution).
On second thought, maybe it doesn't really matter? If plumb only allowed one "connection" per destination socket then the locking problem is solved too.
Secondly, ...I sem to have lost my train of thought.
GNOME Summit: Well, I didn't actually make it to today's summit. To make a long story short, I locked myself out of my appartment and had to wait a while for the locksmith. Cost me $140 (I feel a bit ripped off, I wish I got payed that kind of money for a 30 second job). By that time I just felt I might as well just go to work to get some work done. Didn't get much work done, but ah well.
PlayStation2: Bought a new game, Aggressive-Inline which is a rollerblading game. I've found that I prefer the sports type games over most others as they don't involve as much time. I have a hard time getting into games which you need to save every few hours just so you can come back tomorrow and play another round (this especially means role-playing games like Final Fantasy and other games such as Tomb Raider or Spiderman - all of which I like and think are cool, but I don't have the patience for them). With sports games, I can play for a half hour to blow off some steam and if I want to quit, great - I won't lose anything if/when I come back to it days or weeks later.
GMime: Fixed a bug in 1.0.2 for some guys at PennState (apparently they are using GMime in psu.edu's webmail system which they tell me handles 12,000+ users/day). For those who don't know, PennState is the original University that I attended, so it was kinda cool to find out they were using my stuff :-)
Spruce: As I mentioned in a recent diary entry, I've been sorta working on a C implementation of the JavaMail API. I have most of the abstract classes defined and mostly-implemented. I've just implemented the java.mail.Store and java.mail.Folder classes for mbox which turned out to be a fair bit of work. Ugh. There's still a lot of FIXME's stating that I still need to do this or that, but the core of it is written (fetching messages, appending them, expunging, saving flags, etc).
Thought this was kinda funny...
The wise man said,
"Patience is a virtue,
Sometimes ends justify their means"
I, not be as wise,
And being annoyed at the pizza delivery boy, replied,
"Forgiveness is divine,
But never pay full price for late pizza."
"For time is money," he added.
<shaver> truth is a cruel fraud, but _calculated_facades_of_casual_dismissal_ will set you free
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!