RubyKaigi is happening at Sendai, Japan from 31st May to 2nd June. It is perhaps the only conference where one can find almost all the core Ruby team members in attendance.

This is Prathamesh. I bring you live details about what is happening at the Kaigi over the next three days. If you are at the conference please come and say “Hi” to me.

Matz’s keynote

RubyKaigi started with Matz’s keynote. He used lot of proverbs applying them to the Ruby language and software development.

He talked about one of the hardest problems in programming - naming with an example of yield_self. Matz added alias then to the yield_self method yesterday. He also discussed about googlability of the names. Ironically, Ruby was named in 1993 which was before Google had started.

Matz also touched upon JIT option being introduced in Ruby 2.6 and guild as the ways the language continues to improve in performance and concurrency. There is a talk on Guild by Koichi Sasada on second day of RubyKaigi which will have further details about it.

Matz ended the keynote talking about the need of maintaining backward compatibility and not running into the situation like Ruby 1.9 or Python 3 where the compatibility was not maintained. He also stressed upon the community aspect of the Ruby language and its importance in the success of Ruby.

ETL processing in Ruby using Kiba

Thibaut Barrère gave a talk on Kiba - a data processing ETL framework for Ruby. He discussed about the design decisions that went into the version 1 and how it evolved to version 2 which was recently released.

Kiba provides programmatic API which can be used in the background jobs instead of shelling out. It also has support for multistep batch processing.

Thibaut also explained how it can be used for data migration, reusing the components and big rewrites. He observed that the performance has been gradually increasing with each Ruby release over the years.

The slides for this talk can be found here.

Architecture of Hanami applications

Next I attended talk from Anton Davydov on architecture patterns in Hanami apps. He discussed about the problems typical Rails applications face and how abstractions can address those issues. He explained how Hanami tries to achieve business logic isolation, avoid global state, sequential logic and test coverage. Functional callable objects, containers, dry-containers, dry-inject and event sourcing are some of the abstractions that can be used in Hanami apps that help in achieving this.

Lightning talks

The last session of the day was lightning talks.

The talk on Rib(wordplay on IRB) was an interesting one. Rib is yet another interactive Ruby shell but lightweight compared to IRB and pry. It has some nice features like auto indent, multiline history, filtering of callers. It can also beep when the console starts, so you know it is time to get back to work.

I liked another talk where Watson had worked on improving the performance of JSON gem. He achieved this by using CRuby API whereever applicable and avoiding heavy calls like rbfuncall. Check these two pull requests for benchmark and more discussions.

Apart from these talks, there were lot of other talks as well which I could not attend. Stripe team is building a type checker for Ruby which looks very interesting and is is extremely fast.

Bozhidar Batsov gave a talk on Rubocop project and how it has evolved over the years. There was also a talk on Karafka - event driven architecture in Ruby. This talk was a good precursor to the Hanami talk where event driven architecture was mentioned again.

Other talks from day one ranged from memory management, playing with Ruby synatx, code highlighter, deep learning, C extensions to Rubygems.

That’s all for the day one. Looking forward to the day two already!