Author Archives: George Wright

Legendary Bystander template

legendary bystander

 

Download this png.

Grab photos of the people playing in your game session.

 

Put in the point value in the orange dot.

Size and put them into the background layer.

Print to 63x88mm.

Cut out and use one of the blank filler cards as the backing and slip it into a sleeve the same colour as your villain cards.

Introducing MosaicaFantastica

MosaicaFantastica - Gorilla at Toronga Zoo, Sydney

Gorilla at Toronga Zoo, Sydney

MosaicaFantastica is a Java program that attempts to recreate an image using recursive colour sampling. The effect is to create a new image which approximates the source/target image in a style reminiscent of impressionism or pointillism.

MosicaFantastica recursively sub-divides the target and using a basic colour distance formula decides whether it can get away with using a basic shape (rectangle or oval) to fill the available space. If the colour difference is too great then it sub-divides and tests again.

Ultimately you get an image which is made up of basic shapes arranged using random parameters such as rotation and size variation to make interesting and unique interpretations.

This is a work in progress.

Installing Rails RVM on Ubuntu 11.10

Using as a basis a previous post I have updated it to run on Ubuntu 11.10.

sudo apt-get install curl git-core build-essential bison openssl libreadline5 zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libmysqlclient-dev mysql-client mysql-server autoconf

curl -L http://rvm.beginrescueend.com/releases/rvm-install-head > rvm-install-head
bash rvm-install-head


echo ‘[[ -s “$HOME/.rvm/scripts/rvm” ]] && . “$HOME/.rvm/scripts/rvm” # Load RVM function’ >> ~/.bash_profile

source ~/.bash_profile

rvm install 1.9.2
rvm use 1.9.2 –default
rvm 1.9.2 –passenger
rvm 1.9.2
gem install rails mysql passenger
apt-get install libcurl4-openssl-dev
rvmsudo passenger-install-nginx-module



gem install rails


rm rvm-install-head

Ruby utility script – csv2json

A script that I wrote and am using more and more.

Arguments are “filename.ext”

#!/usr/bin/ruby
require ‘json’

source = ARGV[0]
if source.nil?
puts “Missing filename argument”
puts “USAGE: #{$0} filename.ext”
exit(1)
end

unless source && FileTest.exists?(source)
puts “#{source} not found!”
exit(1)
end

puts “Processing ‘#{source}'”

SEPARATOR_COMMA = /,/
SEPERATOR_PIPE = /|/
SEPERATOR_TAB = /\t/

file = File.new(source,’r’)
ext = File.extname(source).to_s.downcase

outname = source.sub(ext,’.json’)
out = File.new(outname,’w’)

sep = case ext
when ‘.csv’
SEPARATOR_COMMA
when ‘.psv’
SEPARATOR_PIPE
when ‘.tab’
SEPARATOR_TAB
else
# assume comma since it is *CSV*2json
SEPARATOR_COMMA
end
puts “Extension: #{ext} using ‘#{sep.source}'”

lines = file.read.split(/\n\r?/)
file.close

header = lines[0].split(sep)
data = lines.drop(1).map {|item| item.split(sep)}

outdata = []

data.each do |item|
h = Hash.new()
for i in (0..(header.size – 1))
h[header[i]] = item[i]
end
outdata << h end out.write outdata.to_json out.close puts "File written to " + out.path

Ages of the Internet

As the web matures, the commercialisation pattern is changing – new monetisation opportunities arise while the incumbent “cash cows” get commoditised and the margin is squeezed. Each of the “Ages” below has its heroes that created the technology and the business model to succeed and then dominate. Each age was made possible by the standardisation and commoditisation of the prior ages.

The current age is Clouds, we are at the very beginning of this age and it is likely to dominate technical thinking for the next 2 to 4 years. Clouds will drive the cost of scaling and the barrier to entry of minor media players down. The battle for media in the age of clouds is differentiation and agility in maximising content reuse.

The “Product” The “Currency” Key Players
Age of Pipes • Hardware
• Protocols
Bandwidth • Sun
• IBM
• CISCO
Age of Portals • Publishing Platforms
• Online Classifieds
• Personal Homepages
Content • AOL
• Big Pond
• Alta Vista
• Yahoo
• Geocities
Age of Search • Search Engines
• Recommendation
• Crowdsourcing
Traffic/
Audience
• Google
• Yahoo
• Bing
• Wiki
Age of Clouds • Software as Service
• Distributed Systems
• Always On/Ubiquitous Computing
Scale • Amazon
• Google
• Microsoft
Age of Semantic • Context
• Entities
• Sentiment
• Relationship
• Intuition/Personal User Agents
Knowledge/
Engagement/
Relevance
• Big Media?
• Facebook
• Google
Age of Trust • Security
• Privacy
• Identity
• Authority
Reputation • Big Media?
• Standards Bodies
• Cultural Institutions
• Knowledge Markets

Why should Big Media bother?
Because each age moves from engineering towards social, the technical challenges become less about “is it possible?” and more “how can it be used?”. Big media companies are in a unique position because they have made the investment in hardware, platforms, content and traffic. Big media has an established audience and, maybe more importantly, audiences untapped (niche interest, hyper local, international, etc.). The Age of Clouds will drive hosting costs down, increase computing power for small competitors to differentiate products through “good enough” brute force methods (eg. Content scraping, data mining, machine learning and business intelligence techniques). In the age of semantic web, the incumbents will be those that understand the content and the audience best – this is why Google, Apple and Microsoft are falling over themselves to introduce social aspects because relationships, entities and sentiment are engagement glue. Once the volume of content is too big, and the user can access it on any device, any time, any where the products that will succeed in this age are the ones that turn mass data into information and knowledge and relevance, which is actually the key competency of journalism.

When a consumer has access to the world media and as domestic and international territories blur, breaking news won’t be so much as speed to publish, but rather, speed to discover and then socialise.

The Age of Semantic changes the questions from: “What happened?” to:
• What does it mean?
• What is hidden?
• Why did it happen?
• Will it happen again?

System design and architecture

Some thoughts I had regarding effort. Too often I think that people spend more time on getting the implementation set in stone, rather than making sure that the higher order issues are well defined.
This is the order of emphasis on permanence and therefore effort in getting it right.
Design Pattern – correctly identifying the “shape”. The design pattern should only change when the function of the system changes.
Architecture/Design – correctly selecting the parts to fit the “shape”. Architectures should only change when advantage can be gained (or the design pattern changes)
Implementation – correctly building the parts. Should be reviewed and changed as required.

Installing Rails 3 on Ubuntu 11.04

One of the more challenging problems with the opensource world (and joys in my opinion) is the rate of change of the software and systems. Unfortunately it means that every year I seem to be having to learn new ways of installing the latest tools. Every 6 months when I install the latest Ubuntu and Rails, something needs hand holding. Here is my attempt to get Rails running on Ubuntu 11.04.

Firstly, credit goes to yasi8h from theKindOfMe blog – see the original post here http://thekindofme.wordpress.com/2010/10/24/rails-3-on-ubuntu-10-10-with-rvm-passenger-and-nginx/

Below is a variation of the process outlined in the blog post, however I have changed things to make it work for a fresh Ubuntu 11.04 install.

Run the following in sudo/root

apt-get install curl git-core build-essential bison openssl libreadline5 libreadline5-dev zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libmysqlclient-dev mysql-client mysql-server autoconf

curl -L http://rvm.beginrescueend.com/releases/rvm-install-head > rvm-install-head
bash rvm-install-head


Read and follow the instructions given as shell output after  rvm-install-head to edit your .bashrc. You will need to remove the return statement and wrap the whole code block in if’s and append the command to load the rvm into the shell environment. 


OR


http://beginrescueend.com/rvm/install/ suggests running:
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

rvm install 1.9.2
rvm use 1.9.2 –default
rvm 1.9.2 –passenger
rvm 1.9.2
gem install passenger
apt-get install libcurl4-openssl-dev
rvmsudo passenger-install-nginx-module



gem install rails


rm rvm-install-head

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?