Montag, 26. Oktober 2015

A Backend Dev's Travel to Frontend Land a.k.a. Me @ Smashing Conference 2015 in Barcelona

Now this must seem pretty weird, what is a backend developer fossil doing at the conference of one of the most reknown frontend technology magazines?

The answer is simple, seeing what those pixel pushers are actually doing ;-) Or on a more serious note, trying to broaden my technological horizon, whereas I did not expect to understand very much. But you got to give it a try :-)

So first off, the choice of Barcelona to hold the conference was awesome. A very lovely city, great food, nice weather even in October and open and friendly people. On top, the conference venue was the Palau de la Música Catalana, an old and very impressive concert hall in the
heart of Barcelona.


The Palau's east corner.

The small café, later used for refreshments.

Stair case to the conference hall.

Inside view of the conference hall.
Ok, let's talk business: 

Day 1


Chris Coyier - The Wonderful World of SVG


Well, SVG is nothing new as Chris points this out himself, but still it is underused in most web applications, which is a shame. Chris shows the beauty and simplicity of SVG, how to use it and also what you can do when you have more complex needs (e.g. using defs and use directives to allow reusability). It was a very enthusiastic talk, entertaining and informative. One of my colleagues fired up an SVG editor and didn't stop playing around with it for the rest of the conference ;-) So this was definitely a great start and got me excited regarding the upcoming talks.

Jina Bolton - Living Design Systems


Who doesn't know this kind of problem? There are style guides as PDF or maybe even DOC stored on some network drive, most often in different versions without proper time stamping or even worse just some print outs on a wall in some designers office. Noone really knows what version is the current one, none tells you when it changes etc. The result is an inconsistent user expirience despite an usually high maintenance effort. Jina showed us how they tried to tackle those difficulties at sales force.

In summary they used a technial approach to maintain the style guide, a json format which is then processed by a self built tool that translates it into different technologies like sass, less or even android layout information. A key to that was active and intense communication with all involved parties and to have the designers to actually work in the browser and not just using photoshop to define the style guide.

Talk and topic where both very interessting but adopting this approach for a regular company will probably prove rather difficult. Especially getting the designers to forsake their precious photoshop might be almost impossible in many cases, as it would require the designers to actually learn html and css. Nevertheless I hope this methodology finds it's way into more companies.

Patrick Hamann - Embracing the network


Uhh yeah.. Network!! Finally something I can really relate to ;-) This was a very enlighting and amusing talk about how network failure can impact browser applications and not only with the all to common absence of data or some "request failed" message. loading of ads, tracking scripts or even fonts can result in a broken or even unavailable page should the requests for those resources fail.

Patrick gave a good overview of how to avoid having your site broken by some external dependency, e.g. always use proper timeouts, make sure you really need what you are loading, use asychronous loading etc. But also what you should do proactivly, disable Javascript and then see hwo your site loads/performs without, what works what doesn't, use SPOF test which are available on pages like webpagetest.org.

Very good talk, very cool topic. Enuff said!!

Seb Lester - Peace, Hellfire & Outer Space


Woah, what a title.. But who is this Seb Lester? I had absolutely no clue what to expect here and I was very surprised when I was presented with wide range of drawigns,paintings and mostg of all calligraphy of all sorts. I got to hand it to Seb, he is one heck of a talent there and once in a while he even threw in the occasional joke. But in essence this was just a listing of his different successes in artwork for an impressive list of clients /(the coolest IMO the NASA for their SWOT project). I still fail to see what this has to do with web development or even web design, as there was nothing you could take away from this talk. Apart from that to become leading in your area of expertice you do not only need talent but also dedication and maybe to some degree obsession for what you do.

The talk itself was also more like walking through a check list. First he showed the agenda "First I will tell you..., then I will show you..., then I will tell you..." and then stoically going through that list. Most of the time he seemed rather anoyed with "having" to give this talk and he was the first who seemed upset/impatiant during the following Q&A session with Vitaly.

I am sorry but this was the low light of the conference and this talk seemed totally out of place to me.

Joe Leech - How to design with science without loosing the magic


What works and what doesn't? What do you have to consider when you want to convince your audience? Simple and obvious questions with tricky and complicated answers. Joe shared his experiences from a lot of different projects with us, The essence was, if you want to make the sell, make your images big and shiny and do not put too much magic into the user interface or the client will be confused, As an example for the last point he referred to a case where a project used the users credit card number to automatically display the card brand (VISA, AmEx, etc.). This can be deducted from the first numbers of any card which means there is absolutly no magic involved, but many clients thought that this information was somehow obtained from their personal data which lead to a drop in sales.

I wonder why you could not put a short explanation next to the credit card brand, but there where probably reasons for it. Joe's conclusions, as much as I might not like them are surely valid and show the sad but undeniable truth about humans.. we are stupid ;-)

Brendan Dawes - Paper, Plastic & Pixels


Brendan gave us a thourough overview of his past work, many different ways of visualizing data and innovative approaches for physical user interacttion. Even though this was another simple listing of "what" was done, instead of showing techniques of "how" to do things, it was inspiring. Also in this case the "how" was always different, always a result of creative thinking out of the box. So that would be VERY hard to give instructions for ;-) I can only recommend to check out the presentation as it would be useless to describe the different visualization approaches, it is well worth the time.

Day 2


The Mystery Speaker... Bruce Lawson


This year's Mystery Speaker is one of the people behind the Opera browser and his enthusastic talk covered a lot of ground. Starting with web components vs installable webapps, passing over the difficulties when trying to define a web standard to the process of how to get a new feature into the html standard. As an example for the latter he gave how responsive images found their way into the browser. This was an interesting insight how browser development works and how browser developer think.

Anna Debenham - Game Console Browser


Anna basically gave an overview over what browsers are available on what console, what those browsers can do and more importantly what they can't. Also she showed us what challenges web page design for those varying displays hold for us and, at least for my part, managed to raise some awareness for it.

I must admit that the practical relevance of this is still kinda minimal, but I am also sure that in the next 5 - 10 years this will become rather important and so we should take up on this opportunity to make up our mind about it.

Zoe M. Gillenwater - Enhancing responsivness with Flexbox


Well, this was just Flexbox in depth! How you use, what it does, what is the difference to other layouts, what are the benefits, how you make sure a fallback is used, etc. 

Everything came with working code examples, plain and simply hands on stuff. And I LOVED it!! Mainly because it was nice to see actual code for a change, as opposed to concepts and theories as before. On the other hand this means I cannot say any more about it, apart from: Look for the slides and checkout Flexbox if you haven't already!

Espen Brunborg - Graphic Design in the 21st Century: Is the internet killing creativity?


I must admit, after the first 5 minutes into this talk I thought "Oh my god, this will be an hour of useless whining - shoot me now!" But I was wring.. UTTERLY wrong, as it turned out to be one of the best talks of this conference.

Espen's point was twofold. For one he pointed out, that creativity in the web indeed seems to have gone into hiatus. Most web sites look the same, with similar layout, almost identical look and feel and basically looking like copy cats of each other. He made a very strong point to dare trying new, creative and maybe unconventional approaches. Designers should take pride in what they create and try to make something unique. 

The second part of his talk was related but still something different. His point was that designers restrict themselves too much with so called "rules" of what must be done and what mustn't, examples for this are the dreaded parallax or the often shunned carousels. Espen's response was "I use those" and he showed the audience where and why he did use those elements. And he has a point, there are cases in which all of those things make sense and thus can or maybe even should be used. Cases in which they emphasize the message of the site or even improve the user expirience. His bottom line was, that you should not blindly follow every rule that is out there because if you do you can't do anything useful, instead think for yourself and decide what to use and what not. And if someone disagrees, well that can always happen. But if you are convinced that your's is best approach, stick to it!

Zach Leatherman - A brief history of that time you used web fonts


Here Zach told us a lot about what is good about web fonts and what is bad, or rather what many people do wrong when using web fonts. This had a lot of overlap with Patrick's talk from Day 1, but covered the fonts aspect way more indpeth. His main focus was the importance of font loading strategies and what can go wrong if you ignore this point, which can even lead to our web page being unable to render. He showed us how FOIT (flash of invisible text) and FOUT (flash of unstyled text) can occur and how you can deal with that. Was very interesting and you should definitely checkout the slides.

Andrew Tider & Jeff Greenspan - We'll teach you everything we don't know


Well, what can I say about those two? They are crazy and did crazy stuff during their carrers ;-) Starting with plush toys of sexual techniques over a sound prrof booth where you can shout at George Bush to a statue for Edward Snowden in Central Park. 

They spoke about how they started their projects without having a clue how they will turn out or most of the time not even knowing where to start. The essence was that you have to believe in yourself and your idea and that you have to dare to go down an unconventional path, maybe even walk the line of legality. Think out of the box and don't wait for miracles to happen, make them happen!!


Andrew Clarke - Counting Stars: Creativity over Predictability


So, the very last talk of the conference. I was curious what gem the organizers had saved for us. Weeeelll.... I would say the summary of this talk would be like the first 10 minutes of what Espen spoke of earlier. Creativity in web design runs low and designers should create new and original pages again. Something they can be proud of instead of just copying what others have already done.

Yet Andrew managed to drag this point on and on for 50 minutes boring the hell out of the audience. And just have to point out the irony of holding a talk where you complain that people just copy instead of create and then have about 50? slides each one having just a quote of someone else. There was actually exactly one slide that did not have such a copied quote and that one had a quote of himself. Sorry but quoting yourself in a talk is pretty lame. 

So this one was a huge let down and it seems Andrew noticed the audience's disapproval because he was extremly rude during Q&A.


Summary


I did really enjoy my first Smashing Conf, the overall level of talks was good with the occasional crap in between that you just cannot avoid. Nice location, some goodies and tasty catering.

It was a bit of a pity that there was no lunch served at the venue, so every group wandered off on their own but understandable that you cannot do that in such a location. It was also a bit unusual for me that there was only one track, on the one hand you don't miss anything but on the other hand you have no choice what to hear. Not sure if that was good or bad tbh ;-)

I think I could have done without the Q&A which often resulted in a chitchat between Vitaly and the speaker but I heard from others that they liked it. So I guess everyone has to see that for himself. 

I would also like to point out that the party on the first evening was held in a nice venue, the Estrella brewery with great catering. I think it might have been a bit better if there had been bistro tables to allow people to mix up easier and maybe not only have beer and water for drinks, but hey nothing is perfect ;-)

Sonntag, 22. Dezember 2013

Dark Elf Painting Finished

So I finally managed to get my Dark Elf team painted and I must say I am kinda happy with the results. Of course any pro painter would just laugh at it but hey, it's still the best I managed so far ;-)

The color theme is Naggaroth Night, Xereus Purple, Hoeth Blue and Shining Gold. So rather traditional for this kind of team. As always painting the eyes has been the most pain for me and only for the Witch Elves it turned out okayish, so I still have a lot to practice in this area. Also I could not be arsed to bother much with high lights and shading but I will tackle this with the next teams.

This has also been my first project where I used electrostatic grass and I think it looks pretty neat. First the bases have been flocked with brown acre and then another layer of glue and grass finished it off. That way in some places you can see the sandy ground and hopefully this does not mean I have to replace all the portions of grass the minis will loose over time.

Finally I added two layers of spray varnish, first glossy then mat to preserve the color as good as possible.

And yes, I really need to get a better camera for future pics ;-)




























Montag, 30. September 2013

Iterating in Scala Play templates and Reverse Routing

Today I finally solved a puzzle that bugged me for the last few days and even though it is in some kind a case of RTFM I decided to put it here because someone else might encounter the same problem

Play has pretty powerful templating engine that allows you to do lots of different stuff when generating html. Two of those features are iterating over lists and genrating URLs by reverse routing.

My problem was that in my template I was not able to get a URL out of the reverse routing and at first I thought there was a mistake in the routes configuration or in the template syntax and searching the web and documentation for it drove me almost mad.

The solution was something completely different though. In a template you can basically inject any Scala code fragment which also includes flow and control structures. The documentation about ScalaTemplating states that you can use a for loop to iterate over list items but the framework also allows you to use the map function of a list to process it's items. The code compiles, the page gets rendered without warnings or errors and everything looks fine at first. But if you want to insert a link generated by reverse routing for each item you are screwed with this approach. For some reason the reverse route does not get generated in this case.

@items.map(item -> {
     <a href="@routes.Application.index"></a>   <-- Creates <a href="@routes.Application.index"></a>
})

@for(item <-items) {
      <a href="@routes.Application.index"></a>   <-- Creates <a href="/"></a>
}

So to sum it up: Always use "@for" to iterate in Play templates to avoid stuff like this. Though I don't really get why it has to be that way...

Mittwoch, 12. Juni 2013

Constant Tarfiles For Resumable Downloads

Our Situation

 

We have an Java based backend server providing daily changing content to mobile applications as a gzipped tar archive. The content can change over the course of the day and some applications need to download the complete content in the new version, while others need to get the diff between some versions. In addition old content from previous days has also to be available in all those variations. That means it is not really feasible to have all possible different tar files pregenerated and stored in our backend (yes Hadoop and friends stand ready to help but at the moment this is not an option for us for several reasons).

So what we do is, store the different versions of our content, calculate the needed tar files,  deliver them to the requesting app and put the file into a caching server to reduce load but of course we cannot cache everything permanently so the entries timeout from time to time.

 

Our Problem

 

Some applications reported downloading issues that we at first blamed on general mobile network issues but after a while it became evident that there was more to it. After some debugging on application side it seemed that in some cases the app was not able to resume an interrupted download due to the checksum of the file having changed.

 

The Underlying Cause

 

This issue was quite a surprise for us as we were sure that for every kind of request the corresponding file was created from exactly the same content every time. But by bypassing our cache the effect could be reproduced immediately by downloading the same file twice from our server. The mighty diff tool told me that the two archives differ even though their extracted contents did not (phew...).

My first suspect was gzip and a quick Google search brought up some hints about the gzip timestamp header that is contained in the first 10 bytes of an archive.So I fired up my hex editor to check the starting sequences of the two files only to be disappointed because they were exactly the same. Having a look at the libraries source code of GZipOutputStream (we use the Apache compressor lib) revealed that this implementation sets a fixed timestamp for all gzip archives (all fields are set to 0 whch I think is the right thing to do).

Looking at the differences of the archives in my hex editor and matching those against the tar rfc docs it became clear that the culprit was the mtime header for tar entries. In our code we construct the tar entries using the filepath and then add bytes from a stream to it. The invoked constructor sets the entry's mtime to the current time so it is different every time the archive is created. Eureka!!

 

The Solution

 

Now that was rather easy to fix, we now calculate a timestamp value based on the date the content was created at, with a few tweaks, that is constant for each single file and set that as mtime for each tar entry we create, et voilà :-)

 

Sometimes They Come Back

 

A few weeks later we got reports about some strange download issues again, this time with only with certain content packages and it was absolutely not obvious where those came from. We had a lot of red herrings to hunt and during one of those hunts I noticed that files that should be identical in some cases simply weren't. Again diff and hex editor came to the rescue and I found that for some entries the mtime headers again did not match!!! So we got down on the code again... Did I forget to handle any tar entries? Nope, everything was covered... Any issues with entries being added twice or changed in other methods? Nope.. nothing.. In addition after extracting the tar all files had the desired timestamp, no sign of the other timestamps at all.. Oh how I swore...

So back to checking the archive contents.. then the tar docs.. and again the archive contents.. finally I found a clue, a classic tar entry has only 100 bytes reserved for it's name field which contains not only the file name but also the complete path to the file within a directory hierarchy and the offending files lay within a rather deep directory hierarchy and had pretty long names itself. To change my suspicion to certainty I added a copy of a file with the correct timestamp to the content and altered it's name to exceed the 100 byte limit. In the resulting tar the copy again had the invalid timestamp and just then I noticed something else, for the copy's name there were two header entry's while the original file only had one.

So I did more research about long file names and header fields and dug into the code of the TarOutputStream class. To handle long file names tar can use additional posix or gnu headers and in both cases the TarOutputStream creates additional tar entries using the same constructor as we did in our code. So if you have long file names in our archive it will contain additional tar entries that always have their creation date as mtime header value!! Oh man, that was mean..

 

The Solution - For Real This Time

 

The only way to fix this was to copy the code of TarOutputStream to our project (and TarBuffer as that class is a dependency of the former with default scope) and adjust it so we can set a custom timestamp for the additonal entries.Not my favorite way of fixing things but unfortunately we had no other choice here... So beware of tars with long file names if you need to rely on the checksum..

Montag, 27. Mai 2013

Siringit Tantor Painting

After a rather long time I finally got around to use my pretty limited painting skills once more, this time on an Elfball Siringit Tantor.

Even though this is by way not as good as most other painters would do I still feel happy about getting it done. It took me only about two days which is almost lightning speed for me and it looks almost half as good as I had hoped ;-)

Front


Back

Left Side

Right Side

Mittwoch, 3. April 2013

Devoxx UK 2013


This year Devoxx came to the UK for the first time after having a record of rather successful editions in Belgium. After failing to attend the Devoxx in Belgium for a few times due to loaded work schedules at the end of the year I thought why not try the UK edition in March, so this year was my first Devoxx as well.

 

General stuff


I must admit as it was the first UK Devoxx I was expecting a lot of issues and stuff going wrong, as it usually happens when an event gets organized for the first time. But to my pleasant surprise the whole event went very smooth and it was over all a lovely experience so I will definitely try to be back for the next editions. It was noticeable that the organizers put a lot of effort as well as sweat and tears into everything and that they really cared about it. We had some sponsor booths that handed out goodies, some raffles (I even won an infinispan book at the red hat raffle ;-)), free wifi (yes, everyone takes that for granted nowadays but still…) and an app to plan your talks, the latter was a bit buggy though but that was fixed for next year, so it is also a plus for me.

That said there are also a few things I think could be improved or suggestions that came to my mind and that I would like to share here. What bothered me somewhat was for one, that one BOF almost did not happen as the responsible speaker just did not show up. BUT cudos to Dan from the organization who took a few minutes of his time to get the group started about what a BOF is about (mainly more a big discussion among everyone who showed up rather than a regular talk) so we put up a list of questions and issues and just went from there. The other thing that pissed me off a bit was that the abstracts of the talks quite often did not resemble what the speaker really spoke about in the end. Quite a few times the topic form the abstract was done within 5 minutes and the rest of the time was spent on stuff related to it and even though it was usually also interesting it was not what one expected and it is annoying when you realize that 20 minutes into a 50 minutes slot. And yes, I am aware that this is a common problem at conferences but hey, it can’t hurt to mention it ;-)

Regarding suggestions the following things came to my mind:
  • Put the wifi access data into the welcome package
  • Try to have more power supplies in the talk rooms for people that want to try out coding examples on the fly because recharging in the breaks is usually not sufficient
  • The website did not say too precisely what kind of refreshments would be available for free and which ones would be sold (at least neither I nor my mates knew about that) and free tab water would have been cool (or did we just miss that?)
  • Maybe don’t shut down the wifi as soon as the ending keynote is over ;-)
  • The Quickies on the first day really cut into the lunch break and in order not to gulp done your meal you had to skip one of them while on the second day there were only half as many  and in general longer breaks. Would be cool if that could be evened out a bit in the future
  • Lunch was a broad variety of sandwiches, wraps and bagels so I think everyone found something suitable but the fact you had to give away a lunch coin when picking up your meal caused people to stack up their plates quite a bit and I am sure that not all of it was eaten in the end.
I know that all of that is nothing crucial and as I said before it was a nice conference and everyone should consider attending in the future. Oh right, move the date to summer!!! ;-)

 

Day 1

 

Keynote


Not much to say here, nice introduction of the team and the obligatory Queen joke that did not catch on much. Then there was a humorous talk by Kevlin Henney about the everyday life of programmers and developers with some funny analogies etc.

 

Continuous Delivery – David Farley


Good introduction talk about CD and even though I am familiar with the topic it did help to reiterate over the concepts and think about how they can be applied to your current work. The things I remember most are:
  • Do the difficult/annoying stuff as often as possible so you get better at it
  • Use the same deployment mechanism for each environment, something that we do only partially right now
  • Automate as much as possible
  • Everybody is responsible to get the stuff done
Especially the last point got me thinking what we can do at my work place. If you have external client applications that depend on your backend and that run on certain mobile devices you have to use those for your acceptance tests and this cannot automate those at least for new features.

 

Banking, how hard can it be? – John Davies


Somehow I was hoping for a bit more in this talk. Basically John pointed out how hard it is to establish new technologies in a large bank or any other big company. The sheer amount of Oracle databases that where in use at that particular bank was quite overwhelming (several thousands) and the idea you have to migrate all of them kinda blew my mind. All in all it sounded like an overly complex environment and the migration project was surely a huge effort. Also interesting was the fact that the FPML data structure in use in the banking sector could not be simply thrown at regular ORM tools like hibernate because those would generate 1700+ tables. He then did show some in memory dbs that they used instead but I must admit that I don’t remember which ones because it just was not very important to me.

 

Intro to NoSQL for busy developers (Quickie) – Trisha Gee and Kim Ross


Trisha and Kim gave a brief overview over the different types of NoSQL databases:
  • Graph
  • Document
  • KVS
  • Column Family
  • Sorted Maps
Also some typical use cases for a few of those and how eventual consistency works. This talk got me thinking if MongoDB was the best choice for our use case, maybe Riak or some Column Family database would have been more suitable.

But what I want to point out the most is that rhetorical this was an extremely pleasant talk, Trisha and Kim created a very comfortable atmosphere and it was just nice to listen to them. That is not a given at tech talks ;-)

 

Applications’s development using JavaFX2 – Thierry Wasylczenko and Jim Weaver


Now this was one I put great hopes in, I knew Jim Weaver’s book on JavaFX from a few years back and figured he would give some insights on the changes.  Thierry’s part was okay information wise apart from that he did not intend to give a demo of the visual editor even though that was announced in the abstract. Jim then said he’d cut his part 5 minutes short so we can see that demo, nice gesture but should not have been necessary in the first place. The downside of Thierry’s talk was that it was really monotone and hard to understand. To me it seemed that he had not much talking experience and I hope he does practice on that some more because I guess he could become a good speaker with his technical knowledge. So Thierry, if you read this, consider it an encouragement ;-)

Then Jim took over but not with much JavaFX stuff but instead he was talking about Java 8 features like Nashorn support, Websockets and web workers. All in respect to how they can be help with JavaFX development but still it was not quite what I was hoping for. But of course it was a good talk, so I am not unhappy with it.

 

Stop doing retrospective and start your Toyota Kata – Mattias Karlsson and Hakan Forss


This one was something different. Mattias and Hakan prepared a dialog where Mattias acted as a scrum master and Hakan was Kata coach that gave Mattias an introduction and they went through a typical Kata cycle together. Even though both were clearly not actors and should not try to become ones it was very refreshing and also entertaining.

Kata is a method to improve your processes in a continuous way. You first have to find out where you are at and write down your current state then you set a vision that should be quite ambitious as well as a set of target conditions that are some kind of intermediate goals you want to achieve. For a cycle you choose a target condition and how to reach it, that is your challenge. That is the improvement Kata. In the coaching Kata you then do some kind of mini retro to see what you accomplished and what problems you have. The cycles can be quite short, maybe even one or two days.

 

Hitting the limits of your hardware with Java – Peter Lawrey

 

Okay, this one was a disappointment, sorry I have to say it so harsh but that is how I feel. The sad thing is, that Peter Lawrey does know his stuff but in this talk, sheesh. First of all it was very hard to understand him then he did not really cover the basic problems a programmer should be aware of or how you can help with proper coding to avoid hardware limitation issues. Instead he did show slides with some performance tests he made and the resulting graphs. Also some graphs of performance issues and the audience had to guess what caused the problems. And then after 20 minutes (of a 50 minutes slot) he ended his talk for questions. The questions were then not even repeated aloud so that everyone knew what they were talking about. Well... enuff said..

 

Lambdas and Collections in Java 8 – Maurice Naftalin


Simply a good talk. Covered the basics of lambdas and how they can be used with collections for efficient coding. How and why the boilerplate parts can be omitted, what map reduce is about plus Guava features like Optional and Predicate that are part of Java 8. Pleasant to listen to, so nothing for me to moan about ;-)

 

Beyond Beauty: JavaFX, Parallax, Touch, Gyroscopse and much more (BOF) – Angela Caicedo


This was basically how you can get a pseudo 3D illusion with motion sensors to run on Raspberry PI with JavaFX. Well, it was not that much FX stuff in it, and most of the time was spent on the hardware spec of the PI and how sensors and signals can be read on pin level. IMO that was not too useful especially the latter as all of that is abstracted by the PI4J lib she introduced in the end. But it was a nice demo and it was obvious she knows her stuff. As that BOF ended early I staggered into another one of the same slot.

 

Is NAO your robotic overlord? (BOF) – David Snowdon


NAO is very impressive small robot, but this just seemed like a product demo, so no conference stuff IMO.

 

Get your head around git, Team Collaboration – John Stevenson


Now, John did not show up, no clue why. But Dan from the organization team spent a few minutes with us and got us started. We put down some questions people had and tried to answer them in a group discussion. Two voluntary helpers where also there and those had some git experience. I myself have only used git-svn until now but to my surprise this meant I had the third most knowledge on this subject in the whole group. But it was an interesting discussion so now time wasted for me.

 

Opening the hidden door: JavaFX development everywhere (BOF) – Angela Caicedo


So we met again ;-) This time there were only 4 people in total so we got together at a table and Angela gave a short presentation how packaging and development works with JavaFX. Of course I had some things to complain ;-) Like finding out in what mode you are, embedded or not, depends if the main routine gets a stage object handed to it that is something that should be abstracted by a static method call returning an enum. But it was informative and as such a nice end for the first day.

 

Day 2

 

Creating Games with WebGL and Three.js – James Williams


Cool talk. Gave a good overview of what WebGL can do, where it is supported what the drawbacks are and how Three.js as an abstraction layer can help to immensely reduce those by wrapping a lot of stuff. Gave me the urge to check it out and toy around with it.

 

Getting started with Websocket and Server-Sent Events using Java – Arun Gupta


Even though it took me some time to get used to the Indian accent, this was a solid talk. We saw detailed examples how Websockets and Server-Sent Events can be implemented, what client requirements they impose and also a working live demo. Kind of obvious but still worth to mention are the main differences between the two technologies. Websockets are truly bi-directional but require special browser support for it, while Server-Sent Events can be implemented using plain HTTP and thus can run on any browser but only provide one way communication. Websockets provide mapping functionality for JSON, binary and other request types and parameters are typed according to their position. I am sorry I don’t have much more to say here because this talk was surely a good one.

 

Dark Side of Agile – Mazz Mosley


Mazz spoke about her experiences with a large agile team working on the UK government website and what problems she witnessed. Sadly she did not provide any new insights or yet unknown solutions, it was more stuff that everyone with project experience already knew. Like that it can cause problems when the team is growing too fast, that documentation is essential but must not be overdone and team spirit is vital to success. But what I like was the way she presented her talk, very solid speaking, funny anecdotes and nice to listen too. So I hope to see her at another Devoxx again, maybe with a more complex topic.

 

What do you mean, backwards compatibility? – Trisha Gee


Now this topic sounded extremely interesting, finding new ways to change APIs without breaking the clients is always useful and after Trisha’s first talk on Day 1 I was really looking forward to this one.  Unfortunately the backwards compatibility part was done in five minutes as the original driver did use the wrong package namespace “com.mongo” instead of “org.mongo”, so the new API simply uses the new namespace and the old API can still coexist. Well, that’s what I call a disappointment. At least the talk itself was entertaining and had some interesting bits of information about the monog project itself. But still if I had known beforehand I would have chosen a different talk for this slot.

 

Does your WAR resemble the world’s largest bowl of spaghetti? Enterprise OSGi can help – Holly Cummins


Entertaining, solid talk about the basics of OSGi. While we have quite a few visibility mechanisms inside JARs etc. there is nothing like that on the level of JARs itself so the classpath gets rather polluted by all classes of all JARs even though only a few should be exposed. Also searching for classes throughout the complete classpath is a bit tedious. OSGi provides encapsulation for JARs and also has a graph like classpath structure. In addition OSGi modules can be removed, added and updated without any need to shutdown the virtual machine. So it could be a nice addition for many large scale applications but on the other hand you first have to modularize them properly. But maybe I get a chance to try it someday.

 

Introduction to Riak – Chris Molozian


Usually I don’t like product presentation talks but the NoSQL intro the other day got me interested in this topic so I figured I’d give it a try. As expected Chris focused on the key selling features of Riak but who can blame him for that ;-) The ones I found most remarkable are:
  • Data is stored in logical buckets using hierarchical structured names for faster lookups and query optimizations
  • Patches to the Riak engine can be deployed without downtime
  • There are no slave nodes and so you can issue read and write requests to each node
  • The interface is HTTP based and thus requires only very loosely coupling to application code
But on the other hand there were also a few drawbacks:
  • You have to run at least four nodes in a Riak cluster, recommended would be five
  • Conflict merging in case of data inconsistency seemed a bit strange, but maybe I just did not get it
  • A deleted record can still be read for a few seconds <- eventual consistency is not for every use case
The talk in general was okay and it seemed that Chris knew what he was talking about while he took on all kinds of questions.

 

Security in the real world – Matt Kilner


Matt gave a nice overview over the latest Java security issues and how they were caused by sometimes minor changes. Like changing the visibility of field in the ToolKit class gave way to the critical security hole of running any native command from a Java class taking advantage of the exploit. Another interesting point was that fixes cannot always be applied easily because the fix would break something else. Details about that can be seen on the slides to this talk and sure are worth a look. At first I had the impression the talk would also cover how application development should take security into account but that was just a misunderstanding of the abstract on my behalf. It was obvious Matt knows his stuff but I hope he gets some more speaking practice in because he did not seem that comfortable or used to speaking in public. Once he gets the hang of that I am confident his talks will become very popular.

 

The Future of Agile – Nigel Runnels-Moss


Oh boy... what can I say… When Nigel announced that he was hijacking this talk to speak about something else I should have just left but for some reason I never learn and always hope for a happy end. Man that was mistake.

Basically this was a “Why managers suck and are responsible for the death of our industry” rant, backed up with diagrams showing data of unknown sources that he drew questionable conclusions from.  Summing it with “this is intentionally provocative” did not help much IMO. Granted some aspects of the talk did make sense but those were rather quotes from books he referenced, e.g. managers are usually bad at what they do because as long as they do well they get promoted until they are above their level competence. But still it seemed as if he just held this talk because he likes to hear himself talking. Which he btw did… very slowly… by always making... pauses after… a few words… as if he was... reading to a child… Well, sorry to say but I just did not like that one, even though others seemed to enjoy it.

 

Summary



As I pointed out at the start of this rather long post, I did enjoy the conference even though there were some issues. Of course not all speakers are world class with a huge list of references and recommendations but that does not necessarily mean they are not good. And even if you get one or two not so good talks… that can happen at any other conference as well but with the cheap ticket price Devoxx offers one of the best values for your money you can find. So go and sign up for  next edition!!