Smile!

This is my mood (as identified from my facial expressions) over time while watching Never Mind the Buzzcocks.

The green areas are times where I looked happy.

This shows my mood while playing XBox Live. Badly.

The red areas are times where I looked cross.

I smile more while watching comedies than when getting shot in the head. Shocker, eh?

A couple of years ago, I played with the idea of capturing my TV viewing habits and making some visualisations from them. This is a sort of return to that idea in a way.

A webcam lives on the top of our TV, mainly for skype calls. I was thinking that when watching TV, we’re often more or less looking at the webcam. What could it capture?

What about keeping track of how much I smile while watching a comedy, as a way of measuring which comedies I find funnier?

This suggests that, overall, I might’ve found Mock the Week funnier. But, this shows my facial expressions while watching Mock the Week.

It seems that, unlike with Buzzcocks, I really enjoyed the beginning bit, then perhaps got a bit less enthusiastic after a bit.

What about The Daily Show with Jon Stewart?

I think the two neutral bits are breaks for adverts.

Or classifying facial expressions by mood and looking for the dominant mood while watching something more serious on TV?

This shows my facial expressions while catching a bit of Newsnight.

On the whole, my expression remained reasonably neutral whilst watching the news, but you can see where I visibly reacted to a few of the news items.

Or looking to see how I react to playing different games on the XBox?

This shows my facial expressions while playing Modern Warfare 3 last night.

Mostly “sad”, as I kept getting shot in the head. With occasional moments where something made me smile or laugh, presumably when something went well.

Compare that with what I looked like while playing Blur (a car racing game).

It seems that I looked a little more aggressive while driving than running around getting shot. For last night, at any rate.

Not just about watching TV

I’m using face recognition to tell my expressions apart from other people in the room. This means there is also a bunch of stuff I could look into around how my expressions change based on who else is in the room, and their expressions?

For example, looking at how much of the time I spend smiling when I’m the only one in the room, compared with when one or both of my kids are in the room.

To be fair, this isn’t a scientific comparison. There are lots of factors here – for example, when the girls are in the room, I’ll probably be doing a different activity (such as playing a game with them or reading a story) to what I would be doing when by myself (typically doing some work on my laptop, or reading). This could be showing how much I smile based on which activity I’m doing. But I thought it was a cute result, anyway.

Limitations

This isn’t sophisticated stuff.

The webcam is an old, cheap one that only has a maximum resolution of 640×480, and I’m sat at the other end of the room to it. I can’t capture fine facial detail here.

I’m not doing anything complicated with video feeds. I’m just sampling by taking photos at regular intervals. You could reasonably argue that the funniest joke in the world isn’t going to get me to sustain a broad smile for over a minute, so there is a lot being missed here.

And my y-axis is a little suspect. I’m using the percentage level of confidence that the classifier had in identifying the mood. I’m doing this on the assumption that the more confident the classifier was, the stronger or more pronounced my facial expression probably was.

Regardless of all of this, I think the idea is kind of interesting.

How does it work?

The media server under the TV runs Ubuntu, so I had a lot of options. My language-of-choice for quick hacks is Python, so I used pygame to capture stills from the webcam.

For the complicated facial stuff, I’m using web services from face.com.

They have a REST API for uploading a photo to, getting back a blob of JSON with information about faces detected in the photo. This includes a guess at the gender, a description of mood from the facial expression, whether the face is smiling, and even an estimated age (often not complimentary!).

I used a Python client library from github to build the requests, so getting this working took no time at all.

There is a face recognition REST API. You can train the system to recognise certain faces. I didn’t write any code to do this, as I don’t need to do it again, so I did this using the API sandbox on the face.com website. I gave it a dozen or so photos with my face in, which seemed to be more than enough for the system to be able to tell me apart from someone else in the room.

My monitoring code puts what it measures about me in one log, and what it measures about anyone else in a second “guest log”.

This is the result of one evening’s playing, so I’ve not really finished with this. I think there is more to do with it, but for what it’s worth, this is what I’ve come up with so far.

The script

####################################################
#  IMPORTS
####################################################

# imports for capturing a frame from the webcam
import pygame.camera
import pygame.image

# import for detecting faces in the photo
import face_client

# import for storing data
from pysqlite2 import dbapi2 as sqlite

# miscellaneous imports
from time import strftime, localtime, sleep
import os
import sys

####################################################
# CONSTANTS
####################################################

DB_FILE_PATH="/home/dale/dev/audiencemonitor/data/log.db"
FACE_COM_APIKEY="MY_API_KEY_HERE"
FACE_COM_APISECRET="MY_API_SECRET_HERE"
DALELANE_FACETAG="dalelane@dale.lane"
POLL_FREQUENCY_SECONDS=3

class AudienceMonitor():

    #
    # prepare the database where we store the results
    #
    def initialiseDB(self):
        self.connection = sqlite.connect(DB_FILE_PATH, detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES)
        cursor = self.connection.cursor()

        cursor.execute('SELECT name FROM sqlite_master WHERE type="table" AND NAME="facelog" ORDER BY name')
        if not cursor.fetchone():
            cursor.execute('CREATE TABLE facelog(ts timestamp unique default current_timestamp, isSmiling boolean, smilingConfidence int, mood text, moodConfidence int)')

        cursor.execute('SELECT name FROM sqlite_master WHERE type="table" AND NAME="guestlog" ORDER BY name')
        if not cursor.fetchone():
            cursor.execute('CREATE TABLE guestlog(ts timestamp unique default current_timestamp, isSmiling boolean, smilingConfidence int, mood text, moodConfidence int, agemin int, ageminConfidence int, agemax int, agemaxConfidence int, ageest int, ageestConfidence int, gender text, genderConfidence int)')

        self.connection.commit()

    #
    # initialise the camera
    #
    def prepareCamera(self):
        # prepare the webcam
        pygame.camera.init()
        self.camera = pygame.camera.Camera(pygame.camera.list_cameras()[0], (900, 675))
        self.camera.start()

    #
    # take a single frame and store in the path provided
    #
    def captureFrame(self, filepath):
        # save the picture
        image = self.camera.get_image()
        pygame.image.save(image, filepath)

    #
    # gets a string representing the current time to the nearest second
    #
    def getTimestampString(self):
        return strftime("%Y%m%d%H%M%S", localtime())

    #
    # get attribute from face detection response
    #
    def getFaceDetectionAttributeValue(self, face, attribute):
        value = None
        if attribute in face['attributes']:
            value = face['attributes'][attribute]['value']
        return value

    #
    # get confidence from face detection response
    #
    def getFaceDetectionAttributeConfidence(self, face, attribute):
        confidence = None
        if attribute in face['attributes']:
            confidence = face['attributes'][attribute]['confidence']
        return confidence

    #
    # detects faces in the photo at the specified path, and returns info
    #
    def faceDetection(self, photopath):
        client = face_client.FaceClient(FACE_COM_APIKEY, FACE_COM_APISECRET)
        response = client.faces_recognize(DALELANE_FACETAG, file_name=photopath)
        faces = response['photos'][0]['tags']
        for face in faces:
            userid = ""
            faceuseridinfo = face['uids']
            if len(faceuseridinfo) > 0:
                userid = faceuseridinfo[0]['uid']
            if userid == DALELANE_FACETAG:
                smiling = self.getFaceDetectionAttributeValue(face, "smiling")
                smilingConfidence = self.getFaceDetectionAttributeConfidence(face, "smiling")
                mood = self.getFaceDetectionAttributeValue(face, "mood")
                moodConfidence = self.getFaceDetectionAttributeConfidence(face, "mood")
                self.storeResults(smiling, smilingConfidence, mood, moodConfidence)
            else:
                smiling = self.getFaceDetectionAttributeValue(face, "smiling")
                smilingConfidence = self.getFaceDetectionAttributeConfidence(face, "smiling")
                mood = self.getFaceDetectionAttributeValue(face, "mood")
                moodConfidence = self.getFaceDetectionAttributeConfidence(face, "mood")
                agemin = self.getFaceDetectionAttributeValue(face, "age_min")
                ageminConfidence = self.getFaceDetectionAttributeConfidence(face, "age_min")
                agemax = self.getFaceDetectionAttributeValue(face, "age_max")
                agemaxConfidence = self.getFaceDetectionAttributeConfidence(face, "age_max")
                ageest = self.getFaceDetectionAttributeValue(face, "age_est")
                ageestConfidence = self.getFaceDetectionAttributeConfidence(face, "age_est")
                gender = self.getFaceDetectionAttributeValue(face, "gender")
                genderConfidence = self.getFaceDetectionAttributeConfidence(face, "gender")
                # if the face wasnt recognisable, it might've been me after all, so ignore
                if "tid" in face and face['recognizable'] == True:
                    self.storeGuestResults(smiling, smilingConfidence, mood, moodConfidence, agemin, ageminConfidence, agemax, agemaxConfidence, ageest, ageestConfidence, gender, genderConfidence)
                    print face['tid']

    #
    # stores face results in the DB
    #
    def storeGuestResults(self, smiling, smilingConfidence, mood, moodConfidence, agemin, ageminConfidence, agemax, agemaxConfidence, ageest, ageestConfidence, gender, genderConfidence):
        cursor = self.connection.cursor()
        cursor.execute('INSERT INTO guestlog(isSmiling, smilingConfidence, mood, moodConfidence, agemin, ageminConfidence, agemax, agemaxConfidence, ageest, ageestConfidence, gender, genderConfidence) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
                        (smiling, smilingConfidence, mood, moodConfidence, agemin, ageminConfidence, agemax, agemaxConfidence, ageest, ageestConfidence, gender, genderConfidence))
        self.connection.commit()

    #
    # stores face results in the DB
    #
    def storeResults(self, smiling, smilingConfidence, mood, moodConfidence):
        cursor = self.connection.cursor()
        cursor.execute('INSERT INTO facelog(isSmiling, smilingConfidence, mood, moodConfidence) values(?, ?, ?, ?)',
                        (smiling, smilingConfidence, mood, moodConfidence))
        self.connection.commit()

monitor = AudienceMonitor()
monitor.initialiseDB()
monitor.prepareCamera()
while True:
    photopath = "data/photo" + monitor.getTimestampString() + ".bmp"
    monitor.captureFrame(photopath)
    try:
        faceresults = monitor.faceDetection(photopath)
    except:
        print "Unexpected error:", sys.exc_info()[0]
    os.remove(photopath)
    sleep(POLL_FREQUENCY_SECONDS)

Why Doctor Who Confidential mattered

Behind-the-scenes documentaries, like Doctor Who Confidential, matter. They matter because they show viewers, in particular children still deciding what to do with their lives, that it takes more to produce a high-class TV programme than just a few actors who become famous. It shows what other creative and/or technical jobs there are in television.

A couple of weekends ago, we went to the Doctor Who Official Convention (#dwcuk) in Cardiff. While one of the three main panels featured the three stars, Matt Smith, Karen Gillan and Arthur Darvill (along with executive producers Stephen Moffat and Caroline Skinner), most of the other scheduled events were focused on how Doctor Who is made.

Danny Hargreaves makes it snow indoors

At the very start of the day, we went to see Danny Hargreaves blow things up talk about the Special Effects on Doctor Who. In his Q&A session (after making it snow indoors), the first question asked was “How did you get into special effects work?” and, between questions like how he blew up the Torchwood Hub and how he makes the Doctor’s hands and head fiery during a regeneration, a later question was “When did you realise you wanted to work in special effects?”. Attendees were interested not just in the fictional stories and characters but in how the programme is made and the interesting careers they might not otherwise have come across.

Old harddrive on the TARDIS console to make the spinny thing spin.

Throughout the day, I heard audience members ask how to become costume and prosthetics designers and how to become script writers. Danny described how his team designs and creates the effects, assess the risks of blowing things up, and who they work with to make it all happen. He also explained how he came to be a trainee in the nascent world of special effects before studying Mechanical Engineering so that he could build the devices they need for Doctor Who (and the other shows he’s worked on, like Coronation Street). Directors of photography, set designers, executive producers, writers, and directors went on to talk about what their own jobs entailed day-to-day and how it all comes together to make an episode of Doctor Who.

These discussions continued the story that used to be told after each new episode of Doctor Who by Doctor Who Confidential on BBC3. Doctor Who Confidential started in 2005 with the return of Doctor Who. As well as talking about some interesting perspective on making that night’s episode of Doctor Who, it featured interviews with, and ‘day-in-the-life’ documentaries about, the actors (including showing the less glamorous side of shivering in tents and quilted coats between takes), the casting directors, the producers, the writers, the choreographers, the costume designers, the special effects supervisors, the monster designers, the prosthetics experts, the directors, the assistant directors, and many, many others. It also held competitions for children to write a mini episode and then see the process of making it, which would’ve been an amazing experience!

Yes, it took a slightly odd turn in the last series when it turned a bit Top Gear by showing Karen Gillan having a driving lesson and Arthur Darvill swimming with sharks; possibly a misguided attempt to increase its popularity before it got canned anyway to cut costs.

I think it’s a real shame to lose Doctor Who Confidential and its insights into the skill, hard work, and opportunities in TV and film production.


Cool photo of Danny in the snow by Tony Whitmore.

Post to Twitter Post to Facebook Post to Delicious Post to LinkedIn

Reflecting on our total home energy usage

The graph of our total gas usage per year doesn’t decrease quite so impressively as our electricity graph, which I blogged about halving over five years. Because the numbers were getting ridiculously big and difficult to compare at a glance, I’ve re-created the electricity graph here in terms of our average daily electricity usage instead of our annual usage (click the graph to see a larger version):

Graph of daily electricity usage per year.

 

If you compare it with the average daily gas usage graph below, you can see (just from the scales of the y-axes) that we use much more gas than electricity (except in 2007, which was an anomalous year because we didn’t have a gas fire during the winter so we used a electric halogen heater instead):

 

Graph of daily gas usage per year.

Our gas usage has come down overall since 2005 (from 11280 kWh in 2005 to 8660 kWh in 2011; or 31 kWh per day to 24 kWh per day on average) but not so dramatically as our electricity usage has. Between 2005 and 2011, we reduced our electricity usage by about a half  and our gas usage by about a quarter.

Gas, in our house, is used only for heating rooms and water. So if I were to chart the average outside temperatures of each year, they’d probably track reasonably closely to our gas usage. In 2005 (when we used an average of 31 kWh per day), we still had our old back boiler (with a lovely 1970s gas fire attached) which our central heating installer reckoned was about 50% efficient. In 2006 (26 kWh per day), we replaced it with a new condensing boiler (apparently 95% efficient) but didn’t replace the gas fire until mid-2007 (the dodgy year that doesn’t really count). In 2006, we also had the living-room (our most heated room) extended so it had a much better insulated outside wall, door, and window. These changes could explain the pattern of reducing gas usage year by year up till then.

Old boiler being removed

In 2009, January saw sub-zero temperatures and it snowed in November and December. I think that must be the reason why our usage for the whole year shot back up again, despite the new boiler, to 31 kWh per day. In 2010 (21 kWh per day), it was again very cold and snowy in January; I think the slight dip in gas usage that year compared with both 2008 (25 kWh per day) and 2011 (24 kWh per day) was down to a problem with the gas fire that meant we used the electric halogen heater again during the coldest month. In 2011 it snowed in January but was fairly mild for the rest of the year.

I think 2008, 2010, and 2011 probably represent ‘typical’ years of heating our house with its new boiler and gas fire. Like I concluded about reducing our electricity usage, I think our gas usage went down mostly by getting some better insulation and a more efficient boiler but we did also reduce the default temperature of our heating thermostat to about 17 degrees C (instead of 20 degrees C) a couple of years ago too (we increase it when we need to but it stays low if we don’t), which I think has made some difference but it’s hard to tell when our heating usage is so closely tied to the outside temperature. Also, we don’t currently have any way of separating out our water heating from our central heating, and our gas fire from the boiler.

Of course, what really matters overall is the total amount of energy we use (that is, the gas and electricity numbers combined). So I’ve made a graph of that too. Now we’re talking numbers like 48 kWh per day in 2005 to 33 kWh per day in 2011.

 

Graph of total daily energy usage per year.

Overall, that means we reduced our total energy usage by about one-third over seven years.


Thanks again to @andysc for helping create the graph from meter readings on irregular dates.

Post to Twitter Post to Facebook Post to Delicious Post to LinkedIn

Failing to Invent

We IBM employees are encouraged, indeed incented, to be innovative and to invent.  This is particularly poignant for people like myself working on the leading edge of the latest technologies.  I work in IBM emerging technologies which is all about taking the latest available technology to our customers.  We do this in a number of different ways but that's a blog post in itself.  Innovation is often confused for or used interchangeably with invention but they are different, invention for IBM means patents, patenting and the patent process.  That is, if I come up with something inventive I'm very much encouraged to protect that idea using patents and there are processes and help available to allow me to do that.


This comic strip really sums up what can often happen when you investigate protecting one of your ideas with a patent.  It struck me recently while out to dinner with friends that there's nothing wrong with failing to invent as the cartoon above says Leibniz did.  It's the innovation that's important here and unlucky for Leibniz that he wasn't seen to be inventing.  It can be quite difficult to think of something sufficiently new that it is patent-worthy and this often happens to me and those I work with while trying to protect our own ideas.

The example I was drawing upon on this occasion was an idea I was discussing at work with some colleagues about a certain usage of your mobile phone [I'm being intentionally vague here].  After thinking it all through we came to the realisation that while the idea was good and the solution innovative, all the technology was already known available and assembled in the way we were proposing, but used somewhere completely different.

So, failing to invent is no bad thing.  We tried and on this particular occasion decided we could innovate but not invent.  Next time things could be the other way around but according to these definitions we shouldn't be afraid to innovate at the price of invention anyway.

Halving our electricity usage

I learnt something interesting today: between 2007 and 2011, we halved the amount of electricity we use in our house:

Total electricity usage per year (kWh)

In 2007, we used 6783 kWh of electricity (for electricity, a kilowatt hour is the same thing as a ‘unit’ on your bill). In 2011, by contrast, we used 3332 kWh (or ‘units’). 2007 was slightly on the high side (compared with 2006) because we had no gas fire in the living-room during the winter of 2006-7 so we’d used an electric oil heater during the coldest weeks (we don’t have central heating in that room) 1.

That’s an average of 19 kWh per day in 2007 compared with 9 kWh per day in 2011. Which is quite a difference. So what changed?

In early 2008, I got a plug-in Maplin meter (similar to this one) and one of the very early Current Cost monitors, which display in real-time how much electricity is being used in your whole house:

An classic Current Cost monitor

Aside from the fun of seeing the display numbers shoot up when we switched the kettle on, it informed us more usefully that when we went to bed at night or out to work, our house was still using about 350 Watts (which is 3066 kWh per year)2 of electricity. That’s when the house is pretty much doing nothing. Nothing, that is, apart from powering:

  • Fridge
  • Freezer
  • Boiler (gas combi boiler with an electricity supply)
  • Hob controls and clock
  • Microwave clock
  • Infrared outside light sensor
  • Print/file server (basically a PC)
  • Wireless access point
  • Firewall and Internet router
  • DAB clock radio
  • ADSL modem
  • MythTV box (homemade digital video recorder; basically another PC)

And that’s the thing, this ‘baseline’ often makes a lot of difference to how much electricity a house uses overall. 3066 kWh per year was 56% of 2007′s total electricity usage.

The first six items on that list draw less than 100 Watts (876 kWh per year) altogether. They’re the things that we can’t really switch off. But there were clearly things that we could do something about.

Over the next couple of years, we reduced our baseline by about 100 Watts by getting rid of some of the excessive computer kit, buying more efficient versions when we replaced the old print/file server and MythTV box, and replaced most of our lightbulbs with energy-efficient equivalents. We also, importantly, changed our habits a bit and just got more careful about switching lights off when we weren’t using them (which wouldn’t affect the baseline but does affect the overall energy usage), and switching off, say, the stereo amplifier when we’re not using it.

That brought our baseline down to about 230 Watts (2015 kWh per year), which is a lot better, though it’s still relatively high considering that the ‘essentials’ (eg fridge and freezer) contribute less than half of that.

And that’s about where we are now. We tended to make changes in fits and starts but none of it has been that arduous. I don’t think we’re living much differently; just more efficiently.


1The complementary gas usage graph shows lower gas for that year for the same reason; I’ll blog about gas when I have a complete set of readings for 2011).
2350 Watts divided by 1000, then multiplied by 8760 hours in a year.
Photo of the Current Cost monitor was by Tristan Fearne.
Thanks also to @andysc for helping create the graph from meter readings on irregular dates.

Post to Twitter Post to Facebook Post to Delicious Post to LinkedIn

UX hack at London Green Hackathon

At the London Green Hackathon a few weeks ago, the small team that had coalesced around our table (Alex, Alex, Andy, and me) had got to about 10pm on Saturday night without a good idea for a hack, in this case a piece of cool software relevant to the theme of sustainability. We were thinking about creating a UK version of the US-based Good Guide app using on their API to which we had access. The Good Guide rates products according to their social, environmental, and health impacts; the company makes this data available in an API, a format that programmers can use to write applications. Good Guide uses this API itself to produce a mobile app which consumers can use to scan barcodes of products to get information about them before purchase.

Discussing ideas

The problem is that the 60,000 products listed in the Good Guide are US brands. We guessed that some would be common to the UK though. We wondered if it would be possible to match the Good Guide list against the Amazon.co.uk product list so that we could look up the Good Guide information about those products at least. Unfortunately, when we (Andy) tried this, we discovered that Amazon uses non-standard product IDs in its site so it wasn’t possible to match the two product lists.

The equivalent of the Good Guide in the UK is The Good Shopping Guide, of which we had an old copy handy. The Good Shopping Guide is published each year as a paperback book which, while a nicely laid out read, isn’t that practical for carrying with you to refer to when shopping. We discovered that The Ethical Company (who produce the Good Shopping Guide) have also released an iPhone app of the book’s content but it hasn’t received especially good reviews; a viewing of the video tour of the app seems to reveal why.

Quite late at night

By this point it was getting on for midnight and the two coders in our team, Andy and Alex, had got distracted hacking a Kindle. Alex and I, therefore, decided to design the mobile app that we would’ve written had we (a) had access to the Good Shopping Guide API and (b) been able to write the code needed to develop the app.

While we didn’t have an actual software or hardware hack to present back at the end of the hackathon weekend, we were able to present our mockups which we called our ‘UX hack’ (a reference to the apparently poor user experience (UX) of the official Good Shopping Guide mobile app). Here are the mockups themselves, along with a summary of the various ideas our team had discussed throughout the first day of the hackathon:

Post to Twitter Post to Facebook Post to Delicious Post to LinkedIn

An unconference and a little bit of history

Yesterday lunchtime the auditorium in Hursley House became the venue of an internal “unconference” of sorts – a very relaxed session with a bunch of short, snappy 5 minute presentations by folks from around the lab who related their experiences from different tech conferences.

Dale Lane spoke about Hackdays and Barcamps; Alex Hutter talked about last weekend’s Barcamp in Brighton; Robin Fernandes talked about user groups and his involvement with PHP; Iain Gavin from Amazon Web Services told us about external views on IBM; and Andy Stanford-Clark was, well, Andy :-) I think he may have mentioned something about some service called Twitter, I was’t really paying attention… ;-) Most of it was Ignite-style high-speed babble, and mostly without slides.

Unlunch, unlearn

It was all the brainchild of the brilliant Zoe Slattery, who also had some exciting announcements to share with us (more to come on these once I get clearance to post!). There were guest appearances of photographs by Alice, too.

Oh, and my contribution? I gave a potted, high-speed history of eightbar from the perspective of someone who jumped in to the Hursley world from the outside. Here’s a pictorial tour. You’ll note few mentions of virtual worlds – not because that’s not something eightbar does anymore, but rather to remind people of the breadth of our interests. Oh, and guess what, the blog has been around for nearly 4 years – just a week or so to go!

(dunno what happened with the bizzaro blank slide #12, it’s not supposed to be there…)

Tribe 2.0

What is eightbar? As the About page for this blog states:

We’re a group of techie/creative people working in and around IBM’s Hursley Park Lab in the UK. We have regular technical community meetings, well more like a cup of tea and a chat really, about all kinds of cool stuff.

That’s all still true. That’s who we are. Over the past four years this blog has featured lots of cool things. It started with an small group of folks into emerging tech talking about life at Hursley (who remembers Roo’s post about the dome of cups, in his pre-metaverse days?!). It continued to grow to cover virtual worlds topics as we began to explore those spaces. eightbar became a bit of a tribe and expanded to include many others who were into interesting technology. Increasingly we’re seeing the technologies that we talked about in the early days of this blog hit the mainstream – take 3D printing and augmented reality as just two examples.

eightbar is more than just a group of people. It’s a mindset, a grassroots culture. If you asked me to sum it up, I’d use phrases like “the frontier spirit”, “bleeding edge”, and “Web 2.0 is Web Do” (with a very definite nod in the direction of epredator for the last one!).

We’ll be including more folks from the lab as authors and guests here over the coming months – eightbar has always been a kind of “shop window to the world” for the things we are up to. The kinds of people you’ll find writing and contributing here are also likely to be found out and about at unconferences around Southampton, London, or other places. There may be a few changes to the look and feel as well as to the content, but the spirit is absolutely going to remain the same. Oh, and by the way, check out the links in the sidebar – you’ll find that many of the contributors have great content out on their own sites, too.

Why is this post entitled Tribe 2.0? Simple: fresh thinking and fresh ideas FTW! :-)

Showing Off Linux

Thanks to Ian Hughes for the picture on his flickr. Yesterday, at work, the Hursley Linux Special Interest Group ran a little trade show type event for a couple of hours after lunch. The idea was to provide a bit of away from your desk time for folks around the lab to see what we Linux geeks have been getting up to. Various people interested in using Linux inside and outside work came along to demo their gadgets.

The picture shows me showing off my old Linux audio centre. But, also at the event were the main organiser of the day Jon Levell (showing Fedora 9 and an eeepc), and Nick O'Leary (showing his N800 and various arduino gadgets), Gareth Jones (showing his accelerometer based USB rocket launcher and bluetooth tweetjects), Andy Stanford-Clark (showing his NSLU2 driven house, and an OLPC), Laura Cowen (showing an OLPC), Steve Godwin (showing MythTV), and Chris law (showing Amora).

I thought it was quite a nice little selection of Linux related stuff to look through for the masses of people turning up, plenty of other things we could have shown too of course. The afternoon seemed very much a success, generating some real interest in the various demo items and lots of interesting questions too. Thanks to everyone for taking part!