Saturday, June 05, 2004
A Bad Metaphor
I'm checking my webmail, and when I look at an individual message, there are links at the top that help me navigate between messages without having to go back to my Inbox. They say "First | Previous | Next | Last".
I study metaphor for a living, so this is interesting. Suppose I am reading a given message, and I want to figure out where the "Previous" link will take me. I have to map temporal concepts to spatial ones. Does the word "Previous" map to the next-older message or the next-newer message? We map time to space all the time, and "backward" always maps to the past, while "forward" always maps to the future. Also, in gestures, "left" means "past" and "right" means "future" (at least, for English folks. It probably has something to do with reading left-to-right). For instance, when we talk about a sequence of events and we gesture with our hands, we describe the first event with our hands to the left, and our hands work progressively rightwards as the narrative moves forward through time. On graphs that map things over time, t = 0 is the left-hand edge. To work from right to left would seem fundamentally odd. Similarly, if the "Back" and "Forward" buttons on your browser switched sides, so that "Back" was pointing right, that would be wierd. Would it be wierd just because we're used to those buttons pointing one way? I don't think so. For instance, if the "Stop" and "Reload" buttons were to the left of the "Back" and "Forward" buttons, it wouldn't seem nearly as wierd. Switching "Back" and "Forward" would seem jarring on a deeper level, like it goes against the very concepts of "back" and "forward".
The webmail programs I've seen have it all wrong, and I don't see how it happened. I click on "Next", which is on the right. Both the word "Next" and the position of the word indicate they should move me forward to the next-newer message, but the links flout both those clues and take me to the next-older message! Who decided it should be that way? This is the equivalent of the "Forward" button on your browser taking you backwards!
More to the point, though, is that the metaphor is confusing in this context. The labels ought to read "Newest | Newer | Older | Oldest", or at least use "Back" and "Forward" like in web browsers, and have them point to the right thing.
I study metaphor for a living, so this is interesting. Suppose I am reading a given message, and I want to figure out where the "Previous" link will take me. I have to map temporal concepts to spatial ones. Does the word "Previous" map to the next-older message or the next-newer message? We map time to space all the time, and "backward" always maps to the past, while "forward" always maps to the future. Also, in gestures, "left" means "past" and "right" means "future" (at least, for English folks. It probably has something to do with reading left-to-right). For instance, when we talk about a sequence of events and we gesture with our hands, we describe the first event with our hands to the left, and our hands work progressively rightwards as the narrative moves forward through time. On graphs that map things over time, t = 0 is the left-hand edge. To work from right to left would seem fundamentally odd. Similarly, if the "Back" and "Forward" buttons on your browser switched sides, so that "Back" was pointing right, that would be wierd. Would it be wierd just because we're used to those buttons pointing one way? I don't think so. For instance, if the "Stop" and "Reload" buttons were to the left of the "Back" and "Forward" buttons, it wouldn't seem nearly as wierd. Switching "Back" and "Forward" would seem jarring on a deeper level, like it goes against the very concepts of "back" and "forward".
The webmail programs I've seen have it all wrong, and I don't see how it happened. I click on "Next", which is on the right. Both the word "Next" and the position of the word indicate they should move me forward to the next-newer message, but the links flout both those clues and take me to the next-older message! Who decided it should be that way? This is the equivalent of the "Forward" button on your browser taking you backwards!
More to the point, though, is that the metaphor is confusing in this context. The labels ought to read "Newest | Newer | Older | Oldest", or at least use "Back" and "Forward" like in web browsers, and have them point to the right thing.
Saturday, May 22, 2004
fluxConf and the state of Java on OpenBSD
Once I figured out the intricacies of Makefiles, it was esay to get fluxConf up and running. I went into the Makefile in the src directory and added
My next task after that was getting the J2ME Wireless Toolkit working. It says on the docs that it requires JDK 1.4 to run. It was right. I had JDK 1.3 running, and the installation file wasn't fooled. One of the Java programs I'm working on needs this stuff, so I gave up. I'm now installing Gentoo. It's been unpacking the portage files for the duration of Tom Petty's "You Don't Know How It Feels" and then some. Gentoo sure has grown since I last used it. And it sure is a bigger hassle to install than OpenBSD.
I'm starting from Stage 3. I don't usually do that. The system runs faster if you start from Stage 1, but I don't want to waste all that time compiling right now. I've got all weekend, and 3 machines running distcc.
Gentoo looks like it has good support for the 802.11g card I bought. Awesome.
-I/usr/local/include
to the CFLAGS variable that was in there somewhere.
My next task after that was getting the J2ME Wireless Toolkit working. It says on the docs that it requires JDK 1.4 to run. It was right. I had JDK 1.3 running, and the installation file wasn't fooled. One of the Java programs I'm working on needs this stuff, so I gave up. I'm now installing Gentoo. It's been unpacking the portage files for the duration of Tom Petty's "You Don't Know How It Feels" and then some. Gentoo sure has grown since I last used it. And it sure is a bigger hassle to install than OpenBSD.
I'm starting from Stage 3. I don't usually do that. The system runs faster if you start from Stage 1, but I don't want to waste all that time compiling right now. I've got all weekend, and 3 machines running distcc.
Gentoo looks like it has good support for the 802.11g card I bought. Awesome.
Thursday, May 20, 2004
fbDesk on OpenBSD
I need to learn my way around
fbDesk expects to find freetype header files in /usr/X11R6/include/freetype/config/, but they're really in /usr/X11R6/include/freetype2/freetype/config. I made a symlink to remedy that, but I should be able to tell it look in an additional place for include files in the
Then it can't find libpng because it's not given a compiler flag to look in /usr/local/lib, even though it finds the libpng-config program and all it has to do is run it to get the right compiler flags. Anyway, I went into the src subdirectory and edited the Makefile therein. I changed the line
to
Looks like it works okay. Next up: fluxConf.
make
and patch
so I make a port or something out of what I'm figuring out here.
fbDesk expects to find freetype header files in /usr/X11R6/include/freetype/config/, but they're really in /usr/X11R6/include/freetype2/freetype/config. I made a symlink to remedy that, but I should be able to tell it look in an additional place for include files in the
configure
script.
Then it can't find libpng because it's not given a compiler flag to look in /usr/local/lib, even though it finds the libpng-config program and all it has to do is run it to get the right compiler flags. Anyway, I went into the src subdirectory and edited the Makefile therein. I changed the line
LIBS = -L/usr/X11R6/lib -lX11 -png etc.
to
LIBS = -L/usr/X11R6/lib -L/usr/local/lib -lX11 -png etc.
Looks like it works okay. Next up: fluxConf.
Tuesday, May 18, 2004
State of my Family
The laptop I bought is my fourth computer. I feel like I'm starting a family. Plus I've got my cellphone, which is sort of the family pet, due to its immature functionality of both computation and communication (with the other members of the family, of course). Also, the way the dongles hang off my main machine is reminiscent of a suckling litter, although perhaps I have just taken the metaphor too far.
The point is, I've gotten back into geekdom, and I've always wanted a tech blog to record how I fixed various problems, and to post things I can't find anywhere else. I had a free night so I made this one.
motor is a Dell Latitude CTX that I got off eBay.
I bought motor because I'm working on some Java programs (a J2ME midlet for cellphones and a Swing app), and on nice weekends I don't want to be stuck in the house. I intended to install OpenBSD on it, because I really love the design philosophy behind it.
Since 3.5 just came out, I went ahead and bought the CDs to support the project. The install went INCREDIBLY well. OBSD is also installed on medulla, the 200mHz server/router/whatever box, so I knew it was easy to set up in theory, but I was amazed to find that it detected all the laptop hardware the first time. I didn't have to compile a kernel! I was eager to see what it was like as a desktop OS.
I set up fluxbox, emacs, xmms and gaim. I learned about fluxbox config files and made keyboard navigation easier, because I hate the touchpad. When I get the files the way I want them, I should post them.
Then it came to setting up Java. That's a problem on OpenBSD. Java isn't there. There are ports, or something, adapted from the FreeBSD java, but apparently the J2ME toolkit requires the latest JDK, and though there is a java-1.4 port in the tree, it says it's broken when you try to make it. Well, I installed jikes (open-source, fast Java compiler from IBM) from the package, which is excellent, but it's not a JRE.
I tried installing the jdk-1.3 port from the ports tree. It just finished. It works for the demos. I have yet to try it on something more substantial, and I don't know if J2ME will like it.
So I wanted to try FreeBSD instead, because it's generally thought to support more hardware and software, while still having a lot of the same structure as OpenBSD. Unfortunately, the installation program didn't detect my 3Com PCMCIA network card, and apparently there's no quick way around that. That's a bit silly. It's an ethernet card. It's old. Linux and the BSDs should be at the point where their installations detect every network card out there. It was too complicated for me. I gave up. At this point, it's either I figure out how to do Java on OpenBSD, or install good ol'
I love Gentoo, but it's a pain to set up. I haven't given it a proper try yet; I'll wait until the CD I bought arrives. My old installation CD gave kernel panics -- probably because it was compiled for a P4 and I was running it on a P3. No surprises there. That's when I decided to give OpenBSD Java another shot, with the (rather pleasing) results described above.
The other, less surmountable obstacle to OpenBSD is that the wireless card I just bought is 802.11g, which is in the early stages of support in Linux and FreeBSD but is absolutely not supported in OpenBSD. 802.11g is the new wireless standard. It's faster and more secure. OpenBSD supports the other wireless standards, but this one is too new, and we'll have to wait at least another 6 months before we see support for it. If I get Java working, I'll probably just settle for an 802.11b card. They go for like $10 now, which is impressive.
Java actually runs with decent speed, considering that it's a runtime-compiled language running on top of an Linux-emulation layer on a slow machine.
The point is, I've gotten back into geekdom, and I've always wanted a tech blog to record how I fixed various problems, and to post things I can't find anywhere else. I had a free night so I made this one.
Finding a good UNIX OS for my laptop
motor is a Dell Latitude CTX that I got off eBay.
- 650 mHz P3
- 512 MB of RAM
- 8mb ATI graphics card of some sort
- 14" monitor
- 7 lbs.
- 12 GB hd
- 3Com EtherLink wired NIC (the wireless card is on its way, for better or worse [see below])
- swappable CDROM
I bought motor because I'm working on some Java programs (a J2ME midlet for cellphones and a Swing app), and on nice weekends I don't want to be stuck in the house. I intended to install OpenBSD on it, because I really love the design philosophy behind it.
OpenBSD
Since 3.5 just came out, I went ahead and bought the CDs to support the project. The install went INCREDIBLY well. OBSD is also installed on medulla, the 200mHz server/router/whatever box, so I knew it was easy to set up in theory, but I was amazed to find that it detected all the laptop hardware the first time. I didn't have to compile a kernel! I was eager to see what it was like as a desktop OS.
I set up fluxbox, emacs, xmms and gaim. I learned about fluxbox config files and made keyboard navigation easier, because I hate the touchpad. When I get the files the way I want them, I should post them.
Then it came to setting up Java. That's a problem on OpenBSD. Java isn't there. There are ports, or something, adapted from the FreeBSD java, but apparently the J2ME toolkit requires the latest JDK, and though there is a java-1.4 port in the tree, it says it's broken when you try to make it. Well, I installed jikes (open-source, fast Java compiler from IBM) from the package, which is excellent, but it's not a JRE.
I tried installing the jdk-1.3 port from the ports tree. It just finished. It works for the demos. I have yet to try it on something more substantial, and I don't know if J2ME will like it.
FreeBSD
So I wanted to try FreeBSD instead, because it's generally thought to support more hardware and software, while still having a lot of the same structure as OpenBSD. Unfortunately, the installation program didn't detect my 3Com PCMCIA network card, and apparently there's no quick way around that. That's a bit silly. It's an ethernet card. It's old. Linux and the BSDs should be at the point where their installations detect every network card out there. It was too complicated for me. I gave up. At this point, it's either I figure out how to do Java on OpenBSD, or install good ol'
Gentoo
I love Gentoo, but it's a pain to set up. I haven't given it a proper try yet; I'll wait until the CD I bought arrives. My old installation CD gave kernel panics -- probably because it was compiled for a P4 and I was running it on a P3. No surprises there. That's when I decided to give OpenBSD Java another shot, with the (rather pleasing) results described above.
The other, less surmountable obstacle to OpenBSD is that the wireless card I just bought is 802.11g, which is in the early stages of support in Linux and FreeBSD but is absolutely not supported in OpenBSD. 802.11g is the new wireless standard. It's faster and more secure. OpenBSD supports the other wireless standards, but this one is too new, and we'll have to wait at least another 6 months before we see support for it. If I get Java working, I'll probably just settle for an 802.11b card. They go for like $10 now, which is impressive.
Java actually runs with decent speed, considering that it's a runtime-compiled language running on top of an Linux-emulation layer on a slow machine.