Blog
Series · 3 partsEnvelope Encryption with AWS KMS in Node.js
2026 4 posts
Envelope Encryption with AWS KMS in Node.js · Part Three
Encrypting and Decrypting Files
The final part of the envelope encryption triptych combines all of our learnings together in two CLI programs — an encryptor and a decryptor.
10 min readEnvelope Encryption with AWS KMS in Node.js · Part Two
Generating DEKs with AWS KMS
This article introduces the AWS KMS API. It covers provisioning credentials with an IAM user, the AWS CLI, and aws-vault, creating a KMS key, and generating Data Encryption Keys using the GenerateDataKey API.
Envelope Encryption with AWS KMS in Node.js · Part One
Authenticated Encryption Using the Web Crypto API
Envelope encryption protects data at rest by encrypting each message with an ephemeral Data Encryption Key (DEK), which is itself encrypted and stored alongside the ciphertext. This article covers the foundational layer: authenticated encryption with AES-GCM using the Web Crypto API in Node.js.
6 min read2025 6 posts
How to Set Up PostgreSQL and Migrations in ASP.NET Web Forms
If, for archeological reasons, you need to work with ASP.NET Web Forms in 2025, this post is for you. You will find out how to set up Entity Framework 6 with PostgreSQL and how to create migrations. None of this has been tested in production.
12 min readTesting ASP.NET Core Applications Against a Real Database
In this post, I briefly explain how to set up integration tests in an ASP.NET Core application, using Entity Framework Core, PostgreSQL, Npgsql, and gRPC.
6 min readHow to Set Up an ASP.NET Core MVC Application with PostgreSQL
In this article you will learn how to set up an ASP.NET Core MVC project with a PostgreSQL database using Entity Framework Core and Npgsql.
9 min readHow to set up and deploy an Astro website to Github Pages
This post describes the steps necessary to deploy an Astro project to Github Pages.
3 min readSecure cookie library in Go from scratch
In this post, I show you how to write a "secure cookie" library that will encrypt and authenticate payloads using the XChaCha20-Poly1305 AEAD, using the Go programming language.
25 min read2024 2 posts
How to Use Phoenix 1.7 with Vite.js
How to set up a Phoenix 1.7 project with Vite.js in place of the default setup, or how to start a Phoenix project if you're not a Tailwind person.
2 min readSetting up Wubi IME with Fcitx on FreeBSD
This post describes the steps needed to set up WubiPinyin Chinese IME with Fcitx 4 on FreeBSD 13.2-RELEASE.
3 min read2023 2 posts
Using UUIDv6 or v7 as primary key in Ecto
UUIDs are a great choice for primary keys in PostgreSQL. However, not all UUIDs were created equal. This post discusses the pros and cons of different UUID formats and explains how to use newer formats in Ecto for Elixir.
3 min read2022 30 posts
Absinthe Tips and Tricks: Generic Types
Over the years, I have developed a big collection of modules and macros that I copy and paste in all Elixir projects using Absinthe. It is high time I started sharing my experience with the community. Today I present a simple way to build “generic” types.
2 min readPostgreSQL without Homebrew on macOS
In this post I describe why I decided not to use PostgreSQL from Homebrew and how you can use a Dockerized image instead.
3 min readLearning iOS and Swift · Day 28
Signing in over API
Today I removed the mock from the login view and made the form actually call a login mutation upon submission.
1 min readLearning iOS and Swift · Day 27
Login view
Today I implemented a login view with a mocked authentication step.
1 min readLearning iOS and Swift · Day 26
Keychain storage, MVVM architecture
Exploring integration with Apollo Client for iOS. Discovering MVVM architecture and singleton classes. Storing authentication data inside the Keychain using the Security module, which is part of Foundation.
3 min readLearning iOS and Swift · Day 25
Adding dots to a page view, watchOS 101
I made my first steps building a watchOS application according to Apple's SwiftUI tutorial.
1 min read