Tour de Blog

As much as I enjoy blogging through JRoller, I thought I’d spend the month of April taking other blogging systems for a spin. I’ll let each trial run for a week, but to keep it sane, I’ll continue to archive each blog to the JRoller page.

First in line is Simple PHP Blog. This isn’t a blogging site, like JRoller, Blogger, or 360. It’s a PHP script that a can be installed on a conventional server for a single user.

Installing Simple PHP Blog is, well, simple. Upload the script, set the permissions, and run the index.php. With FileZilla, it can all be done using drag, drop, and click.

Since SPB is intended for people with server access, there isn’t an editing feature for the themes. But, if you were able to install SPB, it’s not any harder to edit the file and drop it onto the server. In practice, it’s no different than editing a Roller theme.

One nice feature is the sidebar text box widget. To get an “About Me” blurb into JRoller, I had to edit the theme. With SPB, I could just add a text box through the configuration menu that comes up in the sidebar. On the website, the developer is testing a new widget feature, to make it easier to add other customizations to the sidebar.

One nice thing for me is that SPB generates arbitrary permalinks IDs. JRoller used a hash of the name, which induced me to use my own hash for the title, save the entry, and then change the title to be human-friendly.

SPB uses a BBS code markup for the entries and comments. Instead of using HTML tags like , we use pidgin tags like [url=][/url]. There’s a wizard for building the tags, but once you’ve seen an example, they are just as easy to create by hand.

Eventually, I’ll probably do a feature grid. For now, it seems like SPB has rounded up all the “usual suspect” features, at least in the context of a single-user blog installed on your own server. The next question will be whether my server is any more reliable than JRoller’s :)

To access the blog system of the week, follow the http://husted.com/ted/blog/index.html. Feel free to re-up for the feed, so as to give each system a fair test. Of course, if anyone has a preference or other feedback, feel free to comment.

The Geek's Glossary (ASF edition)

Recently, we were been discussing some of the definitions published in Glossary of Apache-Related Terms on one of the mailing lists. Based on those discussions, here are some changes and additions that I’ve been considering.

ASF - Asynchronous Software Fanatics: A cult bent on world collaboration.

ASF Board of Directors - Nerds smoozing nerds (see Community).

ApacheCon - A sausage-fest with almost enough beer.

Bikeshed argument - Discussing “what color to paint a bike shed” is why ASF committers sometimes prefer forgiveness to permission.

Build - Bits tossed into a tarball (see Release).

Commit-Then-Review - See Review-Then-Commit.

Committer - A geek with way too much spare time.

Community - Geeks goosing geeks (see ASF Board).

Darwin - The two-faced icon of Evolution and Revolution.

Dog Food - We ate it, now it’s your turn.
Minnie Pearl wearing her PMC hat

Emeritus - A committer with a life.

Evolution - Darwin meets the tyranny of the installed base.

Freeloader - Someone who downloads and uses open source products but never contributes back by reporting an issue, submitting a patch, testing a beta, or helping another user on the mailing list. Even once.

Hat - Sybil meets Minnie Pearl (see photo: “Minnie wearing her PMC hat”).

Incubation - A process designed to frustrate projects into submission.

Irony - See Karma.

Joy - That rare feeling when software actually works!

Karma - By doing more, we let you do more, by granting you karma to do more. See Merit.

Lazy consensus - The best kind.

Merit - Working more, jabbering less, lurking not.

Podling - We are Borg. You are borgling.

PMC Chair - Every project needs a tattletell.

Project Management Committee (PMC) - War is peace. Freedom is slavery. Projects are managed.

Release - A tarball that stuck to the wall (see Build).

Review-Then-Commit - See Commit-Then-Review.

Status File - A hit-and-miss project journal that, when kept, can only be found in the bottom of a locked filing cabinet stuck in a disused lavatory with a sign on the door saying ‘Beware of the Mentor’.

Subversion - Never having to mean you’re sorry.

Revolution - Stick a fork in it and see who bites.

Veto - Severe change reduction.

+1 - A negative veto.

PS: Be sure to enjoy this special day!

(Apologies to Ambrose Bierce)

Aptana: Another brilliant IDEA

I’ve always been a die-hard IDEA fan. Jetbrains says “Develop with pleasure,” and they mean it! Even with Eclipse and NetBeans nipping at their heels, Jetbrains has managed to stay ahead of the pack.

But, for Ajax applications, Aptana is poised to give Jetbrains a run for its money.

Being an Eclipse application, Aptana already has a huge headstart. The JavaScript editor is augmented with all the features you would expect: code assist on CSS, HTML, and JavaScript, FTP support, and a JavaScript debugger to troubleshoot your code. The Aptana IDE also includes features you might not expect, like being extensible via macros ad actions writtnen in (yes!) JavaScript. There’s also a very cool outline perspective (which I wished I had found sooner!). (Hint: Dock the Project and Outline perspectives with FastView.)

For a quick tour of key features, scope the screenshots page.

Out of the box, Aptana is all about Ajax. For example, the project wizard will setup the Ajax libraries of your choice (or at least any of the top nine: AFLAX, Dojo, jQuery, MochKit, Prototype, Rico, Scriptaculous, YUI, and/or yui-ext). Being a good open source citizen, Aptana uses other OS products under the covers, including JS Lint and FireBug. A special bonus is that the project documentation includes a most excellent CSS/HTML/JavaScript reference useful to anyone developing AJax with any editor on any platform.

Quirks? There are a few. After three days, the debugging still isn’t working for me. Just to be a tease, it did work once, and it worked brilliantly, but then stopped as suddenly as it started. With two monitors, Aptana and standalone FireBug work well together. (But standalone FireBug works well with anything!)

There is also an “Open Declaration” feature that works only sometimes for me too. But Aptana is young, and open source, and these things are sure to sort themselves out.

For straight-up Java/Ajax development, I expect that IDEA still has the edge. But, for anything else, IDEA’s predilection for Java shows, and you’re developing against the grain.

Although Aptana is based on Eclipse, and uses an embeded Jetty server for native debugging, it shows no favoritism to Java. Developers working in Ruby, PHP, C#, et cetera, are made to feel right at home.

In fact, a Ruby RAD environment seems to be an Aptana endgame. The RadRails IDE is being built over Aptana. Once Rails.net is ready for primetime, I expect that RadRails is going to draw me towards the light :)

I’ve only been using Aptana for a week. I haven’t spent much time in the forum, and I’m still not sure of the project’s motivation. The site mentions that Aptana is funded by venture capital, but I don’t know what revenue stream is projected. I expect they could turn around and sell it, which is fine with me. People pay me, and I don’t mind paying other people. Or, it may all be to promote a consulting business that will put the IDEs to good use. I really don’t know yet.

But for the code I’m developing now, it’s saving me time over using Visual Studio with Resharper. The code/test cycle is very quick, and I don’t have to worry about running JS Lint. Aptana handles those types of syntax errors as we edit. I filed a ticket about improving the Resharper JavaScript support, but, evidentially, that’s not going to happen any time soon. Resharper is focussed on C# 3.0 support, and JavaScript is on the back burner.

A key Aptana edge is that it’s based on Eclipse, opening the door to other Eclipse plugins. There is a C# plugin for Eclipse, and between iterations, I’ll have to give it a try. If the C# plugin works well enough, or we can make it so, we might be able to sideline Visual Studio all together.

I enjoy using VS with Resharper, but we often code against the Visual Studio grain. If Resharper is not going to improve JavaScript editing, I might finally be lured away from Jetbrains.

In the end, I think Aptana might just become the “Ajax IDE for the rest of us”. :

S2 Tip - Place each namespace into its own Struts configuration file

The framework configuration supports an include element. When using packages and namespaces to organize an application, each namespace can be placed into its own configuration file, and then included by the default struts.xml configuration file.


Maintaining a separate configuration file for each module reduces coupling and increases cohesion. If different members of a team are workinmg on different segments of the application (or “module”), each group can maintain the configuration file relating to their segment.

Note that configuration packages can extend one another.

… –>

Common configuration settings can be placed into a default file and shared between packages.

Hacking the Cathedral

A key reason we were able to use the Yahoo User Interface (YUI) Library is that the latest release includes a DataTable widget. Our application design uses lots of grids. Of course, there are grids from other toolkits and libraries that we could have used. But, honestly, we would have standardized on that toolkit instead.

Of course, the YUI DataTable is new and beta and not without its shortcomings. But, every time I found a flaw, I also cobbled a patch (and filed a ticket).

Looking at our design, what we do over and over again is Find, List, Edit, and View. The entity we want to Find/List/Edit/View changes, but the core workflow holds.

We did the last application module in ASP.NET. Most workflows were represented as pages that exposed one or more composite controls. Much of the page logic involved deciding which controls needed to be exposed.

For the YUI module, I’d like to have a single “chimera” widget that can reveal itself four or five different ways. As a Finder (QBE Dialog), as a Lister (DataGrid), as an Editor (Data Entry Form), as a Lister (View Only Panel), and as both a Lister and Finder in the same view. Behind the scense, the DataTable (Lister) is powered by ColumnSet and RecordSet objects, which could also power a Finder, Editor, and Viewer.

For now, I’m referring to this as a FLEV Widget, and I’ve started coding it through the Anvil site.

Meanwhile, another earnest YUI user posted a DataTable subclass that adds filtering on a column and hiding columns. Nice work, and a fine demonstrate of how easy it is to extend YUI widgets.

Since YUI doesn’t accept contributions from the user community, I wonder if we should setup a community site on SourceForge or GoogleCode, where we could contribute and jointly maintain extensions like FLEV and RowFilterDataTable.

The idea would be that anyone with code to contribute would be welcome to join the site. Since widgets are granular, we could each retain our own copyrights to the original widgets, and just use the site as a one-stop shop for YUI extensions.

Of course, there is already a YUI-Ext project, but that has evolved into a distinct library that supports both YUI and JQuery, and I expect other libraries one day. And YUI Ext was never a full-throttle open source project, it was always Jack Slocum’s baby.

The Yahoo! team has built a cathedral. Perhaps it’s time to open a companion bazaar – a yazaar! :)