Will >> Will's blog
Tue, 31 Dec 2013
A few weeks ago, a friend of mine started a site called Nethack-a-day. It's fantastic---a Nethack game with color commentary one turn at a time. If you like Nethack, but haven't seen it, you're missing out.
As he was setting it up, he was looking at various systems he could build it with. I sort of wanted to say, "Yo, just use Pyblosxom." because I was pretty familiar with it (I spent the better part of 9 years maintaining it) and I knew it did 80% of what he needed. But I hesitated because I've been on the fence about switching to something else for a while now.
Then I committed a critical mistake. I said, "You know, Pyblosxom would be great for this, but how about I fix a handful of things first that'll make it easier to deal with." A handful of things turned into a massive overhaul of Pyblosxom ripping out a lot of the technical debt that had been accruing for years, re-imagining some of the bits I was never happy with and tweaking some things just because it seemed like a good idea at the time.
Thus was born Douglas.
Douglas resembles many of the static site blog generator systems written in Python that exist. That suggests it was a dumb idea to go and write it, but it has three compelling aspects that I think made it worth my time:
- It's derived from a blog system I maintained and thought about for a long time, so it has all the sorts of things I would want in a static blog generator
- I can continue to say, "I've been using the same blog system since 2002." Sure, it's not exactly the same system, but it's not like I have to go rewrite/reformat entries I wrote in 2002.
- It has a nicer callback system that I think makes it more malleable when it doesn't do exactly what you want by default.
Right now it's in an alpha state: the test suite doesn't cover enough of the software; the docs are mediocre and in some cases are filled with outright lies; there are a handful of issues; and there's still a bunch of technical debt and some architectural decisions that sucked and are increasingly difficult to work around.
Regardless, about a month, 102 commits and 9980 insertions and 22828 deletions later, I'm now switching my blog over to my new system. And that's how I'm going to end 2013.
Thu, 11 Oct 2012
I spent the greater part of my free time over the last two weeks reworking my blog.
Before it ran on Pyblosxom as a CGI process (yes---a CGI process). It had accrued a decade of sediment, redirects, hacks, hacks on hacks, etc (yes---a decade). It was kind of messy and---worse---it really impaired my ability to blog easily. That sucked.
Now it runs on Pyblosxom, but it's statically rendered with a post-receive hook from a git repository. The work flow for blogging is a lot easier and I can test things out locally before pushing them live. I also ditched a bunch of silly things in the blog.
I also ditched comments. I might at some point switch to using something like talka.tv, but most of the time people were writing comments as a response or a reply to me---not intending to be part of a bigger discussion with other readers. Given that, I ditched comments. No sense in spending the time maintaining them if they don't really get used. Instead, email me.
Thu, 21 Jun 2012
I'm in the process of passing off maintenance to a few people who expressed interest on the pyblosxom-devel mailing list. Towards that goal, I've moved pyblosxom to a new github repository under the pyblosxom organization. Thus it's now at:
I then forked it, so you can continue looking at my fork if you so desire, but I probably won't be doing anything with it going forward.
Fri, 08 Jun 2012
I've been working on Pyblosxom since January 9th, 2003. The initial commit from Wari is on November 24th, 2002. I discovered that (according to the commits), I was the second person to commit to the codebase. I didn't know that.
In January of 2012, I started a hiatus from Pyblosxom. We had done a ton of overhaul work for 1.4 and 1.5 and I was tired and wanted to work on other things.
I've decided it's time to end my reign as maintainer of Pyblosxom. I sent an email to the pyblosxom-devel list as such. Further, I contended that maybe it's time for the project to end altogether.
Yes, I suggested maybe it's time to end the project. The reasons are two-fold:
- The code has a ton of technical debt. There are a lot of plugins that need a lot of help. There's a lot of squirrely code. I've done a poor job of fixing the "Where can I find plugins?" and "Where can I find pretty flavours?" problems. Those are big problems and potentially require a lot of maintenance.
- It's really hard to fix architectural problems with Pyblosxom without changing the scope of the project. I contend it's way easier at this point to just start a new one.
Anyhow, I'm a little sad and I'll have to figure out what to do with my blog, but I think it's been a long time coming and it feels good to put it to rest.
So, two things:
- If you're interested in maintaining Pyblosxom, hop on the pyblosxom-devel mailing list and say hi!
- I cut a lot of my teeth on this project. Most of the current problems are my fault. If you're a current user of Pyblosxom, thank you for using something I spent a ton of time on and cared very much about and thank you for your patience as I figured a lot of things out.
On to new horizons!
Wed, 28 Dec 2011
While I was writing up the release blog post, I figured out that I've probably been working on Pyblosxom 1.5 on and off for the last three years or so. That's pretty intense---I knew I'd been working on it for a while, but I didn't realize how long it actually was.
The last year or so of development has been fun. There's a pretty consistent contingent of friendly folks who hang out on #pyblosxom. I really appreciate their humoring me with my period, "Pyblosxom 1.5 is almost done! I just have to ..." announcements.
Details of the release are in the release blog post. If you've been waiting to upgrade, this is a good version to upgrade to.
Going forward, I'm going to take a hiatus from Pyblosxom development. I've got a bunch of other projects that I've been ignoring for a while that really need some attention. I'll continue to review patches, help out on #pyblosxom and the mailing lists, and I'll push out future releases, but I won't be doing any major development for a while.
Sat, 29 Jan 2011
I updated my blog to use PyBlosxom from git master HEAD as well as updates to plugins that are now part of the PyBlosxom core. There have been a bunch of bugfixes, so my blog works a lot better now. I also abandoned a bunch of home-made plugins for their suped-up equivalents in PyBlosxom core.
I wrote a script that grabs my identi.ca dents and generates local entries for them. I figured most people probably don't follow me on identi.ca (which is a shame), so I'll bring it here.
Then I spent about 30 minutes tweaking the CSS to make the blog look a little better. It's not super, but it's good enough for now.
Tue, 30 Nov 2010
A week ago, my son was born. Since then, I've been doing newborn-management things and haven't been around to work on projects I maintain, manage or otherwise work on. I'm taking a few weeks off to get adjusted to being a new dad and also because it's the first time in a long time I've taken a few weeks off. Really truly off.
Miro development is going well. I'm out of the picture for a bit, but things are progressing well without me. Ben is managing the Miro 3.5.1 release and that should happen soon. Kaz landed metadata support (which is awesome) in master. Paul landed device syncing a couple of weeks ago in master. Geoff is doing a lot of awesome work cleaning up the code and working on streaming to other devices. Janet is migrating us from Eggplant to Sikuli and filling out other testing infrastructure. I'm sitting on an extensions infrastructure which needs some more work, but I think it could get finished up enough in time for Miro 4. All in all, it's been really busy in master and out of the chaos will come some really awesome improvements. A huge huge thank you to my colleagues at PCF and all the people in the Miro community that I work with to build a better Miro for letting me take some time off to get acquainted with my new son. I really appreciate this.
PyBlosxom is languishing a bit because I need to create some additional infrastructure for the project. I need to spend some time on this and then PyBlosxom will do much better. I did move the server that the PyBlosxom web-site is living on, so nothing's blocking infrastructure stuff except my free time. We've got a bunch of people who are working on fleshing out PyBlosxom 1.5, the documentation, tests, and plugins. It's been really great the last few months to have this level of activity and other than a lack of issue-tracker, I think the project is doing really well.
Python Miro Community has some problems right now specifically with dead file links. I need to work with the Miro Community devs to add some functionality I need to make it easier to automatically query and update metadata for all these videos. Managing 600+ videos by hand is impossible. I'm still sitting on videos from a handful of conferences. In the near future, I'd like to integrate Universal Subtitles which will make the videos accessible to a much much larger group of people.
GNOME Miro Community has more problems than Python Miro Community does because I've spent much less time with it. The focus is a little blurrier for GNOME Miro Community and I haven't put in the time to work it out, yet. I need to talk with Paul Cutler and work out how GNOME Miro Community fits into the rest of things and then I need to be more proactive with the project.
I apologize for leaving things in the state they're in, but I will return soon! If you need me, ping me by email.
Mon, 01 Nov 2010
If you notice any problems, let me know. Only one of my entries uses it so far--I have to go back and update entries.
Wed, 10 Mar 2010
PyBlosxom 1.5 rc1 was released a month or so ago. Since then I haven't had much time to finish things up.
Spaetz kindly did the work to move PyBlosxom source code from svn on SourceForge to git on Gitorious. The plan is to move development to Gitorious and the web-site, documentation, bug-tracking, and things like that to a site on my server bluesock.org.
This enables people to fork PyBlosxom trivially and make the changes they need to make to get PyBlosxom working for them. This will result in more experimentation and work being done and reduce the problem of me and my decision making being a bottle neck in future PyBlosxom development.
The other big change that's happening partially in the PyBlosxom 1.5 timeframe and partially in future versions is the ecology for plugins. Previously, I ignored them and spent my time on PyBlosxom core stuff. Ryan was maintaining the plugins, but the infrastructure we had for plugin maintenance sucked. Going forward, plugins will fall into two categories:
- Maintained plugins will be in the plugins/ directory of the pyblosxom tarball. These plugins will have unit tests and will be versioned alongside PyBlosxom.
- Plugins maintained by other people will be indexed on the website in a registry, but one that will suck less than the current plugin registry.
The plugins that are currently in the contributed plugins pack will be split into those two groups.
PyBlosxom 1.5 is waiting on some more documentation changes, some more plugins work, and now some project infrastructure changes. I'll probably do another release candidate soon and suggest people start using that.
If you're interested in helping out, come hang out on IRC on freenode.net in the #pyblosxom channel. The conversations have been interesting over the last couple of months and have been instrumental in work getting done.
Mon, 21 Dec 2009
Someone spammed my blog with 400+ comments for some shoes site. Took me less than 2 minutes to skim the emails, see the pattern, and then remove all the spam from my comments moderator queue. This sort of thing is the big strength of PyBlosxom.
I have my blog set up to store comments as individual text files in a
comments/ directory. All comments have to be approved
before they make it to the site. Approved comments end in
and comments in the moderator queue end in
Additionally, comments that contain one of a series of blacklisted words
are rejected automatically. Any time someone posts a comment, I get
It took me a minute to skim my 400+ emails and notice they're all kind of the same, 10 seconds to update the blacklist so that I won't get any additional comments like this in the future, and 10 seconds to remove all the spam from the queue with:
for mem in `grep -rl spamwordhere *`; do rm $mem; done
That was it--spam gone in less than 2 minutes. Took longer to write the blog post about it.