About

Seasoned back-end engineer and architect, working with Ruby on Rails since 2007. Specialized in building robust, enterprise, monolithic applications.

But I’ve also tasted frontend development and and found a real passion for React.

You’ll always find me writing tests to ensure rock-solid code.

Rails Software engineer thinking about where to put constants

Stop adding constants in the wrong place

Over the years of working with large, mature, monolithical Rails applications, I realized a subtle problem. Many, even experienced teams put their constants in suboptimal namespaces. On one hand such placement is logical, but on the other it leads cluttered code that mixes low-level and high-level concepts. It does not help with keeping our monolith modularized either. Consider a common scenario in a Rails application: the Team class. As your application evolves, you might find yourself adding constants like this: ...

September 28, 2024 · Robert Pankowecki

3 ways to make your ruby object thread-safe

September 18, 2018 · Robert Pankowecki

Doing more on reads vs writes

July 13, 2018 · Robert Pankowecki

Correlation id and causation id in evented systems

May 14, 2018 · Robert Pankowecki

Using singleton objects as default arguments in Ruby

April 23, 2018 · Robert Pankowecki

Ruby Event Store - use without Rails

March 27, 2018 · Robert Pankowecki

Rails Event Store - better APIs coming

March 3, 2018 · Robert Pankowecki

How to use Algolia without coupling to ActiveRecord::Base

February 28, 2018 · Robert Pankowecki

Your search index is a read model (and API) in the Searching bounded context

February 23, 2018 · Robert Pankowecki

How Algolia built their frontend search widgets with React.js by following redux principles

February 21, 2018 · Robert Pankowecki

The anatomy of search pages

February 19, 2018 · Robert Pankowecki

Building custom search is hard and boring

February 14, 2018 · Robert Pankowecki

Testing React.js components with Jest in Rails+Webpacker+Webpack environment

February 11, 2018 · Robert Pankowecki

Using ruby parser and AST tree to find deprecated syntax

December 22, 2017 · Robert Pankowecki

On ActiveRecord callbacks, setters and derived data

December 13, 2017 · Robert Pankowecki

Why Event Sourcing basically requires CQRS and Read Models

November 28, 2017 · Robert Pankowecki

Quarantine your non-deterministic tests with a time limit

November 22, 2017 · Robert Pankowecki

Safely migrating hasandbelongstomany associations to Rails 4

November 17, 2017 · Robert Pankowecki

Interview with Scott Bellware (Eventide co-creator) about micro-services in Ruby, event sourcing, autonomous services, SOA, dumb pipes, EventStore and mis-representation of terms in IT

November 15, 2017 · Robert Pankowecki

Application Services — 10 common doubts answered

October 23, 2017 · Robert Pankowecki

Relative Testing vs Absolute Testing

October 19, 2017 · Robert Pankowecki

Two ways for testing preloading/eager-loading of ActiveRecord associations in Rails

October 16, 2017 · Robert Pankowecki

Using state_machine with event sourced entities

October 15, 2017 · Robert Pankowecki

Could we drop Symbols from Ruby?

October 2, 2017 · Robert Pankowecki

Which ruby version am I using — how to check?

September 29, 2017 · Robert Pankowecki

How to overwrite tojson (asjson) in Active Record models in Rails

September 26, 2017 · Robert Pankowecki

All the ways to generate routing paths in Rails

September 18, 2017 · Robert Pankowecki

Custom application configuration variables in Rails 4 and 5

September 16, 2017 · Robert Pankowecki

How mutation testing causes deeper thinking about your code + constructor for an included module in Ruby

September 13, 2017 · Robert Pankowecki

How to find records where column is not null or empty in Rails 4 or 5

September 4, 2017 · Robert Pankowecki

DATABASE_URL examples for Rails DB connection strings

August 31, 2017 · Robert Pankowecki

Interview with Sergii Makagon about hanami-events, domain-driven design, remote work, blogging and more

August 29, 2017 · Robert Pankowecki

inject vs eachwithobject

August 29, 2017 · Robert Pankowecki

The === (case equality) operator in Ruby

August 23, 2017 · Robert Pankowecki

How to connect to and use ActiveRecord outside of Rails?

August 19, 2017 · Robert Pankowecki

What I learned from reading spreadsheet_architect code

August 18, 2017 · Robert Pankowecki

That one time I used recursion to solve a problem

August 11, 2017 · Robert Pankowecki

My fruitless, previous attempts at not losing history of changes in Rails apps

August 7, 2017 · Robert Pankowecki

My first 10 minutes with Eventide

August 3, 2017 · Robert Pankowecki

How to add a default value to an existing column in a Rails migration

August 3, 2017 · Robert Pankowecki

When DDD clicked for me

August 3, 2017 · Robert Pankowecki

How to quickly add graphs and charts to Rails app

July 20, 2017 · Robert Pankowecki

nil?, empty?, blank? in Ruby on Rails - what's the difference actually?

July 20, 2017 · Robert Pankowecki

Monitoring Sidekiq queues with middlewares

July 19, 2017 · Robert Pankowecki

How to keep yourself motivated for blogging?

July 17, 2017 · Robert Pankowecki

Handle sidekiq processing when one job saturates your workers and the rest queue up

July 14, 2017 · Robert Pankowecki

How to safely store API keys in Rails apps

July 14, 2017 · Robert Pankowecki

The easiest posts to write for a programming blog

July 14, 2017 · Robert Pankowecki

Using influxdb with ruby

July 10, 2017 · Robert Pankowecki

Tracking dead code in Rails apps with metrics

June 23, 2017 · Robert Pankowecki

What I learnt today from reading gems' code

June 23, 2017 · Robert Pankowecki

Acceptance testing using actors/personas

June 7, 2017 · Robert Pankowecki

Handling SVG images with Refile and Imgix

June 1, 2017 · Robert Pankowecki

Conditionality is filtering. Don't filter control flow, filter data.

April 21, 2017 · Robert Pankowecki

Reliable notifications between two apps or microservices

April 9, 2017 · Robert Pankowecki

Why classes eventually reach 50 columns and hundreds of methods

March 31, 2017 · Robert Pankowecki

Prototypes in Ruby and the strange story of dup

March 7, 2017 · Robert Pankowecki

Ruby code I no longer write

February 17, 2017 · Robert Pankowecki

yield default object

February 2, 2017 · Robert Pankowecki

Fluent Interfaces in Ruby ecosystem

January 26, 2017 · Robert Pankowecki

On upcoming immutable string literals in Ruby

January 2, 2017 · Robert Pankowecki

Why would you even want to listen about DDD?

December 26, 2016 · Robert Pankowecki

Safer Rails database migrations with Soundcloud's Large Hadron Migrator

December 23, 2016 · Robert Pankowecki

Patterns for dealing with uncertainty

December 4, 2016 · Robert Pankowecki

One request can be multiple commands

November 16, 2016 · Robert Pankowecki

Hourly Billing is Nuts

October 20, 2016 · Robert Pankowecki

The freelancer in you that wants to be FREE

October 18, 2016 · Robert Pankowecki

To blog or to write code?

October 17, 2016 · Robert Pankowecki

Minimal decoupled subsystems in your rails app

September 30, 2016 · Robert Pankowecki

respond_to |format| is useful even without multiple formats

July 21, 2016 · Robert Pankowecki

Implementing & Testing SOAP API clients in Ruby

July 18, 2016 · Robert Pankowecki

Always present association

July 12, 2016 · Robert Pankowecki

Domain Events Schema Definitions

July 10, 2016 · Robert Pankowecki

Cover all test cases with #permutation

June 25, 2016 · Robert Pankowecki

Domain Events over Active Record Callbacks

May 13, 2016 · Robert Pankowecki

How I hunted the most odd ruby bug

April 18, 2016 · Robert Pankowecki

Custom type-casting with ActiveRecord, Virtus and dry-types

March 20, 2016 · Robert Pankowecki

Using anonymous modules and prepend to work with generated code

February 29, 2016 · Robert Pankowecki

Private classes in Ruby

February 22, 2016 · Robert Pankowecki

Drop this before validation and just use a setter method

January 29, 2016 · Robert Pankowecki

In-Memory Fake Adapters

December 4, 2015 · Robert Pankowecki

Monitoring services and adapters in your Rails app with Honeybadger, NewRelic and #prepend

November 28, 2015 · Robert Pankowecki

Rolling back complex apps

October 24, 2015 · Robert Pankowecki

Run it in a background job, after a commit, from a service object

October 24, 2015 · Robert Pankowecki

Advantages of working on a legacy application

October 20, 2015 · Robert Pankowecki

Sanitizing html input: youtube iframes, css inline styles and customization

September 20, 2015 · Robert Pankowecki

Testing race conditions in your Rails app

September 4, 2015 · Robert Pankowecki

Null Object pattern in practice

August 16, 2015 · Robert Pankowecki

On my radar: RethinkDB + React.js + Rails

April 30, 2015 · Robert Pankowecki

How to get anything done? - 4 tips

March 1, 2015 · Robert Pankowecki

My favorite ActiveSupport features

February 25, 2015 · Robert Pankowecki

Adding videos embedded in a page to a sitemap

February 21, 2015 · Robert Pankowecki

Upgrade capybara-webkit to 1.4 and save your time

February 18, 2015 · Robert Pankowecki

Ruby Exceptions Equality

January 11, 2015 · Robert Pankowecki

It's easy to miss a higher level concept in an app

January 4, 2015 · Robert Pankowecki

The categories of validations

January 3, 2015 · Robert Pankowecki

rails-refactoring.com podcast #1

November 15, 2014 · Robert Pankowecki

Don't forget about eager_load when extending autoload paths

November 9, 2014 · Robert Pankowecki

You can move React.js root component around

October 23, 2014 · Robert Pankowecki

Instantiating Service Objects

October 12, 2014 · Robert Pankowecki

React.js and Dynamic Children - Why the Keys are Important

October 3, 2014 · Robert Pankowecki

Behind the scenes

October 3, 2014 · Robert Pankowecki

React.js and Google Charts

September 29, 2014 · Robert Pankowecki

Adapters 101

August 24, 2014 · Robert Pankowecki

Burnout - do you need to change your job?

August 17, 2014 · Robert Pankowecki

Truncating UTF8 Input For Apple Push Notifications (APNS) in Ruby

August 13, 2014 · Robert Pankowecki

Using ruby Range with custom classes

August 3, 2014 · Robert Pankowecki

4 ways to early return from a rails controller

July 15, 2014 · Robert Pankowecki

RubyMine basic navigation features (that make you move around code fast)

July 9, 2014 · Robert Pankowecki

Service objects as a way of testing Rails apps (without factory_girl)

July 1, 2014 · Robert Pankowecki

Effective async communication

June 13, 2014 · Robert Pankowecki

Would you love to work remotely (and asynchronously)?

June 9, 2014 · Robert Pankowecki

Mastering Rails Validations: Objectify

May 8, 2014 · Robert Pankowecki

Mastering Rails Validations: Contexts

April 30, 2014 · Robert Pankowecki

The biggest obstacle to start with Continuous Deployment - database migrations

April 13, 2014 · Robert Pankowecki

Zero uptime deploy

April 1, 2014 · Robert Pankowecki

Don't call controller from background job, please. Do it differently!

March 20, 2014 · Robert Pankowecki

2 ways to deal with big and complicated features

February 28, 2014 · Robert Pankowecki

Pretty, short urls for every route in your Rails app

January 18, 2014 · Robert Pankowecki

Stop including Enumerable, return Enumerator instead

January 8, 2014 · Robert Pankowecki

3 ways to do eager loading (preloading) in Rails 3, 4, 5 and 6

December 8, 2013 · Robert Pankowecki

Chronos vs Kairos: Find out how you think about time when working on a project

November 21, 2013 · Robert Pankowecki

Developers oriented project management: What our new book is all about?

October 14, 2013 · Robert Pankowecki

Developers oriented project management: Take the first task

October 9, 2013 · Robert Pankowecki

Developers oriented project management: Leave tasks unassigned

October 4, 2013 · Robert Pankowecki

Developers oriented project management: Story of size 1

September 23, 2013 · Robert Pankowecki

Developers oriented project management

September 16, 2013 · Robert Pankowecki

Single Table Inheritance - Problems and solutions

July 27, 2013 · Robert Pankowecki

Are we abusing at_exit?

June 22, 2013 · Robert Pankowecki

Is it cute or ugly?

May 9, 2013 · Robert Pankowecki

Web is no longer request-reply

February 15, 2013 · Robert Pankowecki

Rails API - my simple approach

January 10, 2013 · Robert Pankowecki

Blogging for developers

January 2, 2013 · Robert Pankowecki

Not Rails

November 29, 2012 · Robert Pankowecki

One app, one user, one ruby

November 21, 2012 · Robert Pankowecki

Sending async data from Rails into the world (II)

November 11, 2012 · Robert Pankowecki

Sending async data from Rails into the world

October 17, 2012 · Robert Pankowecki

Filepicker and Aviary - Image uploading on steroids

September 21, 2012 · Robert Pankowecki