Last weekend I attended FOSDEM in Brussels.
Here's a few of my chosen highlights:
James Turnbull - DevOps - More than Marketing
This was a good overview of the devops mentality, and how operations and developers can work together more effectively for the greater good.
In his presentation James Turnbull related how Operations people need to be involved in projects from the beginning. Otherwise there's a tendency for developers to build something and then just throw it over the wall. Often this results in systems failing over as soon as there's load. When things do go wrong, each side blames the other. Involvement from the beginning helps to avoid these "blame storms". After-all It's far better to spend time working on fixing the actual problem and ensuring it doesn't happen again.
James listed several things that are important to smooth running of services, such as testing everything, ensuring that failures are expected and building redundancy in to allow for that. Testing is something that developers tend to have had more experience in, so systems people can potentially learn a lot from that. There was a reference to ops people thinking that testing means monitoring, whereas apps people see this differently. For example, a check for a mail server port being open, doesn't actually prove it can send mail.
The last part of the presentation covered how it's always better to hit problems hard early on, to prevent them evolving into larger problems. In the final part of the presentation James explained how it's typical that people fear change. If you are someone that makes changes people will hate you! However, the good news is that often fear of change is mostly irrational and it can be dealt with by listening to concerns and providing clear examples of how change will provide benefits.
Moving to the Client, HTML 5 is here - Christian Heilmann and Robert Nyman
Christian and Robert make a great double-act. The presentation was informative but also at the same time light-hearted. Between them they listed key features of HTML5 and how those things can practically help you. They made good practical points without relying on superfluous shiny demos.
First up was forms and how all of the additional features of HTML5 can make for much richer experiences. For example; there are plenty of new input field types, such as colourpicker, range, search, email, phone, autocomplete, etc. The benefit of these is that by providing a more semantically correct field the user-agent can provide a much better experience by providing client-based validation and specific controls that match the information in a much more meaningful way. Validation can provide hooks for CSS by providing valid/invalid pseudo-classes on each element. New events provide additional hooks for behavioural changes. For example
onInputChange allows the developer to provide step by step validation should they wish. Obviously all of this doesn't negate the need for server-side validation but it does all add-up to a richer experience for the end-user.
Next up was a walkthrough of what was possible with HTMLCanvas. Robert detailed how to create shapes fills and paths. Clip was particularly interesting as it provides a way to provide a mask which only allows what's in the transparent part to be visible. There was mention of using ExplorerCanvas a JS library that converts canvas to vml for Internet Explorer versions that don't support canvas.
The next subject was video. Flash is seen to be a black box whereas HTML5 audio and video are like any other HTML element. The big benefit with HTML5 audio and video is that they provide native controls provided by the browser. This is immediately much better for accessibility, but not only that HTML5 provides a far more extensive API. Vid.ly was mentioned as a great new way to provide video in many formats, e.g. webm, ogg, streaming for iOS etc. The particularly nice thing is that it provides a single universal url, and the correct video format will be supplied depending on the usage.
Web storage was up next with some examples of storing and retrieving JSON from storage. An interesting note was that 5mb is the limit on what can be stored without the user being asked if they allow it. A goal with web storage is that it should provide the ability to have a seamless offline experience. A point was made about the IE api being different by actually being the most robust for determining when it is offline.
Lastly there was some focus on some good examples of pratical demos that show off what is possible with HTML5. Shape detection e.g. Face detection. Nude.js was mentioned which is a library that looks to provide client-side nudity detection with JS and HTMLCanvas (potentially NSFW). Audio analysis, Image generation.
Overall a lot of ground was covered that made you think about what's possible with HTML5.
Slides and Audio
I'm going M.A.D. (Monitoring and Metrics) - Spike Morelli
Spike's presentation provided plenty of great reasons why you should look to having as much data about your application as possible. He showed some good examples of how metrics can provide great in-sights into what is happening with your code. I missed the early part of the talk due to cross over with the HTML5 one, but there were some interesting points about code metrics, e.g. code coverage, number of tests and lines of code. The lines of code metric in isolation doesn't tell you very much. However when combined with the number of tests and code coverage, when the coverage increased and the number of lines dropped it was clear to see this was a point where the code was refactored.
Spike related how style-based metrics are useful too, e.g. Linting, PEP8 and that beautiful code should be rewarded. He then went on to say how Monitoring provides the means to see problems before they happen, for example monitoring memory on staging could spot a memory leak before it hits production. For me this raises the important point that monitoring staging and non-production systems can be worthwhile. Though clearly for that to be really effective you would need a good way of reproducing the load of production in your staging environments.
Practical Go Programming - Andrew GerrandThis was a really good presentation, taking the example of building out a URL shortener using GO. It went all the way from dealing with the basics to a Master/Slave configuration using RPC, finishing with a great demo showing a realtime graph of live testing against the master and the read-only slaves.
Due to the code example based nature of this presentation, the best way to see this is to take a look at the slide deck which is available here: Practical Go Programming
Go intrigues me and I came away thinking I would certainly look to take a close look at it, time allowing :).
The Storage Technologies Behind Facebook Messages - Nicolas Spiegelberg
This talk went into great detail about the HBase set-up used at facebook where they condense many sources of message; emails, sms and chat into a consolidated approach that allows people to talk to their friends without needing to care about the medium. It started off with a glossy video describing the high-level problem and their high level solution to combine message into one simple approach.
The details on the amounts of data were amazing, 15 Billion emails, 120 Billion chat messages amounting to 25TB data per month. As people aren't deleting data this solution needs to provide greater and greater amounts of storage on an ongoing basis.
HBase solves this problem by providing a strong consistency model, automatic failover, multiple shards per server for load balancing and to prevent cascading failures. The other interesting point is that it allows them to take down a large amount of machines and keep running with the rest. This is handy for when they are running dark launches where they were testing some of the new messaging features without exposing it to users but to put it under live load conditions. All of this helps them meet the goal of having zero data loss.
An interesting facet of the talk was where they talked about their contributions to the HBase project. It sounded like they are very actively involved and there's good cross-company collaboration on the project which is certainly good to hear.
In summary Fosdem 2011 was a great experience, and I thoroughly enjoyed it.
One thing I did learn was that staying in the centre of Brussels is probably overall easier for socialising in the evening vs getting to and from the venue. However this did at least give me a great opportunity to take a walk and see more of the city.
Everything was very well organised. The only downside was that I couldn't see some of the presentations I wanted to because I had been to other presentations first. Some tracks like the configuration management one were full from start to finish so. That said, there were so many great presentations happening it was really easy to go and find something else interesting.
This was my first Fosdem and it was excellent, I look forward to next year.