The wroclove.rb Ruby conference is among our favourite events to go to. This year, a number of representatives from iRonin were present, to engage with the community, learn, share their own knowledge and experience, and enjoy the atmosphere created by gathering so many like-minded people in one place. We enjoyed ourselves immensely, and we’d like to share our observations and the things we learned.
Friday
There were several highlights of our Friday at wroclove.rb. The first was a talk by Andrzej Krzywda, about composing business logic in Ruby without external frameworks and libraries. Andrzej began with good reminder about DDD (Domain-Driven Design) and CQRS (Command Query Responsibility Segregation). Darek, Ruby on Rails developer at iRonin, thinks it was a very good move to start with these fundamental concepts. Especially since it provided a great call-back to the main topic of previous year’s wroclove.rb edition. Andrzej then presented a few examples of Plain Old Ruby Objects (PORO), which showcased a clever way of writing business logic in plain Ruby. He took a very interesting approach to State Machine implementation, which could be used as a replacement for many popular Ruby gems.
Przemek, Full-stack Developer at iRonin, reports that his two favourite Friday topics were mutation testing and UIs for microservices. Markus Schirp and Martin Gamsjaeger ran a workshop for everyone who wanted to try out mutation testing in practice. It was quite interesting to see another a different to writing code, but at the same time, Przemek says there were some issues with the presented code, and the workshop lacked a good introduction to the mutant testing idea. From Przemek’s personal point of view, the workshop would have gone a bit more smoothly if everything had been explained at the start for those who weren’t familiar with Mutant, ideally with an example of how to interpret all of the outputs of this testing library.
Piotr, Full-stack Ruby on Rails Developer at iRonin, was pleased that the authors used the workshop form, as it shows great initiative on their part. Mutation tests certainly change the perception of writing tests in general, and it was worthwhile to learn more about them. Piotr worries, however, that the assumption regarding the participants’ knowledge of the e-commerce domain was probably a bit overestimated. Those less familiar with e-commerce would have benefited from more generic examples.
Ethan Garofolo gave a talk about building UIs for microservices, focusing on alternative ways of building applications based on the process that the user should experience. One of the standard examples was that when the user registers to your website, a verification email is sent to his inbox. Once the user verifies their account, they are able to log into the system. From the website perspective, when a new user registers, the verification email doesn’t need to be sent immediately and this won’t be treated as a bad experience by the user. The conclusion is that sometimes, the most obvious, simplest solution is also the best, and what the users actually expects.
*iRonin’s team members during wroclove.rb*
Saturday
Janko Marohnić gave a thorough summary of file uploads. Darek says he included a lot of great tips about speeding up image uploads (e.g. by using libvips instead of imagemagick). Janko also presented Uppy.io as a modern JavaScript upload library which supports a lot of modern features, like direct file uploads to S3 and resumable uploads. Overall, it was a great technical talk about modern approaches to and tools for file uploads. Piotr believes that it presented many useful techniques regarding a seemingly trivial problem that most of us do not necessarily think about daily. The presentation offered many ideas to think about.
Przemek reports that Janko talked about his journey with file upload libraries, what problems he encountered and how he tried solving them with the tools available at a given point in time. The problems he mentioned included limiting the size of image uploads, accepting only images with a given extension, asynchronous file uploads, and dealing with network unreliability when uploading large files. The presentation showcased the Ruby library created by Janko, Shrine. It was built with all of the aforementioned problems in mind.
Markus Schirp spoke about mutation testing. He is the author of Mutant (a testing tool for Ruby). He described the main principles of mutation testing, which can be a very good technique for providing high quality code with good test coverage. Mutation testing could be used for many projects (such as medical applications, where code quality is absolutely crucial), but to Darek, it seems like quite an expensive addition to the development process.
Norbert Wójtowicz held a talk about EDN (extensible data notation) and the EQL query language. It's a new approach to make API calls. Norbert made an apt comparison with REST and the GraphQL API. EDN is a very similar approach to GraphQL, but there are few changes, such as the flat query structure, or the not required type definitions. At the end of the talk, Norbert presented a demo of his API approach. It was very impressive. Darek thinks it might be something big in the future, but for now GraphQL is a very stable option. This was one of hot topics discussed by our team during the conference afterparty.
Martin Gamsjaeger gave a presentation about the development process used by his company when they have to handle code changes. The base concept rests on axioms, simple facts that are always true. Because of those axioms, the company managed to provide a hierarchy of actions they should follow when introducing changes in the codebase. For example, the developer should consider if a change can be accomplished just by removing some code. If not, then maybe by renaming a file or moving it to a different directory. Finally, if all else fails, the developer should introduce new code or change existing code. The goal of this ideology is to reduce risk of having new bugs pop up, and having the ability to easily fix them just by rolling back a small, focused change.
*Victor Shepelev’s talk “Towards the post-framework future”*
Sunday
Anton Davydov delivered a very good talk about Event Sourcing (an approach focused on storing every change of an application as an event object). He described the most important principles of event sourcing and explained how to calculate the state of an application using Projections, as well as how to save events to streams to make state calculation easier. It was a useful summary of the most important foundations of event sourcing, with good examples and good books recommendations.
Chris Seaton delivered a great talk about TruffleRuby implementation. It's a high performance implementation of the Ruby language based on GrallVM, and a fork of TruffleRuby. Chris presented how compilation looks in detail. Darek reports that the performance statistics look great - almost 4 times better compared to plain Ruby. TruffleRuby is still a research project and could encounter many problems, but it's good to hear that something like this is being created.
A project about compiling Ruby code with the addition of static typing, explains Przemek, which leads to performance improvements when running the application code. The concept is actually based on complicated mathematical theories. The presentation included an explanation of these, but it was only the tip of the iceberg. Piotr points to this talk as the most interesting during the entire conference. It was very technical, factual presentation showing the mechanisms of TruffleRuby's operation, including the exact AST schema. Despite the complicated subject matter, Chris was very well prepared and presented the topic easily.
Summing up
The wroclove.rb conference is known for its effective organization and valuable talks. This year, just like every year before, the event was truly worth attending. Aside from learning during the technical part of the conference, we enjoyed the occasion to meet other people from the Ruby community, and chat about our experiences. One interesting thing that Przemek has noticed is that people who don’t use Ruby on a daily basis attended the conference, as well, because of its good organization and the awesome community. Darek reflects that it was nice to meet old and new iRonin team members. We’ve had a great time during the afterparties, and an excellent opportunity to integrate with the iRonin team and many other enthusiasts of the Ruby language. Piotr reports that the atmosphere was charming. So if you think a Ruby-related event might be boring think again. We even got to witness a show of a certain participant’s musical skills on Sonic Pi, which is slowly becoming a wroclove.rb tradition.
Are you a Ruby developer looking for a great job opportunity?
At iRonin, we make sure our team members take advantage of every opportunity to learn and grow professionally. This includes attending amazing events.