Fixing problems can give you a glimpse of something terrible

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:

  1. he'd spent a long time on it himself (he has a macgyver-like ability to solve problems)
  2. 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.

 

Web Tablet: Toward Less Complexity

mockup of the dead simple web tablet

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:

simplicity isn't just a bullet point in a list

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 addons
  • 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.
 

Do they store the code for TFS in TFS?

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.

;-)

 

Sudden TimeSnapper Discount!

Hey cats and crooners.

TimeSnapperCheap now, not for long!

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.)

 

How Can Microsoft Beat Google?

Microsoft versus Google with the European Union as adjudicator perhaps. Not sure which one is google and which one is microsoft. Such attributions are perhaps the heart of the problem.

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.

  1. Clone what google currently do (i.e. same thing they did five years ago)
  2. 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?

 

TimeSnapper 3.1: Attack of the the Red/Green Stripes

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.

Green and red stripes in the timebar indicate your productive and non-productive time

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.

Not watching productivity? you get a blue time bar 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!

 

21 tools used in our MicroISV

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.

  1. Register Domain
  2. Reliable hosting
  3. Website design -- free templates
  4. Basic Website content
    • (write it yourself)
  5. Install traffic monitoring on your site
  6. Create forums, encourage feedback
  7. Maintain a FAQ
    • (write it yourself)
  8. Get the best screenshots you can
  9. Configure email for domain
    • (all by yourself)
  10. Get payment account
  11. Allow payment from your website
    • (all by yourself)
  12. Create a PAD file -- portable application description
  13. Register at download sites
  14. Strategy: separate "free" from "professional" products
    • (all by yourself)
  15. Get a suitable end user license agreement (EULA) -- infact get two!
    • (write it yourself, with help from weasel lawyer friends)
  16. Auto update strategy
  17. License activation webservice/website
    • (we wrote our own using asp.net and firebird)
  18. Get a license management database
    • (we wrote our own)
  19. Build a proper installer
  20. Obfuscate your assemblies
  21. Automate your build+release strategy
    • We've switched from final builder pro to batch files, to ms build
  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
    • No tools required ;-)

Strangely absent from the list is our current choice of source control tool -- SourceGear Vault.

 

Lost Treasures of the DOS World: tree!

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)

 

The Virtual Machine Machine and the Virtual Virtual Machine

(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)

 

Should Linq To Sql Go "Open Source"?

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?