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?
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.
The talks were a blast to deliver. I only wish there was more time to talk about stuff I love.
Regarding the Hanselmanshowdown 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.
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."
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...
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.
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.
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.
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 ....)
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."
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:
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 ;-)
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.
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.
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.
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
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...
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).
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.
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, purchaseTimeSnapper 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.)
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)
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!
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.
(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.
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).
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:
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.
In the space of a few days, what started as a blog post has turned into a web phenomenom. He put together the digg-like site in a couple of days, apologizing all the while how long it was taking. (It's actually based more on a site from Dell called IdeaStorm but calling it 'digg-like' gives it an instant familiarity).
The amount of content now available is stunning. Long is awesome -- but so are the people who follow his blog. The recurring theme is that little things add up.
This is a point that Joel Spolsky makes over and over on his website (when he's not telling you to learn C)
"Another tiny frustration. These things add up; these are the things that make us unhappy on a day-to-day basis. Even though they seem too petty to dwell on (I mean, there are people starving in Africa, for heaven's sake... ), nonetheless they change our moods." --Joel Spolsky in User Interface Design for Programmers
I think we need more of these UX Task force sites. What I'd love to see:
Office.UXTaskForce.com
a community site for improving usability in MS Office
VisualStudio.UXTaskForce.com
improve Visual Studio
IE.UXTaskForce.com
improve Internet Explorer
...and so on for any software that has sufficient surface area to maintain its own independent site for focusing on user experience.
Obviously my own needs are too limited to the microsoft realm -- such is my burden in life.
I checked if the UXTaskForce.com site was available, with the idea of donating it to Long (he's a fellow Australian after all)
The website has been registered, and only a few days ago -- hopefully it's Long himself who grabbed it.
If there was a community-backed Visual Studio UX Taskforce (rather than the paltry connect.microsoft.com/VisualStudio), here's something I'd contribute (from the last few minutes). It's really small, but... well, little things add up.
Close button on Trial Dialog should be called 'Continue'
The 'Trial' nag screen offers two choices: register and close. As a user you pause and think Close will cause the application to shutdown. But actually it doesn't, it just allows you to continue.
Jeff Atwood writes CodingHorror which has been steadily building an audience over the last few years and is now a very popular destination for programmers.
I'd like to share my current opinion of the formula for creating Jeff Atwood style articles, in the hope that it may inspire someone, somewhere to do something, somehow.
Here it is:
1. Get an opinion
Uncover some ugly half-baked opinion in the dank underground of your tortured soul.
2. Resist the urge to blog at this point.
99% of bloggers would dash out their hideous wretch of a thought at this point.
Jeff holds back.
3. Research the classics
Remember: if you steal from one source they call it plagiarism. Steal from many, they call it research.
First, turn to books. What does Steve McConnell say? Tufte? Brooks?
Highlight any well written phrases you may wish to quote.
4. Beyond the classics
Ah, but the classics so often fall short. Particularly on contemporary topics.
Turn to the words of reputable bloggers, or better yet, wikipedia. Branch out from there.
Again, highlight phrases with a quotable turn of phrase.
But be ruthless and perfectionist in your approach: quote no trash.
5. Look for opposition
Actively seek out contrary opinions. Every topic has naysayers, and amongst such sayers of nay must be people who express valid concerns. Again --
Highlight any well written phrases you may wish to quote.
6. Firt Major objective satisfied
Now you've collected the meat around which the gravy of your narrative shall flow.
Crack knuckles, sit straight, for now you can write the text itself. Lay out the quotes before you and choose only the best and most worthy.
7. Reader is ignorant yet intelligent
Assume the reader knows nothing about the specific niche topic at hand.
And yet -- here's the hard part -- treat the reader as your intellectual equal. Talk across to them, not down to them. They are exactly as smart as yourself, but it so happens that they have not, just moments ago, finished reading the very best writing on the topic at hand, and as such they need some friendly coaxing.
If new terms are introduced -- define them. Or failing that, provide a link to a definition.
8. Take a side - For Now
Be willing to take sides, by all means. But present both sides of the arguments in a fair light: hence, do not try to make either side appear worthy of ridicule.
9. Why choose that heading?
Choose a heading that is open to misinterpretation.
The heading should raise questions, not answer them. Answers are complex things, and readers shouldn't trust any article that answers everything in the heading.
10. Google Search for images
It's near the end of this article and you are hardly reading now -- which is a shame, because the best tip is the final one.
Perform a google image search for something entertaining (or disturbing) to accompany and lighten your research. Your own biases will probably come into play here and you'll adorn your article with pictures of computer games, console apps and kittens. But you can't be perfect. After all, you're only Jeff Atwood.
Scan over your writing one more time. Ensure the tone is friendly and informative: capable of causing upset, yet never quite, exactly "wrong".
Hmmm. To be honest, just go read his site and make up your own rules. He breaks these ones all the time.
The only absolute rule I know he follows -- is to be Atwoodistic. I would define Atwoodism as follows
When you mention a topic you've covered previously, provide a link. Always.
So -- you decide to extract that code snippet and place it in its own routine.
Routines are nice, routines are great.
"Aside from the invention of the computer, the routine is arguably the single greatest invention in computer science." Why You Should Use Routines, Routinely
Now -- any instance of those fives lines becomes instead:
Upsert();
Great! You've achieved one of the primary goals of routine construction: code reuse. Your code is now shorter, and thus hopefully cheaper to maintain. It's more versatile because now if you change the way "update or insert" works you only need to change it in one place.
Life is sweet. The birds sing and the flowers bloom once more.
But there's something amiss. Something foul remains.
You've failed on the other goal of routine construction -- you've failed to hide away the implementation details. You've failed to "raise the abstraction level!"
The user/programmer still has to think about the inner concepts: update and insert. Every time they see that words "upsert" -- the details "Update and Insert" are staring them in the face.
You lose sleep. Your dreams are troubled. Dark clouds follow you everywhere. And in quiet moments you hear the ominous echo of Alfred North Whitehead whispering:
"Civilization advances by extending the number of important operations we can perform without thinking."
--Alfred North Whitehead
Did you read that? What? You missed it -- here it is again:
"Civilization advances by extending the number of important operations we can perform without thinking."
By choosing the name "Upsert" we've failed in our duty to advance civilization! We want the user (the programmer who uses your routine) to perform these two important operations without thinking about both of them.
Let's think of a better name -- a name that alleviates the consumer from having to think about the constituent parts of the routine they're using.
Isn't that nicer? And civilization has taken another tiny step forward.
Incidentally -- it seems this 'Alfred North Whitehead' was a functional Programmer in the 1800s -- before Church and the Lambda calculus that gave rise to functional programming. Here's a comment about him:
"There are no fundamental "things," or "objects" in the world of Whitehead. Whitehead's ontology, or parts-list of the universe, contains only processes." --Richard Lubbock in 'Alfred North Whitehead: Philosopher for the Muddleheaded'