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):

Integretion: 3, Web pages: 4, App Logic: 5, Data fetching: 4, Database: 2, Deployment: 2

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 you cry tears of blood because it is a wonderful mess. Plus, 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

It 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 love what it allowed me to build.

Node.js

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, and it keeps getting better.

There is no denying compiled languages will always have an edge in terms of performance. Still many big companies have adopted Node.js for some part of their backend. There simply are times where the trade between raw power and productivity is a fantastic deal.

I just love how much the Node.js ecosystem has to offer. It feels like the pinnacle of what the FOSS community has to offer.

React

After a few small website projects using plain HTML, then EJS and Express, I felt the need to learn a more modern and structured approach. I went for React, the cool kid on the block, which I found very compelling due to its ability to be used in both web and mobile development.

Let’s not enter into a framework warfare, I’ll just say I love React’s flexibility and the community around it that built countless amazing tools.

For the web, it just feels a bit tricky to implement SSR, routing, handle requests… Ah, if only there was…

Next.js

Next.js! The missing piece to make for a great DX. I love how it takes care of all the boring stuff to let you focus on what matters: building a great web experience. I’m also a big fan of the Vercel platform, which makes it trivial to deploy and manage web applications.

Astro

For smaller, content-oriented projects, Next.js feels a bit like bringing a bazooka to a knife fight. Astro is the perfect alternative for that. It offers just the right amount of abstraction and flexibility to build a static website with a modern toolkit.

To me, Astro stands thanks to its inexistent 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. If you’re a seasoned developer, you can build a static website in a matter of ours and use your favorite libraries and frameworks for dynamic content.

As of September 2024, Astro has become a reasonable alternative to the established leaders on the fullstack JS framework market. It’s getting new features at the speed of light and the developer experience has never been so juicy. Astro can also boast itself to be the first JS framework to integrate a DB! (yeah yeah, long live PHP and all that…)

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 for DX and a customer service on life support.

Adobe Experience Manager may have been impressive over 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.

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, keeping

If anything useful, AEM taught me resilience… and the absolute certainty that I shall forever run far away from any project involving an Adobe product.

Go

Golang has a simply beauty to it that simply 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 {}.

I wish Go was more popular in Europe, because that would kick some serious Java a**.