It's about 2 in the morning, on a random day of my winter break. I haven't been sleeping much. Too many cool ideas I want to work on. I'm tired, distracted, and busy--I'm not going to proofread this entry as carefully as I should--but it's long past time to make an advogato entry.
I worked on an independent study, this semester, with Dave Hollinger, my Network Programming teacher from a few semesters ago. I decided to work on a multicast TFTP client and server, since I have a use for one in the Links Lab, on campus. Copying a 3gig hard drive image to multiple computers by unicast is slow, even at 100mb/s.
I did my best to follow the RFCs. I had some fun with it. I wrote 1300 lines of code. It even partially worked, when I was done with the semester. I still need to add more code for the multicast support, but lots of other stuff works just fine, such as unicast transfers, option negotiation, blocksize option support, retransmits, and inactivity timeouts.
I plan on releasing the code under a BSD license, when it's a bit cleaner. It's not quite ready, yet...and I keep having this horrible itch to rewrite it from scratch, perhaps in C++. :(
I wrote a message to the FreeBSD -stable mailing list about a USB Compact Flash Card Reader that I purchased, recently. It's a Simpletech reader, using a DataFab chip, with a USB product ID of 0xb000. It "almost" works with FreeBSD's usb mass-storage device support (umass). It apparently "almost" works with Linux, too, according to the Linux DataFab driver writer's page.
I went through various efforts to get the device working, but to no avail. I was able to use this as a learning experience, however. I successfully added an entry to the FreeBSD's USB device table, and I believe I successfully added an entry to the SCSI 'quirks' table, too. I learned a whole bunch about SCSI, USB, and umass. It just wasn't enough to make my flash reader work, when I was done.
This is the first time that OS source code didn't scare the hell out of me, as soon as I looked at it. It's also the first time I've modified OS code, and the result actually compiled, and did something sensible. It's corny...but it feels like a big step for me.
XML is wonderful. I'm the system administrator for Project Links. I'm also a programmer for them. And I'm also the release/build engineer. I make it all work. My boss gives me a lot of freedom, and I make the most of it.
Project Links has a big website. The project has existed for many years, and has accumulated a fair amount of cruft. At the beginning of last summer, for example, the web site consisted of 30,000 files, huge amounts of hand-written HTML, filled with bad-links, inconsistencies, and missing files.
For the 18 months I've worked there, I have tried to clean things up. At this point, I think we even have all our soure code, again! (The previous sysadmin lost many files, due to an incorrect backup procedure). I played some nasty tricks with a java decompiler, to fix this. The site has been trimmed down to 20,000 files, just by deleting junk. The site will even fit on a CD-ROM! I moved the project to CVS, a while ago, so developers would stop overwriting eachother's changes. I setup a reliable backup solution, so we won't lose files any more.
There are numerous nifty side effects of this, such as the ability to use a non-HTML presentation language. We could write an XML->LaTeX translation, and print a Project Links teacher's guide, without ever changing the module data. If I succeed in the move to XML, the website will shrink down by many thousands of files. It might even be manageable again. I would love to be able to validate the module content, and use the XML data to do searches for missing files (broken links), as well as orphaned files.
The idea of having content separate from presentation is such a simple and obvious idea, that I wonder why it is so often ignored. With XML and XSL, we can let HTML become a purely presentation-based language. Perhaps it will stop sucking, then.