Tony Aldon's face with glasses
Send me an email at

Tony Aldon's CHANGELOG

Functional Lisp Programmer

2018-now • Switch to programming
A quitter never wins and a winner never quits. —Napoleon Hill

In 2018, at the age of 32, I moved from Paris (France) to Madrid (Spain) to live with this beautiful Spanish woman who became my wife.

I realized that if I wanted not to screw up this relationship I had to change. I couldn't continue to start working on a subject somewhere and stop after a while to try something new.

I decided that I would make money in the tech world and build my career in that area. The next day I started programming.

And guess what?

I love it. I love every aspect of programming. I've never felt like this before. You know what I mean, this feeling when you do something and it feels supernatural to do it. I didn't expect that, but I found my passion.

First, I wrote my own keyboard layout (I got a RSI when I played guitar, I didn't want to repeat the experience).

Then I spent some time writing buggy programs and asking Google to solve them. Often, someone on Stackoverflow had already given the answer I was looking for.

Then I gave the talk Using PyPi and docopt to create and share command lines at PyConEs 2019 and the talk Don't wait! Write your own (ya)snippet at EmacsConf 2019.

Then, I grew tired of seeing this phrase on Stackoverflow: go read this part of the documentation. So, I started to systematically read the documentation of the programs I use. Often, I would end up reading the whole documentation. I remember the first documentation I read entirely was Pro Git. Really worth it.

Over time, I started to notice that the best documentation cannot rival the accuracy and detail of the source code. I know that we don't always have access to the source code, but when we do, I go there and read it. And if you use ripgrep or grep wisely you can get some important insights about a codebase really quickly.

(Although, I must qualify this statement, because sometimes running programs have functions and variables that have been generated at runtime by macros, and you won't find those functions and variables in the code base.)

Anyway, now my workflow is:

READ, READ, READ, WRITE and LOOP until it works.

As it is really comforting to write code instead of taking the time to read (because when you're writing code you feel you are doing something important to solve your problem), I always remind myself that a normal reader can read 150 words/minute and a good reader up to 450 words/minute. And I compare it with a really great typer that can type up to 80 words/minute. No comparison. The good reader that knows how to write will always produce better code and sytems than the good writer but poor reader.

I really believe that good programmers (as good athletes, good engineers, good artists, …) know how to get the best of their tools. It took me quite a while to get control over my programming environment. During that process, I gathered some notes on Linux that you can browse at

At the same time (mid-2020), I started sharing some knowledge about Emacs (both my lisp playground and faithful companion) with the video series Inside Emacs.

The video that got the most likes is The bases of Org Spreadsheet and the video I am most happy with is tables, code blocks, the magic of org-mode (It's a must watch till the end!!!).

Most of the code I've written so far is in emacs-lisp. And recently (October-November 2021), I released two Emacs packages:

  • org-bars which provides org-bars-mode, a minor mode for org-mode that adds bars to the virtual indentation provided by the built-in package org-indent, and,
  • bfs (Browse File System) which implements for Emacs a dynamic tree view of the file system à la ranger.

If you think I can be the kind of programmer/teammate you want on your team, send me an email at or a DM on twitter @tonyaldon

What did I learn?

  1. Behind every great content is a great story.
  2. There is always a solution, and there is always a simpler solution.
  3. Don't be smart, be effective. If people have already done something well that you can use to achieve your goal, take it. Don't lose your time inventing something that already exist just to be able to say that you've done it, it's stupid. Take it and move on. Go to your next step.
  4. High performers take care and craft their tools.
  5. Each time you make a decision that makes you lose information about your system, 99% of the time, you're making the wrong decision. Information is what makes you make informed decisions. Making informed decisions is what makes you win.
2012-2018 • Trial and error
It's hard for everybody, the only thing you have to do is sit and play your guitar. —Jean-Yves Casala

During this period I tried to be and to do too many things.

While I gave my best in everything I did, I switched too many times to be a good coworker and teammate.

It was just about me, me and what I want to do for me and not where can I be helpful to an organization, to a project, to a team, where can I be helpful to people!

I taught teenagers mathematics in high school which I really enjoyed. Then I went back to college to specialize in statistics and data science for one year. Then I worked on the R package CLR (Curve Linear Regression via Dimension Reduction) at EDF. Then I quit. Then I did some python in a startup. Then I quit.

If we had been colleagues at that time, you could have said that I was a cool guy and a hard worker but also that I left to work on something totally different.

Then I realized my teenage dream of being a musician. I wanted to play guitar for people, I wanted people to be happy listening to me. I don't know if you've ever thought about that before, but the fastest way to get an audience is to go out and play in the street. So, I started playing in the street and then in the subway.

The best moments to play in the subway are early in the morning when people go to work and late at night when people go to parties. It was hard, but I really enjoyed the contact I had with people.

When you play with your heart, people give you ten times more back.

Once, it was the evening, it was cold, and a couple of musicians stopped to listen to me. They were in love. I thought: I'll give you the best interpretation ever. I played. They listened to me. They hugged each other. They kissed. They both gave me money. And they asked me: can we play something for you? They played for me. It was a special moment.

If you want to listen to what I was playing at the time, there are still 3 songs available on Soundcloud (Tony Martin).

What did I learn?

  1. Working hard is not enough, you have to have a goal.
  2. Who do you want to be? I wish I had an answer to this question earlier in my life. Because when you don't have the answer, (perhaps because you've haven't thought enough about it), you're probably making the wrong decisions. And you're definitely not optimizing your decisions for the things that matter to you.
  3. Each time you quit, you tell the world: you can't count on me. Each time you quit, you decrease your trust capital. I used to be a quitter. I wish I wasn't but I was. If you're reading this, it maybe because we are going to work together and you're gathering some information about me. I hope what I'm doing now shows you that you can count on me.
2006-2012 • Mathematics
Since there is no better way to understand, there can be no better way to teach. —Henri Lebesgue

I went to Pierre et Marie Curie university (now part of Sorbonne University) where I graduated with a masters degree in mathematics and passed the competitive examination to be a high school mathematics teacher (Agrégation).

Algebra and cryptography were the domains I enjoyed the most. One day you learn that 1 + 1 might sum to 0. Another day, you learn that in projective spaces parallel lines have the infinity point in common. And without realizing it, one day you learn that on top of elliptic curves you can define a group structure (ie. you can define a + operation that applies to the points of the curve: each time you add two points of the curve, the resulting point belongs to the same curve).

This was just amazing. I had a really great time.

If you had wanted to meet me then, you should have looked for me at the library, I spent all my time there. Reading, struggling, solving… Again and again and again.

What did I learn?

  1. You'd better learn how to trust yourself. Authors are humans, books contain mistakes and if you come with a solution that belies what's in the book, you might be right.
  2. Mathematics is an infinite game. I mean, there is always another level of abstraction that can help you better understand the level you are in. It's up to you to know if you want to work hard enough to get to that next level.
  3. Mathematics is about symbols, language and imagination, all combined together.