Posts tagged 'roller'



@ApacheConEU: Roller and blogs as a web dev. platform

Last week was deadline week for JavaOne and ApacheCon EU presentations, so I was busy. Fortunately for me, my other deadlines were postponed, I did some begging for time and I actually had time to take a short vacation; a family reunion at Stone Mountain park, Georgia. Here's some more information about my ApacheCon talk and an outline of the slides. 

[Read More]

JRuby on Roller

This is just a quick follow-up to my previous post on Pluggable renderers and scripting languages in Roller. It took me a while, but I finally made JRuby code work inside a Roller page template. Here's an example JRuby page template that displays most recent blog titles and text in HTML format.

$out.println "<html><head>"
$out.println "<title>#{$model.weblog.name}</title>"
$out.println "</head><body>"
$out.println "<h1>#{$model.weblog.name}</h1>"
$model.weblogEntriesPager.entries.keySet().each {|day|
   $model.weblogEntriesPager.entries.get(day).each {|entry|
      $out.println "<h3>#{entry.title}</h3>"
      $out.println "<p>#{entry.text}</p>"
   }
}
$out.println "</body></html>"

Not the most beautiful thing in the world, I must admit. Any JRuby experts reading along? Is there a simple templating solution that will work in JRuby... something like Groovy Templates? And is there a way to map puts output to a java.io.Writer that will work via BSF?

Roller on SJS Web Server 7.0

Complete instructions for Running Roller Weblogger on Sun Java System Web Server 7.0 by Seema Alevoor and Marina Sum. Via The Aquarium.


Pluggable renderers and scripting languages in Roller

My next ApacheCon talk is about Roller and blogs as a web development platform. One of the things I plan to discuss is using scripting languages within Roller, something that's possible now because Roller versions 3.0 and later supports pluggable renderers. It's undocumented and a little hacky right now, but by plugging in your own custom renderers you can add support for new template and scripting languages as alternatives to Roller's built-in Velocity. Want to know more? [Read More]

Status, CC: world

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.


Redmonk on Roller, Covalent and IBM

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.


Photography: Appreciation through Understanding

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...


Atom protocol powered Blogging Portlet

Jeffrey Blattman has put together a new Portlet that makes it possible to blog via Atom Publishing Protocol (APP) from a portal page. He's added it to the Open Source Portlet Repository on Java.net so you can try it out against your favorite APP server.

Covalent announces support for Roller

Somehow I missed the Jan. 22, 2007 announcement, which was made on Covalent's Roller-based blog. According to the announcement, Covalent will support Roller, eleven other Apache and Spring on a "per incident basis."

Configuring Roller with OpenDS

Trey Drake explains what you have to do to get Roller 3.x working with OpenDS. He's right, its a kludgey process and I hope we can improve it. The bug he mentions "after registration the user must close and re-open the browser" will be fixed in Roller 3.1 which is just about ready for release.

More Lotus Connections screenshots w/Roller

IBM's Rob Yates blogged about Lotus Connections the other day and posted some screen-shots of the Roller-based blogging component.  The UI looks different but you can tell it's Roller under the covers. Notice that they've switched out the Xinha editor with the Dojo equivalent.

Eco theme

Aaron Cohen is looking for feedback on a simple and clean new Roller theme known as Eco.

Update: Linda says Eco is not really a "Roller theme" as it relies on some .Sun Engineering ad-server components to serve up the rotating eco-fact. She's got some instructions for BSC users interested in the theme on her blog.


Akismet works

Since I upgraded this site to Roller 3.2-dev, with pluggable comment validators and Akismet support, not a single spam has gotten through the system. Over the weekend I saw 20-30 email messages like this:

This comment failed validation for these reasons:

* Akismet service (akismet.com) says comment is spam
* Trackback from site/page that does not link to your weblog entry

Brisa wrote: [Trackback] nothing here 

That's music to my ears. Die spammers die!

Voting for Roller graduation

The Roller team voted last week for graduation to top-level project status. The next step is to call for a vote on the Apache Incubator mailing list. I'm hopeful that the nearly two year journey that started when Danese Cooper sent me off to ApacheCon US 2004 in Vegas is nearly over. So far, life at Apache has been great for Roller and it can only get better with graduation. Wish us luck...

IBM Roller development update and iBatis vs. JPA

Elias posted some good news about some upcoming IBM contributions to Roller. We're discussing how best to get them into Roller now.

Note that we now have two possible replacements for our old Hibernate back-end. We've got a Java Persistence Architecture (JPA) based back-end developed by Sun's Craig Russell and Mitesh Meswani and IBM is getting ready to contribute an iBatis based back-end. How do we choose which one to use in Roller? Consensus seems to be that we'll have a bake-off. We'll compare the programming models, test performance and discuss the pros and cons -- and let the best framework win.

pixyblog.com

Pixyblog is a photoblogging site, powered by Roller. Looks slick.

Update: Raible blogged about Pixyblog too and some Sun-related news about his job search. 


APP interop at E-Tech

James Snell brings news of an Atom Publishing Protocol (APP) interop event to occur in March at the O'Reilly E-Tech conference. I'd love to use that as an excuse to go to to E-Tech, since my current work involves APP in ROME and Roller, but it sounds like I can participate remotely.

Good news

Lots of good news and stuff to blog this past week including the Sun makes a profit story, the Sun-Intel deal and more. I really like reading news like this Amid Profit, Brighter Days for Sun and this Sun turns profit after five quarters in red.

And how could I fail to mention the announcement of Lotus Connections, the product formerly known as Ventura. Connections is IBM's new Web 2.0 social networking suite and it includes Roller. IBM's James Snell posted some background info about IBM's internal use of social networking tools and how that led to Lotus Connections. Elias Torres blogged about it too and included a screen-shot of the new Connections based BlogCentral (IBM's internal blogging site).

And in other news...

My ApacheCon EU talk on 'Roller and Blogs as a Web Development Platform' was accepted. Looks like I'll have a busy May, Amsterdam for ApacheCon and (hopefully) San Francisco for JavaOne all in the space of two weeks.

Wordpress is finally gonna get Atom format support and apparently Atom protocol support is going to happen too.

The ROME project is just about ready for ROME 1.0 and there's a new subproject in the works: ROME Propono. co-worker Ramesh Mandava and I are putting together a Blog Client library (based on code from Blogapps) and an Atom client/server library (based on code from Roller). Hopefully, we'll have it ready by the time that ROME 1.0 comes out.


Roller, JSON and Dojo via JMaki

Alexis Moussine-Pouchkine has taken my Generating JSON for your Roller blog post a few steps further down the road. He created a screen-cast to show how easy it is to use Netbeans 5.5 and the JMaki widget wrappers to serve up Roller data in a a Dojo table. Cool stuff. I really need to find the time to take JMaki for a spin.

And BTW, I'm still working on my Dojo table example, which will be similar to what Alexis has done but it will use Dojo directly within a Roller blog -- no IDEs or JSPs required.


Generating JSON for your Roller blog

One question that came up recently on the Roller mailing lists was how to generate JSON for a Roller blog. Roller 3.0's new rendering system makes it easy to generate just about any representation of your blog, so JSON is no problem at all. In fact, any Roller user can do it via the Roller UI by simply creating a new page template.

For example, what if you wanted to generate a JSON array of blog entries with id, pubTime and title for each entry, like what's shown below: 

  [
{id: "roller:open_source_ghetto_at_javaone",
pubTime:"2007-01-12 12:57:17.0",
title: "Open source ghetto at JavaOne?"},
{id: "roller:iphone_don_t_think_of",
pubTime:"2007-01-11 17:43:29.0",
title: "iPhone: don't think of it as a computer"},
{id: "roller:iphone_apple_apps_only",
pubTime:"2007-01-09 23:06:15.0",
title: "iPhone: Apple apps only?"}
... etc...

To do that, you can use the Roller Preferences->Template menu to create a page template like so:

  #set($pager = $model.getWeblogEntriesPager())
  #set($map = $pager.getEntries())
  [
  #foreach($day in $map.keySet())
  #set($entries = $map.get($day))  
  #foreach($entry in $entries)
      {id:     "$entry.website.handle:$entry.anchor",
       pubTime:"$entry.pubTime",
       title:  "$entry.title"},
  #end
  #end
  ]

The code above is a little tricky because of the way the entry pager returns entries. To make it easy to display entries by day, the $pager.getEntries() method returns entries in a ordered java.util.Hashmap. The map contains lists of entries, one for each day, and the map is keyed by date objects. To get entries out of the pager you must iterate through the day-date keys, get then entry list for each and then iterate through the entries of that day.

If you create the above template and save it with the name "jsontest" your new page will be available at /<bloghandle>/page/jsontest. And because the $pager object understands the standard Roller request parameters date, cat and page you can subset the data by date and category, and you can page through the results. For example:

   /<handle>/page/jsontest?cat=roller - latest entries in category 'roller'
   /<handle>/page/jsontest?cat=roller?page=1 - first page of entries in category 'roller'
   /<handle>/page/jsontest?date=200601  - Entries from January 2006

Try it on my blog: http://rollerweblogger.org/roller/page/jsontest 

In a future post I'll show how to use Roller-generated JSON data in a sophisticated JavaScript widget. I'm working on an example that uses Dojo and specifically the FilteredTable widget to present a pageable table of Roller blog entries.

 

For more information on Roller page template programming see the docs for the Apache Velocity template language and see the Roller 3.0 Template Author Guide for details on the Roller objects and macros available within Roller templates.

« Previous page | Main | Next page »