Stock photo found via Bing Image Search.

The tech scene has largely converged to the understanding that configuration as code is a good mantra.

I wonder when would we embrace the idea of management as code?

As an engineer, I think the largest win of configuration as code over the previously existing practices is that we have killed drag-and-drops and other UI-based operations in favor of configuration files.

And when configuration is stored in human-readable files, it allows us to follow best engineering practices, most importantly reproducibility, code reviews, and integration testing.

If some configuration, say, a new environment or a new deployment, has succeeded once, it…

Image taken from
Image taken from
Image taken from

During the past few weekends I was thinking of a problem that came up at work.

Leaving the details out, a decent chunk of the problem has to do with transforming JSON objects dynamically. According to the rules that by themselves are dynamic. According to the dynamic set of rules that themselves have to be expressed in a JSON object.

Given this part of the problem is very much open-ended — and also is not, strictly speaking, 100% an engineering one — I resorted to a TDD approach of assuming certain product usecases would be covered, and designed the end-to-end…

There generally are two good approaches to building data-driven solutions, with a bad one in between.

Good approach #1: Formulate the problem along with measurable metrics, then employ machine learning, and be open-minded at interpreting and acting upon what that machine learning has discovered, however controversial or contradictory it is.

Good approach #2: Decide up front that the problem is too socially-sensitive, and do not use machine learning to solve it. Collect data, involve humans, and have a human, or a team, responsible for each decision it makes. …

On this cozy planet, at some point long, long time ago, a wheel was discovered:

It was part of, or, as some may say, it gave birth to an ever accelerating technological progress, which, in mechanical engineering, has arrived to the bearing …

Since 2014, I am working on Current: The C++ framework for realtime machine learning.

Realtime adaptive behavior is the theme for backends these days. With Current, we make it easy to add AI capabilities to existing APIs. Training and applying models in early 21st century should be as simple as sending and receiving HTTP headers is since late 20th.

Any bit of data is something machine learning models will need for realtime decision making. This philosophy is the cornerstone of Current. As time went by, it became clear this vision has been the right one from day one.

To enable…

Yesterday I had the privilege to speak at 42.

Hello, and thank you for having me.

First and foremost, let me express my deepest appreciation to Forty Two for boldly shifting the focus of education in IT back to where it should have always been: the fundamentals of software engineering.

In late 2016, Oliver Belanger and Charles Summers gave me the opportunity to explore how the organization operates at heart. Seeing the approach from the inside only strengthened my belief in your mission. …

Folks, we’ve been so amazed by a piece of Sci-Fi a few months ago that we translated it into English.


I am writing these lines as the contestants of the Fortieth Annual 2016 ACM-ICPC have just unsealed the envelopes with the problemset of this year’s World Finals, held in Thailand, on the island of Phuket, hosted by Prince of Songkla University.

For participants, the next five hours would undoubtedly be among the most stressful yet unforgettable experiences of their lives.

The contest floor.

While they are busy, I’m finding it fascinating to rethink the event as a whole several years after being part of it.

The dimension I used to understand well is what ACM-ICPC is to competitive programmers, their coaches, problemsetters, and…

Business communication 101.

New York, Bing Photos.

• Precise messages.
• Short sentences.

• E-mail for what is not urgent.
• Text message for what is urgent.
• Phone call for an emergency.

• Initiate the conversation only when there is a decision to be made.
• Outline that decision to make. In zero or one more sentences.
• Do the research and due diligence before reaching out to a busy person.
• Never bloat communication with unnecessary details.
• Never bloat communication with unnecessary people.
• Do not follow up without giving a busy person enough time to respond. …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store