PyBlosxom
Wari Wahab has written a Python version of the Blosxom weblog tool, and unlike the original Blosxom it supports the Blogger API. Nice.
Wari Wahab has written a Python version of the Blosxom weblog tool, and unlike the original Blosxom it supports the Blogger API. Nice.
My hosting provider was down earlier today. Now it’s back, which is a relief. Over the last couple of years I’ve developed a paranoid fear of my ISPs going bankrupt and dissapearing, taking my site with them.
I guess I’ll make a backup now :-).
I’ve been working on Hep, changing a lot of the hidden backend stuff.
Hep now uses the Twisted Framework for all its servers and networking. Twisted is a set of Python modules for writing event-based network servers and clients. It includes HTTP, POP3, and SMTP servers that work a lot better than my homemade ones did. Twisted makes Hep a lot faster and more reliable, and gives me a better foundation to build on in the future when I want to do things like add NNTP or IMAP support.
It’s always kind of suprising to see other people writing about Hep. But they are:
nf0 noticed the new diagram I put on the Hep page. And Brian is
watching this page, waiting for something to happen. Thanks for the motivation, guys - I’ll try to get a new Hep release out soon.
In the last couple of weeks I’ve torn Hep apart, and now I’m slowly putting it back together again. I like writing my weblog posts in my e-mail client a lot better than in a web page <textarea> element, so until I get Hep up and running again I probably won’t be writing much here.
There’s an interesting article today on Infoworld, "Fostering Creativity", which references this article from the Harvard Business Review. Both articles talk about "bricolage", which basically describes the act of building something using whatever tools or materials you happen to have around. This struck me as a good explanation of the two seemingly contradictory meanings of "hack" in the jargon file:
Sometimes as a programmer you have lots of time and resources to solve a problem; at other times you find yourself working with a tight deadline and a few crude tools. The first type of project requires good design ability, the second requires having good improvisational skills. Saying that the result is a "hack" means that you did a good job, considering what you had to work with.
I just got a new mouse, a gift from one of the higher-ups at my
company. It’s a replacement for my trusty old Intellimouse Explorer,
which stopped working a couple of weeks ago. After two weeks of using
the trackpad on my laptop, it’s such a joy to have a nice optical mouse
again. Ah, the precision!
Posting from Jabber. Which works. :-)
I added preliminary support for filters to Hep. You can copy and/or redirect incoming messages to other places besides your Inbox, based on criteria you specify.
I was hoping to finish the configuration UI for filters and protocols, and get a new alpha release of Hep out today. But I ran into some issues last night. First, I learned that the default Jabber server configuration doesn’t like it when a connection sends too many messages in a short period of time (it gives you a bad ‘karma’ rating and stops accepting messages for a few seconds), which was a problem since I had set up a filter to copy all incoming messages to a jabber address. Then I found that Jabber (with the default server configuration) also doesn’t like it when you have more that 5 connections open at a time from a single IP address, which breaks my one-connection-per-destination setup. So I’m going to have to rethink the way the Jabber bot will work.
Also I’m occasionally getting some kind of race condition where Hep uses 100% CPU, which definitely wasn’t happening before.
I’ve been adding a lot of new code to Hep over the past few days, and I think soon it will be time to step back and think about the design a bit before I get sloppy in my rush to add cool new features. I’ll release a new alpha version with all my latest changes early next week. Then I might pause for a week or two, let people do some testing, collect feedback and bug reports and suggestions, get outside and enjoy the fall weather instead of spending so much time coding.
Dave Winer and others are having a debate (see the comments on that last page for some surprisingly heated remarks) about the future of RSS. (Remote Site Summary, Really Simple Syndication, or something like that). I have trouble believing that the outcome of this debate really matters to most users, or even developers, who use RSS, beyond the fact that we’d like to have a standard format that everyone uses. Most of the options floating around should get the job done. I hope they can all just pick one and move on.
Also, just as I was adding support for Jabber and protocols/URLs to Hep, Dave posted this about the way his products handle Instant Messaging URLs. Chuck Shotton responded with his ideas here, which started an interesting comment thread. (I’m still using jabber:name@host/resource for Jabber addresses, since it seems the most natural).
And finally, while I usually just write about software here, I have to share a new band I’ve been enjoying: Tin Hat Trio. Three musicians making jazzy old-fashioned music with various stringed instruments and an accordion. Their most recent album, Helium, is much nicer than the low-quality mp3’s on their site would have you believe, and they have a new record coming out September 10th on Ropeadope Records.
I was home sick from work on Tuesday, so I took the opportunity to hack on Hep a bit. And since I wasn’t feeling well I didn’t feel bad about ignoring the important-but-not-fun items on my TODO list, and playing with some interesting things instead.
So Jabber support is now working in Hep. You give Hep a jabber account and password, and it logs in as username@server/Hep (with priority 2), and once for each of your destinations (username@server/DestinationName, priority 1). Messages send to username@server/Hep (or just username@server since it Hep has the highest priority) go to your Hep Inbox. Messages sent to the other resources get posted to the appropriate destinations (you configure a list of jabber accounts to accept messages from, to prevent strangers from sending messages to your weblog).
I also added the concept of "protocol handlers" to Hep, so that it can figure out how to send a message to a mailto: or jabber: address. A protocol works much like a destination, except that every time you send a message you also specify an address. That way you don’t have to set up destinations for every e-mail or jabber address you might want to send a message to - you just set up your e-mail configuration once, and then specify the address when you send the message. (I haven’t figured out all the details of how this will work, but in the short term it should let Hep handle filters like "Copy all messages from Slashdot to this e-mail address").
Hep’s architecture is making me happy. Adding Jabber support was only 100 lines of code (thanks to the nice jabber.py library). The rest of the work is all generic support for protocol handlers, which can be added in the future by dropping modules in the messaging/protocols directory.
Also I made a diagram of how Hep works, which may or may not help other people understand it.
I’ll try to get another snapshot release ready this week, so that other people can start playing with this stuff. And I really should write up some developer documentation…