And just like that Velocity Europe 2012 comes to an end. And I am completely exhausted. By the end of day 1 my mind was 80% full. By mid way through the opening plenary on the second day it was 100%. Now that it is all over I am going have to put it all together and plan my next 6 months of development.
Once again there have been a great set of talks, starting with a set of very cool keynotes and presentations.
Walmart gave a great talk about the behaviour of Web versus Native. I think that there is a certain uncomfortable truth about the Web Experience. They brought up a good point, which is serious flame-bait, in “iOS is the first Consumer OS”. Wow, I can already see the Android fanbois salivating at the mouth to retort, with the HTML5 zealots right behind them.
But I have to agree with them. iOS is the one place that end users (think your dad, or perhaps your grandmother) can have a predictable and error free experience without having to worry about “viruses” etc. And sorry to say this, iOS is significantly smoother to use than any Android phone or HTML5.
At this point, I would like you to direct your vitriol at @bgalbs and @dalmaer who gave the presentation. But check out the talk for yourself first, it’s worth it.
@Skeptomai also gave an excellent talk on the state of the web industry and brought up a lot of good points about the lack of professionalism therein.
Performance Metrics on lonelyplanet.com
@davenolan and Mark Jennings gave a great talk about their work at Lonely Plant. There is only one thing that you need to take away from it, and it is something that I am really embarrassed wasn’t already defining the way in which I approach my work. If you are having an argument, do an experiment.
They talked about the problems they initially had fighting with hippos, that is, the HighestPayedPersonsOpinions. This is a sentiment that I think most developers can agree with. Of course, the solution is to produce evidence, statistics that support your argument, and of course, the grace to accept that the evidence contradicts your theory.
Of course, the majority of the the “discussions” that I have are to do with things like, what should this API method be called and do you put your braces on the next line? But whenever possible I will forthwith back myself up with graphs.
I had a quick chat with the guys from Keynote about how we might be able to use their software for automating Caplin Software. They had some very interesting services that they were offering and I was kind of interested in whether we could leverage them.
We have had many problems with the large regression suites of Selenium tests, and it appears that there is not much that Keynote can do about this. Their focus isn’t on Acceptance Testing but on what I want to call “Monitoring” testing. So consider if you have an e-commerce site. The items on your front page won’t always be the same. But the Keynote Internet Testing Environment is able to click on whatever your “offer of the day” is, measure it’s load performance, make sure the landing page shows the correct data (whatever that may be), log the results, show them in a graph over time and send alerts if there are any concerns.
Not quite sure if it is something that we can take advantage of at Caplin, but something to keep an eye on.
Continuously Deploying Culture
@mrembetsy and Patrick McDonnell gave a talk about their development culture at Etsy.
Firstly, they, like Caplin, are a very technology focussed company, with every member of the company focused on technology being “who you are” not “what you sell”. I think that this is a very nice culture for a company where one would traditionally consider the technology as simply a means to an ends, specifically e-commerce. For them to see themselves as a technology house first, and a retailer second I think is a very healthy perspective. But then again, I would.
I think they dropped a lot of recommendations, that Caplin can take on board. For example, if you are a developer, you should be giving back to the community by either A: Blogging, B: Talking at a conference or C: Open sourcing something.
I really think they brought up a good point about these things being a resposibility of a professional to perform, not just optional. Let’s see how that goes down back at the office…
And they also once again reiterated a point that I have now taken well on board: “If it moves, graph it”. I really like the kind of attention to detail that all the companies presenting so far have shown towards gathering metrics, no matter how insignificant they may seem at first. Metrics truly are the nervous system of consumer facing companies, and you lack good investment in it at your own peril.
An Englishman’s Guide to Queueing
@ph gave a talk on how best to incorporate queueing into your application to improve interaction.
One of the most interesting ideas that he brought up was users’ expectation of performance. So consider Twitter. When I post a tweet, I expect it to be in my feed immediately. However, someone who is following me will find it quite acceptable to wait 10 seconds to see it in their queue before thinking that something has gone wrong. And a complete stranger who is just looking at my tweets might not notice anything is wrong for a couple of minutes.
We can use this to our advantage by doing delayed queueing where it is not time sensitive, which allows us to be more responsive where it does matter. In the example provided for example, splitting the job of tweeting into 3 tasks, and only the one of showing it in your timeline executing immediately.
He also brought a concept that I had never heard of before: idempotency. A function that is idempotent will produce the same effects no matter how many times it is run. So for example updateUserEmail(123456, “email@example.com”), will always result in userid having the email “firstname.lastname@example.org”.
This is actually a great feature for a function to have as it allows you to not worry too much about whether a function has already been invoked, which significantly simplifies your queueing system.
While I am not sure that I grab all the subtelties just yet, this is definitely something that I want to look at.
I was able to catch up with the guys from Etsy to talk about their approach to building a development team. In their talk they had mentioned that they had considered releasing some developers as an important step to get the team that they wanted.
When I asked them more about this it basically came down to two things, wanting to co-locate their developers and pruning deadwood.
While pruning deadwood is just one of things, I found it interesting that they considered colocation absolutely critical, to the point that they would drop talented developers who weren’t willing to do so.
As they had grown they had picked up many developers who worked on different locations and they wanted to be able to have everyone under one roof. This is in direct opposition to the recent trend that I have see amongst “startup” developers to encourage Working From Home.
For me personally, I don’t like working from home, it prevents me from being able to walk over to the developers in my team and
punch them in the face hug them. But I thought that I was in the minority. It is interesting to see another young company isn’t so keen on it.
Monitoring at Low Latencies
No Slides 🙁
Andrew Phillips from LMAX gave a talk that I had hoped would be right up our alley, on monitoring low latencies in trading systems, but sadly, it was very technical, specific and very much aimed at the backend.
However there was a lot good advice about how to accurately monitor this kind of data. For example, if you are monitoring millisecond round times, you need to record data at millisecond granularity to get truly useful data. This may be obvious in retrospect, but it is an easy thing to not think about when producing your graphs.
There was also a good bit of advice about writing your telemetry software yourself, as most off-the-shelf solutions are incredibly expensive. Using a StatsD and Graphite and a bit of custom code you can produce statistics much more useful than any 3rd party offering.
The Story of Sharding at Box
@TamarBercovici gave a fantastic talk on how to shard a database. This was very technical and specific, and as I am not planning on sharding any databases any time soon of little use to me. However, if you are planning to shard a database any time soon I highly recommend that you give her an email. Really great talk.
Web & Native Cross-Platform Multiplayer
For the final talk of the conference I attended @ashcairo showing off how to make 3D MMOs that were cross device and cross OS using web technologies. He had… a lot of energy. Much more than I think the rest of his audience had after slogging through three days of talks. He showed off his game live, and got the audience to participate. British Pride!
And just like that, it was all over. I know have at least 12 months are ideas to work on and I can’t wait to get started. There are so many exciting improvements that we can make to the way that we develop our software and I hope that you will be seeing all the changes that we make in the coming months.