Another version my blog publishing software (Perl Catalyst + PostgreSQL)

Over the weekend, I took a little time to finally throw together yet another version of this blog software…this time around, I wrote it in Perl using the Catalyst framework and with a PostgreSQL database backend (you can check it out at

For those of you keeping track, that now means I’ve got a PHP version of this blog software that works with both MySQL and T-SQL (in fact this very blog uses the PHP verision with a T-SQL backend) and now a Perl version that should actually work with any database backend (that DBIx::Class supports that is).

With very popular open source blog publishing systems out there like wordpress and the likes, why write yet another?

Well I did this for a couple of reasons:

1. I wanted to start as a general Q/A blog focusing on Perl and solving real programming problems using Perl. I felt like, a blog focusing on Perl really needed to be running on Perl (otherwise it’s just a bit too hypocritical)…and yes before you ask, there are some pretty good Blog publishing systems already available in Perl (that are no doubt more full featured and flashy than this one) but I also had a second reason…

2. I wanted the experience of writing a very bare bones, simple system in Catalyst with a PostgreSQL backend. At the same time, I didn’t want to spend too much time on this little side project (because I’ve got too many other things I want to get to as well).

Anyway, converting my already fairly well defined minimal feature blog publishing software seemed like the perfect way to accomplish all of these goals.

I guess I’m also toying a bit with the idea of putting all the code out there for others who might want a VERY bare bones blogging system (and so the more version the better)…especially for those that don’t want to deal with MySQL or have some other reason for sticking with a different backend. But I haven’t officially done anything about sharing the code just yet…so I don’t know if I’ll ever actually get around to doing that. We’ll see.

Anyway - this new version was pretty simple to write (though I did spend WAY too much time debugging the initial DBIx::Class stuff before I realized that, as usual I was a total idiot, and had been making the connection with AutoCommit turned off – which of course means it won’t actually save any of my inserts or updates. DUH!).

Still, being in a completely different language, I had to write the entire system from scratch this time around (the incredibly simple table structure is really all that makes it the same system as this blog). And since I was writing it all from scratch again, I took the liberty to ‘fix’ some of small issues I’ve learned to live with around here (so far).

Really many of the 'fixes’ were just simple things that I was able to implement as a side benefit of doing the system in Catalyst…so things like search engine friendly (SEO) URLs and more REST-like organization were really clean and simple to implement.

Anyway, for now I’m pretty happy with how it turned out (though I do have a long to-do/wish-list of upgrades and additions if I ever find more time to play with it all)…and now the challenge really becomes about generating quality content on a regular basis for that new system…but of course I have a bit of a plan for that as well (I’m going to try and get some Perl friends to help there but I haven’t really mentioned it to them yet – so we’ll see how that goes over).

In the mean time, please do check it out and maybe even subscribe to it…and then of course let me know what you think!

This post has received 42 loves.


This is the personal blog of Kevin Marshall (a.k.a Falicon) where he often digs into side projects he's working on for and other random thoughts he's got on his mind.

Kevin has a day job as CTO of Veritonic and is spending nights & weekends hacking on Share Game Tape. You can also check out some of his open source code on GitHub or connect with him on Twitter @falicon or via email at kevin at

If you have comments, thoughts, or want to respond to something you see here I would encourage you to respond via a post on your own blog (and then let me know about the link via one of the routes mentioned above).