Having only started at Scott Logic in February 2017, it was great to so quickly be given the chance to support one of my new colleagues, Lead Developer Dan Cook, as he presented at Voxxed Days 2017. I attended the conference along with my fellow graduate developers Chris and Nikos, and as it was our first time at such a large developer conference, there was a lot to take in.

The bar is set

The day started with Simon Ritter giving a keynote on whether an Agile standard is possible for Java. It included an interesting history lesson on how Java got to the point it’s at today and how it might, in the future, evolve into a more Agile way of releasing new features using JDK* Enhancement Proposals (JEPs*). The audience reacted with some friction, as although it means developers will get access to new features more frequently, it also adds bureaucracy to the development process. “Are we going to switch to the next point update for this single feature or not?” is likely to become a frequently asked question in meetings, which could noticeably slow down the Agile process for developers.

It seemed most of the audience were happy with the current release frequency of JDK updates. Tools for developers should have some in-built stability, so unless the JCP* creates a safe and stable environment to release JEPs, it will probably be detrimental for most developers with larger, longer running projects.

After the initial keynote, Chris and I went to see Lucas Fernandes da Costa’s presentation on Meta Programming in JavaScript, which focused on the inner workings of JavaScript. Given that our time so far at Scott Logic has predominantly focused on this language, this talk was extremely beneficial.

Lucas provided us with a detailed illustration of how to improve performance through overriding the standard properties of objects such as getter and setter methods. The demonstration focused on adding properties to the object which served as flags to prepare the object for the subsequent operation.

An example of this is:

“basket.add(10).apples” -  where the add flag prepares the operation, which is actually performed for a specific property (apples) when that property is called (here the internal get method is overridden, hence the lack of function parentheses).

This creates a chain of function calls that is very readable and logical to understand; the same technique is employed in the Chai testing library, of which Lucas is a core maintainer. Beyond this, we were shown how to use this approach to emulate the powerful features of other languages, such as Haskell’s lazy properties and infinite sequences. Overall this provided us with a strong insight into the depth and possibilities of a language we are all still relatively new to.

The star of the show

After that we went to see our colleague Dan, who had an interesting presentation on high velocity streaming. He talked about the problems he ran into using traditional processing methods (eg collect window of data -> ingest it -> save it -> compute values from it and then send the user a signal).

This way the signal is always delayed until the next computation period, usually at the end of a measurement, meaning if you have a four-hour period, the signal you might want immediately could be delayed by four hours. You could make the periods smaller but when you want real time response, it’s simply not feasible to do it the traditional way. Dan showed us the way forward using a combination of Kafka (a message broker) and Apache Spark (a processing engine). He showed us how the data is safe, even when a sensor or subnetwork fails, and how it can scale to Internet of Things (IoT) proportions if you switch Apache Spark to Apache Flint.

After some lunch, we went to see the colourful Szymon Warda for an introduction to graph databases. He showed us how they can greatly reduce complexity in relational databases, which allows great improvements to be found in computation time. Of course, this allows more processing to be done in the same time frame, which can lead to finding new patterns in Big Data. From this he taught us how to suggest products to customers and build a knowledge database.

Following that we went to see IBM Software Engineer Adam Pilkington to learn about getting microservices up and running in no time through a tutorial. For this purpose, IBM has set up a text adventure game, GameOn, which is written as a collection of microservices. Users can navigate in a map of rooms, as well as deploy rooms, connecting their own service to the larger system that comprises GameOn. Using the microservices approach, the user is enabled to try implementing a feature with various technologies almost seamlessly, as they’re independent modules. GameOn now has an immense number of diverse rooms and loads of learning fun.

And finally, it was on to more managerial tasks with Adaptavist CTO Dan Hardiker. His presentation, A Retrospective on Retrospectives, taught us the value of being able to voice your concerns to your peers and superiors, and touched upon how the enablers of teams could be more valuable than the superstars; a principle that seems reasonably straightforward, but needs to be repeated out loud every now and then.

At the end of the day, we were introduced to many (maybe even too many?) new concepts and ideas and it piqued our curiosity and eagerness to learn even more. Voxxed Days 2017 was a pleasant eye opener to what’s happening in the industry, and to what awaits us further down the path of our careers. We hope to be able to continue to be part of events like this in the future.

*JDK - Java Development Kit

*JEP - Java Enhancements

*JCP - Java Community Process