Blog
2026
Uniqcount: estimating unique elements with a tiny amount of memory

A practical look at building a memory-efficient distinct-elements estimator in Swift, based on the CVM streaming algorithm.

2025
Building a Type-Safe Routing System for SwiftUI

A deep dive into creating a declarative, type-safe routing system for SwiftUI applications, with support for deep linking, state restoration, and universal links.

Contributing audio track switching and default audio track selection to Yattee

How I added MPV audio track switching in Yattee and improved default audio track selection.

2024
XNotForMe: removing the 'For You' tab from X on iOS

A practical breakdown of the tiny tweak I wrote to hide X/Twitter's For You timeline and force the Following timeline.

2023
Modeling view state in SwiftUI

How to reduce boilerplate code when modeling view state in SwiftUI views by using a generic enum to handle common scenarios such as loading, success, and error states.

Automating Mastodon Posts with OpenAI's ChatGPT

Building Mastofact, a silly ChatGPT-powered Mastodon bot that toots a random fact every hour, using Python and the Mastodon.py library.

Long live Tweetbot

How to continue using the Tweetbot iOS app after it has been suspended by replacing its Twitter API key with your own, using a man-in-the-middle proxy to redirect authentication requests.

2022
A first look at Swift Charts: building a horizontal bar chart

An introduction to the Swift Charts library and a look at how to build a horizontal bar chart using some sample data.

Building, testing and releasing native iOS apps using Codemagic

My experience using the Codemagic platform to set up continuous integration, testing and automated deployments for a native iOS app written in Swift.

Recreating the App Store's expandable text in SwiftUI

Recreating the expandable text view used in the App Store's app description using SwiftUI. The view will be able to expand its content by tapping on a "more" button.

Design and development of components for the AirQino platform dedicated to air quality monitoring

A recap of my master's thesis in Computer Science & Engineering about the AirQino platform and related developments.

2021
Using Timescale's Continuous Aggregates to speed up database queries

This post details my experience with TimescaleDB's continuous aggregates feature, resulting in a 10x improvement in the performance of some specific database queries.

Enabling TimescaleDB Streaming Replication for PostgreSQL 13 with Docker

This post illustrates the process of setting up streaming replication for a PostgreSQL 13 database with the TimescaleDB extension using Docker, in order to create a real-time 1:1 replica of the primary database.

Creating a Wildfly Docker image with TimescaleDB support

This post demonstrates the creation of a Wildfly Docker image that includes support for TimescaleDB via the PostgreSQL JDBC driver, as well as the combination of the two using Docker Compose.

Penetration Testing Report

This report describes the Vulnerability Assessment and Penetration Testing (VAPT) analysis that was carried out on a specific Docker container for educational purposes.