Sign in

Full time software developer and architect. Freelance UI/UX designer. Computer engineer. Tech enthusiast. Father of three.

Sharing a view into a software architect’s work and how I failed to convince people that change is good, which led me to leave the company.

So what exactly happened?

I started as a developer (later architect) at a medium sized enterprise which had it’s own flagship product. The job mainly focused on developing this product. The domain we worked on was pretty big (finance).

Now, the product had history. Years worth. And like with any software that has a long history, it has technical debt. But what it was also missing was technical leadership. Formally, at least.

Here’s how I implemented Slack’s cursor based pagination specs with DynamoDB, but also included traveling backwards.

Recently I got to work with DynamoDB once again. The service I had to build was rather simple: fetching data from a third party API and using DynamoDB as a cache. If we get a cache hit for the same type of request, we could simply return that and not have to request it from the third party.

For this service we had two identifiable access patterns:

  • A user can request data for a single entity and in this case we used a specific request identifier as the partition key, and request timestamp as a sort key. …

Providing you with a summary on how mocking in Node.js works and an actual production example on how to unit test a Lambda function.

Recently I’ve been working on multiple microservices. Some of these have been small Lambda functions, triggered either by SQS or SNS, and their job is to process the event, then dispatch it forward.

For a long time something always bothered me with Lambdas. I believe it was the fact that I couldn’t get my head around how they should be properly tested. It always seemed incredibly difficult to mock the dependencies, which I could not inject, so we developed routes in the code to get around that. That was way over a year ago.

As I had to work with…

How to use the fail-fast philosophy to find the right tools and setup to build a small, completely free and fast internal documentation website for your team.

I ended up building an internal documentation website using Contentful, Next.js and Vercel in three days

Last week I took it upon myself to try and find out a suitable online documentation tool for our small team of three developers. Our code base had split into four repositories already and I wanted to make everyone’s work a little bit easier. Everyone worked on separate repositories, but needed information on all of them.

There were a few requirements:

  • The tool had to be SaaS-service or serverless (no on-premise installations)
  • It had to be either free or minimal cost
  • It had to allow the creation of static pages, perhaps upload images and contain a search
  • It needed to…

I grew bored of PHP templates, so I decided to have a go with building a website using a headless Wordpress and a React front-end framework. I will outline my experiences with Frontity, a React framework designed for Wordpress, and share a few tips.

I’ve been building Wordpress websites on and off for nearly a decade. It’s quick and easy for a small site, but I would never recommend it to be used for bigger solutions.

At some point, developing those PHP templates gets really boring. You do the same stuff over and over again with very little flexibility.


When a customer orders a website from me, I often do the design, development and deployment myself. Full package. Because of this, I develop templates from scratch. …

Tailwind UI is out with early access, but the component library only contains code snippets built on top of Tailwind CSS. Any experienced designer / developer can make it work without paying.

Login screen I built using TailwindCSS in 30 minutes

As of late I’ve been working with Material UI for a React project. I find such frameworks incredibly helpful when developing an application. I don’t have to write every front-end component myself, nor do I have to write much CSS. Everything works out smoothly and I can just throw a custom theme on top of the framework and it doesn’t look like another Google app.

At my previous workplace I wrote a lot of front-end code. It was just plain HTML and CSS on top of a PHP framework, with a little bit of JavaScript as sugar on top. We…

The second part of this tutorial is shorter and focuses on deferring field resolving to a later stage so we can solve the n+1 problem

In the first part of this tutorial we covered how you can setup GraphQL with PHP using Slim Framework. This part covers how to set up DataLoaderPHP for your field resolvers for query batching.

The repository for this demo can be found on Github.


DataLoader-PHP repository seems abandoned, having it’s last commit made over a year ago. However, for our needs it works just fine. You can search for a more up-to-date repository or build a solution yourself if it does not suit you.

Let’s get started

First off, install DataLoaderPHP using composer:

composer require overblog/dataloader-php

Now we have to add a PromiseAdapter

How to set up GraphQL using PHP with Slim Framework in less than 20 minutes

There are a lot of articles and tutorials about GraphQL. But they are mostly for JavaScript or other languages. There aren’t a lot of tutorials covering GraphQL and PHP. So here’s one.

This tutorial contains two parts.

  • Part 1 covers the installation and setting up of GraphQL using PHP.
  • Part 2 covers using a Promise based tool to defer field resolving to a later stage to use as a solution against the n+1 problem.

Considering you’ve made it so far as to implement GraphQL, I am assuming you have basic knowledge of what GraphQL is and how to use it.

If you are already too advanced to read through this and just want to look at the code, you can visit the repository I’ve set up for this article.

In this article…

Sharing the idea of refreshing authentication tokens while speeding up expiration of old ones; using a whitelist inside Redis.

To start off, this is my first article here. I’ve thought about writing it for a while now. Ever since we planned and implemented what we call a moderately secure way to actually authenticate client-side requests against our API where authentication tokens are refreshed and old ones are rapidly expired.

I thought I’d share the idea. I will not be diving into much detail here by using big code examples.

LocalStorage vs. Cookies

We use JSON Web Tokens as authentication tokens. Tokens are generated when the user logs in with his credentials and contains information such as his username (or id). …


Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store