Jezen Thomas

Jezen Thomas

CTO & Co-Founder at Supercede.

I Feel Unsafe

I awoke to the sound of a violent explosion earlier than I had wanted that morning. The walls, windows, and furniture vibrated. A cruise missile had struck a warehouse owned by a national supermarket chain, roughly a kilometre from the hotel I was staying in. The russians had fired it – targeting civilian infrastructure as they regularly do – perhaps a dozen minutes earlier. It was June 24th, 2024. The time was 07:03.

Plume of smoke from russian cruise missile attack on civilian infrastructure.
Plume of smoke from a russian cruise missile hitting a supermarket warehouse, shot from the window of my hotel room in Odesa, Ukraine.

This was hardly my first rodeo. Cruise missiles regularly flew over the apartment I was renting in Odesa. The local air defence would light up the sky when attacks came at night; as they often did. One attack in 2022 saw an apartment building struck a few streets behind mine, killing a young woman and her two children. Her husband wasn’t in the building at the time, and distraught by the slaughter of his entire family, he joined his country’s defence on the front line. Ultimately, he died too.

Smoke trail from an air defence missile after destroying an incoming Shahed drone.
Trail from an air defence missile, and the smoke from a successfully destroyed Shahed drone, shot from the kitchen window of my rental apartment in Odesa, October 2022.

With my British passport, I have the luxury of leaving any time living in an active war zone begins to take its toll. My closest friends however, enjoy no such luxury. The russians came to rape, torture, and kill. Neither women nor children are spared. Countless invaders have admitted to the brutality, at times recounting that even small children are executed with a bullet in the brain at point blank range. The Ukrainians have no choice but to stay and fight.


I attended NixCon a few weeks ago in Berlin. Overall I enjoyed the experience; it feels a little less like a conference, and a little more like a get together for the relatively small NixOS community. About half way through the conference, the organisers announced that one attendee had been asked to leave. They were alleged to have made another attendee “feel unsafe”.

I don’t know specifically what happened, beyond someone being made to “feel unsafe”, nor do I have any reason to doubt the accusation (and I’m glad the moderators took the complaint seriously and acted upon it).

What sticks in my mind is the phrase “feel unsafe”. In my experience, I’ve only ever heard this phrase said by people who hold political views radically more left-wing than my own (and for the avoidance of doubt, I’m a bit of a leftie). NixCon – and perhaps the NixOS community more broadly – appears to have an atypically high concentration of people who would describe themselves as Marxists, or Communists, or Anarchists, etc.

Indeed, walking around the conference venue, I spotted at least two dozen Nix hackers with radical left-wing political symbols and slogans emblazoned across their laptops. In the heart of Berlin, the hammer and sickle is apparently fine and reasonable.

My heritage is Polish. I have good memory of my great-grandmother. Her husband, I never met. He died as a slave in a Nazi concentration camp. That side of my family has always lived on the West side of Poland. If they had lived as far East as they do West, then no doubt my great-grandfather would have died at the hands of the Soviets. The Nazis and the Soviets were allied at the start of The Second World War, so to me — and to millions of other Poles no doubt — the hammer and sickle and the swastika are essentially interchangeable.

And the discomfort I experience seeing these political symbols and slogans is not so abstract. The commonly held position among people who describe themselves as Communist today is that Ukraine should not be given the lethal aid they need to defend themselves from a genocide that, to date, by some estimates has seen about a million casualties.

Campaign material from a Danish revolutionary communist organisation saying 'Books, not Bombs'.
Campaign material from the ‘Revolutionary Communist Party’ in Denmark, who are explicitly against arming Ukraine.

The reasoning I have been able to discern for this position is:

  1. Guns and bombs are bad and kill people, so the West shouldn’t make them or send them to Ukraine.
  2. Naziism is bad, and the Communists defeated the Nazis, therefore Communism is good (conveniently forgetting the Molotov-Ribbentrop Pact).

The reason why my closest friends in Odesa are not dead today is because hundreds of thousands of brave Ukrainian men and women have been successfully defending their country from terrorists and barbarians with the use of Western weapons.

To say that Ukraine should not be given weapons is tantamount to saying that all of my friends should be dead. And, I suppose, that I should be dead too. It’s only blind luck that neither cruise missiles nor Shahed drones have struck a building that I was staying in. Although come to think of it, a Shahed drone did indeed hit a building where I used to live. Possibly even the same floor of that building. There have been so many attacks that I don’t perfectly recall.

And yet, I’ll bet that if I were to use the same phrase at that conference — if I were to say that I “feel unsafe” — I somehow doubt that my complaint would be taken seriously. I am — superficially anyway — not a part of the persecuted class, so violence against me is fine.

Is it c? Or is it с?

Someone working on the team at Supercede asked the following question regarding some perplexing GHCi output.

I must have missed something obvious because I’ve been staring myself blind at this for the past few minutes. Isn’t it saying one thing is not in scope and then immediately suggesting that very same thing as a replacement?

ghci> :t API.Handler.V20201001.Types.tscaExcluded

<interactive>:1:1-40: error:
    Not in scope: 'API.Handler.V20201001.Types.tscaExcluded'
    Perhaps you meant one of these:
      'API.Handler.V20201001.Types.tsсaExcluded' (imported from API.Handler.V20201001.Types),

Can you spot the error?

The problem could have been related to some surprising behaviour in GHCi when references are held to old values after their names are shadowed. Or perhaps it was something related to the build cache since we use incremental compilation. But those would have been guesses two and three.

Based on experience — and some luck — here was my first guess.

You know, we had an interesting issue once where a c was substituted for a с. See the difference?

Lo and behold…

Emacs says one is a LATIN SMALL LETTER C and the other is a CYRILLIC SMALL LETTER ES but I would never have guessed. And would you believe – this is indeed what has happened. Wow!

Perhaps this deserves a new linting rule.

Kill on the Cover Letter, but Not Like That

A couple of years ago, I received the following email in response to a Haskell programming job I had advertised.

Life is cheap. I would kill someone for a Haskell job. Thanks for your consideration.

That was it. That was the entire email.

The applicant had attached their résumé to the email, and in fairness the résumé showed that this person would bring relevant and valuable experience to the team.

Now, I do love all sorts of humour, and I’m 99.9% certain that rather than being serious, this person was a little trigger happy with the hyperbole cannon.

But on the off chance that they were serious, how could I have it on my conscience that we ended up with a killer on the team even after they told me about it?! Could you imagine that tribunal?

I’m fortunate that when I do advertise a programming job on the internet, I’m inundated with strong applications. All of the best applications take the form of a brief couple of paragraphs in an email which describe why the applicant believes they’re a particularly good fit for the job. This is what I regard as the cover letter. The résumé should still be attached, but it’s the cover letter I’m reading first.

The cover letter sets the tone. It says “this is who I am, this is my understanding of what you’re looking for, and this is why I believe I’m the right choice.”

The cover letter is the perfect place to make the right introduction.

But, come on.

This ain’t it.