Posts tagged 'blog'

Going Live


My little blog engine/compiler is approaching feature completeness and I think what it generates is ready for public consumption, so I've switched the front page of over to it now. There is no non-blog content yet, but that is going to change over the course of the next few weeks.


Atom Feed, New Design, and Old Posts

Since my last post, I've added code to generate an Atom feed using Paul R. Brown's excellent Atom Haskell library. Now go and subscribe to it!

I've also switched the CSS to that from K2 and added a header image based on a photo I took on a trip to Barry Island a few weeks ago. I love watching waves crash onto the beach, so I guess it fits well.

Finally, I've imported old posts from Advogato and my blog on the university webserver (which I had almost forgotten about). The latter will soon be removed because I don't want to keep maintaining the pyblosxom installation behind it. Importing the Advogato posts was rather painful, as they were missing all the closing HTML tags although I'm sure I entered them. tidy fixed up most issues but I still had to correct some stuff manually.

Editor Interface

The blog engine now has a simple editor interface that opens an editor, allows the user to enter a post, and then stores it.

Date Information and Multiple Posts

The engine now reads and shows date information and supports multiple posts.

The Last Outpost of the Static Web

I've been meaning to set up my own blog for a long time, but it never happened until now. The reason is simple: all popular blog engines are inherently insecure. Take WordPress as an example of one in which major flaws are found almost on a weekly basis.

The solution is of course obvious: create static content and store it as xhtml on regular web space. Unfortunately, there aren't many tools around that do that sort of thing and none of them satisfied my expectations.

Consequently, I've written my own static blog engine in Haskell which generated this very page you're reading right now. It's still rather basic but will be extended as I get around to implementing missing functionality.