It's a crisp autumn morning, the trees are alight with midwestern color, and cool sunlight defines sharp shadows on the pavement, grass, and leaves. I'm making my way down to the dining hall for lunch, and observing the trajectories of warmly bundled students flowing towards the chapel for convocation. Suddenly I realize that the half-familiar melody chiming across campus is not the bell tower's usual sonorous intonation, but the Hogwarts theme from Harry Potter.

I love this place.

Continue reading (82 words)

Thank you!

After a harrowing day of homework and Assassins, Pechous and I stopped by the mailboxes. I'm used to not getting much mail, but I was expecting a book for my physics class. To my astonishment and suprise, my mailbox door was ajar--and a bouquet of colorful flowers were sprouting from its brass frame! I took them home, converted a CD spindle into an impromptu vase, and placed this unexpectedly joyful gift on my desk. It brings some much appreciated color to my space.

Thank you so much, mysterious giver of floral festivity. This makes me very happy. :-)

Continue reading (104 words)

Fun with ALSA

I just realized that aside from simple copies, the ALSA route_policy duplicate will mix to arbitrary numbers of output channels AND that such a device can use a Dmix PCM device as its slave. This means that it's possible to take 2 channel CD audio and have it mixed to 5.1 channel surround, and still let other applications use the sound card. This makes XMMS very happy.

On the other hand, my onboard i810 sound card reverses the surround and center channels, and it does some funky mixing on the center channel for the subwoofer, which sounds really messed up when played on the rear speakers. I haven't figured out how to compensate for this yet.

Continue reading (132 words)

Work on Ragnar continues, but mostly behind the scenes. I've written a simple node management tool to edit their properties, a friendly interface for deleting nodes, and a node addition page generated from the defined data taipus. Doing this entailed a redesign of the CGI parser, so things feel a bit cleaner now. Finally, an XML export mode is the result of a more flexible output function--this makes designing templates much easier, and lets other programs access Ragnar data without scraping.

Adding text content is now much easier. The filter understands both plain text conventions and html formatting, but strips disallowed tags and attributes through HTML::Scrubber. This behavior is fully configurable, and works well for small comments and large bodies of text alike.

Continue reading (270 words)

Stage 1

I've finished the codebase for Ragnar, my new content management system. Things may be a little hectic around here while I fix bugs and add new functionality, but it should work out in the end. In the meantime, try out the new threaded comment system, and send me bug reports or suggestions for features.

Continue reading (56 words)

Wonko just pointed out to me an incredibly easy way of including XPath expressions inside your XSLT templates, especially within tags that need to have dynamic content like images and links. The best method I’ve been able to come up with prior to this point is to add a custom attribute to the tag, like so:

<cr:code lang=“xml”> <xsl:attribute name=“href”> <xsl:value-of select=“link_edit” /> </xsl:attribute> Edit </cr:code>

Continue reading (130 words)

If you run a server with SSHD exposed to the internet, chances are that server is being scanned for common username and password combinations. These often appear in the authorization log (/var/log/auth.log) as entries like:

cr:code Jun 12 13:33:57 localhost sshd[18900]: Illegal user admin from 219.254.25.100
Jun 12 13:37:17 localhost sshd[18904]: Illegal user admin from 219.254.25.100
Jun 12 13:37:20 localhost sshd[18906]: Illegal user test from 219.254.25.100
Jun 12 13:37:22 localhost sshd[18908]: Illegal user guest from 219.254.25.100
</cr:code>

Continue reading (331 words)