Give it away

I originally posted this as a comment under the 37 signals blog post How did the web lose faith in charging for stuff.

If you don’t have something of real worth, or aren’t willing to work hard to get your customers, or don’t have the skill to compete head to head in the market, then by all means charge for your software. There are always a few suckers out there to think Y costs more than X so it must be better. Your hobby project will probably net you a few dollars to buy candy after school or if you save it up, some little gizmo that has a light that blinks when you push a button.

Look at who’s talking here — 37 signals exists only because of free stuff. I can count the number of paying users they have on one hand (but only because I have six fingers on my right hand.) All of their money comes from consulting, because they invented two things and gave them away for free — rounded corners, and Rails. It is their reputation from giving away stuff that gets them clients.

Google controls advertising, so if you have viewers, you have value to Google. TV existed solely on advertising, and radio, magazines, and newspapers before it. So can the internet. The token subscriptions for print until recently only ever covered shipping. There is no shipping cost on the internet. If your application is 2 gigabytes, by all means charge a 4 cent download fee. But your competitors are going to laugh at you and pay 4 cents to everyone on the planet (that’s only $240 million) for the advertizing.

Free software *IS* advertising. And it’s better than a flash banner video clip with a wack-a-mole celebrity endorsement for herbal viagra delivered to your front door every morning by a spokesmodel. Because only people interested in your product will download it for free. And if they like it, they’ll tell all their friends. Or keep it secret and build a business model to monetize what you’re giving away. But then they’ll probably hire you as a consultant to improve it.

Project Foxfish

The last few days I took a diversion from my normal work to help out a worthy cause — my wife!  But she’s helping out an even worthier cause — OSSO.

OSSO is the Orphanage Support Services Organization, a nonprofit group that sends volunteers, supplies, and money to help orphans in Ecuador.  Before we were married, Kelsey spend 9 months in Cuenca, Ecuador volunteering for OSSO.  Shortly after we were married, we returned to Ecuador and lived there for 6 months.  While I did some of the early work on One Shore and came up with the QA Site idea, she did more volunteer work at some of the orphanages —  working with, though not a part of, OSSO.

Kelsey got pregnant, we returned to the USA, I took a job, she had the baby, and then I got laid off.   I’m doing freelance web development and test consulting now.  We thought about returning to Ecuador, but decided to stay in Seattle through the summer so I could work on my business here.

In the meanwhile, however, OSSO is in desperate need of both volunteers and donations.  We gave what we could, but we’re strapped too.  My wife came up with an idea, though.

She likes to make crafts (but doesn’t like to call them crafts.)  So far she’s made dozens of little blankets, toys, baby clothes, etc.  Mostly she gives them away to friends.  But the other day, she decided to open a shop on a website for crafts called Etsy at and donate all the proceeds of her sales to OSSO.  I helped her create a website for her project at

I installed Silverstripe CMS for her to be able to edit the site herself, including the gallery and ecommerce modules, as well as the hidemailto module I blogged about previously.  We chose a nice theme by Nivanka Fonseka at  I spend some time digging into the internals of the ecommerce module to try and set up inventory management and shipping calculations, as well as fixing (hack) some layout issues with the sunflower theme and ecommerce.  I’ll be diving into the ecommerce module more, fixing some bugs, and possibly working with the Silverstripe team on their Google Summer of Code project.

Anyway, that’s what I’ve been doing the past few days.  Kelsey’s been finishing up a bunch of crafts, and putting them on Etsy and setting up her website. We’re just about ready to launch.

If you know someone who likes crafts check out her site and Etsy shop.  Even if you don’t, but would like to help orphans, check out OSSO.  They could really use help, especially volunteers.  And I can attest that Cuenca is quite nice this time of year — 70 degrees and sunny pretty much year round.

SVN repository browsers


License: open source (custom)

I’ve installed ViewVC, and while it can be tricky to integrate, standalone it’s a snap.  It’s not the best viewer out there though, and my main complaint is that it seems a bit slow.


Creator: Atlassian
Java servlet
License: commercial

Fisheye is nice, but I never really liked it that much.  I’d give it a slight edge over ViewVC, but not to pay for.   Jira integration is a major selling point.


Creator: Tim Armes, Sebastion Petters, Dirk Thomas
Platform: PHP
License: open source

WebSVN is what Tigris (the makers of SVN) use to browse their repository.  It’s fairly basic, and being PHP, it’s fairly easy to install, except on Windows you’re bound to run into problems with the PHP subversion extension.


Creator: Horde
License: open source

Chora is part of the Horde project.  I’ve used IMP (the Horde webmail client) quite a bit.  Horde apps aren’t that pretty, but they’re fairly mature.  Chora, like ViewVC, takes a bit of clicking to get to the code, since it’s not too ajaxy.  But that can be a good thing.


Creator: BountySource
Ruby on Rails
License: recently open sourced

Yet another Rails SVN Browser (I wonder if the main functionality ships with webrick?).  I’m not knocking Bounty, it seems fairly nice.  I only tried their demo, and it seems quite responsive and simply laid out.   The more I poke around, the more I like it.  But I haven’t tried installing it.


Creator: ActiveReload
Platform: Ruby on Rails
License: recently open sourced

Warehouse gets good reviews for presentation, but I haven’t seen it.  I tried the demo, but got an error once and then an empty repository.  I wasn’t that impressed with the screenshots, though all I can say is the UI scores high on Web 2.0 (and I don’t even think it has rounded corners.)


Platform: Java servlet
License: open source (BSD)

I haven’t really used Sventon, but one feature I liked in the screenshots is the source view that shows the author next to each line.  It also gets high marks from users.  Probably one of the more featureful repository browsers, and looks like it is the most like browsing the repository manually.  Transition from a command line user is clear, like with big buttons for “blame” and “log” and other commands the svn expert is familiar with.  This will be on my list to give a second look.


Creator: Edgewall
License: open source

Trac has a repository viewer, but is primarily a wiki-based project management tool.  Or rather a wiki that can be used for basic project management, that includes repository viewing.  It also includes a simple issue tracker.  While I don’t use the issue tracker, it is a servicible, though basic wiki, and a decent code browser.  The strength lies in the combination of tools.  It’s a favorite of mine for a “design” centered wiki because you can tie design documents to the code.  If  Trac could integrate with more powerful defect and task management, I’d be even happier with it.


Platform: Ruby on Rails
License: open source (GPL)

I really like the Redmine repository view.  Much like Trac, it it more than a repository browser, though.  I think Redmine has one-upped Trac with a cleaner interface and more features. Redmine beats Trac for repository browsing, but I like Trac’s version comparison better.  Redmine is probably my favorite current viewer, though bsSvnViewer and Sventon look like contenders, though they lack project and issue management (which might be better), especially if I can integrate them with Bugzilla and scmbug and a QA Site dashboard.


Creator: Johan Sørensen
Platform: Ruby on Rails.
License: open source

Collaboa is another compsite tool that readily acknowledges their influence by Trac.  It looks more like Trac than Redmine, which is a plus in my book.  I didn’t see a demo, but one thing caught my eye, a future goal for supporting  “Continuous integration of tests/builds”.  I might want to get involved.

Of course the three tools I use most to browse subversion are: 1) the svn command line, 2) TortoiseSVN, and 3) the Eclipse Subversive plugin, but these really aren’t any good at distributed collaboration or integration with defect tracking or requirements management tools.  And they’re not web-based.

Subversion Setup

I finally got past my hurdles with subversion problems. I was having trouble checking in on one repository, but not another.

This turns out to be a simple file permissions problem:

svn: Commit failed (details follow):
svn: Can't create directory '/svn/repository/db/transactions/0-1.txn': Permission denied

The simple fix is:

chown -R fluffy.apache /svn/repository
chmod -R g+w /svn/repository

I’ve managed to set up subversion access (via http://, https://, and svn://) on three different networks today.
I still need to tackle svn+ssh:// and using PAM or LDAP authentication. That’ll be next.

Subversion configuration for http


DAV svn
SVNPath /usr/local/svnrepo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /svn/repository/conf/htpasswd
Require valid-user

Subversion configuration via virtualhost


<Location /svn>
        DAV svn
        SVNPath /usr/local/svnrepo

                AuthType Basic
                AuthName "Herculean Group Subversion Repository"

                #NOTE: this must be maintained separately from the svn passwd file which is plaintext
                #TODO: combine svn:// and http:// password file acess
                #TODO: svn+ssh:// access

                AuthUserFile /usr/local/svnrepo/conf/htpasswd
                Require valid-user

VirtualHost Configuration


NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost _default_:80>

<VirtualHost _default_:443>

include conf/vhosts/*.conf

Subversion Virtual Host


<VirtualHost *:80 *:443>

    <Location />
        DAV svn
        SVNPath /usr/local/svnrepo/

                AuthType Basic
                AuthName "Herculean Group Subversion Repository"
                AuthUserFile /usr/local/svnrepo/conf/htpasswd
                Require valid-user
                #NOTE: this must be maintained separately from the svn passwd file which is plaintext
                #TODO: combine svn:// and http:// password file acess        </LimitExcept>


Setup for svnserve

To start the svnserve server (for svn:// protocol)

su -c 'svnserve -d -r /usr/local/svnrepo'

To view the repository:

svn list svn://

To checkout:

svn checkout svn:// forgetmennot

To commit from your local copy:

svn commit

To change passwords or add a user (for use with svn:// protocol) edit:


using Balsamiq mockups for Flex Taskboard

I finally got down to speccing out my Flex Taskboard app today.

On paper I wrote out the model as an outline and identified the main screens as boxes with attributes off to the side.  Then I set about transferring them to a wiki.  Instead of using Xwiki as planned, I used Confluence and built a project documentation hierarchy and outlined the model and listed the sketches.

I then fired up the copy of Balsamiq Mockups that I got for writing the tip on Adobeholic.  I have to say, it was a pleasure to use.  I understand why everyone is raving about it.

A couple critiques:  First, it’d be nicer to have a palette that was easier to access.  Having to scroll so much to find stuff was a bit awkward.  I’d suggest an “accordian” palette where things can be grouped.  It’d be nice to have more, and I think there is a way to get them, or possibly even make your own.

Update: I just noticed the tabs across the top.

The “sketchy” feel is nice, I liked it more than I thought, but a little bit inconsistent.  Things like splitters and alerts stand out as too “perfect.”

Grouping seemed natural, but I had 1 horizonal rule that I had to move everything to get to, even though it was on top.  Almost every program of this type has those sort of bugs though.  Grid alignment seemed just right, but also having a rough sketch mockup helped to avoid sweating pixel perfect alignment.

I just reopened it and tried to open a file, but got prompted again for the serial key I’d already entered.  Once again I had trouble pasting the key into the textarea.  Chalk it up to Flash.

Finally, the other issue is that it needed installed as Admin, and has to run as Admin, and files saved are only accessible to admin.  So that’s annoying.  But that’s an Adobe Air flaw, which I tweeted about last night.

That’s right, I joined Twitter.  I’m so ashamed.  Facebook will probably be next.

Anyway, without further ado, here’s the taskboard mockup:


Paralysis based on fear

I’m not being productive.

For several reasons:  Because of roadblocks.  Because of paralysis. Paralysis based on fear.  Fear of failure.  Fear of wasting time.

Yesterday it was roadblocks, today it’s fear.  Fear of roadblocks.  Fear of wasting time.  And that’s irrational.

I’m not doing anything productive because I fear if I start on it, I’ll hit roadblocks and it will become a time sink.  I’ll run out of time, which means money.

So I’m anxious to not get involved in something that will eat up my time.

Networking takes up time.  Truth is, I don’t know how to network.  If I gain contacts, I don’t know what to do with them.  I don’t know how to do marketing either, but I know it takes up time, so I avoid doing it.  I have no idea how to find real customers.  My instinct says “build it and they will come” — but what is “it”?

I know a QA site is a good idea (if poorly named) because I’d pay a lot of money to have one right now.  But I’m afraid to build one.  I want to start from scratch, and develop the integrated applications I know I want, and then integrate them.  Not integrate ones I don’t like and don’t want to spend time trying to improve because they have a model I don’t agree with.   And of course, then I’d have to market it to convince other people what is self-evident —  that my model is better.  Only what if it’s not?  I could be wrong, but the only way to find out is to build it.

But I don’t have the luxury to take that much time, and so I wait.

Adobe Flex Bug Quash

One of my friends is an Adobeholic.  It’s a disease, really.  He should get treatment.

But in the meantime, he’s promoting a “Bug Quash” for Adobe Flex.  It’s going to be held at Adobe’s offices in both Seattle and San Francisco and remotely all over the world.  Think Farm Aid with Willie Nelson and Bono Hewson hugging and kissing via WebEx from Wembley Stadium to the Sydney Opera House.

They’ll be there.  I’ll be there (there’s free food.)  Will you?

BugQuash, release your inner Ninja!