Archive for the ‘ruby’ tag
You are reading a blog - Innovation in Software - no longer under active maintenance. These pages are kept here for archive purposes. If you wish to find out more about Vagueware please read our current website which will include links to the new blogs when live.
It’s the industry, stupid
I’ve been thinking more about building windmills recently.
I know quite a few musicians. Some of them are mildly successful getting regular royalty cheques and making a living. Some run nights at clubs or bars that supplements their main income, steadily building their profile. Others are failing at making money and struggling to work out what to do to fix it. The difference between them is what they hear when somebody talks about “the music business”.
The successful ones hear the word “business”, the struggling ones the word “music”.
It’s the same in the software business. We grow up as developers, loving the experience of writing code and learning how to do incredible things with nothing more than our minds and a piece of commodity hardware with a free language compiler or interpreter installed. It’s liberating, it’s creative, it’s what we decide we want to do with our lives.
Except the software business is a business. It’s there to serve client needs, not the needs of software or artistic expression. Not enough people seem to grasp that – they seem stuck in the mindset that by producing code, they’re running a software business. It’s taken me several years of running my own company to finally see this for the lie that it is.
Imagine an architect firm where all the firm produced was building designs that nobody wanted or needed. Imagine a firm that only worked on concepts that nobody had asked for, or on receiving a client brief they threw it in the bin and just did what they felt was “better”. Right now, that’s what a lot of software firms are looking like: and like that fictional architect firm, they’re going to struggle to pay the bills.
Client need, user expectation, it’s all this industry is about. It’s the main thing we should think about. We’re not in a university lab playing with data structures and algorithms any more. In the same way architecture is about understanding a brief and imagining solutions rather than drawing, so software development is about listening and understanding more than it is about writing code. Sure drawing is important to an architect, and writing code is important to a developer, but they are an output of the real job not the job itself.
I’m not arguing there isn’t a place for understanding better code, or producing beautiful projects, merely that such activities either need to take place outside of an industrial setting or should at least not conflict with the business needs. It’s OK for an architect to produce beautiful buildings that are also functional, so it’s OK for a programmer to produce beautiful code that also meets client needs: it’s just that client needs should come first on both occasions.
And if you like the idea of development as akin to architecture, or you are struggling to see the parallels, you may want to read this article written nearly two years ago. We should look to the architecture industry way more than we do right now, and we should all use Ruby way more than we do.
Kagtum & Rails Rumble
This weekend just gone, I attempted to compete in Railsrumble 2007 with an application I call ‘Kagtum’. The idea of Rails Rumble is to take 48 hours to build a Rails app from scratch in a competitive scenario. At around 7:30pm BST last night I realised I wasn’t going to finish the app and so I asked to be withdrawn, as I explained:
Maybe it was the fact I decided to try and compete on my own, and therefore didn’t have the advantage of a team. Maybe it was the fact it took half the first day just to get a working application stack up on linode. Maybe it was the Saturday afternoon spent in the company of friends rather than coding. Maybe the idea was too ambitious.
Maybe I just wasn’t good enough.
Whatever it was, I didn’t get enough of my idea implemented on the weekend of the 8th and 9th September 2007, that I wanted other people to look at it. I failed. There is no app here.
The ideas I played with in those 48 hours though, intrigue me, and they will be worked on over the coming weeks and months. The end goal is going to either be very interesting, or an exercise in futility. If you want to find out which, you can keep an eye on the blog and I’ll be making announcements there.
I will be judging, and I look forward to seeing other apps, so good luck. Until next year…
The first day did kill me – linode was under heavy load (not surprisingly, with over 100 teams trying to get their application stacks set up) and the guidance we had been given by way of a screencast was inaccurate in places. Top tip: when you’re in a hurry leave the rdoc behind and always pass “-d” to gem install.
Anyway, I still hope to judge – and I’d advise anybody with an interest in innovation to look out for the announcement that you can sign up for judging and take a look at the apps that were finished – but I thought I’d talk about Kagtum a little bit here, because the core is almost done and I’m confident I can get a working app out of the door soon. I’m also tempted to open source it.
It all started about 2 years ago when I was left distinctly underwhelmed by Wikinews. The problems with wikinews are many and pretty obvious to anybody who spends a few minutes digging.
The primary problem to my mind is that they’re using a piece of software designed to build an encyclopedia to build a news website which means all articles are given equal footing. It seems reasonable that they should be given equal footing, until you realise that unlike an encyclopedia, not all news items are equal. A world-famous opera singer dying is not equal to a drunken brawl in my local town centre, and neither are equal to the Iraqi PM losing the confidence of the Iraqi citizenship.
However, the core idea – news written by, and for, everybody is a great idea. I’ve spent the last two years playing with lots of ideas in my head and watched emerging developments in the online news and journalism scene before I came up with an answer: quite simply it comes down to targeting relevance.
If I am in Manchester UK, there are stories that are local to me I’m interested in that somebody in New York doesn’t want to see. Likewise, there are stories happening on the other side of the planet which are important to me because they have an impact on me, or because they are in an area I have an interest in. The “perfect” news website will know this, and present just the articles I need to see. Ideally, I also don’t want to be bogged down with partisan and opinionated pieces – I want impartial, simple, Economist-news-page-style articles that give me the leader and then show me what is out there being written about it.
Thus was born the concept of Kagtum – the phrase “kag tum” means “to bring news” in Sumerian, the script of which is the oldest written language currently known to mankind. Kagtum will be a wiki news site that helps target articles based on relevance to you and your life. Relevance is everything.
The idea is quite simple, but the algorithm needs some polish before I can roll it out: we create a news story perhaps based on a report in MSM, or perhaps as a first-hand eyewitness account, that points to online sources if available. We then attach to that story some “impact profiles” based on location or a tags.
For example, a story happening on my street (say, planning permission for a new development) would have a geocoded location and an impact radius of the local neighbourhood. A story happening in 10 Downing Street would also be tagged with that location but could have an impact on the whole of the UK. Suppose the latter story was a policy announcement on Iraq – we’d add Iraq as a location impact as well.
I then login and give my location as my postcode or street, which is geocoded, and the software knows that the story in my street is relevant to me, so is the story in Downing Street. It knows therefore, what is relevant to each and every user and displays the appropriate stories.
Let’s suppose however I have no interest in Iraq. We can tag stories and users can also add tags to their profile that they’re very interested in or very disinterested in. If I said I wanted all stories marked “Iraq” to be pushed down the queue then its relevance to me would be lowered – it might still appear, just not as prominently.
In theory then, when I log in to kagtum, I would see stories about technology, politics and cricket, particularly with stories about my local neighbourhood (stories about technology in my neighbourhood would be even more prominent), whilst my friend who doesn’t care about anything but beer and football will see something perfectly tailored for his interests.
It may also be the case that there are multiple profiles for each user (home vs. work) and that a user can add multiple locations – where they live, where they work, where they grew up, where their parents live – and sees a mixture of stories about places they care about.
The biggest problem I had this weekend was developing the specifics of knowing which stories to show to each user. The problem isn’t hard algorithmically, but providing a technique that doesn’t harm performance and can scale to more than a few hundred users online at a time is proving a little tricky using standard ActiveRecord associations and using the methods baked into GeoKit by default.
There is also an issue of what we mean by “radius”. Saying “this story is important to everybody within 5 miles” is simple enough, but what if I say “to everybody within Greater Manchester”? I somehow need to know if a given longitude and latitude is within that district or not. The Radii Problem (as I came to call it whilst muttering to myself) is important and it’s difficult. I discovered it as I added a story in Washington that was important for the whole of the US – if I added a simple radius of 3,500 miles (to take in California) it of course also covered a huge chunk of Canada, Middle America, the Caribbean, the whole of the North Atlantic (including Ireland!) and most of the North Pole. For a story about domestic US politics, this is obviously needlessly “grabby”.
I have ideas on how to solve this problem, but they’re going to take a few weeks of playing with datasets from the UN and other agencies to be able to get them working smoothly.
There are other aspects I have planned for the site around developing narratives and helping individuals become kagtum journalists, but I’ll keep discussion of those for after the roll-out of both kagtum and the new vagueware.com.
I’ve turned comments on for this article, so if you have thoughts, ideas or suggestions, please leave them.
Template Maker
Adrian Holovaty announced a while back templatemaker which sounds more complicated than it is.
Take a pile of web pages all built using the same template – say, restaurant listings, or a timetable – and throw it at the code. It produces a copy of the ‘template’ with the ‘data holes’ marked up. You then look at a new page, and it gives you the raw data. No more screen scraping, it just learns what it needs to find the data that changes each time. Nice.
A really useful aspect is that whilst he’s implemented it with Python bindings, the core is written in C and uses the Python C bindings. That means with a bit of hackery, porting it to Ruby should be quite simple. A project for the weekend, perhaps?
I’m shouting this up for two reasons: it’s a piece of code I’m sure all of us have thought about implementing, but never got around to producing because it just ‘felt’ too difficult, so it’s definitely very innovative from that perspective; secondly, it’s using the C bindings in an intelligent way to get performance where it counts – something I’m going to need to do more of over the next few months in other languages.
I suspect the future isn’t going to be about using the right language for a project, but the right language for the right part of the job. You could implement something in Erlang, which can interface with Ruby, which in turn can interface with C. There are points of complexity there that a competent software engineer would shudder over, I’m starting to feel that being competent in one language or framework is definitely not going to be enough for the next generation of software: we need the flexibility and power of scripting languages, and the raw power of compiled C/C++.
HacketyHack – Getting Kids Involved
The people who have to listen to my diatribes about what is wrong with programming in person know there is one thing that bothers me more than anything: we’re not getting kids interested in programming, and we’re going to pay for it in the future.
When I think back to how I got into writing software, I realise I just don’t see it the way teenagers do. They see it as a career choice and will actively avoid writing a single line of software until they get to University. For me, code was something I delved into from the age of 11 and never really returned. I was writing C when I was 14, and I think it actually changed the way I thought about software permanently – it meant that something changed inside my brain as it was still growing. I don’t think that’s a bad thing.
That said, I understand the barrier of entry is now way too high. Most kids do not want to get into an IDE. When they think “it might be nice to learn to program” and go to the bookstore, they are confronted with a wall of very expensive, very dull looking books. The first book I ever read on programming was on BBC Basic and was illustrated with pictures of robots in factories pretending to be FOR loops. That isn’t really comparable to what kids have access to today.
It’s wonderful then that _why has put some effort into fixing this little conundrum and released the first build of HacketyHack which calls itself “the Coder’s Starter Kit”. He’s only released for Windows so far, so I’ve not been able to try it out (still less get involved in helping him close tickets – I’d throw time at this without thinking about it for a second), but his Manifesto is something I wish I had written myself. He’s on the same page I’ve been whining on about for the last year.
I hope it the best of success, and the moment _why releases it for other platforms that I actually have access to, I’ll make sure I get stuck in on helping submit patches and spreading the word further.
Hacking Business Processes
In the last few weeks, I’ve been evaluating source code I’ve written over the last year under closed source commercial agreements. I did this partly to try and look at what I did wrong and learn from those mistakes at a business level and technical level, but also to find out if there are common themes to anything I was working on that I could extract to make my life easier in future.
What I found shouldn’t surprise most people. Everything I did was about building forms, allowing data from those forms to be collected, and then looked at in some way. Every project looked like this:
- Define a form
- Build form
- Users input data into form
- Save data
- Look at data
Sometimes I would define/build the form and deliver the app, but at least two apps included the ability for users to build forms them (basically, survey software).
In fact, all web sites with UGC follow this model at some level – a blog engine is a form for a post, followed by the display of entered data in a particular way or set of ways. YouTube is a set of forms to handle file uploads followed by some data processing, and then displaying that content.
That’s quite interesting, because we have so far thought about web applications being custom little pieces of code in almost every case. Rails and similar frameworks enforce this model however, and make it easier by doing a lot of the heavy lifting involved in describing those processes. However, ultimately all we’re doing is putting lipstick onto relational databases. If that’s all we’re doing, surely there is a quicker way of doing it?
I was thinking that each of those stages in each application is already defined somehow as a real world business process we want to map into software. Why can’t we find a way of being able to quickly define a business process in code, and then just generate an application based on that definition?
It seems I’m a few years behind in my thinking. Business Process Management (BPM) is a mature area of development with a gazillion standards out there and it would seem XPDL is the XML-love of choice for this crowd. Digging further, I found something even cooler for the Rubyists amongst you: OpenWFEru nicknamed ‘Rufus’ amongst developers seems to have most of the heavy lifting done for you. The example looks promising.
This is interesting for me, because I have to build a couple of pieces of software soon which really are understanding workflows within teams, and I’d rather spend more time reading 19th-century books on political philosophy (hey, everybody’s got to have a hobby).
As a result I’m trying to work out how to hammer this into those projects. If I can find a way of being able to take the “I’ll look after the forms for you” aspect of Rails with the ease of defining workflows found in OpenWFEru and coupling them could you define a bunch of schemas and a workflow and then generate a better scaffolded Rails application? Would the controllers be able to mature over CRUD and do something more useful? Or could you build a CMS in Rails that uses user-generated workflows to allow for quickly hacked-together custom applications? It’s an intriguing bunch of thoughts…
A Conundrum on Technology
On the 1st March (next Thursday, as I write this), I’m planning to do a mini re-launch of Vagueware.com and with a new website comes a new business model.
I will be phasing things in over the next 6-8 weeks. First, the “open innovation” phase, where ideas are thrown around, submitted and developed by anybody with an interest. Then the time to turn some of those ideas into real open source code, so anybody and everybody can develop the ideas further. And of course, run useful software. Finally a services model to make all your Rails deployment nightmares go away, and to bring some cashflow around those open source tools – support, maintenance, bespoke customisation will feature as well as hosted SaaS solutions.
However, I have a conundrum.
I’m busy finishing up work elsewhere right now. I have some todo items on older projects to close, and I am also involved in a second company completely unrelated to Vagueware that desperately needs some of my coding love right now. Time between now and next Thursday is tight. And the code base for the next version of Vagueware.com? Well, to be honest, barely started.
Right now, I need the splash page, and the ability for users to create accounts, edit wiki pages, for me to be able to structure some CMS around it all, add some forums, etc. It’s not a huge job, but to code it up from scratch even with the existing plugins out there might take longer than a week given other pulls on my time. It’s obvious that given the focus on it being a Ruby/Rails led set of projects, the time should be taken to develop the site itself in Rails.
There is an alternative though. Use something else other than Rails for now. Drupal does nearly everything I need and I could configure it all up this weekend ready to go. But it’s PHP. And that feels like a lie to me, and a lie to the other people I want to involve in this.
I could go meta and suggest that the first project is a tool to replace the site in Rails that would then allow Vagueware to become self-hosting. At least then the ideas would get started, and providing I was able to export everything from the inter-rim site when the job was done, nothing would be lost. It would allow those people who want to show up on day one to be involved in developing a community tool useful to them, and even have an input into how projects should be handled in the future. It could be an advantage.
It still feels like a major hack though. Anybody have any other ideas? I could delay the launch by another couple of weeks, but I’m keen to get started ASAP.
The Geeks are Breeding…
The Office of National Statistics, alas, no longer produce the exact number of people who were injured by a garden gnome. They do, however, report on baby naming trends. This year, it would seem ‘Olivia’ is the most popular girl’s name and ‘Jack’ the most popular name for boy. Hidden in the stats however, is an interesting fact:
High climber Ruby (who has risen 69 places since 2001) is fourth.
Now what on earth could make Ruby the fourth most popular girl’s name in the UK? What could possibly have been gaining ground since 2001 to cause such a meteoric rise? I am guessing that there is going to be a rise in females entering the programming industry in the UK in about 20 years or so… :-)
And before you all get confused or worried about how ridiculous some of the chosen names are – I think naming your child ‘Cruz’ should warrant a call from Social Services – just be grateful we haven’t collectively sold our souls completely yet and started choosing brand names for our kids.
In case this is my last post before the weekend, Happy Christmas to you all.
Lamest. Patch. Ever.
A developer I’m working with points me to an announcement of a serious DoS vulnerability in Ruby’s CGI library that would allow Rails apps to get locked up with a trivial attack if they process MIME parts at all.
Crikey.
So I follow the paper-trail to the original source and get here: Mongrel Temporary Fix For cgi.rb 99% CPU DoS Attack
Wow. That looks serious. It can kill the server! 99% lock-up! Urgent patch!
I don’t dispute the seriousness of the effect of the vulnerability, but having looked at the patch file, I’m confused this wasn’t picked up in testing, and it took me a whole five minutes to stop laughing after thinking about people running around complaining that their Windows gem couldn’t be updated:
--- /opt/local/lib/ruby/1.8/cgi.rb 2005-10-06 19:01:22.000000000 -0600
+++ cgi.rb 2006-09-22 16:38:08.000000000 -0600
@@ -1017,7 +1017,7 @@
else
stdinput.read(content_length)
end
- if c.nil?
+ if c.nil? || c.empty?
raise EOFError, "bad content body"
end
buf.concat(c)
No, I’m not making that up. It really is just a one line change from ‘if c.nil?’ to ‘if c.nil? || c.empty?’. Reminds of something I read earlier about the Rails method ‘blank?’ which basically tests if an object is nil or empty, and nothing else. Looks like it should be in the base of Ruby itself. :-)
And before you test whether I’m patched – yes, I am.
Design as Code & Why Ruby Rocks
For a long time, I’ve had a problem explaining exactly why software engineering doesn’t work like other kinds of engineering. One of the issues I’ve had is trying to find the wording needed to explain that programmers don’t really build anything, and that to manage building software like building a bridge makes no sense. I couldn’t quite put my finger on the right words though.
Until now.
Jack W. Reeve’s essay on ‘What is Software Design?’ is the best work I’ve seen to date on the subject. He argues – convincingly – that programmers are designers, architects, draftsmen at a drawing board. We don’t build anything: compilers, linkers, interpreters do that for us. He points out how flawed an idea it is to produce a design document that can never truly represent the details of how the software will work, because it is an abstraction of an abstraction. The only accurate design is the software source code itself.
What’s more, it makes sense that in the same way that an architect can build a model, which can be turned into a few more detailed drawings, which can then be turned into engineering drawings, it makes sense to start all software development with a set of mock-ups which are then turned into a UI (say, static HTML) which then become plugged together with code. It’s like building a skyscraper by defining what the bits ‘users’ will see will look like, then working out how the nuts and bolts will hold it together: exactly what an architect does.
His essay dates from a time when the best language available to programmers to express their design was C++, and he argues that C++ helps his model of ‘design as code’ along nicely. It was the best language for the job because as an object-orientated language, it allowed an expression that most closely resembled how we abstractly thought about objects and data in the real World. Since then, of course, things have moved along a little bit.
I would argue today that Ruby is the best design language we have available to us. I claim this, because I actually find it easier and quicker to express an abstract design – which in turn can then execute – through Ruby than I do through a diagram or notation or pseudo-code.
At this point you might be thinking “yeah, right, whatever!”, but this isn’t some idle boast, I eat my own dog food.
The other day I needed to clarify a design point with another programmer via e-mail. I needed to express a HABTM relationship being used as a way of listing ‘exceptions’ to a ‘everybody/nobody’ flag stored in a model. The details aren’t important, but I considered for a moment the very best way of communicating this. I considered drawing a UML diagram. I thought about a quick sketch with some boxes, I considered a little pseudo-code. I then remembered that the programmer I was discussing this with could code Ruby, and maybe if I just developed a few stubs with some comments he’d get the idea.
Five minutes later, I had not just produced stub code. I had some migrations that would build the tables needed in Rails, and I had a few methods I was proposing adding to a model. It was untested, and some DateTime handling code would need a little fleshing out, but I’d discovered it was just quicker to write the code than it would be to write the comments explaining what the code would do. I actually ended up writing a software design in my mail client, that I could copy and paste over into a code editor and with a little bit of expansion and testing, get running.
In other words, the perfect design notation seems to have been discovered – it’s not UML that generates stub C++ in a CASE tool, or some formal design notation. It’s Ruby that just, well, runs. It is perfect because it is the perfect balance of programming language and design notation.
So not only was Reeves right in saying that source code is the best detailed design possible, that we are designers at heart, that programming languages that work at an abstract level are a step in the right direction, that formal design tools are useless and pointless, but he was even right that eventually we’d produce a programming language that was just a compilable design notation.
We now have that tool and its name is Ruby.
UPDATE: Two separate comments – each without seeing the other, as I didn’t approve them until this morning – suggest that LISP is a better design tool than Ruby.
It is worth pointing out that Ruby is kind of a grandchild of Lisp because it inherits so much from Scheme, itself a dialect of Lisp.
So is Ruby just another Lisp dialect? No. Whilst borrowing aspects of Lisp, it is more closely related to Smalltalk in terms of its object-orientation. It also borrows from Python, Dylan and CLU. It uses the best of all of them – Lisp included – and makes something better.
Also, there is another important part of Ruby that Lisp (and Smalltalk to be fair) do not yet have: an easy way to rapidly produce production-level, deployable, useful software. I can build a web application in Ruby – thanks to Rails, or Camping – in relatively little time compared to 10 years ago in PHP or Perl. I suspect, although haven’t researched it fully, that to do the same in Lisp might take me a little longer.
Ruby has many of the great features of Lisp baked in, but many of its own bolted in to boot. What’s more, the design ethos of Ruby is its strongest point: Ruby is designed to make programming pleasurable. When you enjoy writing code, you write more of it in less time, and with fewer bugs. Lisp might be fun for those who enjoy it, but I agree to some extent with Larry Wall on this one: it “has the visual appeal of oatmeal with fingernail clippings mixed in”.
If you like Lisp, I suspect you will love Ruby, and you’ll find yourself more productive in it. Either way, I’ll concede that for some people in love with it, Lisp is as useful to them as a design language as Ruby is to me. We’re both lucky, we both know we are, and we’re both a step ahead of the C# and Java guys.
I still say Ruby rocks more though. :-P
UPDATE 2: Changed link to the PDF to point to one held at the official home and authorised version of these PDFs. Thanks to Daniel Read for pointing out my error in directing you all to a pirate copy.
Sunday Headlines – 22nd October 2006
Well, I missed a few weeks of Sunday headlines, but I figured they’re worth the effort. Here are some links and things I think are worth looking at, but don’t deserve an article all to themselves:
PHP eats Ruby on Rails for Breakfast – this article is getting some digg love right now, thanks to its contentious title. Unfortunately the stats it quotes are completely ridiculous.
The main claim is that 5 times more lines of code are being contributed in open source projects in PHP than in Ruby. The author misses the point that this might be because it takes 5 times more LOC to do the same thing in PHP as it does in Ruby. My personal experience is that the factor is more like 10-15 times more lines than in Ruby. Ruby style emphasises elegant one-liners.
What’s more “Web 2.0 is being built in PHP” is a moronic statement to make given that most “Web 2.0” applications are close-sourced and therefore not included in the stats. Thankfully they gain some sanity towards the end by pointing out the growth in open source Ruby projects is much higher than those in PHP project, but they’re not prepared to do the basic maths to realise that in fact, PHP is dying relative to Ruby.
Firefox 2.0 is due to go for release to the general public on Tuesday, and includes some interesting updates. Improved tabs, anti-phishing bits and bobs, integrated spell-checking for online forms and better system crash restoration – important if you’re running Vista, I would imagine.
YouTube demonstrate why US Data Protection laws suck! – It would appear that if you’re a major Hollywood studio wanting to know a YouTube user’s name and personal details if they’ve been posting up videos with copyright material, you merely have to ask. I think this will be the start of a backlash against YouTube if confirmed, and may hopefully encourage somebody, somewhere in the US to campaign for EU-strength Data Protection laws. We’re not going to see any real improvement in online web applications from the US until the consumers are confident in the laws protecting their identities.
Washington Post calls Click-fraud – I’ve been confused by Google’s business model for some time, as it is simply so easy to defraud. I don’t carry ads on vagueware.com specifically because I’m worried about ever being implicated in any way in a click-fraud scam, even if I would never instigate one myself. Once mainstream advertisers realise how popular click-fraud is, I think you can expect a major adjustment in Google’s stock price. So what comes next? CPC is a great model for advertisers, but only if there is no fraud. I’m thinking CPA might be the next wave.
ZDnet ask ‘What do Apple’s earnings say about Open Source?’ – An interesting question, but flawed. If Apple had stuck with OS 9, they would be dead in the water right now. They needed a whole new OS, they needed it quickly, and they needed it cheaply. Their solution? They lifted FreeBSD, plus the Mach microkernel and put their own GUI and APIs on top of it, built some tools quickly, and they had a stable, high-performance OS ready to roll in just a couple of years. Open Source created the new Apple, and Apple know it – their head of release engineering is to my knowledge, still Jordan Hubbard. Jordan was the guy who started the FreeBSD project. Go figure.
Diebold source code ‘stolen’ – After my little rant yesterday, this is timely. Diebold are not keen on coders people like me seeing the source code to their machines because they’re worried we’ll find the smoking gun all the evidence points to: their machines are perfectly designed for the engineering of a massive election fraud. If we ever do go for e-Voting in the UK, I think it’s critical we only allow open source systems into the game.
Rock & Roll is about Freedom – Hugh riffs a little about what it might mean to deal with the fact that you are no longer a ‘Film Director’ because you’re not actually making films any more. I see where he’s coming from, but I disagree with his conclusion. I’ll always be ‘a Software Engineer’ even if I never use Z in my life ever again – true freedom is being able to define your own job title, irrespective of what society thinks of you.
If you’re a homeless guy, should you call yourself a homeless guy begging for change, or an entrepreneur at early-stage start-up? The difference it can make to you is huge. It defines your attitude to yourself, your life, people around you. It can give you drive, make you optimistic. Don’t ever listen to what society calls you – listen to what you think you are, and act on it. It’s the only way you’ll ever make your ideas come true. If Terence Davies wants to call himself a ‘Film Director’, I’d rather he did so than accept the label of ‘unemployed’.
Warning over UK race riot danger – Off-topic for here, I know, but whilst we’re talking about freedom, I’d just like to ask something.
Given that the UK is the country that has a history of defining personal expression through dress – mods, rockers, punks, goths, techno-kids, grungers, whatever – why is it so incapable of accepting a small piece of cloth that is purely a symbol of personal expression? Why is it any more threatening than a mohican, skinhead, a face full of piercings or an extraordinarily large amount of eye-shadow? People’s fears are so much stronger than their dreams in the UK.
That’s it for now. Next week’s articles should include one review of a Seth Godin book, a bunch of articles on development methods, and an analysis of snowflaking business ideas – providing I get time!

