This blog has continuous integration

It’s probably not a surprise for most of the people reading this blog but I am a software engineer. And as such I spend most of my time writing code, checked in a VCS, reviewed by peers and analyzed by tools before being deployed.

Isn’t it only natural that the content of this blog followed the same rules?

Clusters and data sharding: introducing rendezvous hashing

In a previous article, I started playing with distributed systems by implementing a distributed key-value store.

I used SWIM to create a cluster, know its members and monitor their health. But I still didn’t touch the main feature of my store: actually distributing data. Now is the time to address that.

Questions I ask in an interview

As I currently am looking for a company to work with, I took some time to think about some questions to ask in an interview to gain some insight about the company, its culture and how it works.

Clusters and membership: discovering the SWIM protocol

Have you ever wondered how Cassandra, Redis, Riak, and many others could maintain a cluster? How can a cluster detect nodes addition, nodes removal, nodes failures and keep its state consistent across all the other nodes?
Well, I have. And in this post, we’ll see two of the protocols that this type of service relies upon for their failure detection and memberships.

Best practices for exploitable logs

« What to log? » — That’s the question I often ask myself when I launch new projects or work on existing applications.

And by « what », I mean which events should be logged? Using which format? Where should they be sent?

To answer these questions, we need to ask ourselves why do we need logs in the first place?

Write documentation as tests in PHP using Rusty

Languages such as Python or Rust provide an interesting way to document code: they write code samples inside their documentation and they make them executable. Rusty is an attempt at implementing the same idea in PHP.

Use cases for PHP generators

Despite being available since PHP 5.5.0, generators are still largely underused. Let’s see what how awesome they are through real-world cases.

TIL PHP ::class keyword

The ::class keyword look like it can be used to assert that the generated FQCN will point to a valid class. Guess what: it cant.

Done with school.

That’s it. After five years spent learning computer science in various schools and universities, I’m finally free!

TIL Why is uniqid() slow?

While profiling RulerZ with, I noticed that a non-negligible amount of time was consumed by PHP’s uniqid() function. I found it odd that it consumed so much time and started to investigate why.

TIL Parallel bundle install

In ruby projects, the bundle install command is known to be quite slow. To mitigate this, Bundler provides an option allowing to install gems using parallel workers: bundle install --jobs 4. Just tell Bundler how many concurrent jobs can be launched and let it work.

New life, new blog

I launched my first blog in 2007, when I started to attend lycée (the American equivalent would be High School I guess, something like 9th or 10th grade). While most my posts were kinda tech-oriented, the rest of them were… well let’s say that I was young and that I’ve evolved since!

Symfony best practices

Digest of my best practices for Symfony projects. They are given as is, in no particular order and are far from being exhaustive.