Lars Wirzenius: June, 2003
- June 28: Slumping, Crush, Luddism
- June 26: Dead remote controls, Documentation extraction
- June 25: In a cafe, Abduction club, Protecting lists from spam
- June 24: Debconf3 plane tickets
- June 23: Dueling banjos
- June 21: Happy hacking session, La fille d'Artagnan, Le pacte des loupes
- June 20: Midsummer Eve, Documentation improvements, Progressing nicely
- June 19: Combating viruses with law, The most fertile man in Ireland
- June 18: Stress, The sweetest thing, Mackenna's gold, Broadcast nethack
- June 14: Bad day, Transcode problems, The Eiger sanction, Spider-Man, URL encoding doesn't protect from spam
- June 12: Aplicom bootstrapping
- June 11: Matrix reloaded, Shaping up
- June 8: Semi-release of rewrite, Converting VHS to CD-R
- June 6: Porting to BlueGiga, I am a neophobe, Komisario Palmun erehdys, Debconf3, Rid the Internet of unsafe computers
- June 5: I hate embedded programming, Developer meeting
- June 3: Lap tray, Bubbles, Fixing old problems
- June 2: Look! A pterodactyl!, New implementation, A long painful history of time
- June 1: Overnight success of log, Some progress, Mailman, Screenshot
Saturday, June 28, 2003
I haven't shot any new pictures for many weeks now, and not many all this year. I'm obviously going through a bit of a slump. I've been thinking that it's because work has been so stressful, but on the other hand, I have been able to develop EoC and Lodju regardless.
For some time now, I've taken almost exclusively portraits. Technically, they have become unchallenging: I usually get exposure and focus correct with few tries. On the other hand, they're almost always the same, with fairly little variations. Partly, that's OK, since I've been taking pictures of dresses for Lynoure, and those need to need to present the dresses, not show off my technical and artistic skills. On the other hand, I should find new challenges, technical and artistic.
I've talked with a couple of friends about shooting a game of American football. That might be interesting, although I doubt it'll be all that interesting in the long run, since I do not to enjoy watching sports. Still lifes could be interesting. If nothing else, I could start shooting portraits with more a experimental approach, trying out new things (new for me) until I find ways of making portraits that are pretty, unconventional, and flattering to the subject.
I'll have to start doing something pretty soon, or I'll end up as a former photographer.
Rented Crush on DVD. The blurb at the back claimed it was a comedy, and I was in the mood for a comedy. The local movie rental did not have too many comedies available, on DVD, and Andie MacDowell is cuter than Mike Myers. Unfortunately, the blurb lied. Well, sort of.
Crush is not what I would call a comedy, even if it left me with a happy feeling. The story is too serious to be a comedy. However, even though the story contains moments of sorrow, on the whole it is a warm one.
As usual, I don't feel like to spoiling the movie for those who haven't seen it, and thus won't summarize the plot. I will, however, compare it to another MacDowell movie, Four weddings and a funeral. Crush is similar in its mixture of happiness and sorrow. Where Four weddings etc manages to be almost magical in its conception and execution, Crush is merely competent. There's nothing really wrong with it, apart from its classification, but the magic that is required for a really great movie is not there.
I liked this movie. It left me with a happy feeling. I'll happily watch it again, if a suitable occasion occurs.
I suspect I'm a closet luddite. Since I moved to this apartment almost three years ago, I've been pondering on getting a dish washer, but haven't. I find that washing dishes by hand is nicely relaxing, and that I have a fear that the dish washer would be yet another complicated piece of technology that will break, like my two remote controls a couple of days ago, which would mean I then angst for days or weeks to get it repaired. I hate equipment that breaks and I hate even more to have to do things to get it fixed.
Incidentally, the remote controls didn't really break, their batteries just died at the same time, and I put in new batteries the wrong way around.
Thursday, June 26, 2003
Did not watch a movie tonight. The remote controls for both the DVD player and the amplifier broke, or possibly their batteries, and the DVD player doesn't allow use of menus from the front panel. Blah.
Spent all day setting up a system for extracting documentation from source code and generating Docbook and formatting that to HTML using a custom XSLT file. Cessu sent in the updated tutorial and I proofread and edited that. The result is that we finally have documentation for the new implementation.
Wednesday, June 25, 2003
I'm writing this log entry in the cafe at the Academic bookstore in Helsinki, while sipping hot cocoa. Laptops are liberating.
Watched The abduction club on DVD, based on a recommendation from a friend. It is a romantic comedy set in 18th century Ireland, with several nice costumes included. I liked this movie. The simple story is told well, and technical aspects, such as photography, costuming and scenery, are competent. The acting was perhaps a bit restrained, but it might have been a stylistic choice on the part of the director to be understated rather than lively. Or perhaps it isn't a case understatement. Perhaps it is just a thing about not following the Hollywood tradition of making everything painfully obvious even for the slowest people in the audience.
I've been thinking about protecting mailing lists from spam. EoC needs this. Already the few lists I run on liw.iki.fi are spam targets. I have come to the following decisions:
- The goal is to optimize for usefulness and usability, not to minimize spam.
- Depending on the type of the list, different kinds of anti-spam measures may be considered. For example, manual moderation may work for announcement lists with no time critical content, but will really hamper a high-volume discussion list.
- Automatic spam recognition is never perfect. Relying on automation will let in some spam and prevent some valid messages from getting to the list. This is usually not acceptable.
- The list owner, or moderator, should not be burdened too much, otherwise they will become stressed and quit. Sharing responsibilities between several people helps, but it also brings some additional work in the form of team coordination.
- No one solution will work for every list. EoC should be flexible and adaptable to differing circumstances.
- Spammers adapt to circumvent spam filtering. EoC should not implement spam recognition itself, but interface with external tools.
- Simplistic measures may work, but usually not well and will bring new problems.
The conclusion is that EoC should be run from procmail, and procmail should use whatever existing tool the list administrators prefer to recognize spams automatically. Suspected spam can then be either forced to be moderated or in extreme cases deleted.
I use bogofilter for my personal spam filtering. It works pretty well, but requires constant education: whenever it misclassifies valid mail as spam, or spam as valid mail, it needs to be taught. Since bogofilter is most efficient when it learns automatically based on its own guesses, all errors need to be fixed, otherwise a mistake will be reinforced in the future. This would require constant monitoring by the list moderator, which is not a good idea.
Another popular tool is SpamAssassin, which uses a complicated set of rules instead of automatic learning. This should be easier for a mailing list. It requires updating SpamAssassin every once in a while, to keep up with the changing characteristics of spam, but that is much less of a chore than teaching bogofilter daily.
My plan at the moment, therefore, is to set up SpamAssassin to protect my lists on liw.iki.fi and see how well it works. When SpamAssassin recognizes a mail as spam, my procmailrc will force the message to be moderated (EoC should already have sufficient functionality for this). This should provide the least interference for discussion lists. It requires the list owner (me) to deal with every spam manually, but I can live with that for now. Once I have some experience with this setup, I can see whether there is a spamicity level where messages to the list (but not the owner) can be deleted automatically.
Tuesday, June 24, 2003
I bought the plane tickets for the Debcamp/Debconf3 trip today and confirmed my registration at the event. I'm therefore committed to sleeping for a week in a sleeping bag on a gym hall floor, not being able to afford a hotel. Let's hope that a week of hacking is worth this.
Monday, June 23, 2003
Occasionally, Debian mailing lists get the strangest mails. For example, today debian-devel, the main development list, got the following mail.
I was wondering if you would send me the sheet music for dueling banjoes - I want to transpose it for other instruments -
That's the whole mail, except for the headers. This isn't the first time someone's wanted Debian to provide dueling banjos. It happens occasionally. I still don't know how you duel with banjos.
Saturday, June 21, 2003
Another day of happy Lodju hacking. The user is now warned when he tries to close a document with unsaved changes. I even managed to avoid a usability glitch that some applications have: if there are many unsaved documents without names when the user wants to quit the application, they put the user into an unbreakable loop where they ask for a name for each one (without indicating which one, of course). Lodju now tells the user about this situation and lets them quit without saving or cancel the quit. If they cancel, they can go on and save (or close) each document as they wish.
There were also a number minor improvements, mostly of the refactoring kind. Not a whole lot of visible progress, in other words, but I did manage to get rid of one item in the to do list without writing a single line of code. I went out for a walk and pondered about whether to implement linking of photographs between folders, that is, whether the same photo could exist in several folders. I decided against this, since it is a somewhat complicated and confusing idea (I know I get confused by symlinks at the filesystem level). I may implement it later if it seems necessary, but let's see what life is like without it.
Two major features remain on the to do list: exporting a web gallery, and searching for photos based on meta data. I'll probably not be able to finish either of them tomorrow, since I'm arranging a pancake party, but then, there's no hurry. I want to have Lodju usable before Ropecon in August, but there's plenty of time before that.
La fille d'Artagnan is a French movie set some twenty years after the most well known story of the three musketeers. The main character is Eloise, daughter of d'Artagnan. I'm not giving anything out by saying that, since it is the title. It is a humorous film where the humor is kind and gentle, and does not involve custard pies, even if there is a lot action. There is a total absence of farting or other bodily functions, which makes the humor almost seem intelligent and high-brow, especially after The sweetest thing. What little reference to sex there is, is made seem perfectly natural and lacks the sense of taboo that American films have. I don't know if it is typical French, but it was nice.
The acting is nice, although I suspect I'm missing half of it since I don't understand the language. The story is fun, and the scenery, costumes, and other background elements work well. The photography is competent, but not breathtaking. The fencing is ridiculous, but that's to be expected from a movie. All in all, a very pleasing film.
Unfortunately, the Finnish subtitles on the DVD are quite bad. Not only do they have lots of spelling mistakes, but I noticed that they left out things, and I don't understand French at all. I have the same movie on VHS, with a different translation, and that may have improved my understanding.
Yesterday, I watched another French film, Le pacte des loupes or Brotherhood of the wolf. Set in 18th century France, it tells a story that is probably best characterized as a horror story. The story is not, however, why I liked the movie a lot. The story is OK, even good, but what I adore is the beauty of the film. The people are either beautiful or charismatic. The clothes are magnificient. The scenery, with its castles, forests, ruins, ravines, and so forth, is interesting. The photography is excellent. Action scenes are unrealistic, but gorgeous.
I really like this film. I really liked La fille. I consider La femme Nikita to be a classic. Even Les visiteurs is good. That's all the French films I can remember seeing in the past decade or so. I suspect I should see more, if they're all that good. (Obviously they aren't, but at least there's ample justification to be unfaithful to Hollywood.)
Friday, June 20, 2003
It was Midsummer Eve today. I was home, alone, hacking, since I was too lazy to go to any party. Not an entirely bad solution: I've had a very relaxing day, cleaning up my apartment and hacking and watching movies. No stress.
Fixed some manual page bugs that had been reported ages ago. I've let EoC development grind to a halt, due to extreme stress at work. Not good. The stress, I mean. It's OK for a free software hobby project to have an occasional silent period.
I'll need to improve the documentation for getting EoC and Postfix to work together, since it seems to be confusing at the moment. After that, I'll make a new release and start thinking about and discussing spam prevention on mailing lists.
EoC doesn't seem to generate any serious bug reports. Of course, that might be because no-one else uses it for real. It would be nice to get some real feedback from real users of the software occasionally.
Lodju has progressed more today than EoC. I have added proper File/Save, File/Save as, and File/Open behavior, and fixed many cosmetic bugs in the user interface. I've also made it possible for the user to open several folders at the same time: all the photos from all the folders are shown together in the thumbnail area. This will eventually make it possible for the user to search effectively.
Right now, my to do list for the first real release of this development branch contains four items, but I suspect I'll think of more after I've slept a bit.
Thursday, June 19, 2003
It seems there is an attempt at making it illegal in Finland to have a copy of a virus, unless you have an acceptable reason for it. The justification seems to be that this will reduce the amount of damage viruses do. What utter bullshit.
I admit I haven't investigated whether that claim is made by the law makers or just stupid people who guess what the motivation is. It doesn't matter. The problem is that the perception is common, even though it is completely wrong.
Most, possibly all, of the viruses that cause damage come from abroad. A Finnish law won't reduce the damages they do at all. It might help get behind bars what few Finnish computer criminals there are, and for that the law might be good. For improving computer security, it helps not at all. Anyone who thinks it does, shouldn't be allowed to attach a computer to the Internet.
The number one computer security problem is that the majority of the computers on-line are insecure. Not just slightly insecure, but massively insecure. Not just their operating systems, either, but their applications as well. The best sign of this that the most common advice about viruses these days "don't open e-mail attachments". If the security of a system is dependent on the user not opening an attachment, the system's security design has totally failed.
Opening is what e-mail attachments are for. It's not only natural to open them, if you never do open them, having an attachment feature is completely pointless. Get rid of it.
The problem with attachments is that the programs that open them can execute program code inside the attachments. For example, Word documents can contain programs written in Word's macro language, and that language is powerful enough that the program can do essentially anything. Viruses exploit this. This is a fundamental insecurity deliberately designed into the system that makes the whole computer vulnerable. Remove the macro feature from Word and suddenly it becomes safe to open Word documents. Similarly for other types of files.
With such glaring holes in the basic security in a system, relying on external add-on tools such as virus checkers is not going to help a lot. To begin with, virus checkers won't help for completely new viruses. It takes at least hours for virus checker companies to update their databases. In this time, the virus will have time to infest the whole Internet many times over, if it is written cleverly enough. Security needs to be built into the system, it cannot be an add-on.
The most fertile man in Ireland, DVD. This is a film made in Ireland, and not Hollywood, and it shows. The whole world in the film is less glittery or shiny than the worlds in Hollywood films. More documentary, sort of. This is nice. It makes the film seem more realistic, even if the story is a bit fantastic, for comedic purposes.
The acting in this film is good enough, but could be better. The characters remaing a bit too much like sketches, but not disturbingly so.
On the whole, a nice little film, but nothing spectacular.
Wednesday, June 18, 2003
Work continues to be extremely stressful, leaving little energy for free time. That's why I bought no less than four dvds and two books today.
The sweetest thing is a funny move. Not deeply insightful of the human condition, nor intelligent or highly innovative. The humor is derived from that endless source: human relationships, especially sexual ones. Still, it is performed well, and it helps that the three main actors are pretty women.
Saw Mackenna's gold the other day, from a DVD. It is a badly made western. The story is good enough, even if a bit on the fantastic side. The acting is fairly boring. The photography is downright bad, with many stupid special effects made by wiggling lenses or zooming. Not recommended.
I have several friends who like to play nethack, and they like to talk about their games on the IRC channel we frequent together. One day they idly discussed how they could watch each other's games. I was feeling bored and hacked up a small Python program to do that. The player uses tee and netcat to send the output of his nethack to my program, and the others connect to my program via telnet. My program receives nethack's output and broadcasts it to all watchers. A simple exercise in network programming.
Now they're enthusiastic about it. I'm scared.
Saturday, June 14, 2003
Some work days are tiresome. Yesterday, a few boxes were installed at a customer site and these were the first boxes with the new Hedgehog Lisp implementation. Not completely unexpectedly, when the boxes were powered up, they didn't seem to work. Specifically, they didn't fetch bytecode from our server over GPRS. The big problem, however, was that no-one at the installation site had a laptop so they could check what the log said and so we have no clue as to what is going on.
Combined with minor health troubles this really spoiled the day.
Transcode, which I use to convert captured video to mpeg, seems to stop after one hour and ten minutes. I have no idea why. So far, I've only converted episodes of TV series, which are less than an hour, but as soon as I tried a movie, I had trouble. Things are never simple, are they?
A local store had DVDs very cheaply and I bought three: Forrest Gump, The Eiger sanction, and Spider-Man. Nothing like a bit of unnecessary spending for improving the mood. I watched the latter two the same evening.
Clint Eastwood both starred and directed The Eiger Sanction himself. The story is pretty simple, but fits the simple and laconic style of the movie. Even the fight scenes are laconic and most importantly brief. After Matrix reloaded and its excessive Roman orgy of martial arts glorification, the minimalistic action scenes of this movie are quite refreshing.
Mountain climbing is an important part of the movie, and much time is spent on the faces of various rocks. Often the scenes are quite high, but there was not so much of this as to invoke my fear of high places. I get vertigo fairly easily, and a number of movies trigger this. Compared to, say, Cliffhanger, Eastwood's movie is again nicely laconic. You're aware that things happen up high, but you're not forced to look down all the time.
The good thing about mountain climbing in movies is that the scenery can be extravagantly beautiful. If the movie's photography is good, you may even be able to ignore the plot and just revel in nature's glory. The Eiger sanction includes plenty of eye candy.
The movie's supporting characters are thin. They're also unnecessarily extraordinary, which actually weakens them as characters. One, for example, is an albino who can't stand direct light at all. He therefore lives in a darkened room, with only the dimmest of red lighting. He is also a former Nazi. I doubt Nazi's would really have accepted such a genetic aberration. I think the movie would have been better had he been a more normal person.
Spider-Man, directed by Sam Raimi, represents the modern, less laconic style of action movie: fight scenes are longer and choreographed par for a ballet. Where The Eiger sanction relied on scenery and photography to provide eye candy, Spider-Man excesses on computer generated special effects and a pretty girl. That is not a complaint, it is merely a different way to tell a story. Sometimes laconic is good, sometimes extravagancy is called for.
The story in Spider-Man is actually a bit more complex than that in The Eiger sanction and the characters are more rounded. Where Eastwood's characters are thin and stereotypical, Raimi's feel more like real people. There's plenty of growth potential in them: Raimi has so many characters the movie does not have room for them all to become alive. I'm helped by reading the comics in my early teens, of course, but I don't think that would be necessary for the enjoyment of the movie.
Spider-Man's special effects felt pretty much standard for this age. Not bad at all, but no longer spectacular, either. That doesn't matter, since they work.
I don't actually know how the special effects have been made. Presumably the computer animators and their programmers have again made giant leaps in the development of their art, but it really doesn't interest me much, as the audience. The Titanic and Jurassic Park movies were enjoyable to a large part because of the novelty of really good computer generated effects, but after that, the method in which special effects are created has ceased to interest me. (Well, as far as enjoying the movie is concerned, anyway; I wouldn't mind working for ILM.)
The DVD is perhaps the most irritating one I have ever used. The menus are animated and the animation has been implemented in such a way as to make the remote control almost non-responsive. The DVD player would only respond to my cursor buttons at certain points in the animation, with a second or two in between. Selecting things was difficult and this made me quite annoyed by the time I managed to get the movie playing.
In a recent discussion on fighting spam, it was claimed
that URL encoding mail addresses on web pages prevents
spam. That using
%40 instead of
would work pretty well for preventing the address from being
harvested and spammed, but would still work perfectly for
normal users, whose browsers would decode the URL encoding. I
found the claim to be incredible, and put on my front page
two mailto-links, one with a mangled address and one with a
different, nonmangled address. This happened on June 3. I
have just received the first spam to these addresses. It
took only eleven days for both addresses to be harvested.
While it may be true that such slightly mangled addresses may get less spam than nonmangled ones, I deduce from my little experiment that this won't be true for long. Spammers aren't technologically retarded, or at least they hire programmers who aren't. URL encoding shouldn't be considered even as a temporary solution.
Mangling the address so that it isn't possible to unmangle it automatically is likely to work better at preventing spam, but it's also better at preventing valid mail. If you want to optimize for the least amount of spam, go ahead and mangle your address. I prefer to optimize for using e-mail for communicating with other people as well as possible.
Thursday, June 12, 2003
Our interpreter now bootstraps on Aplicom by downloading, over GPRS, from our application distribution server the application byte code. I implemented this by writing the code to fetch the byte code with HTTP in Hedgehog Lisp itself, then embedded the corresponding byte code into the interpreter. The bootstrap program stores the byte code it loads into a suitable memory area, from which the interpreter executes it after the bootstrap terminates. Nothing particularly magic or difficult, but many details that had to be right.
Wednesday, June 11, 2003
Saw Matrix reloaded in a movie theater with Ville and Vera. I'm sort of unconvinced that the sequel was worth it, but I'm reserving final judgement until I see the next part, since this part leaves the story unfinished.
This one had lots of action. I found the action scenes a bit too long, but I guess after the original movie that was to be expected. The plot and characters are okay for an action movie, i.e., pretty thin. The photography and visual quality is quite good: the movie is beautiful.
During the weekend, Cessu implemented closures, which in practice seems to mean that lamda functions and local functions now work. I've been working on adding more support for Aplicom's hardware to Cessu's implementation. CAN and I2C buses should now work, and the Lisp heap is reserved from "UPmem", a 300+ kilobyte memory area that the C dynamic memory management won't touch. The C heap is only about 32 kilobytes, so this is pretty good. All in all things are shaping up well.
Sunday, June 8, 2003
The rewrite of Lodju has progressed far enough that
I have made a tarball and posted about it to the Lodju
mailing list. Let's see if I get any reasonable feedback.
I've today implemented a simplistic thumbnailing approach
and saving of metadata (but not thumbnails) to a file (name
save.lodju so far).
I set up a tv-card for my desktop machine and connected
my VCR to it. Then I set up Linux's video4linux
subsystem, xawtv and streamer so that
I could capture things to a file (an
containing mjpeg). Then, using transcode I convert
the files to smaller ones (
mpeg). This way, I can get about an hour of video on a CD-ROM
worth of data. Eventually, I hope to convert all my tapes
to files so that I reclaim some shelf space.
Friday, June 6, 2003
I have today made a quick initial port of Hedgehog Lisp to an embedded Linux box by BlueGiga. It was rather easy, since BlueGiga's Linux pretty much the same as desktop Linux. Will need to write drivers for some of the box's special features (LEDs, bluetooth, etc.) but time enough for that later.
I wonder when I turned from a neophile to a neophobe. There was a time when I would have been excited about a new box to play with, but now I've been almost dreading it for some time. Perhaps it is a sign of old age.
Saw Komisario Palmun erehdys, an old, classic Finnish detective movie based on an old, classic Finnish detective story by Mika Waltari. I've seen the movie a couple of times before and read the book a few times. It is a nice story, and the atmosphere is quite nostalgic. Especially so the movie, with its scenes of a Helsinki long past (past before I was born, in fact). Luckily, many of the buildings still exist, so it would be possible to visit the scenes. Perhaps that would be a nice thing to do during my summer vacation.
I've decided to go Debconf3, the third Debian conference, and also the the week long hackathon, Debcamp, that precedes it. It is in Oslo so it's pretty close, which makes things easier. Now I need to maybe figure out a talk to give and maybe figure out things I could and should do at debcamp, and prepare for them.
It seems there's a new virus out loose again. I'm getting several mails each day sent by this virus. It is as ridiculous as usual: I am not vulnerable to the virus itself, but I still suffer since there are too many people on the net who are unable or unwilling to protect themselves.
As usual, it is also clear that the virus infects computers through the usual round of helpfully unsafe e-mail software. Yep, Microsoft's Outlook is at it again. This happens pretty much every time there is a massive virus problem and you never see anyone point this out when the problem is reported. Instead, the news media interview representatives from anti-virus companies who all claim the only way to solve this is to upgrade the anti-virus software. Wake up! The anti-virus companies have no incentive to solve the virus problem. Their business depends on there being a virus problem.
The virus problem won't be solved until the security problems are solved. Outlook, for example, has so many security problems its use on the Internet should be banned until it is fixed. Not doing so is exposing everyone, not just the Outlook users themselves, to bandwidth abuse.
That applies just as much to other unsafe programs, of course. Even if they run on Linux.
Thursday, June 5, 2003
Yesterday was representative of the kinds of days why I hate embedded programming. While I was on my way to the office, the boss called me and told some boxes at a customer's site had crashed. Totally. And wouldn't come up even after a power cycle. Ugh. After a while, they managed to turn off the internal battery in the boxes and then they would work. Now if we could only figure out what the problem is. So far, the best description of the symptoms I have is that the some of the LEDs blink a red color at about two hertz and there's about nothing that can make that happen. Sigh.
Couldn't replicate the problem at the office, either. Such fun. Had this been a server application, there would have been log files and possibly core dumps. Luckily, other people at work will continue to try to replicate this, while I concentrate on other things.
Today, I managed to get TCP sockets and and PPP over GPRS to work on the Aplicom boxes, i.e., I solved the problem I had on Tuesday. It turned out to be a bug in my lisp program. I was using some bootstrap code from my old implementation that had been working for many months. Unfortunately, it worked only by coincidence. It had a nasty race condition, which was triggered only rarely, if ever, by my old implementation, since it was so slow. Cessu's new implementation is a hundred times faster and triggered the race condition every time.
What happened, slightly simplified, was that the operating system can report three states for the PPP connection: 'offline', 'connecting', and 'on-line'. When my code initiated the connection, the state changed from 'offline' to 'connecting'. There is a small lag for the state to change, however. My lisp code was written so that it would initiate the connection and then wait until the state was either 'on-line' (connection succeeded) or 'offline' (it failed). Since my old implementation is so slow, this worked pretty well. Cessu's implementation is so fast, it would initiate the attempt and then immediately notice that the state is 'offline', since it hadn't yet had time to become 'connecting'. Therefore, my lisp code promptly disconnected and killed the connection attempt it had just started.
I fixed a small problem with Cessu's code. He had used
snprintf. That in itself is a good thing, of
course, but it pulled in over ten kilobytes of extra code
from the standard library. I had already implemented my own
printf and adding my own version of
snprintf cut away ten kilobytes from the binary.
That is, I saved about 9% of the binary size.
That reminds me of my changing attitude towards bloat. I worry about an extra ten kilobytes of code and find it rather distasteful that the TCP/IP stack for the box is about whopping 40 kilobytes. At the same time, friends are using Java development tools that require hundreds of megabytes of memory to run at all. I have a nagging feeling that there is something seriously wrong when a glorified editor is so large.
Yesterday some Debian people in the Helsinki area met, both developers and hangarounds. Florian Lohoff is visiting Helsinki on a work trip and a bunch of us met him and had dinner and a key exchange. I took a photo.
Richard Braakman, Jukka Neppius, Jesus Climent, Teemu Hukkanen, Florian Lohoff, and Jaakko Niemi. If you look closely, you can see the sleeve of Richard's girl friend as well, but she's camera shy.
Tuesday, June 3, 2003
My main machine is a laptop. At home, I have a desktop machine as well, but I only use it for image editing, for which the laptop's screen is not very suitable. The nice thing about a laptop is that I can sit in very comfortably in an armchair. Modern laptops get pretty hot, and I've used a pillow between the laptop and my lap to prevent burning myself. The pillow also makes it easier to get a good angle for the laptop keyboard.
Some time ago a friend showed me a lap tray he'd bought and used with his laptop. I liked the idea, and went and bought one at Don Goffo. It is a tray of plywood, or some similar material, with a loose bag of small Styrofoam balls, which makes it easy to prop it up in the desired angle. Very handy. Should be easy to make one very cheaply yourself, if you're not lazy like me.
I survived the IT bubble of the 1990s. Not only did I survive, I came out better off than going in. This might be because I did not gamble with stocks more than once (the VA Linux IPO; and that one was successful) and did not adopt an extravagant lifestyle while I had a high paying job. After 2000 things haven't been particularly good (Wapit went bankrupt in 2001, Keko Technologies in 2002), but not too bad, either. Thus it was fun to read Famous bubbles from tulipmania to Japan's "bubble economy". If I ever see common people queueing for stocks at an IPO again, I'll start saving every penny.
Today I have mostly been fixing old problems. I spent all of today porting over existing platform specific code from my implementation to Cessu's. I decided to clean it up in the process. The old code had been written at various stages during the past year and it was pretty messy. It is now neatly divided into a portability layer with stuff that must be available on every platform and platform specific stuff that is only available on that platform.
I've half way into porting the PPP/GPRS and TCP/IP socket code to the Aplicom embedded box. The sockets work under Linux already, but the Aplicom bindings behave strangely. Probably nothing big, since the code did work before, after all.
Monday, June 2, 2003
Look! A pterodactyl!
Hedgehog Lisp is the embedded language of the Lisp family we implement and use at Oliotalo, where I work. It is incompatible with every other Lisp in the world. I should probably write a short essay on why it is like it is, and why we made it, and whether it has been any good. Later.
So far, we've been using my implementation, but it is proving to be a tad slowish. We commissioned a new, faster implementation from Kenneth 'Cessu' Oksanen. His is about one to six hundred times faster than mine, depending on the benchmark. Since last week, I've been porting it to the embedded environment we use. So far, progress has been slow.
Today I have, finally, progressed far enough to be able to send byte code to the box's interpreter over a serial line. So far, all the byte code had to be compiled into the interpreter, which made it kinda tedious to write any programs. Now I only need to make interpreter support all the capabilities of the hardware and then I'll be able to write applications in lisp.
Erik Naggum wrote A long painful history of time to explain his design for a time and calendar library for Common Lisp. It nicely covers many of the idiosyncrasies and complexities of the way the modern world keeps track of time. Naggum's style is rather too disdainful for my taste, but not enough to make the paper unreadable.
Sunday, June 1, 2003
The second day of public logging. I already have three hits! Yay!
Today and yesterday I have implemented a simplistic import and display of thumbnails (which can be scaled freely). Thumbnail drawing is really slow, and uses huge amounts of memory, since it loads in all the images and scales them and rotates them every them they're drawn. The thumbnails are of pretty good quality this way, but it's nowhere near fast enough, so I'll have to add some caching. But time enough for that some other day.
I'm on one mailing list managed by Mailman. I subscribed a couple of weeks ago and today the software reminded me that I'm subscribed to the list and told me what my password is. How friendly. If I were subscribed to mailing lists operated by Mailman on several sites, I'd be getting at least one per site. Ugh. Not the kind of mailing list experience that I want.
I've been told that Mailman lets you disable these reminders, but I didn't see any way to do that. The site in question may be running an old version of Mailman, or perhaps they've just decided not to allow that. Blech.
That list in question is spam-proofed by only allowing subscribers to post. I'm subscribed to the list with another address than the one in my From header. This means that all my posts need to wait for moderator approval. It isn't helping me participate in the discussions when it takes days for my messages to reach the list. I can't fault the volunteer moderator or moderators for their slowness; the software shouldn't be requiring my messages to be moderated.
My From header says
that is a semi-eternal address. I've used it since
1995 and have a high expectancy to use it a decade from
now. IKI is a non-profit
organization whose primary practical purpose is to provide
such a semi-eternal address. There is no yearly fee, just
a one-time subscription fee and the whole thing is run by
volunteers. To keep operating costs down, using @iki.fi
addresses for mailing lists subscriptions is forbidden.
I want to continue using email@example.com in my From header so that, years from now, when people find an old message of mine, they can still reach me. This happens to be important to me.
Other people have different reasons for having different
address for subscribing and posting. For example, many
people subscribe to mailing lists using constructs such as
firstname.lastname@example.org. This lets them both filter
easily and also see if the address is leaked from the mailing
Thus, any attempt at a subscribers-only posting policy needs to take these people into account. Mailman boasts a fancy web interface. They could easily let me add additional addresses from which I could also post and have them be treated as if from subscribers. But no. It might be possible to kludge this by subscribing with each address and just disable delivery for all but one. That would mean I get each monthly reminder n times. Not good.
Not to pick too harshly on Mailman, in particular, though. Plenty of other mailing list software has the same flaw, including my own. And I need to fix this.
I utterly dislike that Mailman requires me to have a password (the mail interface for subscribing didn't work if I wanted to subscribe something else than the From address). I haven't had any use of the web interface for managing my subscription. Mailman advertising makes much out of the web interface, but for me, it is just clutter. Ezmlm got it right, the Mailman approach is just extra bother for most people.
I will eventually need the password for unsubscribing, and even that is stupid. Anything that mandates a password when it doesn't necessarily require it is stupid. Subscriptions must be confirmed by e-mailing the subscribing address. Unsubscriptions can be dealt with the same way. No password required. For most people, most of the time, no password is ever required for interacting with the mailing list software: they subscribe once, then eventually unsubscribe, and in between, they should be able to just ignore the mailing list software. Having to read monthly mails from the software is just extra bother that helps them not at all.
If the list software does have a web interface, and the user has a need for it, then, yes, a password is required. In that case, and not until then, create a password. Until then, the password is unnecessary and unnecessary passwords degrade people's willingness to have good passwords. Unnecessary passwords are evil.
For fairness, because I am sort of in competition with Mailman, I wish to add the following: I don't think Mailman as a whole is evil, or stupid, or badly designed. It has specific features that I dislike, but on the whole it is has improved mailing lists on the Internet.
Work being hectic, I haven't had much energy to put into development of Lodju. It is rather annoying, since I have a few thousand photographs that need to be organized. Also, people keep asking me about its status. I hope to spend much of this weekend on Lodju, but we'll see how much I get done. I don't intend to become stressed over it; stress comes from work, stress is relieved by leisure hacking.
In the mean time, I'll put in a screenshot from a bit over a week ago.
Screenshot of my unreleased development version of Lodju, from May 22. It has a functional folder tree, and it's possible to drag and drop thumbnails between folders and within a folder. The lower left corner has an area for editing photo properties. Thumbnails aren't actually displayed yet, that's yet to be implemented.
I admit an Apple iPhoto influence. While I haven't used it myself, I've looked at screenshots and had friends with Macs say good things about it.
Before I make the first public release of this rewrite of Lodju, I need to implement importing of photos, display of thumbnails, and a way to store data in files. These shouldn't be too hard to do, but they might take time, since I want to be careful and write clean code. The previous rewrite failed in part because I cut too many corners.
(Insert sounds of leisurely hacking.) I've now played around with letting the user select files to be imported, and creating photo objects for them. The photo objects' properties are filled in in the background. I've also played with some Python code for reading EXIF headers. Together, all this should become most of an import feature pretty soon.