RSSAmplifier

Blog

codethoughts.io

Codethoughts is a place where I share my thoughts, experiences, and learnings from my journey as a Engineering Leader, Solo Founder, and Software Engineer. I write about engineering leadership, development and architecture (both high and low-level), and personal growth. I hope you find something useful here!

/RSS feed ↗31 posts

Latest posts

The perversion of AI discourse

I've been thinking lately on what bothers me about how AI is being discussed and why the performative nature of the people in the space bothers me so much (amongst other things). Over-hype for me has always soured the value of the tech being talked about. It didn't matter much to me when it was about web3/crypto, since I simply didn't care about the tech itself. For AI though,…

Hot Reloading in Rust? Subsecond and Dioxus to the rescue!

I recently set out to finally get hot reloading working for my Rust GraphQL API, after getting annoyed by the usual cargo watch flow, which would kill my server in between code changes and it finishing the rebuild + setup. I had previously played around with subsecond from Dioxus , while it was still in beta, but hadn't had much success. Sometime in August last year (2025), a few improvements…

Improved Turso (libsql) ergonomics in Rust

I recently started using Turso , which is a great database option for serverless as well as to keep costs low. Its pricing is more than competitive with something like AWS DynamoDB , which is quite interesting as a alternative to it. One problem though, there's no support by any good ORMs or similar in the Rust ecosystem for Turso . Instead, I was currently writing something like this, just…

Structuring your Engineering Organization

From a couple of founders, to a small team, to being a “small startup”, moving into scale-up territory, and finally transitioning beyond, there are many changes your organization will go through. But what should you aim for as you grow and need to delegate your responsibilities and you transition from a couple of founders, into a company of 300 or more? Throughout my career I’ve seen many…

Redirecting URLs with CloudFlare

I recently moved my blog from https://codetalk.io (now my commercial site) to https://codethoughts.io . This of course also meant, that everything linking to my old blog was now broken, which is not the best experience for any readers that I might have 😅 Initially I considered setting up rewrite rules somewhere for each individual post, but then thought of a much smarter way,…

Static SPAs: Exploration of Leptos, Dioxus, and Next.js

One of my absolute favorite methods of deploying Frontends is to pre-generate all routes statically, and then let each route load the dependencies they need for interactivity. Load times are fast The user only downloads what they need (great for slower or mobile networks) SEO is great in many cases, and okay in others It can all still be deployed in the most optimal way which is CDN + Static…

How I structure work as a Solo Founder

This is for sure something that will keep evolving over time, but I got inspired by this Hacker News post to share in more detail how I organize myself and my work (you can see my short answer here ). The question posed is great, so let’s start from there: When working with a team, I've found that Scrum-like short-term goals and organized task backlogs really help keep me focused and on track…

Mobile: A different way using Rust?

💡 2026 update: These days I would highly recommend using Expo + React Native for Mobile + Web development, if Mobile is a core platform for you. There have been some amazing developments in the ecosystem, especiallt from Expo v55 and onwards. After having spent the better part of two months deep in the trenches of iOS development with Swift, I can comfortably say: Web Development simply is more…

Setting up UniFFI for iOS, Simulators, and watchOS

This is a part of the post Mobile: A different way using Rust? . There are some great resources out there on UniFFI already such as this post , but it doesn’t cover watchOS, so let’s take a quick tour through what I’ve set up in the example repository https://github.com/Tehnix/template-mobile-wasm . We've set up four crates: appy : Our Leptos App, Capacitor, and the XCode…

Using Capacitor Plugins from Rust/WASM

This is a part of the post Mobile: A different way using Rust? . Capacitor is normally used in combination with JavaScript projects, so there is little help available if you want to use it in a Rust/WASM project. Worry not! That's exactly what we'll take a look at in this post. Since Capacitor is a JS framework there will be a little extra work involved in interacting with any…

The Stack Part 4: A Federated GraphQL API

In the last post we built up two Frontend Apps, one using Next.js and another using Leptos (Rust/WASM). In this post we will be building an API that our Apps can talk to. See the full overview of posts here . At the end of this post we will have: A Federated GraphQL API using Apollo Federation v2 . A supergraph, using Apollo Router , composing our services into a single GraphQL API. Three…

Component overview

Generated Table of Contents by inserting a {{ toc() }} shortcode with a depth of 3: This shortcode actually just inserts <!-- toc --> which gets replaced by running the preprocess_post(resource=page) macro on it, which calls generate_toc(toc, level, depth) under-the-hood. Summary Mark the summary cutoff point by placing <div><&#x2F;div><!-- more --> at the desired location.

The Stack Part 3: Building a Frontend

In the last post we set up our deployment, fully automated on merge to our main branch. In this post we will be building our UI (Frontend) applications. See the full overview of posts here . At the end of this post we will have: A Next.js Frontend app with support for localization, using Tailwind CSS. A Leptos Rust&#x2F;WASM Frontend app with support for localization, using Tailwind CSS. Automatic…

The Stack Part 2: Automating Deployments via CI

In the last post we created our Control Tower structure with all of our AWS Accounts in it. In this post we will be automating our deployment process for each of these environments. See the full overview of posts here . At the end of this post we will have: A workflow for bootstrapping our AWS Accounts for CDK ( see here ). A workflow for deploying our CDK stacks, including synthesizing and…

The Stack Part 1: Setting up your AWS Account Structure

In the last post we went over the overall goals of "The Stack" and what we will be building. In this post we&#x27;ll be setting up our AWS Account structure. See the full overview of posts here . As a reminder, here is the structure we are aiming for: Control Tower : This is your central place to control access and policies for all accounts in your organization Production Multi-tenant : Your…

"The Stack": Everything you&#x27;ll need

This will be a series of blog posts where we will build up the perfect infrastructure setup for the majority of usecase, aka "The Stack". We&#x27;ll be building everything on top of AWS. Before diving in, let&#x27;s first establish some goals: Performant : Latency and performance is important as this will serve end-users. Low cost : We want our base cost to be low, and our costs to scale well with…

API Migration & Modernization: Getting Creative

What are the motivations? Modernizing Frontend, getting rid of legacy complexity (redux, reducers, epics, selectors, etc) Sunsetting legacy REST API to move towards GraphQL API Handling older clients still using your legacy API

Your AWS Bill Tells a Story

What are we looking for? Scalability Inefficiencies Changes (are they expected or surprising?) How do we do it? Go to the AWS Bill breakdown Compare each post to the previous month Spot anything you cannot answer Create actions based on this Monthly review

"The Stack": Everything you&#x27;ll need

Governance and setup Goals: Low cost, high flexibility, modular approach to infrastructure pieces. Mermaid diagram Control Tower and audit trail Billing alerts and tags Deployment and CI AWS CDK Speed up https:&#x2F;&#x2F;pgrzesik.com&#x2F;posts&#x2F;speed-up-cdk-deploments&#x2F; CDK Watch…

Common JSON patterns in Haskell, Rust, and TypeScript

A lot of web development is transforming JSON one way or another. In TypeScript&#x2F;JavaScript, this is straightforward, since JSON is built into the language. But can we also achieve good ergonomics in Haskell and Rust? Dear reader, I am glad you asked! 🙌 The comparisons we will see are not meant to show if one approach is better than another. Instead, it is intended to be a reference to become…

Visual Studio Code on iPad

With Apple increasing their focus on making the iPad a viable device for work, it is time to revisit using my iPad as a workstation for programming. I rely heavily on command-line tools and language-specific tools (rust-analyser, node, ghcide, etc.) for my day-to-day programming, and my current setup features: Blink with mosh to a remote server. Neovim and wemux on the remote server. iSH to play…

Live Migration of DynamoDB Tables

Recently I was faced with the challenge of having to migrate a set of AWS DynamoDB tables to completely new tables. We wanted to achieve this without affecting any of our users, and without having a maintenance window while migrating data from the old table to the new ones. The following will be a very high-level overview of how you: Get all your DynamoDB events onto a queue Replicate your…

Mobile Haskell (iOS)

A lot of progress has been going on to make Haskell work on mobile natively, instead of e.g. generating JavaScript via GHCJS and using that. Unfortunately, not much documentation exists yet on how to build a project using these tools all together. This post will be an attempt to piece together the tools and various attempts into a coherent step-by-step guide. We will start by setting up the tools…

Using Electron with Haskell

If you want to grab the whole code from this post, it can be found at codetalkio&#x2F;Haskell-Electron-app . Not much literature exist on using Electron as a GUI tool for Haskell development, so I thought I&#x27;d explore the space a little. Being initially a bit clueless on how Electron would launch the Haskell web server, I was watching the Electron meetup talk by Mike Craig from Wagon HG (they…

Compiling SCSS and JavaScript in Hakyll

This seems to be an often asked question, so I thought I&#x27;d try and share the approach that I&#x27;ve arrived at after having explored a couple of solutions to the problem. If you want to see the full code in action, check out the repo for the codetalk.io site (linking to v1.0.0 is intended, in case the code changes later on).

Briefly on the purpose of Functors, Applicatives and Monads

In a recent thread on &#x2F;r&#x2F;haskell about how to motivate the AMP proposal in teaching , I read a comment that finally helped me understand the purpose of Functor s, Applicative s and Monad s.

S3 bucket specific policy

I have recently started caring a bit more about security on my AWS applications, and to this end Identity & Access Management (IAM) users are a great way to limit access to a need-to-use-only basis. Recently I set up my IRC server to download its configuration and install files from an S3 bucket. This meant that it needed to have read access to a specific bucket, and for this an IAM role was…

Setting up UnrealIRCd and Anope IRC Services on EC2

Having recently discovered sameroom.io I wanted to update the codetalk IRC server to be compliant with their authentication method. This basically just meant enabling SASL support, but while I was tinkering with stuff anyways, I thought I might as well streamline the setup process for the IRC server. In short, everything is fully automated and set up on AWS using EC2 and S3 . This will go through…

Irssi notifications on iOS and Android

Or really anywhere that https:&#x2F;&#x2F;pushover.net supports. In light of the earlier article , I thought I&#x27;d might as well supercharge my IRC setup. So, now we&#x27;re gonna get some notifications for our mobile devices via pushover.

Local notifications from irssi on a remote server

So, if you&#x27;re like me and like to have your IRC client (in this instance irssi ) running on a server in a tmux or screen session to never miss out on the conversation, you might feel like you&#x27;re missing some of the benefits of running a local IRC client. In particular, I was missing local notifications when someone would highlight my nickname. I could of course use a bouncer, but hey!…

Deploying with Vagrant

UPDATE: I wouldn&#x27;t really recommend this approach anymore! Instead you should look into Docker for containerization and Stack for the Haskell side I recently started looking into ways that I could improve my current deployment workflow. Since my server doesn&#x27;t have much RAM, I currently build the binaries locally in a Virtual Machine (VM from here on out) and then send them to the server…