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, what makes Astro stand out is 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 use your favorite libraries and frameworks.

Astro shines in terms of performance, as it does everything to serve as much static HTML as possible, but it also allows the use of SSR when you need it.

For a rather recent framework, I’m very impressed with Astro and can’t wait to see how it evolves.

Did you notice?

This website was built with Astro!

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.

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.

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’!

C#

Monopolies are bad, Microsoft is mean! Yes, but how good are their open-source products? Turns out, they are pretty nice: VSCode, TypeScript, .NET Core… And it’s been a while since I’ve wanted to know more about the .NET ecosystem, so I decided to learn C#.

Syntactically, it’s very similar to TypeScript, and conceptually, it’s akin to Java, so I feel very much at home here. I’m currently getting accustomed with the language and I’m looking forward to building a new project with it.

Work in progress

This page and my knowledge are still under construction. Come back later for more content!