imgDevoxxUK 2018 crew. ⓒ DevoxUK - source https://www.flickr.com/photos/125714253@N02
OK it is the end of July and this post is long overdue - DevoxxUK 2018 was in May. But it would be waste of my notes if I don’t post it. Unfortunately (not really), other commitments - I’ve started learning JavaScript, nice weather, and gardening season took priority over it. I have covered the first day of the conference, which was a workshop day, in an earlier post. Here, I will summarise my take off from the talks I have seen on Thursday and Friday. All of them are available on Devoxx official youtube channel.

Mark Reinhold “Java 2018: Change is the Only Constant”

Who can better explain recent changes in Java than Mark Reinhold - Java Chief Architect at Oracle? I think Mark is one of the best people to provide a rationale behind these changes and he did it quite well. Mark’s main point was that Java needs to change and move forward faster. Why? Because its competition moves faster. Java 9 brought drastic change - modularity system, which has broken few things. That is something radical for a platform which is known from its backward compatibility. The reasoning is that modularity is more suitable for the world we are living in now. The world of containers and microservices. Modules will allow for smaller images by tailoring Java to your needs.

Java 10 is the first release with 6-month cadence. It means, we will have a new version of Jave every 6 months. Java starts moving faster, especially when compared with previous releases cadency. And because of this, a whole Java ecosystem needs to move faster. Are we ready for this? Are we ready to have only 6 month official free Oracle support for each new release? I think many slow, conservative Java shops will struggle to hold the pace. And they might need to pay Oracle for extended support or switch to OpenJDK for a long-term support.

From other news - I’m quite excited that Oracle has open sourced Java Flight Recorder (JFR) and Java Mission Control (JMC).

The Mindful Developer: The Neuroscience of Stress Management

A great opening keynote from Matthew Renze about stress, which looks like an integral part of a Software Developer life. The talk is a personal story of a developer who realized one day how stress has affected his life and health. It is a story of fighting back to hold stress under control. I think the talk is great, because many of us are afraid to talk about things like stress or think that we are free from it. And Matthew is brave not only to fight it but also to talk about it.

I can identify with Matthew. For the most of my professional career, I was doing jobs which were not intellectually demanding. One of the things I struggle with, since I switched my career to Software Development, is to give my brain a rest from thinking about the coding. My dreams (nightmares?) are often about writing the code.

I recommend this talk as Matthew approach to this problem was the same as Software Engineers like to tackle problems. Pragmatically. Find the cause, understand it and develop a solution to it. Although he focuses on mindfulness techniques, there are also mentioned other things we can do, for example, eat healthier, or exercise.

Security loves Dev. Healing misunderstanding gap

The idea of the talk is brilliant. Two professionals Siren Hofvander - Security Officer and Johanna Larsson - Software Developer show how they try to make writing code and make it secure work together. It is difficult to connect both worlds because we have often different goals. We, Software Developers want to make that new shiny feature. We even test it if it meets all criteria, but often we don’t think if it is secure. And there is Security Officer whose job is to say “no, you can’t do that, because it is not secure - read this whitepaper why”. How to bridge this to worlds? By mutual understanding. Software Developers should better understand security and Security Officers should show some love to us.

This talk is an attempt to build that bridge. And I have to say the form is appealing, because it shows both sides. However, I would like to hear more from Johanna (Dev). It might be subjective, as I am also a Software Developer, but I had a feeling that she was dominated by Sirene, which of course is a more experienced speaker.

I would also like to highlight “triangel” issue here. Please don’t be that guy. There are better ways of giving a feedback than saying in a room full of people “it is important to spell triangle correct”. And I cheered Johanna when she killed the guy and helped Siren to deal with that minor spelling mistake.

Functional Groovy

The functional programming became a popular paradigm as it helps write more elegant code. As such, more and more languages, even if they are not purely functional, start to offer a way to write code in a functional manner. Paul King shows that Groovy is a part of this growing family. Groovy is a JVM language and it supports functional programming through features introduced by Java 8. Groovy also provides its own way of doing things functionally. I have no knowledge of Groovy and I know basics of functional programming from Clojure and Java, just happened I was assigned to this room as a Devoxx crew. But if you a Groovy developer, or someone who want to learn it, this talk will give you an idea of how to program functionally in Groovy.

One size fits all?

Diversity - an issue which hurts our industry. Unfortunately, software development is dominated by white males which limits our perspectives. Ixchel Ruiz shows reasons why diversity is important. And not only from a traditional perspective of race, gender, or ethnicity but also on age, character, or personal traits level. She makes a valid observation that when interviewing candidates for our team, we are looking for “clones” of us. Often, even unconsciously, we rate higher people with the same hobbies and the same character. If we are great, then they must be great as well. This might look like a good idea at first, but it is not. By building our teams as the groups of “clones” we close ourselves in chambers, we are separated from different perspectives. If we have diversity in our team - different people, with different backgrounds, experiences, characters we enrich the team with fresh ideas. These ideas would be lost for us otherwise, as they are outside of our limited “scope” as individuals. If we work in a group of similar people we will come up with similar ideas.

I agree with the point brought by Ixchel, and I believe that knowing the history, why we have this situation as a profession, is a first step to fix it. Recently I have read a great book from Mar Hicks - “Programmed Inequality”. The book documents how the government policies from early and mid 20 century lead to it. No spoilers, but after I’ve finished the book, I definitely have a better understanding of why in my university group only 3 students were girls. The book also reminds us that women rights, something that we are taking for granted in western society, is a fresh thing and we all still need to fight for it.

Building a Front end Pipeline

In day one of DevoxxUK 2018, I had a pleasure to attend Natt Schutta workshop. You can find its review in part one blog post. This session, however much shorter, didn’t disappoint me as well. I can tell, after these 2 sessions. that Natt is a very experienced speaker. The way he presents and the content of his sessions makes you feel that you have spent your time well. The talk is addressed to Java developers who want/need to do projects in JavaScript. As Java developers, we have mature tools which help us build large, enterprise software. We want the same from JavaScript. And this session has introduced some of the tools which let us write better JavaScript code. Most of them we are already using at Push Technology, but the talk rather than saying “here is a linter, use it”, explains why we actually need linter and how we can introduce it to our teams. And how not to use them. In this talk, Natt tells an anecdote about the ESLint use case. ESLint (same as other static analysis tools- linters) allows disabling the check of a block of code by using specially formatted comment. There are valid cases to use that, but disabling it in the whole file is not one of them :)… but it happens.

A cloud application journey with Helm and Kubernetes

A great talk by Ana-Maria Mihalceanu which I was lucky to attend as a part of my duty. The session is very technical and it shows a whole cycle of a kubernetes deployment. Create a docker image with your app -> push it to a repository -> manually create kubernetes manifest files -> deploy to a kubernetes cluster. The second part shows how we can automate the creation of manifests with helm templates as manifest are often almost the same when we deploy our application in different environments.

Ana-Maria’s live demo (respect) covers all above steps. The demo as a base takes a “pet” project in Spring Boot. So we could see the whole journey app > container > cluster > helm templates. And everything in less than an hour.

The Diabolical Developer’s Guide to Surviving Java 9 and 10

LJC Martijn Verburg’s step by step guide on how to migrate to Java 9+. Java 9 breaks some things, which was a difficult but necessary step, as Mark Reinhold explained in his session. That means applications, which depends on “broken” libraries (e.g.java.xml), needs to be fixed. Martijn shows how to make a transition to Java 9+ the least painful. He shows what libraries, frameworks, tools are java 9+ ready and then how to make our application Java 9+ ready. From the talk, we can learn about tools, which show us what actions we need to perform to make our code run and then compile with Java 9. Or tools which tell what module, if it is not available in Java 9 by default, to export to our application if it depends on it.

If you are still not migrated your projects to Java 9+ and you are afraid to do it, then this talk is a great point to start.

So You Can Sleep At Night - ethics in software engineering

This talk is driven by so many “evil” examples from our industry. It tells about the responsibility of Software Developers for their work. We often defend ourself from responsibility with the phrase “I am only an engineer”. But we should not forget that what we create can affect the life of other people, and we should think about the ethical aspects of our product. Jonathan Rothwell & Steve Freeman use Buddhism’s “Three poisons”: snake, pig, and bird to represent 3 types of human behavior, which are behind bad ethical decisions in software development. Presented examples range from the Holocaust, and how Japanese-Americans were treated in their own country after the Pearl Harbour attack to recent days - Cambridge Analitica, Facebook or TBS.

We are all responsible for our work, and we should be aware of the ethical consequences of it. Do we let turn the world by few privileges into the world in which we don’t want to live? By thinking that “we are only Software Engineers” we are risking just that.

Old Is the New New

Very entertaining closing keynote by Kevlin Henney. It is a satire on the state of our industry where “old is the new new”. Kevlin presents how these same concepts are circling around under new names. But can we call it a progress? Kevlin jokes that when “we forget things and repeat them” is good for him as a consultant, as we can learn us, again and again, the same things. But when we think about it, isn’t this a part of the problem that influential organizations and people try to sell us the same thing again and again under the different name? Yes, it was satire and I enjoyed the talk, but the sad thing is that each satire is based on the observation of the real world. Based on this talk we can tell that we ran out of new, revolutionary ideas in our field.

As you can see, the range of sessions is very broad and I have attended only small part of them. I was buzzing with knowledge and new ideas after these three days. It was grreat experience which I will not hesitate to repeat in following years, if only I have chance to do it.