09/05/16 Craft conference 2016 Craft conference 2016 This was our third Craft Conference, the place to be if you are connected to IT and want to be a better professional. The main topic of the conference, as always, was the art of craftsmanship. It was held in Budapest at a really interesting venue - Hungarian Railway History Park. The park is filled with old trains, it even has a small steam train on which you can hop on to get a better tour through the park. The organizer did a great job adapting the place, the stages had steam and railway carriages as the background. There were 5 talk tracks and one hands-on track with a longer session held in the magenta tent. What we are bringing home from this year is the fact that developers must do operations, containers are a really big thing but the challenge is how to orchestrate them and if you play a leading role in an IT company you should go back and read some psychology books. Here are some talks which we found to be the most interesting. Deploying and Scaling Microservices - Sam Newmen A great talk to start off the conference in a currently hot direction. With the rise of microservices and containers, now we are facing a challenge to orchestrate their deployment and manage them, Sam provided an overview of three options currently on the market. First he talked about Docker Swarm as a native clustering tool for Docker. A nice thing about it is integration with the rest of Docker but it does not rebalance and it does not restart failed containers. Then he moved on to Mesos, a really powerful cluster manager which is designed to scale to very large cluster involving hundreds or thousands of hosts. It is a fully featured and widely used tool, but it is fairly complex and it has lots of moving parts. The last tool he talked about was Kubernetes, a container orchestration tool from Google. It is fairly new to the market and it is closer to PAAS. It is simpler to setup than Mesos, but more single-purpose too. The final thought is that both Mesos and Kubernetes are great choices, in his opinion Mesos is a better choice for Big Data stacks and tools while Kubernetes is a better choice for web applications which, as a whole, should be deployed on different machines and you can group components into pods. Let’s get Lazy - Venkat Subramaniam In our opinion, this was the best talk of this year's Craft conference. Venkat is always dynamic, and fun to watch. His way of presenting is really great. He gave a live demo talk about functional programming and which point is best in performing expression evaluation. He reflected on Java 8 streams, and went in a bit deeper to explain which operations on streams are transformations only and which trigger evaluation. This is, in our opinion, best explained in Spark where you have transformations and actions. Transformations are only manipulation functions, not data itself and they are cheap to do since they are not performed on each element but they will be applied as you stream data. Actions trigger the evaluation of expressions and they loop through the elements of stream applying transformation to the elements. Reflecting back on Java 8, he basically talked about infinite streams and how this would kill JVM with old for loops but now you have streams and you can apply transformations along the way as elements pass by. Here is a link to the entire talk. DevOps for Developers: Building an Effective Ops Org - Charity Majors Charity gave the most honest talk of this conference. Throughout the whole talk there was a vibe showing that she talked from her heart and experience. She talked about the problem of developers escaping from operations tasks. A while ago, there was a notion that operations guys had to step up their development game, so they could understand developers better. This was heard in the operations community and ops guys became better at development tasks. This can be seen in tools we have today which are easy to use by both ops and dev people. Now we need a shift, developers need to step up their operations knowledge. It is not enough to hide in your IDE and type your favorite language without knowing how this whole thing will be deployed or operate tomorrow in production. My favorite sentence of the conference is that good software engineer should know not only what is good in their favorite language of choice, but also what is not. It speaks about the wide picture, that you should be familiar with both the strengths and weaknesses of a tool before you make an educated decision to use it. Here is a link to the video. Psychological Aspects of Estimating - Joseph Pelrine The keynote speaker of the second day. He was Kent Beck’s assistant, therefore he was one of the first in the world who worked with eXtreme Programming. He worked a lot with teams starting to go agile and use Scrum. After a while, he realized that he needed psychology in order to really back up his story and understand in detail what he was talking about so he went back to college to study it and now he is on PhD in psychology. He spoke a lot about estimates, how to do them and especially what to avoid. Long poker sessions are the exact opposite of productive. People get tired and estimates become worse as the session goes on. That is why you should run through familiar stories fast and leave the discussion on unknown stories for later. Use a familiar story as something to compare an estimate to. Know what are you building and ask all the questions if you are not sure. He gave another talk on the topic of authority, power and motivation which we missed, so we cannot wait to watch the video of it as soon as it appears online. Here is a link to his presentation. Be a hero of your data with Neo4j (hands-on session) - Jarosław Pałka After a day and a half of talks, we needed an escape to hands on session. The choice fell on Neo4j as a great and hot topic so we decided to attend the 90 minutes intro session to this great graph database. Jaroslaw gave a short intro to the Neo4j world. Session length provided him just enough time to scratch the surface. He started off with a brief overview of graph and Neo4j in particular. He also covered Cypher, SQL-like language for traversing the graph built for Neo4j. Then we started playing with it on 3 prepared data sets. The installation went easily and smoothly, Neo4j has a nice and appealing UI which you can use to play and explore the graph. Graph is definitely something that we need in these days of Big Data, however we still need to compare TitanDB against Neo4j, especially in terms of scaling. TitanDB gives you freedom to choose a storage engine of your choice. Neo4J is rich in features and it seems that the choice, as always in the NoSQL world, boils down to your use case. Food for thought Last year, most of the speakers talked about microservices, which were hype at that moment but now we have a lot of successful implementations. Now we have some problems which switch to the microservice architecture brought along. We have a challenge in the ops department regarding how to manage all these small moving parts. This is the main reason why developers need to step up their game and become better in operations. We have a lot of great tools to help us along the way. On a less technical but more craftsmanship note, go beyond simple decisions and try to understand the psychology of your team. Being in IT is stressful enough, there are new things each day, you need to follow the technology or you are out. This is the prime reason why people at leading positions need to understand teams, show empathy and create a culture which will ease up people’s lives, to make it more complex and harder. As for the last but not the least important thing, conferences are the places to meet great people. We know that we did and we have returned from this year’s Craft richer by a few more great connections. Go out there, speak on conferences or simply attend and network, it will broaden your horizons and you will be better at what you do after it.  By Nenad Bozic Co-founder at SmartCat.io. Craftsman with more than 10 years of experience, when he does backend coding in Java he feels right at home but likes to do short excursions in other technologies like Ruby on rails, AngularJS, PHP. Find out more at: http://www.smartcat.io