School has started again

I'm back in classes for my Fall 2006 semester of grad school at NEU CCIS. I'm taking two classes this semester: Semantics in Programming Languages with Professor Wand and Advanced Software Development with Professor Lieberherr.

I've had two sessions of the Semantics in Programming Languages class and it's been really educational so far. I'm in the process of learning LaTeX so I can type up my notes and do my homework. I picked up docbook a year ago or so to do the PyBlosxom manual and some other work--I like LaTeX a lot more than I liked docbook.

While searching the Internet for LaTeX tutorial/manual resources, I bumped into Getting to grips with LaTeX. It's been really helpful--I've picked up almost enough to type up the first two days of notes. The issue I have now is that I need to code some math symbols but I don't really know what the name of the symbol is so it's difficult to find.

Ubuntu Edgy Eft thoughts

I installed Ubuntu Edgy Eft on my Gateway 450something-or-other laptop a couple of days ago. I had one problem with installation where X doesn't come up, but pressing Alt+F3 a bunch of times does something and then everything works nicely. I haven't had any problems since then.

Figured I'd mention it in case anyone else was thinking about Edgy Eft.

Photo managing

I moved a bunch of photos from my laptop (running Windows XP) to my desktop (running Ubuntu 06.06) and then slurped a bunch of photos from Shutterfly (using a painfully monotonous and guified method) only to discover that the photos I slurped from Shutterfly don't have timestamps of when the photo was taken in the EXIF headers. That's what I get for slurping.

I've never really used F-Spot much but I know the version number is at 0.1.11 or something like that so I figured it'd be pretty bereft of helpful features. Much to my surprise, I discovered that I can adjust the timestamp on each photo. Not only that, but I can select a bunch of photos and adjust the timestamp on all of them at the same time.

I spend the next few hours fiddling with photos and getting them into a decent state with descriptions and all that and then export them to a folder.

There isn't much of a thesis statement to this blog entry. For the most part this entry is a long-winded explanation for how happy I was to discover I can fix the timestamps on a bunch of photos at the same time using a piece of software that says it's version 0.1.11.

Stargate SG-1 cancelled--I'm bummed

I just found out that Stargate SG-1 was cancelled and this is its final season. That really bums me out. I thoroughly enjoyed the series and it's one of two shows that S and I keep up with (the other being Stargate Atlantis--though I also watch Battlestar Galactica).

I realize that all things end eventually, but I've spent a good part of the last 4 or 5 years watching SG-1 episodes and thinking about the various predicaments they've been in. It's a great science fiction show on at a time when most shows are sitcoms and reality tv shows.

Anyhow, I'm bummed. It's irritating when companies cancel good shows because of results that are as likely to be results of poor business decisions than a poor show no one is interested in. I very much look forward to the time when more "tv shows" are less like they are now and more like vlogs which I can enjoy during downtime when it fits my schedule.

Cleaning up PyBlosxom (part 2)

I got a few comments from people who were interested in how I used Cheesecake to clean up PyBlosxom. I tossed around making it a series of blog entries but then decided to write it up as a technical article: Cleaning up PyBlosxom using Cheesecake.

I think it came out nicely, though parts of it are too "wordy". I really liked writing the article using Trac's wiki system. My only problem with Trac's wiki system is that the documentation for writing wiki macros needs a lot of help.

I'm going to update some of the PyBlosxom plugin writing tutorials I wrote a couple of years ago and put them in my trac instance, too. I still have work to do with PyBlosxom, but it's coming along very nicely. I'm working on unit tests and functional tests now.

Updates:

May 11th, 2017: The pycheesecake and my Trac sites are now gone. You can find my article here.

Last day at work

Today was my last day at work for the summer at ByAllAccounts. I spent the beginning of the summer doing backend work and then hit a showstopper with the project I was on. Then I spend the second half of the summer working on extending our Custodial Integrator product to work with Advent APX (it already worked with Axys). It was interesting, but I preferred the first project I was working on because I was doing it nuts to bolts: research, project plan, scheduling, work, testing, and quality control.

I told them I'm not going to work during the fall semester. I think with the two classes I'm taking, I won't be able to give BAA enough time to be effective/useful.

XKCD

I saw on boingboing a link to XKCD and I started skimming it at work mostly because I'm feeling uninspired.

XKCD: Valentine - Karnaugh is funny. The subject matter isn't funny; the words aren't funny; the use of a Karnaugh map is fantastically funny.

Cleaning up PyBlosxom

I've been following Cheesecake development with the hope that it'd be a tool that would help me fix PyBlosxom's shortcomings, make it easier for people to use, and make it easier for people to develop. It has certainly been all that and more.

I've been going through the various kwalitee measures that Cheesecake does to understand them and I've been making adjustments to PyBlosxom's source code and project infrastructure. I've made a lot of changes so far, discovered some latent bugs and code problems, documented undocumented code, fixed existing documentation, and started writing tests.

It's a huge effort, but it's a lot easier with tools like Cheesecake, nose, pylint, and coverage. Additionally, the blog entries at AgileTesting and articles at Living in an Ivory Basement have been helpful. Also, I've been shamelessly copying the infrastructure of the Cheesecake project. That's made it a lot easier to get my head around various bits.

At the moment, everything is local. I'd start checking things in but SVN at SF is really flakey (though the SF site status page doesn't mention any SVN issues).

I see the next version of PyBlosxom having some bug fixes and new features, but generally it's going to be a release focusing on cleaning up the codebase and the infrastructure.

Out of curiosity, while I'm in the process of cleaning up the codebase is it interesting to anyone for me to write up more detailed blog entries covering up how and what I'm doing? It might help by giving outlining a gameplan for cleaning up other Python-based projects. If that's something you're interested in, toss a comment on the blog or email me at willkg at bluesock dot org.

SPF and Exim in Debian

Turns out the Debian packager doesn't enable SPF in the exim4-daemon-heavy package. But it took me a couple of hours to figure that out. I ended up implementing SPF using the libmail-spf-query-perl package by adding the following rule to my rcpt acl just before greylist stuff:

accept
  message     = [SPF] $sender_host_address is not allowed to send mail \
                from $sender_address_domain.
  log_message = SPF check failed.
  set acl_m9  = -ipv4=$sender_host_address \
                -sender=$sender_address \
                -helo=$sender_helo_name
  set acl_m9  = ${run{/usr/bin/spfquery $acl_m9}}
  condition   = ${if eq {$runrc}{0}{true}{false}}

The exit codes for spfquery are in the spfquery file (it's a Perl script) and the code for "pass" is 0. So (in theory) this will accept any email that passes the SPF check. Any email that fails the SPF check will go through greylistd. I think that does what I want it to do.

Incidentally, I found the above code (though I inverted the check) here at The Linux Documentation Project.