Joy Of Coding 2015 Review

Sakis Kasampallis | Nov 20, 2015 min read
Like last year, Joy of Coding 2015 was a great conference. This year the conference took place during May, for once again in Rotterdam. The organisation was similar to that of last year: A few common talks, but also parallel talks and workshops.

The conference this year started with a keynote by Chris Granger (@ibdknox): "Programming as distributed cognition: Defining a super power". I missed the beginning of the keynote but AFAIU Chris wanted to stress the importance of using programming as an exploration tool. In that sense, we should create programming tools that make it easier for scientists to model problems and experiment quickly. His tools Light Table and Eve focus on those aspects.

Next, I watched the presentation "Joy of testing" by John Hughes. The quote of this presentation was "Do not write tests, generate them!". Indeed, using the Erlang version of QuickCheck, John showed a live demo of discovering and fixing bugs using generated tests. John also explained his personal experiences of using the same tools to discover and fix bugs that existed in concurrent Erlang production code (AFAIR the code was used in the automotive industry).

The next speaker was Laurent Bossavit (@Morendil). This keynote was more over psychology than technology. But it seems that there's a deep connection between the two. Laurent suffered by depression and according to him depression is a feature and not a bug. It is very important to be able to debug ourselves, and not just programs. We should stay away from things that make as sad and focus on the things that make us happy. As an example, you might be able to find a COBOL job that pays well, but does COBOL really make you happy? Maybe a job with a lower salary but more fun (think of python, arduino, etc.) is better for you.

The next keynote was about "Mutation testing" by Roy van Rijn. Roy believes that mutation testing, a technique for measuring the quality of unit tests, is better than code coverage. There's an actual Java tool that can be used to explore this area: Judy. A mutant is a version of a program with a modified operator. For example replacing logical AND with logical OR. Killing a mutant means that the incorrect behaviour of the modified code is detected properly and reported, and that's what basically Judy does. I've never tried mutation testing. Maybe one day I will...

I enjoyed the next talk by Crista Lopes (@cristalopes) a lot. Crista is the author of a really nice programming book that anyone who is involved with programming should read: Exercises in Programming Style. The book uses a simple concept: Implement the same program using the  same language (Python) in 33 different styles! A style is basically a form of a programming paradigm (think of object-oriented, functional, procedural, etc.). During the talk Crista demonstrated a subset of the 33 styles of her book. The purpose of Crista's talk (and AFAIU that's also the focus point of the book) was not to compare the different styles and take sides, but to stress the importance of recognising and understanding the different styles. I can't agree more. There's no best programming style for all purposes, and we should be able to work with all of them. BTW there's a GitHub repository with the styles.

The workshop that I picked for Joy of Coding 2015 was about "Property based testing", by Marc Evers, Rob Westgeest, and Willem van den Ende. Property based testing is about the automatic generation of unit tests for a system by describing its properties. The benefit of using property based testing instead of unit testing is that it (a) takes less time since the tests are generated, (b) is more reliable than manual writing since humans tend to forget to cover all possible cases.
During the workshop we used Javascript (NodeJs and JSVerify) and went through several examples.

The closing keynote couldn't be better. A mix of jokes and programming advices by Kevlin Henney (@KevlinHenney), by checking nice (and not so nice) pieces of code written by various programmers in different languages. Studying code written by others is something that is important and we all need to do.

Yet another good year for Joy of Coding. I hope that it will continue to use the same successful recipe in the years to come... :)