programming language learning

On learning a new programming language

When I started my career, books with titles such as 'Teach Yourself C in 21 Days', and 'Learn Java in 7 Days' were pretty popular. I was impressed that people could read such books. I never thought I could learn a new language in such a small amount of time myself. Time has passed. I’ve come to realize that I’m not alone in that case. Those books just happen to stretch the definition of learning a new programming language - and I’m being polite. In this post, I’d like to d

xml json yaml configuration data exchange

In defense of XML

When I started my career, XML was ubiquitous. The meta-information in a Java JAR file - the manifest - follows a proprietary format. But Java EE designers built it from the ground up on XML: meta-information of all artifacts is in XML format e.g. web.xml, ejb-jar.xml, application.xml, etc. Java EE is one example I experienced personally. But XML was everywhere in the enterprise world at the time. Its prevalence manifested itself in two areas: configuration and data transfer. Ever since then,

Continuous Integration GitHub Action

Customizing your GitHub profile - Building

In the previous post, we had a look on how to write a Kotlin script to automatically write a README that dynamically aggregates various data sources. In this follow-up post, we will describe how to run this script through the use of GitHub Actions. Yet another Continuous Integration tool It has been some time since Hudson, now known as Jenkins, was the leading (only?) Continuous Integration server available on the market. The last years has seen an precambrian explosion of alternatives: Atlas

GitHub Kotlin Kotlin Scripting Freemarker

Customizing your GitHub profile - Scripting

Recently, GitHub allowed users to customize the appearance of their profile page. This is different from GitHub Pages: it allows to add extra content to one’s GitHub profile. Since that feature is available, a lot of developers have decided to customize their page. I think this is fun, so I also wanted to do the same, in my own way. I wanted to describe it, so fellow developers can take inspiration. Since the whole process is a bit long, I’ve split this post in two parts. This par

software development fixed price time and materials build or buy

On house building and software development projects

Not long ago, I came upon a LinkedIn post. It’s in French, but the theme is about sharing risk between the customer and the contractor in software development projects. To sum it up, the author is advocating for the Agile way: fixed-price contracting puts risk on the shoulders of the contractor, while time-and-material gives responsibility to the customer. Some commenters showed surprised that we, software developers, are not able to precisely assess risks by ourselves. They compare softw

GitHub Actions Continuous Integration Maven release management

GitHub Actions and Maven releases

I like GitLab a lot. Yet, there’s no denying that GitHub has become the de facto standard to host Open Source projects. With GitHub Actions, it’s now possible to implement entire Continuous Integration pipelines without leaving GitHub. In this post, I’d like to highlight how to release Maven artifacts using GitHub Actions. Maven prerequisites Before creating the CI pipeline - and running it, it’s necessary to configure the underlying Maven project. A quick Maven pr


Handcrafting your own SVG

A couple of months ago, I wanted to design a custom logo. The goal was to create 4 different variations for a single logo: horizontal, vertical, 'condensed', and square. All have to display the same bevel-like effect. I’m a developer, and not a web designer For this reason, I chose to use an existing point-and-click web application to create a SVG. It did the job. But I’m curious, and checked the generated XML: I was disappointed. This post aims to describe the lessons learned wit

date time timezone IANA

Date and time gotchas

Developing software requires to model the world. We, we developers, generally assume that models are regular. It always comes as a surprise when they are not. All models are wrong, but some are useful. When it comes to dates, a calendar is a model of organizing time into days, weeks, months, and years. A date references a specific day in a specific calendar. During the course of history, there has been changes to calendars e.g. from one calendar to another, or even within a calendar. In

blog writing advice

Advices on writing blog posts

At work, I’ve recently been asked to advise our engineers on how to write blog posts. A lot of such articles are already available. However, they tend to focus around two main themes: The technical publishing platform e.g. Jekyll, Medium, etc.Metrics e.g. readability score, SEO, etc. Beyond that, everyone is on one’s own. But I believe that writing a good technical article is as much art as engineering. In this post, I’d like to try to address this gap: I’ve been writi

testing typology unit testing integration testing

Different kinds of testing

The subject of testing is vast. It may seem simple from outside, but it’s not. For example, one may define testing as checking that the software is fit for its purpose. But it encompasses a lot more: for example, mutation testing verifies that assertions do actually assert. In this post, I’d like to touch some testing flavors, what’s their purpose and how they compare to each other. The need for testing In an ideal world, we wouldn’t need testing. We would just write b