Arhuman's Blog

I’m a 52 years old French guy, father of 2 boys and a princess.

I’m an entrepreneur paid to solve complex problems involving computers, usually by building tools (software) or manipulating huge quantity of data, or sometimes coaching or managing people. On my free time I like to do the exact same things as it’s my passion. (More references on my Linkedin profile)

I’m an unorthodox person, so instead of trying to paint an inaccurate portrait of myself, here are some facts:

  • I’ve been coding since I was 13 (it was in BASIC at the time).
  • I first installed Linux in 1993 (it was a Slackware)
  • I loved Perl enough to create a user group and (co-)organize national event.
  • I’m a proud Gopher (and produce a podcast about Go language in French)
  • In a previous life I did quite a lot of security (and even hold a specialization in Cryptography)
  • I like to solve complex problems
  • I practised many Martial Arts (Arnis, Vo Thuat, Muay Thai, Pencak Silat, Tae kwon do, Brazilian Jiu Jitsu)
  • I coded in many languages (including COBOL,)

If you prefer more conventional information or need references, see my Linkedin profile

The Logging Dilemma

Arnaud (Arhuman) ASSAD

Every developer has lived through this scene: the adrenaline spike when a production incident is announced. That mix of dread about what you are going to find and frenzy to collect any piece of information that will let you understand and then fix the problem. It happened to me again a few days ago. I can still picture myself rushing to the logs, and I still remember the frustration of finding nothing but basic information and an unhelpful error message: “Unable to load cache”.

Compressing time to compress logs

Arnaud (Arhuman) ASSAD

This morning, I had fun compressing time.

But before you picture me as a theoretical physics genius or a crackpot in need of a straitjacket, let me explain.

I am currently working on Metarc, a metacompression tool (understand: applying smart transformations to certain structures before handing off to a classical compressor like zstd). If you have never heard the term, you will understand in 5 minutes. If you are a compression expert, hang on, you might find food for debate.

The Architect Who Never Laid a Brick...

Arnaud (Arhuman) ASSAD

…and How AI Made Him a Mason

My psychological profile is INTJ1, also known as the Architect, and I spent a good part of my life proving that this label fit… in the worst possible way.

Years of having a multitude of ideas

  • on analysis systems (Blockchain, Productivity)
  • on personal development methods (Memory, Discipline, Learning)
  • on algorithms (routing, metacompression, encryption)
  • on tools (format conversion, project management, system administration)

Years of producing hundreds of ideas in a row, for nothing, or worse, only to see some of them realized by others years later.

Metacompression: compressing structure before bytes

Arnaud (Arhuman) ASSAD

What if the real gain wasn’t at the byte level?

I have always been fascinated by compression algorithms — I was 15 when I “invented” Run Length Encoding (before learning it had been discovered more than 20 years before I was born).
I marveled at the visual simplicity of Huffman coding, and at the cleverness of Lempel-Ziv which dynamically builds its dictionary.

These algorithms are powerful, and it is no coincidence that they are continuously improved and combined to produce increasingly more powerful algorithms: Brotli, zstd.

Less is More: Why I Replaced Git with Jujutsu.

Arnaud (Arhuman) ASSAD

Introduction

In computing, the aphorism “Less is More” comes up often. With Jujutsu (jj), it takes a very concrete form: a simpler mental model can reduce the daily friction of version control.

In this article1, I will not try to “prove” that jj is superior to git. I will show, on a concrete case, why some common operations: interrupting work in progress, reorganizing changes, fixing a non-atomic commit or resolving a conflict, become more natural with jj.

What if your OOM was not just a memory problem?

Arnaud (Arhuman) ASSAD

Sometimes an investigation tells a different story than the one you expected.

That’s what happened to me recently while investigating why a pod was ending up OOMKilled two to three times a day.

A quick look at the memory of the incriminated pod doesn’t show the typical rising curve of a memory leak. I’m missing data just before the OOM (because it’s always when your metrics system is migrating that this kind of incident happens), but with the day’s data, the cause seems to lie elsewhere.

The Programmer's Extra Touch of Art

Arnaud (Arhuman) ASSAD

Faced with an AI capable of compiling our intentions into working programs, I ask myself: does our craft reduce to assembling syntax, or does it hide a dimension that is by nature beyond computation?

I was 17 when I finally got my hands on “The Art of Computer Programming” by Donald Knuth. At the time, in 1989, reference books on programming were rare and the 4 volumes of TAOCP had the status of a “bible”; it remains for me a reference work that every computer scientist should read.

TDD's Ignored Advantage

TDD's Ignored Advantage

Arnaud (Arhuman) ASSAD

Lately, chance has had me hearing a lot about Test Driven Development.

Often around the old “TDD is dead” theme (https://dhh.dk/2014/tdd-is-dead-long-live-testing.html) and with the same questions resurfacing:

  • What is the definition of the different types of tests?
  • What is the ideal code coverage percentage?
  • How do you handle flaky tests? Slow tests?

And if I address these questions quickly today, it is more for completeness than out of real interest. These questions are not specific to TDD; they are common to software testing as a whole.

Perl average salary

Perl average salary

Arnaud (Arhuman) ASSAD

What is the average salary for Perl programmers in 2020?

If I have no definitive answer on this, the Business Insider has some insights:

HackerRank polled 116000 developers about their salaries and got interesting results:

  • Perl is associated with an average global salary of $84,025.50 (54.2% higher than the global average salary)
  • Scala is associated with an average global salary of $77,159.60
  • Go is associated with an average global salary of $72,691.30
  • Python is associated with an average global salary of $56,670.90
  • JavaScript is associated with an average global salary of $55,690

Without more information about the polled panel it’s hard to state this results as “Truth” but they seems to confirm personal beliefs:

Perl in 2020

Perl in 2020

Arnaud (Arhuman) ASSAD

Why Perl in 2020?

“Nobody use it. It’s a dead language. It’s a technology of the past…” Are the kind of statement you’ll be likely to hear about Perl nowadays.

Nonetheless, I’ve landed one of the most exciting mission I’ve ever had because of Perl. I’ve met great people, because of Perl. I’ve solved issues in no time, because of Perl.

So, there’s no chance I’ll drop Perl any time soon.