Skip to content

Barcamp Liverpool

It seemed like every major city in England except Liverpool had had a Barcamp until the first Saturday in December, when Katie Lips and friends arranged for a weekend of talks at the Novas Contemporary Urban Centre. It was a full two-day BarCamp, and there were about eight slots each day, so I saw a lot of stuff. Here’s what I saw, and what I made of it:

Saturday

Lateral Visions 3D Web - Stephen Clibbery

I started off with Lateral Vision’s 3D Web demo. This is an attempt to give web developers and designers the option of 3D worlds rather than text-based web pages, viewable via the browser using a rich content plugin developed by Lateral Visions. It has an advantage over existing 3D worlds such as Second Life as it can be run inside the browser (once you’ve actually installed their plugin.)

The technology doesn’t seem to be intended to replace traditional speedy point-and-click web browsing, but to be applied in certain situations which suit it. The use in online shopping was illustrated with a mock-up Apple store which you could walk around and view products. The application to viewing property online was obvious, although I don’t know if many estate agents have training with 3D Studio Max. Microsoft Photosynth is probably a better option for that, as you can build a half-decent 3D world out of a series of photos.

I know things like this have been around for a while (VRML has been around since the start of the web) but it’s definitely a problem worth working on.

How To Be A Dead Good Speaker - Phil Winstanley

I’ve had a lot of advice about public speaking, and this talk overlapped with a lot of it, but it was so well put together that I really enjoyed it.

Top tips that I picked up included:

  • Never read from slides, as the audience will always read them faster.
  • Instead of saying “erm…” say “so…” Although Ian Forrester made that point that he just ends up saying “so” even more.
  • Don’t talk directly to one person for too long.
  • To help with timing, make a mental note of the slide that should appear 1/4 of the way through, 1/2 of the way through etc.

It was nice to have Phil mention that Bill Gates used to be a very dull speaker, but has improved over the years. Even the big guys have things they need to work on.

He also recommended Garr Reynold’s Presentation Zen book which had been on my Wish List for a while and I finally bought myself for Christmas.

Writing an iPhone App - Dave Verwer

Dave gave tips for would-be iPhone developers (although a show of hands indicated that nobody was planning on writing an iPhone app) and showed off his Charades app which he has released just in time for family get togethers at Christmas.

The key points I picked up were:

  • Registering as a company in the US so that you can get your application on the App Store is a major PITA.
  • Your application needs to look nice. “Apply polish liberally” is how I think Dave put it.

I’m afraid I didn’t make any notes about this talk, which I feel terrible about because Dave is such a nice bloke!

What Type of Gamer Are You? - Bizarre Creations

I didn’t catch the name of the two guys doing this talk (like I said, I’d stopped taking notes for some reason) but I remember that one had changed his middle name to “Danger” for a bet.

This talk was about the four types of gamers, and how different games are aimed at them. The 4 types of gamer are:

  1. Achiever - has to complete everything, unlock all the bonuses.
  2. Killer - likes to frag.
  3. Explorer - likes to explore worlds.
  4. Social - likes to play co-operatively with their friends.

There was audience-participation as we voted with A4 sheets to decide which game was aimed at which group. World of Warcraft has been a massive revenue-generating smash-hit as it targets all four.

Getting Started with Arduino - Adrian McEwen

This is a talk that I knew about before the schedule was put together and looked forward to a lot as I’ve been meaning to play with an Arduino for a long time but just haven’t got around to it. Adrian had dismantled a simple toy gun and attached the Arduino to the switch. The Arduino was waiting for a Perl script to notify it that someone had posted a #bcliverpool tag on Twitter, and would turn on the toy gun. Adrian had also put together a similar device that blew a bubble whenever the tag appeared:


Bubblino in action from Adrian McEwen on Vimeo

Adrian has also been gathering data on energy consumption in his house using the Arduino, and uploading it to pachube, an environmental data site that I had not heard of.

I still haven’t bought an Arduino (I’m too busy with software to move into hardware!) but if I do, it’ll be from here. Unfortunately their Starter Kit no longer seems to be available.

Quiz - Dominic Hodgson & Tom Scott

Somehow the team I was on won Dom Hodgson and Tom Scott’s brilliant and well prepared quiz. The questions weren’t just on technical topics, and laptops were encouraged in a “Google Fu” round.

My prize was a MSDN toolkit (literally a toolkit, a hardware one.) There was only one copy of Windows Vista Ultimate, and I didn’t grab it, but now wish I had!

Screencasts Online - Don McAllister

Don makes a living out of producing screencasts, usually about Mac software, and gave a lot of good advice on making screencasts of your own.

His recommendation for screencast recording software on the Mac was ScreenFlow. Snapz Pro X was popular a few years ago, and iShowU is good if you don’t want to spend too much money. He uses Final Cut Pro for post-production.

TechSmith’s Snagit and Camtasia Studio are good on Windows. Their Jing project is intended to be cross-platform.

I didn’t make many more notes, and can’t find the slides on the web, but it was a good talk!

Facebook App Development - Cristiano Betta

Cristiano has developed Facebook applications for Nudge London, and talked us through what he has learnt. The main tip was to start at the Facebook Developers Wiki and not to start from scratch - use one of the Facebook API libraries that are available for your langauge of choice. His slides are available in his blog post.

After Party at Leaf Cafe sponsored by Microsoft

Microsoft kindly paid for the beer at the after-party at the end of the Saturday night, and there was lots available. I know I didn’t run out of drinks vouchers.

There was also a Startup Stars pitching event organised by Katie Lips. I couldn’t hear exactly what was going on because I was at the back of the room, but it appears that Adrian McEwen won it.

I spent most of the night talking to Chris Alcock whose daily .NET news blog is becoming very popular. Award winning blogger, Microsoft employee, and ex-Liverpudlian Steve Clayton was also around, but I didn’t get to speak to him!

Sunday

Meat Licence Proposal - John O’Shea

This was an art project which proposed a law that would make it illegal for anyone to eat meat unless they had killed an animal and got their “meat licence.” It was a good presentation, and I could see the twisted logic behind it, but I still can’t see any government going for it!

The highlight of the talk was when John mentioned that the red “Something is wrong with your Drupal installation.” message on his website for the project had eventually become reassuring, because if any content was appearing then that was better than nothing. I’ve spent some time with Drupal, and can totally understand what he means.

Codewiki - Julian Todd & Aidan Maguire

I’d met Julian and Aidan before the Barcamp, and have followed Julian’s work on Public Whip (the web scraping code behind TheyWorkForYou.com) and UN Democracy (a project to scrape PDFs of United Nations meetings and present their contents on the web - eventually doing things like this.) I haven’t been able to help with UN Democracy however, and I know he is keen to get some.

This presentation was about a proposed wiki of scraping code. The code will be executed via the site, and will regularly collect data that can then be used in mashups. An example of a scraper that Julian showed collected entries in Merseyside Police Force Helicopter logs. The data will end up in a simple database table with columns such as (Summary, Time, Post Code, Northing, Easting etc.)

There was a lot of interest from the crowd, but I don’t know if Julian and Aidan managed to grab many contact details. The Codewiki isn’t public yet, but I promised Aidan I’d write some scraping code. It will probably be in Ruby with hpricot, I assume Julian has been using Python. I’ll be sure to update this post when the codewiki is live!

Homebrew Multi-Touch - Thom Shannon

This wasn’t a talk, but was one of the highlights of the BarCamp nonetheless. Thom, the organiser of the Liverpool GeekUps, put together a multi-touch screen using a row of LEDs, a piece of perpex, some cardboard, some tracing paper, an old webcam, his laptop, and a multitouch framework (I didn’t ask which one, but I assume it’s WPF based.) It worked very well considering what it was made of!

Conclusion

I’m afraid I didn’t see anything more on the Sunday, because I had made plans to see Zack and Miri Make a Porno (not exactly worth leaving for I know.) I sincerely regret leaving because I missed out on the game of Werewolf.

I think Liverpool’s first Barcamp can be considered a runaway success, and all of the organisers, speakers, sponsors, and attendees should be applauded!

Tagged ,

Erlang Talk - Why Functional Programming?

Erlang Talk May 2008

I gave another talk at Liverpool GeekUp, a shorter one this time on Erlang, Ericsson’s programming language and application platform which is being applied in back-end web projects at places such as Amazon and Facebook (SimpleDB and Facebook Chat respectively). It was a follow on from both Chris Alcock’s F# talk at the Liverpool .NET User Group and my own Comet talk the month before (as Erlang is used as the back-end of Facebook’s new chat Comet implementation.)

I didn’t want to just post the slides as the talk was intentionally short and there are a number of great links (some that I’ve only discovered since the talk) that I have to point people towards. I also wanted to make a few points about what Erlang is and what it isn’t. For one thing, it is certainly…

…Not Just Another Programming Language

I’ve got the feeling from people who have heard about Erlang but not looked into it that they’re expecting it to be the new Java/C#/PHP/Ruby (insert language of choice) and they’ll just use it for the same standard everyday tasks that they use language X for. Unless you spend your days writing servers (of whatever description) then that is unlikely to be the case. Yariv Sadan is working hard to persuade people that Erlang is a great platform for writing web apps, but I’m not convinced, at least not for the front-end.

A few years ago Steve Yegge blogged at Amazon (skip down to Syntax for distributed computing) about a language called Erlang that had special syntax designed specifically for its problem domain:

So Ericsson engineers decided to solve our problem, the one we’re talking about hurling J2EE books at in the hopes of stunning it, with a new programming language made just for distributed computing. They cleverly called it “Ericsson Language”, or Erlang for short.

They created syntax for the network calls, for running distributed processes, for doing peer reelections, restarting processes, for doing asynchronous event-based messaging, for doing exponential backoff and retry, all kinds o’ stuff.

Rumor has it that they’ve built themselves one of the largest real-time, transactional distributed systems in the world, using only about a million lines of Erlang code, which they estimate would be about 20 million lines of buggy C/C++ code.

Go figure.

Steve has made the point (read the entire post for a more in-depth view) that language matters and some problems are so hard to solve that they need a language that is designed specifically for solving them. The problem in this case is writing software that can run on a number of different CPUs (distributed or otherwise) in such a way that those CPUs block each other as little as possible. As the amount of speed that can be wrung out of a single CPU has peaked, Erlang’s approach to software has attracted attention.

So why is Erlang so well equipped for parallelism? Simple…

Single Assignment Semantics

I grumbled at Chris’ talk that F# seemed too imperative and that I thought Erlang justified its use of functional language features better. My main gripe was the lack of single-assignment semantics. To me SAS is Erlang’s killer feature, and the reason people are seeing it as a solution to programming for multi-core processors. If shared variables can’t be reassigned, then you avoid all of the headaches associated with traditional thread-based concurrency. It also does away with locks completely, meaning that processes are much less likely to wait on each other, and linear speed-ups on multi-core machines become much more likely.

Erlang is very strict on immutability – once a variable has been assigned then it can’t be reassigned. Seriously. Kiss goodbye to reassignment while you’re working with Erlang, even with local variables. If you really want to do it you just have to create a new variable:

Num = 12,
Num2 = Num + 1

(Note that if you need to do this you’re probably doing it wrong.)

It may seem too strict to restrict the reassignment of local variables. I found an excellent post by Luke Hoersten Why Make Erlang a Functional Language? in which he argues that extending SAS to local variables adds efficiencies to the language which compensate for the overheads of message passing. Whether you agree with that argument or not, you’ll find that while working with Erlang you’ll rarely need to reassign a variable, precisely because of Erlang’s functional language features. Here’s a quick length() example:

length(List) -> length(List, 0).
length([], Count) -> Count;
length([Head|Tail], Count) ->
    length(Tail, Count + 1).

The function uses recursion to iterate over the list and increment a counter without reassigning any local variables. Therefore Erlang justifies its use of functional programming features. Hence my talk.

Further Reading

Here are some Erlang links that I think are worth checking out:

There’s also an unintentionally funny promotional film that Ericsson made about Erlang. I deliberately avoided embedding it here, because you would probably have just skipped to it and got quite a bad impression of the language!

Comet Talk

I’m due to give a talk on Comet at Liverpool GeekUp tomorrow, and the slides should surface here at some point. In the meantime, I’ll provide the links that furnished me with so much inspiration. Start with the ones at the top first:

The Upcoming page for the talk is here.

UPDATE: Here are the slides.

Tagged , , ,