wroc_love.rb 2016
Hey, this is a very late after-wroclove post. Funny thing is I had it written two weeks ago already but I simply forgot to post it. Oops! Anyway, here it goes:
The first day of conference was mostly centered around amazing React.js/Redux workshops by Marcin, author of one of the best Rails books we've ever read called Rails meets React.js (not to mention an amazing person!). During those workshops we've learned a bit more about ES6 and Redux, a JavaScript architecture based on ideas from functional programming and immutability of state. I must say that I wasn't convinced at first but after seeing how it actually can look and work in practice (thanks Wiktor!), I must say I'm at least a bit intrigued. The important lesson from the workshops was also that more and more people stop using CoffeeScript and move on to Babel/ES6 and considering the development of CS also slowed to a crawl, it's about time we start moving on or risk being left out. Too bad, since we really loved CoffeeScript at Untitled Kingdom :(
After workshops, Andrzej gave his talk "From legacy to DDD". It was not new material so you can watch it already on YouTube (and we highly recommend it). It gives you the idea of how you can start publishing events in your application with no drawbacks or removing any existing codebase and then leverage those events later on and progressively make your application better. He also emphasised how important it is to **not* go async until your application actually requires it as microservices-based architecture, while having huge benefits of modularity and strong boundaries between components, also have huge costs like risk of failure due to message passing or not being able to keep data consistent and having to maintain eventual consistency. Microservices-based architecture should be your final destination but writing your application using DDD from the grounds is hard and it's much easier if you first learn your domain and problems that come with the territory.
The last one big talk that day was live coding session in Opal.rb by Elia.
Even though I must admit I find writing Ruby code much more pleasant than JS, I am still far from convinced that Ruby-transcompiled-to-JS is the solution. One of the things that caught my attention in a negative way was how problematic was finding mistakes and typos in the code. What debugger spewed out and the actual problem were sometimes two completely different things and it made it hard to go through the code and reason about it. I'm afraid that even passing 11 thousand RubySpecs is not going to help you with that :P
Second day of the conference started with Something Completely Different - Basia's talk about R programming language. Unfortunately she missed the great opportunity to make a running joke. Too bad! The talk was very interesting and even though I was so sleepy I had hard time following, I think I'll give R a change next time I need to analyze any larger data set.
Next one was something I was eagerly waiting for and I really can't wait until they put it on YouTube so I can link it here - [Robert Pankowecki] did an amazing talk about Saga pattern. Basically it's one of the cornerstones of CQRS and in nutshell it allows you to process user stories by passing coordinating and routing messages between bounded contexts and aggregates while at the same time making it possible handle failures without writing if (or rescue) ladders.
I still don't feel like I'm the expert in this field (DDD is hard) so I'm not going to go into details but Robert gave us some amazing ideas on how we can leverage event sourcing in our apps into next logical step. He also gave us an idea on how to create async handlers and reminded us on what kind of pitfalls we need to remember to avoid, like making sure your async code is not being run before transaction is commited.
Next item on agenda was panel about code editors. It felt less like a panel and more like an ad stream, to be honest, with multiple people taking turns in showing you their favourite stuff from various code editing tools. There was "no blood, no leader, no winner". There were also two presentations after this one, one about NixOS and one about ROS but unfortunately I was not on either of them (sorry!) and can't really comment.
Last but not least were obviously lightning talks:
I really enjoyed the talk from Gosia about keeping junior programmers happy. She pointed out that people are often discouraged if not motivated enough and programming is very hard so we should always make them feel their efforts are appreciated, something that is sometimes easy to forget. I also absolutely loved Nicolas'es Sonic PI kata - Sonic PI is a great software to combine programming and creating music and I wholeheartedly recommend playing with it!
I even won a t-shirt for sharing horrible code (sorry for the creepy smile, I always look bad on photos):
Third day started strong with Oskar's talk about Ruby Object Mapper (ROM). It turns out that ActiveRecord is not (gasp!) the only database solution for Ruby and it can be successfuly used in production. After that Kacper told us about Consumer-Driven Contracts and provided us with some additional research material.
After much turbulence the topic of Friday's panel was "Rails Deployment". There were many questions asked during this panel but the overall feeling was that unless you have a dedicated DevOps in your team it's almost always better to with cloud solution like Heroku or Amazon. The main reason is that it takes time to configure server and ever more time and effort to maintain it and keep it secure and up to date and that eats up time we could spend on actually developing things. The additional price of hosting solution is a bit painful but it does pay off in the long run. Other interesting opinion shared by all the panelists were that it doesn't matter what kind of deployment management tool you use - Chef, Ansible, Puppet etc. all share the same goal and solve similar problems so it's more of a matter of taste than anything.
There was also one person invited from the crowd who were a huge Amazon fanboy (his words, not mine!) and what he said about OpsWorks and all of the Amazon tooling made me rethink how I feel about it - I really hate overly complex tools when I don't see immediate benefit of that complexity and all of the Amazon solutions I've been working so far has been a tangled mess of arcane config files, horrible interfaces and complex relationships between those services. Considering how many smart people there were in the room I guess it's time to clench my teeth and try again ;)
Next talk felt probably the most professional and RubyConf quality. Part of the reason I felt that was probably sound of Peter's amazing voice but almost every slide felt eye-opening as well. He talked about LSP - Liskov Substitution Principle and what consist a violation of that principle. The slides, additional materials and soon the video of the talk are available on his website and I urge to listen, read and learn as much as you can to improve your code and make it more SOLID :)
Last talk was about payments - Sebastian told us a story about a female developer and problems that arise when dealing with payments and multiple gateways. It was less about the code and more about the storytelling which was a nice change of pace after three days of hard knowledge.
Then it was time for lightning talks! Unfortunately I don't have a photo of the whiteboard because my phone was acting up and I had to wipe it and go back to stock Android. I think that one of the biggest highlights of the lightning talks was very brave presentation by Tatiana about procrastination and using meditation to cope with it. Procrastination and depression are two very hard and very painful topics in development world, something we'd rather forget existed and it's nice to see people not afraid of talking about it and reminding people we're not alone. It was also nice to learn about systemd syntax and how to use it properly to write your own daemon.
And that's it! Three very intensive and fun days spent with bright and amazing people. Huge and personal "thank you" to all the organizers, volunteers and sponsors for making this happen!
See you on wroc_love.rb 2017!














