Dave Johnson on open web technologies, social software and Java
are never a good thing...
We detected a funny burning smell in the house last night and it turned out to be an outlet, which had started to brown due to a short. I disconnected the outlet, separated and taped off the wires for safety until we can get an electrician here. Apparently, such problems are common with aluminum wiring, which expands and contracts with the seasons. Jeez. Maybe it's time to move.
This morning, I smelled the same odor coming from my Sun-box and the system started rebooting on it's own. I powered down, disconnected power, opened the case to look and sniff around, but couldn't find any evidence of burning. Finally, I let the machine cool-down for a while and then was able to get it to boot. Now I'm making backups and trying to figure out how to get some hardware support.
Not a great way to end the week, that's for sure.
That's three JPAs. I've been fighting to get a new Roller back-end running, one that uses the Java Persistence API (JPA) rather than the native Hibernate API that we use now.
Craig Russell and Mitesh Meswani wrote the new JPA back-end and tested it against Toplink/JPA (JPA #1) and the Derby database. I've been refactoring it, updating it for Roller 4.0 and testing it against various other databases and JPA implementations with mixed results.
I tried to run it against MySQL, ran into a bunch of problems and fixed those. Allen switched out Toplink/JPA for Hibernate/JPA (JPA #2), ran into problems and fixed those. I switched out Toplink for Apache OpenJPA-incubating (JPA #3), ran into problems and fixed those. So now we have a back-end implementation that runs against OpenJPA, but requires two small code changes to work against Toplink -- not exactly an ideal situation.
I'm a JPA newbie for sure and still trying to figure this stuff out, but it does seem that switching JPA implementations is not as easy as it ought to be.
In other JPA news...
I didn't realize that the open source version of Toplink that Oracle contributed to Glassfish, Toplink Essentials, is the pee-wee version of the full and still closed source Toplink product. That's why I was somewhat surprised to hear that Oracle is open sourcing and donating the full version of Toplink to the Eclipse foundation.
Two observations about that news. First, this move appears to be a fork that will result in a CDDL licensed version of Toplink Essentials in Glassfish and an EPL version in Eclipse -- I hope I'm wrong about that. And second: apparently IBM will be soon be supporting two versions of JPA: OpenJPA via Geronimo and Toplink/JPA via Eclipse.
I've never used a build or "continuous integration" server before so I've got nothing to compare Hudson to, but I can say this: it's amazingly easy to install and configure. Just drop the hudson.war file in Tomcat's webapps directory or deploy to your favorite app server and start setting up build jobs.
Hudson can pull from CVS and Subversion. It can run Maven builds, Ant builds and shell scripts. It can publish javadocs, build artifacts, test reports and RSS feeds. The UI is simple but full of options and with plenty of built-in help. Here are the projects I'm monitoring with Hudson:
My Hudson is setup on old (Pentium 450mhz) Linux box and I've got it setup to poll my projects every 30 minutes and do a full rebuild and test on any change. I'm subscribed via RSS, so I'll quickly learn of any failure. Very handy.
Read more about Hudson at the project's Java.net site and the Aquarium has a nice set of Hudson links.
I'm very happy to report that my talk was accepted for JavaOne 2007. I'll be giving a thoroughly revamped and updated version of my Beyond Blogging talk (aka Johnson on Feeds), which adds in-depth coverage of ROME and ROME Propono. I'm excited about going to JavaOne again, but I'm also feeling a bit frazzled. I'm swamped with work right now and I've got a stack of deadlines clustered around the March 20 due date for the slides.
I helped out with the session selection for the web-tier track this year so I can say with some confidence that at least one track is going to rock -- we've got a wonderful set of talks lined up, so don't miss it. The full session schedule isn't online yet, but registration is open.
When I saw that Tim Bray upgraded to a Netbeans 6 daily-build and it seemed to work OK, I just had to give it a try myself and I'm glad I did. I've been using it for a solid day now and I can tell that it's going to be a vast improvement over 5.5. It's fast. It starts up way faster than 5.5, seems faster overall and shutdown is almost instantaneous. Bravo! What else?
Tim was impressed by the hip new JRuby support, and I'll give that a try, but right now I'm digging the more routine things, things that I've been missing from Eclipse like multi-file search & replace, local history and a smart editor. The only thing I miss from Eclipse now is this: Netbeans has a nice Ctrl-Shft-O to Go To Type feature and I use it all the time; why can't we have a nice slick Ctrl-Shft-R Go To Resource like Eclipse does?
Anyhow... NB6 is looking good already, so if you're using 5.5, you might want to take the latest milestone Netbeans 6.0 M7 or one of the dailies for a spin.
We've decided to change the time and place of our Raleigh Bloggers meet-up. Too many folks complained about Tuesday night, so we've moved to the 2nd and 4th Wednesdays of each month. Now we'll find out if "Tuesday's not good for me" was just an excuse to avoid hanging with the tech/geek patrol. And we've moved from crowded and loud Helios Coffee to the quiet Raleigh Times Bar (yeah, right). I mean, if nobody's gonna show up we might as well drink, no?
When: Second and Fourth Wednesdays of every month at 6:30PM
14 E Hargett St
Raleigh, NC 27601
In case you're wondering what's going on lately with Roller, ROME and other projects I've been working on, here's a status update from my point-of-view.
Apache Roller graduation. The Roller team voted for graduation, the Apache Incubator PMC voted for incubation and the next step is to take the resolution to the Apache board meeting, which is coming up in the next week or so.
Roller 3.1 release. We've been moving slowly on this one. RC1 was released Nov. 20 and today RC4 just about ready to go. It's possible that 3.1 will be our first "official" Apache Roller release -- depending on what happens on the board meeting. Wonder what's coming in Roller 3.1? The What's New in Roller 3.1 page is now available on our new wiki at apache.org.
Roller 4.0 development. We started the Roller 4.0 branch a couple of weeks ago and I've been spending most of my time updating and trying to perfect Craig and Mitesh's new JPA back-end. Elias outlined a bunch of IBM contributions including an iBatis based back-end. We hope to get some of those in the 4.0 and do some JPA vs. iBatis testing, but we haven't seen any proposals or code yet.
Roller-Planet. Actually, Allen's taken over work on Roller-Planet and he's implementing many of the things I outlined in the Roller-Planet mind-map. He promoted Roller-Planet from the sandbox, built a nice Struts2 UI, added a Roller-style feed/page rendering system and Roller-style caching. Good stuff. We have not discussed when to start making standalone releases of Roller-Planet.
ROME Propono. I've been working on a new ROME subproject called Propono that will include a blog client library, an Atom protocol client library and an Atom protocol server kit. I've been quiet on the ROME dev list, but I've been working on the client bits an they're basically done. I'm waiting for final approval to commit them to ROME CVS.
Blogapps examples and server. I'm still working on a 1.0.5 release, which will include updated Atom protocol support and some bug fixes. I just haven't had the time to get a release out, but I have had some time to work on Blogapps 2.0 where I've ditched the chapter-based directory names and switched to org.blogapps packaging. Once ROME Propono is available, I'll include it in Blogapps 2.0 and drop my old Blog Client library.
I've been slacking off with the blogging this week, but there's some other Johnson blogging going on. Dad's enjoying his Photophys blog and getting good feedback on the draft chapters of his book. He's posted the first seven chapters now. By the way, my multi-domain hack seems to be working pretty well -- photophys.com is hosted on the same Roller instance as this site rollerweblogger.org.
I've been updating my javax.ws.rest post with links to blogs about JSR 311: Java (TM) API for RESTful Web Services. I went from a couple to nine links today and I'll probably keep on linking, but I'm about to go quiet for couple of days. It's wiki mountain weekend time again.
That's big news. A standard Java API is coming for building REST based web services. If you're an expert in REST, you can participate in it's development by signing up for the expert group. Apache, BEA, Google and Jerome Louvel (the RESTlet guy) are on-board. Here's the intro from the JSR:
JSR 311: Java (TM) API for RESTful Web Services: This API will enable developers to rapidly build Web applications in Java that are characteristic of the best designed parts of the Web. This JSR will develop an API for providing REST(Representational State Transfer - See reference to Roy Fielding's dissertation in section 3.1) support in the Java Platform. Lightweight, RESTful approaches are emerging as a popular alternative to SOAP-based technologies for deployment of services on the internet. Currently, building RESTful Web services using the Java Platform is significantly more complex than building SOAP-based services and requires using low-level APIs like Servlets or the dynamic JAX-WS APIs. Correct implementation requires a high level of HTTP knowledge on the developer's part.
This JSR will aim to provide a high level easy-to use API for developers to write RESTful web services independent of the underlying technology and will allow these services to run on top of the Java EE or the Java SE platforms. The expert group will investigate whether a subset of the API can be made used with Java ME. The goal of this JSR is to provide an easy to use, declarative style of programming using annotations for developers to write REST ful Web Services and also enable low level access in cases where needed by the application.
RESTful Web Services is a relatively new area in the industry and there are still a lot of unknowns in this space. For example, a key aspect of RESTful Web Services is for the service to be stateless. However, this often requires the developer to produce boiler-plate state restoration code that could be avoided with state-aware API help. We expect the expert group to be an active and engaged group of people participating to prioritize and help drive issues to achieve the end goal of a developer friendly API.
Here are a couple more links about the new JSR:
James Governor: Covalent gets its mojo back and refocuses on its core competence - supporting open source code, and doubles down on Apache projects, going back to its roots. The latest example of Covalent seeing an opportunity and nailing it is the companyâs announcement of support for the Roller blog platform. Thatâs now two companies, IBM and Covalent, making direct revenues from a platform originally built by a Sun employee, but for which Sun has no business model. Here is a hint Sun - perhaps its not software you need to sell but service and support. That is what Covalent is nailing.
I appreciate the support from James and the Redmonk crew. They always seem to be rootin' for Roller.
Of course I'd like to see better support for Roller all around, but at this point I can't say much beyond this: I'm focused on building a great blog platform and support is a very important part of any platform.
A couple of small corrections for James. I was not a Sun employee when I originally developed Roller. Second, IBM hasn't shipped Connections, so they're not any making "direct revenues" yet. Third, I don't know if Covalent has "nailed" anything -- I haven't heard from anybody who has tried the service and I'm still trying to figure out exactly what they offer.
I mentioned before that I convinced my Dad to start a blog. Well, now after a week or so of back-and-forth with Kattare.com getting the domain handling setup properly and modifying Roller to support multiple domains, his blog is live running on the same Roller instance that I use for this blog (but with the domain photophys.com).
Dad's blog is titled Photography: Appreciation through Understanding. He's publishing draft chapters from his new book there, hoping to get feedback and attract some new readers.
Hmm... RSS and Atom feeds don't seem to be working correctly. Apparently, I've still got some multi-domain work to do...
And before I leave the topic of movies I'll mention this; recently I've been enjoying Neil Young's Heart of Gold, an absolutely wonderful concert film of and documentary about the debut of Neil's Prairie Wind album last year. See also, my brother Dan's brief review of the film over at Helium.com.
Pipes is a hosted service that lets you remix feeds and create new data mashups in a visual programming environment. The name of the service pays tribute to Unix pipes, which let programmers do astonishingly clever things by making it easy to chain simple utilities together on the command line.
Jeremy also posted a list of the blogs that are covering Pipes and every one that I read is a rave review. Tim O'Reilly calls it a "milestone in the history of the internet." Apparently, I'm not the only one who wants to put feed creation, aggregation and filtering tools in the hands of ordinary folks and not just developers Everybody seems to think this is a great idea and Yahoo appears to have executed it very well, so it will be interesting to see how well it works and how it is put to use.
A possibly related side-note: ROME co-founder Alejandro Abdelnur now works for Yahoo.