servlet mapping

Tricky servlet mappings!

Last week, I wrote about the creative use one can make of Filters by grading assignments of students. About, there’s another recurring issue that warrants a blog post: servlet mappings. While servlet mappings seem easy on the surface, they sometimes can be the cause of huge headaches. The issue In the assignment mentioned above, students have to create a mock e-commerce shop application. The home page shows a title, an introduction phrase, as well as a catchy image. The issue is that th

filters

A creative use of Filters

I’ve just finished grading the assignments of my students for the semester. I change the assignment every now and then. The current one is a very simplified e-commerce shop. The main feature revolves around a couple of screens, and cart management: The product detail page is mainly composed of the product detail component. One can add one such product to the cart by clicking the Cart button The products list page aggregates a couple of product detail components. One can add one for each

Git

Inserting a new commit in the Git history

Most tutorials about Git history rewriting state that history should never ever be rewritten. Like all principles, it depends mostly on the exact context. The principle should probably be updated like this: Public Git history should not be rewritten The reason is that once the Git history has been pushed, it has been made public: other developers might have started working on top of it. Then, and only then, is rewriting the history an issue. It also means that sometimes, there are reasons

productivity developer

On developers' productivity

In this post, I’d like to tackle some widespread thought found in software development’s circles: the magical creatures known as 10x developers. If you’ve been working in a software development team, even for a short period of time, you probably came to the conclusion that some developers contribute more than others. I came to this conclusion already some years ago: I noticed that some developers get their tasks done more quickly, other less quickly. Common sense also agrees t

blog jekyll asciidoctor plantuml cloudflare

My blogging stack and publishing process

I know a lot of people who have interesting things to say: when I can, I try to encourage them to write their own blogs. I think every developer who has interest should do it, with the minimal hurdle possible. However, for reasons I cannot fathom, Medium has become the blogging platform of choice. Let’s face it, while the platform is okay-ish for non-technical posts, it’s not adapted for subjects that involve code - and formatting.

readable code software development

Even more readable code without if-else

A couple of years ago, I wrote a post focused on how to avoid sequences of if-else statements. In that post, I demo several alternatives: the usage of proper OOP designmapswhen there’s no return, switch statements in a case. Recently, I stumbled upon a slightly more complex use-case. This post describes it, and details what additional options are available in Kotlin. Modeling a simple if…​ else sequence Let’s start with modeling a simple sequence of if-else statement

programming language Kotlin Elixir

6 interesting features in programming languages

Java is the first language that I learned and used professionally. It has been my bread and butter for about a decade and half years. And yet, it’s not the only language I’ve learned nor used in all my years: for example, a long time ago, I’ve had to develop JavaScript code to implement a dynamic user interface. At that time, it was called DHTML…​ A couple of years ago, I also taught myself Kotlin, and never stopped using it. Last year, working for a new company, I t

Kotlin API design extension function

Write extension functions for your own classes in Kotlin

A recent question on Kotlin’s Reddit came to my attention lately: 'Why is it bad to write extension functions for classes that you own?' One of the answer was that it was the opposite: it’s a good practice, and for several reasons. Among them were two very important ones that improve the design of one’s code: Able to call the function on a nullable. For a class with generic types, add a function that is only available when a specific type is used.

CI CD

There's no such thing as CI/CD!

Recently, I became aware of a trend that has been growing since too long: conflating CI and CD into the same word group - CI/CD. When this is done by marketers, this is business as usual, a mix of buzzwords and hype that shouts 'Look at me!'. But when this is repeated by professional software engineers, I start to worry. And this is exactly what’s happening right now. This post is meant to be a snapshot of my thoughts that I can refer others to in order to dispel the confusion I believe is

Docker design

Composition over inheritance applied to Docker

This post is neither a recommendation, nor even a suggestion. It’s just me toying with an idea: Implement it at your own risk! The main benefit of Docker containers is that they are self-contained. For developers, that means one just needs to inherit from the desired Docker image that contains the necessary required dependencies, and presto, one can build one’s application deliver it to production. Most of the times, the process is pretty straightforward. Containerization allows