Pierre Chapuis' online journal about system architecture, programming, startups and the separation of concerns.| blog.separateconcerns.com
This post is inspired by a similar post by Sean Goedecke. I said I should do the same; here it is.| Separate Concerns
Since 2017 I have maintained a short list in a file called BELIEFS.md. It is somewhat similar to my Software Architecture Principles but for things not directly related to programming. I have decided to move it here.| Separate Concerns
“Thoughts & Links” are posts mixing topics on my mind and interesting things I have read recently. Less thought out than regular posts.| Separate Concerns
Note: Yes I use em-dashes when I write, and no this is not AI. When I blog I typically only use Harper to check for spelling and syntax.| Separate Concerns
The rapid evolution of AI makes me change my mind often regarding its future evolution. However, since the beginning of the deep learning era, I hold a belief that in the long run the distinction between “training” and “inference” will fade and AI will learn online.| Separate Concerns
“Thoughts & Links” are posts mixing topics on my mind and interesting things I have read recently. Less thought out than regular posts.| Separate Concerns
There is an Ivan Illich quote that I often see in French, for instance in Pierre Pezziardi’s LinkedIn banner:| Separate Concerns
I am attending FOSDEM in Brussels for the 13th time physically. This is an event I anticipate every year, where I get to meet old friends and new people, watch interesting talks, and drink some Belgian beer.| Separate Concerns
This is just a short post to describe how I use the Teal language server. My setup is a bit specific: I use Sublime Text on Arch Linux and I often run development branches of Teal so I run the LSP from source. I will assume you put it in /.../git.| Separate Concerns
I started my professional career almost 15 years ago working for a Machine Learning / Computer Vision company that did image recognition on mobile. At the end of 2013, I chose to leave it for Lima, in part because even at Moodstocks I was always more of a Distributed Systems / Algorithms person than a Deep Learning person.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
If you prefer, the code for this article is also available in a gist.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
Last weekend I attended my 12th FOSDEM, not counting the two years of “remote FOSDEM” due to COVID.| Separate Concerns
Warning: this post includes some spoilers for The Talos Principle 1 and 2. If you intend to play them — and you should! — do it first and come back later.| Separate Concerns
Since I’m back in AI, a recurring question has been whether we are collectively automating ourselves — software engineers and other kinds of tech people — out of our jobs. So, are we? And if so, how long will it take until that becomes a problem, and is this ultimately bad? I don’t have all the answers, but here is some insight.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
The Three Little Pigs is a popular bedtime story, but it strikes me as unrealistic and not teaching the right lesson. So I decided to revisit it.| Separate Concerns
When I interview software developers, I usually ask some variation of the following questions:| Separate Concerns
Ten years ago, I started a French-speaking mailing list about Lua. It was somehow active for around two years, but there was never really enough of an active community for it to keep going. To accompany that mailing list, I bought the domain luafr.org and set up a small static webpage with a few links about Lua in French.| Separate Concerns
I have done that three times now, so it is time to make a quick blog post about it.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
Over 10 years ago, I created this blog and wrote the static generator that powers it. I used Markdown for the articles and lunamark, a library written by John MacFarlane of CommonMark and Pandoc fame.| Separate Concerns
It’s been a week since I left Inch, and now it is time to disclose what I am up to.| Separate Concerns
In two weeks, I will no longer be an Inch employee. I joined the company a bit over three years ago, but it feels like much longer. Back then I had no child, and the first thing the word “Pandemic” brought to mind was a good board game.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
When I was hired at Inch my “official” position quickly became an issue. For various reasons neither the title they wanted to give me initially (Engineering Manager) nor the one I would be given externally (CTO) nor the obvious Senior Software Engineer worked. So I proposed to help them define the next position on the technical ladder.| Separate Concerns
“Thoughts” are posts about what has been on my mind. Sometimes practical, sometimes not; often just things I read recently. Less thought out than regular posts.| Separate Concerns
“Thoughts” are posts that relate to things that have been on my mind recently. Some are practical and some are just reflections on a given topic. They are less thought out than regular posts.| Separate Concerns
Today I attended Lua Workshop, and Roberto Ierusalimschy’s keynote was about Pallene, a language designed as a system counterpart to Lua in a scripting architecture. The language is a typed subset of Lua and can be used to replace C or as an interface between Lua and C. It is still a work in progress, there is no stable release yet.| Separate Concerns
In the list of application architecture patterns I like to use, Dependency Injection comes rather high. Here is how and why I use it.| Separate Concerns
Here I want to discuss a system design pattern that I call “push-to-poll”; if it has another name I am not aware of it. I have applied that pattern successfully a few times, and used systems that did not but should have way too often.| Separate Concerns
I have wanted to play with Gemini for while now, so today being the first day of FOSDEM I decided to do what I would have done if I was in Brussels and hack on something between two talks.| Separate Concerns
Over the years, I have accumulated links to blog posts I intend to re-read every time find myself in a position to influence the early stage of a company.| Separate Concerns
I have been working at Inch for about a year and a half now, so I thought it was a good time to write a bit about what I do there.| Separate Concerns
When I updated my Linux kernel to 5.11 I had the bad surprise to end up with a blinking underscore on reboot. It had been many years since an update had broken my system like that. I fixed it rather easily by booting in rescue mode and downgrading the kernel. I had no time to investigate so I just added linux to IgnorePkg at the time, But I don’t use Arch to run old kernels so today I took the time to fix it “properly”.| Separate Concerns
I haven’t posted anything here for 6 months so I thought it would be a good idea to post a personal news update before the end of 2020.| Separate Concerns
Yet another Quora answer, this time to with this question which I answered on August 24, 2016:| Separate Concerns
Continuing my Quora answers series with this question which I answered on June 26, 2012:| Separate Concerns
From 2011 to 2014, I used to post answers on Quora. I don’t anymore, because I don’t really like what the website has become. I have a copy of some of my answers here but someone commented on one of my answers that it should be available more prominently on the Web, so I decided to repost a few of my answers here, starting with this one.| Separate Concerns
If you’re like me, you don’t want to depend on your phone to log into a website, and you wish your favorite password manager would support 2FA. Well, it can.| Separate Concerns
A few days ago I read this article which made me want to list some of the tools used at the four startups I have worked at so far.| Separate Concerns
You know how some discussions can make you pause and introspect for a while after they happen? Well, I have had such a discussion recently about how strong my opinions are nowadays, and I decided to write something about it.| Separate Concerns
In projects that use SQLAlchemy and Alembic via Flask-Migrate, you may want to truncate the migrations history. By that I mean: rewrite all the migrations up to some point as a single initial migration, to avoid replaying them every single time you create a new database instance. Of course, you only want to do that if you have already migrated all your database instances at least up to that point.| Separate Concerns
Original article| Separate Concerns
In my last post I told you I had plans that I was not ready to talk about yet. Well, the time has come. I am happy to announce that I am now the CTO and co-founder of a startup called Chilli.| Separate Concerns
You may have heard it already: five years after I joined Lima, the company is shutting down.| Separate Concerns
This is just a short post to share what I now consider, after 10 years in the industry (and almost twice as many writing code), my core software architecture principles.| Separate Concerns
If you are like me, maybe you have recently updated your Linux laptop and found out that right click had stopped working on the touchpad. It took me half an hour to figure out why. I was looking at low-level stuff until I realized libinput debug-events saw the right thing:| Separate Concerns
Today marks the fourth birthday of my joining Lima, and it is a good occasion to talk a bit about some of the things I have been doing there.| Separate Concerns
A few weeks ago I was debugging network code, and I needed to check if some| Separate Concerns
This post is a rough transcription of a lightning talk I gave at dotScale| Separate Concerns
In November 2013, I gave| Separate Concerns
On Call| Separate Concerns
Thoughts| Separate Concerns
At Lima, we use| Separate Concerns
It is that time of the year where my RSS feed fills with book recommendations,| Separate Concerns
French politician Axelle Lemaire| Separate Concerns
Even among software people, those of us who work with distributed systems and algorithms are sometimes seen as mad scientists. We use words like like consistency, causality, consensus, commutativity, idempotence, immutability and “impossibility theorems”. How come we have to read papers and tear our hair out just to make software run correctly on a few machines? Are we all failed academics incapable of pragmatism?| Separate Concerns
Clarification: The title is exaggerated. I have never hated LuaJIT, I just went back to using PUC Lua primarily.| Separate Concerns
Travis is a Continuous Integration service which is free for Open Source projects and has very good GitHub integration. We will see how to use it for your Lua projects.| Separate Concerns
It is not a secret that I don’t like Web technology. I prefer XHTML to HTML5, I think JavaScript is a terrible language, and don’t get me started on microformats (let’s just say that SoC > DRY…). I’d rather see this mess replaced by something much simpler that only deals with linked documents and feeds, and maybe a separate platform for portable applications.| Separate Concerns
Two people I respect a lot, Avdi Grimm and Michel Martens, are having an interesting debate about the complexity of programming tools and libraries.| Separate Concerns
These days Linux systems tend to open graphical password prompts when a CLI| Separate Concerns
Several people have asked me what I think about microservices. The tl;dr is: I like small services, but I don’t like what some call microservices, which is isolating every single feature within its own service and aiming at services at small as possible (I heard about a target of “a few hundred lines of code” per service and a hard limit at 5000 LOC).| Separate Concerns
Iris is a “decentralized Cloud messaging” middleware that I have really started looking into with the recent release of version 0.3.0. It had struck me as interesting when I first heard of it at FOSDEM 2014. The reason for that, beyond the great presentation skills of its author, is that it implements principles I think are sound to build SOA upon.| Separate Concerns
Note: I posted what follows as a Gist over a year ago. Recently I was looking for it and couldn’t find it, so I am re-posting it here for the next time.| Separate Concerns
I have just watched a small TEDx talk by Simon Peyton Jones (of Haskell fame) on CS education. Something he said struck me as relevant to what I was saying in my last post:| Separate Concerns
I have long been thinking that there is something wrong with modern product design thinking. I see designs that trade off almost all power, flexibility and composability for a smoother learning curve. I see designs that remove explicit controls and replace them by magic, choosing to hide essential complexity instead of reducing accidental complexity. I see designs optimized for new users and prospects instead of regular users, and designers who apparently consider documentation as something e...| Separate Concerns
Writing a Lisp| Separate Concerns
I have finally decided to configure Sublime Text 2 to have it autocomplete| Separate Concerns
Last weekend I attended FOSDEM, the largest Open Source conference in Europe that takes place every year in Brussels. This was my fourth year in a row. Not much Lua this year, although I saw some familiarfaces. But I did listen to lots of interesting talks which I will try to summarize briefly.| Separate Concerns
Hisham just published an article about his personal guidelines for writing Lua modules. Interestingly, I do a lot of things differently. Let us see how.| Separate Concerns
Thanks to my new job I will have the opportunity to write a lot more C than in the last three years. To prepare for this, I decided to read some old C89 books again and see what I remembered. Here are some of the quirks I had forgotten (or never known about).| Separate Concerns
Goodbye Moodstocks| Separate Concerns
I use different programming languages for different tasks, but the one I prefer is Lua. I have always wanted to use it for the Web, and in a way I already do: this blog is a static website generated by a custom Lua program. I have also written several services that can speak HTTP+JSON in Lua. For larger, HTML-based Web applications however, I have never found the framework I wanted. I have tried severalofthem, but kept coming back to more dependable platforms.| Separate Concerns
Harvest, the Pikadeo crawler| Separate Concerns
Recently I found a rare, ugly bug in a piece of software that had been in production at Moodstocks for 6 months. The bug itself is not that interesting, but the way I found and fixed it is.| Separate Concerns
I found a talk by Werner Vogels, the CTO of Amazon who is a role model of mine, on 21st century application architectures.| Separate Concerns
The State Machine| Separate Concerns
Protocols| Separate Concerns
Advantages of SOA| Separate Concerns
I have not had a blog for over two years. The main reason for that is that writing is hard, so I went shopping on Twitter instead.| Separate Concerns
I used to enjoy predicting how computing technology would evolve; it was like a game for me, and I was not too bad at it. But for a few years I have felt like I could not predict anything anymore. Things went too fast, and that bothered me.| Separate Concerns
Tout le monde parle de neutralité du Net en ce moment. J’ai pensé que ça pourrait être une bonne idée de faire un point là-dessus, parce que j’entends et je lis tout et n’importe quoi, en particulier dans la presse française.| Separate Concerns
Ceux qui me connaissent savent que râler, je sais faire. J’essaie d’éviter autant que possible, mais parfois c’est nécessaire.| Separate Concerns
J’ai l’impression que mon article sur les habitudes consommatrices de temps en ligne avait intéressé quelques personnes. Je vais revenir brièvement sur ce qui est arrivé depuis et en tirer un rapide bilan.| Separate Concerns
J’avais promis que j’en parlerais : comme tout le monde (ou pas), j’ai regardé les vidéos diffusées par Google sur Chrome OS et je me suis fait ma petite idée.| Separate Concerns
Regarder le top 10 d’Alexa peut faire peur quand on connait un peu ce qu’est Internet. Ce classement par trafic est assez représentatif de l’évolution du web ces quelques années. On y trouve évidemment beaucoup de moteurs de recherche : google.com (1er), yahoo.com (3e), live.com (5e), baidu.com (8e) et yahoo.jp (10e). msn.com, le portail de Microsoft, arrive en 9e position, pourquoi pas. Le problème, c’est les quatre autres. Prenons-les dans le désordre.| Separate Concerns
La génération Y perd beaucoup de temps en ligne.| blog.separateconcerns.com
Pierre Chapuis' online journal about system architecture, programming, startups and the separation of concerns.| blog.separateconcerns.com
Code linearity is more desireable than keeping abstraction layers separate.| blog.separateconcerns.com