Wednesday, 10 March 2010

Harmony: A neat drawing tool in JavaScript

Flash-free graphics in the browser is getting easier to do, and snazzier:



Try it here. View the source to see the JavaScript.

Monday, 8 March 2010

mmmm ... CoffeeScript

The most commonly used programming language in the world today, certainly within the browse, JavaScript superficially resembles the Java programming language in its syntax, but at deeper levels it owes far more to lesser-known languages, such as Scheme and Self.

The Java part of the name and syntax apparently came about as a result of a decree from Marketing that Java was the next hot thing, and inventor Brendan Eich worked feverishly to swiftly put a Java-esque sheen over the top.  This, plus the cutesy name, helped mislead a lot of people for a lot years into thinking that it was a toy scripting language, and only with the more recent success of AJAX has its underlying power come to the fore.

And yet we are still burdened with the clunky syntax.

However, CoffeeScript promises to change that, with a new, lightweight syntax for JavaScript that owes a fair bit to Python and Ruby syntaxes, and a lot to experience with JavaScript.  An example:

# Uses a binary search algorithm to locate a value in the specified array.
binary_search: (items, value) ->
 
  start: 0
  stop: items.length - 1
  pivot: Math.floor((start + stop) / 2)
 
  while items[pivot] isnt value and start < stop
 
    # Adjust the search area.
    stop: pivot - 1 if value < items[pivot]
    start: pivot + 1 if value > items[pivot]
 
    # Recalculate the pivot.
    pivot: Math.floor((stop + start) / 2)
 
  # Make sure we've found the correct value.
  if items[pivot] is value then pivot else -1
 
 
# Test the function.
puts(2 is binary_search([10, 20, 30, 40, 50], 30))
puts(4 is binary_search([-97, 35, 67, 88, 1200], 1200))
puts(0 is binary_search([0, 45, 70], 0))
puts(-1 is binary_search([0, 45, 70], 10))

At time of writing CoffeeScript is only up to version 0.5.5, and syntax is not guaranteed to stabilize until 1.0, but IMO it's well worth a look.

P.S. A neat little blog post about CoffeeScript (with short examples) from Thomas Reynolds.

P.P.S. There are similar tools/nicer syntaxes for HTML (HAML), and CSS (Sass).

Tuesday, 2 March 2010

What makes a good entrepeneurial blog

In his good-bye to blogging article Joel Spolsky of Joel on Software fame paraphrases Kathy Sierra:
To really work, Sierra observed, an entrepreneur's blog has to be about something bigger than his or her company and his or her product. This sounds simple, but it isn't. It takes real discipline to not talk about yourself and your company. Blogging as a medium seems so personal, and often it is. But when you're using a blog to promote a business, that blog can't be about you, Sierra said. It has to be about your readers, who will, it's hoped, become your customers. It has to be about making them awesome.
Now, that's not the aim of this blog, which started off as a combo. semi-regular frustrated rant / the traditional idea of a web log (keeping a log of cool things the author found on the web) / cute things about my kids, but nonetheless I reckon it's spot-on.

Wednesday, 10 February 2010

They should be remaking bad movies ... and fixing them

Wise talk from Ed Catmull, president of Pixar and Disney Animation studios, on what he's learned:



Gems (paraphrased):
  1. Give a good idea to mediocre people and they'll muck it up; give a mediocre idea to good people and they'll fix the idea, or throw it out and get a good one.
  2. A movie or product isn't just one idea, it's thousands, and most of them need to be done right for you to succeed, so you need a good team
  3. People are always remaking good movies; they should be remaking bad ones that were based on good ideas, but poorly executed
  4. People and how they function is more important than ideas
  5. It's very possible to misunderstand the reasons for your success
  6. What's important are the things that affect behavior
Plus insights into why people don't like to do post-mortems, gaming "the system", communication structure vs company structure, and why successful companies fail.

Sunday, 31 January 2010

Hygiene and Motivation

In Nine Things Developers Want, Rob references Herzberg's Two Factor Theory:
In the 1950s a researcher named Frederick Herzberg studied 200 engineers and accountants in the US. He asked them a few simple questions and came up with what is one of the most widely-accepted theories on job satisfaction called Two Factor Theory.
His theory breaks job satisfaction into two factors:
  • hygiene factors such as working conditions, quality of supervision, salary, safety, and company policies
  • motivation factors such as achievement, recognition, responsibility, the work itself, personal growth, and advancement
Hygiene factors are necessary to ensure employees don’t become dissatisfied, but they don’t contribute to higher levels of motivation. Motivation factors are what create motivation and job satisfaction by fulfilling a person’s need for meaning and personal growth.
In his cracking TED Talk Dan Pink delves into some of the behavioral research that explores the consequences of using extrinsic factors such as monetary rewards as motivational tools:



Bottom line: extrinsic rewards tend to narrow focus and hamper creativity.

Thursday, 28 January 2010

Some powerful Javascript tools

As the web-browser turns into the client of choice, it's good to have powerful tools to hand.  To whit:

 No doubt more to come.

Thursday, 21 January 2010

See no evil, hear no evil, speak no evil

The three wise monkeys together embody goodness of mind, speech, and action.



Daughter Ella, aged four, embodies cheekiness of mind, speech, and action.