But, being productive is fun.
Matt made some insightful comments about what he calls America's obsession with productivity. I'm not sure this is only an American phenomenon, but it is a truism. If you are lucky enough to love the work you do, as is the case for many software developers and especially open source developers, then this is not necessarily a sad phenomenon.
Being productive means different things to different people. For me, it means designing and developing software. I've found that when I'm designing or developing something interesting at work, I have much less of a desire to work on side projects in the evening. I seem to have a need to develop software and if that need is not fulfilled at work, I have to do it after hours. My wife has noticed this and once caused me a little embarrassment. One year, at a company christmas party, she told the VP of development "why don't you give Dave something interesting to do, so he doesn't have to write code all night."
One year blogaversary!
As of today, I've been blogging for one year. I wrote my first post (also duplicated on this site) using Radio, and I didn't move over to Roller until June.
New Roller comments feature.
I just committed changes for a new Roller macro showCommentsPageLink that supports non-popup based comments for Roller. The feature still needs some tweaking, but you can try it out by commenting on this post. Next up: MetaWeblog API support.
nntp//rss.
Hey, this nntp//rss thang is pretty cool and it works might fine with Roller as long as you 1) enter a space for your blogid and 2) enable Blogger API support for your weblog in your blog's Roller config settings page.
I'll be adding MetaWeblog support in Roller 0.9.7 so that titles will work too.
Powered by Hibernate.
This blog is now powered by Hibernate. The upgrade went smoothly. Those asking about how Hibernate compares to Castor will have to wait a bit, I'm focusing on Roller 0.9.7 development right now and I may not have time for comparisons until after the release.
Hibernate implementation done.
As Matt reports, I have finished the Roller-Hibernate implementation and committed it to CVS. Tonight, I will upgrade this site to the latest code from CVS. Matt wants to know how it works, but I don't know yet. Hibernate has been a pleasure to work with and the results seem fast, but I have not done any benchmarks yet.
Right now, Roller has a pluggable persistence layer with two implementations Hibernate and Castor. I'm not sure how long that will last as it is no fun maintaining two implementations of the very same thing.
Into Out-of-the-Box
Dominic Da Silva points out that Roller has been added to Out-of-the-Box.
Dominic Da Silva: While reviewing the updated Out-of-the-Box 2.0 package listing, I noticed Roller in there. Well done Dave, seems they see Roller as a value added app to any Java developer's software list.
Red Hat Enterprise Portal Server
Red Hat has released another Java product: the Red Hat Enterprise Portal Server. The product seems to be closely related to the Redhat Content Management System (formerly the ArsDigita Community System). I say this because the whitepaper was written by former ArsDigita employees (Jim Parsons and Richard Li) and the process for developing a portlet involves writing PDL. The product includes porlets for discussion forum, document management, resource scheduling, tasks, bookmarking, and chat.
Given the anti-Java bias that I have noticed among many Linux devotees (and especially on Slashdot) over the years, I find it interesting and encouraging that all of the "Red Hat Enterprise Applications" (all two of them) are pure Java. Also, the Red Hat Web Application Framework is Java.
SharpReader.
Brad '.Net Guy' Wilson: Oh, and isn't it interesting that the first wave of .NET rich client apps that we've seen have all been blazingly fast and look appropriate for the environment... that definitely has never been true of Java, even today 8 years after release. Microsoft has a real advantage here that they need to leverage, by encouraging people to get away from awful web UIs and get back to rich client/server UIs.
Ouch! Brad is talking about <a href= "http://www.hutteman.com/weblog/2003/04/06.html#000056">SharpReader, a new .Net based three-paned RSS aggregator. I'm downloading it now. The related posts feature looks really cool.
Update: OK, I'm sold. SharpReader is awesome. It has really leap-frogged Synderella.
Update: it does not seem to detect updated posts like Synderella and Aggie do.
Details on the FreeRoller 'feeds always appear updated' bug.
The problem was that FreeRoller has two DNS names 'freeroller.net' and 'roller.anthonyeden.com' and Roller uses the Servlet API request.getRequestURL() method to determine the URLs for RSS feed permalinks. Normally, this would not be a problem. You enter the freeroller.net address in your aggregator and you always get permalinks the to freeroller.net domain.
After Roller started caching RSS feeds, this became a problem. Sometimes RSS feeds would be cached with the freeroller.net address and sometimes they would be cached with the roller.anthonyeden.com address. If your aggregator recieved a copy of a feed at 1PM with the freeroller.net address and the same unchanged feed at 2PM with the roller.anthonyeden.com address, it would be fooled into thinking that every news item in the feed had been updated because the permalinks are different.
I fixed this by changing Roller so that it determines it's base URL only once and then stores this URL in the ServletContext as an attribute. There is still a risk that when Roller is restarted, feeds will appear to have been updated depending on whether the first request is for freeroller.net or roller.anthonyeden.com. Anybody have a better solution?
Bryan Field-Elliot suggests adding a configuration parameter so that a Roller admin can specify the 'base URL for RSS permalinks'. Sounds good to me.
Coming up to Jetspeed.
For a number of reasons, I'm trying to come up to speed on Portal technology and the status of the Java Portlet API specification. I've done a little research and this is what I have gathered so far. Your comments and corrections are welcome.
What is a Portal?
A Portal is a web site that provies a starting point for access to information and applications. Registered users of a Portal are able to create their own personal views of the Portal and are able to customize both the content and layout of these views. A Portal Server provides the infrastructure for building a Portal. A Portlet is a component that plugs into a Portal Server and may then be included in a users personal views.
The Porlet API specification
The Java community has been working to standardize Portal technology for years now. So far there have been three JSR's for a Portlet API spec, JSR-162 which was withdrawn, JSR-167 which was withdrawn, and now JSR-168 which has been cooking for over a year now. JSR-168 is still private, but a public draft is expected any day now.
The Portlet API specification will make Portlets the fundamental unit of execution in a Portal Server just as the Serlvet API made Servlets the fundamental unit of execution in a Web Application Server. If you write your Portlet using the Portlet API, you'll be able to deploy it without code changes to any standard Java Portal Server just as you can deploy a Servlet to any Java Web Application Server.
Portal Servers and the Reference Implementation
The abscence of a Portal Server standard has not stopped the big J2EE players from pushing ahead with Portal Server products. Here is a quick summary of the offerings from the big players:
- Jakarta: Jetspeed - Based on the Turbine Framework. Javadocs.
- IBM: Websphere Portal - based on Jetspeed. Has it's own Portlet interface. Javadocs.
- BEA: Weblogic Portal - has it's own Portlet interface. Javadocs.
- Sun: Sun One Portal Server - doesn't define a Porlet interface. Javadocs.
Every Java spec is accompanied by a Reference Implementation (RI) and often the RI is released as an open source product. Stefan Hepper of IBM, who is the Specification Lead for the Portlet API has proposed a new Jakarta sub-project called Pluto to develop an RI for the Portlet API. Pluto will be implemented using technology from the existing Jakarta Jetspeed product. Jetspeed committer Andy Oliver has done a nice job of summarizing the various mailing lists discussions concerning Pluto on the Pluto Talk Page.
Speculation
The Portlet API is still a secret guarded by the Java Community Process, but it is likely that the final API will look a lot like the Websphere Portal's API. After all, the specification lead works for IBM, Jetspeed is favored for the RI, and the Websphere Portal is based on Jetspeed. Based on this speculation, the best source for information on Portlet development is probably IBM's Websphere Portal Zone. There you will find a recent interview with the lead architect of the Websphere Portal team, a very recently revised Portlet Development Guide, and an article on Developing a Struts Application for Websphere Portal 4.2.
Update: Floyd Marinescu wrote in to recommend a ServerSide article Portal Standards by Thomas Schaeck and Portlet API spec lead Steffan Hepper.
Who's Bruce Eckel?
I made it to the RTP Bloggers lunch today at my new favorite lunch place Crazy Fire mongolian grill. Bruce Loebrich has a <a href= "http://radio.weblogs.com/0104308/2003/04/03.html#a2932">nice write up of the event. Also, Ken Coar has posted some pictures of the attendees chewing food, picking noses, and etc. Apologies to Sam Ruby and John Beimler, but I thought this was a funny exchange:
John Biemler: Did you hear Bruce Eckel said SOAP sucks? Sam Ruby: who's Bruce Eckel?
select count(*) from rolleruser;
+----------+ | count(*) | +----------+ | 659 | +----------+ 1 row in set (0.00 sec)
On FreeRoller.
Tweaking FreeRoller.
After Anthony moved FreeRoller over to the JavaLobby server, I was nervously watching the server and waiting for it to go down. Now that Roller is hosted on a big honkin' server running the latest Tomcat (4.1.24), I have nobody to blame but myself when the system slows to a crawl or crashes. Actually, Roller is built on a giant stack of open source software (Struts, Velocity, Castor, OSCache, etc.) so there is plenty of blame to go around, but I'm not the blaming type.
Unfortunately, I did not have to wait long for disappointment. Roller crashed on Saturday with an out-of-memory exception (too many cache entries in memory?), so I tweaked the OSCache settings to cache only to disk. On Sunday, Roller exhausted the Tomcat thread pool (too much OSCache disk I/O?) and crashed again. This morning, I confugured OSCache for disk and memory caching with a limit of 100 cache entries, and I have configured Tomcat for 256MB max memory. Things seem to be holding up well so far, but will FreeRoller make it through the night?
The next story.
Recession, terrorism, war, and now an apparently <a href="http://www.nature.com/nsu/030324/030324-11.html" title="Nature magazine article on SARS">unstoppable and <a href="http://straitstimes.asia1.com.sg/topstories/story/0,4386,180311,00.html" title="Doctor who identified SARS died">deadly <a href="http://news.com.com/2100-1022-994612.html?tag=fd_top" title="News story about HP's reaction to SARS">airborne virus called <a href="http://www.cdc.gov/ncidod/sars/index.htm" title="CDC page on SARS">SARS is <a href="http://espn.go.com/nhl/news/2003/0329/1531200.html" title="ESPN article about hockey players at risk of SARS">sweeping the world. I'm ready for some good nows now, please. The story still seems to be in the margins, at least in my part of the world, but I think it might start to push to war off of the front page in the upcoming weeks. The story is popping up in the blogs I read now, particularly Joi Ito's and The Agonist. There are <a href="http://www.naplesnews.com/03/03/perspective/d922370a.htm" title="Michael Fumento criticizes the panic">some who think the panic is a <a href="http://www.robertlyons.co.uk/weblog/2003_03_30_archive.shtml#91644549" title="Blogger Rob Lyons comments on Fumento's article">bit overblown and I hope they are right.
FreeRoller holding up and data-export ramblings.
I took the FreeRoller system down briefly to patch the index.jsp page and then found that, now that it is hosted on a JavaLobby server, I did not have permission to bring it back up (doh!). Later, the system crashed because (somehow) the export-user feature had become re-enabled and somebody tried to use it. BOOM! Export-user is a sure fire way to blow up Roller. Needless to say, I disabled Export-user before I restarted FreeRoller. Other than that, FreeRoller is holding up nicely at JavaLobby.
Export-user was really easy to implement and it worked well for a small data-set (on a machine with no traffic). I used Castor-JDO to load a user object and the user's entire object-graph from the database and into memory: pages, blog entries, bookmarks, folders, categories, etc. Then I use Castor-XML to serialize the entire object-graph to XML. The whole deal is about 15 lines of code which is great, but it locks up the FreeRoller everytime which is not so great.
I'm not sure what to do about export in Roller 0.9.7, or even if we'll have export in Roller 0.9.7. Maybe I should allow users to export blog entries in RSS format, bookmarks in OPML format, and page templates as text. It would be nice to wrap everything up in one nice tidy bundle instead of separate files that must be pieced back together later. Export should probably be an asynchronous operation: you request export and later you get an email telling you where you can download the exported data file - possibly a specially formatted ZIP file that cna easily be imported into another Roller installation. Any ideas? Any volunteers? ;-)
« Previous page | Main | Next page »