Author Archives: George Wright

Bitterness and Ruin

I have, in the past, written several short plays. Most are unfinished and some have even been performed at the Genesian Theatre in Sydney. It was during the casting process for “Wuthering Heights” that I was about to stage manage that I wrote an audition piece to put the auditioning Heathcliff’s through. I wanted to try to capture the many extreme moods that a Heathcliff would have to travel through. Heathcliff is at times rough and blunt but he has some extremely subtle distinctions between love and hate and is ultimately remembered as someone who took his revenge to the next generation. Emily Bronte truly created a powerful anti-hero in her Heathcliff.

So here is the audition piece/monologue.

Feedback welcome. If you do decide to use it, then drop me a comment and tell me how it went.

Cry of the Incumbent

You know you are about to be disrupted when you hear yourself saying..

“They’re bottom feeders” – probably, so?
“They’re too small to matter” – everyone starts small, size isn’t the issue.
“It’s an unsustainable model” – is it? Do they know something you don’t?
“It’s low margin/low value business” – Maybe, but is it profitable business?
“We have the quality product” – Claims of quality is a slippery slope (C.Shirky)
“No one will want it” – They disagree, check again.
“It’s useless, obviously!” – But will it sell?
“They’re just kids.” – Hmm..
“They wouldn’t dare.” – Yes they would.
“They are racing to the bottom.” – So? How are you going to respond?
“They don’t have our reputation” – and they don’t have your baggage.
“We’ve already tried that and it didn’t work (years ago)” – They think it will, what has changed?
“It’s too niche.” – No.. it’s a gap in YOUR market.

If you or a loved one defends their product and/or service and dismisses a new entrant with one or more of  these statements I’d recommend talking to your customers and see if they agree with you.

What are your favourite dismissal statements from the incumbent?

The Green Balcony Project

I’ve created a WordPress blog on my agendi.com domain called “the green balcony project” in order to firstly encourage and challenge people to use their balcony/backyard in a more sustainable way and to investigate the act of creating a community around a particular niche (in this case domestic environmental concerns).

In particular interest to me is “how much community makes a community”? Green Balcony Project has been running for less than a month and so far it is hard to get the message out. I haven’t really gone hard on it – a few tweets here and there, but the lack of action is depressing.

So far WordPress has proven to be an really nice blogging platform but I have my doubts about it being able to facilitate a community style site. I have also set up the wordpress forum (bbPress) integration to add more community firepower.

Reflections after reading “The Lucifer Effect” by Philip Zimbardo

“Our sense of power is more vivid when we break a man’s spirit than when we win his heart” Eric Hoffer
I have been using innovation in the noble sense eg. A great idea will inspire and win people over. This has been a demonstratively false assertion. The only recourse is to use innovation to break people and as a threat or a device of tyranny.
Disruptive innovation is “we could have done this the nice way together, but we couldn’t compromise, so now in order for me to grow you must diminish”
The evil system is the one that only recognises the zero sum.

In defence of Innovation and Prototyping

My work has been very busy lately, there is high demand for mobile and other media innovations that seems to be endless. This is a good thing. The market is hungry and relentless – traditional media has been a big, lumbering beast that recently has the shock of its life with more agile players drying up the “rivers of gold” by diverting many little attention streams from upstream. As with all erosion, eventually the groove is too deep for people to get out of to bother going back to traditional sources. Case in point – large domestic news media organisations are not competing against other large media organisations but against attention diverting social news sites. Added to this the increasing prevalence of super diversion devices such as “always on” smart phones, mobile games platforms, e-books readers, portable media devices and so on. As such, in the past monolithic product development life cycles and industrialisation of server-side software made sense, because all your competitors had to pay the same cost to compete. Those days are over.

The 6 to 9 month long projects, carefully scoped out and made “industrial”, to scale, for the hordes are seen as the preferred path to software perfection does not take into account the prevailing wind of “follow the market don’t market to followers”. By this I mean that the consumer/customer/subscriber/market is dictating the pace and not the other way around. The notion that any piece of moderately complex web-based service can be delivered as the final solution is blatantly untrue. Even during these long projects there is a lot of prototyping and work that never makes it to the final product. This doesn’t take into account the evolutionary nature of user experience, framework changes, strategic tectonic shifts as well as business priority changes and staff churn. There is a culture of “monolithic is better than prototyping because it is more structured and controllable” is a myth. Course changes are common, and will only become more common in the Media space. More often than not, the call to “industrialise” a technology is a veiled form of political control.

A prototype that can prove the right shape of a design, rapidly iterate through UX/design options, drill down into the heart of the challenge and so on. The fact that the code could be discarded and might require rework is not a weakness but a strength because bad decisions (and bad code) is easily discarded because there isn’t already that industrialised “spend”. If a project took 9 months to complete then you can be sure that the next round of basic changes will take 3 months and so on because the code base is already set.

I am not advocating a fire and forget policy of having your business run on prototypes. I’m not saying stability, scalability and architectural concerns aren’t valid and should be thrown out with the bath water. I am saying that all projects are evolutionary regardless of how long you stretch them out (in fact the more you stretch them out the more likely it is that they should be discarded, but won’t be), all platforms are moving targets and finally media consuming customers aren’t willing to wait for your 100% rock-solid platform that can only just deliver the services that they needed two years ago.

Great Circle Distance in TSQL

CREATE FUNCTION GreatCircleDistance
(
@LatitudeA float
, @LongitudeA float
, @LatitudeB float
, @LongitudeB float
)
Returns float /* meters */
BEGIN
/*
Great Circle Distance
cf: http://en.wikipedia.org/wiki/Great-circle_distance#Formulas
*/

declare @LatB float
declare @LatA float
declare @deltaLng float

set @LatB = RADIANS(@LatitudeB)
set @LatA = RADIANS(@LatitudeA)
set @deltaLng = RADIANS(@LongitudeA) – RADIANS(@LongitudeB)

RETURN( atan
(
(
sqrt(
power(cos(@LatB)*sin(@deltaLng),2)
+
power(cos(@LatA)*sin(@LatB) – sin(@LatA)*cos(@LatB)*cos(@deltaLng),2))
)
/
(
sin(@LatA)*sin(@LatB) + (cos(@LatA)*cos(@LatB)*cos(@deltaLng))
)
)* 6378137 –WGS-84 ellipsoid reference
)

END

Ruby Tutorial #2

There are very few programming fundamentals but an infinite way of using and expressing them.

I will start with two basic types – Strings and Integers.

A string is an ordered sequence of zero or more characters.
An integer is any whole natural number.

Ruby is a weakly typed language meaning that you don’t need to predetermine a variables type at declaration, rather it is dynamically set (and reset) at assignment.

message = “hello world” #string
puts message
puts message.class

message = 42 #integer/fixnum
puts message
puts message.class

The key parts of the above script are:
message: a variable
puts: prints to the console
#: a comment. Anything following the # is ignored.
.class: is a method of Object (message in this case)

Don’t worry if all these terms don’t make complete sense yet.

Some other methods to try out are:

puts message.reverse
puts message.upcase
puts message.length
puts message[0..4]

Strings can be changed and manipulated. The plus sign is concatenation eg.

message = “hello world”
message = message[0..5] + ‘mum’
puts message

Appending a ! on the end will change the contents of the variable in place.

message = “Hello Mum”
puts message
message.swapcase!
puts message

Ruby treats everything as an object. For example

puts “hi mum”.length

And you can chain methods together

puts “Hello muM”.upcase.swapcase