Archive Of Blog Entries (Jan to Oct, 2006)
secretGeek .:dotnuts about dotnet:.
home .: about .: sign up .: sitemap .: secretGeek RSS

Archive of Blog Entries

blog entries from Oct 2006 to March 2007

Fri, 09 Mar 2007 03:31:02 GMT

Why Simplicity Pays

For every 25 percent increase in problem complexity, there is a 100 percent increase in solution complexity.

Conversely... for a 20% decrease in complexity -- there is a 50% decrease in solution complexity.

That's powerful stuff.

Fuzzy, dodgy maths, with made up figures, yes...

But POWERFUL fuzzy, dodgy maths, with made up figures!

Read On...

Tue, 06 Mar 2007 00:33:09 GMT

ISV: Independent of what?

The term ISV (Independent Software Vendor) is a funny one -- and it raises the question, independent of what?

I've seen three different answers to this:

  1. Financially independent
  2. Independent of Microsoft (or other large software vendor)
  3. Independent from any particular hardware manufacturer

I suspect the term has its roots in the third meaning -- independence from a hardware vendor -- as it recalls a time when most software was provided as a 'value added' component to the expensive, proprietary computers of the day.

But it's still an ironic and patronising term -- because an ISV is far from Independent.

If we had complete "financial independence" then we'd be able to give our software away, rather than selling it.

An ISV who makes software for Microsoft's operating systems (like, say... us) is naturally very dependent on the ongoing success of Microsoft.

Equally, an ISV who targets a specific platform -- Java, for example -- is dependent on that platform.

So the point is that when you strike out to build an ISV -- you might feel like an explorer, boldly going alone into the wilderness. But really you're a specialist insect, targeting in on a niche software habitat, created in part by large platform vendors (whether they're hardware vendors, operating systems, platforms like Java, ERPs like SAP, or other assorted trouble makers). And you probably also depend on specific 'vertical industries', on current social, economic and technological conditions... all sorts of phenomena which are utterly outside your control.

It's a shaky ecological niche you're headed for. Don't get zealous. Don't get attached, bambi. You can't control the niche you're in much more than an insect can control the elephant he's biting. But before you get stuck on any one elephant, you can be careful about choosing where to sink your teeth.

Bite wisely.

Read On...

Fri, 23 Feb 2007 20:37:53 GMT

TimeSnapper 2.3: Extract Text Using Optical Character Recognition

TimeSnapper 2.3 includes Optical Character Recognitiion

After much effort, we've now released the next incarnation of TimeSnapper -- version 2.3.

(Wondering what TimeSnapper is? Overview here)

The killer feature this time around is Optical Character Recognition. You can now select text straight out of the images you capture.

We've been keen to include this feature since day 1, and finally it's in!

Here's some pictures of it in action...

Read On...

Mon, 19 Feb 2007 00:41:28 GMT

Step 2 of 25 to Building a Micro-ISV: Reliable Hosting

So you've got a domain name that works for you: now you need a space to host your domain and ultimately your product.

This step should take you around fifteen minutes to complete. For procrastinators, this could be around 15 days. ;-). It will cost a little bit of money (it's one of the few steps that does).

This was going to be a very short, "bullet points only" entry... it's turned out quite a bit longer... Here we go...

Read On...

Thu, 15 Feb 2007 20:54:43 GMT

Pure CSS method for achieving Right Angle Corners

By now I've seen dozens of articles that help you get rounded corners in your web pages, either using CSS, Javascript, Ajax, automatically-generated graphics on-the-fly, or a combination of all of these techniques.

But for a sharp, professional look -- nothing beats that right angle corner look, which remains popular on many websites.

But how to achieve this crisp effect? And how to guard against cross-browser compatability issues?

For example, it's no good getting 90 degree angles in firefox if opera renders them as 89 degrees, and IE gives you 95 degrees.

The trick is to use the following nice clean pure-CSS solution.

Now let's see it in action!

This box has the modern 'right-angle-cornersTM' look and feel!

Of course, this code is not production ready -- a true web designer would use a JSON script injection technique to generate the right angle corners on the fly, using prototype to slowly fade the corners from a standard rounded look and feel, into the high impact square look.

If you do use this code, I'd of course like a link-back, and a cut of any derived profits.

(stuck in sarcasm mode due to sleep deprivation)

Read On...

Wed, 14 Feb 2007 11:31:26 GMT

Podcasts I like

I've had the chance to listen to a few of my favourite podcasts over the last week or so.

There seems to have been a recent outbreak of interviews with interesting people (if you're a programmer that is...).

Check out:

And when I feel like listening to nerdy stuff, rather than geeky stuff...

Read On...

Wed, 14 Feb 2007 04:39:46 GMT

Lifelogging? Think!

Lately I've seen all sorts of fascinating stuff about Lifelogging, lifestreaming, Lifebrowsing, the MyLifeBits project, clickstreams...

Basically, people are investigating ways of recording, storing, and searching everything they do. People are talking about all sorts of super clever gadgets, recorders, storage media, javascript hacks, mashups and more, to piece together their messy little Lifeloggers... One word people, TIMESNAPPER!

If 50% of your waking life is spent on a microsoft PC -- then you'll get 50% perfect lifestreaming with this one tool!.

And of course, we're thinking about features to take this further ;-)

Read On...

Thu, 08 Feb 2007 07:44:54 GMT

Eight Photos of the new arrival

big eyed baby

Photographic evidence that I wasn't making it up.

A small photo diary of lily's first week.

Read On...

Thu, 01 Feb 2007 09:47:33 GMT

A Girl

Yeh, you heard me.

Read On...

Sun, 28 Jan 2007 23:26:31 GMT

Step 1 of 25 to Building a Micro-ISV: Register a Domain

It's time to kick off the details of the 25 steps to building a micro-isv.

Due to the forthcoming birth of a child, these articles are going to be briefer than I originally intended. But hopefully they will be useful.

I know that my experience is limited, and I hope to gain useful feedback from you on every one of these points.

A lot of ideas will be expressed only in point form for now, as I don't have time to write them out in full, yet I don't want to leave them out entirely.

Now, on with it...

Read On...

Sun, 21 Jan 2007 09:29:29 GMT

TimeSnapper 2.2 -- Auto Popup? That sounds terrible!

TimeSnapper version 2.2 was quietly released a few days ago. Atli poured his heart and soul into providing a few features that were requested by a number of people. I'd like to give a walk through of the new features, to see if they interest you, or if you've any feedback.

Read On...

Thu, 18 Jan 2007 18:37:31 GMT

25 steps for building a Micro-ISV

As promised, here's my 25 steps for building a Micro-ISV which are hard learned steps based on our experience getting TimeSnapper to where it is today. Each of these steps is both harder than it looks, and easier than you'd think.

It's hard because there are pitfalls, procrastination, miconceptions, anxiety, conflicting opinions and confusion at every step. It's easy because, hey, you're a smart guy or gal, so you can do this stuff in your sleep.

I'm planning to write a blog entry on each of these, and yes if things go very well, it may be a book someday ;-)

The big news is that Scott Hanselman interviewed me, about this list, for this week's episode of hanselminutes, out now! (Hanselminutes, for those who live under sedimentary deposits, is a weekly audio talk show with noted web developer and technologist Scott Hanselman.)

If you want to get some early tips on all of these topics, please listen to the show! It was a real blast doing the show -- far more excitement than this little geek is used to. Scott and Carl were very helpful with all the technical aspects, and Scott was just as sharp and witty as you'd hope.

(He sure was enthusiastic about TimeSnapper too, which really means a lot to us)

Now, on to the list!

  1. Register Domain
  2. Reliable hosting
  3. Website design
  4. BasicWebsite content
  5. Install traffic monitoring on your site
  6. Create forums, encouragefeedback
  7. Maintain a FAQ
  8. Get the best screenshots you can
  9. Configure email for domain
  10. Get payment account
  11. Allow payment from your website
  12. Create a PAD file -- portable application description
  13. Register at download sites
  14. Strategy: separate "free" from "professional" products
  15. Get a suitable end user license agreement (EULA) -- infact get two!
  16. Auto update strategy
  17. License activation webservice/website
  18. Get a license management database
  19. Build a proper installer
  20. Obfuscate your assemblies
  21. Automate your build+release strategy
  22. Free up enough time/resources for dealing with support/feedback
  23. Shiny, Usable, Helpful
  24. Plan and enact your promotional strategy
  25. Do it all again

As each article comes out, i'll update this list to point to the relevant article.

Read On...

Wed, 17 Jan 2007 04:40:46 GMT

Five More Things You Didn't Need To Know

phil haack, adam cogan and geoff appleby linked to me in regards to a meme called 'five things you didn't know about me'. and apparently for every person that doesn't continue the meme a cat gets shot. so here goes.

Read On...

Thu, 11 Jan 2007 00:46:53 GMT

How to Sneak .net 2.0 into an organization

Yesterday, A client jokingly accused me of trying to sneak .net 2.0 into their organization. And although it wasn't deliberate, i realised that I was sneaking .Net 2.0 in. Here's a quick primer to help you do the same.

Read On...

Wed, 10 Jan 2007 00:00:04 GMT

What percent of normal people have the .net framework installed?

It's very hard to get a straight answer on this. And if you mine the stats of a Microsoft related website like this one, you'll get a very skewed answer.

Well a friend gave me some stats about his website, which is a non-technical site, dealing with the 'talent' industry. I think these stats will be closer to 'normal' people than stats I've seen previously ;-)

.NET CLR 1.0.37054.44%(2083 people)
.NET CLR 1.1.14320.01%(6 people)
.NET CLR 1.1.432241.70%(19586 people)
.NET CLR 2.0.406070.01%(5 people)
.NET CLR 2.0.502150.00%(2 people)
.NET CLR 2.0.5072711.02%(5175 people)
.NET CLR 3.0.043200.04%(20 people)
.NET CLR 3.0.04324.170.01%(3 people)
.NET CLR 3.0.045060.00%(1 people)
.NET CLR 3.0.04506.300.01%(6 people)
WinFX RunTime 3.0.507270.03%(13 people)
Total 46,967 people

The Micro-ISV articles will begin soon -- near the end of next week hopefully. Lots of material put together already, just some deals to sign off first ;-)

The hard bit is working out what to leave out. But hey, that's what good design is all about.

Read On...

Sat, 06 Jan 2007 04:13:05 GMT

Download It Now! Exec Inline: A VS2003 add-in that lets you run a chunk of code

Execute Selected Code item on edit menu

A couple of months ago I showed a short demonstration of an addin i use called Exec Inline -- well here's the installer for Visual Studio 2003

Download ExecInline Download 'ExecInline'

Read On...

Fri, 05 Jan 2007 03:01:55 GMT

Three Laws of Software Development

Inspired by Mitch Denny -- and based upon asimov's laws of robotics.

  1. A developer must write code that creates value.
  2. A developer must expend effort making their code easy to maintain, except where such expenditure will conflict with the first law.
  3. A developer must reduce their code to the smallest size possible, as long as such reduction does not conflict with the first two laws.

Everytime you break one of these laws, Bill Gates kills a puppy.

Read On...

Wed, 03 Jan 2007 20:24:19 GMT

Anxiety is a good thing.

I'm an anxious person -- always have been. And this doesn't have to hold me back, nor should it always hold you back.

Anxiety can mean that you spin your wheels when you feel you should be moving forward. Anxiety can mean you worry about things that never happen. There can be a lot of negative aspects of anxiety -- and an anxious person will be quick to point out all the negative consequences of their anxiety.

But come on, Anxiety is more good than bad. I'm always anxious to get things done. I'm anxious to please people. I'm anxious to do things well. Anxious means "eagerly desirous". I'm filled with desire -- I wake up bursting with ideas, I see something happen and I anxiously consider a hundred possible consequences. An anxious life has given me a fast brain, and the endless benefits that this concurs.

Sure, anxiety can be labelled as a mental disorder, with all the social baggage that this carries. And people can use their anxiety as a label or an excuse. But don't let the label overwrite the entire syndrome. Like anything there is more to it than just the negative connotations.

If you harness your anxiety, you'll reap tremendous benefits.

Life without anxiety -- no thanks.

Read On...

Sat, 30 Dec 2006 10:22:51 GMT

Predictions for 2007

Dynamic.Net... Link aggregators... DRM... myspace... a review of last year's guesses

Read On...

Fri, 29 Dec 2006 12:48:44 GMT

The Blogging Medium -- R.I.P.

Thanks for a genuine belly chuckle, Joel

Nothing to see here.

Ok ok, an article about the laptop fiasco continues here. I couldn't help it.

Read On...

Fri, 29 Dec 2006 02:24:44 GMT

New Year's Resolution: Build Your Own Micro ISV!

Is this the year when you'll launch a Micro ISV?

Every time a New Year rolls around I make a solid resolution that this is the year, finally, when i'll start my own little software company. And every year I fail.

But in 2006, as you know, I finally got there with TimeSnapper, in conjunction with Atli Björgvin Oddsson. And it actually wasn't all that easy. I can see now why it took so long, and why it's something that most people procrastinate about, and other people write books about.

Coming up with an idea was easy. Writing a free product was not too hard (particularly in my case, since Atli did all the work at that point). But moving from free to professional: that was a killer. Every step along the way was a potential for delays and confusion. The sheer number of steps was daunting.

What about you? Are you planning to start a software company some day? Have you let another year slip away?

There are pitfalls at every step.

If this is going to be the year for you, then maybe I can help. Do you need ideas? Encouragement? Practical advice? Serious help? (We all need serious help).

I've got a 25-point plan written out, of the steps we took to turn TimeSnapper from a give-away to a money making venture.

I've planned (but not yet written) a serious of blog posts about each one of these steps.

It's worked okay for me and Atli. We're not retired yet, but we've done a little better than we expected. And with sufficient feedback from the clever people who read this blog, this plan could be a useful one for others to read and learn from.

So stay tuned for the 25 steps to turn amateur software into professional software.

My new year's resolution is to work on sharing those 25 points.

The outline will be delivered soon. I'm looking at it now... nodding my head, hesitating and saying, yeh, i'll post this soon.

Read On...

Wed, 27 Dec 2006 20:39:53 GMT

What are the coolest XML projects? Really?

Oleg Tkachenko ran a competition, to give away a copy of Visual Studio Team System to whoever had the Coolest XML Project.

He just announced the winners, and a guy called Dave Pawson won, with a project for converting XML to braille. Good stuff Dave. But here's the weird part: I also won, thanks to a description of the next version of the World's Simplest Code Generator -- and also for leaking some details of a pet project of mine entitled, 'Forgiveness -- the easy way for humans to write xsl'

Here's a description of Dave's ubraille project...

Read On...

Sat, 23 Dec 2006 10:35:18 GMT

Download NextAction: Updated

Hello. You might remember a little utility I put out a few months ago called 'NextAction' -- it's purpose is to help you manage the tasks that are on the top of your mind.

Download NextAction Download NextAction! (updated)

I'm still using this tool every day, so i've tracked down and fixed some shortcomings in the product. They probably don't affect all users: only users with multiple monitors, and people who resize their screens or keep their task bars in strange locations.

The new features are:

  • Press use [Control] + [Up Arrow] to move the current paragraph to the top of the document.

    This essentially marks a task as the 'Next Action'

  • Press [Control] + [Down Arrow] to move the current paragraph to the bottom of the document

    This essentially marks a task as 'done'.

Next Action is just a multiline textbox that is always on top and always out of the way. It is semi transparent, except when it has focus. There is no configuration, no other features to tinker with: saving and loading happen automatically.

I'll probably add a context menu to it someday, from which other features will be available. If you've got ideas for new features that would suit this little application, please write to me, or leave a comment.

Some other features that were added between the initial release and now:

  • Global Hot Key: Windows key + N
  • Now floats above the taskbar
  • Ctrl+A -- select all
  • Triple Click to select a paragraph

I'm still considering renaming it to something completely different. I don't want Dave Allen to sue me. Actually, bring it on Dave. I can do with the publicity.

Read On...

Fri, 22 Dec 2006 03:57:45 GMT

Give Your Manager A 500% Productivity Enhancement

Easy. Replace his homepage with a small chunk of html that says:

Requested resource:
is currently locked by another user.

You cannot access this resource
until the current user has finished
performing read action.

Download your own copy here: locking_error.htm

But be prepared to handle the increased workload as the pointy haired boss assigns you more than the usual number of database re-paints per metric furlong.

Read On...

Thu, 21 Dec 2006 09:55:20 GMT

In Vista, final step of installation launches YOU!!

I learnt from NagarSoft that the security conscious Vista doesn't like the idea of an installer that has a 'Run Program Immediately After Installation' step at the end.

This is because "Any processes Setup spawns will inherit the same privileges as Setup" (from Inno Setup Knowledge Base, FAQ Vista)

Okay well this is sad.

An A+ For Security! But An F for Usability!


Read On...

Thu, 21 Dec 2006 02:11:28 GMT

The Macho School Of Programming

A very macho programmer

If you've got time to write comments -- you've got time to refactor.

If you've got time to refactor, you've got time to write unit tests.

If you've got time to write unit tests, you've got time to redesign the system.

If you've got time to redesign, you've got time to drink.

Have a beer. Comments are for sissies.

Read On...

Thu, 21 Dec 2006 01:17:27 GMT

The Project Never Ends

What's the expected completion date for your project? And is that really the end?

Projects never end. This only just occurred to me: projects never end.

Whatever project you're doing -- the end is just the beginning.

Launching a website... maybe it's the beginning of a new business.

Tearing down an old building -- something will be built in its place.

Planning a wedding -- that's just the start of the marriage.

Planning for the birth of a child... is the project over once the tyke is born? (congrats to s&p, by the way ;-))

Dethroning the dictator of a country... sounds like the beginning of a new era, not just the end of an old one.

Maybe your involvement with one project will end and you'll move on to work on others. But the work never stops, the projects never end.

I'm exhausted just thinking about it.

Good luck in all your projects.

Read On...

Wed, 20 Dec 2006 00:10:56 GMT

The TDS RPC is FUBAR? You don't say.

I just got this message in an exception...

"The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 5 ("@Amount"): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision."

Turned out I'd divided by zero, and attempted to send the result to a stored procedure.

Such a peculiar error message: by turns cryptic, descriptive, informative. Just thought I'd share it. ;-)

Read On...

Sat, 16 Dec 2006 12:52:39 GMT

Gunderloy, Spolsky, Atwood: three big idiots.

[disclaimer: i'm a big fan of these three people, so much so that i'd take the time to criticise them publicly ;-) ]

In which I attempt to demonstrate that three of my heroes are indeed fallible human beings. And rather than do the nice decent thing and write to them privately, I insult them publicly for the GOAM (er, Good Of All Mankind).

Gunderloy -- idiot? Why?

In a stunning, yet well-telegraphed, event, Mike Gunderloy -- author of the Daily Grind -- has quietly drifted away from the warm embrace of the borg collective, er Microsoft, and decided to re-start his career in the Linux world. Go and check out his new blog, 'A Fresh Cup' for some news and background on this move.

The good news for microsoft consumers like myself is that Mike will continue to publish the Daily Grind for the foreseeable future.

But what's going on?

As long as i've been following Mike's writing he's been very critical of microsoft, cynical about Longhorn/Vista and very under-whelmed by office 2007. The cynicism was pretty powerful at times (hey that was always my favourite part!) and boiled a little hotter than usual lately when he attacked the office ribbon licensing scheme.

I think that in the last few years there are two sides to microsoft. We see these two sides continually.


Read On...

Sat, 16 Dec 2006 10:01:49 GMT

Deadlocks: What would Feynman do?

deadlock info from trace 1204

When confronted with a difficult situation, I often ask myself "What would Feynman do?"

And I know that Richard Feynman, apart from being a brilliant theoretical physicist, gifted lecturer, writer, problem solver, great mind of our age, and all-round wise-guy, was also a bongo player. I don't personally own a set of bongos, but i do have a large swiss ball -- so i took to sitting on a computer chair, with the swiss ball between my knees, beating out a funky congo rhythm using two heavy winter socks as drum sticks. Just Like Feynman.

The problem at hand was deadlocking. Boom ba-da-boom. One little deadlock can ruin your whole highly-concurrent service-oriented-architecture. Boom ba-da-boom.

Deadlocks are easy to fix once you know the cause and you have the solution and it's all wrapped up and you're looking back on it later, preferably with a Singapore Sling in one hand, and an elbow propped on a bar. Listening to some groovy jazz. Tapping your foot, and smiling. Oh, there's nothing easier to fix than a deadlock. Once it's fixed.

(continues, with mystery solved)

Read On...

Sat, 16 Dec 2006 09:05:03 GMT

Hey idiot, I've got toothache. BOO!

Horse walks into bar, barkeep says 'Why the long face?' Now laugh or I might poke you in the eye, my pretty little kitten.

What's all thsi about then? Kathy Sierra says you should begin your talk/book/blog entry in the following ways:

  • Be provocative
  • Evoke empathy
  • Do something surprising... VERY surprising
  • Start with something funny
  • Promise there will be conflict
  • Start with a dramatic key event or turning point
  • Mystery, suspense, intrigue
  • Deliver an emotional experience

Just checking if doing all of those things at once is extra effective. ;-)


Read On...

Fri, 08 Dec 2006 10:11:51 GMT

And Microsoft has Won

.net borg sphere

You know, I don't really think they lost the api war after all. But I'll get to that in a moment.

Human Interest Back Story

Once upon a time, I was on holiday in Italy and I got trapped talking to a group of girls from New York. All they could talk about was New York, New York (the city so nice, they named it twice). One of them said something like this:

Now, about that war...

Read On...

Sat, 02 Dec 2006 09:05:55 GMT

10 Websites that would Not work as Wikis

Wikis are great, i love wikipedia, ward's wiki, etc. But some stuff just doesn't lend itself to wikification. Here's a sample of '10 Websites that would Not work as Wikis'.

  1. The FBI Most Wanted List
  2. Sports and Betting Results
  3. A stock market/exchange
  4. Google Results
  5. The Guinness Book of World Records
  6. Train and Plane TimeTables
  7. Your National Constitution
  8. Prisoner Release Dates
  9. The 2007 United Stattes Presidential Election Results
  10. An Online banking application

What websites/applications do you know that couldn't (or could) be a wiki?

Read On...

Fri, 24 Nov 2006 11:13:58 GMT

How To Be A Couple Of Micro-ISV People On Opposite Sides of the World

maybe the ui could do with some review...

This is a follow up to the previous article about the new version of TimeSnapper... this is more the inside Micro-ISV story...

My co-TimeSnapper-er, Atli Björgvin Oddsson, has put in many long hours getting this one to the place we were aiming for. We're now fulfilling a good number of the aims we wanted with the TimeSnapper product. There's still a lot of room to move but this one is taking us a long way further down our path.

The inside story behind 'Atli re-wrote the main form' -- okay okay, the main form was a bit too reminiscent of this famous and well regarded cartoon about UI. So, I rewrote the main form. And boy did it suck. Much worse than the original. But, i think history will show that it was a good form of suckiness, as it was so bad that Atli immediately had to delete it and come up with something much better. There's a lesson there, yes? Something like this:

Inspire action amongst your comrades by being a model to avoid

But on to other things...

One of the grooviest changes is that Atli moved us onto the dazzling nullsoft installer, instead of the woeful microsoft installer.

It's bewildering that nullsoft provide a free installer so far in front of the microsoft installer. I haven't personally grappled with how the nullsoft installer works: i just know that it was originally built as an installer for WinAmp, and grew from there. The Microsoft Installer (if you're using the standard off-the-shelf visual studio installer project) is woefully inadequate. As a show-stopping example of a sad installer product, you can't configure it to run the product immediately after install. WTF!? I know that, as a user, when I download some new tool off the internet I must run it straight away. If i don't run it straight away, i'll forget to run it ever


The philosophy behind this release, as a Micro-ISV, was that we'd add "Just One New Feature", a simple feature, and get the release out quickly. You know: we wanna be agile, we wanna be slick, we wanna be Web 2.0 and all that. The feature was going to be the 'Activity Grid' -- so that you could view (and export) a breakdown of how your day was spent.

The 'Just One New Feature' philosophy is a clever one... okay the reason I like it is because I invented it... but it didn't turn out to be so simple. The philosophy immediately expanded into 'Just One New Feature! Plus any bug fixes that arise' which seemed like a necessary improvement. But in no time the true philosophy became 'Just One New Feature! Plus any bug fixes that arise, and can't i just slip in one other feature, pretty please because it's way cool and i think it's going to improve things no end and anyway I'm on holidays at the moment and I am too, and both Atli and Leon have babies on the way due early next year, how cool is that, and actually, we ought to obfuscate the code too, cause some hacker dude wrote to us and told us we were idiots.' So that's our official, final philosophy. Just to repeat it, in big letters:

Just One New Feature*

* plus any bug fixes that arise, and can't i just slip in one other feature, pretty please because it's way cool and i think it's going to improve things no end and anyway I'm on holidays at the moment and I am too, and both Atli and Leon have babies on the way due early next year, how cool is that, and actually, we ought to obfuscate the code too, cause some hacker dude wrote to us and told us we were idiots.

So the Just One New Feature plan blew out a little bit... and I confess there was a little bit of 'oops, Leon made a mistake in the source code repository...' that I can only attribute to a bad week, but you get that anytime you make the fool hardy mistake of letting me near a source code respository... so we recovered. But the 2.1 product itself is quite nice, so i hope it pleases. Go on, buy the sucker, or at least download it.

Anyway, I plan to do more writing about the whole 'Micro-ISV' topic, since it's a big part of my life now -- unless you object. Maybe a 3-minute guide to being a micro isv, eh?

Well, thank you, good people. Good night.

Leon and Atli.

Read On...

Fri, 24 Nov 2006 10:39:49 GMT

Sexy New Version: TimeSnapper 2.1, we finally grow up

TimeSnapper 2.1

In the last few days we've slipped out the new version of TimeSnapper, number 2.1, and it's a big jump.

First a wrap up of the new features, then a quick chat about the philosophy of being a Micro-ISV, and so on.

New Features In A Nutshell

New Look n Feel. Here's the new main form:

so attractive you are not afraid to show your friends

I'm sure you'll agree, it's lightyears ahead of the old front screen:

version 2.0

Now Includes a Breakdown of your time

Crucially, you can now view (and export) a breakdown of how your time was spent, thanks to a very versatile grid:

version 2.1 Activity Grid

(We've planned to have a form like this since the very start, and we've rewritten it three times to come up with something good enough to satisfy)

Now, in the 'Day Browser' you can select, and update a "range" of snapshots (rather than just selecting one at a time)

version 2.1 Activity Grid

This is a pretty powerful feature in itself, and we'll be doing more with this in future versions.

Oh, download it, by all means.

There's also a number of little features added specifically to tie in with specific needs of specific customers. We like nothing more than a specific customer and will always do what we can to help.

Okay -- that's it for the professional summary (did you register your copy yet?) now for the discussion.

In fact -- executive decision -- i'll post the next bit as a blog entry all of its own.

Read On...

Fri, 24 Nov 2006 00:27:04 GMT

Passwords in Sql Server 2000 are Case Insensitive by default -- WTF?

Whereas, in SQL server 2005, Passwords are always case sensitive -- a seemingly more sensible default. But, infact, in SQL Server 2005, you can't even force it to allow case-insensitive passwords.

Good, you may think. SQL Server 2005 has done The Right Thing. Passwords should always be case-sensitive, this is dictate of law etc. But no -- if you want to be able to smoothly upgrade from SQL Server 2000 to SQL Server 2005, you need them to be capable of behaving the same.

It's great that SQL Server 2005 is 'secure by design' and 'secure by default' -- but we live in the 'real world' where we don't control every aspect of the systems we work with.

For example, the following scenario has just trapped a client of mine:

They have legacy applications with hard-coded passwords embedded in them. The hardcoded passwords are unfortunately in a differing case in differing legacy applications.

So now the upgrade path from SQL Server 2000 to SQL Server 2005 involves rewriting these legacy applications, even though, from the businesses point of view the legacy applications are working perfectly.

At first I swore and blamed the idiot developers who emdedded hard-coded passwords, in the old applications. Then I swore and blamed them for setting the wrong case. Then I swore and blamed SQL Server 2000 for ever allowing case-insensitivity in passwords in the first place.

(aside: WTF were earlier database devs doing allowing case-insensitive passwords by default?? I, for one, never realised that case doesn't matter in sql server 2K passwords. This depends on the case-sensitivity of your collation by the way (but since it's case-insensitive by default i expect most servers will have case-insensitive passwords). I think that sybase -- the mother product -- is case-Sensitive by default, so in order to assign blame we don't have to go back to sybase, the blame lies with microsoft.)

But all those things are in the past: they are not new suprises:

The legacy of idiot programmers and insecure databases is part of the landscape that a modern system must cater for.

The real shortcoming here is SQL server 2005. It's supposed to provide true 'SQL Server 2000' compatibity. Yet there was a case where that compatability is broken.

The solution in this case was to rewrite some of legacy apps, this time with an improved configuration model, and in other cases to hunt down the source code, fix the passwords and redeploy. It was an unexpected cost of the upgrade process, discovered very late in the game.

Things are back on track now, and overall the upgrade process was super-smooth. And shiny, very shiny. SQL Server 2005 is pretty much a thing of joy and a treasure to behold. But I'm still thinking about idiot programmers:

It's an idiot's world, we just live here.

Read On...

Tue, 21 Nov 2006 01:59:47 GMT

Never Pay For Application Development Services Again

Design: Free
Implementation: $5
Working System: Priceless

Part A:

  1. Find an IT company willing to write a detailed quote for free.
  2. Bully them until they either drop their price to $5, or they quit revising the quote.
  3. If the IT company quits, then find another IT company, get them to write a 'more detailed' quote, based on the previous quote.
  4. If the result is good enough to begin implementation, move on to part B.
  5. Otherwise, back to step 2.

Part B:

  1. Rename the quote document to 'detailed design'
  2. Find an IT company willing to mock up a prototype based on the detailed design.
  3. They should be willing to do this for free based on loose promises about a highly-paid implementation and deployment scenario. Other fantasies can be used to deceive.
  4. If, despite all your best fairy tale stories, the IT company is not willing to do the prototype for free -- go to step 2.
  5. If the prototype is good enough, put it into production. End.
  6. Otherwise, find an IT company willing to 'take a look at a few bugs' in a prototype you've got.
  7. They should be willing to do this for free based on loose promises about a highly-paid implementation and deployment scenario. Other fantasies can be used to deceive.
  8. If, despite all your best fairy tale stories, the IT company is not willing to 'take a look at' (ie. resolve) the bugs for free -- go to step 6.

Part C:

  1. Burn any invoices that show up.
  2. Remove finger prints.
  3. Delete emails.

Read On...

Sat, 11 Nov 2006 00:22:44 GMT

Quiz Show for John

my Sister-In-Law, Brother, and Sister, on the set of temptation

Hey groovers, particularly those in Australia, be sure to watch the television show 'Temptation' (aka 'The new sale of the century') this week, as my brother John will be a contestant on the show this Thursday. And of course if he wins he'll appear on subsequent shows until he is defeated, takes the money and runs, or is arrested for cheating.

John has always been a legendary quiz master within our family. When he was maybe eight years old, he was faster and more knowledgeable than all the adult contestants in the show. I thought then that if they allowed kids to compete against the adults, he'd be sure to become a champion. This week we'll find out if the intervening years have enhanced or depleted his childhood genius. ;-).

Long time readers may recall that, last year, John's wife Al went on the same quiz show. Al did well but was trumped in the fast money. The highlight (for an irony lover like me) was when Al won a 'Who Am I' question, with the answer 'Germaine Greer' (outspoken feminist) and received a cosmetics package as a prize. This was sort of the equivalent of winning a hand gun after answering 'Mahatma Ganhi'.

So Thursday and beyond -- watch for John on channel 9, 7pm.

(By the way, the photo is of my Sister in Law, Allison, my brother John, and my sister Jody. Allison and Jody are both due to have babies in the near future. Another generation of contestants in quiz shows, no doubt.)

Read On...

Fri, 10 Nov 2006 23:20:29 GMT

On The Importance of Whitespace


Cheers Simon.

Read On...

Fri, 10 Nov 2006 23:08:19 GMT

Reasons for a headache

  1. Eye Strain
  2. Sleep deprivation
  3. Physical Exhaustion
  4. Neck tension
  5. Jaw tension
  6. Neural Tension
  7. Stress
  8. Constipation
  9. Hunger/ Low bloog glucose
  10. Virus / Fever
  11. Toothache
  12. Sinus pressure
  13. Ear infection
  14. Caffeine withdrawal
  15. Hangover
  16. brain parasite
  17. brain tumour or absess
  18. ate too much ice-cream!

Okay, okay. It was the ice-cream.

Read On...

Sun, 05 Nov 2006 11:19:10 GMT

Whose Month is it anyway?

Is November really Powershell month? Is it MOvember (the month when we all men grow a moustache to raise discussions on male cancer)? Or is it National Novel Writing Month (NaNoWriMo) ?

Novemeber is officially 'Month' Month, the month that is traditionally dedicated to something or other.

I know November has arrived when the traffic suddenly jumps up for a page I wrote at the dawn of this blog, titled 'How to write a novel'. Although that page is basically a list of all the mistakes i've made when trying to write in the past, I get a steady flow of emails telling me that my techniques are great and have worked well for other people. I wonder if Roedy Green gets fan mail thanking him for the great tips on programming?

Read On...

Thu, 02 Nov 2006 20:56:24 GMT

Your Next Action is: Download NextAction!

Next Action

The Top Of Your Mind Is A Very Very Small Place.

And NextAction -- is a Very Very Small application to manage the top of your mind.

It boasts less features than any other self-management tool.

Hence it is more effective.

There is no configuration -- NONE! and not even a save button. Saving and loading happen automatically.

Next action is always on top, and always out of the way. It only has one purpose: to help you track what you are doing right now, and to keep this at the top of your mind.

It's from the team that brought you TimeSnapper and it is free.

Download NextAction Download NextAction!


Bugs, help requests, ideas... send em in...

Read On...

Fri, 27 Oct 2006 05:33:11 GMT

A Very Simple .net Model View Controller

MVC. Model View Controller. Ahhh. One of those pattern things that your java kids are fond of. And now getting a lot of love from the RoR crowd.

From what I can tell so far, one of the main historical uses of MVC is to give dull people something to argue about.

"No no -- that's not pure MVC! If you go back to page 97 of GoF..."

And yet... I'm intrigued. The promise is nice.

I haven't found any simple examples using MVC for a .net application. So I'll give it a go. And it will be bad and you will tell me how to improve it ;-)

It's the view/controller bit that I'm a little mixed up with.

First, here's my architecture (notice the small 'a' in architecture... )

Read On...

Fri, 27 Oct 2006 05:31:06 GMT

The trouble with "High Priority"

[This is a long rambling rant -- you can stop reading now].

If you're bug tracking software lets you say that every single bug in the system is high-priority, then it's meaningless. You may as well say everything is low priority.

The answer isn't to have more granular priority levels (super urgent, semi urgent, sorta urgent and so on). To make a priority feature work you have to go holistic and look at the context of the bug...

Read On...

Fri, 27 Oct 2006 05:24:19 GMT

The difference between goals and dreams.

[this seems to be some kind of preachy, life-coach article... stop me if i suck at this.]

Big projects often involve both goals and dreams. These two things are similar but different. One of my pet theories is that in a big project you need both dreams and goals, and you need to distinguish between them. Hey, I'm gonna make that into a subheading, so the skimmers will read it too...

Read On...

Wed, 25 Oct 2006 00:01:01 GMT

Concurrency Bug in all editions of Visual Studio

more than 1 visual studio open... settings will be gazumped

You often have more than one copy of visual studio open. When you change a setting in visual studio, the change will be wiped out if you close another copy of visual studio after you close the current one.

This is a frustrating bug, and one that could be addressed in simple ways. The best approach would be if settings were merged together. Say I've changed the C# settings in one instance of visual studio, and I've changed the tool box settings in another instance. There's no conflict there, so all settings could be merged together.

Okay, so that's difficult. How about if settings are only saved then they've been changed. That would be enough to fix a good percentage (perhaps the majority) of problems with concurrency.

The current "Last In Wins" approach is really out of place -- when you consider how much effort they've put into the rest of the settings architecture. There's at least fifteen pages about settings at msdn..

Read On...

Thu, 19 Oct 2006 21:23:04 GMT

Demo: Exec-Inline, an Add-in that executes the currently selected code, immediately

Execute the code immediately under the cursor

You're in Visual Studio (2003 in this case)

  1. Highlight the code you want to run.
  2. Press the 'exec inline' button on the toolbar.
  3. The code is compiled and executed in its own little assembly

All credit goes to these four places:

Code compilation retyped from jconwell's Dot Net Script Project at CodeProject.

Wrapper around compilation retyped from dstang2000's DynamicCompileAndRun project.

Help with writing a VS Add-in: Scott Swigart, PasteAs Visual Basic Add-in

And help with getting the currently selected text from the IDE, retyped from Kevin McFarlane's VS Csharp Macros page.

I deliberately re-typed, rather than copying and pasting their code, so that I'd have to really look at what was going on in every place.

(continues with 'how does it work')

Read On...

Thu, 19 Oct 2006 02:38:38 GMT

Ruby versus .Net? If Languages (and IDE's) were Vehicles... what would you be driving?

Ruby: a racing house on wheelsRuby on Rails: jetpack bicycle

Ruby: Racing Bicycle

I'd describe Ruby as a racing bicycle. Highly maneuvrable, stylish, quick to launch etc. Yet not the greatest top speed, and some potential safety issues, due to the lack of compile-time type-checking. It's got its pros and its cons.

.Net: Motor Home

Dot Net is a house on freakin wheels. Has everything built in, good on the open road. But takes a while to get it started, less manuevrable in traffic and sometimes hard to park.

In the context of this metaphor you see how ridiculous this question is: "What feature can we add to .net to give it a ruby-like appeal?"

Or the metaphorical equivalent: "What feature can I add to my motor home to make it more like a bicycle?"

You don't really choose between these two things. You use the right vehicle for the job. Some morons would insist on using the same type of vehicle in every scenario. Be they bike bigots, MotorHome bigots, or anywhere in between.

Wait: but what about Ruby on rails?

Ruby on Rails: Jet Bicycle

I picture a jet pack on a bicyclist's back. And i quickly found just such an image! I chose thise over a motorcycle because i figured that RoR doesn't fundamentally alter Ruby -- it changes the way it's used.

Read On...

Hey good looking!

I see you've scrolled all the way to the foot of the page. Check out the secretGeek archives!


The Canine Pyramid The Canine Pyramid
Humans: A Tragedy. Humans: A Tragedy.
OfficeQuest... Gamification for the Office Suite OfficeQuest... Gamification for the Office Suite
New product launch: NimbleSET New product launch: NimbleSET
Programming The Robot from Diary of a Wimpy Kid Programming The Robot from Diary of a Wimpy Kid
Happy new year 2014 Happy new year 2014
Downtime as a service Downtime as a service
The Shape of Your Irrationality The Shape of Your Irrationality
This is why I don't go to nice restaurants any more. This is why I don't go to nice restaurants any more.
A flowchart of what programmers do at work all day A flowchart of what programmers do at work all day
The Telepresent Man. The Telepresent Man.
Interview with an Ex-Microsoftie. Interview with an Ex-Microsoftie.
CRUMBS! Commandline navigation tool for Powershell CRUMBS! Commandline navigation tool for Powershell
Little tool for making Amazon affiliate links Little tool for making Amazon affiliate links
Extracting a Trello board as markdown Extracting a Trello board as markdown
hgs: Manage Lots of Mercurial Projects Simultaneously hgs: Manage Lots of Mercurial Projects Simultaneously
You Must Get It! You Must Get It!
AddDays: A Very Simple Date Calculator AddDays: A Very Simple Date Calculator
Google caught in a lie. Google caught in a lie.
NimbleText 2.0: More Than Twice The Price! NimbleText 2.0: More Than Twice The Price!
A Computer Simulation of Creative Work, or 'How To Get Nothing Done' A Computer Simulation of Creative Work, or 'How To Get Nothing Done'
NimbleText 1.9 -- BoomTown! NimbleText 1.9 -- BoomTown!
Line Endings. Line Endings.
**This** is how you pivot **This** is how you pivot
Art of the command-line helper Art of the command-line helper
Go and read a book. Go and read a book.
Slurp up mega-traffic by writing scalable, timeless search-bait Slurp up mega-traffic by writing scalable, timeless search-bait
Do *NOT* try this Hacking Script at home Do *NOT* try this Hacking Script at home
The 'Should I automate it?' Calculator The 'Should I automate it?' Calculator

Archives Complete secretGeek Archives

TimeSnapper -- Automated Screenshot Journal TimeSnapper: automatic screenshot journal

25 steps for building a Micro-ISV 25 steps for building a Micro-ISV
3 minute guides -- babysteps in new technologies: powershell, JSON, watir, F# 3 Minute Guide Series
Universal Troubleshooting checklist Universal Troubleshooting Checklist
Top 10 SecretGeek articles Top 10 SecretGeek articles
ShinyPower (help with Powershell) ShinyPower
Now at CodePlex

Realtime CSS Editor, in a browser RealTime Online CSS Editor
Gradient Maker -- a tool for making background images that blend from one colour to another. Forget photoshop, this is the bomb. Gradient Maker

[powered by Google] 

How to be depressed How to be depressed
You are not inadequate.

Recommended Reading

the little schemer

The Best Software Writing I
The Business Of Software (Eric Sink)

Recommended blogs

Jeff Atwood
Joseph Cooney
Phil Haack
Scott Hanselman
Julia Lerman
Rhys Parry
Joel Pobar
OJ Reeves
Eric Sink

InfoText - amazing search for SharePoint
LogEnvy - event logs made sexy
Computer, Unlocked. A rapid computer customization resource
Aussie Bushwalking
BrisParks :: best parks for kids in brisbane
PhysioTec, Brisbane Specialist Physiotherapy & Pilates
home .: about .: sign up .: sitemap .: secretGeek RSS .: © Leon Bambrick 2003 .: privacy

home .: about .: sign up .: sitemap .: RSS .: © Leon Bambrick 2003 .: privacy