Dave Johnson on open web technologies, social software and Java
And I mean that in the nicest way possible, i.e. the Codehaus way.
Bob McWhirter: Ultimately all open-source survives and grows based upon goodwill. Tending to the community is required, else you risk alienating your own users. I aim to use my experiences from a variety of open-source projects and communities to make sure the JBoss community is one of which Iâm proud to be a member.
Congrats Bob. Sounds like a great new job. This mean you'll be coming to Raleigh more often?
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.
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!
Usually I find a couple of contradictory stories every time I read the feeds. Here's a pair from today's session. First via John Gruber.
Bll Gates in Newsweek: Nowadays, security guys break the Mac every single day. Every single day, they come out with a total exploit, your machine can be taken over totally. I dare anybody to do that once a month on the Windows machine.
And next, via John Robb, I found:
Spencer Kelly, BBC: We set up a poor Windows XP machine with no firewall or anti-virus software. Connecting it to the internet would be like throwing it into a lion pen with raw meat strapped to its hard drive. How long would it be before we were hit by something nasty on the net? Hours, minutes? As it turned out - eight seconds!
Of course Bill may have been talking about Vista, even though he did not qualify. Maybe Vista is better, but I wouldn't count on it. Initial reports don't sound so good (Vista users: keep your speakers and microphones turned off).
Matt Raible has been talking to folks at Sun (including me) about working for Sun. Now he's using his blog as part of the interview process. He asks:
For those folks out there that have worked for Sun - what's it like? Is it a good place to work these days? Would you recommend it for a passionate open source developer like myself that likes to make contractor rates and take lots of vacation?
I've already talked to him and told him what I think. We didn't talk about vacation, which is a disappointing two weeks for a new employee, but other than that I think Sun is a great place to work for a passionate open source developer. If you work at Sun or worked at Sun, leave a comment on Matt's blog or send him an email and tell him about your Sun experience.
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.
Over the weekend I convinced my Dad to start a blog and I offered to host it on my site with Roller (of course). We've already started to set the site up. Dad picked up a nice short domain name, I added it to the kattare.com name servers (Kattare is my ISP) and I added support for the new domains to my Apache/Tomcat setup there.
Now I have to to figure out how to host multiple domains with Roller. That's a topic that has come up before.
A while back LinPro Norway developed a multi-site capability for Roller. I called it multi-domain at the time, but now I think that was wrong. As I understand it, multi-site allows one Roller database to serve multiple Roller sites. Each site having it's own Server Admin settings and serving one or more domains. Mutli-site requires significant changes because the each table must have an additional field that indicate which site it belongs to. Unfortunately, the patches were too extensive for us to incorporate into Roller.
What I'm doing now is multi-domain, which appears to be much easier. I'm not sure multi-site and multi-domain are accepted terminology, so I'll explain. I want one Roller database to serve multiple domains, but with all domains sharing the same Server Admin settings. It's definitely going to require some code changes, but with the new 3.0 rendering system, I'm finding that those are pretty easy to do. In fact, I've already got some working code ready to deploy. Once I get it deployed and working, I'll write up a proposal and see if I can get simple multi-domain support into the Roller codebase.
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.
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.
Speaking of science writing and making more science accessible to lay people, check out my Dad's article at Luminous Landscape where he explains Why Is My 50mm Lens Equivalent to 80mm on a 35mm Camera and Why Is There More Depth-of-Field? And check out the comment he received:
Nathan Myhrvold: I think that Charles Johnsonâs article on DOF and sensor issues is excellent and will inform the discussion of the relative merits of various sensors and cameras. It covers the basic optical facts very well. However, I think that there are some additional points that can help clarify the issue...
Yes, that Nathan Myhrvold. Apparently, he shares both Dad's love of nature photography and of physics. Dad was pretty happy to see such detailed and well-informed feedback. See what happens when you post interesting writing on-line? Cool things! and you might make an interesting new friend or two. Get a blog Dad.
When I'm under deadline pressure of any sort, I tend to stop blogging. That's the case this week. It's already Thursday and haven't written about the NC Science Blogging conference that I attended in Chapel Hill last weekend. Gotta fix that.
The NC Science Blogging conference was put together by the BlogTogether crew, the same group of Chapel Hill bloggers that organized PodcasterCon last year and BloggerCon the year before - Bora Zivkovic, Anton Zuiker, Brian Russell and others. Again they put together a wonderful un-conference and drew a crowd from up and down the east coast and beyond.
The days started with a Science Blogging 101 session by Bora himself. Next up was Hunt Willard, director of the Duke's Genome Sciences & Policy institute. He's not a blogger but he had good advice for science bloggers and stressed the importance of science writing, engaging the public and making science more accessible to lay people. Brian Russell posted audio of Hunt's entire talk. Popular science blogger Janet Stemwedel was up next. She talked about her personal experiences as a science blogger and also stressed the importance of engaging the public and making science more accessible. Here are her slides (PPT).
In the afternoon, I went to a session on blog illustration, which focused mostly on copyright issues. I was a little surprised to hear no mention of SVG and MathML. The last session I attended was devoted to helping the Museum of Life and Science (Durham, NC) figure out how to use blogs to engage and educate the public about nano-technologies (they've got an NSF grant to do things like that).
After the talks wrapped up a big crowd headed over to Carolina Brewery and Penang for dinner and I got a chance to hang out with the Chapel Hill blog mafia. That's something I always enjoy, plus I got to meet congressman Brad Miller again. All and all a great day. Thanks to the BlogTogether folks for putting it all together.
Update: I forgot to mention the blogs. If you'd like to read more about the conference, there's a big list of blogs and news stories about the Science Blogging conference on the BlogTogether site.
Interested in the JRuby project? Then you should check out the JavaPosse podcast interview with JRuby developers Charles Nutter and Thomas Enebo. They cover project status, JRuby vs. CRuby, Ruby on Rails on the JVM and their new jobs at Sun.
Don "father of WebSphere" Ferguson left IBM for Microsoft, IBM deleted his developerWorks blog and bloggers started to sound the alarm (see below). IBM listened and quickly restored Don's old blog. And so we've learned another rule of business blogging: when one of your valued employee bloggers leaves the company -- leave their blog in place. Or better yet, do what Sun does and provide a planet-style blog aggregator to keep in touch with your former employees (see community.sun.com).
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.
It's time for the first Raleigh Bloggers meetup of the new year.
About Us. We are a group of bloggers who live in and around Raleigh, North Carolina. We meet twice a month at a local coffee shop just to chat. We have no formal agenda. Sometimes we talk about blogging, sometimes podcasting, sometimes technology, sometimes politics, ... mostly whatever's on our minds. We've been meeting regularly since March of 2005.
Join Us! New faces are always welcome, whether you're a professional blogger, a newbie looking for help starting a blog, or someone who just likes to talk about nerdy things. All you have to do is show up and look for a group of guys with laptops (invariably it's always guys, but women are certainly welcome!).
Meetup details are on the wiki.
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:
title: "Open source ghetto at JavaOne?"},
title: "iPhone: don't think of it as a computer"},
title: "iPhone: Apple apps only?"}
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)
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
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.