Blogging Roller

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


Pebble.

Noted Java author and JSP expert Simon Brown has decided to release on SourceForge the blogging software that he wrote to power his own site. He calls it Pebble.

Tags: Roller

Servlets 2.4 / JSP 2.0 final draft 3.

The ServerSide is reporting that the JSP 2.0 and Servlet 2.4 Proposed Final Draft 3 is available available.

Download the JSP 2.0 PFD 3 spec:
http://jcp.org/aboutJava/communityprocess/first/jsr152/index3.html

Download the Servlet 2.4 PFD 3 spec:
http://jcp.org/aboutJava/communityprocess/first/jsr154/index3.html

Tags: Java

Sidewinder set for release.

CNet is reporting that Borland, is ready to roll out the product formerly known as "Sidewinder."

The company will follow the completion of C# Builder with a bundled suite of .Net tools that Borland gained during a series of aquisitions last year. The .Net-specific tools will address the process of defining application requirements, the design phase, programming, testing, deployment and management.

Tags: Microsoft

Quick start guide:

on the Wiki, with screenshots.
Tags: Roller

Look what the linkback dragged in.

That linkback to Mark Lussier's inbox (one of the Blojsom developers) on yesterday's 'Some bugs' post is funny as hell. What kind of web-mail is that guy using? For the record, the SQL and jar problems were on platforms that we do not test (Postgres, MySQL 4.0, Tomcat 4.0, and Tomcat 4.1 LE).

Tags: Roller

Some bugs in 0.9.7.

Roller 0.9.7 has been working pretty well for me and a couple of others like Lance and Werner, but some other folks have run into problems. Thanks to all those who have downloaded, tested, and reported bugs. We'll have a bug fix release (0.9.7.1) out in the next couple of days. The <a href= "http://opensource.atlassian.com/projects/roller/secure/IssueNavigator.jspa?reset=true&pid=10000&fixfor=10040">fix list is in JIRA.

Tags: Roller

Suggestion for SOAP usage.

The inventors of SOAP, Winer and Box, need to wash their mouths out with it, see what I mean?
Tags: General

Lance's OPML macro.

Lance follows up and suggests that we add a new #showBookmarkOPML( $folderName ) macro to Roller to make it even easier to add produce OPML with Roller. Not a bad idea. Another idea would be to enhance the #showBookmarks( $folderName ) macro so that it displays an OPML icon which links to the OPML for bookmarks in the folder being displayed.

I should point out of one limitation of Roller bookmarks. Currently, the Roller Editor UI does not allow bookmark folders cannot be nested. Once we allow nested folders, we'll have to make the #showBookmarkOPML() macro recursive. Can a VelociMacro be recursive?

Tags: Roller

Producing OPML with Roller.

Dave Winer's Outline Processor Markup Language (OPML) is the weblogging world's format of choice for exchanging RSS feed information, bookmarks, and, of course, outlines. Roller doesn't store information in OPML format, but Roller can import bookmarks in OPML format and with some minor customizations Roller can also produce OPML output for bookmarks and other data.

Producing OPML output of your Roller bookmarks is easy. Here is how you'd do it in Roller 0.9.7. Just login to your Roller account, go to the Website:Pages page and add a new page. I called my page _BookmarksOPML, because names that start with an underbar are not displayed in the Roller Nav Bar (on my page the NavBar is shown under the word NAVIGATION on the right side of my page). Next, I entered the following Velocity template code for the page:

<opml version="1.1">
<head><title>Dave's bookmarks</title></head>
<body>
<outline text="Blogroll">
#set( $links = $vHelper.getFolder("Blogroll").getBookmarks() )
#foreach( $link in $links )
   <outline text="$link.name" link="$link.url" />
#end
#set( $links = $vHelper.getFolder("Java blogs").getBookmarks() )
#foreach( $link in $links )
   <outline text="$link.name" link="$link.url" />
#end
</outline>
</body>
</opml>

There is only one real trick here: the use of the $vHelper object. That object is placed into the Velocity context to allow you access to Java objects that represent your weblog entries, bookmarks, etc. To see what methods are available on the $vHelper object see the Javadocs for VelocityHelper. Most Roller users would never need to use $vHelper. Their needs should be completely satisfied by the ordinary Roller VelociMacros.  For those who want to add new macros, however, $vHelper is a necessity.

In the code above, I use $vHelper to fetch two of my bookmark folders, "Blogroll" and "Java blogs". A bookmark folder is also a Java object (FolderData). From a Bookmark Folder, I can fetch bookmark objects (BookmarkData). I use a Velocity #foreach to iterate through the bookmarks in each folder and to spit out the bookmark names and URLs in OPML format.

So, does it work? Sure. The URL is below if you want to try it yourself.

http://www.rollerweblogger.org/page/roller/BookmarksOPML

Here is what my new OPML page looks like in Philip Pearson's recently Script-dotted C# OPML browser:

OPML directory brower screenshot

UPDATE: I just noticed that Dave Winer posted a UserTalk script (UserTalk is Radio's own scripting language) this morning that does roughly the same thing that I did above. His script is a lot more complicated because it is doing a lot more work: filling in the headers, checking for escapes, etc.

Tags: Roller

Roller 0.9.7 is available.

I'm going to forgo the RC nonsense and call today's release Roller 0.9.7. Release Candidates are just too much useless process for a little project like this. If somebody finds a problem with Roller 0.9.7, and they will, then we'll have Roller 0.9.7.1, 0.9.7.2 and so on.

Roller 0.9.7
Downloads
Change notes 

I've still got some 0.9.7 related work to wrap up, like finishing the User Guide and Castro vs. Hibernate testing, but that is no reason to hold up the release. Speaking of docs, the User Guide and Install Guide are now part of the Roller WIKI. This means that they will never be complete. Instead, with your assistance, they will be constantly evolving. Still, I'll do my best over the next week to bring the User Guide up to date with the new Roller 0.9.7 features.

We've been working on Roller 0.9.7 for so long that I almost forgot how much work Lance Lavandowska back in the early months. Lance was responsible for the new comments feature, the conversion of Roller macros to VelociMacros, adding a spell-checker for blog posts, and adding the very useful theme-switcher UI (he also added GZip compression for pages and RSS feeds, but that still has Tomcat issues). BIG round of applause for Lance!

Tags: Roller

Standalone SWT libraries available.

Don Park points out that you can now download "SWT libraries and source for standalone SWT application development." See the Eclipse download page and scroll all the way down to the bottom. There are also a bunch of example snippets.

Don Park: Eclispe team released binary and source packages for building standalone SWT applications.  Good stuff.  SWT API is a little akward compared to Swing, but not too bad considering the benefit: responsive GUI.  Downloadable packages for most of the key platforms are at bottom of the usual download page. Enjoy.

Tags: Java

Re: Joe Hewitt Comments

Hey Matt, don't bring JSP into it. You could probably do this in Roller 0.9.7 without even making a code change. Just use the Roller Editor UI to add a new page template to your site to produce comments in Hewitt's XML format:

   #set( $comments = $allComments )
   <comments>
   #foreach( $comment in $comments )
   <comment id="$comment.id">
      <author>$comment.name</author> 
      <email>$entry.email</email>
      <url>$entry.url</url>
      <timestamp>$comment.postTime</timestamp>
      <body>
         $comment.content
      </body>
   </comment>
   #end
   </comments>
Assuming that the page above is named 'Comments' then the URL to call it and retrieve the comments for your post would look like this:
http://www.raibledesigns.com/comments/rd/Comments?anchor=joe_hewitt_comments
UPDATE: I made a couple of corrections and additions to the code above and the the URL; these are shown in bold.

Tags: Roller

Rumor has it

that some subset of Wrox Press has been purchased by Wiley. I have absolutely no idea what this means for Professional JSP 2.0.
Tags: Java

The beauty of open source development.

Matt Raible: Aaaahhh, the beauty of open source development: 1) you don't have to work on it at all if you don't want to, 2) you only have to implement the features you want, and 3) there are no deadlines.

Tags: Roller

Roller 0.9.7 approaches.

Roller 0.9.7-RC1 should be out in the next day or two. Here are the new features:

Comments, Trackbacks, and Linkbacks
   * Both in-page and pop-up style comments are supported
   * Remember-me feature for comments
   * You can delete comments that you don't like
   * Support for Movable Type style Trackbacks
   * Trackbacks are treated as comments
   * You can send Trackback pings to other weblogs
   * Support for Mark Pilgrim style "for further reading" Linkbacks
   * Linkback searches referering sites and RSS feeds for excerpts
   * Linkbacks can be disabled by Roller administrator
   * New #showLinkbacks() macros displays Linkbacks for day
   
MetaWeblog API
   * Support for both Blogger API and MetaWeblog API
   * Allows both titles and categories from w.bloggar and other clients.

General
   * Simplified main page is much faster than before
   * Main page displays most recent posts and most popular blogs
   * Main page RSS feed aggregates all posts on site   
   * Remember-me feature for logins
   * New VelociMacros are replacing old page macros
   * One click to post as public or post as private 
   * Spell checker for posts

I don't expect Anthony to upgrade FreeRoller until the final release.

Tags: Roller

Trackback support in Roller.

I just committed the code for Trackback to Roller. Roller now acts as a Trackback server, accepting Trackback pings, and Roller can also act as a Trackback client. The Roller Editor UI now includes a Trackback page that allows you to send Trackback pings for each of your weblog entries and that allows you to view the response from the target Trackback server.

Trackbacks are displayed along with other referers (which are harvested using a Java version of Mark Pilgrim's Linkback technique) via the new #showDayReferers() macro.

I will now test Trackback by sending a ping to the Movable Type Trackback test server. It worked! Please send me a Trackback so that I can test my ability to accept pings, the Trackback URL for this entry is:
http://www.rollerweblogger.org/trackback/roller?trackback_support_in_roller
Tags: roller

Rebelutionary is back.

Now that Mr. Blojsom has blogged it, I guess the cat is out of the bag. After a short break from blogging, a world tour, and suspected SARS, the original Java blogger Mike Cannon-Brookes is back with a cool new site design. Welcome back Mike!

Tags: Blogging

Roller and nntp/rss.

Jason Broome, the author of nntp//rss, saw my MetaWeblog API post the other day. He made a small modification to his code and now Roller and nntp//rss work perfectly even in MetaWeblog API mode. Maybe those XML-RPC based weblog APIs ain't so bad after all. If you want to use Roller (0.9.7 or later) with nntp//rss, you'll need to replace your existing nntprss.jar with the following download from Jason's site:

http://www.methodize.org/nntprss/patch/0.3-metaweblog/nntprss.jar

Tags: Roller

Idea for Multi-Contribitor Blogging in Roller

I have been thinking about how to redesign the Roller main page index.jsp. Currently it show a list of the most recently updated weblogs on the site. What if we were to replace this main page with a multi-user weblog? Read more about this idea on the Roller Wiki.

Tags: Roller

MetaWeblog API support in Roller

<img src="http://www.rollerweblogger.org/resources/roller/bloggar.jpg" alt="Editing a Roller blog entry in w.bloggar"/>

Turns out, I didn't have to steal much code from Blojsom to get MetaWeblog API support going in Roller. I ended up only stealing method signatures, Javadocs, and logging statements (thanks guys!). Roller and Blojsom are so different and the Blogger and MetaWeblog APIs are so simplistic that no further theft was necessary. In the process, I learned about the simple and clean architecture of Blojsom and I learned that XML-RPC based Weblog APIs are a bit of a mess these days.

Looking at the Blojsom and Roller implementations of these APIs gives you a nice glimpse into the internals of these two Java-based weblogging systems. Take a look at the Blojsom impementations BlojsomBloggerAPIHandler.java and BlojsomMetaWeblogAPIHandler.java and you can see the essence of Blojsom: single-user blog implemented with file-system storage. Take a look at the Roller implementations BloggerAPIHandler.java and MetaWeblogAPIHandler.java and you can see the essence of Roller: multi-user blog implemented via business tier interfaces and POJOs. Take a look at channel 77 and you can see the Essence of Emeril: BAM!

In the end, I was able to implement all of the Blogger and MetaWeblog APIs except for the MetaWeblog API newMediaObject. Blojsom implements everything except getUserInfo, deletePost, getTemplate, setTemplate, getPost, and newMediaObject. I'm not sure all of those APIs are really all that useful anyway.

Even after implementing all of those APIs in the Roller "server," the job is not done. This is why I say that the APIs are a bit of a mess. Each server-side implementation is a little different. If you want to write a full-featured blogging client, then for each RPC method call you have to use conditional logic to determine based on the blogging server type which implementation is to be called. I'm not sure if this is due to a limitation of XML-RPC. Maybe XML-RPC based APIs are just too loose: after all, there is no WSDL equivalent for XML-RPC. Or, maybe XML-RPC is fine and only the differing implementations are to blame. I don't know. All I know is that I implementing the APIs is just not enough.

How can I say that? How do I know that my poor coding is not to blame? Take a look at w.bloggar and you'll see what I mean. The w.bloggar client is a very nice and full-featured blogging client. It supports titles, single-categories, multi-categories, template editing, and other things. Before I could get all of those features to work with Roller, I had to spend time tweaking the w.bloggar configuration file CMS.ini. Take a look at this troubling comment at the start of the CMS.ini file:

  ; Please don't change this file unless you know exactly what you're doing!
  ; And if you do be sure to make a backup of it.
  ;
  ;Values for *Method Options
  ; 0 - Not Supported Method
  ; 1 - Use Blogger API
  ; 2 - Use Blogger Pro API
  ; 3 - Use metaWeblog API
  ; 4 - Use MovableType API
  ; 5 - Use b2 API

This indicates a very sorry state of affairs. I was able to make all of the cool features of w.bloggar to work with Roller 0.9.7-dev by writing the configuration file section below, but other blogging clients still don't work completely. MozBlog, which appears to be somewhat flakey, and nntp//rss still don't work. Do I have to write configuration file for each blogging client I want to support? If so, I hope if they offer the same level of tweakability as w.bloggar.

  [CMS-11]
  Name=Roller
  URL=http://www.rollerweblogger.org
  Icon=rollerbadge.jpg
  Service=0
  Host=www.yourhost.com
  Page=/roller/xmlrpc
  Port=80
  Https=0
  MultiCateg=3
  GetCategMethod=3
  PostMethod=3
  GetPostsMethod=3
  TemplateMethod=1

Maybe it is time to retire the Blogging and MetaWeblog APIs. They are tired and they need some rest.

Tags: Roller

« Previous page | Main | Next page »