Tuesday, 29 July 2014

The Jaguar Reinvention

First off, a disclaimer: I know nothing about advertising and I'm British. Both of these things leave this post valueless in terms of objectivity or fact ... but sod it, I'm writing it anyway.

Jaguar's recent brand turn around makes me feel good about Britain and being British.

I'm in my late 20s. Jaguar to me has always been an "old" brand. Grandads love their Jags. Slimy politicians who smell of tax-payer funded cigars and whiskey drive Jaguars. They always seemed to represent Britain in the same way the old maths teacher at school who tried to be current represented mathematics; he didn't. Jaguar of my youth was always a poorly fitted tweed jacket with elbow pads. Yes, British at heart but not the kind of Britain I want reminding of.

Then something changed around 2008. Some new cars showed up ...

We got the XK/XKR. The XKR for me wasn't a magic bullet. It looked like a Celica mashed with an DB7 and a sad Catfish.

Image from http://en.wikipedia.org/wiki/Jaguar_XK
It wasn't pretty, but there was something about the lines of the XK that seemed  aspirational. It felt like they were searching for a new character. The XK wasn't enough to make me pin a poster on the wall but it caught my eye.

We also got the XF. Designed by Ian Callum (also of Aston Martin and the XK above), the XF and XFR looked cracking1 to me. It looked proud and assertive.

Jaguar XFR.jpg
"Jaguar XFR" by MSVG - http://www.flickr.com/photos/msvg/4593745865/. Licensed under CC BY 2.0 via Wikimedia Commons.

The design held its chin up. It had a stiff upper lip that made the XFR-S drool worthy.

By Sarah Larson from Ann Arbor, MI, USA (2014 Jaguar XFR-S  Uploaded by tm) [CC-BY-2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons
Look at it! LOOK AT IT! For somebody with more than a passing affection for 1960's muscle cars, this was the business. Jaguar still had the smell of slippers and pipe about it though. Even with a screaming V8, even with 500+hp, even with a face that would force you to the hard shoulder to call your mum if you saw it coming up behind you ... There were still Werther's Originals in the brand's glovebox next to faded driving gloves.

The new Jaguar brand was eyeing up its inheritance. The old Jag was a doddery old man but his grave had been dug. Breathing or not, he was going in and getting buried ...

By Jaguar MENA (Jaguar F-TYPE S Coupé) [CC-BY-2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons

The F-Type. Not only had Jaguar found the car to rid itself of past associations, it left a horse's head in the bed of anyone who thought Jaguar was boring. The F-type has supercharged V6 and V8 powerplants, 560hp and sublime looks that could keep you awake at night. It's perfect.

The advertising, not the cars however, was the nail in the coffin of the old, stuffy Jag brand. Even with these amazing new cars as the foundations to reinvent itself, Jaguar really followed through with their advertising as much as their cars.

Aside from the new website and other ads, I'll point out the "It's Good to be Bad" thing for the Amercian superbowl. The tone of these ads was both serious and funny. They were self-depreciating and proud to be British. They were cheesy but conveyed the tone of the new brand. Intelligent, ruthless, focused and capableand British!. Just like the adverts, the F-Type doesn't take itself too seriously with its stupidly aggressive sound and bonkers power output.

The "feeling" of the new brand emerging from the XK and XF design and nailed by the F-type was reinforced by the advertising. It let me as a consumer know the car design wasn't an accident ... it was part of a well thought out broader plan.

With the budget Tata Motors is chucking at JLR, you'd expect nothing less. As a Brit though, when you see a British ran company do something good you sort of think it might be fluke. You suspect it was a bit of awesome that somehow sneaked past the manager while he fell asleep with a cuppa and digestives.

Why should it feel surprising to see a British brand doing something so great? It shouldn't. McLaren are there. Aston Martin is there. Oh and VW Bentley too. These are well marketed brands, but they are still reserved. They are not an American hellcat doing burnouts. They draw the right attention and do it in a very British way. There are also the quiet ones, Ascari, Ariel, Morgan and Noble. They're quiet, so they're easy to overlook.

Jaguar isn't easy to overlook. Jaguar's recent brand turn around makes me feel good about Britain and being British.

Jaguar showed engineering class in its new cars and engineered a change in brand perception in me. They have created a brand that's the best of being British without the Basil Fawlty. The new brand feels intelligently aggressive. It feels reserved yet capable. If the effect of Jaguar's new branding on me is anything to go by, they know what they're doing. It might not be to everyone's taste, but I like it.

1: Cracking, /ˈkrakɪŋ/ adj. British slang for really really really good.

Friday, 25 July 2014

App Obesity & Narcissism

TL;DR - Programmers have a huge amount of control over the environments users live in these days. In search of stickiness are we making users mentally fat and breeding a world of narcissistic, self consumed addicts much like fast-food plays on our cravings for fats and sugars. Is there a better way? Do we have a responsibility? Do the competitive pressures on products make it OK? Unavoidable? Is it a problem at all?

Here's a story that may or may not be familiar to you:

I've gone out for a meal with Dave and Jane. We're chatting and having a nice time, reasserting our bond as friends. Suddenly, I notice Dave is staring in to his lap. He's looking at his phone. It isn't anything important, he's skimming Twitter, seeing how many people "liked" his last Facebook status or checkin to Foursquare. Unfortunately he has checked out of the social environment all together.

Now, I'm not saying my company is so gripping that 100% attention is required. In fact I'm certainly quite boring at times. Trying to be objective, it wasn't Dave's boredom that caused him to "checkout" of the situation. It was a small, 30 to 60 second window where he wasn't engaged in the conversation. Rather than deal with this by re-involving himself in the conversation or steering the topic to one he has a common interest in ... he just checked out. He negated using social skills and interaction for a quick-fix of stimulation. Dave isn't real, but the situation is one I have been in hundreds of times in one form or another.

... Maybe I need new friends.

Statistically, adding images to blog posts every few paragraphs keeps younger readers engaged.

Now, I'm all for a world in which we are engaged all the time or we can fit something worthwhile in to a 60 second window. Even if that was true, it's something to do while waiting for the bus not slap-bang in the middle of dinner. Dave wasn't enriching his life, at-least not in any meaningful way, he was consuming. He was swapping (what should be) enriching, healthy, first-hand experience for cheap, quick consumption of a service. Instead of gaining, he was giving away.

Now, I have no right to judge how "enriching" people find Twitter or how much better somebody's life is with 10,000 Facebook friends. Trying to objective, it seems clear to me that the mechanisms we found and that work for exponential user growth and user-value are like the sugar and fat of fast food. These apps, websites and services eat away at the things that make life better in exchange for a quick hit of the things our vulnerable brains want. We know this, it isn't a revelation. Fat people know they're getting fat too.

I know I'm a victim of this. I used to think my Facebook "friends" we're friends. They're not. The platform gives me an illusion of friendship that's just enough to help me forget I'm almost friendless. It is effective and keeps me consuming the service but it's clear I'm exchanging meaningful friendships for Facebook "friends" in the long-term.

I also used to think my StackOverflow reputation had some kind of meaning or that how many people re-tweeted something I said enriched my life in some way. It doesn't, and I'm not sure it can. Perhaps even this blog post is part of the same system? Why am I writing this here and not expressing my view in-person to somebody who challenges my opinion and whose opinion I take seriously?

It's really simple, and marketing has been doing it for years. Take advantage of properties of the human condition for commercial gain. Sell a car on the basis of social status, market cleaning products through fear, appeal to our desire for personal freedom. We all know this happens.

When designing an app, website or other consumer-facing system often the thing that's most valuable is the "consumption" of our service itself. When generating revenue through advertising it's important to grow our userbase, increase usage frequency and retain users for as long as possible. It's the simple mathematics of many services.

Fast-food has a similar urgency for volume. These meals are cheap, convenient, immediately available and tasty. Properties engineered in to this food makes us want it, but also makes it bad for us. Again, no surprise here. Diet related obesity and diabetes is an epidemic sweeping the developed world.

The properties we engineer in to many of our services have similarly negative side effects comparable to the obesity and diabetes of crappy food; Narcissism and disconnection. Reputation scores, likes, real-time notification, numbers that grow and generally gaminfication encourage us to keep consuming. They give our brains a quick dose of emotion-linked positive feedback. We love it. We're human.

If you are still reading, you are in the minority. Assuming this post is even interesting, well over 70% of people will have left to do something else by now. Something immediate. Something quickly reassuring. Something that tells them they are "liked" or interesting. Or to take a quick selfie.

Selfies. Narcissism in action.

Many services these days have the standard set of mechanism built in such as reputation or some metric of how much you are respected, liked and/or appreciated by the other users in the system. Do we even need them? If a system is actually unique and useful isn't stickiness just a property of a service being awesome? If you need the tricks of gamification and to design a system that fawns over the user ... do you actually have something of value?

Google didn't work because you had a reputation or it tapped in to our desire to be liked. Google worked because it provided a good service. It was useful. It grew because it was a good service. In fact, many of Google's services are like this. Youtube doesn't work because the world tells me how amazing my choice of videos to watch is (though many people post on Youtube just to talk in to their webcam for some likes).

Is gamification covering up a fundamental flaw in your service? Is using gamification, flattery and reinforcement for exponential growth causing long-term issues for society when magnified over hundreds of apps? Why do so many pictures have the photographers face in it online?

Does it even matter? Does it matter that fast food is unhealthy and making developed economies fatter? People have a choice right? Does it matter that websites and applications (subjectively and IMHO) might be preventing people leading rich lives?

Profit, user-growth and McBurgers-per-second are what matter. It makes the whole thing feasible. If we can find a way (in software) to think beyond "points" and flattery to feedback systems that provide real value and sustainable growth while making our lives more fulfilling ... then we should reach for that.

I think there's valid arguments on both sides. I'm not against fast food nor gamification. Fundamentally I'm not against positive feedback for user behaviour we want to encourage but I think we should be aware of the impact it might be having. Not that you should care about the baseless worries of a random guy on the Internet.

I'm bored ... I'm off to eat crappy food and post images to Imgur so that random people can give me fake points while I interact in a culture and community that seems worthwhile but isn't while making other people money.

Tuesday, 1 July 2014

A short review of some Erlang books

Erlang is one of those languages that I always meant to dive in to, but never did. At the peak of the last hype wave, I bought the books but they got put aside because ... well, life got in the way. I decided to give it a go, by the book(s). Usually I just skim books and get cracking but I thought it'd be a good idea to do it properly this time.

Erlang Programming - O'Reilly

If you're at all familiar with concurrent programming, either from a CS course in Haskell or having spanked the JVM with Scala ... skip this book. It does a really good job of drawing out material over many pages, but fails to hit key points or make good relationships to things people already know.

In the books defense, if you are new to programming or need a bit more talking through some things then it might be OK but even then I feel some things might be confusing.

Erlang and OTP in Action - Manning

This books is much better than "Erlang Programming". Not only does it keep things clear, but it doesn't baby you when it isn't required. This book covers A LOT in a quick space of time.

The emphasis on good idiomatics was a positive thing, as was the parts that basically said "I know you're thinking X but we won't cover that because it's best not to use it". Diving straight in to OTP with a relatable project was great as was the depth of coverage of the OTP "way" in general. Though I understood the code, implemented their projects and didn't have questions about the material ... I was left scratching my head when working out how to use this knowledge easily when my requirements stepped outside the examples.

Programming Erlang - Pragmatic Programmers

I have saved the best until last. This book is written by Joe Armstrong, one of the creators of Erlang. As you'd expect it covers a great deal. What sets this book apart from the others is the way everything is presented. Joe does a really good job at relating core concepts to OOP concepts we migh be more familar with.

Even better, there's tons of material that reflects Erlang's growing user base in the web backend. There's examples on embedding a webserver, using websockets, parsing JSON and other goodness. Another good thing covered early is how to properly include other Erlang code using Rebar.


In short, if you have been programming a while, especially if you're from a C background or have done lots of sorting/searching/tree-walking code then just get the Pragmatic "Programming Erlang" book. That said, I did enjoy the examples (a web cache) in Erlang and OTP in action and I don't regret buying that one either. If you already have a strong functional programming background, or are specifically looking to start a project as part of a web stack, then you can't go wrong with "Programming Erlang" to get started

My review is slightly biased as I normally take a "learn by exhaustive hacking" approach to new languages. It's often the wrong approach but it does mean my expectations might not be ideal when cracking open a "Program X" type book.

Friday, 28 March 2014

Using libvirt domains in Fabric

Fabric is really cool. After using (and getting frustrated with) Vagrant, I decided to write some fabfile routines that help do what Vagrant does, without the headaches.

First up, referencing libvirt domains without knowing the IP address of the machine:

The code is scruffy but you get the idea. Basically, we use the libvirt Python bindings to get some XML information on the domain, then find the MAC address and try to resolve that to an IP using the 'arp' command on Linux. This means you can load up Fabric environments for a libvirt domain using its name:

]$ fab vm:fedora-vm deploy

As an example. In another post i'll pop up some functions for handling NFS mounting and provisioning using libvirt (which in turn supports KVM, LXC container etc)

While the provisioning isn't really in the spirit of Fabric, having Fabric use a virtualization agnostic library such as libvirt has tons of benefits. 

Saturday, 4 January 2014

Coding my way to disaster

TL;DR -- You can't code your vision in to reality, especially when you work alone on something.

Having a new idea is exciting. You're sat on the toilet or in the shower and them BAM! That's it! Clear as day the future hits you in the face. Right, time to build out a prototype!

For me, this last bit is equivalent to setting my idea on fire. I might as well have had my epiphany and then forgot it. Weeks of coding will follow to "show people what I mean" so I can test the hypothesis and be a good Customer Development/Lean practitioner. I'm cutting the fat off the story (splash screens, pre-launch signups etc) but even so, I'm sure anyone reading this will be laughing in to their coffee. I don't blame you.

As a programmer, it's a really natural, comfortable thing to have a picture in your head and code it in to reality. Your pencil and paper is your text editor, your rubber is refactoring. For me at-least, this urge to engineer my idea in to reality is so poisonous that it kills everything. Coding is my enemy. At this stage, every keystroke is a nail in the vision's coffin.

Realising this came too late and after way to many mistakes, but it's a realisation nontheless and potentially an epiphany more valuable than any other. 

Rather than code, refactor, "refine the idea", refactor, code, "refine", code, refactor... I'm instead taking a more sensible approach to refining/developing the idea in to reality. Coding only results in a tail-spin of tunnel vision that ends in a painful death for the idea.

Instead, by sitting down with some dotgrid paper (amazing UK product), a pile of sound advice in book form and insisting I'm "not taking any of my own shit", the best progress I ever made is happening. I'm stripping the idea right back to core assumptions and actionable steps to make it a reality. The intermediate steps are not something to code, or even remotely resemble the initial idea short-term (which is very scary) but as long as the vision is kept in mind it's the right approach.

It's (highly) embarrassing to admit this realisation, but by coding for so long you think the very first step to building your system to change the world is coding. It isn't and I should be so lucky to be at the stage where programming is the right next step.

... Feels weird not coding for weeks though.

Sunday, 14 April 2013

Open For Business: Part 1

TL;DR - Open models for value creation work. Look at open source projects, Wikipedia, Kickstarter projects and many others. Lean Startups and Customer Development approaches are pretty open too and we are increasingly seeing open data and open, transparent support ... but how far can we go? Can we open up everything in a startup from idea generation to planning, discussions, financial and testing data? What would an "open source" business look like?

There has been a gear change in many communities towards open collaboration. We know about the open source community, but startups, science, engineering[2], charities and other organisations around the world are experimenting more and more with openness.

Startups have gone from from a default "stealth mode" position to increasingly seeking open feedback on ideas before even beginning to build the product. Entrepreneurs can be found on forums posting "I have 6 months free, what shall I build?" and similar[3] threads. This open approach is increasingly becoming the foundation of startups ... but how far can it be taken?

Over the past year or so I have been thinking about the following question on and off [1]: What would an "open source" business look like? I don't mean a business that makes money from open source software such as Red Hat or Citrix ... I mean a business that is itself as open as open source software.

Using the term "open source" is misleading. Businesses don't have a codebase as such. What if they did? What if you could codify your business in a way that allows anyone to examine it and contribute to its development? How could you make your entire business startup processes more like your Github account and less like an "in the shadows" affair?

Time and time again, we see that when people come together in a structured and open way, good stuff happens. Fostering openness is a good thing. When this innovation meets a requirement to generate some cash, things start to break down. Doors start to close and people plan, experiment and toil in private. There is a friction between contributor value generation and generating monetary profit for shareholders. Perhaps this is why open source projects distinct "project" and the "business" (think Fedora and Redhat Inc) entities with independent ways of working (open and closed). Does this distinction need to be made or are things changing? Can we open everything?

When I sit and imagine an open business, it is one of total transparency. Our IRC channel is public, our Trello board is public, our emails are public. If we are planning our marketing approach or what servers to use, that's public too. We would broadcast our meetings as public Hangouts. If we can make it public, we do. We don't have inboxes ... we have public mailing lists. Each of these things have been seen before, and proved successful. Could we make it the basis of our startup's DNA ... would it be beneficial?

Imagine, as a startup, having domain experts join and contribute to your financial, marketing or technical discussions and helping you out because they like the product and want to see it succeed. Contributors may provide input, not because they expect a monetary payoff ... but because they gain value in ways similar to a programmer fixing a bug in an open source software project. The difference is they are helping with startup bugs, not software bugs.

This is part one of a series of posts trying to explore some of the questions an open business throws up. For example:
  1. Is it even possible? Can a business operate in this way without destroying value or preventing value/wealth creation for shareholders?
  2. Is making it clear that contribution does not equate to ownership/direct financial benefit deter people? (I think no)
  3. Would an open business be more scientific? Based more in proof? More meritocratic?
  4. Is secrecy a requirement of sustainable competitive advantage? Can being open provide more advantage?
  5. How do you reconcile long-term value generation for shareholders with a business built from the contributions of a wide range of ad-hoc contributors? Are the two things incompatible?
  6. What value are voluntary contributors getting? Is this comparable to a software developer contributing time to an open source project?
  7. Is it enough to compare software to a business? Is a business structure analogous to software in a development sense? ... for example is there an organisational equivalent of a commit log? What would that look like? Would it be useful?
  8. What might a leadership and management structure look like in an open-business? Does it match the leadership and management approach of projects like the Linux kernel? Perl? Python? Might it look more like Valve? What comparable structures exist?
  9. What about legal obligations to keep things private? What about contractual obligations with partners or customers? How do you manage those?
Answering these questions might take a while, and may well involve a living experiment in the form of a business ... what do you think?
[1]: I am in no way qualified to even think about thinking about things like this. Im just another coder/startup founder trying to do something cool while i'm alive.
[2]: For example, Protie by Cesar Harada [http://www.kickstarter.com/projects/cesarminoru/protei-open-hardware-oil-spill-cleaning-sailing-ro]
[3]: https://news.ycombinator.com/item?id=5544738, https://news.ycombinator.com/item?id=5545545, https://news.ycombinator.com/item?id=5529119, https://news.ycombinator.com/item?id=5325445, https://news.ycombinator.com/item?id=5495420 and they are just the first few pages of Ask HN. Not that the HN crowd are typical people ...

Wednesday, 19 December 2012

Developers are users too ...

Recently I have had my head stuck in Java-land. One thing I noticed about Java is that supposedly stable, mature and well-used Java libraries and systems are letting us all down.

These libraries (Hadoop, Lucene, HBase etc) have very powerful functions, but forget that us lowly developers are users too. Errors have very little useful output (note, a backtrace isn't an error message). Quite often, some systems' processes just die without rhyme or reason.

As an example, one server I boot just exits with no log output or stderr output when you don't have the configuration file it expects present. It doesn't even say "can't find configuration file: exiting". This wouldn't be so bad, except the system's documentation is so poor it might actually be trolling.

In the Java-sphere (and im sure elsewhere), software developers seem to forget that although a system is intended for other developers ... they are users just like anyone else. Code software that helps the user understand.