Ruby Meditation #19 in Kiev

Sat, November 25, 2017, 11:00 AM – 6:00 PM EET Hub 4.0, Yaroslavskyi lane 1/3, Kyiv, Ukraine
23 November 2017   703

Join next Ruby Meditation #19 on November, 25th! Become a part of Ruby Community.

Take your new knowledge, useful practice, and joy. Organizers are waiting for speakers from Toptal and it's mean interesting topics and discussion. Join and get information about hard and soft skills in ruby-development. Starting at 11:00 and finishing at 18:00 with the coffee-breaks and a tasty lunch.


  • 11:00 Registration and Welcome coffee 
  • 11:30 How freelancing and remote work is changing the world - Ines Avdic-Zekic
  • 12:15 Coffee break
  • 12:30 Monads in Ruby - Victor Zagorodny
  • 13:15 Lunch
  • 14:15 # UDD Kick Off - Marek Piasecki
  • 15:00 Coffee break
  • 15:15 Microservice communication with RabbitMQ - Tetiana Chupyra
  • 16:00 Coffee break
  • 16:15 A toolbelt of seasoned bug hunter - Damir Zekic
  • 17:00 Coffee break
  • 17:15 Lightning Talk


There will be interesting talks of skilled coders at Ruby Meditation.

Ines Avdic-Zekic

Topic: “How freelancing and remote work is changing the world

Ines Avdic-Zekic
Ines Avdic-Zekic

How to gently break into freelancing (with Ruby on Rails) and take control of your life and career.

Ines Avdic-Zekic

Ines Avdic-Zekic travels the world, looking for top 3% freelance talent, whom she makes feel at home while working with Toptal. She also trainer/teacher. She started teaching very early in her career, but moved to curriculum design/creation and eventually completely changed her interest to technology and Technical recruitment. She a member of Toptal’s Speakers Network. 

Victor Zagorodny 

Topic: “Monads in Ruby

Victor Zagorodny
Victor Zagorodny

Monads are mentioned more and more often in various talks, and discussions, but mostly about pure functional languages and... JavaScript. We are going to take a closer look on what monads are, in what typical use-cases they can be applied to make our code elegant and our life simpler. Also we’re going to review the current state of monads support in Ruby community and put our two cents in this.

I am a Senior Ruby developer and a tech lead @ Sloboda Studio, write mostly in Ruby, have passion for Haskell and pure functional programming in general.

Victor Zagorodny

Marek Piasecki

Topic: “# UDD - kicking of Understanding Driven Development

Marek Piasecki
Marek Piasecki

This presentation will be a natural continuation of Odessian # Hype Review. Thanks to your questions and feedback I’ll try to give some answers. I do believe deep understanding is a key thing in development. It’s kind of obvious. But we go further and further with reducing scope of our specializations.  We’re learning how to use tools and methodologies instead of learn in the first place how to program.

Marek Piasecki

Damir Zekic

Topic: "A Toolbelt of a Seasoned Bug Hunter"

Damir Zekic
Damir Zekic

Loud bugs are easy to spot and easier to fix. But there are subtle bugs that work over time and only in specific environments. Finding and fixing them is often a frustrating process. This talk will cover a debugging odyssey through which we will explore and evaluate various tools that can be used for better understanding what is happening in any application.

Damir Zekic

Sixteen years ago Damir started developing web applications with PHP, but switched to C#/ASP.NET (he tries not to remember those few projects he was forced to implement with VB.NET) until he saw the radiant shine of Ruby. Developing web apps for the majority of his career as a software developer, he’s proficient with both back-end and front-end work, but recently started to focus on the back-end more. Enthusiastic about functional programming. He is also a part of Speakers Network in Toptal.

Tetiana Chupyra

Topic: "Microservice communication with RabbitMQ"

Tetiana Chupyra
Tetiana Chupyra

Microservice applications are useful only if they work in cooperation. So an adequately chosen type of inter-service communication is golden. In this talk, I want to speak about building lightweight microservice messaging with a usage of RabbitMQ. Why it’s better than standard JSON over HTTP? When it should be used and when should not? How to integrate RabbitMQ in Ruby application? I have some thoughts and answers that I want to share with you all.

Tetiana Chupyra

Organizers do appreciate a willingness to learn, thus, students receive 50% discount by promo code ‘student’. Please send your student ID’s scan to make your registration faster.
If you are on maternity leave with a small baby (0-3 years) you can get a special discount for a ticket with promo code ‘GrowWithYourKid’. Please take kid’s birth certificate with you to confirm the status.

Get your ticket here


How To Start an Open Source Project

Personal experience on the open source project; doing it effectively without mistakes
26 January 2018   1437

My name is Dmitriy Strukov and I’m Ruby developer. Today I want to share my experience creating an open source solution. I will talk about what steps the project should take, how to choose the right functionality for the first release, and what mistakes I faced personally when creating my open source project.

Half a year ago, I got the idea that it would be good to create an open source project. Instead of test tasks for the interview, it would be enough for me to send a link to the repository. The prospect of helping colleagues with the solution to their everyday problems inspired me.

I’ve always disliked gems for creating administration panels. Any extra movement needs to redefine the class, and for change fields you need to make changes to the files. After thinking and conversing with colleagues, I decided to create a new library which would be flexible and would not require dashboards or configuration files.


Initially, the project was focused on the Ruby ecosystem, but this would limit the target audience of such a solution. SimpleAdmin is a cross-platform solution for administrative panels, working as a third party service. Obtaining data from the database from the main application works with the help of a plugin. In the Ruby on Rail it engine, in which the necessary endpoints are created. In the near future, the launch of a prototype is planned.

Determine the goals

Every open source project solves a specific problem. Talk with colleagues, chats, forums, and share your idea. It all helps you on the first steps to understand important things, like which solutions already exist, and to hear criticism. Talk with people who already have open source projects. They can give you very valuable advice, so don’t be afraid to ask and take the initiative.

One important bit of advice which I got at that stage is to pay attention in the first place on the documentation of the project. You can have a very good project, but no one will spend the time to understand how it works.

The most important aspect, without which further steps are impossible, is motivation. The idea of the project should inspire you primarily. Most often people get used to the tools with which they work and fall into a comfort zone, so external opinions may be ambiguous.


The choice of a certain task manager is a matter of taste. It should have a clear picture of the tasks and stages of your project.

Divide tasks into sub-tasks. Ideally, if one task does not take more than 3–4 hours, it is important to enjoy the implementation of small tasks. This will help to avoid burnout and loss of motivation.

I use pivotal tracker . The main advantage is a free version for open source projects where you can sort tasks by type (feature, bug, chore, release), and group them into releases and determined deadlines.


Every open source project should contain these things:

  • Open Source license
  • Contributing guidelines
  • Changelog

The README file not only explains how to use your project, but also the purpose of your project. If you do not know how to properly write a README file, you can look at other known open source projects or use a template .

The license guarantees that others can use, copy and modify the source code of the project. You need to add this file to each repository with your open source project. MIT and Apache 2.0 GPLv3 are the most popular licenses for open source projects. If you are not sure what to choose, you can use this convenient service .

The CONTRIBUTING file will help other developers contribute to the project. At the first steps of the project, it is not necessary to pay close attention to this file. You can use the already prepared template from another project.

Changelog contains a supported, chronologically-ordered list of significant changes for each version. As with the CONTRIBUTING file, I do not advise paying special attention to this at an early stage.


To track important changes for users and contributors, there is a semantic version . The version number contains numbers and adheres to the following pattern X.Y.Z.

  • X major release
  • Y minor release
  • Z patch release

Continuous integration / Continuous delivery

To automatically run tests and build, I use Travis CI. It’s also a good idea to add badges to display the successful assembly of the build in the wizard, the test coverage (Codecov), and the documentation (Inch CI).

After each new commit or merge in the master, I automatically have a deploy on Heroku (very convenient integration with GitHub). All tools are absolutely free for an open source project.

My mistakes

To analyze the initial stage, I had an idea, but there was no clear plan. I decided that I wanted to do this without having a clear idea of how much time it would take or a specific representation of the functions that would be in the first version of the library. I had just a lot of desire and lack of a clear plan.

Also, after reading the history of other projects (not only open source), I noticed that at an early stage, some plans are too optimistic. They need a reassessment of their strengths and capabilities. But it’s not easy to find time each day to write a new feature in the project. Most of the tasks eventually had to be weeded out, leaving the necessary minimum for MVP.