A passion for learning
Over the past three years, I’ve been diving into the world of IT, exploring everything from programming and networking to electronics and cybersecurity. Looking back, I’m proud of the knowledge I manage to acquire and the challenges I’ve overcome.
I have this belief that as long as I keep at it, there’s nothing I can’t learn eventually. Learning is like putting a puzzle together – each piece adds to the bigger picture, and with time on my side, any puzzle can be solved.
As you will see, most of my knowledge is centered around web technologies. I’m absolutely fascinated by the internet and the possibilities it offers in terms of communication, open-source software, teaching, entertainment, and so much more.
Where I am at
Among the numerous tasks involved in creating a web experience, I am comfortable with both frontend and backend development, and I can also deploy and maintain a web application. Here is a scientifically accurate representation of my current skills (higher means better):
Since I love both front and backend development, don’t be afraid, you can call me with this fancy term: full stack developer.
TypeScript
When you work with web technologies, there is no avoiding JavaScript. Such a sweet and easy language, everybody loves it! Then, you build a medium-scale project and any file more than a week old is basically legacy code that can’t be touched without breaking the whole system.
There is scientific evidence that JavaScript is a contagious disease, as demonstrated by Atwood’s Law.
Any application that can be written in JavaScript, will eventually be written in JavaScript.
— Jeff Atwood
In short, this is no surprise that TypeScript has become an industry standard for projects of any size these days. As developers, we are all masochists for sure, but no one wants to be a martyr.
I have been using TypeScript for a few years now, and I’m very happy with what it allowed me to build.
Node.js
I love how much the Node.js ecosystem has to offer. It feels like the pinnacle of what the FOSS community can create.
An interpreted language can’t be more performant than an interpreted one! You can’t even do multithreading in JavaScript!
— Every C# and Java developer
Well actually, with its non-blocking event-loop based I/O model and Google’s V8 engine under the hood, Node.js is a runtime that offers plenty of performance for many workloads, and it keeps getting better.
There is no denying compiled languages will always have an edge in terms of performance, but handling concurrency is not something every language does well. Many big companies have adopted Node.js for some part of their backend. Also, there simply are times where the tradeoff between raw power and productivity is a fantastic deal.
Sure, node.js isn’t perfect, but it keeps improving and even on areas where maintainers are stubborn (e.g. no TS support), they get challenged by the competition (Deno and Bun) to reconsider their stance. So, long live node.js!
React
After a few small website projects using plain HTML, then EJS as templating and Express as backend, I felt the need to learn a more modern, component-oriented approach. I chose React for this first introduction, which I found very compelling due to its ability to be used in both web and mobile development.
Fun fact: As of 2025, I still have not touched React Native… but someday, surely!
React isn’t the most beloved UI framework these days, but it is here to stay, for better or worse. I can just say I love React’s flexibility and the community around it that built countless amazing tools… Which also means there is a minefield of terrible React libraries out there.
Next.js
I’ve grown to like Next.js. It’s far from being a perfect solution, but the rough edges are getting smoother every year. Thanks to Vercel’s infrastructure, it is trivial to deploy a robust, scalable Next.js application. However, there is a dark side to this.
Since Vercel is maintaining Next.js, they are able to solve problems at the infrastructure level when they design Next.js internal APIs. This means self hosting a Next.js application is far from easy or cheap. When teams choose Next.js as their framework, they often overlook this issue and spend precious resources trying to take advantage of Next.
Vercel is slowly making efforts to make self hosting easier (some internals were barely documented until 2024), but this task remains mostly delegated to open source projects such as OpenNext or SST.
In my opinion, if you can afford the potential vendor lock-in by hosting on Vercel, Next.js is a compelling framework. If you can’t, you’re better off choosing another solution.
Astro
Astro.js is a static-first web framework that relies on Vite for bundling and strives to provide amazing DX.
Astro stands out thanks to its non-existent cost of entry for any web developer. If you’re a beginner in frontend and barely know any JavaScript, you can still transition to Astro to start enjoying the component architecture thanks to Astro’s very own JSX-based templating language. If you’re a seasoned developer, you can build a static website in a matter of hours while using your favorite libraries for highly interactive content.
As of April 2025, Astro has become a reasonable alternative to the established leaders on the competitive fullstack JS framework market. It’s getting new features at the speed of light and the developer experience has never been so juicy.
Did you notice?
This website was built with Astro!
Vue
I was introduced to Vue.js in September 2023 when I joined the team at Emakina to work on the frontend of visit.brussels. I very quickly fell in love with Vue 3’s architecture. It closely follows web standards for its templating, there is clean and understandable setup
before a component is instantiated, its hooks (called “composables”) don’t try to constantly shoot you in the foot… wait, it’s a bit too good to be true, right? Well, no:
- Its composation API works great
- Reactivity is explicit and performant
- There is a great balance between framing the code and leaving some freedom
- Its Typescript integration is perfect
- It’s not reinventing the wheel every three months
- It’s a mature product (started in 2014 by Evan You)
- It has its own fullstack framework with Nuxt
- It has great editor tooling
- The learning curve is smooth
- The docs are pretty good
I think we’ve got ourselves a pretty amazing JS framework, folks!
For complaints about migration from Vue 2 to Vue 3, or the rough beginnings of Vue 3, please move on. Vue is great, long live Vue.
NestJS
In the competitive JS game, people are running out of names for their projects. Between Next, Nest, Nuxt, knowing what’s what is a skill in itself.
NestJS is a backend node.js framework that tries to streamline the architecture of server applications. Its approach is heavily inspired by Angular, which happens to be a great fit for backend.
I discovered NestJS when working with Vendure at Mirahi. All its principles were very new and confusing to me: decorators, modules, services, dependency injection, factories… and an OOP approach in JS!? After some time, NestJS started to grow on me and I actually love it to build APIs.
Docker
Containerization is invaluable for ensuring consistent deployment across different environments. It guarantees that the software runs identically on every machine, from development to production. I like surprises, but not when someone in the room says “it works on my machine”.
While I wouldn’t consider myself a DevOps expert, I’ve gained proficiency in creating Dockerfiles, notably for my latest NestJS projects. I also have experience with Docker Compose, which I use to run my local development environment.
Did you know?
The Docker whale is called ‘Moby Dock’!
Security
No matter what you do in IT, you can’t avoid thinking about security. Call me crazy, but I love to think about how to break things and how to protect them. Input validation, rate limiting, authentication, getting environment variable safe… these are all things that I had to think about when creating my latest NestJS REST API.
Cybersecurity is an incredibly vast field, but I find it essential to know enough so that I can make informed decisions when designing an application.
Databases
The sweet pleasure of data storage, hmmm. It is an acquired taste to enjoy and discuss various database paradigms. SQL is ancient, but robust. NoSQL is modern, but flexible. Relations are important for consistency and structure, but documents are just good enough sometimes. Then, why not have relations between documents? And what are graph databases? And vectors? Yup, you’ve got yourself a good ol’ bottomless pit right there.
So far, I have had the privilege to work with MySQL, PostgreSQL and MongoDB. Of course, for testing purposes, I have also used SQLite.
Adobe Experience Manager
I have worked with suffered the most expensive Adobe product there is to date. People call it the “Rolls Royce” of web stacks. I didn’t know Rolls Royce was making a car with a deprecated Java version, built on top a Frankenstein of purchased open-source projects, hosting it on an unreliable cloud environment, with zero tooling, atrocious DX and a customer service on life support.
Adobe Experience Manager may have been impressive a decade ago, but it has failed to keep up with modern web development. Its outdated and cumbersome architecture destroy developer productivity, making every routine task unnecessarily complex. Despite its enormous cost, AEM barely delivers what a contemporary digital project requires.
I believe the only reason AEM stays somewhat popular is the twisted ability of sales people to sell things they know nothing about.
Fun fact: AEM is stuck on Java 11, which saw its EOL in September 2023. Big companies like Adobe are the reason why Oracle is forced to maintain insanely long extended support
If anything useful, AEM taught me resilience… and gave me the absolute certainty that I shall forever run far away from any project involving an Adobe product.
Go
Golang has a simple beauty to it that can’t be ignored. With a heavy inspiration on the simplicity of C (a no-nonsense syntax) and the reliability of a garbage-collected language, Golang strikes an incredible balance.
I’ve started learning bits of Go here and there when I have time for it, and that feels like a breath of fresh air away from the cluttered JS syntax and ecosystem. You can do everything in Go, but there are rarely two ways to do something… and that’s so great. Code becomes streamlined, logic is expectable, and OH MY GOD error as values are so much better than try {} catch {}
. Plus, its vast standard library means you can many small-scale projects without reaching for a single external library.
I wish Go was more popular in Europe, because that would kick some serious Java a**.
