Are you prepared for the long haul?

I had an epiphany this week.

In fact it’s been a month or two of epiphanies but this one was particularly important.

Embarassingly it’s one of those ‘No Shit Sherlock’ realisations, the ones we all have now and again and then wonder why it wasn’t obvious from the beginning.

That epiphany was:

Bootstrapping a product or service isn’t going to mean I can quit my day job any time soon.

Obvious, right?

Or is it?

The next day I saw this tweet from Patrick McKenzie which validated my thinking and implies I’m not the only person who is (was) wearing rose tinted spectacles:

Untitled picture


Now, in my defence I wasn’t ever thinking that I’d release something on day one and on day two I’d be rolling in cash (honest!) but I had allowed myself to become distracted enough to think that releasing some products would mean I would be able to rapidly change focus from consulting to product – the holy grail.

In hindsight that thinking was foolish and downright dangerous.

My consultancy feeds me and my family, it feeds my team and their families, it also keeps my clients in business. In terms of bootstrapping my consultancy is also going to feed any products that I launch. It will provide money in lots of different shapes and forms that I don’t have access to in any other way.

My consultancy is here to stay and its success is fundamental to the future success of any side projects that I launch.

I think my subconscious already knew this as before this realisation came to me I had already:

  • Started working with Stew our new project manger who is doing a great job taking lots of projects off my plate
  • Advertised for a senior developer (or two) to take the load off
  • Decided to – for the first time ever – do some actual marketing (it’s only taken me 12 years to get to this point)
  • Began an aggressive campaign to systemise everything that we do

I’ve realised that I need to love consulting again just like I did when I started out all those years ago. This time, though, I’m going to be focussed a lot less on the tech – quality control notwithstanding – and a lot more on commercial stability and sustainability.

Are you in a similar boat to me?   How are you juggling consulting and shipping products?



Follow me on twitter: I’m @bealers

p.s. If you’re a kick ass PHP developer, UK or near GMT timezone, I’m currently hiring for a full-time home based role. There’s more information here, get in touch via

p.p.s. Mike Ellis & I have just released a sneak peak of our first productised consulting service, we’d love your feedback: WP Desk the service that takes away the stress and hassle of managing WordPress websites.



Be scared, but be careful

Recently Justin Jackson wrote a great post entitled Do things that scare you which really resonated with me.

It uses a metaphor of someone dropping off the wall of a half-pipe on a skateboard:

It’s scary as hell, because the next step is to commit: you have to force yourself to put weight on your front leg and push down hard. You kind of “scoop” into the ramp.

Your brain does not want to do this. The instinct is to keep your weight on your back leg. But if you do that you’ll never drop in. If you “half commit” and start to drop in, but then lean back, you’ll wipe out.

Of course the point he’s making is that if you don’t ever push yourself to go outside of your comfort envelope then you’ll arguably just stay where you are, which may not be what you’re after.

It got me thinking about some of the key moments of my business career and the (literal) sleepless nights I had before deciding to do things: like hire my first full-time staff member, take on my first commercial lease or even fire my first client. These were all indeed quite scary but at the time the ‘only’ people being affected were me and my family.

Nowadays, though, when I’m thinking about growing my business these decisions (which are still scary) now have more stakeholders to consider, particularly my team that still needs to be paid and our clients who rely on us to help keep their businesses running.

Just jumping in and hoping it’ll be alright isn’t good enough any more, that leap of faith needs to be more of a leap of I-ran-the-numbers-here’s-the-plan-and-I-still-have-a-fallback-option-so-I’m-going-for-it.

Take a small but concrete example. I am struggling to keep my business tiny; a core of 5 people. The aim has alway been to keep things small as it reduces stress. But here’s the thing: lately it has been more stressful trying to juggle projects between us at our current size so I’ve finally decided to allow things to grow; to take on 1 or 2 new developers to ease the pain.

Except for my commercial credit card which gets paid off in full each month or the odd computer lease I’ve never borrowed money through the business, everything has been funded through cash flow. But this week I went to the bank and they agreed to give me the equivalent of 2x my monthly wage bill as a commercial overdraft.

I still get to grow, I’m still taking the risk that more work will flow and that the stress won’t rise (too much) but I have that little safety net. If (when, right?) a client doesn’t pay a chunky invoice on time I can still pay that wage bill.

So, definitely take those risks but remember that it’s also OK to have strategies in place to soften your fall (like knee pads and a helmet).

B2C, are you sure?

Found at as long as I’ve been paying the rent by selling my skills in the web industry I’ve thought that I had a product in me.

Back in the late 90’s I was a wannabe .com ‘founder’ working on terrible ideas initially with no clue about business or technology. As I came to grips with the latter and got a proper job I was still working on things in my evenings and weekends; I even went along to some of the original First Tuesday events in London to try and get seed funding. In hindsight it was a mad time.

The inevitable crash came almost as a relief. It certainly allowed me to drop the side projects and to focus on getting good at my trade. As a bonus I discovered this thing called life so I had some fun, got married, became a father, started a business; all that good stuff.

More recently I’ve been working again on side projects with a few getting quite far before once again being ditched, this time because I realised that the business model sucked. The most recent – and hopefully final – example of this is Notebud a simple mobile capture tool for OneNote users; a tool which I’d pay money for right now if it existed, hence starting to build it.

It’s nearly finished, a few more weekends on it and I could probably ship something but quite late in the day I realised that I didn’t want to be working on a B2C product so I downed tools. Why did I waste* all that effort?

Well, if you spend any time around the bootstrapping community, sucking up information in podcasts, blogposts and from hearing people speak at conferences you’ll be familiar with the three commandments relating to the market you’re selling to (usually referred to as audience)

  1. Like hanging out with your audience (in my case: geeks in business) as you’ll be spending a lot of time in their company
  2. Make sure your audience is willing to spend money (e.g. frugal down-shifters might be less willing to buy your next eBook)
  3. Don’t second guess what they want. Instead talk to your audience, listen to their pains then choose the biggest one and try to remove it for them

It’s point 2 that made me ditch Notebud.

Ignoring the glaring fact that the frustrated mobile OneNote users market is not likely to be large, the big realisation was that they are unlikely to want to pay much for any solutions. Unfortunately for us budding bootstrappers, retail consumers have been conditioned that anything more than a couple of quid/bucks is expensive.

Extortionate. Really?

Extortionate. Really?

Case in point, the new iPad app for OmniFocus was just released. I already use OmniFocus myself and was happy to buy the desktop app – even though at least 2 people told me it was ‘expensive’ and suggested cheaper alternatives – and also to spend a further tenner on the iPhone app.

However, I balked at the £21 price tag for the iPad app and didn’t buy it; too expensive (though to be fair I don’t actually use the iPad in my productivity work flow).

If me, a developer who has a pretty good idea how much work went into that app, thinks it is expensive then what are the people on the street thinking? Well the first review I’ve attached as a screenshot neatly illustrates my point; it’s ‘extortionate’ apparently.

So, if you are thinking about bootstrapping and you’ve not yet defined your ‘audience’ then I’d strongly recommend considering people in business rather than price-conscious consumers. Sell to people where there is a cost vs. benefit analysis for most purchases. People with corporate credit cards who if you’re removing a definite pain for them will happily get it out and pay you a reasonable fee for your product or service.

Of course the potential volumes for B2C transactions are very attractive but at such a low unit cost you need to sell a lot of 99p apps to start paying that rent, especially when you factor in the inevitable support overhead that will also come with your product.

B2C can work, but I’ll be focussing my efforts elsewhere.

* Actually, it was a useful way to learning how to build a mobile app, so I’ve gained some new skills, but I’ve still lost time and money

Serious Bash exploit & fix

There’s a bash exploit doing the rounds that is drop-everything serious.

The short version is that it is:

related to how environment variables are processed: trailing code in function definitions was executed, independent of the variable name

So, a correctly formed command can be used to execute arbitrary code on an affected system; anything running bash.

The problem is that Bash is probably called by your webserver or scripting language of choice, as this post on Redhat puts it:

CGI scripts are likely affected by this issue: when a CGI script is run by the web server, it uses environment variables to pass data to the script. These environment variables can be controlled by the attacker. If the CGI script calls Bash, the script could execute arbitrary code as the httpd user. mod_php, mod_perl, and mod_python do not use environment variables and we believe they are not affected.

Test this

bealers@server:~$ env x='() { :;}; echo vulnerable' bash -c "test"

Get this output?



Fix this (on Debian/Ubuntu a patch is out)

apt-get update && apt-get install --only-upgrade bash

Test this

bealers@server:~$ env x='() { :;}; echo vulnerable' bash -c "test"

Get this output?

bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'



This is a moving target, as you can see here, new patches keep coming out. So keep checking to see if there are other proof of concepts or keep checking for new patches by re-running the update & install.

For older versions of debian you may need to do more work, for example on some squeeze servers I had to change my apt-sources to squeeze-lts:

deb squeeze-lts main contrib non-free
deb-src squeeze-lts main contrib non-free

Finally a few useful background threads on HN:

OneNote on OSX, first impressions

Recently I moved to Apple’s OSX as my primary operating system. It has gone very smoothly with me taking a Macbook Air on holiday (with no work or email loaded onto it!) so I could get used to it and when back I had a few transition days where I did productive work with both old & new machine side by side.

One thing I was extremely nervous about was what the brand new OSX OneNote would be like, just how limited would its feature set be compared to the amazing Windows desktop version?

In turns out that the OSX team have got it just about right for a first (well, second as there was a small update recently) release and the version is useable, even for a hardcore OneNoter like me. Below I’ll quickly list out some points and highlight some hopeful areas for urgent improvement.

Continue reading

WordPress Naked, approaching 16,000 downloads

One evening in 2007 I got frustrated by once again having to strip out all of the styling from one of the then default WordPress themes (remember Kubrick?) prior to building a client’s site, so I created a simple boiler-plate theme called Worpdress Naked and uploaded it to this blog.

Amazingly since then approaching 16,000 people appear to have downloaded it (and that’s only counting since I moved it to Google code 2 years later). Given it got quite a bit of traction and linking in the early days  I wonder what the total count might have been.

I even got one donation, a whopping $10.

As it’s woefully out of date I hope not too many more people do download it, heck I’m not even sure what version of WP it was targeting. I think 2.0 was live then, Widgets had recently become a thing (before then widgets were accessed by installing a plugin) and WordPress was just starting to get a lot more mainstream. How times change.




Tip: keep Vagrant guest additions up to date

I found a handy plugin this weekend for keeping my PHP development Vagrant VM VirtualBox guest additions in sync: vagrant-vbguest

vagrant plugin install vagrant-vbguest

Every time you do a vagrant up it’ll do a check, which might occasionally get annoying if you’re in a hurry, so there’s a config option to disable it on a per-vm basis:

# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false

Halt all Vagrant/VirtualBox VMs one-liner

If you’re using Vagrant to control your dev VMs on a headless server it’s easy to lose track of the number of running machines.

Here’s a one-liner to gracefully shut-down all of them to free up some resources.

for VM in `VBoxManage list runningvms | awk '{ print $2; }'`; do VBoxManage controlvm $VM poweroff; done

Phonegap Android development environment for Windows

Assuming you want to develop HTML5 apps to run on mobile devices using Phonegap/Cordova then the easiest place to start is Android if you’re a Windows user as you don’t need a separate Mac, you don’t even need a device to test on as there’s an emulator.

Anyway, I’ve had to do this three times on various machines now, so here’s a step by step guide for next time!

Continue reading