September 13th 2011 | Jens C Brynildsen
This year there are no official parties at the conference. It's rather mingling at the hall of the Brighton Dome for a few hours and then people spread out all over the town. Most had no problem finding the myHotel bar or other good locations. After a good day 1, we were looking forward to the next one but we were hoping not to meet a closed door at sessions this time.
One major change for FOTB this year is that most of the technical sessions are in the Pavillion theatre (the smallest room). This was quite unlucky as for every session the first day, there would be 50-100 geeks that were annoyed that they couldn't go to the sessions they wanted. In the mean time the Dome (The largest) would be half empty with a creative session. This change towards more creative sessions has gone slowly the last years and it's all been good. It is however not a good feeling to stand outside your fourth session that you can't get into as this kept happening on day two as well.
Wooga is a social games company that is mainly focused on Facebook. An important context here is that what Wooga's projects are software (as a service actually) that will last for many years and that will be maintained by many people. The kinds of processes they discussed here will certainly not work for everybody, but they will work for larger companies that can split things into small teams as Wooga does.
The title of this talk really appealed to me as I've once been on a large project that failed (badly). After seeing this I wanted to learn how to avoid this and I've learned a lot about what makes projects fail. Everyone will have a different solution to the problem of a large project and I enjoy seeing how people do this. For them, the Agile method has been the solution for larger projects. They don't favor process, but rather interaction between people. They favor prototyping over a written spec and flexibility over long reaching plans.
Everything is done as flexible as possible so there's no fixed meetings. These will be taken when required. They use no frameworks, they're not afraid to do things again, no processes and most importantly - no managers. It's all about getting the game finished, so everyone working on it has to know their part. There is no project manager that will be a nanny for them. The reason this works is that it's all kept to small teams, ideally of 5-6 persons. All team members will be in the same room, so if you need to know something, you can just ask. They meant that if a team goes above 10, you will need to add auxiliary functions such as project managers and they wanted to avoid that.
They also don't have testers for the games. The games are simply too complex, so they rather launch single features to a selection of the players and measure directly against that. They do extensive unit testing though and the tests act as their documentation. This really makes sense since maintaing both tests and documentation is a massive task that provides lots of overhead. Another reason to avoid comments are that they often become outdated and that can also cost money.
They didn't say how much test coverage they used, but they had mock classes for all the server interaction so they could work offline if required. This is done by de-coupling the Service Layer of the games. They did a bit of research on how to do this best and they found Mockito Flex http://bitbucket.org/loomis/mockito-flex/ that integrates well with FlexUnit. They also explained how this link in with their Continuous Build System (using Jenkins).
All in all, the session was a good summary of how to make Agile work in a larger organization. Many good points to take away.
Conference sessions with Seb have become something you really don't want to miss. They usually include some sort of audience participation that is both fun and technical and he puts such a large amount of work into his sessions that it's almost crazy. This years session was no exception and had required almost two months of research and hard work to make it work. So what did he do? Briefly said, he had the audience use their phones and tablets as a single big screen!
His original idea had been to do something like an Iphone orchestra, but that idea was already taken. He then got the idea that he could have all the attendees use their devices to connect to a webservice on his machine. Seb's machine would then use a high resolution camera that could identify where the screens were in the auditorium. When he knew where the machines were, he could then use these to form up a big screen that he could project things back to.
He did not want to use Flash or native apps, just the devices and a browser so it was a considerable challenge. The first problem was solving how to find the phones in the auditorium. Based on ideas from the Junkyard jumbotron, he got that working with a high quality webcam. The initial idea was to use websockets for the server communication, but it turned out that the Webkit browser on Android didn't support it. Using a small shim-swf solved that, but then there was the issue of synching all the screens together. Jobe Makar saved the day on that one and it was a really neat way he did the detection. Then there was the issue of WiFi connections... A problem at any geek conference that Seb tried to solve by bringing two Airport base stations himself. About 50 people were able to connect in the end and the result was really neat!
First, Seb made rainbow colors swipe across the screens. Next he showed particle systems and he ended off with a multiplayer Nyan Nyan Catch game. It's quite remarkable how Seb is able to pull things like this off year after year. By far my best session thus far!
Joa's session this year was essentially an overview of Graph Theory. He took the subject from it's historical beginnings with Leonard Euler and the seven bridges of Kaliningrad, right up to it's present day uses in the likes of Google PageRank. It reminded me a lot of the kind of talks Mario Klingemann used to give - entertaining, educational and hugely enjoyable.
A graduate of last years Elevator Pitch Tomek took us on a tour of his HiSlope computer vision library. Originally inspired by some of the CG sequences in Terminator Salvation he set about trying to enable facial tracking in Flash. A couple of years of development later and his framework now has a ton of features for manipulating video and webcam data.
He bravely tried to explain the theory behind facial detection. HAAR cascades, Integral image and ADABoost were all covered along with some of his own techniques for blob detection. He then went on to show some lovely interactive half-toning demos and finally facial recognition and facial estimation.
Despite the rather provocative title for a Flash conference, Remy was a super pragmatic guy that only focused on using the right tool for the job. As opposed to many html5 fans, he also had very good knowledge about Flash and what it can do.
Rem has been a HTML proponent for many years and he is also the author of one of the best books on HTML5 available. Recently he's noticed that Flash developers now want to learn HTML5. It's not themselves driving this however. It's the clients requirements that sites must work on iPads and iPhones, so Flash is not a viable solution. As an initial example, he showed an interactive site for La Senza -"the cup size choir" that was converted from Flash to html5 just to be able to show it on iPads.
He then went on to talk about Video and the video tag in html5. This really is the browser wars all over again and he showed the complexity of the current situation and a solution. He showed the embedding tags and how they work, what formats to encode to (webm, ogg + h264). He said that "If html5 video is to kill flash for video (which is a load of bull anyway), there must be a fullscreen possibility." This now exists in chrome, FireFox and Safari and a standard is evolving. The encoding is of course the issue but there are popping up services that do this for you. He showed that you can also do captioning via mediaelement.js so it's moving to the point where it really is possible to replace video in Flash. Fallback for html5 video will however always be Flash due to IE and the lack of video support in former versions. Remy showed how to solve this embedding in a standards compliant way.
He then talked about Websockets. These are cross-domain, bi-directional communication sockets and they have very low latency. They're also not supported in all browsers here too, Flash is the fallback to use. Remy then went on to talk about the Canvas element. My favorite quote was that the "Canvas is certainly the Han Solo of html5". I've long missed seeing good examples but Mugtug.com was a pretty nice Canvas based photo editor.
While Rem made it very clear that while Flash a great fallback for now, there will be a day where IE 6-8 is no longer relevant. This is very much true. He did point out though that everything Flash developers know are transferrable to html5 and JS. To highlight this, he used examples from the Actionscript TweetCoding competition and with minimal supporting JS, he was fully able to run most of the Actionscript examples in Canvas as well.
All in all, this was a really good presentation. Flash developers need to hear that their craft is going to change and Remy does not dislike Flash. Its more about plugins vs native. Html5 will never kill Flash though as many speakers on the topic pointed out. The two will co-exist but the roles with change.
Jens has been working with Flash since version 3 came out. Since then, he's been an active member of the Flash community. He's created more than a hundred Flash games (thus the name of his blog) but he also creates web/standalone applications, does workshops and other consulting. He loves playing with new technology and he is convinced that the moment you stop learning you die (creatively speaking). Jens is also the Editor of this website.