Git: recover from messy situations

A few years ago, we transitioned from subversion to git for our version control system. There is no doubt that git is much more powerful, although we likely under-use it. But even with the limited set of commands we use, people are still finding the command line interface quite complex, in particular when things get […]

Postgresql logical replication and foreign key constraints

Are you using logical replication? Did you know that, by default, triggers In Postgresql are not fired when a table is updated by logical replication? If you didn’t, you are not alone. This feature is implemented as follows: before updating a table, logical replication sets session_replication_role to “replica”. When the value is “replica”, triggers are not fired unless ALTER TABLE … […]

Freeing task-access objects

Ada was the first language to include support for tasks (aka multi-threading) as part of the language itself. As such, it is often convenient to design a program to include a number of worker tasks that can split the work, and thus speed up the overall program. Here is an example of such a worker […]

Calling inherited primitive operations in Ada

In object-oriented programming, it is often the case that we wantto override a primitive operation from a parent type.While some languages have built-in support for this (for instancepython has the super() operation for that), it is not the casewith Ada. In this post, we will be looking at the classical example of geometricfigures, starting with the parent […]