As the Green revolution and the Arab spring have shown, technology is now an essential tool in organizing, documenting, and cementing peaceful resistance and civil disobedience. For now, the organizers are technologically ahead of the security forces they are demonstrating against. This imbalance, sadly, cannot last without our help. In this talk, I'll cover some of the technical tools needed to help dissidents document abuses. First, we must allow citizens to cover events anonymously, should they wish to. Second, we need to allow them access to their images and video even if the device on which they were taken is confiscated. Last, we need to develop software to help media escape internet blackouts and aggressive filtering.

We all know that Git is amazing for storing code. It is fast, reliable, flexible, and it keeps our project history nuzzled safely in its object database while we sleep soundly at night.

But what about storing more than code? Why not data? Much flexibility is gained by ditching traditional databases, but at what cost?

In this talk, I will explore the idea of using Git as a data store. I will look at the benefits of using a schema-less data store, the incredible opportunity opened up by having every change to every model versioned, and the crazy things that could be done with branching and merging changes to data.

I will also explore the challenges posed by using and scaling Git as a data store, including concurrent access and distributing load.

I love food. Over the past 10 years, what was a simple love has turned to down right obsession. My brother once dared me with the simple phrase "I wonder how hard it would be to make pickles?". From there its been a non-stop adventure, from sausage making to charcuterie to bacon to fresh cheese to hard cheese to fine french cuisine and just about everything in between. I truly believe the obsessive unrelenting nature of being a developer and wanting to solve problems lends itself very well to being a chef (or at least an amateur one). I'll walk through the science and deliciousness of cooking and a number of fun and challenging techniques, from making simple pickles and bacon at home, to building your own cheese cave. You're a nerd, you can figure this out.

From The Hype Machine to Last.fm, music recommendation is now an everyday part of our lives. These services employ many techniques, from curated-playlists to content-similarity to collaborative filtering. But can music recommendation techniques tell us what we should be drinking before a concert? Or where to drink it? Or what tasty beverage best matches a meal? In this talk I’ll be briefly surveying music recommendation techniques, focusing on personalisation and content-based recommendation. I’ll then introduce a dataset of beer descriptions and ratings. We’ll apply the earlier techniques (some with slight modifications) to this rather more intoxicating domain, via a case study. When it’s all over, everyone should know the answer to that most important of questions: What beer will go best (for you) with this bacon?

(all code used in this talk will be available online under an OSS licence)

The human brain evolved to deal with small numbers of medium-sized things. As developers we frequently have to work with huge numbers of extremely tiny things.

The complexity of the programs we write is increasing far more quickly than our intelligence. If we're going to be able to develop effectively we need to find ways to work around our poorly-suited brains. It's time for the development community to grow up and take some lessons from math and science on how to deal with complexity.

Cheap, mass produced mobile phone hardware laden with sensors combined with the compute power of the machines we use every day make expensive research systems of the 90s implementable in your living room. I'll explain how I did just that. Combining machine learning techniques anyone can learn online, an open source hardware platform, a simple mobile app and a bit of heath-robinson device hacking to build a remote control car that learns how to navigate autonomously.

Schemaless database are a joy to use because they make it easy to iterate on your app, especially early on. And to be honest, the relational model isn't always the best fit for real-world evolving and messy data.

On the other hand, relational databases are proven, robust, and powerful. Also, over time as your data model stabilizes, the lack of well-defined schemas becomes painful.

How are we supposed to pick one or the other? Simple: pick both. Fortunately recent advances in Postgres allow for a hybrid approach that we've been using at Heroku. The hstore datatype gives you key/value in a single column, and PLV8 enables JavaScript and JSON in Postgres. These and others in turn make Postgres the best document database in the world.

We will explore the power of hstore and PLV8, explain how to use them in your project today, and examine their role in the future of data.

Web sites are complex systems that can spectacularly fail in more ways that they succeed. Most failures are the result of a combination of totally reasonable behaviors. Learn about one of those failures from SoundCloud and how we handle failures by debunking the myth of the "root cause".

Ever tried to use a regular expression to parse an unstructured street address? This talk is an introduction to a few machine learning algorithms and some tips for integrating them where they make the most sense and will save you the most headaches.

The glamorous world of Visual Effects involves more than just hanging out with movie stars and dressing up in tuxedos to accept awards. We also write a lot of custom technology to enable our artists to help the director realise his vision. This spans the gamut from creating herds of woolly mammoths to blowing up Japanese pagodas, and managing terabytes of data as it flows between hundreds of artists across three timezones.

That riches (or at least really interesting technical challenges) await those that help fix it

Once we've shipped our latest software product we should want to keep an eye on how it behaves out in the real world. Too often this task is an afterthought, completely separate from the development process and focused only on what you get free with one tool or another. This is because even the best tools we have suck.

I'll show some examples:

Truly horrible web user interfaces

Systems that don't work within a dynamic cloud environment

Horrible solutions to scaling

Excessively verbose configuration languages

And then talk about what the community are doing to hopefully fix this problem and why as developers people should join the effort. I'll show some hopeful signs:

Interesting new tools

Better ways to integrate monitoring into the development process

The #monitoringsucks open source research

For those intrigued, it's a perfect opportunity to dive head-first into some really interesting programming challenges:

So we built an employee-driven, geographically-distributed, multi-client, HTML5-based, API-centric, bathroom-enabled, buzzword-embracing music server for the GitHub offices. It's been a fun project to explore company culture, CSS frameworks, JavaScript methodologies, native clients, outside contributions, and to discover who gets really angry when Garth Brooks starts singing on the speakers. It's one of those projects that ended up far more nutty than the original idea. Come steal some ideas for your own projects.