Blog posts

Update state with useReducer synchronously
Hooks in Reacts are wonderful to work with and managing local state is one of the most common ones. For more complex states the hook could be changed to a instead. A problem we might encounter is that state isn't updated synchronously…
Partial types in TypeScript
TypeScript is great for many reasons and when getting past the first few steps it really makes developing a joy. With that said there may come a time when objects keep growing in size and maybe not all properties will exist all the time…
Difference between dependencies, devDependencies and peerDependencies in npm
When creating a new npm project, all those with a in the root directory, we usually don't create everything from scratch but need some dependencies. There are different type of dependencies that can be somewhat difficult to keep apart. I…
Quiet Keyboard Build - KBD67 with Zilents v2
Time for another build. For this one I wanted it quiet and small but still with nice, tactile switches. My current board had Zealios v2 67g but they were slightly too heavy and way too loud to be my daily driver. The tactility was great…
Conditions in CSS with the :not pseudo class
When writing CSS we sometimes want some more logic to our styling. For example a navigation with multiple elements in a horizontal layout probably needs some space between the elements. A could do it but we don't want to apply it to the…
Put GraphQL fragments in their own files in Gatsby
Gatsby uses GraphQL under the hood for managing data and it does this really well. It usually doesn't take long before the queries grow big and some duplicated code will occur. This is where fragments come in handy. A way to break out some…
Update nvm installed node version and keep globally installed packages
Node Version Manager is great for managing and working with different node versions but can be a little tricky to update to a newer version the first times. Especially if you want to keep all the globally installed packages. It’s actually…
Update Drone CI to latest version
Drone is a great open source CI/CD running in a docker container that is both easy to use and install. Because it runs in a container and doesn’t require a lot of dependencies installed on your system it’s really easy to update to a new…
Different git config for different projects or clients
If only working on projects with one single git service you won’t have a problem with email addresses differ between accounts. All your commits will always use the same information. But say you are using one service for private projects…
Always write perfect commit messages with Git Commitizen and Husky
We’ve all been there, looking at a function and don’t understand a thing of what it does. The next step is of course look at the commit message, the git blame. That will explain everything for us. Or will it? We open it up and we see this…
Make a TypeScript Node server hot reload on changes with Nodemon
When building a front-end app today it is common to have the app hot reloading in the browser every time you make a change. This can also be done for your back-end app built with Node by using a package called Nodemon. This app watches all…
How to install and configure Drone CI on a self-hosted server
Drone CI is an open source continues integration and delivery platform built on container technlogoy. It is a lightweight and easy to use solution for testing and deploying your projects. Drone is distributed and run in a Docker container…
Keeping a forked repository up to date with the original repository
If you fork an existing git repository and add that fork to your own repositories it will not be in sync automatically with the original repo. That could of course be a good thing if you want to develop the project in your own direction…
Working with multiple git services simultaneously
If you have your git repositories spread across multiple git services, like GitHub for work and GitLab for personal, you can run into problems with your git credentials. Especially if you are using different email addresses, such as the…
Keyboard build - va69m with Zealios switches
I've always loved Varmilos keyboards and their amazing build quality. Unfortunately the firmware is often really bad and leave a lot to wish for, especially the lack of programmability. As with most mass produced keyboards the selection of…
Add HTTP/2 and HSTS to your Nginx site
HTTP/2 has only been out a for a few years but it is certainly time to activate it on your sites now. Compared to the old HTTP 1.1 there are many pros. Requests are downloaded parallel instead of in a queue, greatly improving speed and…
Add HTTPS to Nginx blocks with Let's Encrypt
Browsing the web unencrypted with only HTTP is not recommended anymore and Google recently started to mark all sites without SSL as “not secure” in their browser Chrome. Adding a certificate to your site used to cost money and often meant a…
How to install Nginx and add server blocks
If you’ve been working with web servers for a while you’ve probably heard about Apache. It was pretty much the default solution when setting up a new site on a self hosted server a while back. The classic LAMP stack, an acronym for Linux…
Generate and organize SSH keys on Mac
If you've never heard about SSH keys and are still using passwords when logging in to your remote servers you're in for a treat. Or maybe you already know about SSH keys but aren't organizing them in a good way. Anyway this post will make…