Posts from October 2004.

Comments now need authorisation.

So, the spammers have found this site, and decided it would be a great idea to add comments offering various dubious products to any reader with links.

I don’t like that, so as a first try I’m enabling admin approval of comments, so that readers don’t see those frankly offensive SPAM comments. I’ll do my best to authorise valid comments as soon as I can, but obviously, sometimes it may be quite a few hours, or even a day or two before comments get authorised. I’m sorry for the inconvenience, as always it’s the few that spoil it for the majority.

Update: I’ve made some slight changes that mean most comments will be authorised automatically, while SPAM comments hopefully get trapped for authorisation. Unfortunately, some valid comments will still get trapped for authorisation though. We’ll see how it goes.

Update #2 (01/12/2004): That didn’t work, still getting way too many SPAM comments, so authorisation is back, until I have time to update the software to pick up the improved SPAM handling in WordPress 1.3.

Flipped A Bit.

000001
000010
000011
000100
000101
000110
000111
001000
001001
001010
001011
001100
001101
001110
001111
010000
010001
010010
010011
010100
010101
010110
010111
011000
011001
011010
011011
011100
011101
011110
011111
100000

Phew, quite a lot of years when you look at it that way!

People that email then phone.

After reading the comments on my previous post, I’ve spent my lunch hour reading through a few posts in Michael Hyatt’s Working Smart site.

Michael’s latest post titled Taming Your E-mail Inbox, Tip #1 deals with scheduling your email processing to times that suit you, not processing everything that arrives as it does so. This gives you time to complete your tasks for the day and deal with new requirements in a timely manner.

It’s great to be able to schedule your email processing to particular points in the day that fit in with your schedule, I do that already, but also have a quick scan between tasks. But how do you deal with people that insist on phoning you if you don’t respond within ten minutes?

I understand that Michael may not regularly have this problem, seeing as he’s in a position to have someone else field his calls, but how do you politely deal with these people?

Because these people are constantly chasing their own rear-ends, and have no process for dealing with their day to day tasks, they tend to get in the position where everything is a last minute crisis, and this inevitably gets pushed onto those who can help them out, i.e. myself.

How do I deal with that?

Time Gentlemen Please!

Since starting this project, I’ve found that I need to have 48 hour days, 24 just aren’t enough! If something doesn’t happen soon, I’m going to be delivering my project in about twice the time I first estimated.

When I started on my new project, I started by having a look around to make sure there really was a market, and to double check that my assumption that the niche I was looking at was not already being filled by anyone else. I wanted to be first to market in the niche, primarily because I believe it is a very small niche, and I don’t expect it to be able to sustain more than 1 or 2 players. My idea for my new software was prompted by noticing over time a number of calls for this functionality in a particular piece of software, functionality that would be fairly hard for the vendors to do with their current server based model, but that I believed was totally feasible with a desktop application. The application would be simple at first, no bells and whistles, just enough to get this repeated query satisfied.

After a couple of weeks of surfing the web, and formulating some rough ideas on exactly what the scope of the project would be, I started creating entries in my FogBUGZ bug tracking installation for each of the features I thought would be required, this was end of June (2004). First pass, I only added 2 entries, this covered the basic feeling of the app, enough that I would remember what it was I was hoping to achieve with the product. The next time I had a chance to actually start doing anything on the project (more than a month later, after some more ruminating), I updated the two existing cases with further details and created another 3 to cover some other required functionality. The following day after having started development I added another 5 features to the list, drastically expanding on and tightening up the requirements on one of the first two features. That was about 2 months ago (early August), since then I’ve updated many of the features with more details, and added another 8. None of these features are to the level you’d expect for XP development, but they give enough detail that when I return to them to start development, I know exactly what is required.

When I added those features about 2 months ago, that was when I first started taking this project seriously, at that time I put all the features into a number of “releases”, each release due at the beginning of each subsequent month. I worked out that as long as things ticked along nicely, I could get about 8 hours of serious development and testing done each week, e.g. 1 day per week. This is assuming that I’m only working in my spare time, and only on 2 or 3 evenings per week, if lucky I may snatch a couple of hours at the weekend, but only if the wife is away doing something else, we have an agreement that I try not to use my computers at the weekend, so that we see something of each other occasionally :-)

With estimates logged against all the features, splitting features so that each release consumed 4 to 5 days max with highest priority core features coming first, this set my release schedule as follows:

Release Date Notes
0.1 12/08/2004 Initial building skeleton app.
0.2 01/09/2004 Pre-release.
0.3 01/10/2004 Pre-release.
0.4 01/11/2004 Pre-release.
0.9 01/12/2004 Public Beta.
1.0 01/01/2005 Full Release.
1.1 01/03/2005 Bug Fixes and small user requests.
1.2 01/05/2005 Planned large features.
1.3 TBD More super features!

This was well ahead of what I actually expected my release schedule to be, I had planned to have the Beta out in February at the very earliest, but really thought that March would be more likely. But now, I’m not sure I’ll be able to even make March. In the first two months of development, I’ve successfully completed 0.1 and 0.2 on time, they’re happily stored away in version control. However, 0.3 has hardly got off the ground, and I’m half a month behind expected delivery date already. I’ve had few problems with my ISP to sort out during that time, and a friend of mine convinced me to have a better look at RSS and blogging, which hasn’t helped (yes, I’m blaming you Gordon!), but the biggest problem I had was in using new technology.

Although I’m fairly used to VB, as noted before, I’m actually using REALBasic. This is great stuff, I’m thoroughly enjoying developing with this technology, but it’s very different to my day job. As always, when you start with a new technology, there are a lot of quirks that need to be picked up, that’s why current wisdom says that to be truly successful in a new venture, you need to be using tried and tested tools and techniques, otherwise you’ve already added a variable that you can’t accurately predict. But I don’t have that luxury, I want to create a desktop app, and you can’t do that easily (and cheaply) with Informix 4GL.

So, luckily, I already knew my initial estimated plan was going to be wrong, and recently I’ve changed it by slipping all the open features by a month:

Release Date Notes
0.1 12/08/2004 Initial building skeleton app.
0.2 01/09/2004 Pre-release.
0.3 01/11/2004 Pre-release.
0.4 01/12/2004 Pre-release.
0.9 01/01/2005 Public Beta.
1.0 01/02/2005 Full Release.
1.1 01/04/2005 Bug Fixes and small user requests.
1.2 01/06/2005 Planned large features.
1.3 TBD More super features!

So, this puts my first Beta as being released on 01/01/2005, which I already know isn’t going to happen because I won’t even be in the country that day, if lucky I’ll be nursing a hang-over down south (England, I live in Scotland), having spent New Years with my family. But more importantly, I don’t’ actually believe I’ll be releasing the Beta until March at the earliest, I’d be happy with that. However, to even meet that, including setting up the new web site and all the other stuff that I need to have in place, I’m going to have to make some serious changes to the way I manage my time. I’m just not achieving that magical 8 hours per week quality development time.

Last year I read David Allen’s Getting Things Done, which is superb, when I first read it and implemented most of the recommendations my home and (especially) business life became far more organised. I think I need to read it again to make sure I’m still doing things right. I also need to ensure that I’ve re-read some of Steve Pavlina’s great articles too. But really, I need to start removing all the extraneous attention sucking items from my life, things like TV and sufin’ the ‘net.

TV’s not such a problem, although I have a TV tuner card in my PC, I’ve just not turned that PC on, I’m using my Mac mostly anyway, and have virtual PC for testing my builds for Windows. Testing in Virtual PC can be a little slow, so occasionally I will have to start up my main Windows PC for a few tests, just to gauge whether things are running OK on a typical business PC (it’s not a perfect test, but better than Virtual PC), but I’m sure I’ll resist the TV during those specific tests.

The real killer is the internet, there’s just so much going on, and no time to read it all! I’m not sure how I’m going to resist, maybe I can restrict myself to only using the internet once I’ve done any paperwork I need to do (I have to do a fair bit each month for my consulting business), and completed at least two hours of development. Maybe just say any time after 10pm is free for play, which if I were sensible would mean about half an hour as currently I’m having to get up at 6am to fight the traffic to work (across the Forth Road bridge). The problem with that, is that usually I only seem to be firing on all cylinders at about 9:30 – 10pm, although I suppose that is partly due to some time wasting on the internet. I’ll give it a go anyway, no internet at home until 10pm; email, paperwork, development and then surfing.

I’m not sure whether this is going to be doable, there may be other elements affecting my productivity. What do you think, what do you do to ensure you have efficient development time? What leeches your time the most?

I think I’ll start a log, a bit like the timesheets I have to fill in on any contract, but for everything in life.

Just thrown the switch.

I’ve just thrown the switch to start using WordPress for this site, and so far so good. OK, it’s not the most beautiful site in the world just now, but at least it is functional, and for me a lot smoother than using Blogger.

If you have any problems with the new RSS feed or anything else on the site, please let me know, cheers.

Switching blogging platform.

I have had a few problems using Blogger.com, it’s proving to be a little too slow for me, and quite often I’m getting errors back when submitting data, whether it’s changing config items or posting. I’ll probably get an error when I submit this!

I’m also a little paranoid about my data being held in someone else’s system, I guess at heart I’m a bit of a control freak (maybe that’s the highest contributing factor to me wanting to be a micro-ISV).

So, I’ll be switching blogging platforms in the next day or so to something where I control where the data is stored, and that if it all goes wrong it’s more likely to be my fault.

I love the template I’ve used via Blogger.com, I’m a great fan of Dan Cederholm who created it. But, I guess I’ll just have to start tinkering with my own template, I must admit that I will enjoy that, even if I am rubbish at web design.

So, my next post will be via WordPress (probably), I’ll start with their default template and work from there. This does however mean that the feeds will probably get mangled, but they should settle down after the initial upset. I’ll be pulling across my first few posts via this powerfull medium, and hopefully the comments attached too.

Fingers crossed!

But you're a 4gl guy!

It’s true, I currently make a living (and hope to for some time) writing database applications in IBM Informix 4GL. But that doesn’t mean I’ve always done that, and doesn’t mean it’s all I can do.

Like many people of my age who were dragged up in ol’blightly, I started programming in BBC basic, on the Acorn Electron and the BBC micro, many, many years ago. I also had a little play with Commodore C64s in my school’s computer lab as a teenager.

Later on I migrated to MS Visual Basic, which was a complete shock, the speed that you could write software was quite staggering to me, and a real eye opener. At uni however, I started playing with ANSI C, much to the annoyance of my lecturers, who couldn’t read what I wrote, it was their own fault for not specifying what language to use for solving our engineering assignments! And yes, my code was beautifully commented, so they did get some clues as to what was happening :-)

Since then I’ve dabbled in this and that, tried Java (yuk), tried Python (interesting), stayed well clear of Perl (double yuk), even spent quite a bit of time with Objective-C and WebObjects (where’s the job market?). But always harked for the simplicity and speed of MS Visual Basic, where I truly felt productive.

So, you’re probably saying, so go use VB already! Well, you see, even though I have dabbled with VB.NET in the last couple of years, when it comes to developing desktop apps, it’s got two rather large flaws as far as I’m concerned.

  1. That bloomin’ huge runtime, I hate it. I want to create easy to install “all in one” executables. What I give to the customer is all they’ll need (apart from a computer and a basic install of their OS that is, and, ahem, one other little server side app for my program to link up with).
  2. It’s not cross platform.

Many people would agree with me on my first reason, even Joel Spolsky has miss-givings, so I’ll not dwell on that. But some might argue with my second reason, highlighting that the desktop app is all about the Windows platform, that’s where the market is.

Well, I agree, but it doesn’t mean I like it, and it especially sticks in my throat as my preferred desktop is my Apple PowerMac, running the best UNIX ever, Mac OS X.

So, how am I going to get the same productivity as VB, but using my Mac as my main development platform, and still capture that huge Windows desktop market, with REALBasic, that’s how.

What's this all about?

Well, once upon a time, when I was asked “what do you do?”, I would answer, “I’m an IT Consultant”. Now this is kind of non-descript, and I wasn’t really happy with that answer. So, I changed my answer, I would instead say “I’m a freelance contractor specialising in bespoke database solutions in Informix 4GL”, which generally received a blank stare.

What I really wanted to say was “I write software”, a nice, clean and simple answer, and most people understand what this means, even if they have no idea on how to go about it. A high percentage of people that I talk to have a computer, or at least use one at work, they know what software is, they’ve had to have software installed on their PC, they’ve seen the box, the CD, and the crashes!

Now, I could say, “I write software”, because I do, day in, day out, and have made a reasonable living out of it for more than eight years, but it doesn’t quite ring true. I have this nagging feeling in the back of my head that I can’t quite say it until I’m writing software that people can buy, even though my clients are effectively buying the software I write by paying for the time it takes me to implement whatever it is they contract me to write. I want to be able to point people to a website where people can see details of what I’ve created, download it, fall in love with it and (hopefully) then pay for it. I want to be an ISV (Independent Software Vendor).

And this is where the story starts, I’ve come up with an idea for a desktop application that I think there is a small market for. It’s no killer app, and the user base will always be fairly small, but I think it’s a sustainable market, although it does depend on another application continuing to be profitable.

I want to get my feet wet, in fact I want to get soaked from head to toe, but I’m under no illusion that what I’m planning is going to pay the mortgage. Instead, this app is going to be the springboard into the world of software development and marketing for desktop apps. It’s going to take a lot of work, I probably haven’t even a clue as to how hard it’s going to be, but I want this new career to take off, badly, a belly flop isn’t even a consideration.

So, in the same vein as Lachlan Gemmell I’m going to write up a few notes as I walk along the long road to releasing my first piece of software to the public. Lachlan has quite a long release plan for his software, probably because his software sounds as though it may be quite a complex beast, even though he’s looking to target a market segment with simpler needs than usually expected for his kind of product. But I intend to get my product out as quickly as I can, in a reduced format, so that people can start using it and telling me what they would like to see in its future.

However, like Lachlan, I’m not going to spill the beans just yet on what I’m developing, until I’m closer to market I’m not comfortable with letting people in on the idea. Not because it’s some revolutionary product, it isn’t, but because it’s something that many developers could develop, and I don’t want someone with more desktop experience coming to market quicker than me. That would mean I would be at best second to market, and it’s most definitely best to be first, as the first law in The 22 Immutable Laws of Marketing contests.