Bogdan Gusiev's blog

How to make good software for people

My Talk from RubyC conference
25 Jul 2014

Here is a video from the excellent Rubyc conference. Hope you will find this video funny as well: All about parsers in ruby

slides video conference parsers

Took part in a podcast with Alexey Vasiliev
27 May 2014

Last weekend I took part in the a podcast with Alexey Vasiliev. We talked about my path in Open Source, Rails and IT industry in ukraine.

It is all in Russian. You can listen it here:

podcast opensource contribution datagrid ajaxsubmit

Minimalistic State Machine: Less is More
01 Apr 2014

I have tried a bunch of ActiveRecord’s state machine gems. Their functionality is very close to each other. It allows to validate a state transition and reinvent ruby programming language to define transition methods. The fact that all of them produces custom API to define a ruby method doesn’t look right…

rails validation statemachine criticism

Datagrid slides from Ruby Meditation 3
04 Nov 2013

Here are my slides about Datagrid gem from Ruby Meditation Conference last weekend. Datagrid is a gem I’ve released almost 3 years ago. It is focused on table data representation and now allowes a full power flexibility to be called a Framework.

slides datagrid gem rails activerecord report

Support validation through ajax in Rails 4.x
24 May 2013

I have a constant feeling that in a modern web every web form should be submitted with AJAX not the old retro way with POST request. This is better for numerous reasons.

At first, it gives better user experience At second, AJAX is faster than regular request. At the end, it doesn’t require a work to redraw the page with it’s previous state if validation fails.

Currently I am trying to make rails app support this out of the box. And here is first small step to this goal:

This patch allows a complete validation though ajax using active model validators. This is a live demo of what it allows to do. If you feel especially interested in this feature, say your +1 here or on github.

rails contribution javascript ajax validation

Attach git commits to pivotal stories
08 Apr 2013

I heard about 10 different ways to organize work flow around pivotaltracker and git and about 5 gems to support that process. All of them seems abusing for me: the outcome of pivotal/git integration is a git commit attached to pivotal story and the rest of conventions like naming branches or merge policy doesn’t make any sense in long time perspective and is just a waste of time in fact.

That’s why I’ve decided to make the most trivial integration that covers this idea and don’t provide additional complexity: Meet git-storyid gem - the only one git/pivotaltracker integration that saves your time.

git commit gem pivotaltracker

Background Jobs Frameworks: Resque vs DelayedJob
08 Apr 2013

Here are my slides from Ruby Meditation meet-up in Kiev last weekend. Covers some internals and some features of DelayedJob and Resque.

resque delayedjob slides

Where to work as a rubyist in Ukraine
15 Feb 2013

Allan was the first business guy in my life that was more focused on building product than raising money — build features endless cycle. So we started to work together.

job work ycombinator silicon valley

Rails Contribution slides from ruby meetup in Kiev
11 Dec 2012

Here are slides I’ve shown on ruby meetup in Kiev. It’s all about my expirience with power hacking rails internals. Give some inside on how ActiveSupport Callbacks and Rails Router are working.

rails contribution slides

Smart Javascript Initialization Strategy
08 Oct 2012

JavaScript initialization process is a pain in the ass since dynamic HTML and AJAX became popular. We need to take care all the time about what we need to initialize after every change in DOM. Thanks to jQuery#live and jQuery#on that is not so right but still very effective solution. It allows to fix the problem with initialization of typical events. But initialization is not always about binding DOM events. In more advanced cases it could be wrapping widget class over an element or custom jQuery method call like date-picker.

javascript initialization class