Blogging Roller

Dave Johnson on open web technologies, social software and software development


i18n test - Iñtërnâtiônàlizætiøn

Iñtërnâtiônàlizætiøn. Making Sam Ruby's suggested I18N test work in Roller required a code change and a configuration file change. First, the code change: I added the following line to force incoming form data to be parsed as UTF-8.

request.setCharacterEncoding("UTF-8");
The config change: I updated my velocity.properties file to support UTF-8:
input.encoding=UTF-8
output.encoding=UTF-8
default.contentType=text/html; charset=utf-8

Unfortunately, this breaks comments as you will see if you try to leave a comment. I'm working on this now.

Update: Roller followed a linkback to Simon Brown's Iñtërnâtiônàlizætiøn post, and lookee there, linkbacks need work too.

Another update: I'm tracking this in JIRA as bug ROL-341. By the way, it appears that JIRA handles iñtërnâtiônàlizætiøn flawlessly.

Yet another update: Thanks to a suggestion from David Czarnecki, who literally wrote the book on Java Internationalization, comments are working on posts with I18N titles. I had to add URIEncoding="UTF-8" in the Tomcat Connector configured in server.xml:

    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 10039 -->
    <Connector port="10039"
               enableLookups="false" redirectPort="10033" debug="0"
               protocol="AJP/1.3" URIEncoding="UTF-8" />

Tags: Roller

Lucene in Action

JRoller blogger Otis Gospodnetic is working with Erik Hatcher on a book about the Lucene search engine. BTW, Roller's search feature is powered by Lucene.

Tags: Roller

Roller Editor UI improvements

We've been making some big improvements to the Roller Editor UI. It is not as slick as a desktop application and it is not exactly accessible, but it is a lot better than it used to be. Below is a screenshot and you can see a recent revision running on Matt Raible's demo site. Feedback is welcome.

Tags: Roller

Roller hack: Highlighting Google hits in your referer list

Eugene Kuleshov shows how to do it on his JRoller blog Euxx.

Tags: Roller

Roller 0.9.8.2 bug fix release is available.

Roller 0.9.8.2 is the fastest and most stable version of Roller yet. It has been battle tested for over five months on JRoller.com.

Roller 0.9.8.2 includes a number bug fixes related to (somewhat embarrassing, I must say) database consistency problems and some additional database indexes for performance. See the change notes for the specifics. Download Roller 0.9.8.2 on SourceForge.

Tags: Roller

Roller 0.9.8.2 out shortly.

Since the Roller 0.9.8.1 release, I have made a number of fixes in the stable ROLLER_098_BRANCH to support JRoller including: additional database indexes for performance, referential integrity fixes, and RSS encoding fixes. Rick Ross will be happy to hear that, with the latest round of fixes, I have finally killed the dayhits rollover bug. I have deployed Roller 0.9.8.2 to JRoller and if all goes well over the next 24 hours, I'll release it on SourceForge.

In other news: Roller 0.9.9 is progressing nicely and is probably less than a month off. See also: <a href= "http://opensource.atlassian.com/projects/roller/BrowseProject.jspa?id=10000&report=roadmap"> Roller's JIRA roadmap.

Tags: Roller

Thanks Jaap!

Shortly after I internationalized the Roller JSP pages, Jaap van der Molen sent me a complete Dutch translation and an offer to update it as needed. Thanks Jaap!

Tags: Roller

Another prediction.

I'm going to go out on a limb and make another prediction: Roller 0.9.9 will ship with a kick-ass (forgive me, I'm from North Carolina) Atom implementation that is not named after a washed-up SNL cast-off. Zing!

Tags: Roller

Matt's Roller 0.9.9-dev demo server

Matt has set up a Roller demo server so that you can experiment with and comment on a recent build of Roller 0.9.9-dev. Thanks Matt. Most of the changes for Roller 0.9.9-dev are complete and now we are focusing on fixing bugs and cleaning up the UI.

Tags: Roller

New Roller Editor UI theme.

In preparation for the March release of Roller 0.9.9, I'm trying to come up with a better looking theme for the Roller Editor UI. I just committed JSP and CSS changes for my first attempt at a new theme. Here is the mockup that I started with:

<img src="http://www.rollerweblogger.org/resources/roller/theme-r1.png" alt="Roller theme in blue"/>

Tags: Roller

My linkblog is live.

Check the right sidebar. I'm still working on making the Roller RSS feed more linkblog friendly and trying to figure out how to handle comments on linkblog entries. Update: The links-only RSS feed now works, try the subscribe link under the linkblog.

Tags: Roller

Slides from the Roller talk.

I sent them to TriJUG last night. Until they post, I'll host the presentation here: RollerTalk-TriJUG-2004.ppt (MS PowerPoint).

Tags: Roller

Where are those slides?

Not a very tough choice for me: should I clean up my speakers notes and post my slides tonight, or should I go out to shoot pool and tilt back a few beverages of the golden variety? Suffice it to say, you won't be seeing those slides tonight.

Tags: Roller

Introducing Hierarchical Categories in Roller



This weekend, I added support for hierarchical categories to the Roller macros. Hierarchical categories make it easy to partition a weblog and to manage both a main weblog and a number of sub-blogs. For example, I would like to have a link blog where each post is a URL to some interesting place and a comment about that place. I don't want my link-blog links to show up in my main weblog.

I added new category-capable versions of a number of Roller macros, as you can see in the three pairs of methods below. Now, if you want to display only weblog entries one category and it's sub-categories you can use catagory-capable macros to get what you want.

showWeblogEntries($dayTemplate $max):
   Display up to $max number of entries using specified day template.

showWeblogEntriesInCategory($dayTemplate $max $cat):
   Same, except only include entries under $cat.

showRSSLinks():
   Show links to available RSS feeds.

showRSSLinksForCategory($cat):
   Show links to vailable feeds under category $cat.

showWeblogCategoryChooser():
   Show links to all top-level categories.

showWeblogSubcategoryChooser($cat):
   Show links to top-level subcategories under $cat.

But those category-capable macros are not enough to support the main-blog and sub-blogs arrangement that I had in mind. To get that, I added the notion of a main category to Roller. Now you can specify a main category for your weblog, and the showCategoryChooser(), showWeblogEntries(), and showRSSLinks() methods will treat that main category as the root of your weblog.

It is easier to understand this by example, so I'll tell you what I did to this site. Before re-arranging my site, my category tree looked like this:

+  Root <-- MAIN CATEGORY
   + General
   + Java
   + Rolling
   + Blogging
   + Dot-Net
   + Links

My main category was my root category and my top-level categories were Java, Dot-Net, General, Blogging, and Links. I wanted to partition my weblog so that my links category no longer shows up on my main blog and in my main RSS feed. To accomplish this, I rearranged my categories to look like this:

+  Root
   + Main <-- MAIN CATEGORY
      + General
      + Java
      + Rolling
      + Blogging
      + Dot-Net
   + Links

I moved my main-blog categories under a category at path /Main and set that as my new main category. Now, without changing any macros on my weblog pages, my weblog and RSS feed will include only entries from under category. As you can see by hovering over the links above in my category chooser, the links now point to category paths /Main/Java and /Main/Blogging rather than just category names Java and Blogging as they used to. You can also see the same effect in my RSS feeds on the lower right-hand side of the page. The RSS feeds macro now displays only the top-level categories under the main category and my main RSS feed now includes only posts made in the main category and it's subcategories.

To display entries under my Links category, which will be my link-blog, I'll use the new showEntryLinksInCategory("/Links") macro. I'll add that later, probably right under my calendar on the right-hand side of the page.

All this stuff works fine if Roller is configured to use Hibernate, which is the Roller default, but under Castor-JDO, fetching of subcategories does not work. It was important to me, for performance reasons, to be able to fetch all entries under a category and in all subcategories by using a single query. I don't think a recusive approach with queries at every level would be performant. To accomplish the one query, I had to de-normalize the Category table by adding a Category-Assoc table. By issuing a single multi-table query, I can get what I want, but most unfortunately, Castor-JDO does not support multi-table queries. So, long story short, if you use the Castor-JDO backend, you are stuck with a single level hierarchy.

Tags: Roller

Welcome to new Roller blogger...

Jeremy Sproat, who is running Roller 0.9.8.1 and JSPWiki and has created nice new themes for both.

Tags: Roller

Wiki article: RollerArchitecture.



In preparation for my talk Monday, I put together some new diagrams and a short overview of RollerArchitecture on the Roller Wiki.
Tags: Roller

Sometimes my desire to develop blogging software

outweighs my desire to blog. That is the case right now. I've been working on getting hierarchies right in Roller and it is eating almost all of my free time. Plus, I've got other things to do, like teaching Alex and Linus how to ride bikes, watching Lawrence of Arabia, preparing my talk, and, god forbid, working. I'll be back.

Tags: Roller

JRoller seem sluggish today?

It does to me too. Rick Ross and I are investigating. Update: we never did figure out what cause the sluggish behaviour today. We suspected mod_jk because it was throwing lots of "SEVERE" errors, but it has been throwing those for a while now. Looks like we have not banished all of the gremlims that haunted FreeRoller in days of old.

Tags: Roller

#roller

Despite that busy week, I've been making time for Roller development in the evenings. I've also been keeping a window open on the #roller IRC channel on freenode.net. Stop by for a chat if you have Roller questions or just to say hi.

Tags: Roller

Progress on PostgreSQL

PostgreSQL is a great database and I've been using it at work with Roller, but it is not really supported in Roller - yet. Tonight, I spent some time testing Roller 0.9.9-dev with PostgreSQL and it is working well. Here are some notes on Roller and PostgreSQL I typed up on the wiki.

Tags: Roller

« Previous page | Main | Next page »