Time on the phone –wasted time?
Tuesday, May 08, 2007 6:13:32 AM (GMT Daylight Time, UTC+01:00)
After a somewhat hectic week last week, with most of it being spent on the phone (which is becoming a more regular occurrence) I asked myself “has all this time on the phone been wasted time?” Well, I spent time talking to clients, developers, friends and family and this is important. Although it may cost you a little development time, talk is cheap (that’s what the telecom’s companies want to tell you isn’t it?)
Rather than looking at it negatively I think it’s best to look at it from another point of view, I could have spent developing some weird and wonderful new creation for a client however, this phone time was doing something else –it was promoting my business. Admittedly the business couldn’t survive if we all spent all the time with the phone glued to our ear, but once in a while I believe is a good thing.
Why am I looking at it like that? That’s simple, if you make time for your clients, friends and family in any context it shows that you care for them beyond a pay check and at the end of the day, if they need some development they’re more likely to think of you in a good light.
What do you think? Do you feel time spent on the phone is wasted time or a business investment?
Paddlathon 2007 -whassat then?
Friday, May 04, 2007 7:56:27 AM (GMT Daylight Time, UTC+01:00)
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
-
Multiple Sclerosis Society
-
CLIC Sargent
-
Mac Millan Nurses
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
Joost invites for all...
Thursday, May 03, 2007 4:46:11 PM (GMT Daylight Time, UTC+01:00)
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.
Tim vs. a Swan
Wednesday, May 02, 2007 7:05:00 PM (GMT Daylight Time, UTC+01:00)
Those of you who have me on MSN Messenger (and use a client that displays my little sub messages) may have noticed today’s caption reads “Tim vs. a Swan : Tim 1 - Swan 0”. A few of you have asked what it is all about so I thought I’d just post it here (shame on those of you who didn't!).
For those of you who are new to my life I’m rather into my canoeing* and what with the forthcoming Cheshire Ring Race drawing closer I’ve been getting out on the water as much as possible. My new routine is now gym one night, canoe the next and last night was a canoe night. Stacey’s also training atm so she came out for a run with me.
I’ve thrown this all into a little map (see below - thanks Google Earth!) so you can better understand what I’m talking about. I usually dock near a swans nest and although around this time of the year they get a little arsey (they’re brudy or have chicks so that’s ok) we have a fairly amicable relationship –I don’t like them, they don’t like me. Last night was something different, when I got onto the water I could only see one of the two swans, the male (who is the nasty one) was no-where to be seen so we carried on (he usually potters off up a side route etc).
No sooner than I had passed under the bridge but I saw the male at the end of the straight and he started flapping to take off. Now, I don’t know if you’ve even seen a swan taking off but they’re big gits and it takes them a while so I figured he would just fly over the top of me.
I kept thinking that until he was about 20ft away from me when he angled right for me and it was clear he was after me haha. Knowing that they can cause serious damage (though we’re still debating the “Can a swan break a man’s leg” rumour) I decide to get over to the bank and wait it out there –in the tiger (my very unstable racing kayak) I wouldn’t have stood a chance in the middle of the canal.
It was a close call to be fair, he was about 5ft in front of my boat by the time I got over to the side at which point he stopped flapping and swam past hissing at me something chronic. The funniest bit of it was that Stacey had taken my paddles off me and was poised over the stingers and spikey things ready to beat him if he came close –I just wanted them back in case I needed to use them!
I’ve had swans come for me before but never fly down 0.2miles to “get” me, that was quite something else! I’m still chuckling about the thought of “You know what, I don’t think he’s planning on flying over me…”.
*Some would say this is an understatement

A GREAT! New resource for freelancers and others starting out
Wednesday, May 02, 2007 7:24:54 AM (GMT Daylight Time, UTC+01:00)
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/.
ASP.Net Membership SQL Roles access
Tuesday, May 01, 2007 8:41:48 AM (GMT Daylight Time, UTC+01:00)
We have recently moved over to SQL Server 2005 and as part of this transfer I decided to aggregate two separate ASP.Net Membership databases that were created purely out of error.
For those of you who don’t already know, you can happily run more than application’s security from a single membership database as long as you correctly configure the web.config’s security settings –for more information on doing that see my post on having dual records in the ASP.Net authentication table (see: Dual Records In The ASPNet Authentication Table). The important attribute/value set to configure if you are planning on running more than one application from the same roles database is “applicationName”. If you do not set “applicationName” you will find that users can log in across all your applications, roles/access levels will get mixed up and a whole bunch of other hullabaloo!
Luckily for me, the only records stored in one of the membership databases were two users, both of which I knew the password to so I decided I would simply update the web.config with the new database connection string and add them manually.
The next thing I wanted to sort however was the specific SQL Login’s access to the membership database, previously I simply added the user to all the various aspnet_ roles that were in the database which worked fine. As I’m looking to use this database for other applications in the future and I don’t like sharing usernames/passwords across applications, adding the roles each time would become a real PITA so I decided to add a new role with all the access required for the database so I could simply add the user to this new role. I called the role IIS_User.
A number of our applications build on the foundation of the ASP.Net Membership database with application specific values and so I tend to have another table for the application’s users within the applications specific database to store these values. The user has the usual UserId (usually an int) and a uniqueidentifier which allows me to link the two database together. With this in mind, I need additional access to the ASP.Net Membership database –SELECT permission on the tables. I don’t like adding more permissions to a role than needed but I needed a method of doing this quickly –assigning EXECUTE and SELECT permissions to the new role on the various tables/stored procedures. In time I’ll revisit this and work out which are needed by the role and remove the permissions not needed but for now this’ll do :)
The quick and dirty T-SQL
DECLARE @SQL nvarchar(4000),
@Owner sysname,
@objName sysname,
@Return int,
@objType nvarchar(5),
@rolename nvarchar(255)
SET @rolename =
'IIS_User'
-- Cursor of all the stored procedures in the current database
DECLARE cursStoredProcedures
CURSOR FAST_FORWARD
FOR
SELECT
USER_NAME(uid
) Owner
,
[name
] StoredProcedure
, 
xtype
FROM
sysobjects
WHERE
( 
xtype =
'U'
OR 
xtype =
'P'
)
AND
LEFT([name
], 7) =
'aspnet_'
OPEN cursStoredProcedures
-- Get the first row
FETCH NEXT
FROM cursStoredProcedures
INTO @Owner, @objName, @objType
-- Set the return code to 0
SET @Return =
0
-- Encapsulate the permissions assignment within a transaction
BEGIN TRAN
-- Cycle through the rows of the cursor
-- And grant permissions
WHILE ((@@FETCH_STATUS =
0) AND (@Return =
0))
begin...end
-- Clean-up after the cursor
CLOSE cursStoredProcedures
DEALLOCATE cursStoredProcedures
-- Check to see if the WHILE loop exited with an error.
IF (@Return =
0)
begin...end
BEGIN
-- Exited fine, commit the permissions
COMMIT TRAN
END
ELSE
begin...end
GO
Getting more work done - Early Mornings vs. Late Nights
Thursday, April 19, 2007 6:25:11 AM (GMT Daylight Time, UTC+01:00)
If you’ve ever been involved with running your own business or indeed any start-up you’ll know long hours are sometimes a necessary evil to meet the demand or even just getting things in order. Well for quite some time now I’ve been wanting to work out whether it’s better to work early in the morning or late at night –I’m quite happy at working either but is there a better option.
Recently I’ve needed to work long hours to get a couple of systems completed and get back on track with a couple of projects so decided there wouldn’t be a better time. I did want to do something clever like monitor the number of lines of code I write or something equally measurable but to be quite honest I didn’t have the time and I couldn’t be bothered to spend hours searching for a solution so it’s all finger in the wind stuff…
Late Nights
Firstly I tried late nights. As I mentioned in my business start-up guide (see: Business start-up advice) I’m very strict with getting up –I get up when Stacey does, see her off and then I’m in the office from around 7:30am/8am (please don’t call then –I like to have a little “quiet time” to sort things out ;)) and I work until she gets home –usually around 7pm now she’s in her new role. When doing the late nights I’d go in at around 7pm, have a drink and a chat, a bite to eat, perhaps all in all an hour or two’s rest before returning to the desk for a couple more hours.
What I found with working into the night was that by the time I got back into the office I was already fairly tired from the day that had preceded (which a lot of the time is unpredictable as far as clients are concerned!) so my productivity for these additional 5/6 hours was lower than during the “normal” working day, then when I got up the next morning I would be pretty shattered from having little sleep (I still had to get up at 6:30am) which meant the next day was somewhat of a write off. So although I managed an additional 5 or 6 hours of lower productivity work, I also lost time the next day so it was semi-even.
Early Mornings
After testing working late for a couple of weeks I decided to try getting up early –initially I would get up at 5:30am as that would give me an hour or so before Stacey was awake, then 10mins waking her/refilling my tea and then another hour or so before breakfast and seeing Stacey off. I tried the 5:30am start a couple of times and could see the productivity difference almost straight away. As I was starting after a good nights rest (I could finish earlier and even get to bed earlier if I wanted!) I was fresh and ready to go again so I decided to start getting up at 5am, that way I could have nearly 4 hours of uninterrupted time before clients started calling.
By getting up at 5am you avoid the jet lagged feeling at the end of the day, oddly enough this still comes at around the same sort of time so you don’t really lose out there and the 4 hours or so before other people make it into the office which means you get an additional 4 hours of uninterrupted time.
The other advantage was if you had a deadline to meet you also had the evening available to work into –again at a fairly similar productivity level to when you get up at 6:30am.
Conclusion
Although I’ve not done any productivity level testing I know for sure that getting up in the mornings is far better without a shadow of a doubt, having the uninterrupted time where you’re fresh and alert means the development is a lot faster, unlike in the evening/night, no-one is online just “chilling” which a lot of the time can be distracting in itself, you’ve also got the added advantage of having a full nights sleep if required or working late into the night if you need to hit a deadline.
Despite my findings I still know a lot of people that stay in the office late into the night thinking that it’s of benefit but one thing I found was not only was your productivity lower, your likelihood in making mistakes was higher –which you’d just have to correct the next day. A lot of the time they were simple things that had you been paying attention/been awake for you’d have sorted!
Another thing I would like to look into at some point is whether morning or afternoon coding is more efficient and whether you can use that to structure your day better as from this “investigation” I’m inclined to do more adminy type work in the afternoon as I tire and leave the development to the morning (that is my 8 hour morning… ;))
FWIW I really enjoy getting up before everyone else, watching the sun rise and then having an evening to go to the gym and have been getting up early now for a fair few weeks –and don’t see it changing anytime soon! I think any earlier than 5am however may well be detrimental.
SQL Server Delete all data
Tuesday, April 17, 2007 4:18:54 PM (GMT Daylight Time, UTC+01:00)
I expect many people already know about this technique but I wanted to share it with those that don’t. The other day I needed to remove all data from a database before importing data from another database. I usually use DTS to copy the data across but knew that the database (one test) had conflicting ids so I decided deleting all the data out of the test database would be the best way to ensure all data’s up to date.
I found this useful little set of SQL at: http://sqljunkies.com/WebLog/roman/archive/2006/03/03/18386.aspx, there are two solutions propsed within the post and comments so here they both are:
Delete the data without resetting the identities
Delete the data and reset the identities
-- disable referential integrity
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'TRUNCATE TABLE ?'
GO
-- enable referential integrity again
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
Rackspace -awesome managed dedicated servers
Wednesday, April 11, 2007 12:59:46 PM (GMT Daylight Time, UTC+01:00)
Seeing as I’ve had a number of posts recently that were, well, er slating/pointing out terrible customer service and/or service in general I thought it was about time I posted about the guys that did it right in my eyes (that and a couple of seriously cool programming things I’ve found/done –but those can wait!).
If you read my recent post about Fasthosts and how they’ve been going down hill for the last year or so you’ll already know that we’ve signed up to one of the worlds greatest managed hosting companies ever –Rackspace. Not only that, we also recently became an official Rackspace partner which I’ll come back to in a moment.
We got our first dedicated server with Rackspace nearly two years ago as part of a large project we had in the pipeline, although cost was a large factor in our decision, we took into account other aspects of the service such as how our enquiries were handled, the reputation of the hosting company throughout the development community etc. Rackspace although they were one of the more costly solutions for our requirements came off best all around. Even before we were signed up, Rackspace’s customer service was second to none, they were quite happy to discuss the more technical aspects of our requirements and even worked closely with us to identify the most suitable solution.
One thing that I really liked about Rackspace before we signed up was the fact that they were very open and honest –where the sales person didn’t know the answer, they felt perfectly at ease to say so and pass you over to one of the technical support staff who always knew the answer. From my POV, not having someone “guessing” the answer is incredibly important –even more so when mission critical applications are being put in place.
One thing that was very important to us when signing up was scalability, at the time, the requirement for the server was relatively low (the application was still in the pre-development stages but we knew we had to get a dedicated server in place before it got to the develop stages) so it was a risk that we needed to take but we also needed to limit the risk involved. Rackspace were able to offer the backbone (and supporting evidence) that we were looking for. They were quite happy letting us have a smaller solution to start with which could then easily be upgraded when we needed to –within a maximum of 24 hours notice!
Another key factor was the on-going customer help and support, not having any real-world prior experience in managing a server I was adamant that whoever we hosted our server with had to also be able to offer us the technical support we would no-doubt be needing –not only with getting started but also looking to the future general day-to-day cock-up’s. Rackspace has a motto of “Fanatical support” which although many companies claim similar was clear they really believed in. Unlike many other hosting providers out there Rackspace had dedicated support specialists in the various aspects from Window Servers, Linux/Apache Servers to IMail specialists. This has saved our bacon on many an occasion. Although you may get through to someone who is specialised in another area, if they don’t know the answer you’re put through to the next available support member almost immediately. It certainly beats speaking to some spotty teenager who kinda knows what you mean when you talk about the web but is more interested in the Yankee dollar for a day of picking up the phone and pissing people off.
Since signing up with Rackspace, having our dedicated server managed by Rackspace has been a dream. Like I’ve said, they are expensive but that cost is more than compensated by the complete lack of stress I have when dealing with them, the solution they recommended has met our needs perfectly so I’m pleased we’ve not been spending out unnecessarily. On top of this, Rackspace’s motto of “Fanatical support” is an understatement, their customer service and support is second to none without a shadow of a doubt. I’ve called them at some very odd hours and there has always been a friendly understanding voice at the other end… “that’s ok Tim, we can restore that folder you deleted before your client notices…” ;)
In the two years I’ve been with them I’ve had three issues with the server:
- A HDD failure –not sure what it was beyond that, IIRC it was just a dodgy disk (manufacturers fault). Rackspace notified me of the issue, replaced the HDD and ensured all the data etc was how it should be in the space of 15minutes! As the RAID setup meant the server continued to be operable while Rackspace were sorting the issue I wouldn’t have known if they hadn’t had called me.
- Power loss for approximately 1hours. Shortly after our server was moved into a new data centre we lost all connectivity. When we called Rackspace about the issue we were told that a capacitor had blown between the server room and all power supplies. We later found out that they had used a new company to install the equipment and they hadn’t checked it all in as much detail as they perhaps should have done. At the time we only had a couple of sites on the server so I wasn’t too concerned about it but Rackspace refunded something like 10% of the entire month’s hosting bill for the inconvenience.
- Failed firewall. This only happened the other day but the firewall died for some reason, at first they thought it was the PSU but on replacing that it still wasn’t rectified. All sites were down for about 40minutes while it was being sorted. Not great but unavoidable and at least they sounded genuinely concerned. I was even kept in the loop throughout and knew exactly what was going on –right down to “the tech is running to the storage area now to get the PSU… …now he’s running back” (I don’t think my comment of “Run forest RUUNNN” went down as well as I had hoped!).
On top of those issues Rackspace have also helped us out on countless occasions where we weren’t quite sure if we were going about something the right way or we’d messed something up, I’ve only had to use the restore facility once IIRC but that was simple, within 20mins I had restored around 3GB of files to their state from the night before.
Mainly through sheer laziness and not having a re-useable statistics package on the dedicated server (I don’t need it as we analyse the raw logs) until recently the majority of our web sites remained on a Fasthosts shared server account and seeing as a shared server account has many limitations in regards what you can do with your programming and the terrible customer service we’d been receiving we recently transferred the majority (not all) of our web sites away from Fasthosts onto our shiny Rackspace server.
The transition was so simple and easy it was an absolute pleasure. You manage your DNS settings through their online portal which also has a very detailed and easy-to-use support ticketing system. Once setup in the portal you setup the domain on your server and away you go so I’m one happy bunny. They even helped install (unsupported) software for statistics analysis (without any additional charges) and helped me remove the quotas I had applied to the C: drive by accident. As if that wasn’t enough Rackspace even took the time to talk through some of the finer points of server management with me.
What’s this about being a Rackspace partner? Well, you may think that my judgement is swayed by the fact that we were recently asked to be partners with Rackspace but I really wish I’d written about them before this because they are genuinely a superb company and I don’t want you to think that I’m just saying that for the commission (though that is an added bonus I must admit!). If you want unparalleled customer support and a managed hosting solution that really is there all the time for you then choose Rackspace –I’m yet to fault them (and having seen what it gets me, I can’t fault them on the price as it’s well worth it for the help and support they’ve offered me in the past).
In many ways, Rackspace and the Rackspace support team are very much part of my team, I know they’re always there and unlike other people in my team are always happy to hear from me (at the start of the call at least!).
Rackspace, Rackspace, Rackspace, oh how I love ye! If you’re thinking about setting up a server with Rackspace let me know and I’ll put you in contact with people that can help I definitely recommend Rackspace as your hosting partner even if it's just for an easier life :)
Oh, and if all this wasn’t enough –they even send you a bunch of freebies for being a customer and a 12month congratulations certificate! –Cheesy I know but it’s the thought that counts! –and I use the free 256MB key they sent me as part of becoming a partner to store my blog posts on the go now* so thanks for that. Note to any supply company -I (and I think anyone else out there) LOVES free stuff so send it over... ;)
*Yes I know I could have got several hundred 1GB disk keys for the price I pay on hosting but then I wouldn’t get to talk to the lovely support staff ;)