The Greatest Chalk Talk Known To Man: 'Better than a license to print money: Build Your Own Tiny Software Company'

Build Your Own Software Company

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.

 

Alan Kay on 'The Camel has Two Humps'

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

 

is the music inside the piano?

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

 

The Bluffer's Guide To Yegge: Business Requirements R Bullsh*t

the hp omnigo was not built by people who would use it. instead it was built by people who imagined the people who would, perhaps, use it

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:

"Business Requirements are Bullshit"

  1. If development of your product involves a 'requirement gathering' step then your product is doomed
  2. 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.)

find out what the users want before you build it

The start of today's dilbert seems closely related to that latest yegge... though it goes in a different direction. (In the picture at right I've omitted all but the relevant text)

 

Prototype Ready for Launch

It's taken a lot of hard work in my cave downstairs, but i think the prototype suit is finally ready.

my awesome ironman suit

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.

 

Idea: a poor man's eye-tracking heatmap for win forms

eye tracking heatmaps for a website show where the eye goes

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
while eye tracking devices are intrusive and ugly, mouse tracking and event logging are silent and unobtrusive

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

google analytics shows you the relative popularity of each part of your page

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:

  1. they don't let the user 'use' the recorded info
  2. they don't boast about cool visualisations and overlays
  3. they don't provide a general technique usable in other programs
  4. They actually did it, they didn't just talk about doing it ;-)

 

'The Register' seems to have plagiarised Mary Jo Foley

similarities

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.

 

A magic goal for software businesses

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.

 

A to Z of Software Methodologies

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
 

TimeSnapper in Music!

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