Archive for May, 2004

Roller - a list of grumbles

Sunday, May 16th, 2004

So having decided that Roller is just good enough for us to consider, I’m going to try and think of all the things I need and see if it can match it.

First up, no admin ability to add users that I can see. Big pain. I’m going to have to turn on the public add-user feature, get the new user to add themselves, then turn it off again.

Second up, minor one. On the ‘Pages’ option, would be nice if the entries actually had descriptions. Annoyingly mainly because it would be so easy to put one in. Contextual help would be nice all the way through, there are a lot of terms that I am clueless about. Still, while I’m the kind of user who never looks at the manual when installing a new game, I recognise when I need to dig it out and the Roller manual is sitting on their Wiki and nicely linked in from the application.

The calendar is something Carrie is not a fan of. I don’t mind it, but the Roller version seems to have no way to go back a month. Shame, but my real problem is some kind of way to look at old entries. I’ve never seen any blog successfully fulfill this.

Looking in the help, the theme page is meant to show an editor of some kind. For us it shows a preview all the time. Looks like a bug, we always see ‘Save’ and never ‘Edit’.

Still, Carrie considers it usable enough and we’ll attempt to work together on a theme. I also need to work on an MT to Roller migration of some kind, either at the DB level [mysqldump, perl, mysql load] or through the API.

Heat 2, Can Roller match MT?

Sunday, May 16th, 2004

So, wife and I are now sat next to each other trying to be bloggers.

Carrie is currently messing with her MT site a lot in terms of l&f, so she’s immediately high-tailed to the themes and then into the Pages section. As a web-designer her first view of Velocity is not favourable.

I was very enthralled with the UI used for the spell-checker, very creative. I then tried to block new bloggers joining, an easy checkbox on the admin page. So far so good. Next I tried Newsfeeds and Bookmarks. Wish I had a clue what these were. I deleted the ones that were there, hit refresh on the weblog page and got errors. Rock.

I did notice a ‘Flush Cache’ option in the management page, so I tried to goto that page. Not good. When you hit the flush cache link it seems to go ahead and flush the cache, rather than taking you to a page with a nice big button. This fails to match the other styles on display. It does well with Categories though, moving categories over to an existing category when I delete one with entries.

Nice point from Carrie, no rebuilding of things all the time. This is both a boon and a curse though for me, as the admin I suspect it is going to be heavier on my poor under-resourced servers than MT was. If you don’t know, MT is CMS like in that your blog is in a database, but it generates said entries into html for apache to easily serve up. Very nice.

Grumble from Carrie, seems to be no way to customise your themes. When you goto Themes, there is a Custom option, but no concept of how to customise it.

Ooo. Exception time. Trying to save the custom theme resulted in a RollerException on saveThemePages(ThemeEditorAction.java:579).

So, all said and done, MT looks stronger, but Roller has promise. Especially if it turns out to not be a resource hog on my machine. Posting a blog seemed to not affect things too much [though Tomcat 5 is taking 25% of memory, but there’s a fair few things running in it]. If it’s performant, the only major downside will be the customisation powers.

Switching to a Java blog

Sunday, May 16th, 2004

So, the long term slow moving plan of upgrading MT is now dead, and I need to be planning a migration. Oddly, this makes me actually tackle the issue.

First off, Java based blogs. Easier to deal with and it reduces the necessary technology stack, so to speak, on my machines. There are 4 immediate contenders:

RollerWeblogger, Pebble, Blojsom and Blogmento.

Blogmento immediately drops out as I’m looking for a server solution and not a desktop based GUI. Throw in the ‘Windows’ only Installer as the main install and I’m not very interested.

So I proceeded to install the other 3, so my major customer [da wife] can have a peek and give me her opinion.

Roller requires a database setting up, but I’ve long since had that scripted [Thanks Steve, circa 99]. Drop the war in place, unzip it, edit the config. I wonder when the JCP will notice that the war spec is amazingly crippled by the lack of a sibling location in which configuration can go. conf/Catalina/localhost/roller.xml is a nice way to handle sub elements in the server.xml, but why not conf/Catalina/localhost/roller/ for entries that will ‘appear’ in the classpath.

Apart from specifying the admin user, this was nearly all happy J2EE.

I’m on a much older version of mysql than Roller talks about, so I initially had the mysql driver wrong. I also skipped a few of what seem to be optional install components [add an optional icon guys?]. Once I fixed that, we were go. Worked nicely, I blogged. Next.

Pebble. In fact pebble and blojsom are much alike. Both use the filesystem instead of the database and have a fair bit more configuration than Roller, including where things will be on the system, and what the url to the application will be [bit odd, it should just figure this out]. Pebble has a PDF user guide with a few pages of install, while Blojsom has a Confluence site with instructions that confused me a touch.

This proved to be quite telling. On hitting the site, Pebble gave me a nice page, though sod all in the way of things I can do, while Blojsom gave me errors as the user’s I configured are apparantly not configured correctly. Blojsom requires users to be configured outside the web interface it seems, which is quite painful and already knocks it down into 3rd for me.

It says a lot about user psychology that, despite Pebble and Blojsom being equally lacking in functionality [ie bugger all works], Pebble’s nice page makes me want to fix it, while Blojsoms Exceptions make me give up. Slightly affected by the fact that Blojsom seems to be more of a mess configuration-wise than Pebble. Still, out of energy and only Roller working, so I’ve a winner for Heat 1 [though i do need to find out how to disable Roller from handing out new accounts to anyone who asks].

Commons IO 1.0 released

Thursday, May 13th, 2004

Just a brief mention that Commons IO had a first release tonight: http://jakarta.apache.org/commons/io/.

I had planned to do it on Saturday, but it got pre-announced on TSS and I figured I had to find the time tonight to do it. It was pre-announced, I imagine, because TSS people noticed that I’d put the binaries etc up on the mirrors last Saturday.

Although I’m sure there will be the usual set of complaints etc, it’s nice to get it out the door as it’s always a shame when a large lump of code is out of sight.

Continuous Integration for OSJava

Wednesday, May 12th, 2004

I’ve hooked together a constant build system for the OSJava projects, and also doing all the projects at work. The OSJava one is at builds.osjava.org.

The work one has a machine dedicated to it and updates every 5 minutes, so quite cool to see a project suddenly go into a bad red state, have us fix it and then go green again.

I have considered the alternatives, which to me appears to be Cruise Control, Damage Control, Gump and possibly Anthill. Additionally there is the unreleased Continuum from Maven that may hit this area.

Cruise Control tries to take too much control, and their example website lacks all the documentation I want to be a part of it.
Damage Control is proabably very good on the build side, but the reporting is non-existent.
Gump I made the mistake of looking at the traditional version, which is inadequate on the reporting side. The python version [I assumed it was a straight port, but it’s much better] does have a better site, but still not really what I want yet.
Anthill is ant-based.
Continuum isn’t out yet, but looks very interesting.

Integration is written in bash currently, but will goto Java or Python depending on which project I try to use as the underlying system.

Eckel's remote control example

Tuesday, May 11th, 2004

I’m teaching Java at the moment, and predictably using Bruce Eckel’s Thinking in Java as the text book. I was told that he had slides I could use in the class, but it seems not, so instead I’m making my own.

The first couple of weeks I went largely about my own business, giving an overview of Java that differed somewhat from Eckel’s and then trying to get the students to grokk the Java code->compile->run cycle.

The class is an accompaniment to a course on project management, so hopefully I can be forgiven for trying to keep it simple and not throw them into unit testing, pair programming or IDEs.

Anyway, I first skim-read TIJ 1st edition online, having just read Java in a Nutshell to learn how to do this thing we call Java back at university. I then got the 2nd edition cheaply a couple of years back in a sale, and now have the 3rd edition via the class. As it’s in the early chapters, I never really noticed this, but there exists a superb example with which to explain the concept of Objects and References.

Remote Controls [ P.78 ]. My TV has a remote control, a thing that points to it and lets me make it do things, such as report its state or change its state. My cable box also has a remote control, though due to the 4 buttons on the top, it is really 4 remote controls in one. In fact, one of those remote controls happens to point to my TV!

This is a superbly wonderful way in which to describe Java’s basic building block. I don’t know if Eckel was the first to come up with it, but I love it.

Beating spam…

Friday, May 7th, 2004

I’m sure many people do this already, but I finally inverted my email system to save me from spam.

I’m already running spam-assassin, though it increasingly needs an update as it hits 50% of spam or so.

By inverted, I mean that rather than trying to get the spam out of my inbox, I throw everything out of my inbox and only allow things back in that are on my white-list. In fact, every single address has to be on the white-list, so much ends up in my HELD if people start Ccing etc.

I use pine by the way.

Anyway, this is working nicely. I have a snippet of procmail that reads from a whitelist file:

# Everyone who is not on the white-list:0:* ? formail -x”From” -x”From:” -x”Sender:”             -x”Reply-To:” -x”Return-Path:” -x”To:”             | egrep -is -v -f white-list$MAILDIR/HELD

and I have a nice quiet inbox. Mailing lists already get taken off to other places, and email to be moderated [commons-dev and commons-user] get put in a moderate folder.

I’m probably getting 50% of the email I want to read into the inbox, and as my trusted network slowly increases it will improve. If spam comes from a trusted source I do get it [as I’m not doing PGP or anything space-age], so it’s a drawback, but it would have been there anyway.