PyBlosxom 0.6 released!

, | Tweet this

Read more about it here.

I've been using PyBlosxom for 3 months now and it just keeps getting better. On top of that, the development and user communities have grown significantly in the last month--definitely a testament to the project and its maintainer.

the second Lyntin module development tutorial

, | Tweet this

I spent a few hours working through a second tutorial for Lyntin module development. The first one covers the basics of developing modules in Lyntin and also walks through the basics of creating Lyntin commands. This one walks through the basics of hook usage.

I don't have any ideas for writing a third tutorial, so I'll wait until I'm inspired.

Lyntin as a large Python project

, | Tweet this

Josh discovered a page on the Python wiki that talks about Large Python Projects. Turns out that Lyntin is one of three listed. There are probably a lot of other large Python projects out there so that doesn't really mean quite what we think it means. Anyhow, they list us as having 11,856 lines of code back in July of 2002.

Josh and I then used their script to figure out how many lines we have now and discovered we have 14,024 total lines (listing here) of which 6,157 lines are actual code, 4,649 are doc-strings and 1,171 are comments. That means that 41.5% of our code-base is documentation. That's pretty cool. How many projects can say that about themselves?

gentoo introduction at MIT

, | Tweet this

I went to the Gentoo introduction thing at MIT last night. I mostly went because my friend Brian is toying with Gentoo now and I thought it would help him along to get something more than the documentation and it would give me a good idea of how much Gentoo I know. Turns out I know a fair bit. I learned one or two minor things, but generally already knew the material.

One thing of note was that Rajiv said that if you trusted the developers' decisions in regards to building the stage 3 package, you might as well start there and skip the first two stages of installation. I disagree. I don't think most people appreciate the sheer magnitude of effort that has gone into GNU, the Linux kernel, the drivers, Mozilla, Python, X, OpenOffice or other components.

Ooops... Got sidetracked. Anyhow, the introduction was interesting.

why do I blog?

, | Tweet this

Originally I thought blogging would be an easy way to provide an up-to-date status (and log) of the various projects I've got going on. It becomes very easy for an outsider to look at my blog and click a few links and realize how often I work on a particular project and what other projects are taking all my valuable time by distracting me.

After a few blog-like applications, I finally settled on pyblosxom which didn't have everything I wanted, but it had the bonus of being written in Python and that makes it super easy for me to fix and add functionality.

Then I found myself working on the pyblosxom code-base and talking to Wari at length about various pyblosxom things.

Now I blog for two reasons. First to provide status on my projects and second, to provide more data with which to test pyblosxom functionality.

That's why I blog. On top of that, I'm fascinated by the decentralized collaborative forum that blogs provide. It's not unlike editorials in the newspaper.

new super-duper categorylist with kung-fu punch action grip!

, | Tweet this

So, I was looking around in the wide wide world of blogging and saw a bunch of sites that list the categories they have on the side along with their archives and calendars and all kinds of fancy things... And I wanted one too!

I took a gander at the plugin and then cannabalized it into which returns that fancy list of category links you see on the far right under the calendar.

Then like a good boy, I added it to the CVS repository figuring it's probably going to be a must-have feature rather than an eclectic feature that only a few of us real blogging odd-balls would want.

when a sandwich isn't a sandwich

, | Tweet this

Back in the day I used to buy my lunch from one of the surrounding sub shops. That worked pretty well--it was \$5.00 a day or so and it guaranteed me a meal that sufficed to get me through the day.

Recently, I started to think about the economics involved:

     5      dollars a day
  *  5      days a week
  * 50      weeks a year (roughly factors in holidays and vacations)

I figure that I can make my own sandwiches and cut that cost at least in half. Thus I started to bring my own lunch most of the time.

The other day I bought Pepperidge Farms Sweet Buttermilk bread since it looked pretty substantial. However, I discovered a sandwich made using this bread is not unlike eating two spoonfuls of peanut butter and two spoonfuls of jelly. A sandwich is not a sandwich when the bread part of the sandwich is rather insubstantial.

how do you feel about occupations?

, | Tweet this

I'm collecting statistical data about what people think about various professions in regards to honesty, contribution to community, respect, and various other aspects for personal curiosity. I'd appreciate anyone who reads this to take 5 minutes and help out by completing the survey. All data is collected anonymously and is for private purposes only.

Thanks muchly!

click here for the survey

farewell to the sillycs

, | Tweet this

So on Friday (or Thursday--I forget) I bowed out of the SillyCS mailing list--a list I helped to start back in 1996 or so when we were all happy Computer Science majors at Boston College. People have approached me as to why I did such a thing. I just became less and less interested and it was less and less fun for me.

I think part of the problem was that the SillyCS went one way but I wanted it to go another. Case in point--it was SillyCS not SillySPORTS.

Anyhow, for nostalgic reasons, I post the following excerpts of the SillyCS mythos from way back in the day:

pyblosxom api

, | Tweet this

Yesterday I slam-dunked some code to form some infrastructure for plugin modules--I figured I've done this for Lyntin and Stringbean, might as well go for the hat trick! The code allows us to build a set of callback chains and such to let people extend the functionality of pyblosxom without having to re-write pyblosxom internals. Blah blah standard plugin stuff.

At some point, I'll write a tutorial to use it beyond the brief documentation I left in the api module. Until then, I leave the following excerpt for how it all ties together using the pycalendar module as an example.

01: """
02: This is my fancy pyfortune module.  Basically what it's going to do
03: is call /usr/local/bin/fortune and populate the fortune variable
04: with the resulting string.
05: """
06: import commands
07: from libs import api, tools
09: class PyFortune:
10:   def __init__(self):
11:     self._fortune = None
13:   def getFortune(self, args):
14:     entry_dict = args[0]
15:     text_string = args[1]
16:     if self._fortune == None:
17:       self._fortune = commands.getoutput("/usr/games/fortune")
19:     return (entry_dict, tools.parse({"fortune": self._fortune}, text_string))
21: def initialize():
22:   api.parseitem.register(PyFortune().getFortune)

Figure 1: libs/plugins/

Mmm... It occurs to me that this doesn't use the api module at all. On the other hand, it's pretty neat looking, so I'll leave it for now. At some point someone is going to have to remind me to write an api usage example.

Have a dynamically generated fortune:


This fortune has been removed because it turns out that dynamically generated text causes RSS feeds to think this is a new entry every time. Thus, no fortune for you!