Recent Posts
Declaring over updating RxJS observables
Coding Jun 2, 2023
Declare how your RxJS observable is computed from other observables. Don't update other observables when your observable changes.
- RxJS
- TypeScript
- Angular
Best of Lodash
Coding Jun 2, 2023
A collection of Lodash functions that are still useful in modern JavaScript.
- Lodash
- TypeScript
Injecting an HTML snippet into every 11ty post
Coding Jul 21, 2022
Learn how to inject a rendered Nunjucks template into every post of your Eleventy blog.
- Eleventy
- JavaScript
Rendering a file structure with Prism in Eleventy
Coding Jun 15, 2022
Learn how to display a file system structure nicely on your Eleventy website with Prism.
- Eleventy
- JavaScript
Why Microfrontends?
Microfrontends Jun 10, 2022
Learn about the reasons to adopt web-component based microfrontends. What can you gain and what are the trade-offs?
Building an idempotent cron job with at-least-once delivery
Node.js Jun 9, 2022
Learn to build an idempotent at-least-once delivery of notifications in a scheduled Node.js batch job.
- Node.js
- TypeScript
- Knex
Showing Plausible view counts in an Eleventy blog
Coding Jun 8, 2022
Learn how to integrate the retrieval of page view stats from the Plausible Analytics API into your Eleventy build process to show them in your blog or website.
- Eleventy
- Plausible
Building an asynchronous batch job
Node.js Jun 3, 2022
Learn to structure an asynchronous batch job in a Node.js application and how to isolate the functionality from the endpoint controllers.
- Node.js
- TypeScript
- Knex
- Pino
Custom-themed Mermaid diagrams in Eleventy
Coding Jun 3, 2022
Learn how to use Mermaid diagrams embedded in your Markdown files in Eleventy. Globally define a custom theme that is used in each diagram.
- Eleventy
- JavaScript
Node.js subcommands without CLI library
Node.js Jun 2, 2022
Learn to start your Node.js application with different subcommands. Implement a server mode beside commands for batch jobs in the same codebase.
- Node.js
- TypeScript
Axios HTTP request authentication with JWT
Node.js May 26, 2022
Learn to authenticate outgoing HTTP requests with Axios interceptors. Retrieving JWT with different scope, caching the JWT and attaching the authorization header.
- Node.js
- TypeScript
- Axios
- JWT
Axios HTTP error handling in Express.js
Node.js May 26, 2022
Don't catch all exceptions! Learn to handle erroneous HTTP responses of Axios with an Express.js handler returning a 500 and logging an error.
- Node.js
- TypeScript
- Express.js
- Axios
- Pino
Pino JSON logging of Axios HTTP requests
Node.js May 25, 2022
Learn to configure the Pino JSON logger to automatically log each outgoing Axios HTTP request.
- Node.js
- TypeScript
- Axios
- Pino
Connection pooling with Axios and agentkeepalive
Node.js May 25, 2022
Learn to use a connection pool with Axios and agentkeepalive for HTTP requests in a TypeScript Node.js service.
- Node.js
- TypeScript
- Axios
Organizing and testing HTTP requests
Node.js May 24, 2022
Learn to send HTTP requests with Axios in a TypeScript Node.js service. How to mock responses in local development and tests with Jest, mockserver and supertest.
- Node.js
- TypeScript
- Express.js
- Axios
- Jest
Single schema multi-tenancy in Node.js with Postgres
Node.js May 21, 2022
Learn to do multi-tenancy in a single Postgres schema in a TypeScript Node.js app. Avoid performance overhead while minimizing the risk of data exposure.
- Node.js
- TypeScript
- Express.js
- Knex
- Postgres
- JWT
Testing Knex SQL queries with Jest and testcontainers
Node.js May 20, 2022
Learn to test your Knex SQL queries with a single automatically spawned Docker Postgres database. Using testcontainers and Jest global setup and teardown.
- Node.js
- TypeScript
- Knex
- Postgres
- Testcontainers
Creating a Node.js DAO with Knex.js
Node.js Apr 24, 2022
Learn how to build a DAO in Node.js to execute SQL queries with Knex.js. Providing CRUD operations for a REST entity persisted in the PostgreSQL database.
- Node.js
- TypeScript
- Knex
- Postgres
Knex.js schema migrations with Postgres in Node.js
Node.js Apr 20, 2022
Learn how to use Knex.js schema migrations to create a first Postgres database table. Setup scripts to allow a local database reset.
- Node.js
- TypeScript
- Knex
- Postgres
Connecting a Node.js app with a Postgres database
Node.js Apr 16, 2022
Learn how to connect a Node.js application both with a local Postgres database in docker-compose and with a production database.
- Node.js
- TypeScript
- Knex
- Postgres
- Docker
Resolve a list of promises synchronously
Coding Apr 15, 2022
Learn how to execute and resolve a list of JavaScript promises synchronously instead of in parallel with Promise.all.
- Node.js
- TypeScript
- JavaScript
Why I dislike test-driven development
Process Apr 4, 2022
About slow feedback loops in test-driven development (TDD) and its shortcomings. A plea for writing tests later.
- TypeScript
JWT authentication with JWKS in Express.js
Node.js Apr 2, 2022
Learn how to implement JWT authentication with JWKS in a TypeScript Express.js service. How to disable auth locally and suppress tokens in production logs.
- Node.js
- TypeScript
- Express.js
- JWT
- Pino
Okta Breach - Don't outsource your business model
Process Mar 25, 2022
With the handling of the LAPSUS$ breach, Okta has shown how to not do security and communication. Three core learnings from #OktaBreach.
Managing configs with TypeScript code in Node.js
Node.js Mar 21, 2022
Learn how to build local and production configs within TypeScript code instead of JSON or YAML files. Part 6 of the Node.js microservice architecture series.
- Node.js
- TypeScript
JSON Logging with Pino in Express.js
Node.js Mar 10, 2022
Learn how to add the JSON Pino logger into a TypeScript Express.js service. Log HTTP requests automatically, avoid logging in tests and prettify the JSON logs.
- Node.js
- Express.js
- TypeScript
- Pino
Advancing your company as a Software Engineer
Process Mar 7, 2022
Learn how to make technical and organizational advancements as a software engineer. Reflecting on experiences of 12 successful and 3 unsuccessful advancements.
OpenAPI input validation in Express.js
Node.js Feb 16, 2022
Learn how to validate inputs with an OpenAPI spec in a TypeScript Express.js service. Write tests for the input validation and return meaningful HTTP errors.
- Node.js
- Express.js
- TypeScript
- OpenAPI
Testing Express.js endpoints with supertest
Node.js Feb 11, 2022
Learn to write Jest unit tests with supertest to test Express.js controllers in a TypeScript Node.js service.
- Node.js
- TypeScript
- Express.js
- Jest
Organizing Express.js endpoints
Node.js Feb 9, 2022
Learn how to organize the endpoints in a TypeScript Express.js service. Why a REST resource should have its own DAO and why you don't need three layers.
- Node.js
- TypeScript
- Express.js
About the Node.js series
Node.js Feb 7, 2022
In a series of blog posts, I'm going to describe an opinionated Node.js microservice architecture. Let me tell you about the why, what and how of this series.
- Node.js
- TypeScript
- Express.js
2031 - A Software Engineering Utopia
Process Jan 31, 2022
In a utopia of open APIs, open SaaS apps, funded open-source and an open cloud platform, we join Naomi, Javier and Kalina developing a new product.
Working as a Senior Software Engineer
Process Jan 26, 2022
Learn how to maximize your impact as a Senior Software Engineer. How to move your focus from contributing code towards helping your team succeed.
Building a 1000 line Java program in 6 lines of Haskell
Coding Jan 15, 2022
Let's disassemble an overly expressive six-line algorithmical Haskell program. I walk you through all the tricks, weirdness and beauty.
- Haskell
Identifying bad code with function usage patterns
Coding Jan 13, 2022
Learn how to look at the call patterns of functions to identify code smells and refactor bad Java, TypeScript and JavaScript code.
- JavaScript
Implementing a light/dark mode toggle with pure JS/CSS
Coding Jan 4, 2022
Learn how to implement a minimal light/dark mode toggle in Eleventy with pure JavaScript and CSS.
- Eleventy
- JavaScript
How future languages will prevent Log4Shell
Coding Dec 22, 2021
Learn how modern programming languages like Unison and Koka avoid vulnerabilities like Log4Shell in Java by preventing third-party code from executing side-effects.
- Java
Scrum As Code
Process Dec 16, 2021
Learn how to represent Scrum as code and do product management in a git repository. Use CI and CD and finally be able to get rid of Jira.
- Eleventy
The One-Hour Interview Process
Process Dec 14, 2021
Learn how to interview software engineering applicants. Without at-home assignments. Within an hour of interviewing. Includes TypeScript, Java and SQL examples.
- Java
- TypeScript
Avoid Runtime Errors with Optionals
Coding Aug 19, 2019
Learn how to use Optionals properly with flatMap avoiding null pointer exceptions.
- Java