Puakma: Under the hood

I'm Brendon Upson, jack-of-all-trades, master of one or two. I'm talking about life running a small ISV tackling business issues and leaping technology hurdles in a single bound.

webWise Network Consultants is based in Sydney, Australia and develops the groundbreaking Tornado Server technology.


The email move

Filed under: by Brendon Upson on 2009-02-08

I've been running the company email system on Notes for a long time. Since I was a Notes admin it seemed like the easy choice, but unfortunately over time Notes became less and less effective at stopping the web nasties from pouring in, eventually getting to the point where I was clearing out (manually) over 50 mails a day, and that's after the thunderbird spam filter cleared out another few hundred on top of that. This was all brought to a head with the purchase of the iPhone. The iPhone connects directly to the IMAP mail server so if Thunderbird is not running on my laptop, no junk gets cleaned. The iPhone became instantly useless for mail.

Now I know my way around Linux and had briefly set up and run a postfix server but it's a world of pain.I wanted something that just worked with the minimum of fuss: POP, IMAP, SMTP, webmail, with virus scanning and anti-spam server side.

Then I stumbled across qmail.

I downloaded a premade virtual machine from  http://www.qmtiso.com/ and gave it a run. Seemed to fit the bill, but trying to load it into my ESXi server was a world of pain as it was built with IDE drivers and ESXi runs SCSI. Back to the site, I purchased a copy of their latest ISO (20 bucks!) and installed it straight into ESXi. Setting up the domains and accounts was a snap, then following the setup guide the rest was running perfectly. Took maybe an hour all up which is pretty amazing, since I've burned many hours in the past trying to set up opensource servers using unintelligible config files.

If you're looking for a new mail system, I recommend qmail. Oh and my level of spam has dropped to around 3 a day. :-)


Filed under: by Brendon Upson on 2009-02-05

2009 has certainly got off to an odd start. On the one hand, the "experts" are telling us what a massive pile of poo we've got ourselves into financially, and on the other I've never been busier! Strange indeed. January and early February are usually the quieter months of the year, time to do some reflection and planning for the coming year. Not so this year - Maybe March...?

On the music side of things, all my new guitar amp gear has arrived (Mesa boogie Triaxis and 20/20 power amp) and it sounds FANTASTIC. Well worth the pain, cost and effort to get the pieces here from the US. To go with the new gear, I built a pair of speaker boxes to go with the new stereo guitar amp :-) To buy new here they're stupidly expensive and very hard to get. They're only single 12" boxes but sound HUGE with great bass response, based on a Thiele design for Electrovoice (TL806). The only downside is the full kit is now more difficult to transport and takes a bit longer to set up, but did I mention it sounds FANTASTIC??

Rock on!


Alas 3 mobile....

Filed under: by Brendon Upson on 2008-11-24

Some companies just don't get it: Good customer service is king.

Here's my scenario. I am on a 24 month mobile phone contract with 3 (18 months in). I go on a trip to New Zealand and make a number of calls back to Australia. I expect to pay more, no problem. While I'm there I get a call from the lovely Indian call centre telling me I have to pay $500 within the next 2 days as my account has "high usage". Here I am on a PLAN, paying ~ $130 per month and my bill has "blown out" to $500. If I don't pay my phone will be suspended. 

Here's the kicker. In no way can I itemise the $500+ bill to see what I am actually paying for.

So it seems 3 has an arbitrary "high usage" policy, you have no way of knowing before the end of the month what you are paying for and if you don't pay the "excess" charges BEFORE THE END OF THE PERIOD, your "account" will be suspended. 

Call me a slow learner. I was with 3 mobile a few years back and they screwed me over then. Foolishly I signed up with them again.

Here's how it should have gone:

3: Hello sir, we notice some high usage on your account. Are you aware of it?

Me: Why yes, I am in New Zealand at the moment so my international calls will have gone up.

3: Your account is currently $500. Is that Ok?

Me: No problem. Thanks for letting me know.

Instead we have a frustrated conversation with a non-native english speaker, this ends a few days later with my phone suspended and me looking at what other phone companies offer. This poor customer service will cost 3 in excess of $3,000 when I move to another provider. Was it worth it?

Consulting part 3: Managing work, finances, custom

Filed under: by Brendon Upson on 2008-09-23

The last part of running your own consulting outfit is to be able to manage your work. Odds are you'll have multiple projects running simultaneously each with different customers, rates, deliverables, deadlines. On top of that you absolutely need to ensure you manage your own cashflow well - nothing will kill a small business faster.

When I started out I used emails and scraps of paper. Life was simple then.

Over time with more customers and more simultaneous projects, more team members my head began to explode. Customers would call or email asking (reasonably) for a status update and I'd have to review my paper scraps, talk to the team, ... On top of that, we had multiple cusomers each with a potentially different hourly rate (for the type of work undertaken) and others on fixed priced deliverables. How would I know who to bill what and when? What if a customer queried their bill and wanted to know exactly what they were being billed for (not an unreasonable request!)?

I did what any software developer would do: I wrote my own project management system. Initially I had no thoughts of anyone else using it and it was a purely internal thing. One of the key componentsof the system is allowing customers to become part of the process. They control what goes into each phase of the project, as well as the approval of deliverables and seeing what their bill will beas the project goes. This gives the customer a high level of visibility of the project and also means I don't need to constantly contact them to tell them where something is up to - they log in and see the latest state of the project (and if there's anything that requires their attention).


As an added benefit, customers started adding new deliverables to their projects which meant more billable work for us to complete. Perfect!

A number of our customers had asked if they can use the system to manage their own projects, so last year we began building www.ProjectReactor.net. As with small business, the development of this was done "in between" the other jobs, so it took a little longer than we expected.

For us, EVERYTHING goes through Project Reactor, customer work, internal jobs, marketing, documentation, you name it. This is a critical component of managing what we do.

The good news for you, dear reader, is that ProjectReactor is now ready for your use :-). 

So there you have it. To run your business effectively you need a means of quantifying and tracking what you are doing. Take a look at Project Reactor - it may just suit you perfectly :-)

Consulting part 2: Fixed price work

Filed under: by Brendon Upson on 2008-08-10

As a consultant there are two basic paths to travel. Hourly rate work and fixed price work. Hourly rate is simple, you work for 8 hours and get paid for 8 hours. Fixed price work is a whole lot more complicated.

Newbie mistake #1 is to look at the job decide on how many hours TECHNICAL effort is required and supply a quote based on that. When you've been around the block a few times you realise the technical effort is only one part of the overall solution. Techies regularly forget the 8 hours it took to do the technical design, then the estimate based on that design. Those are 8 hours you'll never get back so they need to be loaded into the project estimate.

Then there's the multitude of hour long phone conversations with your customer as the project progresses. While your talking to your customer you won't be doing the "technical" work. More lost time. Again, this time needs to be allowed for in the overall project sum.

There's also an overhead for "managing" the project. This is why full time project managers exist. The project manager's role is to ensure the client is happy, deliverables are being tracked and managed, and the project team is happy and productive, amongst other tasks. Again, this requires time to make sure the project is in order, and much more time to put it back in order if it's not. More time to be loaded into the overall project sum.

Newbie mistake #2 is to completely ignore risk. Sometimes we're asked to do things that we've never done before. We know pretty much how to do them, but there's always some bits and pieces that leave us wonering if the project is even possible. There's no way to know for sure until you actually do the work, but if the client only wants a quote for what it will cost it doesn't make sense to do the work first! So there's a risk that the project is going to have some catastrophic speed hump that will kill all in its path. So to mitigate the risk, a lump is added to the project sum for risk. More risk, more dollars. If the client complains about the price, explain the risks to them and they'll either change the brief to remove/reduce the risk, allow you to perform that part on an hourly rate or absorb the project sum. There is always risk in all IT projects simply due to the vast array of software and hardware that has to work together and each piece can be configured in 101 ways. Work out which parts of the project are a bit scary and add some dollars just in case you have to do extra work (or rework) to meet the project brief.

Newbie mistake #3 is not having any cashflow. So you've given your client the perfect quote you know you can deliver, it's four million dollars and will take two years to complete. Awesome. When do you get paid? Four million bucks at the end when you've finished? What if your client goes out of business? What if your client doesn't like what you've done and won't pay? What if your client has an internal restructure and funding for your project is pulled? This is where you may need to negotiate a little. The client would obviously prefer to pay the bill at the end, you'd rather they pay it all up front. In practice you should have a schedule of deliverables. These deliverables mark major events in the project and have a payment amount attached to them, for example:

Project acceptance 10%
Technical design document  10%
Signoff on the UI 40%
Ecommerce linkages built 20%
Final project delivery 20%

This serves a number of purposes. First, you get paid for your work as you go - congratulations you can eat this month! Secondly, the client becomes integral to the project process (very important) and they are checking and signing off on the project progress as you go so at there end there should be few surprises. Finally if the project falls terminally ill at any point, you can walk away with compensation for the work you have completed or conversely if your client wants out they can use the work they have paid for. Ideally you will want to try to push for more payment up front and smaller payments toward the end just to cover yourself. Include enough milestones to ensure you have a steady stream of cash coming in.

Be sure to make the milestones non subjective, that way there is no question that they have been met. Don't be afraid to insist on payment before continuing, with old clients who have a good payment history this is not an issue, but new clients may like to play some payment games. You meet the miestone, issue the invoice and merrily begin on the next phase while your invoice disappears into the ether. Keep an eye on where payment is at and don't be afraid to ask why you haven't been paid yet - just because you seem to be working for a large company doesn't mean that don't have cashflow issues of their own! If you don't get paid STOP. You'll be amazed at how quickly cash will materialise!

Next time: Tracking your work. "I've got 5 customers and 11 projects all running simultaneously. Where are we up to?"

So you want to run your own consulting business?

Filed under: by Brendon Upson on 2008-08-01

I have been asked a few times by various people on how to be a freelance IT specialist, so thought it was time to write about it.

The first question you need to ask yourself is: Why do I want to do it? If you answer is "for the money", beware. Consulting is a services based business which means you have two natural constraints, time and the amount people will pay for your service. There is a limit to what you can earn and it's actually not that high. If your answer is "for the money" look at selling some kind of product, or turn your service into a product if possible. This is all beyond the scope of what I'm going to talk about here.

The biggest mistake freelance consultants make is not charging enough. We've been conditioned to think in terms of cheap. "If XYZ Co charge $2000 a day, then I'll charge $1000 a day and I'll be flooded with work". Wrong. First, the amount you charge creates a perception of quality. Second, XYZ charge this amount for a reason. They have calculated training, annual leave, sick leave, down time, overheads (office rent, phone, payroll admin, ...), basically, in order to run a sustainable business this is the amount you NEED to charge.

How do you work out how much to charge?

It's actually quite easy. First is your salary. If you're leaving a $60,000 a year job to start a consulting company I assume you want to earn at least as much. The formula is basically: Your salary (or rate) + Overheads + Profit margin = your rate to a customer. Overheads are those bills that roll in every month whether you are working or not (sometimes called fixed costs). These include office rent, computer equipment, phone costs etc. The profit margin is the premium you add for being in business. Businesses are about making a profit. This can be whatever you want, youcould use around 10% as a base line.

In the previous example, we'll assume monthly overheads of $2,000, your gross monthly salary is $5,000 and you want to make a 10% profit. The formula is:

(5,000 + 2,000) * 1.1 =  $7,700 per month.

Now that we have the monthly figure it's easy to work out an hourly rate. There are about 160 working hours in a month, so 7,700 / 160 = $48.12 per hour.

Sloooow down skippy, we're not done yet. 

It is pretty unlikely you will bill the full 160 hours every month so we need to load in a contingency factor. Let's assume you'll be paid for 70% of the time. Those 160 hours now fall to 120 hours but of course your overheads and gross salary remain the same, so 7,700 / 120 = $64.16 per hour. 

At this point STOP. Compare that rate to what you can get as a contractor or permanent employee. They get paid for the full 160 hours every month! If the numbers don't add and you really want to run your own consulting business, look at which overheads you can cut, then re-run the figures.

Now you know what you need to make as a minimum just to stay in business. Now compare that figure to your competitors. Are you high or low. If you're too high, abort, the numbers don't stack up ;-) If you're too low (great!) increase your rate to that of your competitors to maintain your level of perceived quality.

Next time we'll talk about fixed price work. That's a whole different can of worms!


Product Company vs Services Company

Filed under: by Brendon Upson on 2008-04-29

For last last 6 or so years I've been running a company that is split between products (software) and services (contract software development). As the services side demands more of my time, I am increasingly questioning the "value" of a services business. In this context I am referring to a services business as a business which requires a human to perform some service at an hourly rate for another company.

Growing a services business is difficult. Since a human is providing the service, to provide more service you need either a) more humans, b) more revenue per service or c) more time. Scaling these variables is challenging part.

  1. We know that time is fixed and that 100% capacity is 168 hours per week, in reality much, much less, around 40 hours.
  2. We also know that companies have a natural cieling for what they are willing to pay for a service, let's say $300/hr.
  3. We know that the more complex the service provided, the more difficult it is to get additional qualified staff to perform said service. 

So, according to the variables above, the only real way to expand a services business is to add more staff. In reality, as the number of customers grow other activities take up an increasing amount of time in communications, account management, staffing issues, etc. Thus the original 40 hours begins to fall as more and more hours are taken up with non-billable time.

As a small business it is almost impossible to compete for the high end consulting work as customers deem you as high risk. A perceived "safer" choice is to engage large consulting companies with supposed "experience". The reality is the large consulting company will subcontract out the work to smaller suppliers such as myself while skimming a (often large) margin. 

Another factor particularly important in IT services is the fact that software development projects are not discrete. That is, it is unlikely for a software development project to actually end. We regularly have projects that come back like the ghost of Christmas past as the customer wants to add a few more tweaks and updates. Conversely, if you are an an excavator operator you dig a hole and leave, the customer will never get you back to continue work on the same hole to perhaps turn it into an airplane ;-) These continual mental context switches, jumping back to projects that were developed years ago, is a real mind bender and absolutely kills concentration since a small change involves relearning what was done in the past and what the implications of adding the new change are.

The provision of complex services require the use of competent and highly skilled staff. The more complex the service, the higher the staff knowledge needs to be. A couple of examples: 1) You run a window washing business. 3 of your staff members leave to go backpacking. It is very easy to replace them since after around 30 minutes of training you are a competent window cleaner. 2) You run an obstetrics business (you deliver babies). 3 of your staff leave to become GPs. Replacing them is a difficult task since they need a medical degree plus more years specialising. Software development is somewhere in between.

So what's the bottom line? If you plan to run a small services business you need to really think about the economics and compare that to working in some other services business. Effectively you are buying a job and a lot of headaches (tax, accounting, marketing, planning, staffing, ...). 

Product based companies scale much better. If you make widgets, selling one or ten requires little extra effort. You can also engage less skilled staff in the sales and billing parts of the company to streamline the sales and billing process. In addition the negagement of resellers further alleviates the sales burden. Rather than dealing with 100 customers directly you deal with say 10 resellers. Sure, you take a small hit on the margin but the resellers really absorb a large portion of the sales effort.

Now I'm sure the skeptics out there may not believe the above hypothesis, so here's some research for you: Take a look at the following top 50 companies for 2007 and work out the proportion of products vs services companies. The results should be obvious. http://www.diversityinc.com/public/1595.cfm


Filed under: by Brendon Upson on 2008-01-24

In the last couple of weeks I have been setting up a voice over IP system for the office. Something I have been meaning to do for a while but now the neccessity has arisen to make it so.

After a little research it seems Asterisk is the best software available. After failing miserably at a bare Asterisk install (due to the plethora of extra sh17 to install on top of it). I tried AsteriskNOW and prebuilt ISO with the linux OS, asterisk and apparently all the gear to make it fly. I burnt a pile of hours trying to make that flat with limited success so abandoned that too. Last and successful attempt was using trixbox. AWESOME! Really great package, it is the whole box and dice (as per AsteriskNOW).

I have installed it in a virtual machine inside the office, opened the relevant ports in the firewall. The asterisk virtual pbx connects to my VoIP service provider Exetel.

Call quality is average, a little worse than the regular telephone system but quite acceptable. Where it wins is in flexibility. A single incoming number can be routed to ring groups, IVR, a specific user etc. Video calls are possible, voicemail built in, web interface to configure.

Next job is to hook up the regular phone to divert through the PBX.