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 can be projected to succeed the next time with, ideally, zero extra cost. If some configuration has succeeded at altering the state of three servers, it’s a great start on the path to correctly altering the state of 10, 100, and 1000 machines. …
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 architecture around this assumption. …
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 this on the infrastructure level, every piece of data belongs to a strongly-typed immutable event log. This event log is the single source of truth for both the event itself and the domain it contributes to. …
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. …
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.
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 judges. It is the community of like-minded, intensely focused, and for the most part nerdy-looking folks. Virtually every one of them sees solving challenging problems, by means of putting together quite a few lines of nontrivial program code, as one of the most satisfying activities in the world. They won’t trade the experience for anything else, and the World Finals event, testing one’s limits to their fullest, is the ultimate place to be. …
• 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. …