Sat, 03 Jan 2009 08:46:10 GMT
Summary.
You're an idiot. Deal with it.
The longer version.
I've been pondering the chronic over-supply of stupidity, and I've come to a new conclusion.
Stupidity itself is not the problem. Abundant stupidity is inevitable. The problem is the people (like you, for instance) who don't even begin to suspect that they are stupid. People who insist they're God's gift to intellectual discourse. But in reality: as thick as whale blubber.
So here's a matrix to show four different types of people... the cross product of those who think they are smart (or dumb) and those who are actually smart (or dumb).
This matrix has four types of people. Stealing an idea from my usability-buddies i've assigned a 'persona' to each quadrant:
- Forest Gump: stupid, but he knows it.
- Homer Simpson: is actually dumb, but seems to think he's the cleverest guy alive.
- Columbo: is actually smart, but comes across as quite a dope.
- Mr Spock: smart, and knows exactly how smart he is.
Here's a pictorial version.
And here's my guess at how common (or rare) each of the four categories are.
(I started with the rule that only 20% of people could be called smart, and then assigned a breakdown after that.)
The chief lesson: lots of Homers, very little of everything else. The stupidity vortex is spreading. More on that later.
The goal, interestingly enough, is not to end up in the lower right (Spock) but in the lower left (Columbo).
Why would a smart person (a Spock) decide to put themselves in the third quadrant and become a Columbo? Because they're smart enough to realise that they're really stupid. Stupid for two reasons.
Two things make you stupid
There's two reasons that a smart person should realise they are still, essentially, stupid.
The obvious thing is that no matter how much you know, your knowledge is an insignificant dot compared with the sum total of what can be known. (It's even very small compared with the sum total that other humans currently know.)
But here's the real kicker: every idiot in the world knows at least one or two things you don't know.
I've gone all out and used Powerpoint to create a venn diagram (at right) to help illustrates this point.
Here we're comparing a genius with an idiot -- and the size of the circles indicates the relative size of their 'knowledge' or wisdom or intellect or some other hard to measure, but easy-to-chat-about concept.
Clearly the genius has greater brain points -- and indeed knows almost everything the idiot knows. But look out genius, because there's still a little slither of things the idiot knows that you don't know. And this is a humbling thought.
The idiot won't hesitate to grab onto those one or two tiny points and rub your nose in them mercilessly. Trust me on this: I've done it to smart people many times over.
So don't get too cocky there Spock. Chill out, Yoda. Pull your head in, Gandalf.
Stopped Clocks
To remain humble even in the face of blatant stupidity, never forget:
"Even a stopped clock is right twice a day."
Tattoo that on the back of your eyelids.
The real lesson
But the real lesson is this: if you think you're Spock, you're much more likely to actually be Homer Simpson.
Please, dear idiot reader, err on the side of safety and assume that, like me, you are a mental ass hat with much to learn. We'll all be better off.
Final word: How To Get Smart
One final word though, on a more positive note... it might be possible to actually become smart. Imagine that?
I haven't tried this personally, but according to 'Wetware refactorings' which quotes 'Pragmatic Thinking and Learning: Refactor Your Wetware' by Andy Hunt:
...in a rich environment with things to learn, observe, and interact with, you will grow plenty of new neurons and new connections between them...
Your working environment needs to be rich in sensory opportunities, or else it will literally cause brain damage.
Read On...
Fri, 02 Jan 2009 11:46:14 GMT
i've always been itching to tinker with microsoft robotics studio -- but i put it on my list of "things NOT to do" a long time ago. There's not enough time to play with every good thing in life.
But last Christmas i spent a bit of time on making fractals in logo, and learning F#, and drawing awesome robot pictures... so it's only fair that this christmas i'd crack out microsoft robotics studio and give it a tinker.
As a bonus, my nephews are around and I was hoping to help get them hooked on a life of computer programming.
first impression:
stupid roadblocks. I know this is an awesome base operating system to unify and enable all the robotics systems of the world... but my god, nothing is obvious. The "pit of success" idea seems to have overlooked these guys.
I like to jump in anywhere and hope that it makes sense. That didn't seem to be appropriate here. Jumping in anywhere lead to confusion.
So I swallowed my pride and headed to the first tutorial. That was utterly lame. So I moved to tutorial 2. Lame. There is no tutorial 3... no sure why, but the next in line is tutorial 4. I loaded that in visual studio, compiled and ran... okay... some potential here... something to sink my teeth into... but oh god, how about that confusing user interface from the team that UX forgot.

Quick reminder about User-Interfaces By Developers
Dear developers (and this includes me) -- please don't open up the windows forms designer, blow chunks wildly, and then publish it to the world.
Either get a usability expert to provide some nice feedback or, at the very least, see if your little sister can understand how to use it. Pure developer UI can be a terrible thing.
Now back to the task at hand.


Explain this to me... someone... please...
Variations on this 'dashboard' form are common in the tutorials. And it's very 'developer UI'. This form is fail.
Generally if you click anywhere on this form you get two responses: nothing, or an exception.
After a lot of experimentation I worked out that you have to click in the boxes in a particular order (that the UI doesn't give any clues about).
Your average programmer would be able to work this out quite easily if they were motivated. Fine. But don't even think about handing this to your little nephews.
After working out the right order, we went in to the code (we being me plus my brother in law Rick) and re-ordered the controls to make it more appropriate, and gave better feedback on errors. A two minute refactoring, seriously.

Now we found that, with meticulous clicking and typing, we could convince the articulated robot arm to move in whatever way we wanted. (Yay! We knocked the dominoes over!)
It was cool in a way that only your most-geeky segment of the audience could begin to comprehend. For example, I loved it. But the nephews: not so much.
I'm pretty sure it gave little more than a whiff of the real power of this platform. I've listened to podcasts where people rave about the concurrency and coordination runtime, and the way real industrial houses use this software to simulate, build and control their real-world robots. From where I am right now, it takes quite a bit of imagination to see those distant capabilities.
Some things I'd love to be able to do:
- click on an object in the simulation environment and thus have it 'selected' in the remote control. (or even less -- float over an object in the simulation and have its name as a tooltip)
- record a series of movements and replay them.
- use a
logo-like language for talking to these little robots. The powershell team could give great guidance on this. - move the cameras around. (I know I can work this out programmatically -- but it's a pretty basic thing I shouldn't need to be a programmer to achieve)
- Hit reset -- to get the scene back to how it was at the start.
Computer games are full of lessons. They give you clear goals that get progressively harder. What each 'simulation' needs is an obvious goal. The final goal for tutorial 50 might be: write an autonomous robot that can drive 100 kilometres through rough terrain, unassisted. Some goals from intermediate levels: tell a robot to move; teach a robot-mouse to solve a puzzle; use a vision sensor to shoot down a robot duck.

In the meantime, anyone know what would be a good robot to purchase? I'd like to get a real world robot, provided I can also tinker with it in robotics studio. Some of the things i'd like it to be able to do for me:
- Mowing the lawn, including trimming the edges.
- The shopping (everything from keeping track of supplies, to collecting the goods)
- Organising breakfast (and cleaning up afterward.)
- Noticing when the batteries are low on my phone (or ipod, or camera, etc.) and re-charging the items as needed.
- Hunting down and killing anyone who has ever annoyed me.
- Giving gifts to children once per year.
I imagine he'll look something like this -->
Read On...
Wed, 31 Dec 2008 10:31:32 GMT
I've had a long off-line sojourn, but have been feverishly writing and programming throughout.
There are many updates to follow. Including journeys with Microsoft Robotics Studio, Oslo, Hudson, Spock and that notorious programming-fiend: JFK.
Happy new year,
lb.
p.s. here's a picture of Joe Cooney dressed as Hunter S. Thompson. Note that Joe is not ordinarily bald, and nor is he wearing a bald wig. I only include this artefact because a) it is a sad indictment on the state of mind of young joe, and b) HST is a particular hero of mine from years long past.


Read On...
Sat, 20 Dec 2008 12:26:26 GMT
I had an email today entitled "Worst Bug Ever" -- it seems that the "Donate now" link at World's Simplest Code Generator (javascript edition) was not actually functional.
This was caused by a very tricky technical problem that we in the bit-shuffling industry like to refer to as "Copy Paste error." I'd copied the code for that button from the earlier 'Classic ASP' version of WSCG. And i guess i never once actually clicked on it, to test the damn thing.
It's sad to think that maybe, had that link been correct, the "World's Simplest Code Generator" fortune would be massive by now.
Not to worry -- I fixed the link, at the same time as said person used the donate now button on the old WSCG page, to peel off some dosh and send it my way.
However, once my awesome supporter had made his donation, he immediately 'complained' that the web site was broken, because the message 'Donations to date: $10' didn't update automatically.
I think it's fixed now. But some decent load testing is in order, and that's where you come in. It'd be swell if a few thousand people could organise to simultaneously donate amounts between $1 and $1000. We also need to do some boundary checking, so it would be appreciated if one of you could try donating increasing amounts starting at $1000 dollars, and doubling each time, until an exception occurs. Then back track and perform a binary search until the exact threshhold is determined.
Kthxbye.
Read On...
Wed, 10 Dec 2008 10:24:31 GMT

Information Technology departments face global staffing cuts thanks to a staggering new invention that is taking the hard work out of IT.
The 'self-clicking' "next" button is set to revolutionize how computer users 'Get Things Done' -- but a wave of fear is sweeping an industry facing wide spread redundancy.
System Administrators are expected to be the hardest hit, with over 90% of their duties now offloaded to the clever button.

"This is a direct strike at the very heart of our profession," said James Curl, president of the commitee for SysAdmin Advancement. "Our members are deeply concerned. Many of them feel that this is undermining a skill that, in many cases, took years to develop."
The button, available in forthcoming hot fixes to Vista and XP, has recruitment firms recommending that now is the time for many IT 'professionals' to start broadening their skill base. "If you're a System Administrator," said Michael Jones of RecruitingPlusForce, "or if you're a Network Administrator, a Database Administrator, a Security Administrator, a Web Administator... basically if you work in IT and have the word 'Administrator' in your title, then this device is the wake up call you've been waiting for."
A developer we interviewed said that he was not personally worried about the invention. "There's two types of people in IT," said Eric McCall, "There's people who tell the computer what to do. And there's people who do what the computer tell them to do. It's only the second group who have anything to worry about. Well, I'd better get back to it. This coffee isn't going to drink itself... yet"
(Sorry sysAdmins... that one was dedicated to experienced Next-Clicker Ben Parker (C; )
Read On...
Fri, 05 Dec 2008 08:43:25 GMT

I had this wacky idea... a useless idea, but maybe an interesting one to think about, just as a casual thought game, if you really apply the old grey matter.
A kind of distributed badge service -- like
twitter, but for awards.
You are familiar (I damn well hope) with Stack Overflow, the site where programmers ask questions, give answers, and vote on questions and answers.

Two important parts of the way users interact with the system are 'reputation' points and 'badges'. What I'm interested in today are the badges.
The badges on stack overflow are largely inspired by xbox live gamer cards. But all of this is really a product of Pavlovian psychology/Skinnerism -- Not to mention the pre-psychiatric system of 'war medals' (Napoleon tells us: "A soldier will fight long and hard for a bit of colored ribbon" -- only he says it in french, so he kind of mumbles it.)
Now -- think about twitter for a moment: it's a kind of distributed conversation, where you talk to anyone who'll listen (whether you listen to them or not) and you listen to anyone you're interested in (whether they listen to you or not).

Combining the two ideas together, i've been thinking (for no good reason) about a kind of distributed awards program, where people give and receive (maybe by nominating and voting on) awards to others, to encourage behaviour that fits an individuals view of what behaviour is best.
In this idea, you can only accept an award if you're subscribed to the person/institution who gives that award.
So, if you love greenpeace, you'd happily accept a 'rainbow warrior' award from them. If you're a republican, you probably wouldn't accept a 'biggoted halfwit' award from the democratic party.
If you're a fan of... say... (what's some modern band? ah yes) Mungo Jerry then you'd probably be thrilled to accept an award for 'biggest fan of mungo jerry'.
Awards only have meaning if you trust the person who gives them. (A given award would de-value quickly if given out too quickly, such as the awesome works on my machine badge' or the all-too-common 5 star awards' from a download site, that dowwnload sites caught handing out too freely a few years back (link missing, sorry... anyone?).

And maybe -- just maybe (it's only a thought game) -- other people's badges only appear at half-size, unless you subscribe/accept the giver of the badge.
So if you are viewing the Barack Obama's profile, then his 'president elect of the united states' badge is only half-sized to you, since you're not a subscriber to the united states democracy. But fidel castro's Cigar Chompin Legend badge appears full size because you subscribe to the institution for 'Cigar Chomping'.
Flair. Bling.
And the point of all these crazy awards would be to display them on your blog, or your mysite, your facebook, or perhaps even your resume.
Resumes are an interesting point -- this could be one part of the way that qualifications and certifications are actually dealt out. I'd be awarded a bachelor of engineering from an institution I care about. If I pass the right exams with microsoft I'd be issued the relevant badges.
All badges are of course 'click to certify' -- patent that, my son.
I'm thinking the 'openbadge' protocol, for federating the brokerage of such awards would be excellent. In web 3.0 it would be built on minimalist rest+json+microformats, and within 'enterprise' it would use the WS-(death)* plus federated-certificate-chain-hierarchy-taxonomies-for-authorative-something-etc.
My initial idea for this, by the way, was as an idea entirely within a large enterprise. In a big company I know they have sharepoint and they also have certification systems (for health and safety, and for other more rigorous disciplines). I thought to myself it would be nice if departments within the corporation could grant specific certifications to individuals, that were then displayed on that user's 'mysite' in sharepoint. Naturally, i want the whole world to get involved, not just a few lousy employees.
The internet has had 'badges' since the very early days -- so why not share them around somehow... any thoughts?
Read On...
Wed, 03 Dec 2008 07:40:52 GMT
Part A:
- Under the covers, a "Small Business" is usually run by a random collection of access databases and excel spreadsheets that are poorly implemented, terribly managed, and provide meaningless results.
- An "Enterprise" is the same thing, but includes a batch file which checks if the other systems have crashed, and then restarts them.
Part B:
- In a "Small Business" the random collection of access databases and excel spreadsheets are kept around because They Get The Job Done.
- In an "Enterprise" the random collection of access databases and excel spreadsheets are kept around because they are jealously guarded by cranky middle managers who treat them as the precious jewels of their tiny land-locked fiefdoms, deep within their meaningless cubicle kingdom.
Part C:
- In a "Small Business" the random collection of access databases and excel spreadsheets were written by the business owner, as he or she grew the business.
- In an "Enterprise" the random collection of access databases and excel spreadsheets were written by idiot-nephews of dysunctional middle managers and are maintained by spineless, highly-paid consultants who should know better and will be first against the wall when the next round of redundancies arrive.
What did I miss?
Read On...
Fri, 21 Nov 2008 12:19:06 GMT
'The question of whether P=NP has been occupying researchers since these two sets were first defined, having become the greatest unsolved problem in computer science...'
from Alan Turing: Life and Legacy of a Great Thinker
How important is the problem of whether or not P=NP?
'Does P = NP? This is undoubtedly the most profound question in computer science...'
from: Tutorial: Does P = NP?
How important is the problem of whether or not P=NP?
'The relationship between the complexity classes P and NP is an unsolved question in theoretical computer science. It is considered to be the most important problem in the field...'
from Wikipedia Article on 'P=NP' problem
How important is the problem of whether or not P=NP?
[If you can show that P=NP, then] 'most cryptographic algorithms are basically useless'
from comment by Charles on November 15, 2008 06:13 PM
How important is the problem of whether or not P=NP?
'The Clay Mathematics Institute has offered a $1 million US prize for the first correct proof.'
from Wikipedia Article on 'P=NP' problem
OMFG! They offered what!?
'The Clay Mathematics Institute has offered a $1 million US prize for the first correct proof.'
from Wikipedia Article on 'P=NP' problem
I thought that was what you said.
One MILLION dollars!
Problems sure can't get any more profound than that!

Read On...
Sat, 01 Nov 2008 09:39:52 GMT

Thanks to an eagle-eyed journalist, there was a great write up about TimeSnapper published this week in Brisbane's main inner-city newspaper "City News".
It was really exciting to be involved in this. The photo shoot was good fun, and luckily for me we were playing a "wear your suit to work" prank that day so I look flasher than I normally do.
The laptop in the photo belongs to Joseph Cooney -- he is probably writing a blog article just now, boasting "My laptop was in the paper this week." Damn show pony.
Whether or not this will lead to a massive influx of new TimeSnapper customers, I can only wait and see. It ought to hit the right demographic, with its inner-city distribution: these desk bound labourers are the perfect target for 'the consultant's best friend'. Fingers crossed, of course.
More on Iceland...
I get most of my news about Iceland from a site called Iceland Review. The site used to be all about the latest upcoming art or fashion shows in Iceland -- but is increasingly about the economic disaster. For example, the following statement:
"32.5 percent of participants, ages 18-75, have considered moving away from Iceland because of the current economic crisis"
This week they raised the local interest rate from 12% to 18%. Ouch!
Atli and his family are holding up very well, I think. With his awesome programming skills I think he's already got a few interesting options on the table.
Read On...
Fri, 31 Oct 2008 11:48:09 GMT
I'm tinkering with Asp.net MVC in my un-spare time now. (top work Phil and team!)
And I have a recurring, whacky marketing/design/envangelisation idea:
The MVC Zen Garden
If you've installed Asp.net MVC, then you'll know that when you open Visual Studio and select:
"Create Project > MVC Web Appication"
...you get a rudimentary sample application.
It's blue. Simple. Nice enough.
I'd love if there was a website, modelled after CSS Zen Garden, where designers could offer alternative CSS files (with images) for your default Asp.net MVC application.
So the starting look of the MVC Zen Garden page is the default asp.net mvc sample app, something like this:

It is exactly like the default MVC app, but it offers a range of styles to select.
Once a style is selected you can download the stylesheet and images for that 'skin'.
Hence, the user can select way out options like 'default red':

And I imagine that there may be some other slightly more powerful creations.
Perhaps, given infinite time and unlimited budget, some team of powerful 'creatives' may be capable of unleashing what I think of as the ultimate expression of mankind's ability to wield superiority over the electronic pixels, and achieve a vision of artistic perfection not unlike my own dream theme, a skin I like to call, 'Slave Leia':

And in time, other great thinkers of our age may be capable of imagining more extreme CSS-based modications.
What do you think? MVC Zen Garden... thumbs up or down?
There could also be a visual studio plugin that lets you update your own sample app in one click, to any of those available at MVC Zen Garden.
There's the idea.
I think it's solid. And simple. And has a growing market.
I'd implement it but I am swamped in crazy ideas of my own.
I think that you ought to implement it -- or failing that, petition your local Hanselmember
Read On...
Wed, 22 Oct 2008 06:53:22 GMT
There's a government ad posted all over the insides of many brisbane buses at the moment, that describes some tell-tale signs of an abusive relationship.
I took a dodgy photo of it with my camera-phone, in order to try and get this idea across...

In case you can't read it, here's what it says:
Can you see signs of abusive behaviour in your relationship?
|
|---|
| Restricting where she goes... | Monitoring her calls... | Telling her what to wear... | Controlling what she spends... |
I think it's very easy to draw a parallel between each of these signs, and the behaviour of a typical Corporate (or Government) IT department.
Can you see signs of abusive behaviour in your relationship to the IT Department?
|
|---|
| Abusive Partner | Abusive Corporation |
|---|
| Restricting where she goes... | Internet site filtering |
| Monitoring her calls... | Email monitoring and phone logging |
| Telling her what to wear... | Standard Operating Environment, corporate desktop-background, corporate uniform. |
| Controlling what she spends... | Tiny size limits on mailboxes, highly bureaucratic purchasing process, draconian requisition restrictions and, worst of all, lousy pay. |
Read On...
Sat, 18 Oct 2008 09:02:06 GMT
Java's been nagging me to update it, and I finally relented. When it finished, here's the screen it showed me:

Now what does that remind me of?
What have I seen lately that this somehow conjures? Something in the wording...

"The java powered internet..." now you can "experience" the awesome firepower of... ahhh, Ah, now i remember (thanks Uncov.)
Why didn't they just show this?
Read On...
Fri, 17 Oct 2008 09:38:53 GMT


(The closing words from a nature documentary about the life-cycle of a Unit of Business-Logic)
(the following is to be read in the voice of David Attenborough)
"And now, the Business-Logic is weary with exhaustion, tired, confused and surely close to death.
"It cannot go on much longer, but at last, the end is in sight, as it has just now reached its final resting place, the database.
"Here, at last -- many tiers from where it started, in the presentation layer of its infancy -- the Business-Logic has entered the sacred grounds in which it shall build its deep burrow, safe from the world, and from which it shall never again be shifted.
"Here, safely sheltered amongst the comforting tangle of stored procedures, the Business-Logic can begin to spawn its own generation of subtle bugs.
"And they, in their turn, shall drift, undetected, downstream, emerging as tiny pupa in the noisy pandemonium of the presentation layer where they too can begin the long journey back home, toward the database far upstream. A journey during which they too shall grow into powerful and sexually mature Business-Logic.
"And so, life begins anew."
Read On...
Sun, 12 Oct 2008 18:45:42 GMT

In record time, we've produced a new version of TimeSnapper -- we're up to 3.3.
If you're currently trialling TimeSnapper professional, and you install this one over the top, your 30 day trial we be reset, and you'll get a complete new 30 days to explore the program.
If we can keep putting a version out less than 30 days apart, then no one need ever buy it again. Oops ;-)
The previous version included better reporting on websites, and this got a lot of customers excited, which in turn got us pretty excited. So we stayed up late a lot of nights, doing a bunch of things to utilise the web-reporting data.
So now, with the click of one button you can now set any application or website as productive (or non-productive).
This is a huge win from a usability perspective, and it lets you generate far more accurate productivity figures with no extra effort.

The playback screen, where you watch a re-run of your computing life, now has proper zooming in and out. This is a must have, particularly if you use multiple monitors.
The web reporting is integrated into the application more deeply, and there are numerous other requests from people that we catered for.
All up this release makes TimeSnapper easier to use and far more compelling all round.
News From Iceland
People have been asking me how my Icelandic partner Atli is going at the moment, with the current financial crisis which is hitting Iceland hardest of all.
Here's some photos he sent, looking out his office window last week:

But he reassures me with a lot of hard work, a bit of good luck and plenty of sales from TimeSnapper, this just might be his next home:

So I think that now is an appropriate time to buy ;-)
Read On...
Sun, 12 Oct 2008 10:17:36 GMT
Scott Hanselman posted up a picture of himself as a young Hanseldork and then tagged myself and others in hope that we'd perform the same kind of self-humiliation.

That's what Scott looked like ---->
I'd like to think that I wasn't so geeky as all that. Kids that looked like Hanselman? I used to beat them up and steal their code.
Perhaps, now that i think of it, i was a little bit nerdy.
Is it nerdy for an 8 year old kid to spend lunchtime playing chess against the librarian? Is it nerdy to read and write elvish runes?
Perhaps my big brother Jeb had a touch of the nerd. He taught me binary, boolean logic, and he taught me to program in Basic on the beloved Amstrad CPC 6128.
I asked him the other day whether the CPC6128 booted straight into Basic, or there was an intermediate OS. Here was his response:
The programming commands available right from ON comprised "Amstrad BASIC".
The disk-related commands such as SAVE, CAT etc comprised "AMSDOS".
We had to put a special disk in and type |CPM [i.e bar + CPM] to get the CPM operating
system. That's what we used for formatting or disk-to-disk copying. Some
games ran on CPM so were launched by putting that game's disk in and
executing |CPM. Most games and programs were executed with RUN
"<nameofgame>"...
Ahhhh, takes me back.
(In contrast, the Apple IIes at CBC [i.e. at school] always defaulted to booting from
whatever 5.25" floppy was in drive A - with B spare for a data disk. In
those puppies you had to hold a switch on the back on startup for them to
go into command-line AppleBASIC.)
To fulfill the requirements of this meme, i ought to include a picture of what I looked like as a child. Here it is:

Not too dorky. Of course now that I'm grown up I look far more suave:

Smoking is cool, right?
To spread this viral meme I'd like to tag Justice Gray, JoCo Loco, Joel Pobar, the BronJohn collective and, for his sins against F#, Paul Stovell.
How about you? Grow up dorky? What's your story?
Read On...
Fri, 10 Oct 2008 07:49:55 GMT
What's the capital of
the United States?
(drum roll)
About twenty cents. #
Just tell me now, world. Are we serious about this catastrophic global depression or not?
Is this just another of your doomsday fads? Because frankly, some of us are a little tired of your melodrama.
Last month it was that peak oil business. Before that it was global warming and carbon trading. Then it was the obesity epidemic.
You promised that the SARS coronavirus would turn into a pandemic that killed us all, if bird flu didn't get to us first.
http://
IsTheEconomyDownForEveryoneOrJustForMe
dot com. #
And you wasted a lot of our money and effort worrying about this supposed terrorism wave that you promised would crush Western society into long-deserved oblivion.
Your flippancy on these negative promises has been remarkable and frankly my patience is wearing thin.
I'm not going to drag up all the wasted years of worrying about the cold war, and the certain death from global geo-thermo-nuclear warfare with which you haunted my childhood years. But I will say this:
Global meltdown is
going to finally
give us all the
one thing money
can't buy.
Poverty. #
The best you've got for me is something about poor liquidity in the market place!? Seriously!?
Fuck you, Earth. You've got to do better than this.
Give me total fucking annihilation from blood-lusting aliens with nuclear guns in their finger-tips, or just shut up and let me write my code.
Sincerely,
lb.
Read On...
Sun, 28 Sep 2008 11:07:05 GMT

We've just put out TimeSnapper 3.2 to help analyse your online life.
TimeSnapper has always helped you understand (and replay) the time you spend with local applications, but we've never performed deep analysis of the time within any particular program.
But because browsers are worlds unto themselves, we now give them special attention and give you more details (via reports) about what sites are capturing your attention.
Internet Explorer, Firefox and Google Chrome are watched carefully, so you can get a clearer picture of where all your time really went. (Sorry Opera and Safari, it's sad trombone time for you.)
As usual, a whole bunch of improvements made it out along with the main new feature. Check the release notes for details.
Oh and we've reduced the price again. Instead of the usual $39.95, we've dragged it down to $24.95. This is a happier price I think.

People responded very positively to our other price drops, and this is perhaps a more sustainable price. We're not getting rich off it, I promise you, but we are getting enough sales to keep our interest piqued, and ensure that we keep improving the software.
What are you afraid of?
Something I'd like to know more about... what can we do to make TimeSnapper less terrifying?
A certain proportion of people, when they hear about TimeSnapper, or they see it in action, have this strange response, along the lines of:
"I'd rather not know how much time I'm wasting."
My analysis of this attitude goes something like this:
- You feel you are wasting a lot of time.
- You are not happy about how much time you're wasting.
- You believe you're completely powerless to change.
If that's true, then having more information will indeed only make you less happy. The tired old addage, "Ignorance is bliss" applies.
I strongly disagree with this sentiment, but I don't know the right way to persuade these people that information is a powerful motivator.
We could give one free psychiatric consultation with every copy purchased... but that might cost a bit much.
Otherwise I think we're doomed to give up on a certain slice of humanity: the very people most likely to benefit from our software.
What are your thoughts? Would you "rather not know how much time you're wasting"? And if so, what could someone say to help you?
Read On...
Fri, 26 Sep 2008 05:07:40 GMT

I'm looking for a talented graphic designer to help build the t-shirt design of my dreams, based on the 'damn you George Boole' motif.
Or not.
On a separate, thought thematically linked topic... How awesome is this paper, written in 1826, where Charles Babbage creates a notation for describing the state of one of his engines. Essentially he derives and explains the first machine language.
It's pretty much lisp without the brackets, of course. No, it's maybe more like musical score, or guitar tablature even.
Read On...
Mon, 22 Sep 2008 10:12:01 GMT
Here's a fistful of powerpoint slides from the talks I gave at tech-ed australia.
The talks were a blast to deliver. I only wish there was more time to talk about stuff I love.
Regarding the Hanselman showdown I ought to fill you in on the conclusion of that little chapter.
Somehow, early on the first night of the conference, there was a public arm wrestle conducted on a stage in front of a boisterous crowd. Not kidding. True.
Of course, I don't need to tell you who won that little bout. It will suffice to say that I no longer mangle or insult Scott's good name in public forums.
Read On...
Sat, 20 Sep 2008 13:07:20 GMT

I've re-packaged last week's trouble-shooting checklist as an online application.
It's javascript based, web 2.0 friendly, has gradients (but no rounded corners, so it's not fully W2C*).
In case you missed it -- here it is.
I've given some (okay -- way too much) thought to this and have a rough idea about a complete expert-system for trouble shooting all computer problems.
Expert systems that I learnt about way back, in those crazy school days, seemed to be largely focused on medical topics ("male? definitely not pregnant. spots? might be measles."). More recently, circa 2002?, I recall a nifty expert system that could guess any 1970's television show you were thinking of. (Provided it was 'Happy Days' -- which it was).
How about computer problems?
I can envision some kind of wiki-like system where people who have solved their problems can contribute further Q&A to a huge tree of diagnostic trouble-shooting possibilities...
Let me get you started...
Q.1: Is the power on?
A="N"?: Return "Turn the power on."
A="Y"?: Continue to Q.2;
Q.2: Did you turn it off and turn it back on again?
A="N"?: Return "turn it off and turn it back on again."
A="Y"?: Continue to Q.3;
Enough theorising. Check out the trouble-shooting checklist, share it with your loved ones. Use it to solve your computing problems. And be good to each other. Once in a while. Please.
* W2C = Web 2.0 Compliance.
Read On...
Fri, 12 Sep 2008 05:06:06 GMT
With Joe Cooney's help, we've constructed a simple checklist for trouble-shooting regular problems.
Have you got any further items you regularly find yourself checking off?
Please add more!
- check the event log
- google it
- reboot
- run iisreset
- empty the recycle bin
- hit ctrl+break
- kill the aspnet worker process
- clear temporary internet files
- touch the config file
- degauss the monitor
- remove everything from the startup folder
- "get latest" and rebuild
- login as admin
- run ipconfig /renew
- check if capslock is on.
- run a virus scan
- download the latest CTP
- disable and then re-enable the network interface
- restart services (some/most/all)
- change your password
- unplug your router, and leave it unplugged for 10 seconds before plugging it back in
- clear your cookies
- add current site to your trusted zone
- disable javascript
- try to ping the server
- press 'clean solution' from the context menu in the solution explorer
- repair the installation
- run large magnets over all hard drives
- check the network cable
- defrag the hard drive
- try it in a different browser
- run a spyware scan
- minimize all windows and check for a modal dialog
- ensure configuration is correct
- see what has changed recently
- run process monitor
- run chkdsk /v
- revert all checkins from anyone named 'Gazza'
- run the windows update service
- remove and then recreate all Bluetooth partnerships
- do a hardware reset on your mobile device
- decompile + monkey punch + duck slap + donkey whack
- what would jesus do?
- look for suitable workarounds
- re-calibrate your Geiger counter
- check for packet storms
- best to rule out toxicological contamination early on
- describe the problem in terms even a child can understand
- apply duct tape
- increase the timeout duration
- increase the maximum threadpool size
- write to your local minister or government representative
- try using the Microsoft Online Crash Analysis to submit your crash dump bucket-id
- disable the customer experience improvement program
- eat liver of sacred monkey
- import the decryption certificate to the local client certificate store
- ensure sql server is setup for mixed mode authentication
- bypass proxy server for local addresses
- check the hosts file and the routing tables
- use filemon to locate any other log files being accessed
- check the bios
- update the device drivers for all peripherals
- attach a debugger, get a memory dump, look at it in a hex reader and post it to a forum
- cleanse all user inputs
- put a try catch around it
- replace the batteries in your wireless mouse and keyboard
- recompile all dll's
- uninstall the old version, re- install the new version, apply hot fixes patches and upgrades
- remove the case from your computer, and aim a fan at it
- check that you haven't been blacklisted
- run diagnostic checks on surge protection units
- add an index
- remove an index
- recalculate indexes
- ensure ftp uses passive mode
- recalculate statistics
- reboot in safe mode
- check kerberos delegation
- review query plan
- if 'automatically detect settings' is checked/unchecked, then uncheck/check it
- kill rogue processes in task manager
- run memtest.exe
- boot from your emergency repair disks
- follow standard knoppix data recovery procedures
- tweak-UI
- uninstall adobe pdf reader
- insert "Debug.WriteLine("up to line 53");" where appropriate
- set tracelevel to verbose
- flush buffers
- % truss -t \!all -t open a.out
- use cdb or windbg. add in SOS for clr issues.
- field test any lightning protection devices
- use a temperature gauge on all hardware components, and compare against safe operating limits from manufacturer
- run it inside a VM
- check the DPI.
- search the knowledge base
- enable javascript debugging
- turn off friendly http error messages in IE
- set the current culture to en-US
- attach a multi-meter
- roll back to your most recent backup
- check for GC pressure
- empty the MSI cache
- temporarily allow popups
- look in your spam folder
- recompile. wait. recompile.
- turn off windows firewall
- run caspol and give everything full trust
- put yourself in the shoes of the program itself. if you were the program, what would you do?
- ask hanselman
- try wireshark. failing that, try fiddler. what does tracert show?
- check the blueprints and read over the uml.
- implement the retry pattern.
- rtfm
- delete the bios
- attach anti-static wrist strap on every appendage
- sit inside a faraday cage
- insert "alert('here');" where appropriate
- overwrite every byte in memory the standard five times as pre-scribed by nsa guidelines
- reinstall the operating system from the original media provided by the supplier
- add a lock statement
- blame Irwin the intern
- blame the guy who left last week
- blame the ESL guy
- blame DNS
- add a sleep statement
- apply a fudge factor.
- run a spell checker over your code
- light some candles. sacrifice chicken.
- set all DWORD's to 0 in the registry. Then delete the registry
- drop all databases.
- unregister and re-register all dlls
- reboot 3 times
- drink own urine
- run prime95 overnight
- recompile the kernel
- do the packets hop subdomains, and if so does NAS require a NAS forwarding service -- how about VLAN?
- track down the original programmers who wrote the system, apply percussive trauma therapy.
- uninstall java
- underclock it
- ignore it
- post a request for comment on theDailyWTF
- ask for correlating evidence that the problem even exists
- sharpen your wooden stakes before proceeding any further
- melt silver crucifixes onto tips of all bullets
- fill your water bottle with holy water
- call tech support
- check when daylight savings begins
- simmer ground rhino horn on a bed of whale pancreas
- plan and enact your fire evacuation plan
- bathe in holy water
- increase dosage on all medications. check for interactions.
- bury heart of an ox at midnight under crossroads on fullmoon
- clean up your desk
- check that pump's suction pipe is elevated above bottom of pond. (Float the inlet 18 to 24 inches below the water surface)
- wear shoes with six inch cork soles
- wear raincoat, goggles, breathing apparatus
- climb into an anti static bag
- always use a condom
- check pressure reading on gauges number 1 and 2
- run it through an oscilloscope
- check your immunization schedule is up to date
- check for seismic/tectonic activity, solar flares, tsunami, meteor showers.
- go and get a coffee. come back and look at it with a fresh set of eyes.
Read On...
Mon, 01 Sep 2008 11:23:55 GMT
(latest details)

Turns out I'm talking at tech-ed Australia on Wednesday -- that's the first day -- straight after the keynote.
09:45 AM CT200 Build your own Micro-ISV – Better than a license to print money : Location: Developer studio.
The location, "Developer Studio" is in the main exhibition hall.
So, as soon as the keynote finishes, head over to the main exhibition hall and get a good seat in the developer studio. You've got that?
Once you arrive, we'll try and make lots of noise to attract more people into the Developer Studio.
We want to have the biggest, most energetic, most boisterous chalk-talk that tech ed has ever had.
We can do that right? We want to put Scott Hanselady to shame and we'll do whatever it takes.
Come on sunshine. Take out your mobile phone right now and set a reminder, at 9:40 AM, Wednesday 3rd September, just as your strolling out of the keynote, "head to the developer studio in the main exhibition hall."
Magical secrets of building your own software empire shall be unleashed...
Read On...
Fri, 29 Aug 2008 11:11:19 GMT
So it turns out our old friend and nemesis Scott Hanselman is going to be talking at Tech Ed Australia (and New Zealand too). He's got something like 57 slots.
Other lecturers are terrified that their talk will coincide with Scott. For my part, I say BRING IT ON, HANSEL-GIRL!
If one of your presentations is simultaneous with mine... that's great. Let's make it a little challenge, hey 'Snot Hanselman'.
Who can draw the biggest bestest most evangelical crowd? Wiener-face Hanselgirl with his pansy rah-rah-'mvc-is-oh-so-great' shill tactics, or straight shooting, school of hard knocks Bambrick, with his tough lessons and hard won truths?
I giggle at your puny intellect, Hanselfool. I will crush you with my superior powerpoint skillzies. You are going to rue the day you set foot on my continent, H-Dog.
And if it turns out that you are not competing with my lecture, then I trust you will be man enough to attend, and to witness how things are done, Down Under Style? Or are you too much of the big girl's blouse? I think so. Of course you are.
(footnote for the humour impaired.... i'm a big fan of Scott Hanselman, a hanselfan infact, and i owe him a big thanks, because the fact he interviewed me on his podcast is the direct reason i've ended up speaking at tech ed -- plus he's given me various pieces of encouragement in this topic over the last few years. Can't wait to meet the guy in person. (Will he sign my boobs? Let's hope so) All up, he's truly the bestest guy in the whole world)
Which is not to say that I won't trash talk him in public every chance I get.
Read On...
Fri, 29 Aug 2008 08:55:36 GMT

Argh! Help! The panic! The rush! The doubt!
I'm presenting a chalk talk at tech-ed Australia next week and I'm suitably freaked out.
This ought to be a tiny, insignificant affair. Just a 20 minute talk on a topic I'm intimately familiar with.
But instead the preparation is rapidly turning into a gigantic survey of the entire history of thought on the matter at hand. I've plumbing new depths of philosophical intrigue in a quest for value-added deliverables and other dilbert-esque buzzwords.
Are pyrotechnics allowed? While animations are expected, what about fireworks? Rockets? Formation squadrons of jet planes zooming past at key moments? Simple costumes, makeup, smoke machines? Should I do my funniest dance??
What level of sophistication does the audience expect from its lecturers? Can I apply for, complete and be awarded a PhD on the topic within the next five days? If not, then am I a fraud? What books can I read? What lectures can I download? What fonts can I use in the talk? What props would be considered suitable and what props would be banned by local fire/terrorism regulations?
All I've heard so far is that I'm talking on Thursday morning. My name isn't in the official itinerary yet -- but don't let that put you off. Buy a ticket anyway ;-). I'll be there, I guarantee it.
The topic is 'Better than a license to print money: Build Your Own Tiny Software Company'
With no Frank Arrigo left, I must carry on the mantle of the short, podgy and enthusiastic superhero, all alone.
Come up and say hi. I get terribly lonely. Hug me.
Read On...
Sun, 24 Aug 2008 11:08:09 GMT
I had some amazing comments left here by Alan Kay himself. Alan Kay (for those who haven't been paying attention) is the father of smalltalk, pioneer of Object-Oriented Programming (plus dynamic programming, message-based programming, gui-environments and much more), 2003 Turing Award Winner... he's a visionary without whom there'd likely be no windows in MS Windows (or Macs), no 'one laptop per child' program and many more things besides all that. Alan from Tron? Based on Alan Kay. Seriously.).
Alan's writing -- even in comment form -- is so perfectly crafted that I thought i'd move it into its own post, and turn some of the words into hyperlinks, and added two [bracketed] notes.
First I asked this...
Something I'd love to know is what does Alan Kay think of this (draft) paper from 2006, 'The Camel has Two Humps'? (also discussed at Coding Horror)
Personally i've discounted it as poorly conducted research -- but it had a lot of resonance with readers at the time.
i'd be very interested in your response.
lb
Alan Kay's Response...
I saw this a few years ago. They could be right, but there is nothing in the paper that substantiates it.
(How to do a short reply here?)
Notion 1: Good science can rarely be pulled off in an environment with lots of degrees of freedom unless the cause and effect relationships are really simple. Trying to assess curricula, pedagogy, teaching, and the learners all at once has lots of degrees of freedom and is *not* simple.
So for example we've found it necessary to test any curriculum idea over three years of trials to try to normalize as much as possible to get a good (usually negative) result.
Notion 2: Most assessments of students wind up assessing almost everything but. This is the confusions of "normal" with "reality".
For example, in our excursions into how to help children learn powerful ideas, we observed many classrooms and got some idea of "what children could do". Then I accidentally visited a first grade classroom (we were concerned with grades 3-6) in a busing school whose demographic by law was representative of the city as a whole. However, every 6 year old in this classroom could really do math, and not just arithmetic but real mathematical thinking quite beyond what one generally sees anywhere in K-8 [kindergarten and grades 1 through 8].
This was a huge shock, and it turned out that an unusual teacher was the culprit. She was a natural kindergarten and first grade teacher who was also a natural mathematician. She figured out just what to do with 6 year olds and was able to adapt other material as well for them. The results were amazing, and defied all the other generalizations we and others had made about this age group.
This got me to realize that it would be much better to find unusual situations with "normal" populations of learners but with the 1 in a million teacher or curriculum.
I found Tim Gallwey, who could teach anyone (literally) how to play a workable game of tennis in 20 minutes, and observed him do this with many dozens of learners over several years.
I found Betty Edwards who could teach (again literally) anyone to draw like a 2nd year art student in one intense week.
And so forth, because what the exceptional teaching is doing is actually allowing assessment of what general human beings from a typical bell curve can learn from crafted instruction.
And, I think some of the keys here are in the metaphor of bell curve. Students will exhibit distributions of talent, motivation, learning skills, style, etc., and one will see these show up right away in any simple-minded form of instruction and curriculum.
But if the battle cry is "Learner's First", then what we really want to know is what can be done to help the different types of learners. Some don't need any help. Some need to learn some things before they tackle the main subject. Some need to be shown different POVs so they can see a route for them to learn.
Really good teachers want to get all the students to be fluent, and they often find ways to do this. "Regular" teachers often just want to get through the material. Some school systems want to use education to sort the population rather than to educate the whole population. Etc.
I don't know the general answers here, but our research groups in the mid-70s [presumably the Learning Research Group at Xerox Parc] set a goal of 90% fluency for (say) 10-12 year olds, and then we proceeded to fail to achieve this until about 1998, when enough things had been done in the computer environment to provide hooks to many different kinds of children without losing the essential high quality of powerful ideas that was our goal.
I think as a teacher, one has to embrace the bell curve idea and be prepared to deal with at least three tiers of preparedness in the students. One could hope that a lot more general prep about thinking and symbolizing would have happened in K-12, but it doesn't in the US for sure.
There has been some very interesting work with respect to science teaching that seems parallel here (for example, by Tinker and others at Tufts). They not only found a pretest (could they interpret various kinds of graphs?) that would predict the grades of the 1st year physic students, but found that teaching the kids skills in doing well on the pretest (using some very creative ideas that Jerome Bruner would find familiar) would also vastly improve their performance in the physics class itself.
So the pretest was not just testing, but also finding some forms of relational and figurative thinking that some of the students needed skills in, before tackling physics.
I think every musician who is reading this will know what I'm driving at here. Music is a lot of skills and types of thinking and few musicians are naturally good at all of them. The desire to be a musician plus decent music instructors will find the things each learner will need to work on to get fluent. The result is that most skilled musicians can play advanced stuff, but they are all rather different on their outlook, how they practice, what they practice, etc.
(Sports and art also ... and almost certainly the more holy subjects sanctified by society, and those pretenders to the throne such as computing ....)
Cheers,
Alan
Read On...
Fri, 22 Aug 2008 01:29:13 GMT
There are several movements underway in Australia to get more computers into schools "A laptop in the hands of every school child" etc.
I'm in favour of the idea (as a technologist and a futurist) but it strongly reminds me of this quote from Alan Kay:
"Think about it: How many books do schools have—and how well are children doing at reading? How many pencils do schools have—and how well are kids doing at math? It's like missing the difference between music and instruments. You can put a piano in every classroom, but that won't give you a developed music culture, because the music culture is embodied in people."
"The important thing here is that the music is not in the piano. And knowledge and edification is not in the computer. The computer is simply an instrument whose music is ideas."
Read On...
Sat, 16 Aug 2008 13:53:43 GMT

All Steve Yegge articles are awesome, but no one has time to read them. If you are at a cool party with cool people you must pretend to have read all of Yegge's stuff.
To that end, here is the bluffer's guide to his latest article:
- If development of your product involves a 'requirement gathering' step then your product is doomed
- Only build stuff for yourself
Examples include Steven's experience building the failed HP OmniGo range of Pamtop organizer products.
Strong analogies are drawn with Warren Buffet's investment style.
To sound like you read the entire article when you did not in fact read the entire article, just say the following:
"Yeh! I'm so going to buy a mountain-bike seat extender for my grandmother too!!?"
<eom>
(If you are now compelled to read the entire article... well, don't come begging to me for a refund on your time.)
Read On...
Sat, 16 Aug 2008 13:24:30 GMT
It's taken a lot of hard work in my cave downstairs, but i think the prototype suit is finally ready.

Now back off or I'll flip out and kill everyone.
(p.s. at least i'm not this guy ... or that guy lower down the page in the blue outfit.)
Now For A Slightly More Disturbing Confession
I've been messing with shoes lately. And I like it.
I'm planning a shoes version of wscg, just to push it to the real ultimate limit.
Read On...
Tue, 12 Aug 2008 23:15:37 GMT

idea: a "customer experience improvement program" -- for TimeSnapper, or for any .net win forms application.
what happens is this: if the customer has agreed to partake in the program, then each time a form loads, a method in a library is called.
That method will walk through all the controls in the current form, and add event watchers for certain events:
- mouse hovers,
- button clicks,
- enter/exit of textboxen,
- selection change of combos

...All the "important" events that demonstrate when a user is using or paying attention to a control.
When these events occur, they are logged and tallied into a separate xml file.
At regular intervals, or on demand, the xml file can be sent back to a home server.
But also -- the user can inspect the file locally and even "view" the file.

When the file is loaded, then it creates a hovering overlay -- a kind of heatmap that tells you how often each control is clicked on, hovered over... how often backspace and delete are used in a given textbox (this is a poor man's error rate) ...
So the customer can load this info themselves -- and they can send it through to the product owners to help them get an overview across one or many users. How useful are certain features? Does anyone use this form? (you'd need to count the number of loads for each form too...)
Messageboxes are an important thing to track -- but i don't have any technical idea for tracking them.... but a true reflection wizard would be able to do this i'm sure....
Google analytics has a feature where they show you the relative popularity of each part of your page, as an overlay.
Anyway that's my idea -- a poor man's eye-tracking heatmap/google analytics for windows forms.
I know that the MS office team records similar information ('SQM', 'Service Quality Monitoring' and of course 'the Customer Experience Improvement Program' are keywords to use if you're looking for more info), and used this information to help design the ribbon control -- but there's a few key differences here:
- they don't let the user 'use' the recorded info
- they don't boast about cool visualisations and overlays
- they don't provide a general technique usable in other programs
- They actually did it, they didn't just talk about doing it ;-)
Read On...
Sun, 03 Aug 2008 12:14:34 GMT

I was researching Microsoft's 'Midori' and 'Singularity' projects -- and noticed that two recent articles i found in the mainstream tech press were almost identical.
The first one was by Mary Jo Foley at ZD net, titled "More tech details emerge on Microsoft's 'Midori'"
The other article was at 'the register' titled "Microsoft to kill Windows with 'web-centric' Midori?" attributed to Kelly Fiveash, and it seemed to be an almost complete copy.
It's not just that both articles reference a particular SD times article (Microsoft's plans for post-Windows OS revealed)-- but they use the exact same sequence of quotes and the same sequence of key words and ideas is presented in both articles.
Here's one little example (that I forgot to highlight in the images).
MJF says:
"Midori is, indeed, a distributed operating system (harkening back to Microsoft's old "Cairo" project)."
While the register says:
"Midori is a distributed operating system that appears, in part, to contain elements of Microsoft's failed 'Cairo' and WinFS projects."
The Cairo reference is not in the article they are both citing -- it's something MJF thought of. So when the register says that this distributed OS "appears" to contain such an elemnt, they would do well to instead say "it appears to Mary Jo Foley" -- since it was she who made the observation. And I think in this case it's a mistaken observation, which makes the intellectual theft more obvious.
Maybe this is just typical in tech journalism -- i've never looked at it this closely before. Probably most journalism is just about recycling each other's work and this is no more blatant than any other case. Still -- pretty sad work.
Read On...
Sat, 02 Aug 2008 05:47:33 GMT
Joel Spolsky wrote the foreword to Eric Sink's book "The Business Of Software"
In that foreword, Joel talks about growing a software business from humble beginnings, much as occurs in a MicroISV.
Near the end, he says the following -- and he says it in a paragraph all of its own, because it is a magical paragraph:
"One day, you’ll turn off the feature that emails you every time someone buys your software. That's a huge milestone."
Wow. Can you imagine that? It totally blows my tiny little mind away. That's like having so much money that you light your cigars with 100 bills -- and then you don't even finish the cigar.
TimeSnapper has been selling like hotcakes lately, while it's still on special at $19.95, but even so I wouldn't say my inbox is actually close to collapsing from the added burden.
I've been putting some thought into what can take us to that magic next level -- and one particular thing keeps occuring to me -- just keep doing what we're doing. We seem to be growing steadily, and the software keeps improving. We keep listening to people and we keep ruthlessly removing bugs. It's working. We're learning to do more marketing, we're talking to people all the time; we're headed in the right direction.
It's a blast -- a lot of fun, running a software company. Very stimulating on the brain.
If I haven't encouraged you lately, let me encourage you now. It's worth doing. Go for it.
Read On...
Fri, 01 Aug 2008 12:14:28 GMT
In response to a recent 'Definitive' List of Software Development Methodologies I thought I ought to post my own A-Z of software methodologies:
Can you tell me what I'm missing?)
ADD Asshole driven development - team lead badly out of touch, yet never wrong
BDD Build driven Development - builds it does? check it in you should
CDD Competition driven development - GOOG and AAPL have one, we need one too
Checkin driven Development - boss measures success by checkin count, more==better
DDD Database driven Design - objects enslaved by related rows
EDD Education driven Development - Ruby newbie, but i'll learn
Entertainment driven Development - maybe we will fail, but by god we'll have a blast
FDD Fear driven development - if we don't add feature number 1 million and 3, we may lose a customer
Fantasy driven development - shipping on time, feature complete, zero bugs, free of charge
GDD Golf driven development - ceo heard a new buzzterm while on golf course
HDD Hatred driven Development - strong team plus clear goals forged around common enemy
Heisenberg driven development - cannot be defined without altering the meaning
IDD Industry driven development - never aim at the ass end of a duck
JDD Java driven development - "i don't know the problem, but i know the solution is java"-style thinking
KDD Knowledge driven development - we are wise and our product is awesome
Knife driven development - code it or i'll cut you
LDD Luncheon driven development - drunken lunch, big idea, now we're sleepy
MDD Munchie driven development - team too stoned to stop coding
NDD Nacho driven development - then they ate some nachos
ODD Object driven development - don't stop until your OO hierarchy is 57 levels deep
PDD Panic driven development - works for me
Paradigm driven development - synthesizes an ecosystem of evolving collaboration architectures
QDD Quantum driven development - only works on hardware that hasn't yet been invented
RDD Research driven development - this time for sure!
SDD Sales driven development - head salesguy already promised it, now we gotta build it
TDD ToDo driven development - aka stepwise refinement
UDD Underwear driven development - seat of the pants approach
VDD Voodoo driven development - if it doesn't compile, just stick another pin in it
WDD "Works on my machine" driven development - formerly, Rapid Application Development
Whiteboard driven development - see Domain Driven Design
XDD Xml driven development - "xml is like violence, if it's not working you need more of it"
YDD Y-Combinator driven development - (equals (name Paul Graham) (plus lisp god))
ZDD Zen driven development - you don't drive the development, the development drives you
Read On...
Mon, 28 Jul 2008 22:04:27 GMT
An awesome legend made a rap about TimeSnapper!
This is brilliant. Listen to it here.
Lyrics are as follows:
using my computer on a daily basis
it's amazing how most of my day is basically wasted
whether it be on news or youtube views
it seems the more time that i have the more that i lose
but there's a new tool that reviews what i do
and regarding what the features are i'll name you a few
to start off you run the program TimeSnapper
it snaps shots of your screen and plays it back after
analyzing how much time you idle in applications
you assign a score based on those relations
and the more time you pour into important tasks
the program reports a grade back based on that
there's two versions, one free and one pro
as for the difference, try it out if you wanna know
Trying to find the contact details so I can send him a license...
Read On...
Sun, 27 Jul 2008 10:56:28 GMT
I was over at a friend's place today, and there was much swearing about F***ing Vista, and "F***ing Microsoft" because he couldn't get Live Messenger to install succesfully on Vista (Home Premium).
Live Messenger is one of the main things he uses on the computer -- so its broken state meant that a large portion of his investment in a new computer was total waste. Very frustrating stuff.
My friend was pretty certain that I wouldn't be able to fix the problem, because:
- he'd spent a long time on it himself (he has a macgyver-like ability to solve problems)
- another friend, who is a talented and successful sysadmin had spent many hours trying to fix the problem.
In fact, he was so certain I would fail that he made this generous offer:
If I succeeded at getting Messenger to work on his computer, he would give me the opportunity to take a photo of his fresh new vasectomy wound, and share that photo with the readers of this blog. Seriously.
Too good to pass up, I cracked my knuckles and sat down at the computer.
Well, i tried to diagnose the problem, and i was stonewalled immediately.
The Live Installer (WLInstaller.exe) was failing, and giving no reason, no detail, no error code -- nothing you could use for "direct" troubleshooting.
Worse still, there was absolutely no evidence in the event log.
That was a pretty big fail, on the part of WLInstaller.exe. As usual, I'd like to take a baseball bat to the live team. But Vista didn't seem to be to blame at all.
It is far too easy to blame the Operating System whenever there's a problem on the machine. Does Vista deserve to be cut some slack? Maybe just innocent until proven guilty would be a fair place to start from.
I had momentary visions of using (sysinternals) Process Monitor and Fiddler to see what was really going on. But then I took my usual troubleshooting tactic: JFGI.
Turns a lot of people have trouble installing Messenger if they're behind a proxy.
The file 'WLInstaller.exe' is just a shim that is supposed to grab the real installer files from the internet. But if your machine is behind a certain type of proxy (I don't know what type in particular) then it won't be able to download the real installer files (the .msi).
This forum post, "Install WLinstaller.exe via proxy in Windows Live Messenger", gave a link to download the .msi file directly, and bypass using the broken WLInstaller.
It worked a treat.
You will be pleased to know that I declined the ensuing photo opportunity. I can only imagine that you missed out on seeing something like this.
Read On...
Sat, 26 Jul 2008 01:14:58 GMT

TechCrunch is usually a deplorable timesink but I'm quite intrigued with their recent post about 'A Dead Simple Web Tablet'
The idea is instantly exciting -- but the funny thing is how readily those who love the idea are willing to see it destroyed.
The crux of this product is that it's dead simple. It has to be thin, light, cheap, low power, browser-only, always connected, with no OS, and no tweakability. All of these goals work together toward one goal: simplicity.
Yet, people who claim to love the idea are also clamoring for its destruction: they're asking for more and more features. They just don't get it.
The acclaimed masters at simplicity would haveto be 37signals who've written countless salvo's on the less is more principle.
The general template for the 2000 or so comments on the web tablet seem to follow this insane template:

WOW AMAZINGS!
i am 8 yr old dreamy eyeed blogger who will help make this awesome by giving ideas.
you MUST attach a microwave dish and a muffler.
Also, make it cheaper. Then i will buy two.
Here's a tiny portion of the 'extra features' that commenters have asked for:
- Need the ability to add software
- have a dedicated right-click button for extra functionality
- where is the button to bring up a touch screen keyboard?
- Make 3 different tablets at different prices with increaseing features.
- Bond everything with screws... for tinkerers...
- You don’t need a power port - you can use wireless power transmition, simply charge it by putting it on a powered matt
- add home automation\
- Put in a standard ethernet port, not everyone will have wifi
- folding in half would be a killer feature. Aren’t LCD screens flexible enough?
- GPS
- a one-touch "button" area in a corner to pop up a FAST, dialog... for setting up a complete personal shorthand
- rubberise the edges and part of the back of the device
- Sugar XO for the gui
- Car charger
- Boot from SD
- What about Verizion/Cingular WiFi
- docking station for the Apple iPhone 3G
- have a setup in the beginning when you turn on the tablet, then allow them to choose what browser
- You’d better have Gimp/Inkscape on there too
- make it so we can mod it
- Add a button on the right and left for moving the browser backwards and forwards so that it is more of a two-handed hand-held device
- screen resolution is at least 800×600
- one of those little plastic things on the bottom of a keyboard, so it can stand up on a flat surface
- Sliding onboard keyboard
- A keyboard button is a good idea
- a clamshell with dual screens
- ability to run the Firefox addon’s
- an adsense supported version for free.
- Sound Jack
- Bluetooth
- Wifi
- A few SD slots (must be more than one).
- A modest Flash drive (1 gig)
- A USB port on the side (attach a keyboard/mouse).
- An accessory, cover, perhaps a fold back that acts as a stand.
- A4 size.
- local media storage is a must -- SD cards would be the best way to go
- Ability to play rudimentary games and emulators as well as use some of the more esoteric graphic designs of compiz, like drawing fire and watching it rain on my lap
- Multitouch would be a gigantic boon to the design and the function
- VPN would be very interesting
- try to include paint.net, the GIMP, or photoshop
- I’m all for having different configurations and the consumer deciding
- We really need a good eBook reader
- Something sleek and black would be really nice with an OLED screen
- hot-swappable batteries,
- similar software to the really rather good MS OneNote, and a decent OCR engine
- have a small covered USB port so you can plug in a typical USB Drive
- a waterproof version to check the news in the morning while having a shower.
- a bluetooth module... allow you to connect multiple devices wirelessly.
- Instead of a slide out keyboard, how bout an optional folding bluetooth keyboard.
- would have to have a comic book reader application like Comix, as well as the web browser for Marvel Digital comics
- Given the prominence of videomessaging it needs to have a video camera and decent microphone and speaker
- have a brick that is a battery that plugs into the device.
Read On...
Wed, 23 Jul 2008 00:28:54 GMT
If they don't -- then it gives me absolutely no confidence in the product.
But if they do store the code for TFS in an instance of TFS... well, in that case I have absolutely no confidence in the product.
;-)
Read On...
Sat, 12 Jul 2008 13:03:53 GMT
Hey cats and crooners.
TimeSnapper is on sale for a very short while.
We're dropping the price to $19.95, waaaay down from the usual $39.95.
I quite like the normal price. People pay it. They're polite about it. And I get some money in my pocket.
But my most excellent business partner, Atli, seems to have this generous (*cough* misguided *cough*) soul where he believes that people with less money, (and also bargain hunters), deserve to get their hands on the software we've worked so very very hard to build and to continuously improve. He thinks we ought to give that away for practically next to nothing. Thanks Atli. Great Idea. Up there with Napoleon's invasion of Russia. (A dismal failure that one, by the way). So, anyway, he talked about offering a temporary discount, and I foolishly let him proceed.
I don't want to over-dramatize the point, but clearly these insane prices won't last. We'll either go broke or end up in business-divorce-court. So if you want to improve the way you record and organise your life, purchase TimeSnapper this very damn minute.
It's good software, that helps you organise your life, understand how you live it, improve how you work, recover from problems, and a whole lot more. We make it better every chance we get.
And there's an extra bonus for non-US customers. This took a lot of organising. The American dollar is currently in the toilet, so anything priced in US dollars is much cheaper than usual. (Deal with it, my yankee brothers.)
Read On...
Sat, 12 Jul 2008 09:38:55 GMT

This is an interesting question that almost everyone misinterprets.
People assume the question is:
(wrong question) "How can Microsoft beat Google at Search?"
But Search doesn't make money. Forget search. (Search just brings traffic).
Advertising makes money.
While Google are almost invincible at search, they're quite flimsy at advertising. Lucky for them, most other people suck even more at advertising.
If Microsoft offered a significantly improved advertising service, then Google would be forced to buy advertising services off Microsoft. And then, the more Google excelled at search, the more money Microsoft would make.
Think about that for a moment. It sounds insane, like some whacked out piece of futurama satire, but i'm deadly serious. Okay, not deadly lethal serious, but serious enough to repeat it in a <blockquote>, for those who scan without reading:
"If Microsoft offered a significantly improved advertising service, then Google would be forced (by shareholders) to buy advertising services off Microsoft!"
Five years ago, Google's advertising offerings were revolutionary. Their minimalist text-only ads took the world by storm. The jaded internet user actually clicked on a few ads. An incredible time was had by all.
In the five years since, Google have offered only marginal innovation.
The funny thing is that in those five years, Microsoft seem to have gone almost backwards!
Far from jumping on the 'minimalist' bandwagon, they persist with the blinky-banner ad school of thinking, and even dropped SIX billion dollars on buying aQuantive, early last year in a move that... well, i'd be scratching my head if i were Steve Balmer.
Microsoft could simply fire everyone in advertising, and get a bunch of lunatic perverts from a local insane venereal-monkey asylum, and probably come up with a better advertising program. (There are rumours that they've done exactly that several times already)
Now, in the interests of being more constructive with my feedback, here's my two step plan for winning at advertising.
- Clone what google currently do (i.e. same thing they did five years ago)
- Improve upon it.
The real constructive criticism would be around how to improve upon what Google currently do with advertising.
I'm out of time. So what are your thoughts, how can advertising be better than we get from Google today?
Read On...
Tue, 08 Jul 2008 12:10:49 GMT
There's a new release of TimeSnapper, which brings us up to version 3.1.
You can now see your productivity profile at a glance, when playing back your day.

This turned out to be a real "must have" feature. As soon as I'd implemented a rough version of it (on my home computer) I was frustrated that it wasn't yet available on my work computer. There was no going back.
We call it 'red/green' striping, because it shows productive time in green, and non-productive time in red.
You can quickly filter to see only the productive time, or only the non-productive time.
To teach TimeSnapper about what time is considered productive or non-productive you use a simple wizard. You list some applications as 'always productive'. And you can indicate keywords that are a sign of productive time.
If you aren't interested in productivity tracking, then you get a smooth blue timebar instead.

It took a while to iron out the bugs, because this is a feature that I implemented, not Atli. To be fair, there were a lot of edge cases to uncover.
Also, automatic updates are enabled again. So you can automatically upgrade from whatever version you are on, right up to version 3.1.
Thanks to all the new users, and all the ongoing users who help us out with feedback and encouragement.
Also, please, if you see something we can do better, please tell us. We try. By god do we try!
Read On...
Wed, 02 Jul 2008 11:16:43 GMT
Many, well, years, ago I started a series of articles on '25 steps for building a Micro ISV'. It's still something that I care about very much, and that I hope to get back to sharing.
In the meanwhile, here's a quick wrap up of the some of the tools we use to help run TimeSnapper, our MicroIsv.
These are by no means the 'ultimate' choice or 'best of breed' in each category -- these are just the choices that we happen to use in TimeSnapper.
I think it's interesting to see just how much software we rely upon, even though we are 'Independent'.
This also leaves out the dozens of articles and blog entries that teach, inspire or unblock along the way, and the many tools we've considered using, or the many tools we're planning to switch to.
- Register Domain
- Reliable hosting
- Website design -- free templates
- Basic Website content
- Install traffic monitoring on your site
- Create forums, encourage feedback
- Maintain a FAQ
- Get the best screenshots you can
- Configure email for domain
- Get payment account
- Allow payment from your website
- Create a PAD file -- portable application description
- Register at download sites
- Strategy: separate "free" from "professional" products
- Get a suitable end user license agreement (EULA) -- infact get two!
- (write it yourself, with help from weasel lawyer friends)
- Auto update strategy
- License activation webservice/website
- (we wrote our own using asp.net and firebird)
- Get a license management database
- Build a proper installer
- Obfuscate your assemblies
- Automate your build+release strategy
- We've switched from final builder pro to batch files, to ms build
- Free up enough time/resources for dealing with support/feedback
- Shiny, Usable, Helpful
- Plan and enact your promotional strategy
- Do it all again
Strangely absent from the list is our current choice of source control tool -- SourceGear Vault.
Read On...
Wed, 02 Jul 2008 09:37:33 GMT
I luckily stumbled onto a long forgotten gem today -- the Tree command in DOS.
What does tree do?
Tree promises to:
"Graphically display the directory structure of a drive or path."
Here's the output of tree called on the obj folder of a .net project, for example:
>tree
+---Debug
¦ +---temp
¦ +---TempPE
+---Release
+---temp
+---TempPE
It's awesome to see the Graphical power of DOS unleashed!
Here it is with the marvelous 'f' parameter, that also shows files...
>tree /f
+---Debug
¦ ¦ AboSoftLib.dll
¦ ¦ AboSoftLib.pdb
¦ ¦ TSLib.dll
¦ ¦ TSLib.pdb
¦ ¦ TSLib.vbproj.FileListAbsolute.txt
¦ ¦ TSLib.xml
¦ ¦
¦ +---temp
¦ +---TempPE
+---Release
¦ TSLib.dll
¦ TSLib.vbproj.FileListAbsolute.txt
¦ TSLib.xml
¦
+---temp
+---TempPE
What joy!
(Now where was I? Ah yes, about to install nc)
Read On...
Fri, 27 Jun 2008 10:04:11 GMT
(sorry for posting this drivel from my own backlog of notes. i'm pretty ill at the moment, and don't have time to do any better. there are some good things in the works though -- a whole slew of nifty projects just kicking off)
That drunk steve yegge was muttering onstage about languages, and said something that raised an obvious idea in my mind:
Virtual machines are great for language interoperability. If everybody in the world used [the language D, for example], you probably wouldn't need a virtual machine. You'd probably still want one eventually, because of the just-in-time compilers, and all the runtime information they can get.
But by and large, we don't all use D. In fact, we probably don't all use the same five languages in this room. And so the VM, whether it's the CLR, or the Java VM, or Parrot, or whatever... it provides a way for us to interoperate.
Although he weakens his own point by mentioning these competing VMs (CLR, JVM, Parrot) -- this slip up makes me wonder: can a VVM be created? A Virtual Virtual Machine -- that acts as a layer between languages and virtual machines, and allows higher level code to be translated onto any virtual machine.
Dawn of computer age
We write:
Machine Code
Compilers invented...
thank you gracie!
We write:
Code, compiled to
Machine Code
Currently...
We write:
Code, compiled to
VM code, jitted to
Machine code
Future?
We write:
Code, compiled to
VVM code, zapped into
VM code, jitted to
Machine code
Or instead we could intercept between the Virtual and Physical tiers with a Virtual Machine Machine --
We write:
Code, compiled to
VM code, jitted to
VMM code, swizzled down to
Machine code
So the full five tier infrastructure would be:
We write:
Code, compiled to
VVM code, zapped onto
VM code, jitted to
VMM code, swizzled down to
Machine code
The opportunities for optimization would be endless! (or.... just hopeless)
Read On...
Sat, 21 Jun 2008 11:56:56 GMT
Linq to Sql started life as:
" ...a humble Visual Studio project on my desktop machine way back in the fall of 2003..."
Matt Warren
It only reached production when ObjectSpaces failed to ship with VS2005 (it took a dependency on the ill-fated WinFS).
In November 2007, ownership of Linq 2 Sql was transferred from the C# team to the SQL Data Programmability team.
And now, microsoft are finally poised to release their long-anticipated ADO.Net Entity Framework (aka, 'EF').
Maintaining both EF and L2S involves some clear conflicts of interest.
So, here's a brief Edward De Bono style "Plus/Minus/Interesting" analysis of the question:
'should Linq to sql go open source?'
Plus:
- It could get a lot of people working on it.
- Features could be added based directly on community need, eg.
- mockability
- multiple providers
- ability to refresh portions of the model without refreshing the entire thing.
- ...and other alleged showstoppers
Minus:
- If it doesn't get many contributions, then it could effectively kill the product, as it would be hard to move it back in-house.
- It would probably become impossible to ship it as part of the framework, due to liability concerns.
- Open Source is Communism ;-). (ah, kidding)
Interesting:
- It could represent a hedge-bet / fallback position in case Entity Framework doesn't take off. (EF is pretty big and i'm a little worried that it won't take off).
- With or without it being open sourced, the community (that's us!) can create awesome third party products, add-ons and scary work arounds to extend or test linq to sql
What are the chances?
Read On...
Wed, 18 Jun 2008 05:23:23 GMT
I promised earlier I'd look deeper into microsoft's products around Synchronisation -- here's the first thing I want to make clear:
FolderShare and SkyDrive are completely different
or to put that another way:
But wait a second... are you retracting your earlier claims?
Yes and no. There is a massive fail here -- i'll get to that in a moment.
But first I want to clear up the differences between these two products.
SkyDrive is just online storage, and it has nothing to do with synchronizing those files to any location. There's no client side components (no shell extension, no explorer integration) no developer API -- nothing like that. But on the plus side it's 5 GIG, and it's deeply integrated with the spaces.live.com "on line presence" system.
FolderShare, on the other hand, is all about synchronizing files via the internet. There's no online storage at all. Instead you download and run a small client application (from here) on each of your machines, including Mac OSX. And thus, peer to peer connections can be established (i think they're encrypted and then proxied via microsoft servers) for synchronizing folders.
Each of these are very strong products, and very useful. You can find a lot of people who use and love these services.
Microsoft did a commendable thing when they bought foldershare, and made it free. Thank you!
But the massive fail belongs to...
The massive fail here belongs to the "cut and paste marketing" that's been used to push these two products.
It's a new term I'm coining for Marketing-Communication teams who plagiarise their own work.
Compare and contrast the difference in these two messages:
"Sharing with friends, co-workers, and family is easy..."
Folder Share marketing
"Sharing with friends, co-workers, or family is easy"
Sky Drive marketing...
And compare these two:
"access your personal files from anywhere online"
Sky Drive marketing...
"Access your files from any computer."
Folder Share marketing
The lesson for me is that while re-use is a Good Thing when writing code... it's not so good in the world of product positioning.
Read On...
Wed, 11 Jun 2008 11:51:21 GMT



Microsoft's Live team have lots of different offerings that let you synchronize your information from one place to another.
They've got Live Mesh, for sharing 'your digital world' here there and everywhere.
They've got Sky Drive, which lets you share files with yourself, your friends, anyone.
There's folder share, the start up company they bought out which does more or less the same thing.
There's something called office live workspace which lets you sync and collaborate and something else.
There's synctoy, which uses Sync Services for File Systems. It's a kind of Robocopy on downers, with a UI.
And then there's the grand daddy of all of these -- Ray Ozzie's offering, Groove.
Holy Fracking Jesus, Microsoft!
There's clearly one Synchronisation concept that escaped them completely.
They could've gotten together as a team, shared their ideas, and realized: Oh Crap! We're all building different versions of the same thing.
Instead of creating a tangle of overlapping and unmergeable products, why didn't they synchronise their thinking and work out what problem they're trying to solve.
And then build one compelling product, that's a joy to use, and which clearly solves that problem.
Not to mention sharepoint which let's you, well, share. Up to a point.
And, microsoft/ford sync for talking to your cars.