Friday 20 February 2009

Three things that my children have learned

Just for fun I asked my son, who has just started school, what three things he has learned at school.  Jake's (very definite) response:
  1. Respect,
  2. Sport, "and finally:"
  3. Italian.
I then asked a similar question of my daughter, who has recently commenced kindergarten.  Ella's reply:
  1. How to draw,
  2. That [another child] is not my friend, and
  3. That I do not know how to draw.

Wednesday 18 February 2009

HtDP for the experienced programmer

I am a fan of Scheme (a programming language for the soul) and SICP "the greatest book on programming ever written", but my hat goes off to the creators of DrScheme, a great interactive environment for the beginner and experienced programmer alike.

The other night I swallowed my pride and started to work through HtDP (How to Design Programs), the PLT Scheme gang's reaction to the fact that SICP (which came from MIT) while great for the suitably talented individual does not by-and-large work for the mainstream. In this book they explicitly teach program design, a systematic approach to thinking and problem-solving that it seems only a few people get by the more traditional osmotic process.

HtDP is covers a great range. Although principally geared to college level, it can be taught in high schools (at a slower pace), and can teach most experienced practitioners more than a thing or two.

Additionally, the people on the PLT Scheme mailing list are incredibly friendly and supportive. Here's what Matthias Felleisen, first author of HtDP (among many other things) wrote when I mentioned that I was starting to work through HtDP, but was having difficulty restraining myself from skipping ahead:
If you are an experienced programmer, you should read HtDP like this:
  • Read the sections whose title starts with "Designing ...."
  • Also read the "iterative refinement" sections
  • Pick five exercises in the preceding and/or follow-up section and solve them according to the recipe
    [my emphasis]
  • Unless you're stuck move forward
  • Try to understand the "symmetry" between data definitions and templates
I expect that somewhere around late part II, you will slow down. You may pick up real reading as of part III, though some may make it thru III and only "stutter" in IV.

Also:
  • Use check-expect to express your examples/tests
  • Avoid draw.ss exercises, replace them with world.ss but that's a non-trivial switch
And holler if you are having trouble -- Matthias
In short: Great tools, great teaching materials, supportive and experienced community.

Software Product Design and the Collaboration Process

In the last few months my team and I at Austhink software have had a wonderful graphic designer -- David Urbinder -- consult on our products. Much more than design icons and images, collaborating with David has led to improvements in overall visual design, and more deeply into dynamic behavior (interaction design) and consequently the overall usability and appeal of our products.

Working with someone from a complementary design background helps to trigger creative sparks. David has pointed me to this article by Nate Fortin about the non-separability of design into different disciplines in Cooper Journal. Cooper Journal is hosted by Cooper Design, whose principal Alan "Father of Visual Basic" Cooper wrote the influential book About Face, and the provocative and important The Inmates are Running the Asylum, both of which I also highly recommend.

One of the issues that we are grappling with is how best to engage expert outside design consultants like David. At the moment we are doing a blend of some consulting time, plus directed tasks, spread out over time. The benefit of the spreading out is that we get the benefit of David's creative input early, when it can have a formative effect, and guidance at later stages too as the product becomes more "locked down". Coordinating our schedules is a "fun" part of this approach, and is of course more challenging than just employing him for confined blocks.

Finally, if you want to commission David, I would love to link to his web-site, but I believe that it is not ready for public consumption just yet (hint, hint ;-). In the meantime, David can be contacted on email at urbinder@gmail.com.

Monday 16 February 2009

New tag line?

The problem (from my last post): Get our draft mission statement:
We use our skills in software, game design and visual animation to make our customers' business applications more fun (and much more effective).
down to a snappy under-five-words tag-line.

Here is an unfiltered list that I came up with while sitting through a talk on "cloud computing":
  • Make work fun
  • Make work visual and fun
  • Make work fun and visual
  • Work as a game
  • Game the system
  • Games that work
  • Turn on your brain
  • Work meets play
  • Smart play
  • Intelligent play
  • Play smart; work smarter
  • bFun. bSmart.
More ideas?

Sunday 15 February 2009

Mullenweg's 12 rules for getting from 1 to 100,000 users

Matt "Wordpress, Akismet, Ping-o-matic" Mullenweg has 12 rules for getting to a large number of users:
  1. You have to be the most passionate person involved.
  2. Get off the computer - the act of writing things down on paper frees the mind, allows for the juices to really flow.
  3. Obsess about the details, down to the space between two letters.
  4. Do your own support. You have to be able to feel the pain of your users. Document everything. Make it as easy as possible for your users to contact you.
  5. Blog every step of the way. Keep all of your users in the loop at all times - they will love you. Communicate with them and put them in the driver's seat.
  6. Have a great tagline. If you can't describe what you are doing in less than 5 words, edit it, shave it down.
  7. Frame everything you're talking about in a context for your users. What are you going to do for them?
  8. Get out of version 1.0 as fast as possible. Most people make their successes on something different from where they started. Be flexible. User feedback is the most valuable asset. Don't let yourself be too led by your first users. Listen to the silent majority. Keep the majority in mind.
  9. Track yourself.
  10. Know what to do if you are successful.
  11. Start strong, end strong. People don't often remember what was in the middle.
  12. Be a pain killer, not a vitamin.
The 46-minute podcast of Matt's talk.

Excellent food for thought. One that caught my eye was #6. The problem: Get the shiny draft mission statement down to a snappy under-five-words tag-line.

Tuesday 10 February 2009

Victorian bushfires: A personal appeal

Unprecedented bushfires have affected my home state of Victoria, Australia, since last Saturday. I live in the capital city, Melbourne which has been largely unaffected, but like almost everyone else I have friends and family who have had narrow escapes.

Unfortunately, many have not been so lucky. Over one-hundred-and-eighty people are confirmed dead with estimates that this will rise to over 300.

Today I was saddened and shaken by the news that a family that I know -- a mum, a dad and two children (only a few years older then my own) -- perished while defending their home.

What to do?
Like most Victorians we are donating money, in our case through the Red Cross Bushfire Appeal. In addition Andi is donating patchwork quilts to the destitute. We are looking into other ways that we can help.

I urge all Australians -- especially Victorians -- to donate generously, and if possible to also help by donating goods, personally volunteering, and offering shelter to those rendered homeless.

Monday 9 February 2009

My son the vigilante

In the round-up to Jake's first week at school, when asked about his day, Jake said in passing:
"I had to wrestle one boy, to stop him from being mean to another child."
Further questioning failed to yield meaningful elaboration. In the absence of calls from the school I guess we'll just have to assume (hope?) that Jake was on the side of the angels.

Shall we learn, or wrassle?

So to any bullies reading this, remember: "Don't mess with red".