# Saturday, November 01, 2008

We had an interesting problem the other day while integrating with a web service hosted on an apache server. Every time we called the WSDL methods we could see a valid request being sent and a valid response being returned (ok there were a few syntax errors but nothing that would stop it converting) but despite this every time, without fail, it would return null at code level.

The solution was actually amazingly simple. In short, since our last flurry with web services we've upgraded to Visual Studio 2008 and installed ReSharper (see below for how that's relevant). In VS2008 they've sneakily added a new menu "Add Service Reference" and although it's in the same menu location and a similar wording etc does something different. If you add your WSDL reference this way it will more than likely fail.

To add a "Web Reference" in Visual Studio 2008 follow the instructions below and hopefully you won't go down the same routes that I did trying to debug the XML...

Click the "Add Service Reference" menu option (obviously!)

The screen below should appear, instead of entering the address of the web service into the address bar, click the advanced button at the bottom (highlighted)

That'll then bring up the screen below, on which you need to click the "Add Web Reference" button at the bottom.

You should then be presented with the usual "Add Web Reference" screen (see below).

Why did I mention ReSharper? Well I've notice that as well as adding to the IDE they've also updated some of the menu items, most noticeably "Go to Definition" which is now "go to Declaration" (see below) so I figured this new menu option was thanks to them.

ReSharper:

Without ReSharper: VS2008GoToDeclarationWithoutResharper.png

So the next time your WSDL is returning a null object even though a valid response is being retrieved, check how you added it in Visual Studio,.

Saturday, November 01, 2008 6:28:49 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, April 30, 2008

Despite all the doom and gloom surrounding the pending credit crunch, we're hiring as work is piling in and we need help :). So if you're a developer, designer, sales person, marketing guru -or you're just plain bored check out The Site Doctor's vacancies page for the great posts currently up for grabs!

Not sure why you should come and work with us? There are way too many reasons to list in one go but here are my top 5:

  • You'll have a great boss (ok I'm a touch biased)
  • We have 20% time (every Friday we down tools and do something cool -that doesn't relate to the main projects you're working on at the time -more about that another day)
  • We're committed to your development and will fund courses etc
  • There are bonuses to be had for referrals and working hard!
  • You get your Birthday as an additional bank holiday so you never need to worry about booking it off again!

Oh and there's free Tea and Coffee -so I guess that's 6 reasons to get in touch.

For more information about the posts available (more being added later this week) check out The Site Doctor vacancies page.

Wednesday, April 30, 2008 4:18:00 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, April 15, 2008

Since re-installing my main development machine recently, I've had a real irritation -I had to resort to SQL Server Management Studio Express as I couldn't get the full version installed. This wasn't a problem until today when I had to re-create some full text catalogs (which is one of the things you can't do using the GUI in SQL Server Management Studio Express).

I did look into getting this working before giving up before due to time constraints but this time I had no choice but this time I must have done something differently.

Just to bring you up-to speed, whenever I tried to install SQL Server Management Studio using the SQL Server 2005 installer, I got an error message something along the lines of "Edition Version Conflict". The installer then suggests you uninstall the express tools (which you do) and you try again just to get the same error message.

Most people on Google are just resorting to a complete re-install of your machine but I've found that's because you're not uninstalling the right thing. First thing I did this time was remove Microsoft SQL Server 2005 completely but near the end of the installer it asks you if you want to remove or modify. This time, I chose modify and set all the components to "Entire Feature will be Unavailable". That then seems to uninstall it fully for you. Now uninstall SQL Server Management Studio Express and you're done :)

Hope that helps someone else (or me in a few months time...)

Tuesday, April 15, 2008 8:12:20 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [2]  | 
# Wednesday, January 16, 2008

After our recent issues with Fasthosts (or as they are now fondly referred to in the office - Farcehosts) I have made the conscious decision to move away from them completely over the forthcoming months (probably years). We no longer have any clients on their hosting platform but we still have circa 300 domain names registered through various accounts through their sister company UKReg.

Due to the authority's charges, we can't just transfer all these domains away as it'd cost us a fortune (and possibly one we can't recoup) so I'm going to do it as they expire. In our search to find an alternative provider someone suggested we check out the new kid on the block - Heart Internet. According to those in the know on Underscore they are a bunch of guys who used to work at 1&1 and decided they could do it better.

So far I've found their service to be great -and value wise they're cheaper than most providers which is a bonus. As with most of the providers these days it's all managed through their easy to use online control panel which is pretty straight forward. If you're on the lookout for great value or cheap domain names give Heart Internet a look.

BTW if you're wondering where Heart Internet's .co.uk domain names from 9p is, check under the transfer fees. Still £2.59 is a great price for any .co.uk!

Wednesday, January 16, 2008 12:59:38 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, November 26, 2007

Having only recently started to use Umbraco I've taken a couple of days to familiarise myself with the way it works and try and get a few best practices in place, I expect these will be updated over time but you've got to start somewhere ;)

As with any code, I think it's very important to follow a consistent naming convention -whether it's the same one everyone else follows or not, you need to be able to pickup code you wrote months/years/decades ago and still understand it. Your styles will no doubt change over the years but you get the idea.

I've chosen to follow the following "style":

  • Document Types: Lowercase the first letter of the aliases followed by capitals for the new words (similar to Hungarian Notation). Use descriptive names i.e. Home Page for the document type as it'll be client facing. Suffix with "Page" if it is a page document type (as opposed to i.e. a screen shot)
  • Templates: If the template is specifically for a document type, use the same name for the template, if it relates to multiple document types name it logically i.e. "Master Template" or "Left Menu"
  • Macros: Prefix the macro alias with uppercase TSD to avoid conflicts with other macros. Prefix the name with [Source of the macro] i.e. [XSLT] or [User Control]. This is something I picked up from the sample package created by Warren Buckley that I think makes it easier to understand what's going on
  • XSLT Files: Prefix the name with the site's abbreviation i.e. for www.thesitedoctor.co.uk it would be TSD or for www.wineandhampergifts.co.uk WAHG if it's a site specific XSLT file otherwise name conventionally i.e. CamelCase
Monday, November 26, 2007 10:30:56 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, August 22, 2007

Type
System.FormatException
Message
Exception of type 'System.Web.HttpUnhandledException' was thrown.
StackTrace
at System.Text.StringBuilder.FormatError()
at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
at System.String.Format(IFormatProvider provider, String format, Object[] args)
Error Line
0

Just got that message (or at most "Exception of type 'System.Web.HttpUnhandledException' was thrown")? Puzzled? I was the first time I got it, I've been meaning to post about it for quite some time now so seeing as I got it again today I took the hint.

The error is horrifingly obvious when you know about it, in short, you've no doubt got some code that looks like this:

String.Format("<html><head><style type=\"text/css\">body{color: #fff;}</style><body>...");

Can you spot it now? Notice your style declaration is using the curly brackets? Basically String.Format is interpreting that as a placeholder i.e. {0} and is throwing a wobbly.

The solution is simple too, just replace all opening/closing brackets with two i.e:

String.Format("<html><head><style type=\"text/css\">body{{color: #fff;}}</style><body>...");

I hope that helps someone out there :)

P.S. Watch out for methods that use String.Format as they may catch you out in the same way -i.e. Subject of System.Net.Mail.MailMessage

Wednesday, August 22, 2007 9:43:12 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [6]  | 
# Wednesday, August 08, 2007

As with my previous post, we upgraded the AJAX framework on the weekend which broke a few things, but one control in particular that broke was our TextChangedTextBox which is based on Pete Kellner's timed postback control. Since updating we were receiving a "'debug' is undefined" error on line 1409 (which was in one of the JavaScript include files).

Having had this issue before I updated the TextChangedBehavior.js but that didn't sort it, I have the latest version of the Futures on the server too so I was lost. Turns out I had an old version of the AJAX Futures DLL within the Bin folder of the project.

So as with my post on the ASP.Net forums before -make sure you update your AJAX Futures when updating your Microsoft AJAX framework!

Wednesday, August 08, 2007 6:20:47 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, August 06, 2007

Over the weekend we had to upgrade the server's version of ASP.Net AJAX which went fine until this morning when we started receiving the error "Server cannot modify cookies after HTTP headers have been sent."

Luckily this wasn't bubbled up to the UI but incase other people are getting the error I thought I would share the fix. The error is apparently a known error with ASP.Net AJAX and the RolesManager. To fix the error all you need to do is add the following to your RolesManager web.config node:

cacheRolesInCookie="false"


The full error message was

Message:
Server cannot modify cookies after HTTP headers have been sent.

StackTrace:
at System.Web.HttpCookieCollection.Add(HttpCookie cookie)
at System.Web.Security.RoleManagerModule.OnLeave(Object source, EventArgs eventArgs)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Monday, August 06, 2007 1:52:08 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, July 25, 2007

When we got our own dedicated server we needed to start working out a fair number of processes and decide upon a structure that was replicable, scaleable and manageable on a large scale, although the solution we've ended up adopting may not be the best, it certainly works for us.

One thing that has been bugging me however is the location and folder naming convention of the log files -for both the web hits and FTP hits. Typically, shared hosting solutions place the log files under the same folder as the one your website's root is situated but as we had no plans on giving our clients access to these logs this was an unnecessary task so we left them collecting in the default folder.

Leaving the log files in the default folder meant downloading them was very simple, all I needed to do was point our download script at the main folder and that was it, all would be included, the catch however was that the folders weren't named logically* instead they seemed to include some form of ID that was relevant to and assigned by IIS i.e. W3SVC1.

*By this I mean human readable i.e. domainname.com

Until recently I've not worried about analysing the log files beyond one or two clients whom I could manage fairly easily but now with the inclusion of a host of other domains on the server I needed a way of quickly and easily identifying the folders and which domains they related to.

Historically when I needed to know which domain the log folder related to I would log onto the server, open IIS, open the properties of the domain, click on the log file properties and below the folder directory would be the folder name, that's fine if it's only a handful of domains but what when it's say 20? That's 2mins each (with cross referencing etc) so that's 40minutes. I needed an automated system!

As it turns out, Microsoft have been kind enough to provide us with an interface we can easily code against in .Net so after a little Google-ing I wrote a number of little helper applications.

This little console application simply loops through all the domain names on the server it's being run on (the default instance of IIS) and outputs the relevant log file and folder path into a handy text file. I'll post in another post about how I use this file.

For convenience's sake I have this run on a nightly basis and the text file output to the root of the log file directory, that way when I download the logs during the next day I get the latest update of log file locations and domain names :)

Download the IIS WWW and FTP log file location exporter.

1 Year Update: I've posted the source for the IIS WWW and FTP log file location exporter here.

Wednesday, July 25, 2007 4:18:42 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [2]  | 
# Saturday, July 21, 2007

Stacey and I were enjoying our last meal in Croatia last night when the subject of where we "go" next came up. I've never hidden the fact that I want to be wealthy, in fact I would imagine many who know me would go as far as it's what drives me. This is true in a sense however you will notice I used the word "wealthy" rather than "rich" or "loaded".

What many people seem to do is confuse what I mean when I say I want to get wealthy (or sometimes rich), I don't mean I want to have stacks of cash sitting in the bank or a huge number of shares under my belt, what I in fact mean is I want to enjoy myself, ok I need cash to do that but it's more important that I -and those around me- are happy.

Anyhow, I digress. As I was saying, Stacey and I were talking about how we were going to get our incomes to a level that would support the somewhat luxurious lifestyle we have imagined for ourselves when she said "The people with stacks of money have inherited it". This -in many cases- is true, people such as Paris Hilton for example haven't "done" anything to get the money, it has been -or will be- inherited.

That got me thinking, does that run true in today's society? Of course there are people who have inherited serious sums of cash but there are also a large number of self-made -and young- millionaires cropping up all over the place. A few that sprung to mind almost immediately are Bill Gates, Larry Page and Sergy Brin (the Google Guys), Richard Branson1, Sir Alan Sugar, The Bechams, Duncan Bannatyne, Peter Jones2 and more recently the plethora of web 2.0 start-ups that are getting sold off for millions.

1 Ok, I know many say that he was given a pretty good start by his father but you still have to have something to make it work

2 IIRC Peter Jones (from BBC's "Dragon Den"/ITV's "Tycoon") was also bankrupt a few years ago

So it got me wondering -disregarding those who were able to make a serious amount of money through "lucky breaks"3 in technology and successful "celebrities"- has the birth of the Internet made making large amounts money a whole lot more reachable?

3 Personally, I think it takes more than just being in the right place at the right time (which undoubtedly helps), I think you also need to be able to spot the opportunity and have what it takes to grasp that opportunity.

Saturday, July 21, 2007 5:04:58 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [4]  | 
# Monday, June 18, 2007

In a somewhat random chat with Chris Anderson today I decided that I wanted to obtain the IP address 80.08.13.55 (IP6) or even better 53.180.0.8 (both timeout atm). It got me wondering whether you can you purchase a specific IP like that and whether that could be the new trend...

Chris wants felt 7.107.73.45 was more appropriate for our American comrades but I think that’s a little boring...

For those of you who didn't make it to school, type it into your calculator without the periods and see what you get (note my primary school calculator example -I'm returning it to it's roots)...

5318008

See it yet?

No? Turn it the other way up:

8008135

How about now?
Monday, June 18, 2007 4:49:11 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 

Since getting our own dedicated server a couple of years ago we’ve had a fairly step learning curve which a lot of the time has been a tad hit-and-miss (never at the detriment of our customers I might add). Luckily we’ve had the superb support of Rackspace behind us but as others may not be so lucky, I thought I would post up a few nuggets we’ve received over the years. As I remember more, I’ll add additional posts.

Domain/Folder organisation

One of the first issues we came across (and I’m sure many people have already got into this position) was the structure of the folders on both the server and development machines. The solution we came up with was to have a common folder –for argument’s sake lets call it “WebsitesFolder”. Within “WebsitesFolder” you then create a new directory for each domain name and finally within that, a folder for each subdirectory i.e. www, blogs etc.

By creating a new folder for each subdomain, you are able to quickly find the correct folder for the domain. Then locally you are able to store the source files outside of the site’s root which will (or should) speed up your FTP transfer process as you won’t need to select which files to upload1. The structures might then look like this:
Development server

  • /domain.com
    • /www/
    • /subdomain/
    • /Source Imagery/
    • /Some Irrelevant Folder/
  • /domain2.com
    • /www/

Production server

  • /domain.com
    • /www/
    • /subdomain/
  • /domain2.com
    • /www/

1It might also be worth you checking out SyncBackSE which is an excellent FTP client that only uploads files you have changed since the last transfer. It also has the added advantage that it has customisable filters allowing you to ignore source files and folders as _notes, .cs, .vb etc. http://www.2brightsparks.com/syncback/sbse.html

Finding large directories

The other day I noticed that one of our server’s disk space was running a little low but as far as I was aware there was plenty of space left. As we tend to store all client data within set folders I was able to quickly identify that it wasn’t the client folders that was taking all the room so what was?

When you don’t know which folders are taking the space, there are a couple of tools you may find useful. The first I was told about was TreeSize (http://www.jam-software.com/freeware/index.shtml) -a free program that gives you a graphical representation of each folder’s usage:

It then allows you to quickly traverse the directory structure and identify the offending directory. There’s a load more information available through the easy-to-use interface but if all you want is a number it’s a little overkill.

The alternative to TreeSize

A heading? Just for this? Yes –this little tool is the Mac Daddy of directory size info as far as I’m concerned as it’s a free (we like free ;)) command line tool found on Microsoft’s site called “Directory Disk Usage” –DIRUSE.

DIRUSE is really easy to use, simply load up CMD and type in:
diruse /m /* c:\
and you’ll get a report of your chosen folder’s sub folders, related sizes and a count of the files within it. Ok it’s iteration can be a little slow but it gives you all the information you need quickly and easily.

The syntax is as follows:
DIRUSE [/S | /V] [/M | /K | /B] [/C] [/,] [/Q:# [/L] [/A] [/D] [/O]] [/*] DIRS

/S
Specifies whether subdirectories are included in the output.
/V
Output progress reports while scanning subdirectories.  Ignored if /S is specified.
/M
Displays disk usage in megabytes.
/K
Displays disk usage in kilobytes.
/B
Displays disk usage in bytes (default).
/C
Use Compressed size instead of apparent size.
/,
Use thousand separator when displaying sizes.
/L
Output overflows to logfile .\DIRUSE.LOG.
/*
Uses the top-level directories residing in the specified DIRS
/Q:#
Mark directories that exceed the specified size (#) with a "!".
(If /M or /K is not specified, then bytes is assumed.)
/A
Specifies that an alert is generated if specified sizes are exceeded. (The Alerter service must be running.)
/D
Displays only directories that exceed specified sizes.
/O
Specifies that subdirectories are not checked for specified size overflow.
DIRS
Specifies a list of the paths to check –you can use semicolons, commas, or spaces to separate multiple directories if required.

Note: Parameters can be typed in any order. And the '-' symbol can be used in place of the '/' symbol.

Also, if /Q is specified, then return code is ONE if any directories are found that exceed the specified sizes. Otherwise the return code is ZERO.

Example: diruse /s /m /q:1.5 /l /* c:\websitesfolder

Monday, June 18, 2007 10:24:35 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, June 14, 2007

I’ve been meaning to post about the use of AccessKeys on websites now for some time (I wrote the post but never completed the list at the end). Then, this morning I saw a post from Tony Crockford on the WAUK list along similar lines so thought it was time I got the post online :)


Just before Christmas, we were looking for a new house so I was spending an increased amount of time on Rightmove and it really started to bug me. I’m really pleased by the fact that they tried to make their site simpler to navigate by introducing AccessKeys to their pages but in my view they’re defeating the purpose of them by overriding browser shortcuts. In this case, the one I’m referring to is the use of Ctrl+K which I use a lot to access Firefox’s search bar.

Why oh why have they chosen to override this key combination, in IE it’s not too irritating as it doesn’t activate the link, in Firefox however it automatically loads the link, so I’m forever being sent back to the buying homepage.

I can understand that they want to make the key relevant, but what does “K” have to do with buying? I could understand if they were overriding “B” –and it wouldn’t bother me as it’s related, but K? I realise that it’s unpractical to avoid all shortcuts in all browsers but I would have thought they’d look into the main shortcuts first.


I had planned to compile a list of common shortcuts but I’ve not had time yet –another thing on the list ;). What’s interesting however is that since I wrote this post in January, they’ve replaced a couple of the shortcuts already –Buying is now “B”.

So what’s Tony Crockford got to do with this all? Well he referred the list to the WCAG Samurai’s point on AccessKeys which I think is a valid one:

So there you have it, just don’t ;) -I think that now there are so many different browsers out there it’s impossible to account for them all so it’s probably the best methodology.

Thursday, June 14, 2007 8:02:59 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, June 11, 2007

I've been somewhat quiet on the blogging front recently as I have been training hard for the mammoth canoe race we're competing in at the end of this month. The Cheshire Ring Race for those of you who haven't been keeping up with the little news I've been posting recently is a 96 mile canoe race we're doing this year in aid of charity (if you've not already made your pledge, why not pop over to www.paddlathon.co.uk now and make a donation -we've got a fair way to go to our £2,000 target).

Last night I decided it was time I sat down and started planning the route for the drivers, which first meant plotting the route for the paddlers and oh my god is it a long way! Until now I've thought "100 miles, yeah that's not too bad, we'll do that in a few hours..." (ok the few was around 20 but still). Plotting it on the map however shows just how far this thing is!

Instead of feeling daunted by the distance, I'm now even more psyched than before -and have even more reason to hit the gym hard! If you're interested, I've uploaded the route plotted on Google Earth. Currently it only holds the point data but in time I'm going to expand it so it includes information about each route (for the paddlers and drivers) and perhaps once we've done the race, pictures of each point.

For those of you interested in how my canoe training routine is going -it's good. I'm holding a steady 12st 6lb at the moment -sometimes dropping to 122st 4lb and I've blown my previous routine out of the water. Sam and I -despite some misfortune with our kit- have been kicking ass on the past couple of races -taking around 10-15minutes off our times from last year. I'm hoping to complete The Cheshire Ring Race in less than 18 hours at this rate...

Monday, June 11, 2007 10:35:26 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, June 08, 2007

This has to be my laziest post yet, it's just a paste of the press release but I'm to excited at the thought of free beer to re-write it ;) -Hope to see you there, shout if you're going.


Chinwag Joins Forces With Top Software And Media Brands For Supersized Digital Networking Party

The UK digital media industry is gearing up for a soiree of grand proportions in July at Chinwag's Big Summer 07 networking party (http://bigsummer07.chinwag.com).

Giving the bash an extra boost - and supporting the inventive and fun entertainment programme, plus the lavish refreshments on site - are Chinwag's three party partners: Adobe (http://www.adobe.com/), Channel 4 (http://www.channel4.com/), and Purple (http://www.purple-consultancy.com/).

The free event, to be held at the historic Imperial College Union in Kensington, London, will be the largest-scale bash of its kind for people working in the digital sector, with the party encompassing 5 large rooms and the enclosed quadrangle, allowing a total capacity of 2,000 revellers at any one point in time.

Hosted by new media community Chinwag, it will to bring together professionals in web, mobile and other interactive media to make useful connections, celebrate the return of the new media sector as a sustainable growth industry, and mingle in style in the sunshine of a London summer's evening.

Dominic Eames, editor, Online, at Channel 4 New Media said: "Channel 4 is always open to new ideas from the New Media community and is delighted to support Chinwag in this event.

Toby Thwaites, managing director of Purple said: "Having worked with the team at Chinwag for a number of years I am delighted that Purple are able to support what will undoubtedly be the Digital event of the Summer"

Sam Michel, Chinwag MD and founder said: "This is a great opportunity for the new media industry to do some "First Life" networking. The UK scene is buzzing with life, and it's great to bring everyone together en masse."

"The party takes place on July 5. More details will be released in the forthcoming weeks with promotional activities, partnership with brands, and innovative use of social networking tools and technologies such as Facebook and Twitter included in the mix."

More information & registration: http://bigsummer07.chinwag.com

About Chinwag

Chinwag aims to be a connecting rod for ideas and talent across the new media industries. Having provided Internet-based community forums, websites, email newsletters and consultancy for the new media sector since 1996, its website (http://www.chinwag.com) will be re-launched in July, aggregating information for the digital industries and updating its community focus. In February 2007 the Chinwag Live events series (http://live.chinwag.com) was launched. Topical panel discussions founded to cast light on issues and trends affecting the new media industries, the monthly sessions have also gone on tour to Internet World and Ad:Tech.

In addition, Chinwag publishes Chinwag Jobs (http://jobs.chinwag.com), the leading recruitment website for online marketing, digital media, web, design and technical positions. It is used by the BBC, MySpace.com, Yahoo!, Amazon, Vodafone and the majority of recruitment agencies who place staff in the sector.

Chinwag - Connecting New Media People

Site: http://bigsummer07.chinwag.com

Friday, June 08, 2007 12:39:02 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [1]  | 
# Friday, May 04, 2007

Ok, I promise to post something technical and interesting shortly (yes I know, that’ll be a first yada yada…) but I want to get some information up here about Paddlathon 2007. I’ve written a very quick site which I will be adding more information to shortly but it already has a lot of information about our charity canoe race and more importantly a donation form so once you’re done reading this pop over to www.paddlathon.co.uk and have a look.

I wanted to compete in the Cheshire ring race 2007 for a few personal reasons but the initial motivation was that I missed out on taking part in the Transpennine race –this was stopped the first year I was old enough for my canoeing club to allow me to participate so ever since I’ve wanted to take part in a long race (preferably overnight etc) as I felt it would be fun so when I was handed a flyer for a 96 mile canoe race last season at Bristol I decided it was the perfect choice! There is another long race called Devizes to Westminster which is around 124miles at Easter –which didn’t leave enough time to train or find a partner.

The Cheshire ring race is a 96 mile canoe race but at the end of June which meant more time to train and as it was nearer to summer it would also be warmer. Until a couple of seasons ago, I paddled with my canoe coach –and long term friend Paul Rose but sadly he damaged his back (thanks to me) going over a weir. He’s getting back into canoeing, but having vowed to paddle together again I suggested the Cheshire ring race as a worthy race.

Paul was immediately up for it and once we had got chatting we thought it had enough of a “wow” factor to be worthy of sponsorship and so Paddlathon 2007 was conceived… a 96 mile canoe race is without a doubt a bloody long way and knowing he may still have issues with his back over that sort of distance we decided doing it as a relay race would be better so we decided to get my two brothers Sam and Pat on board as they’re both keen paddlers and are always up for a challenge.

Originally we were going to raise money for a single charity but decided as there were four of us, it would be better to pool our collection efforts and raise for four charities together. The charities we’ve chosen are:

  • Samantha Dickson Brain Tumour Trust

    Samantha Dickson Brain Tumour Trust Logo
  • Multiple Sclerosis Society

    Multiple Sclerosis Society Logo
  • CLIC Sargent

    CLIC Sargent Logo
  • Mac Millan Nurses

    Mac Millan Nurses Logo

To my knowledge, I’ve never asked for anything for the information I openly share on my blog –and I probably never will (beyond the Google AdSense that appears in the design that is) but I would very much appreciate it if you were generous enough to donate a couple of quid as there are some great charities who dearly need your help.

I’ll post more information on the charities, the team and the boat over the forthcoming weeks but the race is June 30th – July 1st, if you fancy coming and seeing us off –or having a pint with us after the race that would be awesome.

Read more or donate online at: www.paddlathon.co.uk

Friday, May 04, 2007 7:56:27 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, May 03, 2007

I found out this morning that my Joost account has been credited with 999 invites (I kid you not) so feeling all summery I thought others might want to join in the Joost fun and I’d share them around a little.

I’ve only got 999 Joost invites so it’ll have to be strictly on a first come –first served basis (as if I’m ever going to get rid of them all haha).

I don’t want anything in return but if this offer is too generous or you feel I’ve helped you in the past and you’re debted to me, why not click some of the Google Adverts –or even better, make a donation to our 96 mile canoe race (the Cheshire ring race) in aid of the Samantha Dickson Brain Tumour Trust, Multiple Sclerosis Society, CLIC Sargent and Mac Millan Nurses, I like to think of it of a “You scratch my back, I’ll scratch your back” arrangement.

Regardless of whether you want to donate to our worth cause or not, drop me an email (or leave me a comment) and I’ll send an invite over ASAP.

For more information on our 96 mile canoe race (the Cheshire ring race) in aid of charity go to www.paddlathon.co.uk or read my blog posts about the Cheshire ring race.

Thursday, May 03, 2007 4:46:11 PM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [11]  | 
# Wednesday, May 02, 2007

I can’t recall how I came across FreelanceSwitch because it was one of those links you see on a mailing list, open to read later and forget to read until a couple of days/weeks later, but nevertheless FreelanceSwitch is well worth a read as they have a tonne of massively useful advice and they seem to be adding stacks more!

Scott Wills also posted an interesting read on getting the price for your work right. This article on pricing your work, Scott briefly touches on how to set a base rate for your work but concentrates more on estimating your time etc so if you’re interested in calculating your price or calculating a base rate for your work, have a read of my article on pricing your work (see: Pricing Your Work) as I feel it covers calculating a base rate for your work in more detail. Scott's article can be found here: The Price is Right on FreelanceSwitch.

FreelanceSwitch also gave my article on business start up advice a shout the other day which was most flattering –I hope I’ve managed to pick up a few additional readers! Hello if you're new :). You can read the list of other useful links and see mine at: Linkswitch -a roundup of great links across the web 3.

The long and short of it is to keep an eye on the FreelanceSwitch website at: http://freelanceswitch.com/.

Wednesday, May 02, 2007 7:24:54 AM (GMT Daylight Time, UTC+01:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, March 23, 2007

As you're probably aware, at Christmas the Threshers Group put out a 40% discount voucher for the Threshers Group, well it would appear they’ve decided to do it again so I thought I should share it again, as before, the Threshers Group 40% Easter discount voucher can has a couple of T&Cs including no Champagne, Sparkling or Fortified Wine, other than that, it doesn’t appear to have the same £500 limit as before so drink up guys and girls!

Download the 40% Easter discount voucher for the Threshers Group

The voucher is valid until 1st April 2007

Remember: If you're looking for some naughty fun this Easter, check out the Miss Mays Adult Store for all sorts of adult toys and games

Friday, March 23, 2007 12:00:23 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, March 21, 2007

As part of my mini-series on Business start-up advice I posted a simple accounting database (see: Finances (VAT, Accountants etc)) but today I realised I had just uploaded the mdb which won't be served by IIS so I just wanted to let you know I've uploaded it as a zip (incase you were one of the people that tried to download it).

Example Microsoft Access Accounting Database (21KB)

Wednesday, March 21, 2007 8:27:16 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, March 19, 2007

I’ve done a number of posts now on Phil Whinstanley’s error reporting class and this blog appears to be getting a lot of hits because of that which is pretty neat, as a result I’ve had a couple of people write to me asking similar questions about the code so I thought it would be an idea to write a little summary.

Where can I download the code?

It would appear that most of the old copies of Phil’s code have disappeared from the web, I’m not sure why so I’ve uploaded the versions I’ve got below. For convenience I have compiled the code into DLLs for those that don’t know/want to do this and I’ve also included the Visual Studio solutions. I’m not sure if these are based on the original codebase but I don’t think I’ve made any major alterations to these versions:

1 This is a version I was sent as his original including changes and example email was lost...

DLLs only:

If you have Visual Studio:

If you don’t have Visual Studio you can either download one of the above projects and delete the solution/project files or download the original WebException code. Ok, now you have the files :) -FWIW I can accept no responsibility for any of the files or the code, I just zipped them!

How to do I use the WebException class?

I’m now using a slightly modified version of the code to enable error reporting within AJAX (see: Reporting errors from AJAX using the WebException Class) which I’ll try and upload later but whichever version of the code you choose the use is pretty much the same.

Once you have referenced the DLL in your project (see: Importing/Referencing DLLs in Visual Studio) you will be able to use the WebException. As I’ve covered what you need to do to use the code from within an AJAX application in another post (see: Reporting errors from AJAX using the WebException Class) I’ll just cover how to use it to report global errors. To capture and respond to all application errors you will need to place this code within the global.asax, your project should automatically have one, if it doesn’t then you will need to add one.

Using the global.asax file, the first thing you need to do is add a reference to the DLL at the top of your code (this will allow you to call the methods and access the properties):

<%@ Import Namespace="ErrorReporting" %>

Next locate the Application_Error event handler, this is the method that handles all errors within the application (with exception of those thrown from within an AJAX application, read this post to report errors from within an AJAX application). Now replace your Application_Error and Application_PreRequestHandlerExecute handlers with (for more information on what I'm doing here see: ASP.Net WebException and Error Reporting useful code):

void Application_Error(object sender, EventArgs e)
{
    bool reportErrors = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["SendErrors"]);

    if (reportErrors)
    {
        Exception currentError = Server.GetLastError();

        #region Deal with 404's

        //Redirect the user to a friendly page
        if(CheckForErrorType(currentError, "FileNotFound"))
            RedirectToFriendlyUrl("");

        #endregion
        #region Deal with Spambots

        if (CheckForErrorType(currentError, "System.FormatException"))
        {
            if (HttpContext.Current.Request.Form.Count > 0)
            {
                foreach (string key in HttpContext.Current.Request.Form)
                {
                    if (key.IndexOf("_VIEWSTATE") > 0 && HttpContext.Current.Request.Form[key].ToString().IndexOf("Content-Type") > 0)
                        return;
                }
            }
        }

        #endregion

        //Enable the trace for the duration of the error handling
        TraceContext t = HttpContext.Current.Trace;
        bool bCurrentState = t.IsEnabled;
        t.IsEnabled = true;

        #region Handle the Exception

        ErrorHandling.WebException WE = new ErrorHandling.WebException();
        WE.CurrentException = Server.GetLastError();
        WE.MailFrom = "you@yourdomain.com";
        WE.MailTo = "you@yourdomain.com";
        WE.MailAdmin = "you@yourdomain.com";
        WE.Site = "Your Site's Name or URL";
        WE.SmtpServer = "localhost";
        WE.FloodCount = 10;
        WE.FloodMins = 5;

        #endregion
        #region Choose what you're interested in

        WE.ReturnCache = true;
        WE.DrillDownInCache = true;
        WE.IncludeApplication = true;
        WE.IncludeBrowser = true;
        WE.IncludeEnvironmentVariables = true;
        WE.IncludeForm = true;
        WE.IncludeProcess = true;
        WE.IncludeQueryString = true;
        WE.IncludeRequestCookies = true;
        WE.IncludeRequestHeader = true;
        WE.IncludeResponseCookies = true;
        WE.IncludeServerVariables = true;
        WE.IncludeSession = true;
        WE.IncludeTrace = true;
        WE.IncludeVersions = true;
        WE.IncludeAuthentication = true;

        #endregion

        WE.Handle();

        //Return the trace to its original state
        t.IsEnabled = bCurrentState;

        //Redirect the user to a friendly page
        RedirectToFriendlyUrl("");
    }
}

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
    if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)
        ErrorReporting.SessionTracker.AddRequest("Pre Request Handler Execute"truetruefalse);
}

private bool CheckForErrorType(Exception ex, string errorText)
{
    if (ex != null)
    {
        //Check the exception
        if (ex.GetType().ToString().IndexOf(errorText) > 0)
            return true;
        else
            return CheckForErrorType(ex.InnerException, errorText);
    }
    else
    {
        return false;
    }
}

private void RedirectToFriendlyUrl(string Url)
{
    if (!String.IsNullOrEmpty(Url) && (Request.Url.Host.IndexOf("localhost") < 0))
        Response.Redirect(Url);
}

This will create a new instance of the WebException object, assign the various properties accordingly (you will need to configure these) and then finally handle the error.

That’s it! That’s all you really need to do to have super error reporting instantly installed in your application! If that wasn't enough it's overloaded with a couple of filters for you :). I recommend you read one of my previous posts I’ve added which overviews a few simple tips and tricks when using the WebException class to that improves on its functionality (see: ASP.Net WebException and Error Reporting useful code).

All that's left to do is to test it works (see below).

What should I get from it?

That’s the million dollar question! Once the WebException class has been added to your application you should receive an email every time the application throws an error (which of course means you’ll never get an email from the system!)

View an example of the email you’ll get with all outputs set to true.

More tips/Warnings!

Ok so it’s installed and you’re getting no errors through (because your codes perfect) but there are a couple of other little tweaks I would make to the WebException class to make it a little more useable.

Create a centralised class for it

A while ago I posted a set of “useful” tips for reducing the number of spambot related emails, redirecting the user etc (see: ASP.Net WebException and Error Reporting useful code). That’s fine until you start including the WebException class into multiple projects, managing tweaks to the codebase gets a little cumbersome (i.e. adding the spambot check to all our projects that use the WebException meant a couple of hours of copying and pasting). The work around for me was to wrap it all up into a central static method (see: Reporting errors from AJAX using the WebException Class). I did this rather than fiddling with Phil’s WebException class itself incase he ever got around to releasing another version which would mean a bunch of changes etc.

Limit the page request log

If you have a site where every user is likely to have a high page visit count with most of the pages involving some form of form submission then it may be worth limiting the number of request’s stored as we have found that without limiting these we start receiving very large emails (some topping 10MB).

The reason this is happening is because the session tracker logs all the form elements for the request so if you had i.e. a CMS that submits a page of content every other page request all that data will be stored in the tracker, sticking with the idea of a CMS, your typical text word is around 10bytes (see: How many bytes for...), so say the user writes 500 words per page (which isn’t really a lot) that’s 4.9Kb per form submission plus on the re-display of the page you've got ViewState... That’s just the data submitted by the user, around that, you’ve got all the form fields, field names, session info, query string etc, see how it starts to add up?

The solution is fairly straight forward, what you need to do is alter SessionTracker.cs1:

1I thought I'd done this in a project already but cannot find the source so this may not work.

public class SessionTracker
{
    public static void AddRequest(string Comments, bool DoForm, bool DoQueryString, bool DoCookies)
    {
        Request R = new Request();
        R.Time = DateTime.Now;
        R.Comments = Comments;
        
        if (System.Web.HttpContext.Current != null)
        {
            R.Path = System.Web.HttpContext.Current.Request.Path.ToString();
            if (System.Web.HttpContext.Current.Request.UrlReferrer != null)
            {
                R.Referrer = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
            }
            if (DoForm)
            {
                R.Form = System.Web.HttpContext.Current.Request.Form;
            }
            if (DoQueryString)
            {
                R.QueryString = System.Web.HttpContext.Current.Request.QueryString;
            }
            if (DoCookies)
            {
                R.Cookies = System.Web.HttpContext.Current.Request.Cookies;
            }
        }

        if (System.Web.HttpContext.Current.Session["RequestCollection"] != null)
        {
            RequestCollection RC = ((RequestCollection)System.Web.HttpContext.Current.Session["RequestCollection"]);
            RC.Add(R);
            if(RC.Count > 10)
                RC.RemoveAt(0);
            System.Web.HttpContext.Current.Session["RequestCollection"] = RC;
        }
        else
        {
            RequestCollection RC = new RequestCollection();
            RC.Add(R);
            System.Web.HttpContext.Current.Session["RequestCollection"] = RC;
        }
    }

    public static void AddRequest(string Comments)
    {
        Request R = new Request();
        R.Time = DateTime.Now;
        R.Comments = Comments;
        
        if (System.Web.HttpContext.Current != null)
        {
            R.Path = System.Web.HttpContext.Current.Request.Path.ToString();
            if (System.Web.HttpContext.Current.Request.UrlReferrer != null)
            {
                R.Referrer = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
            }
            R.Form = System.Web.HttpContext.Current.Request.Form;
            R.QueryString = System.Web.HttpContext.Current.Request.QueryString;
            R.Cookies = System.Web.HttpContext.Current.Request.Cookies;
        }

        if (System.Web.HttpContext.Current.Session["RequestCollection"] != null)
        {
            RequestCollection RC = ((RequestCollection)System.Web.HttpContext.Current.Session["RequestCollection"]);
            RC.Add(R);
            if (RC.Count > 10)
                RC.RemoveAt(0);
            System.Web.HttpContext.Current.Session["RequestCollection"] = RC;
        }
        else
        {
            RequestCollection RC = new RequestCollection();
            RC.Add(R);
            System.Web.HttpContext.Current.Session["RequestCollection"] = RC;
        }
    }

    public static void AddRequest()
    {
        Request R = new Request();
        R.Time = DateTime.Now;
        
        if (System.Web.HttpContext.Current.Session["RequestCollection"] == null)
        {
            RequestCollection RC = ((RequestCollection)System.Web.HttpContext.Current.Session["RequestCollection"]);
            RC.Add(R);
            if (RC.Count > 10)
                RC.RemoveAt(0);
            System.Web.HttpContext.Current.Session["RequestCollection"] = RC;
        }
        else
        {
            RequestCollection RC = new RequestCollection();
            RC.Add(R);
            System.Web.HttpContext.Current.Session["RequestCollection"] = RC;
        }
    }

    public SessionTracker()
    {
    }
}

Outputting the Trace with the WebException Class

I know this is something I’ve posted about in the past but since moving to version 4 of the code and .Net 2.0 I was no longer getting the trace in my lovely error reports, after a little digging I’ve found a solution, in addition to the code that I posted earlier about enabling the trace using C#, the web.config needs to be set as follows:

<trace enabled="true" requestLimit="100" pageOutput="false" traceMode="SortByTime" localOnly="true" />

Storing the WebException code in App_Code Dir

If you use the WebException class in an ASP.Net 2.0 site, be careful you don’t do what we did and throw the site online uncompiled with a compilation error as it won’t get reported. Luckily I found this issue on a test site but it’s still worth noting.

Personally I wouldn’t put the error reporting code in the App_Code directory as this means you’ll end up needing to maintain a plethora of files throughout various projects. Instead compile a separate DLL and include that in your projects, then if like me you find a nice addition to the error reporting code you can easily update all sites to the latest version!

Setup a simple generic test page

Nothing fancy, just a button that throws an exception will do:

TestErrorPage.aspx

<%@ Page Language="C#" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected void btnError_Click(object sender, EventArgs e)
    {
        throw new ArgumentException("Test Error");
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Test Error Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <p><asp:Button runat="server" ID="btnError" Text="Throw Error" OnClick="btnError_Click" /></p>
    </div>
    </form>
</body>
</html>

Happy Error Reporting :) -I'm hoping this is the last time I need to blog about this code but what's the betting another post is around the corner ;)

Monday, March 19, 2007 7:34:20 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [2]  | 
# Friday, March 16, 2007

I recently released a mini-series of articles with a load of great business start-up advice (also available to download as a PDF) in which I talk about how the government is really going the extra mile for SMEs at the moment, helping them out in a load of different ways -really trying to encourage entrepreneurship within the United Kingdom. This was something I believed until I got my tax bill.

The deadline for your self-assessment tax return is fast approaching and the government kindly sends you an invoice for your last tax return, mine arrived just before Christmas and to my surprise it was 50% more than I submitted. Seeing as I was off to Cornwall I decided I would deal with it on my return.

I've never had an issue with paying tax, in fact I've always been proud of the fact that I've needed to pay tax, my logic is simple: if I need to pay tax, it means I'm earning! The more tax I pay, the more I've earned. See my logic?

In the past, through claiming back expenses etc my tax bills have always been relatively small and although I seem to recall something called “Payment on account”, but it was IIRC an optional payment so next year the amount you have to pay is smaller. This is a good idea. As a small business owner I do put money aside for my tax bill but that’s always been 25% of each invoice. So what’s my issue?

To me, payment on account seems like a half-arsed attempt by the government to help self-employed people out, while getting a couple more quid in the process, the issue however is I feel they’ve focused more on taking more money than helping out the self-employed people. The idea is simple: You submit your tax bill for the previous tax year, they take an additional payment (payment on account) which will go towards the next tax year, this payment is estimated on their data for you -in this case your tax bill. The first payment is due with your current tax bill, the second in July of the current tax year. Thus splitting the next year’s tax bill into two more manageable payments. -Bollocks does it. Please excuse my French but this is not at all thought out and this is why:

I would consider myself to be one of the more sensible self-employed people when it comes to saving for tax, admittedly the first couple of years I was in business I paid the tax bill with a project we had on at the time but now I do put money aside for it with every invoice (now 50% of every invoice inc VAT goes aside). So come tax return time I have a nice chunk of cash to pay for my tax bill (always more than it needs to be because of expenses etc). I then follow the governments recommendation and fill out my self-assessment tax return online in plenty of time -a word of warning, I live with a chartered accountant who helps me out with this, it’s not something I just do on my own ;). In January I have the invoice for the bill and I pay it out of my savings, anything left I can use as I wish. All good so far! As far as the government is concerned I have followed what they’re recommending and that should be it. Payment on account however throws this into turmoil. What the government IMHO neglects to tell you is that you’re going to have to pay 50% more than you’re expecting in the first year you go over their threshold.

What I don’t like about that is they’re encouraging a lot of self-employed people to complete their own return online (best to do this with an accountant really) and save for their bill but by not telling you about this additional payment they can in theory put someone out of business over night -and there’s nothing you can do about it. Take the average self-employed business owner with a turnover of £50,000. Assuming no expenses you should expect to walk away with around £38,300 (using rough maths). Cool, so you’re good and put £11,700 into savings in preparation and use the rest to pay the bills, buy a holiday, a car etc.

You think all’s dandy until at the end of the year you get a tax bill for £17,550 with a further payment of £5,850 being required in July. That leaves you with £26,600 remaining rather than the initial £38,300 you were expecting. Why? That’s simple -payment on account, the tax office say "Well, you earned £50,000 this year, so you’ll do that next year so we’ll take that money from you now, that way next year you’ll already have some money on account -helping you out. Don’t worry though, if your tax bill for next year is lower, we’ll refund the money." -there are so many issues to this statement but I’ll come back to those.

I've made a graph demonstrating the two differences. The light red segment is the amount you will need to pay in the July following your January tax payment, the dark red section must be paid in addition to your main tax bill.

Comparison between the expected tax bill and actual tax bill

Take my industry -the IT industry. It’s not unknown (or an infrequent occurrence) to have a large project (i.e. £100,000) which you can complete within a financial year. If you're already working in the sector and this £100,000 contract is your reason for going it alone this could be a serious issue for you. Ignoring how you take this money, by the end of a single fiscal year you take £100,000:

  • Turnover:£100,000
  • Tax Allowance:£5,000
  • Taxable Income:£95,000
  • Tax at 22%:£7,700
  • Tax at 40%:£24,000
  • Expected Tax Bill:£31,700
  • Expected to you:£68,300

In the event you’ve taken £100,000 for a project you’re likely to spend a fair amount of that on things like credit cards, niceties after having gone without for a while etc, so you spend a fair whack, perhaps put a chunk on your mortgage, buy a house or invest a fair chunk. Say you get the payment a couple of months before the tax year ends so you take the time off and relax a little, basically using a fair amount of the money, but you’re ok as you’ve put £32,000 into savings in preparation for your tax bill. When it comes to filing time however you’re told that you owe them an additional £15,850 with your current tax bill followed by another payment of £15,850 in July. Starting to see where my issue lies?

If you didn’t spend anymore of that £68,300 than you absolutely had to and some how had the additional £31,700 available you’re fine, but what if you decided to treat someone special, or invest the money where it’s not readily accessible, what can you do? I called the tax office to talk it through with them as I didn’t want to pay this payment on account as it would mean that things would be a little tight until the end of a current system development. The representative had absolutely no concern or understanding for my situation, when I asked her if I could spread the payments a little I was told that interest would be charged on the money if I didn’t pay it and a fine would be incurred. Furthermore she told me that this payment on account was ok because it was tax on money we had already earned (the payment on account is in theory for the current fiscal year), I did think about pointing out that a business’ earnings are not the same as a worker’s salary as they are frequently sporadic and go through highs and lows -in the case of The Site Doctor, the majority of our year’s income comes in during the final fiscal quarter.

There were a couple of things I didn’t like about the representatives statement/government’s perceived understanding of the situation:

  1. Great they are trying to help you out with your business -hopefully making the next tax year’s tax bill a smaller payment (or not at all if you think about the logic) but how does making it a forced payment without making it very well known about help?
  2. It assumes that your business’ monthly turnover is the same as an employee in that your entire year’s earnings are the same (or similar) each month with no seasonal fluctuations. I know there are some more established businesses which do have a regular income but The Site Doctor certainly doesn’t. As already mentioned, The Site Doctor has the majority of the year’s earnings paid in the final fiscal quarter -after you have to pay your tax bill!
  3. They say they’ll refund the money if your next bill is lower than the last so it’s ok. But taking the example of the £50,000 turnover above, that’s a years worth of interest on £11,700 you’ve just lost potential interest of £936 or £2,536 in the example of our £100,000 contract. Can you afford to loose out on that?
  4. This can in theory put someone out of business, as it happened, I had to pay this bill mid contract when normally I wouldn’t have had any money for a fair while, to make things worse Stacey was having a short sabbatical. Luckily we had the money in savings but if we didn’t we would have without a doubt found it hard to pay.

The solution?

I don’t like bitching and moaning about things without having some form of solution and I can understand that the government wants to get this cash into the bank and after the first year or two it makes things better for them but for goodness sake make the payment optional, perhaps offer a monthly payment option without penalties or at least inform people about this so they can make provisions for it. Had I not found this out before this tax year I would be in serious trouble. Of course, having a tax specialist do your books should have highlighted this for you -and it goes to show that just because they’re an accountant, if they’re not a specialist they may not know about something that can break the bank (I’ve got no blame for Stacey before you wonder!).

Note: These figures are derived from my own experience so please take professional advice on the matter as for all I know, there may be a sliding scale (I would hope there is) otherwise the government is killing businesses left right and centre. I’d be interested to know if anyone else knew of/has experienced this issue.

Friday, March 16, 2007 1:28:52 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, March 13, 2007

Get your finger on the pulse of your site with this great new (free) RSS statistics servicePulseRSS”. I met the developers of PulseRSS the other day at my first Multipack meet (West Midlands based new media meet) which, if you’re nearby you should check out in the future as they’re a lovely bunch of guys (and girls apparently but they were no-where to be seen on Saturday).

Back to PulseRSS! As already mentioned, PulseRSS is a statistics service via an RSS/XML feed that works in a very similar way to Google Analytics but unlike Google Analytics, they’ve followed the principle of KISS which I think works really well, the interface is simple and easy to use and have I already mentioned it was free?

So if you’re looking for a simple free statistics package then check out PulseRSS –I’ve got it running on my blog already so it’ll be interesting to see how the stats compare to Google Analytics...

Pulse Logo

Tuesday, March 13, 2007 10:45:25 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, February 16, 2007

I’m still somewhat shocked at how well the series on business start up advice was received, I was expecting one or two hits on it but so far I’ve had over 1,000 visits to the article which is pretty shocking as this blog in its entirety was only getting that a year(ish)! I’ve also had some fantastic feedback which is very touching so those of you who have got in touch thanks!

Ok, following the posting of my recent business start up advice mini series I was asked by a number of people to post it as a PDF which I’ve finally managed to do. It’s rather long I’m afraid weighing in at around 26 pages so it should keep you busy giving me time to write the additional articles!

Download the PDF version of the complete business start up advice article here (27 printed pages including a 1 page feedback form - 189KB).

Friday, February 16, 2007 6:54:35 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [2]  | 
# Tuesday, February 06, 2007

What an awesome event, I was originally in two minds about going to the latest conference installment from Phil Winstanley, Dave Sussman (and all the other dedicated people involved with the other DDD events) but boy am I glad I went.

This time I decided to take it to the next level and rather than driving down and back on the day I’d drive down the night before with Stacey and stay over in a local hotel. This worked really well, not only did it mean I was awake for all of the seminars but I could get some work down the next day too ;)

Anyhow, back to the day, for once I had the foresight to choose the seminars I was going to attend before I arrived and decided not to attend all of Scott Guthrie’s talks mainly because of the following I knew he’d have but also because of the great alternatives available so here’s my breakdown of who I went to see and what I thought of their talk:

Microformats - HTML to API (Glenn Jones)

Read Glenn Jones' blog post about the day

GlenN Jones (not Glen Jones as was listed in the schedule ;)) presented a very interesting talk on microformats, it’s not quite what I first thought it was (for some reason I thought it was some form of HTML applets but lets not go there!). Microformats are certainly something I’m going to look into in the future but as Julian Voelcker has pointed out quite how practical they are to use in a CMS situation I’m not sure.

I think from an SEO point of view and also from an information sharing POV they’re very interesting and I’ll certainly be integrating them into various sites for testing purposes sooner rather than later (in fact if you check out my about me page they’ll be there with the new update coming soon … now I just need to re-work my tag output* using IISMods' URLRewrite).

*Glenn pointed out that  when using the rel=”tag” attribute the last “word” in the associated URL should be the tag itself -something I didn’t know but will be sorted as atm it’s along the lines of “CategoryView,category,Business,Business%20Start-up%20Advice.aspx” etc which isn’t very useful.

I think in principle microformats are a good idea for something like a blog or a semi-static site where the developer (or someone with knowledge of microformats) has control over the content but how you could role them out in a client managed site is a little more complicated and something that will need some more thought -do you offer buttons to insert the code markup for them? Can you offer nested content easily etc.

The other thing about them I’m not too sure about is (miss)use of the abbr tag -again that was only something I picked up in the talk so may have missed the point, I’ll need to look into it further.

Either way it was an interesting insight into a new concept that I’m going to support if I can :). Check out the main microformats site at: www.microformats.org

Glenn Jones is also the developer behind the back network site that was used to link all the delegates together, it’s an interesting concept that once again promotes a social network on the internet which is all the rage at the moment but also allows you to interact with other delegates before the event -this is something I’d have done had I had more time before the event!

Download the slides to the Microformats - HTML to API talk by Glenn Jones

Web Accessibility: What, Why, How, and Who Cares? (Bruce Lawson)

Read Bruce Lawson's blog post about the day

Making web sites accessible is something I’ve been interested in pretty much since I got involved with ASP.Net 1.1 and I get endlessly tired of hearing fellow ASP.Net developers complain that you can’t make web sites accessible using the ASP.Net platform -balls can’t you, ok it’s not something that comes out of the box and at times is a little awkward but a lot of it is just common sense and consideration.

Bruce Lawson’s talk was a breath of fresh air, it was great to see someone having the courage that I’m yet to muster (well, more the time but hey) to convince my fellow developers to make their sites accessible.

Why the hell shouldn’t your site be accessible to all? It’s not all about money, in my mind it’s just about being fair to others -following (as ever) Google’s moto of don’t be evil. I liked Bruce’s method of presentation as it was far more personal than the usual “you should care because it’s the law” or “you should care because you’re missing out on a ton of money”, when asking the question “who cares?” -using his words not mine- he said “rather than quoting facts and figures at you trying to convince you, -my mate Theresa does”. I think this in itself was a different method of engaging the audience and I certainly felt it worked.

The talk wasn’t particularly in depth (which baring in mind the audience I expected) but I felt it was enough to plant the seed of interest with those that weren’t otherwise that aware or interested about accessibility. I hope that they’ll now actively encourage fellow developers to take action -not necessarily by redeveloping their past sites as many clients can’t afford this, but by giving some consideration to accessibility in future designs -i.e. DON’T use buttons for menu systems!

I can’t hand on heart say all our sites are overly accessible but I’m learning and I feel each new site we’re involved in is that little bit more accessible. Bruce did share a very useful site called “Blind Webbers” where you can get in contact with screen reader users -I’ll certainly be checking that out with the new design for The Site Doctor, for others interested Bruce sent me the link: http://www.webaim.org/discussion/mail_message.php?id=9019. I’m thinking I’ll see what they think of Miss Mays adult store -could be a good introduction!!

The point that made me laugh the most was his demonstration of using “Click Here” as link text, his demo was simple but effective -you can check it out on his site: http://www.brucelawson.co.uk/index.php/2007/webdd-conference-slides-and-questions

One thing I do need to think about is the order of elements on the page, i.e. at present this blog layout has the menu appearing before the content -mainly because that was the quickest way I could get the layout sorted, but I think I need to re-order it so the menu comes last -that said I do have a “Skip to content” link at the top -how effective it is I’ll let you know. Another thing I also want to pass by Bruce is image replacement techniques as I’ve tried a few now and I’d be interested to see how they perform on screen readers and the like.

Download the slides for the Web Accessibility: What, Why, How, and Who Cares? talk by Bruce Lawson

Quick and dirty Usability tests - one week, no budget, and no usability facility (Zhivko Dimitrov)

Read Zhivko Dimitrov's blog post about the day

Again, interested in making my sites as user friendly as possible I thought that this would be an interesting talk but it wasn’t quite as it was portrayed -instead he went into how they perform remote usability tests with a budget. None the less it was a fairly interesting talk.

Zhivko is from Telerik and clearly has a fair amount of experience in usability testing, I was hoping he’d have some good ideas on how to offer usability testing on no budget but sadly he didn’t. There were a couple of interesting points raised however that I don’t think I would have thought of -firstly the re-use of testers, if you use a tester more than twice within a year they’ll start to know what you want them to say rather than what’s there. The other point raised was if you’re using remote testing, you loose the non-vocal indicators of frustration such as a furrowed brow or someone scratching their head.

Zhivko’s opening demo however was a recording of a guy trying to find a grid component on their competitors site, despite the fact they spent a fair amount of time laughing at the guy in the background I thought this was a great example of a poorly designed site and how important it is to highlight your site’s calls-to-action which is something that I’ll have to remember while optimizing our newest SEO client for online poker The Rivercard -one of the issues we have already highlighted is that many of their download links are below the fold of the screen which reduces the chance the user will click the link.

Download the slides from the Quick and dirty Usability tests - one week, no budget, and no usability facility talk by Zhivko Dimitrov

Connecting Design to Real Business Value (Brandon Schauer)

Visit Brandon Schauer's blog

As with Zhivko’s talk, this was another talk that wasn’t quite as it was portrayed by the title, but I was pleasantly surprised by the content. Brandon Schauer’s talk was more about business modeling and how analyzing the current business method can be improved with a little thinking (and design) -ok that’s obvious ;) but his methods were nice.

I found the talk incredibly interesting -especially following my mini-series on business start-up advice, I thought this was a really well timed and interesting talk. Some of the ideas he offered were simple and to the point so you can apply them to any business, the issue I have with it though is whether I can apply it to any of my clients -I’d love to take the time to go through Miss Mays adult store and help them improve some of their business processes but they don’t have the money to invest and sadly neither do I.

I do however think that I can apply some of the concepts he was talking about to an example business which in turn could then be a starting point to discuss business improvement with clients. This however will take a little time and I think Stacey will need to be involved as this is what she’s primarily trained in. Although I love developing and I don’t think I’ll ever get away from it (certainly not in the foreseeable future anyways) I am getting more and more interested in business analysis, it’s not something that I’ve really got any experience in yet (having only been in business for a few years) but perhaps one day it’s an alternative career path I can choose…

Either way, Brandon’s talk was well worth seeing and if he’s ever at a future conference I attend I’ll certainly make the effort to see him talk.

Download the slids from the Connecting Design to Real Business Value talk by Brandon Schauer

WPF/E (Scott Guthrie)

Visit Scott Guthrie's blog

For the final talk I decided to watch Scott Guthrie’s talk about WPF/E and boy what a talk it was! I almost didn’t get in as we were hearded in like cows (which was most amusing I have to be honest), the woman stopped me right on the entrance -I think much to Julian Voelcker’s delight as he’d managed to get a seat. Luckily though the women on the doors (yes women -not burly bouncers!) took pity on us poor, desperate geeks in admiration of some Yank they didn’t know and let us line the sides of the auditorium -which meant I ended up getting a front row (floor) seat.

The talk was one of those “look at what’s coming” type talks but with a twist, it was something that I can see being of real use -and more than that gave you the urge to try it out. WPF/E looks like a really exciting new technology -even if Julian does think it’s just the same as Flash. As I don’t particularly like flash I think this will be a nice introduction to our development arsenal. That and the possibilities are far greater than those offered by Flash -especially where data interaction is involved.

Scott Guthrie did show an impressive demo of WPF/E which can be seen at www.vista.si -it’s one of those “wow, I can’t believe I’m seeing what I’m seeing” moments, the site is basically a replica (working replica) of Windows Vista -but on the web. It even works with Firefox!

The interesting point that I picked up on is their method of rolling out the WPF/E platform to users, rather than offering the usual Windows Update installer, it sounds as though it’s all going to be done in the same way the flash play is -a small (1.1MB IIRC) file will be downloaded the first time you visit a site that requires WPF/E and that’s it!

I do have concerns over the accessibility of WPF/E but Scott Guthrie did assure us that later versions of WPF/E will be made more accessible. At the end of the day however, I guess it’s just the same situation as entirely flash sites -those that want to offer them, have to offer an accessible alternative (and as Bruce Lawson pointed out -NO, IT DOESN’T HAVE TO BE UGLY!).

It was also nice to see Scott Guthrie talk as there are so many blog posts around the net talking about how they saw him, now I can say that I’ve seen him talk -somewhat sad but hey!

The slides aren’t yet online but I’m sure Scott Guthrie will upload them to the Scott Guthrie's presentations page soon enough!

In summary

I always take a conference as a whole -there’s always going to be at least one talk which isn’t quite what you expected, if you can come away with at least one nugget of information that you didn’t have before -or- with a little of that zest for doing what you do back again it was well worth attending. In this case I got a real buzz out of most of the talks and have plenty of things to try out -now I just need to find the time!

And if all that wasn’t enough to get your juices going and wanting to do some more development, I (I think for the first time ever) won something in the raffle -I was in the queue hoping for the book on accessibility by Bruce Lawson but actually won a years subscription to ComponentArt’s Web.UI component set -I’m well chuffed at that, now I just need to find somewhere to use them!! Oh, I shouldn't forget the free copy of Microsoft Expression Web we were given, and the T-Shirts and, and... :D

I did get to meet up with a few people off the MsWebDev list but sadly not all -Mickey, I’ll have to say hi next time. The one thing that did amaze me was how long the lunch was, I don’t recall any of the DDD events being that long.

If you went and you’ve not already done so, you should go and leave feedback on the event -it’s the only way they can improve it ;) so go leave your feedback on WebDD (http://webdd.co.uk/Feedback.aspx). Apparently you can also review it on the back network site (http://webdd.backnetwork.com/reviews/editreview.aspx

If you missed out on WebDD 1, hopefully there’ll be a WebDD 2, I’ll post any news I have as soon as I have it -for my one blog reader that is :)

Tuesday, February 06, 2007 12:00:26 PM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Sunday, February 04, 2007

Billing

This is something that we’re in the process of re-working as we have a variety of billing periods ranging from ad-hoc to annual. This is fine as long as you have some method of determining which method a client requires.

Stacey has devised a very good suggestion that should also avoid any complications with large annual invoices:

  • £0 - £300: Invoice Annually
  • £300 - £600: Invoice Bi-Annually
  • £600+: Invoice Monthly (£50+pm)

There are a few reasons I like this method:

  1. You won’t upset your client by sending them a £500 invoice they’d forgotten about
  2. It keeps you in contact with larger payers more frequently
  3. For the larger invoices it reduces the impact to you if the client chooses not to pay
  4. £50pm+ is sufficient an amount to justify the 10 minutes admin a month

Payment periods are important, make sure every invoice has a payment period on it but don’t expect your clients to adhere to it. You’ll learn what each particular client is like at paying as you build your client base but many will wait until the last payment date to pay, if at all until you start to bug them (see: Processes and Procedures about having a dedicated admin day). Having a shorter payment period (or “Payment Required on Receipt”) will allow you to start chasing the client sooner.

What should your invoice look like?

There are a lot of example invoices on Microsoft’s Template website [http://office.microsoft.com/templates/] but it’s simple, keep them simple (this is a nice example: Services invoice with hours and rate) and only contain the information you need. Have your designer design you a nice letterhead that you can use with your invoices, not only does it look more professional but it ensures your main contact details are contained on the invoice, if your letterhead is a little different you never know, they may pay it faster as it catches their eye!

Again it depends on your particular line of business but I would suggest you have the following information on it at the minimum:

  • If the invoice isn't on your letterhead paper then make sure your address is shown
  • Their address –and if it’s a corporate client include a contact’s name to ensure it lands on the correct desk
  • An invoice reference (an auto-number should suffice but you could prefix this if you like)
  • If you have it, the purchase order number
  • The date your invoice was issued
  • The payment due date
  • A summary of the items included on the invoice including:
    • An SKU (if relevant) i.e. 1HOURDEV for 1 hour of development work
    • A narrative (description) of the item
    • Unit cost of the item
    • Quantity of the item
    • Line total
  • Total amounts –if you’re VAT registered, include the amount with VAT, without VAT and the VAT itself
  • Your payment terms (i.e. all invoices must be paid within 14 days)
  • You payment details –sounds crazy but I see so many invoices without bank details or even information on who to make the cheque out to anywhere. It’s so simple to place this information on the bottom of the invoice, why make it harder than it needs to be for your client to pay you? If it’s not there, they need to make contact with you (if you’re around), you then need to look up that information, they then… ok you get the idea ;)

It’s obviously optional and up to you but I think it’s nice touch to thank the client for their business on or with i.e. on a complimentary slip the invoice (see: Client and Supplier Relations) –yes, I love my clients!

Accounting

I’m not an accountant myself but my (far) better half Stacey is a chartered management accountant with CIMA (an alternative to ACCA) and I ran this past her as I had concerns with it. Her response was rather than obtaining (expensive) textbooks that you’re unlikely to understand (I’ve seen them, I can understand them but they’re somewhat boring) the best thing you can do is read through the documentation from the Inland Revenue –mainly because as soon as that textbook is printed it’s out of date which can (obviously) have massive re-processions for you!

There are many different accounting bodies and they all have their own specialities. It’s important to understand that a Chartered Management Accountant can’t necessarily help you with your tax return, in the same way a taxation specialist can’t necessarily help you with profitability analysis (whereas a Management Accountant can). One amusing ditty about Chartered Accountants (and I expect this covers other industries with multiple bodies) is that they all feel their chartering body is the most superior whereas they’re probably all much the same.

It’s important to remember that it’s the same as your industry, it’s great that the client knows what you’re talking about but it’s highly unlikely they know as much as you.

Again from Stacey, any accountant worth their money will save you more than they cost you, as with many things in business –recommendation is key, ask around friends and family or fellow businesses to find a reputable accountant and if at all possible get a few references.

There are many accounting bodies out there (CIMA, ACCA, CIPFA to mention a few) but make sure when choosing your accountant that they are chartered in some way or another as this means they’re more likely to be up-to-date with their knowledge and to some extent being regulated. When you’re setting out, you should be able to have all your books done for under £500pa comfortably.

VAT

Should you go VAT registered or not?

When setting up The Site Doctor, I chose not to go VAT registered on the basis that the majority of our start-up contracts would be non-VAT registered companies. As it turns out I was wrong as every man and his dog these days is VAT registered but more than that I feel that many businesses perceive non-VAT reg'd companies more fly-by-night.

Most people (especially in business) expect companies to be VAT registered so it hasn't affected potential contracts and we have the added advantage that we can claim money back ;). Sadly, the only people that suffer are non-registered people and at the end of the day they're unlikely to have the money to justify you not going VAT registered.

One thing to note if you’re setting up as a team is there is a limit on the turnover of the company at which point you are forced to be registered, this year (06/07) the limit was around £65k (refer to the Inland Revenue’s website [http://www.hmrc.gov.uk/]) so if there’s 3 of you in the team and you hope to take home £20kpa you’ll need to go registered straight away.

You don’t need to be over the threshold to be registered as you can voluntarily register before you reach this threshold. There are a couple of benefits to voluntary registration that come to mind:

  • The perception of your company’s earnings is increased. When not registered, your clients will know you have a turnover lower than the current threshold. This is not a good start when approaching clients with a proposal near over this threshold.
  • By charging input tax to your clients, you can claim some money back, virtually ever purchase you make has VAT added to it which you can offset on your charges.

One flipside however is the additional administration work.

Once VAT registered

Yes, a great tip and this is so easy to do if you've got access to internet banking through your bank, it also means you have a nice nest egg at the end of each year as Sean said -I did the same with my personal tax before going VAT registered.

In the case of LloydsTSB they allow you to manage both accounts within the single login which makes it even easier, if you want to be really prepared, just halve each invoice, put one half in your savings account to cover VAT and Taxes etc and the other half is what you take home.

Having a little money totting up on the side in this way allows you to have either: A nice little Christmas bonus (by this time you should know what your tax bill is going to be and you’ll have a reasonable idea of your Quarter 3 VAT return) -or- A tidy sum to invest into the business someway :)

We recently registered for VAT and the official stance on claiming VAT back was:

3 years on goods (hardware etc) as long as on the day of incorporation you still have the item, receipt and you've not sold it on.

6 months of services (hosting, domains etc) as long as you have the paperwork.

I was told that the Inland Revenue think nothing of start-ups and businesses in the IT sector to have a very low (or credit) first return (and if you're going registered from day one then the first few returns) due to the cost of setting up.

For the latest up-to-date information check out the Inland Revenue’s website: http://www.hmrc.gov.uk/

I couldn’t agree more, when you’re small, set aside a day a week to input your expenses into a database and as long as you’ve got your invoice lists to hand totalling up your income isn’t hard, the form’s dead simple (see photo) so there’s no need to worry about that. I’ve even uploaded the MDB that we’re currently using as a stand-in while our accounting system is finalised.

  • Front page of a VAT Return
  • Rear page of a VAT Return

While on the subject, in-house system development –choose it carefully, weigh up the costs of doing it yourself against buying an off-the-shelf solution. As a developer it’s all to easy to say “I’ll do it myself and save a few quid” –it’s not always the case, I’m only having ours custom built so I can tie it in with other areas of the business.

Example Microsoft Access Accounting Database (21KB)

Banking

Whatever you do, make sure you have a separate business account, it portrays a more professional image for your company (payments to your company will be addressed to your company name rather than your personal name).

Keeping up a pension is important, talk to your accountant about the options available to you. It’s also worth considering alternative pensions such as property investment. I know a few business owners that own the property the business operates within.

That’s a fine tip, using a personal account for your company savings can indeed earn you an extra 3-4%pa which soon adds up. Make sure however it’s a separate personal account that you don’t tap into and don’t top-up with personal funds. That way you’ll make life a whole lot easier when calculating the business’ income from interest.

LloydsTSB also offer an e-banking option which is exactly the same as all other accounts except electronic payments (debit cards, e-pay etc) are free, paying in cheques however still costs (and a little more IIRC). It’s a good account to have if you’re web savy and can do the majority of your banking online.

Good point, the banks love you when you’re doing well however expect to be charged for your overdraft –many banks now charge a (reoccurring) annual charge of £50-100 for your overdraft facility, it may be a better (and cheaper) option to loan the business from your credit card if needed –taking advantage of the 0% period etc.

Sunday, February 04, 2007 8:58:09 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Saturday, February 03, 2007

Call me a sceptic if you like but once you’ve been in business for a while there are two common elements to pretty much every new client:

  1. Every client’s idea is going to be the next big thing (in their eyes anyway).
  2. Every client has so many contacts that they’ll generate you more business than you can possibly handle

Both statements are usually used to encourage you to give them a bigger discount or agree to some form of partnership. I’m not saying you should immediately dismiss what they’re saying, the best business comes off personal referral from a past client but instead take it with a pinch of salt.

Don’t feel that you need to agree to any partnership etc on the spot, go home, have a drink and then weigh up whether you feel what they’re saying can be backed by what you see or whether it’s likely to be a load of baloney. You really should look at every client as a long term relationship rather than a one-off squeeze.

While on the subject of investment partnerships with clients I think in the right situation they are a superb idea. Since setting up The Site Doctor we’ve setup a number of investment partnerships with our clients which have in some cases been very profitable, others not so. The trick is to form your own opinion, if the client suggests you do all your work for free and they’ll invest their time, ask yourself why they don’t have faith in their own idea to invest any capital. Sometimes they don’t have the capital ready and it’s a great idea, sometimes the investments can be quantified equally through doing this just don’t let them talk you into something your gut says is wrong.

What I tend to suggest in the case that they can’t raise the full amount for your services is suggest a part share, part capital payment but again you must decide how much the shares are worth. It does take a little time to investigate someone else’s proposed business but you’ll be kicking yourself if you don’t!

Once you decided whether or not to invest your time and you’ve negotiated the best deal you possibly can make sure you get it down in writing. This is very important and we’ve been caught out with this in the past. We had a client who suggested a 15% turnover share for the first year to cover 50% of the development costs. We negotiated over email and had the agreement written down, where we were caught out however was with a misunderstanding on our behalf –we assumed that we would get 12 monthly commission payments but what wasn’t clarified was the client offered the first month of subscription free –so straight away we were down to 11 months. Then thanks to WorldPay, the first payment wasn’t received until 2 months after the customer paid which meant we only received 10 months of payments –luckily we’ve got good relations with the client and it was resolved amicably.

So if you’re going to go into an investment like this, make sure all the cards are on the table otherwise you may not be as lucky as we were! Before finishing this point, I personally wouldn’t agree to a profit share on the investment without having a breakdown of all the expenses otherwise an unscrupulous client may over-inflate the expenses and so reduce your share.

Having a portfolio is a great start, depending on your industry this may not be possible. If you’re starting out and have no portfolio (and have time) then why not generate a few mock-ups of your work, don’t spend too long generating them and they don’t need to be perfect working examples but people do tend to respond better to something they can touch/see.

Networking

The classic phrase of “it’s not what you know –it’s who you know that matters” couldn’t be truer. When I setup The Site Doctor I was lucky to have some excellent contracts through a good friend Vladimir Srdanovic, though previously a developer he felt that he no-longer wished to develop but instead just generate new business. I was keen and ready to develop on a mass scale so teaming up made sense.

If you’re not lucky enough to have someone like Vlad within your midst already then networking is an ideal way to generate new business and as you grow will become invaluable, whatever hang-ups you may have (age, gender etc) don’t let them come into the equation.

Your local Chamber of Commerce will most likely host events, the fee depends on your local Chamber of Commerce, but the Birmingham Chamber of Commerce for example charges an annual fee, after which the majority of events are free to attend. We were a member of Birmingham Chamber of Commerce for a couple of years however last year we opted out because of the mentality within our local chamber. On reflection I would probably opt to try more dedicated events such as those run by dedicated networking companies but be prepared to pay through the nose.

Don’t forget that networking isn’t just about making useful contacts to sell to, it’s also a chance for you to meet your competition and other people involved in your industry. I’ve been meaning to find time to setup a new media type networking group up in the Midlands for a while but I believe the Multipack [http://www.multipack.co.uk/] does pretty much the same thing as I was proposing.

Meeting your competition and others involved in your industry is also useful because they may be able to throw you work that they’re not able to undertake for themselves, for instance you’ll find many design agencies have a mutual agreement with a development company in place by which they pass web development work to their partner and vice-versa.

It’s also worth noting that networking is no-longer just a face-face meeting event thanks to online networking sites such as SoFlow and LinkedIn to mention a couple, getting involved in these online communities may not generate any business directly but will again give you the opportunity to promote your business.

As time goes by, you’ll be surprised where your business will come from –always be pleasant to people and whenever possible have time for people as they’re bound to thank you in one way or another later. It’s always worth thinking long-term with any new contact, they may not contact you straight away but get in touch from time to time and you never know what may come of it.

When you’re at a networking event –in fact anytime you could bump into a potential client make sure you have plenty of business cards available with you. The best thing you can do to save fumbling through every pocket trying to find a card is to have 5-10 cards in each pocket (yes EVERY pocket!). That way no matter which hand you reach with you’ll quickly find a card. For those times you’re not expecting, keep a few cards in your wallet too or perhaps attached to the back of your phone* -basically with anything you take with you everywhere. Keep the supply refreshed too, I’ve been caught out before and you may just miss a great opportunity!

*I’ve not tried this but it’s a thought!

“Keep your hands free” -that was something I was told by a networking advisor and has always stuck with me and it makes sense, they always have a lot of free food/drink at these networking events so avoid the rookie mistake of piling a plate high of food and taking a glass of wine in the other hand –how will shake hands on introduction? Have a small plate of food and/or a glass of wine* –it keeps at least one hand free to shake hands with or hand out business cards!

*Some events shell out on fancy clips that hold the glass on the side of your plate but don’t get me started on those! Just don’t try is the best advice I can offer there ;)

Fantastic tip! This is something that we do but haven’t pushed a great deal –a while ago, The Site Doctor teamed up with a Bristol based Mobile Development company called Mobile Pie, I grew up with one of the owners Richard Wilson while at school and felt that his services complimented ours. By teaming up we’re able to offer a broader set of skills without taking on additional cost. By reselling their services you can also start making money without needing to do all the work.

Along the same lines, if you’re going into web development, identify and be-friend good/great design companies, if you’re able to get 2 or 3 design companies on your side then you’ll probably find they’ll bring enough work to keep you busy all year around.

Meetings

You’ll find your own style of meeting once you’ve had a few meetings with your new clients and the format of these meetings will obviously depend on your business sector but here are a few (some obvious) tips to having a successful meeting.

Before the meeting

  • When arranging the meeting or at least before the meeting contact the client and ask them whether there is anything specific they would like to discuss.
  • Prepare! It’s probably best to think of a meeting a little like a job interview, before your meeting do your research into the company.

The day before

Get everything together the day before your meeting, if needs be have a list of all the items you need to take with you and tick each one off. At the least I would get together:

  • A pen and pad of paper (make sure there’s ink in your pen!)
  • Contact details of the client –I would write these on paper rather than just relying on your mobile
  • Directions to the client
  • Any supporting documentation for the meeting
  • Whatever you plan to wear. Deciding what you’re going to wear the night before the meeting saves time on the day and ensures that you’re not left needing to iron your shirt 10 minutes after you should have left…

What should you wear?

What to wear comes down to your personal feelings and what you feel is appropriate for the client. When I first set out I would wear a suit to every meeting as I felt it was what was expected of me –I expect this came partly from the fact that I went to a public school but also from the image I had portrayed in my mind but choosing what to wear isn’t always that cut-and-dry.
More recently I’ve been going to meetings more casually dressed, this is carefully judged however from my research of the company before the meeting (or after the initial meeting) but I’ve found that when dealing with SMEs –especially when you’re dealing with the founder of the business people seem to respond better. Wearing smart casual clothes also portrays the image that you’re comfortable with yourself and confident in what you’re doing.
Steve told me an interesting story about one of his friends who runs a very successful industrial heating and air conditioning company. This guy has a phenomenal turnover (his average contract is into 6 figures) but said that he soon realised he got most of his business when he turned up in a dirty boiler suit. His theory is that his clients feel that he as the MD is not afraid to roll up his sleeves and muck in.
That’s not to say however that there’s no place for the suit! I still wear a suit to corporate clients as it’s what’s expected, I love wearing a suit I’m just saying wear whatever you feels right for the client and industry.

On the day

  • Be yourself, what you wear is crucial to this, if you don’t like wearing a suit or jeans then don’t. Getting a new client is all about being able to bond with the client, feel comfortable in yourself (and not putting on a front) and you’ll find it a lot easier to find some common ground. You’ll also find that people can see through you if you’re putting on an act, if this is your first meeting, that’s not a very good way of building your trust!
  • Get there early. 10 minutes early is sufficient, if you get there earlier, wait in the car or around the corner but whatever you do, don’t be late. Yes you could argue that it’s because you’re so busy, but I feel it shows that you don’t care about the client more! If you’re going to be late due to i.e. the traffic, call the client and let them know 30 minutes – an hour before hand (with mobile phones you don’t have an excuse now!)
  • Have fresh breath –nobody likes talking to someone with smelly breath and if you’re up against a couple of competitor companies you certainly want to be remembered but not as the “guy with the bad breath”. Keep some chewing gum, mints or even mouth wash in your car or laptop bag
  • “To Tea or not To Tea” that is the question! I’ve found this can really disrupt a meeting if it’s a one-man-band. When the client asks if you’d like a drink, best respond something along the lines of “only if you’re having one” –if they walk in with a fresh brew you don’t want them to waste 10 minutes of your scheduled time making you a drink when you could be selling!
  • Make notes. When you get into the meeting, open your notepad to a fresh page, head it up (client name, date, attendees etc) and leave it open with the pen/pencil ready to use. Pay attention to the client, remember what you can but if there’s something you feel is important write it down –all to often I’ve got out of a meeting, intending to make a note of something I’ve forgotten! Don’t make the same mistake. Make notes about the little things, names of the client’s family, birthdays etc as it will allow you to personalise future correspondence.
  • Listen to what the client is saying. I can’t stress this enough, showing an interest in what they’re saying is important as the client is bound to give you lots of useful information –not necessarily about the job in hand but perhaps information you can use to your advantage later i.e. knowing they don’t like Whiskey would come in useful when sending them a gift.
  • Don’t invite distractions to the meeting. I’ve decided against taking a laptop into meetings these days because they make the meeting very disjointed and it’s often unneeded –especially in the initial client meetings, opening your laptop screen between you and the client is like erecting a large wall between you! Make sure your phone/BlackBerry/PDA is turned off and any.
  • Thanks to Mike A: Try to avoid talking business for the first 10-15 minutes of the meeting, use this time to talk about anything else possible. Look around the room and pickup on anything you can use as a talking point –perhaps it’s an example of their product or a family photo.

After the meeting

Whether you consider it successful or not make contact with the client after your meeting thanking them for their time and remind them of any information they’re meant to send you and/or any tasks you’ll be doing for them.

Client and Supplier Relations

Personally I think having good relations with all your clients is incredibly important. As I’ve said several times in this series of articles already, the best business comes from referrals, never underestimate the value of a good word. It really must speak volumes when a potential client contacts you and you’re able to say “look through our portfolio and feel free to contact any of the clients listed for a reference”.

Having excellent client relations isn’t really hard, give them an shining service, keep it personal, be open and honest and keep in contact after they’ve paid, I don’t mean call them up and talk for hours everyday but drop them an email or a call once in a while asking if there’s anything you can do to help them and if you supplied a service or good to them such as a website ask whether it’s still meeting their needs. Making this little effort can often land you more work as there are numerous times I’ve contacted a client to say hi and they’ve said “Oh hi Tim, I’ve been meaning to call you about xyz for a while”… Remember that your clients are no-doubt just as busy as you so make it easy for them to contact you.

The theory behind excellent client relations is that a happy client who has received an excellent service will come back -and- refer you to other clients. An unhappy client however who feels they have had a poor service will not only not give you their next piece of work, but they will tell a number of other people about the bad service they received. Someone once told me that 8 happy clients may refer you to one other client by one unhappy client will let 8 other potential clients know!

If you’ve had a good service, let them know. All to often people are quick to criticise and point out the faults with any given situation so thanking someone for a good service is a real breath of fresh air, it can really lift someone and make them feel that all the hard work and effort that they have put into the product and/or service given to you has been worth it. Remember that even if they’re a supplier, they may very well need your services later down the line and taking a little effort to thank them will go along way!

Absolutely, I feel karma has a lot to answer for in business. At the end of the day, you’re the boss, if you’re seen to be open and honest with people, they’re more likely to respond well, as your parents have probably always said, honesty is the best policy. If you’ve got a technical issue you may find they have a solution to it that means less work for you. If you call them to confess to some service downtime before one of their clients tells them, that’s got to be a good thing!

Christmas Cards/Gifts

I like sending out cards and I think excellent client relations are very important but every Christmas I hit the same question “What should I do this year?” Each year it generally ends up with me doing nothing but this year I actually got my act together and sent out a couple of gifts which seemed to go down well.

Steve, my father-in-law has a client that makes luxury hampers and he recommended I contact them to see if they could help as the hampers were pretty darn impressive, he was right. The issue I quickly realised was however, who should I send them to? Some of our clients only bring in £20-30pa which didn’t really justify a £20 hamper. This year I had already decided which clients I should send to, but while doing my books I noticed a couple of other clients that I would have liked to send them to so in-line with my current business reforms we came up with a system of grading clients which I think will work well for next year.

It’s quite simple really, work out the turnover and profit generated by each client/contact you have and grade each one. For instance, you could spend £10 for every £1000 of business the client/contact brings. I wouldn’t stick strictly to this however as you may have some lower profit clients who you enjoy working with –don’t be stingy, it’s Christmas!

Then you have the issue of deciding what gifts you would like to send out, the first year I was going to send out a few bottles but a friend said that it was tacky, over-done and thoughtless (especially in the city) so I didn’t bother. Try and make it relevant to your company and different i.e. Cocoa Creative [www.cocoacreative.co.uk] this year sent us a bar of chocolate wrapped in pink paper, I thought that was cool, Stacey thought it was tasty. Either way it got them a mention  here which clearly means I’m thinking about them…

A word of caution: before sending out extravagant gifts to your client it is advised that you check any restrictions that may be in place on the total value of gifts allowed. I say this because there is a limit imposed on the value of any single item for doctors -at one point drug reps were giving away holidays for doctors to use their product over another so it may also apply to other industries as well.

I keep referring to clients and contacts here because I would thank anyone that generates your business more work, it’s a great situation to be in if you’ve got several mini-sales people!

Saturday, February 03, 2007 8:57:30 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, February 02, 2007

Day-day running

Evaluating when it’s best to do something in-house and when to outsource it is invaluable -especially in the case of a developer, the temptation to develop all your internal applications is great. Sometimes it’s better to outlay £500 rather than spending many hours not getting paid by clients.

If you’re starting up with more than one person, having some form of blog is a useful method of conveying this information as it means people can easily subscribe to the RSS feeds and keep up-to-date with the latest information with minimum effort. If you use blog software such as DasBlog [www.dasblog.net] you are also able to have different authors on one portal.

While on the subject of blogs, I would recommend setting up a company blog, or at least a personal blog with plenty of references to your main website. These back links will increase your visibility and hence ranking on Google but it will also increase your company’s profile.

I would advise reading my other posts [The Scourge of Google and Public Facing Blogs and Blogging And Competition] which overviews what I see as the pros and cons of blogging. As you’re here reading this, it’s evidence enough as to why you should blog IMHO.

Processes and procedures

Depending on your background, you may not be too interested in the management side of business but it is very important to have a number of management processes in place, you won’t necessarily be able to set these up before you start but as you learn your business, get them in place ASAP.

What sort of processes am I referring to?

  • Have a client sign an agreement that outlines the responsibilities of both parties (what you’re going to do for them and what they’re going to do in return –e.g. pay) before you start work for them. Make sure you’re as clear as possible so you can charge for additional services without the client quarrelling with you.
  • Depending on the size of the company have the client provide you with a purchase order number. It’s best you ask whatever size the company is as it portrays the image that you’re dealing with larger organisations but the worst they can do is ask you what you mean. A purchase order number is basically a reference in the clients purchase database letting their accounting department know your invoice is on the way in. In many situations it also speeds up payment. When dealing with larger invoices it’s a must because it’s the loosest form of guarantee the person you’re dealing with has informed their accounts department and had the amount authorised.
  • After you’ve had a meeting with a client follow it up a few days later with an email/phone call thanking them for their time, make it relevant to the meeting if you can and word it so it requires some form of response from the client. Making this post-meeting contact can be the difference between getting the work and not –in the same way making contact with a recruiting company after your interview thanking them for their time can make the final decision sway your way.
  • Have a dedicated admin day. Initially this can be something you do once a month but as your business grows you’ll most likely need to increase this to once a week, as outlined in my previous blog post about setting your rates [Pricing your work] you’ll probably find around two days a week are taken up with adminy type work. People are forever moaning about how boring doing a years accounts is however, if you do break it down to say 2-3hours a week it’s a lot easier It’s important to remain strict with yourself as there’s always something more interesting available ;).
  • Invoice regularly! Sounds obvious but it’s important. Depending on your business model, I would recommend setting a day aside every month which is solely for invoicing. I’m not just talking about sending out invoicing, I also mean chasing invoices as you’re bound to have plenty of clients who will delay paying until you really bug them!
  • Log payments and receipts –this should be part of your admin day but it’s worth mentioning again. If you log all your receipts and any payments on a weekly basis it should dramatically save that end of year rush trying to find all your receipts for the accountant, if you do it really well it should also save you a few quid!

Team structure

Having someone who’s able to carefully put people in their place and ensure the company is moving in the right direction is important, it’s even more important when friendships are involved. If one of you can’t cut the niceties and point out the obvious you’re more likely to fail from the start.

Having someone who is presentable and can communicate well is intrinsic to getting new business, everyone operates differently but if your new client can’t relate to your representative you’re unlikely to retain them for very long. As James said, if you can’t at the same time tell them to cough up, you’ll probably find yourself with a very low cash flow very quickly.

Getting Employees

This is something that I’m approaching at the moment, so it’s probably best to add in an article later however there is a very good series of articles on Joel on Software [www.joelonsoftware.com] about Finding Great Developers which is a good start [http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html].

The hardest thing you’ll face (if you’re anything like me that is) is loosening that tight grip you’ve got on your business. It’s taken me 3 years but I’m finally allowing Stacey to take over some of the admin work for The Site Doctor in an effort to lighten my work-load (admittedly I should be blogging less too but hey). Accepting that other people work in different ways is a surprisingly hard thing to accept when it’s your own business. I’ve already accepted that if I want my business to grow, I’ll have to put up with someone else’s coding style until we’ve found common ground.

One final point I’ll make here though is (again depending on your business model) you will need to get employees at some point so make some form of provision for them. If you don’t get an employee and try to do all the work yourself forever your business is capped and you’ll more than likely burn out. Someone once told me the perfect business is one that can easily be converted into a franchise.

Business Management

Well put, you need to be able to fall off your bike and get back on again so to speak, you will make mistakes and if you don’t I doubt you’re taking enough risks and so will just end up ticking over, there’s nothing wrong with making mistakes as long as you can learn from them and move on. Listen to your gut instinct and as soon as it turns sour pull out!

Taking an all -or- nothing approach to things, giving it everything you can/need to until the point that your instinct says enough and then cut it off straight away is important.

Be careful, but don’t let your project or company suffer as a result of being prudent. If you’re going to talk to someone that’s in the position to do what you’re proposing (i.e. they have the skills or can buy them) at the very least have them sign an non-disclosure agreement to give you a little backup. If you’re really worried, prepare your material so it gives them the minimum amount of information required for their input and explain your reasons for doing so.

Either way, if you ever discuss a project with someone else (even internal employees) there’s a chance it’ll get stolen. The best advice here is learn from it and move on. If you want to pursue the matter in the courts weigh up whether it will be at the cost of the detriment of your company and/or image.

When I first set out, I had to take a client to court and cutting a long story short settled out of court because I calculated the rest of the time I would spend preparing for court would cost me more than I would be awarded. It’s also worth noting that if the amount is below a threshold (IIRC £5000) you can go through the Small Claims courts which saves you a lot of expense and agro.

Action pack or Empower

Friday, February 02, 2007 8:54:07 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, February 01, 2007

When you set out, cutting costs is crucial to your long-term success so working from home is an ideal solution, but is it really a good idea? What will happen when a client wants to meet? Will I ever be able to leave work?

Your working environment

Firstly, make sure your office space is as dedicated an office space as possible, I know it’s difficult to spare the space when you live in a 1bed apartment but at least have a desk that allows you to fold away your papers safely. This is doubly as important if you’ve got kids or a loved one as that will take away the opportunity for them to “accidentally” spill a mug of coffee over your latest proposal.

If at all possible, dedicate an entire room –or even a floor if you can spare it to the business, there are a couple of reasons for this, the first is that you’ll be able to rent it to the business and then offset that expense on your tax return, another and I feel more important reason is that you’re able to get into another frame of mind when entering that space. I have an office at the rear of our property which is completely separated from the house with the exception of a small tea hatch. I’ve always felt that this has allowed me to semi-detach* work from home even though they’re within the same boundaries. Where at all possible I avoid mixing the two to re-enforce the segmentation.

*You’ll never really be able to detach from your business –it’s part and parcel of running your own business I’m afraid.

Depending on your personal mentality, having some form of dress code can also help you segment home from work, if you’ve already got a suit from a previous role, why not wear that while at work, then when you get home in the evening change into your home clothes. This may seem wacky but you’re not doing it for others, more so you can mentally detach from work. At the end of the day, you’re working from home so you can wear what you like and the likelihood is no-one will know*.

*I was told an “interesting” fact the other day, apparently it’s been estimated that somewhere in the region of 30% of home-workers work naked. It’s a disturbing thought –especially when you’re on the phone to someone you know works alone. Luckily I can reassure you that I’m not in that 30%. Yet.

Have a routine

Have a routine –this is very important, in the same way you would if you were working for someone else, make sure you’re in work for a given time and stick to it. Luckily, my better half Stacey has a full-time job which means she is up at 0630 every day for work as it is, I’ve forced myself to get up with her and get into the office ASAP which has worked well. It doesn’t matter whether your routine is 0900-1700 or 1700-0900, as long as you stick to it you’ll avoid countless duvet days –remember, when you’re not working, the likelihood is you’re not earning*!

*Again, this depends on your business model!

It is also worth setting yourself a finish time as part of your routine, you’re likely to work over a lot of the time but actually having a time to stop and get your coat gives you a deadline to work towards. There is a great article from Ryan Carson on A List Apart about working 4 days a week [The Four-Day Week Challenge], I think it’s a great idea and one that really is achievable but I agree with him, it's worth accepting that there'll never be enough time to finish everything.

Being the only person in the office I didn’t overly want to leave the office to itself and not having anyone to spend that extra day with (Stacey’s at work), I’ve chosen to make this change in stages. At the moment I’m following Google’s example of 20% time. 20% time is something that Larry and Page adopted from academia but in short, everyone is allowed to dedicate 20% of their working week to something that isn’t part of their day-job. This may be something they’re interested in developing for personal reasons or just an idea that you could profit from.

I’ve found this to be very beneficial to my working week especially when I’m in the middle of a large project, it gives you a little breathing space which in the past has allowed me to work out issues that had me banging my head against the wall. It also makes the weekend feel longer so you can relax more and prepare for the week ahead.

I like this 20% time concept (or as I call it “Fun Fridays”) not only because I'm able to step back from any on-going projects and relax a little more during the weekend (even when working on the weekends) but also because of where it takes me. For instance, a couple of Fridays ago I came up with the idea of writing a “Suggestion Box” -a simple Web User Control that can be added to any future project, it allows the user of the site (usually an admin user I would think) to suggest additions/alterations to the application. The suggestions are then stored in a central database for me to review later. The users can also rate other suggestions (using a little AJAX rating system ;)) so the managers are able to see the most popular ideas and gauge which are worth adding to the system. The plan is to review the (user) based suggestions with the management on a regular basis (even if it's just over email) and generate more work that we wouldn't have otherwise had. Although I identified the idea during the normal working week, had I not had “Fun Fridays” it would still just be an idea.

Having a routine for starting and finishing your day will allow your mind to be in the right frameset and again add another level of segmentation of home and work life. Being able to turn off at a given time and feel that you’re able to relax in the evening is very important.

Won't my clients mind?

In a word: No. I wouldn’t worry too much on having clients come to your house for meetings as depending on your business, I expect you’ll find that the majority of your client face to face meetings will be on site but for those that aren’t, why not check out the local hotels, pubs and coffee houses for a suitable meeting place. Find a couple of options and check them out at various times of the day and week so you know what to expect. Are they quiet? Are the tables big enough? Does it portray the right image for my company?

Many local hotels now offer conference and meeting rooms that include facilities like internet access, tea/coffee and other amenities but they’re at a cost. Alternatively your local Chamber of Commerce is likely to offer the same forms of facility if needed.

Asides from the work/home segmentation, one downside to working from home is that you will get rather cut off from the outside world. This is fine if you have the need for many client meetings or on-site consultancies but can be tough if not. You can easily remedy this by finding your local coffee shop, gym or pub and take a little time each day/week to get out of the office.

There is a new form of business establishing itself at the moment which offers dedicated office space on a monthly retainer so if you choose to work from home for the majority of the month but would still like to retain a little face-to-face contact with the outside world you could check out the serviced offices. Another advantage of having these offices will also mean you meet other businesses.

Telephony

I’ve been working out of an office at the back of the house for 3 years now and it’s the same telephone line, friends and family know this so when they call and I don’t answer, the “Welcome to The Site Doctor” answer machine message doesn’t worry them. I’ve not had any issues with this, the only thing I would recommend is you have Caller Id added and if you can’t remember telephone numbers get a phone/display that has a memory for you, that way you can easily ignore business calls out of hours if you so wish.

Remember that when starting out, it’s important to keep costs as low as possible and although having dedicated office lines is nice, it can also be expensive. Skype is a cheap VOIP solution however I’ve had issues with it’s reliability for Skype-Skype calls in the past so can’t personally recommend it.

Thursday, February 01, 2007 8:52:38 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [2]  | 
# Wednesday, January 31, 2007

At the very least I would recommend it’s worth writing a SWOT analysis, this will give you focus and allow you to visualise your Strengths, Weaknesses, Opportunities and Threats more clearly and perhaps spot something that’ll be crucial to your success or failure. Depending on how fast paced your industry is, it’s always worth re-evaluating the SWOT analysis every now and again.

Once you’ve written your SWOT analysis, show your friends, family and colleagues and see if they can add to it at all. Don’t worry if they criticise it, if you can’t justify or argue your point, perhaps it needs a little more thought.

Defiantly, when setting out less is more. It’s easy to setup i.e. a web development business for only a few hundred pounds but by having lower overheads, it will mean as you earn off your first few jobs, you’ll have more to invest in the company.

What benefit is there to your company if you go out and get the best PC, the biggest office with a couple of secretaries and some flash car? In reality you’re more likely to struggle as you’ll be setting off on the back foot. Make sure you carefully weigh up any purchases, perhaps by categorising them into i.e.:

  • Need
  • Would improve work capacity
  • Would like, could perhaps improve work capacity
  • Would like but wouldn’t improve work capacity
  • Don’t need but look, it’s cool!

If you’ve got investment for the company and can afford to buy all the cool kit from the offset, great but it may be a better idea to keep that for a rainy day. Although I’ve got no proof I’ve always felt that had I not had to earn every penny we had to spend as a business I would have been far more complacent and so lazy and the business wouldn’t be where it is today. Along the same line of thought, I sometimes wonder if I could have done anything differently/better if I did have money to invest at the start and whether it would have got The Site Doctor any further.

This is a very good point, it would be worth noting this down in your targets and goals list [Targets and Goals] as it will give you something to focus on. Think of all expenditures on an annual basis, then when you have the annual expenditure you can work it out on a average number of jobs and/or a monthly figure making it feel more achievable.

Targets and Goals

Personally I can't stress how important targets are enough. Have a set of personal targets as well as business goals -NOT "Make loads of money". The targets should be SMART* (Specific, Measurable, Achievable, Realistic and Timely), write your targets and goals down somewhere as it commits you, you don't need to read them again just as long as they're there.

*Thanks for the acronym Stacey!

When setting out I had a few:

  1. Turnover £500pm for the first 12months (then rising in year two)
  2. Pay off all and any accumulated debts that we had (credit cards etc)
  3. Go on holiday once a year
  4. Be able to buy and afford to run an RX-8 (long story)

Tick them off as you go and add more as needed, they'll give you focus and drive. I would recommend having a selection of goals including something that would appear to be unrealistic as it will give you something to really strive for. It's also worth telling other people about your goals as in an odd way, it commits you to the goals.

A new one on me that I’ll be reading up on tonight! Guanxi [http://en.wikipedia.org/wiki/Guanxi]

At the end of the day, a business plan should enable you to visualise your goals as a business which in turn will allow you to focus your efforts. Don’t panic about not achieving everything at once, prioritise and attack one thing at a time.

Setting your rates

Firstly check out my previous post about how I suggest you go about set your rates [Pricing your work] as it has a great way to quantify your rates with meaning that’s also scaleable.

I agree and this is something that I’ve only come to appreciate relatively recently. When setting out I decided that the first few jobs would be relatively in-expensive to build on our portfolio, this was a real Catch-22 as I felt compelled to deliver amazing results for next to no reward. This temptation is great when you start out. You end up becoming a busy fool, working all the hours given for little financial reward (which limits potential investment in your company). You end up begrudging your clients and if you were to let it continue I would imagine start offering a lower service, or worse decide that running your own company wasn’t a good idea.

We recently re-jigged our pricing structure while analysing where I felt the business could do better and the only difference it has made is to my happiness, I feel far more rewarded for the work I produce. Interestingly the quantity of work being obtained has also increased somewhat dramatically so don’t think that your price will always sway the decision –a lot of the time it’s more about whether the client responds well to you.

It’s also worth pointing out that higher (not extortionate) rates, aren’t always a bad thing, I’ve lost out on pitches before because we’ve been too cheap and the client has opted for a more costly company, this isn’t always the case but oddly being more expensive often suggests you’re better.

Finding a niche isn’t always something you can do when you first set out as until you’re within a market you may not know the market well enough. If you do find a niche however, make sure you run a SWOT analysis on it first, it may not be that no-one else has noticed it, it may just be that others have tried and failed –that’s not to say that you can’t make it work however!

It’s defiantly one of the best things you’ll ever do –I would imagine this still counts even if it goes terribly wrong. I was once told that once you’ve been self-employed you’re effectively unemployable ever again and after having been self-employed for 3 years now I can see what they were getting at. I don’t think it’s so much from an employer’s POV but an employee’s, I would find it very hard to give up the freedom/control myself and so will do almost anything to avoid it!

I think this is a nice place to close this article, so in closing I’ll say that even if it fails you won’t regret trying, it’ll most likely be one of the hardest but also most rewarding and filling things that you’ll ever do. The worst thing you can do is not try and end up forever wondering what if…

Wednesday, January 31, 2007 8:51:29 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [3]  | 
# Tuesday, January 30, 2007

IIRC as a new business you’re legally entitled to 30 minutes of a solicitor’s time which you should take advantage of. Sadly 30 minutes won’t last very long so prepare a set of your most important questions first. It depends on your local Chamber of Commerce, but when we were a member of the Birmingham Chamber of Commerce, they used to offer you low level legal support as part of your membership.

Although it may seem a large expense when you’re starting out, I really would recommend getting some form of T&Cs drawn up. Spending a couple of hundred pounds at this early stage is likely to save you a lot of hassle later down the road. It’s also an idea to have a coversheet written up that can accompany the T&Cs which has a few blanks you can fill in. We’ve called this our “Agreement for the provision of service” and it reads along the lines of:

Agreement for the provision of services

This agreement made and entered by and between [YOUR COMPANY NAME] (hereinafter referred to as “The Supplier”) and [CLIENT'S NAME], whose principal place of business is [THE CLIENT'S ADDRESS] (hereinafter referred to as “The Client”)

The Supplier agrees to provide [LIST OF SERVICES] services as outlined within the proposal dated [DATE OF DETAILED PROPOSAL].

The Client agrees to pay The Supplier [DEPOSIT AS A PERCENTAGE]% (£[DEPOSIT AS A FIGURE]) of the total project costs on the completion of this agreement followed by [NUMBER OF PAYMANTS AS A FIGURE] ([NUMBER OF PAYMENTS IN WORDS]) additional monthly payments of £[MONTHLY PAYMENT AS NUMBER] from [START DATE] totalling £[TOTAL PAYMENTS AMOUNT IN NUMBERS] ([TOTAL PAYMENT AMOUNT IN WORDS]).

The Client agrees to the total project costs of £[TOTAL PROJECT COSTS AS A FIGURE] ([TOTAL PROJECT COSTS AS WORDS])

The Client is aware and agrees that additional services beyond the original specification may be subject to additional charges. Any additional charges will be confirmed in writing by The Supplier before being undertaken.

The Client also agrees that The Supplier will offer on-going support, maintenance and monthly reporting for a combined total of [DETAILS OF THE SLA] from [START OF SLA] for a monthly payment of £[MONTHLY PAYMENT AMOUNT] until instructed otherwise.

On completion, The Supplier will supply The Client with relevant timesheets for the development work if requested.

In accordance with our Terms and Conditions, Value added Tax, where applicable, will be added at the appropriate rate to the total of all charges shown on the Client’s bill.

We agree to the Terms and Conditions of The Supplier

IMHO you can write these yourself as they’re more just a summary of what you’ll be doing for the client in plain English so there’s no argument. I would state the total amount you’re charging –both in numbers and words, any time frames and additional services i.e. hosting.

Make sure you have the client sign two copies of your coversheet before you start any work for the client, you then sign and return one copy for the client’s records. The other, make sure you store somewhere safe (just incase!). I’ve not found clients object to signing T&Cs before work starts as it protects both the user and the client but I have found the coversheet helps clarify things for everyone.

There are a lot of contracts available for you to download online if you don't want to write your own or can't afford to have them written for you.

If you’re setting up with more than one person –especially if they’re a friend or loved one writing some form of contract between the two of you is incredibly important. Not wanting to sound negative but you never know what stresses and strains may be put on you and what effect they may have.

When forming the contract, if you’re going to do it yourself, make sure you overview the financials very carefully, at the very least I would cover the following:

  • Any investments including details about who invested what, how long the investment will be for, any conditions associated with the investment and clear details on the repayment(s) of the investment.
  • Profit share, I would suggest including information about percentages if possible (even if you’re planning on a 50-50 split).
  • Liabilities and ownership–this is something that will come with time but it would be a good idea to overview everyone’s roles within the company. I wouldn’t encourage a blame culture but associating responsibility is important.
  • Decision making. At times you will be required to make important decisions on a company basis, this is easy if you’re a sole trader but if there’s more than one person, how will you decide what to do should there be a split? Will you bring in a mediator to make the final decision or will you toss a coin?

At the end of the day, as John was getting at, no matter what the current the relations are between the company’s partners it’s best to be as explicit as possible to avoid any disagreement later.

A great point and well put. When you set out, scream and shout about the fact; let everyone know what you’re doing –and don’t forget to tell all your friends and family too. If you’re lucky, they’ll know someone who needs your service and will recommend you (or mention the fact allowing you to follow it up). The best business* we’ve had in the past has always come from recommendation.

*“Best” isn’t always quantified by the cheque at the end of the job

Tuesday, January 30, 2007 8:50:24 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, January 29, 2007

Wednesday 6th December 2006 was an interesting day for me, I often get asked about how I run The Site Doctor and how I set the company up in the first place, but on Wednesday I had no less than 3 people mention that they had thought about setting up their own business but weren’t sure how to go about it or whether they should so I thought there must be more.

Leon Jollans was the first and posted a question on the MsWebDev list (message in the archive here) asking for some advice and seeing as a plethora of fantastically useful information was offered I thought I’d wrap it up for future reference.

Before we get down and dirty with the advice, the first thing I’ll say to you is:
If you’re thinking about it, do it –there’s never a better time than now.

Cheesy as it sounds, it’s true, the number of people I’ve spoken to in the past saying that they’ve thought about it but the time’s not right is unbelievable, if you start off with that attitude, the time will never be right, there will always be a reason not to do it. The thing you realise once you do take the leap is; it couldn’t have been a better time!

In regards to how many businesses fail, I believe the official figures in the UK at the moment are 1 in 5 businesses make it through the first year. This would explain why the government is giving so many breaks to SMEs, so just remember -you're the 1 in 5!

Ok so to the tips, I’ve tried to get these into some form of logical order but some comments span multiple topics so I apologise about that.

Update 16th Feb 2007: The article is now available as a downloadable PDF

  1. Business start-up advice
  2. Before you get going
  3. Contracts and Terms and Conditions
  4. Business Plan
  5. Working from home
  6. Day-day running
  7. New Business
  8. Finances (VAT, Accountants etc)

In Closing

Thank you for taking the time to read the articles, I hope it wasn’t too overwhelming for you and more importantly I hope it’ll be a useful reference for you in one way or another. There was a lot more I want to add but it was starting to be never ending story so I had to put closure on it, over time however I expect I’ll add more so check back soon!

Here’s to your success!

Tim

Thanks To

As I said at the start of this article, it is largely based on information posted on the MsWebDev list so thanks must be given to all those that contributed:

Useful References / Links

The following links may also be interest to you:

Monday, January 29, 2007 8:47:39 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [1]  | 

I think this is a nice point to start off with; it’s unlikely that you’ll be setting up a company doing something that you hate but it’s worth thinking about exactly what you wish to do. When I first setup The Site Doctor and people asked me what The Site Doctor did, I said “Web Design and IT Consultancy” as I felt it was broad enough cover everything I was interested in doing, as it turns out I would think the majority of our work should now be classed as “Web Application Development” but you try explaining what that is to your IT illiterate friends ;)

I would be interested to know how many companies start out aiming to offer one service and then diversify into other more specialised areas –I would think it frequently happens after identifying a niche market.

Identifying a source of quick (and if possible easy) revenue is a great idea, it doesn’t have to be something that you’ll continue in the longer term but this will ensure that the first few months while you’re establishing the company aren’t as hard as they perhaps could be. When I was setting up The Site Doctor I was prepared to take a part-time job to subsidise the business should it not generate enough income, luckily I didn’t need to but having a backup plan is always a good idea!

The other advantage of doing i.e. contracting or freelancing is that you’ll be able to get straight into the market place, letting people know about your services and identifying potential markets. The sooner you can get your face known, the more likely you are to generate new business.

I would recommend talking to an accountant to understand the pros and cons about each type of company. Setting up as a sole-trader or partnership is easier in the short-term but switching from a sole-trader to a limited company later may bring added complications and/or paperwork that could be avoided.

If you’re starting out on your own, it’s probably worth looking into the option of setting up a networked business. I’m not sure if this is the correct term for it but it’s what I’ve been using for some time now to describe how The Site Doctor operates. The theory is simple, rather than having a load of in-house staff which will increase your overheads, make tactical relations with other companies offering complimentary services. As mentioned later in the series (see New Business –Networking) we have setup ties with design companies, mobile development companies and a variety of other complimentary services.

The beauty of this form of co-operative business is it allows you to be a single point of call for more services than your core business which is more likely to keep you in the forefront of the clients mind. It also has the massive benefit of having back-up staff without the cost. If you’re planning on running a development company, why not find a couple of other local developers or development companies who can take on some of your workload? Initially you may not be making any additional income on top of their charges, but should the workload continue, you’ll be able to consider taking on an employee safe in the mind they’ll pay for themselves.

Steve (my father-in-law) went on a local business course many years ago before starting his Birmingham couriering business and is forever spouting pearls of wisdom that came out of it. From what he’s told me, the course has helped on many levels when running his courier business from decision making to re-assurance.

One point that Steve did pick up on from the course that I feel is relevant is the idea of listening. His course leader suggested that if you ever had the opportunity to take a successful business man/woman such as Richard Branson out for dinner, take them to a nice restaurant and pay for the dinner, not to impress him but to have a couple of hours of their time –something that you perhaps wouldn’t be able to afford otherwise. I think this applies to all business owners (I’m open to offers!) as you’ll have a great opportunity to learn from someone who’s been there and done what you want to do…

As far as I know, he’s never got any sniff of business out of the course but I would suggest using the event as a networking opportunity as the attendees are most likely new to business and in need of some contacts.

The business course should also expand on some of the points raised here. I’m not sure where the best place to look for one is, there are plenty available through Business Link but I would think finding one run by local business owners may be of more use.

As with announcing your launch, get involved in communities, it does cost you in time but people respond well to you giving something back and it often results in more opportunities arising which more than cover the costs of participating. You also get a nice warm feeling from knowing you’ve helped someone else!

There is currently a huge amount of information available on starting your own business and running your own business from the government as there’s a drive to encourage start-ups in the UK, pop down to your local business link and you may even find there are grants available to you.

Identity

A name is an important factor of your business, make sure it’s scaleable and something that you’re proud of. I came up with “The Site Doctor” as the business name primarily because (among other reasons) I felt the majority of our business would come through fixing websites.

You should be proud of your name for obvious reasons, but remember that you’ll be needing to say it to people on a regular occasion. You’ll no-doubt also be frequently asked how you came up with your company’s name or as to its meaning as small talk at networking events and the like, so have a response prepared before the event (even if it was just something that you thought sounded cool!).

The reason I say you should ensure your name is scaleable is because I feel “The Site Doctor” portrays an image of a one-man-band which is something that I now can’t get around without changing the name. I did think about re-branding the company as “TSD” but on discussing this with existing clients and friends we felt that it was somewhat impersonal, I’m inclined to agree and would steer clear of acronyms for your name.

Remember that branding and company image is a profession itself and having a few quid to outlay on it won’t hurt. You can see the past incarnations of The Site Doctor [New TSD Design] which we’re currently trying to face lift but I would recommend having it designed professionally, not just to impress potential clients but also to give you confidence.

Sean’s idea of having templates for your proposals is a great idea and one well worth passing by your designer. By all means have an idea of what you feel your company’s brand should look like/convey but remember to leave a little room for the designer to make suggestions.

Monday, January 29, 2007 8:44:40 AM (GMT Standard Time, UTC+00:00)  #    Disclaimer  |  Comments [4]  |