Cool Tech I Use
Below you will find a non-exhaustive list of the tech I am (sometimes) proficient in or use on a (almost) daily basis. I will try to keep this list up to date as I find new cool stuff to learn or feel like I have progressed in a technology.
I will also try to denote my skill level in each technology like so:
- π - Zoominβ: I have mastered this technology and have used it to build production grade applications.
- π« - Takinβ off: I am confident in my abilities but there is still a lot to learn.
- π - On the rails: Getting a hang of it, a few more projects and Iβll be ready to take off.
Table of contents
Open Table of contents
Frontend
This is where my career started and the place I am most comfortable in.
π React/Preact & Next.js
Needs no introduction, the most popular frontend framework out there that is going through an identity crisis at the moment. React
was the first big library I learned and has been with me ever since (I will never forget all the time I spent on optimizing that damn thing)
π« SolidJS
A new kid on the block, blazingly fast π₯, SolidJS
is in my eyes the framework React
shouldβve been! Iβve been following SolidJS
for a few years now and I am very excited to see its future. Its ecosystem is still very small however compared to his larger brothers.
π« Astro
What is there not to love about Astro
? To save us some time, Iβll just straight up say this: nothing! After all the years with clunky tools such as Gatsby
and older NextJS
, Astro
is truly a breath of fresh air.
π React Native/Expo
Need a mobile app? React Native
has you covered. With some smart coding, sharing code between your web and mobile app is a breeze. The Expo
toolkit is also worth mentioning toolkit at it provides a great DX boost.
π Svelte
Svelte
caught my eye as a very easy to use framework that can be quickly iterated upon. For me at least however, this framework is far too magical as I prefer more control over the code I write. While Iβm sure everything is possible, I havenβt felt like doing a deep dive into Svelte
just yet.
Backend
Isnβt backend just like parsing and sending back
JSON
?
π NodeJS
For smaller projects, node
is a great choice. While it will not win any performance awards, it allows you to code up a whateverRPC
/REST
/GraphQL
API in no time. As a benefit, you can also share code between your clients and servers, such as types and validation schemas. By using fastify
(even on top of NestJS
for example), you can get some pretty reasonable performance out of a language that was supposedly created in 10 days.
π« Axum/Actix Web
The techempower benchmark speaks for itself, these guys are on another level. How does it feel to be able to process thousands of reqs/s on a tiny EC2 instance? Put one of these bad boys on your hot path and watch the carnage unfold. Yes, learning Rust is difficult, but it is worth it. Also, Rust loooves gRPC
(tonic
), what an unexpected powercouple!
π« PSQL/MySQL/Vitess
When it comes to app development, a DB is not a place to be experimenting. Data loss is no joke and using battle hardened tech such as the aforementioned is a good idea. Unless you have a very specific use case, there is not much that can go wrong when choosing a good old trusty RDB.
π RabbitMQ/Kafka
I find this technology fascinating, however there have not yet been many opportunities for me to use it. Still, would love to learn more about asynchronous messaging and data processing, and how it can be used to build more loosely coupled and resilient systems.
CI/CD, DevOps & Cloud
Why is the build taking so goddamn long?
π Gitlab CI/Github Actions
The ability to integrate your changes confidently is priceless. A good CI workflow is from my experience one of the keys to moving quickly and not breaking things. A correctly setup CI pipeline is not a small part of this effort, being able to get fast and accurate feedback from it is crucial.
π« Kubernetes
The infamous Kubernetes - we all have a love-hate relationship with it but couldnβt imagine being without it. As our applications get larger and larger, Kubernetes almost becomes a necessity (it just makes things so much easier).
π Terraform/Pulumi
Provisioning resources in the cloud is always a pain for me. Luckily, IaC tools make this a much more enjoyable experience. Collocating resources required with the projects themselves also brings a ton of benefits and allows developers to manage resources themselves, reducing unnecessary bureaucracy. Need an S3 bucket? Write a few lines of code and youβre done, the system will handle the rest.
Misc
Iβm not sure where to put this stuff, but itβs cool!
π« Haskell
Everybody knows that a monad is a monoid in the category of endofunctors, what is it good for though? To be fair, the build system leaves a lot to be desired (stack
is doing gods work in this space). The language itself however is a joy to work with, especially for use cases that are quite difficult to model in other more traditional languages (DSL parsers, content filters, property based testingβ¦). FP patterns are very useful in other languages, think errors-as-values, immutability, pure functions and ADTs.
π k6/xk6
How do I know how my system behaves under load? k6
is a great tool that will test exactly that, providing us with an easy to use library for load testing. k6
is not limited to just load tests however, e2e tests are also possible and are intuitive to write. Another great tool for this would be playwright
.
π Linux
I use Linux btw.