Same name, similar complaint

I “googled” myself today to see how hard I am to find on the internet.  Turns out to be pretty hard.  There are a lot of “Aaron Evans”es out there, and I’m none of the ones on the first 10 pages of search results.  My “One Shore” blog is there, and my SiliconIndia profile, but that’s about it.

However, I did come across a post by another programmer with the same name, and a similar complaint about Java.  Slightly amusing.

Another sailing dreamer

I read a book called “At the Mercy of the Sea” by John Kretschmer, and liked the book so much I decided to look up the author on the internet.  One of the first things I found was a blog by another sailor named John Lichty, who had sailed with him.  We’ve emailed back and forth a bit, and found out we have similar dreams about sailing.

Anyway, the point of this post is to point out that John Lichty, on his blog Whispering Jesse, put up some of my correspondence.  So I’m famous, sort of.  Or at least I can find his blog next year when I’ve lost my bookmarks and want to read my own eloquence.

I’m building a site for sailors to host their own travel logs, galleries, location maps, etc.  It’ll have a kind of social network, but the main idea is free hosting for sailors and sailing groups.

I’ll start with a collection of links to existing sailing blogs and sites.

So if you have (or know of) a good sailing site, I’d like to know.  And if you’re a sailor or sailing organization and would like a free website to talk about sailing, let me know.  I’ll help you get started.

If you have a company with sailing-related products and services, I’d be willing to barter work and web hosting for a ride on your boat, for instance.

I’m also toying with the idea of sailboat time shares or fractional ownership clubs.  Facilitating sailors to be able to trade time in different places without those pesky bluewater trips inbetween.

I’m interested in helping out yachtclubs, racing groups, deliverers, charterers, surveyers, etc., too.


I found this post about Kohana, a fork of CodeIgniter, that makes good use of Zend Framework components. Looks like it might be my new favorite PHP framework, and I’m looking for a framework to use on a new project,

Agavi, itself a fork of Mojavi (an apparently defunct framework which is used internally in Symfony), was on the shortlist, but the attitude and foolish zeal of one of it’s developers, Mike Seth, has been offputting, though it looked very interesting last time I looked at it.

Herculean Group

Herculean Group is an open source team I’ve started along with David Whitehurst of Cape Henry Technologies. We’re still working out the details, but the idea is to build a team around development tools and related processes, with an eye towards refining the techniques of distributed development, deployments, testing, planning and project management, using open source tools.

I met David online on a site called SiliconIndia, where I found him while looking for a mentor on entrepeneurship. He’s written a book on AppFuse (a Java framework) and is a member of the CAS steering committee.

We’re building the infrastructure of Herculean Group along the model of a QA-SITE using 4 Linode VPS. We’re also using Atlassian tools (Jira, Confluence, Fisheye.) We’re currently using the software stack David knows best: Java, Spring, Struts2, Hibernate, AppFuse, and Maven.

Our first project is a requirements management tool called Harvest.

One thing that appeals to me about the project is that it is a proof of concept for a large scale QA-SITE deployment. Another is that it gives me a chance to learn about AppFuse and Maven. And thirdly, David is a pretty cool guy.

The Plan

Here’s an email I sent to David Whitehurst a few weeks ago. We’re working together on an open source project at

Work from home is definitely the goal. Or rather “remotely” — especially if it can be done from the boat with a satellite connection midway between Ecuador and Fiji; but at a dock on the ICW wouldn’t be too bad either.

I’ve been doing QA since 2000. Before that I did construction and part time sysadmin and web design at small ISP. I code in Java and PHP and am learning Ruby and forgetting Perl, haven’t use C or C++ since school.

I’m a big open source guy and Linux fan. I obsess about process improvement when I should probably be getting things done quick and dirty. I don’t mean CMMI, IEEE, or sixsigma when I say process, I’m thinking more about agility, –not Agile. I’m not religious.

So I was glad to see your post on jroller about “Using JIRA, Confluence, Maven, SVN, CruiseControl or similar? Why Not?” Only I’m not a fan of Maven, though I can see why you need it if you’re hacking on open source Java projects.

Evangelizing just such a stack is my business idea. I don’t mean giving lectures at conventions, though that’d be good money if you can get it. I don’t want to become ThoughtWorks. I mean building it, and maintaining it. Providing the IT and QA infrastructure for development teams, and facilitating agile (little A) project management.

I think the target audience is a startup that’s suddenly outgrowing the core team, who are now trying to manage new employees who are expanding their original fast becoming spaghetti codebase. It’s remarkable how many organizations I hear from that know that they should have revision control, documented requirements, testing, and continuous integration but they don’t have the discipline or resources to get started. So I aim to help them get started. First with hosted (VPS) tools, then moving in house when bandwidth or security demand it. I’ll even provide VMWare images so folks can get started on their own.

Of course any developer worth half their salt can install subversion and some sort of bug tracking tool, and since there are plenty of open source tools, there’s no value added there. It’s moving up the stack and doing the dirty work where I think I can make a difference.

Outsourcing unit tests is a common practice, and potentially a good one if you can get together a good spec. Though really, developers should be writing their own tests, first. But if you’ve a legacy code base, it could be the best way to rein it in, or extend or replace it.

User level automation with tools like Selenium is a step up, and something most developers deem beneath them, and most testers don’t have the skills for. Those that do demand developer rates, anyway. And I think it’s actually pretty hard to build a useful, maintainable set of GUI level automation tests. There’s a lot of record and playback the happy path a million times testing out there.

Same idea with retrofitting documentation. No one (technical) wants to spend all day typing away in MS Office, and certainly no one wants to spend all day reading reams of printouts full of boilerplate. Lightweight, up to date specs and requirements are another area that most organizations would love to have, but nobody wants to do.

Test cases are documentation too, and sometimes substitute for specs (only no one ever lets the tester have the final say about functionality.) Again, the trick is keeping it lightweight, thorough, precise, and easy to execute. Even testers hate reading (and writing) essays in spreadsheets. Good tests are a good way to tease out good documentation. And a great stepping stone to useful automation.

I use lightweight in two senses. One is in the tools used for docuementing tests and requirements. Wikis over word processors. Simple forms over spreadsheets. I think there’s some room for improvement here. Fitnesse is a great idea but could be further developed. And as you mentioned on your blog, a custom specialized tool is almost always better than an expensive generalized one.

I’m ambivalent (bordering on mildly hostile) about code level speccing tools like RSpec. Nobody wants to learn yet another DSL (even in Ruby), but the truth is that a lot of people (good testers and functional analysts) would rather be writing concise bastardized Ruby than mounds of spreadsheets and boilerplate word docs.

The other sense I mean “lightweight” is that with some thought, you can be more concise and more accurate. But nobody has the time up front to do that. You have to figure out the full scope of the domain before you can simplify it. I think of Pascal’s famous letter where he apologises for writing a long letter because it didn’t have the time to make it shorter.

So that’s my domain. My plan is to relieve the pain at the build/testing level. Or if I can’t relieve it, get paid to take it at home (or at sea.)

As you can see, I should invoke Pascal’s apology myself.


Found this after posting about versioned documents in databases.  While the earlier post shows it’s doable, it doesn’t seem optimal.  CouchDB seems like it’s looking for the same solution.

First off, it’s written in erlang.  That’s not a showstopper, but it’s odd.  Maybe it’s something erlang can do that nothing else can.  Still, an odd requirement that might have support issues, particularly in hosted environments.

Second, it queries using javascript.  That’s odd too.  I imagine it’s to be able to eval(), and wonder, does it use Rhino?  Does it require a JVM?  I could find this out, but haven’t looked yet.

It uses some sort of distrubuted version control, but I don’t know what.  That’s smart, but could cause headaches for “control” such as publishing or other kinds of workflow (like bug resolution or requirements change process).

The basic idea is what I’ve felt was best all along, a versioned, semi-semantic document.  But CouchDB treats a file as a hash of name/value pairs, and includes lists [what about enumerations?].  I don’t know how it handles attribute-based searching (well, I do, it uses map-reduce) or versioned searches.  Maybe that’s something erlang does well.

Anyway, I’m excited to learn more about it, but just a little bit skeptical that it might be a “pure” solution, meaning a self-contained app, not really a database at all.  I’m thinking like Naked Objects, an interesting concept, but unusable unless you their UI and everything.

The first link is about a PHP OOP API (bingo!) for using couchdb, so maybe I’ll get started by taking a look at that.

Seven Cities of Gold

I had a chat with my brother today.  He’s in the army in Iraq.  He was waxing nostalgic, apparently, and looking on eBay at Commodore 128 computer for sale.  He’d also identified a Seven Cities of Gold disk, and wanted to play it.  I told him I’d seen it on an emulator, and proceeded to hunt it down and play it myself during lunch today.

I barely got to my lunch, and I relived my childhood fantasies of conquest and exploration.  While I don’t dream of conquest (very often) any more, sailing across the horizon and discovering new lands and peoples still appeals to me.

While I haven’t yet got the boat (or sponsorship of the queen) yet, I enjoyed this trip down memory lane.

A great entity map for content

I was reading the following article on Why ActiveRecord Sucks, which I agree with mostly, but what really stood out to me was the example schema mapping content for a CMS.

I’ve often been frustrated by things like versioning and attributes for complex content types stored in a database, and my best solution stores references to files that have semantic content, stored in version control.  But that requires parsing, which isn’t a big deal as long as your content isn’t too big, and searching, which is fine for the file system (grep can often outperform DB searches, especially for full text), but abyssmal for versioned documents, at least in subversion.  The result being that you can only search the current version efficiently.

But here in the anti-AR article is an entity-relationship which clearly defines content in a logical, versionable way within the database.

The immediate application I saw for this mapping isn’t articles, but test cases, bugs, and requirements.  I might follow this model for Harvest, though I might go with files, since I’m thinking wiki-style semantic content.

The dangers of self-validation

I just got a comment from a stranger on an old rant of mine.  The man is apparently a genius, because it was complimentary.  While of course I think I’m right, it’s dangerous, heady stuff for someone to agree with me.

Anyway, he’s got an interesting blog at that I’ll be following, mostly because it looks like he has similar concerns and interests.