Sergey Mikhanov  

8 March (March 8, 2017)

Say what you want, but there’s no holiday out there that is as great as 8 March.

See for yourself. It has started in the early 20th century as a day to celebrate the movement for equal rights for the proletarian women. “Proletarian” is a key word here: this exact date was proposed by Clara Zetkin, who was a notable communist of her time, at a congress of the Second International, an umbrella organization for communist and socialist parties worldwide. A cynical person may of course say that communists wanted to use women as a tool for their cause. But to my view this is irrelevant — a woman’s life at that time was genuinely difficult, full of back-breaking home labor combined with giving birth to and raising significantly higher number of children compared to now. So this struggle wasn’t ungrounded.

After the victory of the communist idea in Soviet Union, the holiday became widespread in there and in the countries within its area of influence. The original idea of this day celebrating the struggle for equal rights got blurred over the years, and for several decades this day was a feminist nightmare in places where it was celebrated and completely ignored everywhere else. Why nightmare? Here: in modern Russia it normally involves women dressing up for the workplace, men giving them large amounts of flowers and sometimes small gifts, while exchanging silly but charming greetings like “Stay as beautiful as you are now!” This sounds as if it’s taken out of the feminist textbook.

But nowadays things seems to be changing. Countries like UK or US, where nobody previously ever wanted to even hear anything about the Women’s Day, have suddenly rediscovered it. The most common agenda associated with this day here is women empowerment: activists claim that a woman can be a winning Olympic athlete, or a CEO. This surprises me: how silly, they seem to actually have had doubts about that!

I cannot really attribute the great longevity of this holiday and its uncanny ability to bend with the zeitgeist to anything except to how special women actually are. This world surely would have been a much duller place without them.

Happy 8 March!

Learning to stick with the good (February 25, 2017)

For the last few weeks, Facebook has been ad nauseum “recommending” me some company’s blog post about server-side Swift. I was relunctant, but after seeing it pop on my news feed so many times, I clicked it and read about the experience one developer at that company went through to find out whether server-side Swift was ready for prime time. One thing was for sure: to run a very basic API endpoint, he needed to do a lot of hoop jumping. The toolchain wasn’t so easy to use out of the box and the basic things like generating random numbers or JSON parsing didn’t work. Anyways, in the end, the developer proclaims the entire process “tons of fun”.

This sounds like a very questionable idea of fun.

My usual readers would know that I’m not a huge fan of the “everything is awesome, and easy, and fun” attitude that is prevalent in some programming communities, most prominently in Ruby. A healthy attitude of a critical mind comes with a constant feeling that something is a bit “off”, inconvenient, not in its right place, could be done better. Dealing with that inconvenience is what often moves our industry forward, after all. On the contrary, being excited about the need to do anything more than writing exactly one line of code to parse JSON is, to say the least, strange. But then what is actually fun in programming? Most of our profession consists of boring routine, true, but most hackers have certain feeling that being on the forefront of things dramatically change the dynamics in what you do. Even my example with JSON parsing is fun if you’re in the business of writing state-of-the-art JSON parsers for the last eighteen years, of course, — which definitely puts you on the forefront of JSON parsing business.

How to get to that forefront? Well, first of all, it takes time. Writing parsers for all of the eighteen years may be a completely legitimate way of doing this, but there are faster ones still. Join a good team, preferrably in a good company. If this is impossible, learn how to distinguish good teams from bad ones and keep practicing that. If even this is too hard — for example, because there’s not so much information flowing in your circle about what different teams are really like — learn how to distinguish good programming books, good tutorials, good hyped technologies from bad ones. After that, what’s left is just sticking with the good.

Metaphors of software (February 18, 2017)

There is one ridiculously inadequate metaphor of programming, as explained to non-programmers: Programming is just like snapping together some Lego blocks. This one must be familiar to everyone in the world today. It is inconceivable, but sometimes even executives in software companies believe in it. Anyways, a “new” metaphor was making rounds on the internet lately: the metaphor of software development like dealing with transplant organs. Euch.

It’s easy to see why this one is inadequate too. It implies that we know the function of the software that we’re “implanting”. As if nobody ever used software components not in the way its original author envisaged simply because they didn’t know it wasn’t its purpose. There wasn’t (thanks God) yet a surgeon implanting a heart and thinking it actually should function as a liver, but it’s totally normal to see a software developer using a queue as a persistence layer — or vice versa.

What’s even worse, organ transplant metaphor lacks a very important quality: it ignores the context of the world of which software system is inevitably only a small part. A heart is still a heart in 1987, 2007 and 2027. The same software module can either be immensely useful, or painfully useless, depending on the day and age it’s used in.

So I have a better metaphor. Or rather I have seen a better metaphor in the lectures of Alan Key: software components are like proteins in the living organism. Not cells, one level lower, proteins. Like software, proteins are complex, and we need several levels of abstraction to deal with them: both physics and chemistry, as well as physical chemistry and chemical physics need to be applied. Those abstractions are also “leaky”: things that are known in one of these disciplines are routinely not what they appear when considered in a context of another. Proteins interact with each other and their environment according to some grand plan only in an ideal isolated world, like the world of a biological cell. In short, there are several reasons to believe that this metaphor may be a useful one.

Does it help us writing better software? It does, but not in a direct way: it instead helps to see how primitive is what we’ve built so far, and how far we can go. If we’re making parallels with biology, our software is not even at the level of cells, leave alone tissues, organs, organ systems or organisms, and probably will not reach those levels if we stick to our current methods of software development. What’s the way to advance there? I don’t know and not sure anyone in our industry knows it yet.

Ceramics (February 14, 2017)

I started going to pottery classes around August last year. Taking Christmas break in consideration, this means I’m now five months in; my home now has three ceramic pieces it didn’t had before. Finishing a single piece of thrown ceramics turned out to be a long process — not because anything you need to do takes particularly long time, but because almost every step involve waiting after you’ve finished with the active part of it.

First part of making a ceramic vessel we all know: it’s the throwing itself. It does look very similar to what Patrick Swayze and Demi Moore were doing in the Ghost movie.


I don’t find throwing too hard, except for when I want to make something that’s not the same size as my palms. Any piece that is the size of my palms will be shaped into an aesthetically pleasing object almost by itself, such is the magic of the center symmetry.

Once you’ve done with throwing, the internals of your object are finished — but not the externals. Finishing them involves turning a slightly dried up and hardened piece and cutting some excess material off it. It looks like this and it does generate lots of funky shavings.


After this stage, the shape of your piece is complete, but it cannot hold water — it will dissolve if exposed to it — and will cleave into pieces if dropped. So you need to fire it in the kiln for the first time. This is the bisque firing stage, after which your object for the first time becomes true ceramics: it now contains the silica crystals that give it its colour, texture, water holding qualities, its unique feel and hardness.

The last step is glazing, which I won’t even try describing here: it’s a whole craft in itself. If stars align properly, you’ll be rewarded with a finished piece: here’s the very first one I brought home, in green and brown multi-layer glaze, with a mint dragee from Fortnum & Mason in it.

I normally don’t keep pieces that turned into something I don’t like in the process of their creation. My friend told me that I’m making myself a disservice: this way, I’ll know the least about the final, glazing stage. But at least I’m sure that each object I finish is the best I can do at that moment. Let’s see how much better they will get with time.

On the beauty of foreign language prose (January 7, 2017)

Reading long form in a foreign language is always difficult. I was withdrawing myself throughout all of 2016 from doing this — in my usual “provocative” manner, I was telling people who were willing to listen, that I don’t read fiction in English any more, only in my native Russian. The quoted reasons for the withdrawal were pretty simple: when dealing with fiction written in any of the two foreign languages I can speak and read, I can’t tell good prose from bad. Translation happening in my mind nullified any literary merit that a novel can hold. Every time I was trying again to put myself through a fiction book in English, I was fighting hard the desire to throw it against the wall.

But around a month ago, I began re-reading Pynchon’s “The Crying of Lot 49”, for which I had a Russian-translated copy. I first read it in 2002, liked it a lot back then, but never came back to this book — until recently. I took it from the bookshelf and standing, without even walking away from the shelf, read a first translated chapter.

What a terrible text it was. Participle clauses, climbing onto each other, like monkeys on the rock. Clearly, my literary tastes changed in fourteen years. But look, Pynchon is expected to receive a Nobel Prize in Literature every year now — this book can’t be so bad, I thought. So I immediately went on and bought an English-language copy: it’s just 160 pages, how difficult can this be?

The Crying of Lot 49

I finished it today. I know that some languages differ structurally from others; this means, you can’t keep the same order of sentence parts when doing translation between them. It looks like this issue hits Russian translation of “Lot 49” the hardest: the same participle clauses flow smoothly in English, evoking quick, vivid glances into different parts of the author’s universe as we proceed through just one sentence. Having the capacity to trigger some sophisticated imagery is what we love literature for, after all.

And what about all that “nullification” of the foreign words’ beauty in my head? Pretty simple — just read good books.