Blogging Roller

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


WebSphere App Developer at the RTP-WUG.

I'm not going to be able to make it to the RTP WebShere Users Group meeting tomorrow (Tuesday Nov. 26), but it sounds like an interesting meeting, especially the Struts Builder bit.

WSAD is the successor to IBM's VisualAge for Java. It was first released at the version 4 level about a year ago, and now, with version 5, it moves to an Eclipse 2.0 base, and adds full J2EE 1.3 support, as well as numerous enhancements. Roger's talk will introduce WSAD 5.0, with an emphasis on the Web Development side. He will also demonstrate some of the new items, including Struts Builder and Cheat Sheets.[From the RTP-WUG meeting annoucement]

Tags: Java

Leo is 5 months old.

I'm working at home this week on various geekly projects and I'm spending lots of time with Leo. He was already a happy little guy, but now that he can sit up he is overjoyed. You can see he is so proud of himself. I think that this time, from about 4 months to a 9 months old, is the sweetest time in baby development. Babies at this age can't move around and get into trouble. They can smile, laugh, coo, goo, and babble in a pleasant way, but they can't talk back at you. They never say "Dad, you are so lame" even when they should.

Tags: family

File access from Servlet apps.

<a href= "http://freeroller.net/page/jduska/20021125#managing_files_within_a_web">Jeff Duska is forgetting a couple of things that many Servlet/JSP developers (myself included) often forget. He is forgetting the distributed nature of Servlet apps and he is forgetting the WAR.

Someday, when your app becomes incredibly popular, you might find that you need to distribute the load across multiple worker processes on multiple computers. All the major app servers support this, does your app? In a distributed configuration, if your app writes a file to the file-system on one computer, you won't be able to get to that file on another computer. If you want all instances of your app to share a file, then this is a problem. If you are just writing a simple little temporary file, which sounds like Jeff's case, then this is generally not a problem.

Even if you are only writing a temporary file, you still don't want to write it inside your Servlet context. When your app is packaged in a WAR file, may not be able to open files inside the Servlet context. If you are just writing a temporary file, it might be better to use one of the static <a href= "http://java.sun.com/j2se/1.4/docs/api/java/io/File.html">java.io.File.createTempFile() methods to get a file.

Tags: Java

FreeRoller running 0.9.6.4.

Anthony applied the Roller 0.9.6.4 build to FreeRoller today. The RSS fix seems to have worked and I am no longer seeing old FreeRoller posts pop up in Aggie. It is nice to see Aggie report the "Channel has not changed since last read" message.
Tags: Roller

RSS feed fixes.

I fixed those two RSS feed bugs that I mentioned on <a href= "http://www.rollerweblogger.org/page/roller/20021121#everything_old_is_new_again">Thursday. This site should be behaving perfectly with RSS aggregators that try to track which articles are new, so please let me know if you see any misbehavior.
Tags: Roller

Everything old is new again.

No, it's not just you Darren.  I use Aggie and I have noticed that posts from Roller-based blogs often show up as new when they are in fact old.  Others have reported similar problems with FeedReader and now you are seeing this problem with Radio's aggregator.  I'm hoping that by fixing the following two bugs will resolve this problem:

ROL-107: RssServlet should obey the if-modified-since header
ROL-113: RssServlet should use last-modification time rather than generation time 

Tags: Roller

Dragon Tales.

Ord I knew that Alan Williamson, Editor-and-Chief of Java Developer's Journal, was the CTO of N-ary Consultancy.  I did not know that N-ary has it's own blogging software and that this software runs the Blog-city site.  The blogging software appears to be Cold Fusion based, but it may be a fusion of CFML and JSP.  Blog-City is powered by Blue Dragon, N-ary's own proprietary app server that has the "unique ability to combine JSP and CFML and to share resources between those pages."  Wait, isn't that what Cold Fusion MX for J2EE does?

Disclaimer: The title Dragon Tales is not meant to imply that anybody is telling a lie. My kids like the PBS show <a href= "http://pbskids.org/dragontales/">Dragon Tales and <a href= "http://pbskids.org/dragontales/dragon_ord/coloring_book/coloring_images/ord.html">Ord is the first thing that pops into my mind when I hear "blue dragon."

Tags: Blogging

Render unto Castor...

Dominic DaSilva and Mike Cannon Brookes both read my recent Roller persistence proposal as a proposal to escape from the Castor persistence framework.  That is really not really the case.  I want to make it easier for Roller to make full use of Castor and at the same time I want to separate the Roller business logic from from the Castor-based persistence logic.  I don't like the fact that the Roller business tier is littered with calls to Castor and I want to separate concerns.

Why can't Roller make full use of Castor now?  The answer is in the history.  Roller is constrained by it's own EJB legacy.  When I originally wrote Roller back in the Spring of 2001, I implemented the Roller manager objects as EJB Session Beans and the domain objects as EJB Entity Beans.  I quickly learned that EJB Entity Beans are way too heavy.  I started to take advantage of XDoclet's ability to generate light-weight Value Objects.  Eventually, I came up with an architecture where the presentation tier knew nothing about EJB.  The presentation tier only knows about the business tier interfaces and the Value Objects that those interfaces returned or accepted as arguments.  Once I got to that point, I was able to completely swap out EJB and switch over to Castor.

So, Roller uses Castor for all persistence now, but it still uses the EJB Value Objects generated by XDoclet.  To add a new persistent object to Roller, you create an abstract class that extends javax.ejb.EntityBean and you mark that class up with XDoclet @ejb, @castor, and @struts tags.  This new class will not actually be used by Roller at runtime.  It is used at build time as the basis  for XDoclet code generation that generates Roller's Value Objects, Castor mapping file, and Struts form beans.

As I state in the proposal, I'd like to stop using the Value Objects for persistence.  They are just dumb data buckets and we need them to be real business objects.  That said, I hate the idea of hand-maintaining code that was once generated.  I'm conflicted.

Now, on to the other issue: separating the Roller business logic from from the Castor-based persistence logic and possibly attaining persistence layer pluggability.  I feel less strongly about this because 1) if Roller moves from Value Objects to full fledged business objects then much of the business logic can reside in those objects and 2) Castor works pretty well and at this point no other persistence framework offers a compelling reason to switch.

Like Dominic, I'm on a "quest for a good Java/XML O/R mapping framework."  None of the competing persistence frameworks offer me a really compelling reason to do the work required to switch, so I hope to learn to use Castor better and and at the same time try to design away some of that work.  

One other thing.  I tried to get some design assistance from the Castor and XDoclet folks in the past, but I came up short.  If you are an XDoclet/Castor expert, please speak up and help us make Roller a best practices example of XDoclet/Castor usage.  Read the Roller <a href= "http://www.onjava.com/pub/a/onjava/2002/04/17/wblogosj2ee.html">article, read the <a href= "http://article.gmane.org/gmane.comp.java.roller.devel/335">proposal, get on your high horse, stand on your soap box, or climb the stairs into your ivory tower, and tell us what we are doing wrong and how we can do better.

Tags: Roller

There is no clear winner.

Triangle-based Webperformance, Inc. has published a <a href= "http://webperformanceinc.com/library/ServletReport/index.html">Servlet Container Performance Report that compares Tomcat, Orion, Jetty, Resin, SunOne, and Websphere. The testing methodology and the results are interesting and really show off the Webperformance product. The conclusion is that there is no clear winner in the Servlet-only performance race. UPDATE: Webperformance left Weblogic out of the review, but Kasia did not.

Tags: Java

dot-Net smackdown.

Cedric Beust reports on what he calls the <a href= "http://beust.com/smackdown.html">SunOne/.Net Smackdown that took place yesterday out in Silicon Valley. As you may know, <a href= "http://freeroller.net/page/acoliver/20021111#repetition_please_submit_the_simplest">planning is underway for a similar shootout here in the Triangle.
Tags: Microsoft

BasicPortal

The goal of this [BasicPortal] project is to leverage a combination of several of the Apache Foundation's Jakarta projects into a simple vertical sample application that contains the functionality common to 80% of web projects -- we let developers customize the last 20%.

On the Struts mailing list, somebody asked for Struts-based CMS and Basic Portal was the answer. BasicPortal aims to be a best practices sample app, so I'm going to take a close look at the persistence layer.
Tags: Java

Dominic's weblogger demos.

Dominic has put demos of Java-based webloggers <a href= "http://www.dominicdasilva.com/cocoblog/">CocoBlog, <a href= "http://www.dominicdasilva.com/personalblog/">PersonalBlog, and <a href= "http://www.dominicdasilva.com/roller/">Roller online for your evaluation. Very nice. Thanks Dominic!
Tags: Blogging

Persistence proposal.

I made a <a href= "http://article.gmane.org/gmane.comp.java.roller.devel/335">proposal to solve Roller's Castor problems and to make our persistence mechanism more modular. I welcome your comments.
Tags: Roller

Good programming practices.

Kasia is right, that is a <a href= "http://blog.kowalczyk.info/archives/000229.html">good list.
Tags: General

.Net cleans up the gigantic mess

Without a doubt, .NET is one of the great simplifying tools in the world of software. It goes a long way towards cleaning up a gigantic mess. That's actually not such a great achievement when you realize it's Microsoft that created this mess by building badly designed software year after year, refusing to do any thinking and planning, going at it straight from a programming point of view. And they knew.  [Why We Don't Build Software for Users, interview with father of Visual Basic Alan Cooper]

I know that is a month old article, but I just found it. I don't normally read Visual Studio Magazine. Mr. Cooper also makes some interesting points about the engineering approach to software development, exemplified by UML, and the craft approach, exemplified by XP.

Tags: Microsoft

Not just another...

EAI. It's not just another Internet-economy acronym-turned-anachronism [<a href= "http://eai.ittoolbox.com/documents/document.asp?i=2100">Enterprise Application Integration 101, Andrew K. Reese]

That's right Mr. Reese, EAI is the premier Internet-economy acronym-turned-anachronism. I'm joking, of course.  I really don't know enough about EAI to make such a claim, but when somebody says that A is not just another B my bullshit detector starts to hum.

Tags: General

gmane.org.

When gmane.org offered to mirror the Roller mailing lists as NNTP newsgroups, I was a little worried that we'd get too many random yahoos poking around in our business. I liked the idea that the inconvenience of mailing-list signup filters out the less serious folks. Now that I've finally started using gmane.org to follow other open source project mailing lists, I don't care anymore. What an awesome service! I'll live with a couple of random yahoos for this level of convenience.
Tags: General

Happy birthday Rebel.

I hope you took some time off of the JIRA 2.0 shift to celebrate your birthday.
Tags: General

ignoreHosts.

I should have mentioned <a href= "http://www.brainopolis.com/roller/page/lance/20021116#spam_via_referer_log">Lance's ignoreHosts setting. He used it to blacklist the two spammers we had this morning.
Tags: Roller

Spam via Referer log.

I've read about it and now I've experienced it myself. I got hit by nasty referer log porn spam today. I just checked a couple blogs over at FreeRoller and they got hit by the very same thing.

I guess I need to get busy again. I'm working on a fix for referer spam in Roller 0.9.7. Roller will check the validity of each referer ensuring that the refering page exists and that it contains a referering link. Roller will also have the ability to ignore URLs that contains certain key words.

UPDATE: today's spam is coming in from a site called voodoomachine and another site whose name is a just little too nasty to mention. It does not appear to be a one time thing, the hits are still coming in from the spam machine. What a drag. If this continues throughout the day, I'll be taking the referer log off of my page template. What a drag.

Tags: Roller

« Previous page | Main | Next page »