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.
My projects:
Multicast TFTP
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++. :(
FreeBSD
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.
Project Links:
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.
My next goal--I want to move Links to XML. Currently, the
"modules" are hand-written HTML, with lots of templates and
javascript crap. I would like to use XML and XSL to write a
language that can be used to express the content of the
modules in a purely presentation-free format. Ideally, the
people writing the educational content would be able to
write in this new language directly, instead of asking HTML
programmers to design pages fitting their requests. At site
"build time", a set of templates would be applied to the
module XML data, and the website would be formed.
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.