Archive for the ‘Ideas’ Category

Barcode Wikipedia

Wednesday, February 25th, 2009

I finally got around to editing and uploading the video of our team’s final presentation at Social Innovation Camp 2007.  Over the course of the weekend, a team of half a dozen techies put together a piece of mobile phone software that reads a barcode and loads up a wiki page.

Of course, as Richard Pope emphasises in the video, the beauty of this technology is that it’s really flexible – you’re just using the barcode as an entry point to related information.  As it’s user-editable, people can put anything there.

Still, I thought it’d be interesting to have a vague idea of what people might use such a device for, i.e. what unsatisfied informational needs they are aware of during their shopping process.  So I gathered a team (including ethnographer Charles Armstrong) to go to the local supermarket and pounce some unsuspecting shoppers!

Here’s the presentation showing some of my research results, followed by a live demo of the software:

Thanks to The People Speak for shooting the original footage and patiently transferring it all to my laptop for me.  Here’s their video of me attacking one of the techies and trying to pin down some use cases for this technology, and then going on to explore the potential for promoting ethical information.  Here’s my photographic exploration of ideas surrounding attaching objects to information.  The source code for this project is still available for anyone to build on.

When Global Goes Local: hitch-hiking for the networked generation

Friday, August 10th, 2007

Nowadays, it’s becoming quite rare to see a hitch-hiker. I’m sure there are many reasons for the death of hitch-hiking, but I suggest that these are the top three:

  • trust (for both parties): it seems that we are becoming increasingly distrustful of our fellow citizens, and especially of strange-looking people who stand by the roadside. Sharing a car requires a fair amount of trust in your passengers.
  • lack of incentive for the driver: a good friend of mine (who is quite active in Christian groups) shocked me somewhat by admitting that when he sees a hitch-hiker, he thinks “get a job and get your own car, you freeloader”. Whilst not everyone is so selfish, many people won’t give up their comfortable solitude without a reason.
  • more comfortable alternatives for the passenger: many people in our developed societies are rich in enough to run a car, or at least afford the occasional taxi. Why stand in the rain waiting for some kind soul to take pity on you?

For a regular commute, car-sharing with colleagues doesn’t pose these problems. But for those who work flexi-time, and for all other journeys not covered by good public transport, driving your own car is often the only practical option. The effect is obvious, with UK traffic estimated to grow by 26% on 2000 levels. By that point, congestion is predicted to have grown 65% overall (from 1996) and motorway congestion by a whopping 268%. (source)

But we have the technology to solve these problems and make ad-hoc carsharing a viable alternative to driving solo – especially if you factor in a bit of ecological guilt and fuel price increases.

  • trust: as eBay has shown, many people are prepared to make risky financial transactions with complete strangers, so long as they can see the seller’s past history. A similarly simple reputation system could work here, too.
  • driver’s incentive: many lone drivers might take trustworthy passengers just for company or to alleviate their eco-guilt, but others could be tempted by a bit of petrol-money. Or if they’re too proud for that, perhaps they could request a donation to their favourite charity instead.
  • passenger comfort:no need to wait in the rain, you can be notified by SMS when your ride is approaching.

By integrating transport “offers” from mini-cabs, shared taxis and public transport, a joined-up transport service emerges that could really compete with the car on both price and convenience.

When Global Goes Local: the death of the super-mall

Wednesday, August 8th, 2007

It’s a symbol of America, and it’s a concept that’s spreading across the world – the out of town shopping centre. Built on cheap land on the edge of a city, these retail metropolises offer almost every product under the sun at low, low prices. Ample free parking is provided and there’s enough retail therapy within its confines to keep even the most addicted spendaholic happy.

The disadvantage, of course, is that you really have to drive there. Perhaps it’s technically possible to get there on public transport somehow, but it’s hardly convenient. And then when you got there, you could only buy as much as you can carry, making the journey hardly worth the effort. Most people will drive and then fill up with enough food and supplies to last them several weeks. Of course, if your food has to last for such a long time, frozen or tinned is really the only option. As well as being less tasty and lacking in micronutrients compared to fresh alternatives, a significant amount of energy is invested in keeping food frozen from farm to plate.

The biggest advantage of traveling to a big store or retail park is that you can be fairly confident that they’ll have what you want. In a couple of hours, you’ll have filled your freezer and can merrily tick “shopping” off your to-do list. But present-day technology has the power to change that process, giving you fresher food and reducing your carbon footprint.

Imagine that instead of anticipating your needs weeks in advance, you were instead able to browse through a selection of recipes selected by a combination of your tastes, your culinary experience, the contents of your fridge and what’s currently available in your local shops. On your way home, you stop by a couple of smaller stores (guided by your mobile phone), where you pick up your pre-bagged shopping. By ordering in advance, you help the store manage their stock more efficiently. Easy access to real-time information has allowed you to change the way you shop – in a way that’s better for you and for the environment.

In my next post, I’ll talk about how more efficient and flexible logistics can reduce the cost of deliveries of your more exotic culinary requirements and other items, and how better information can make shared transport an attractive choice.

When Global Goes Local: how ubiquitous connectivity and peak oil will challenge economies of scale

Monday, August 6th, 2007

We live in a society powered by fossil fuel. Almost everything we do consumes large amounts of non-renewable energy, because our cities, our industries and our lives are designed to do so. That’s bad news, because energy is becoming more scarce and therefore more expensive. At the same time, concerns about climate change are likely to cause the introduction of carbon taxes, pushing energy costs even higher.

But there’s good news, too: we can solve it. Not just through alternative energy sources and more efficient devices – they will play a big role, but they aren’t the whole solution. We need to change how we live, and go back to what some call the “urban village” – urban lifestyles that don’t involve travelling large distances. At the same time, we can even use this social upheaval as an opportunity to solve some of the problems that plague our modern cities:

  • traffic noise
  • social isolation
  • ineffective transportation
  • declining food quality
  • throw-away culture

Over the next few days, I’ll be publishing a series of short posts exploring how communications technologies can change the way we travel, shop, work and socialise. I’ll show that in this process, we’ll not only save our planet, but also make our cities nicer and more exciting places to live.

Positive Purchasing Power

Thursday, July 12th, 2007

Sometimes I feel like this guy – a little frustrated. Whilst the non-believers he’s attacking are basically a lunatic fringe, I think there’s a large majority who agree that climate change is a problem but are too concerned with their own lives to find out how they can help solve it. They’re not active non-believers – but people who just don’t believe they need to do anything about it. It will be solved by the technologists, the politicians and the corporations.

To some extent, they might be right – but at the end of the day, it’s every one of us who makes decisions that dictate what these groups do. Even if it might not feel like it sometimes, they’re all servants of the people and their salary comes out of your pocket every time you purchase something or pay your taxes. Happily, green is fast becoming the new black in some parts of the world and politicians and businesses alike have started battling with each other over their eco-credentials.

The trouble is that most people trust neither what politicians nor multinational corporations tell us, and don’t have the time to figure out whether they are making empty promises or are really making a difference. Occasionally, environmental organisations will expose the worst offenders or produce a ranking for a particular product type. But who goes to the bother of seeking out these reports? I know I don’t.

Perhaps the solution lies in giving consumers a trivially-easy way to check the “green-ness” of the products they are considering purchasing and allow them to make an informed, environmentally-aware purchasing decision. These ratings could be produced by a community process, amongst those concerned enough to spend the time to research and compare several competing manufacturers. The resulting eco-friendliness score could even be embedded into online shops, so that every customer can shop with a clear conscience.

The internet gives us such huge power to easily cross-reference information that few of us now make any significant purchase without checking a few product reviews first. Isn’t it time that we started using that same power to encourage companies to stop bullshitting us and really “go green”?

Agile Business: providing an economic incentive for user-driven software development

Monday, March 5th, 2007

It’s now generally accepted in the software community that the best way to develop software is iteratively, for the simple reason that it’s really hard to design anything perfectly, especially if it’s for somebody else.  The best we can hope for is to create something small that we think the customer wants, show it to them and then change it until it’s what they actually wanted.  It’s a bit like finding your way by heading in roughly the right direction and then correcting your path whenever you find a landmark – rather than looking at the compass, closing your eyes and walking blindly until, inevitably, you fall off a cliff.

So I find it surprising that nobody seems to be pursuing a business model that closely fits this model.  Instead, most people seem to be sticking with some variation of the old-world “make it, box it, sell it” approach, or perhaps a subscription model where all that’s necessary is to keep the customer happy enough that they don’t go elsewhere.  Or, of course, the Free Open Source Software (FOSS) model – give it away and rely on support contracts, goodwill or magic to pay the rent.

Although the FOSS model is the hardest to make money with, it does have a lot of advantages – particularly that you’re much more likely to get free help with development and testing.  In fact, this eager and helpful user community is perfect for providing the constant feedback needed for an Agile development process.  If the user finds a problem with your software or has an idea of how to make it better, they’ll let you know about it – especially if they know it has a good chance of getting fixed.

Unfortunately, therein lies the problem.  With many Open Source projects there are, understandably, relatively few skilled developers that are prepared (or able) to donate large amounts of their time for free – so user’s requests are most likely to go ignored.  As much as they love the idea of FOSS, they’ve got to pay the rent somehow; most likely by sitting in front of a computer at work.  It takes a pretty hardcore geek to come home from a hard day’s programming and want to spend the evening doing the same.  And even if they do, they’ll probably choose to implement a new whizz-bang feature than fix a bug in the User Interface.
I suggest therefore that putting an economic mechanism in place to allow users to financially support the development of Open Source software.  I envisage that it would work something like this:

  • a user describes a problem they are experiencing or a way in which they would like to see the software improved, and sets an initial bounty amount, payable upon successful completion
  • an expert works with the user to clarify their requirements and to create a series of acceptance tests , and claims some or all of the original bounty
  • once the user has agreed that the tests specify their requirements exactly, other users can contribute to the bounty
  • developers can then choose a bounty they wish to hunt
  • upon successful completion (when all of the tests pass), the developer is paid and the users receive the modified software
  • the modifications can, at the discretion of the project community, be incorporated into the normal release of the software, for the benefit of everyone

I suggest that these economic mechanism would not only allow greater development effort, but lead to greater user involvement and, ultimately, better Open Source software.

Automatic programming… well, almost

Tuesday, February 27th, 2007

Test-driven development seems like a great idea, but when it comes to actually spending the time to write the tests, it seems like a drag. Of course, it’s not something that can be easily automated – tests should essentially be tightly-defined, programmatic versions of the design, and until computers get really great at natural language comprehension (and, in many situations, telepathy), they’re never going to do a good job of building what you want.

But armed with an executable definition of your goals, surely the computer could at least have a stab at implementing them? It could simply try running your tests against code libraries such as chunks of existing Open Source software – or, more usefully, try piecing together parts from several different sources in the hope of creating something executable that meets your tests’ assertions. A useful starting point would be to search unit-tested software to find sections of code that satisfy similar unit tests.

It would still require a lot of trial-and-error and hence be quite computationally inefficient, but patterns should begin to emerge quite quickly – which combinations of code satisfy the compiler and which sections of code are most likely to satisfy a given assertion. Of course, it would probably still take a lot of computer-juice, but computers are cheap – you can rent 500 powerful-ish PCs on-demand from Amazon EC2 for as much as the average developer. So if an army of 500 dumb PCs can write half the code, you break even – not to mention the morale benefits of taking all the drudgery out of coding and just leaving the challenging bits for the human to fill in.

I envisage it working something like this:

  • design what you want to achieve this iteration, in collaboration with your customer and colleagues
  • write the tests and interfaces, preferably with one of your colleagues doing some sanity-checking
  • have a nice lunch, whilst your tests and interfaces are sent to the on-demand compute cluster
  • come back to find that half the project has been magically coded already
  • fill in the blanks, which are likely to be the parts specific to your project or particularly challenging
  • whilst you code, the computer could display changes or blocks of code that you can easily include that satisfy the compiler and some of your test suite (although the User Interface obviously needs some thought – we don’t want the programming equivalent of the Office Paperclip!)

This would essentially give a new way of programming – half-way between declarative languages where you only specify the goal and imperative languages where you must specify every step. By specifying the goal and then guiding the computer in creating a solution, we create a hybrid that has the elegance of the former with the power and flexibility of the latter.

A state of flow

Monday, February 26th, 2007

Our modern lives are full of distractions from many sources, in person, on our computers and from a multitude of other devices. It can be very difficult to reach a “state of flow”, to stay there for any period of time, and to regain that flow when interrupted. Here’s some ideas of how technology could support that.

Single status… everywhere
In some limited way, we already have status notification built into some software, such as instant messengers, telephones, etc. But realistically, who sets their IM status to offline, their phone to silent, their notice on their door to “Do Not Disturb”, etc. every time they want to get some work done? Usually people either always leave it “online” or “busy” depending on their personality. This lack of accurate status has an effect on the “sender” too, though – they might wait to grab you in the corridor (if you work in the same building, that is) or use something like email, which takes more time and is often a less effective way to communicate.

What we need is two things:

  • an easy way to set status
  • status “syndication” across all software and devices for that user

I think the ideal way to set the first would be by a program that learns the relationship between user status and easily-collected information such as window titles, key-press frequency, mouse movement, webcam, audio, etc. That might sound all a bit complex, but it shouldn’t be hard to make something that can have a good guess at the difference between me staring wide-eyed at Eclipse while bashing code and sitting back drinking tea whilst I watch YouTube. Then, armed with that information, it should broadcast my status to anyone or anything that wants it.

Pounce!
The way to encourage people to keep their status fresh is to offer them tools for doing useful things with it. One simple one is a “pounce” facility for any real-time communication: when both user’s statuses are set to “available”, alert both of them so that they can talk. It’s something we do so often yet is quite poorly handled at the moment.

Audio To-Do
I don’t know about you, but for every one thing I do, I seem to have at least two or three more ideas of things I’d like to do. Often these are quite simple little things that hardly seem worth writing on my To-Do list. The act of creating a To-Do item would break my flow and also turn my To-Do into a mess. So how about a simple voice recorder where I can hold one key and my recording gets added to the top of a “stack”. I can click to hear the recording (and perhaps see a screenshot and webcam capture to further jog my memory) or to remove it when it’s done. Obviously navigation is an interesting user interface challenge, but the idea is that you generally just pick the next thing from the top of the stack – if you have some reason to put it off until later, you should probably put it on your To-Do list. I have some thoughts about how To-Dos should be organised, but that’s another story.

Rewind button
So the above didn’t work and something has interrupted you, or you’ve lost your train of thought. If you were working in the real world, you’d probably have lots of artifacts to prompt you – bits of paper, tools, materials. But on your computer’s “desktop”, you’ve probably got a huge pile of things that’s relatively hard to glance at and many of which have nothing to do with the job in hand. So how about being able to “re-wind” what you were doing before the phone rang? In a few seconds, you can see which applications you were using and what you were typing – and it probably won’t be long before you’ve found your flow again.