Running Ktor Web Services on Cloud Run

Google Cloud Run is an easy, affordable way to host serverless web applications, and the Jib Gradle plugin makes it even easier to build and deploy Ktor apps to it.
Read More →

Make a Prototype

Solving problems in programming often includes unknowns. Before I commit to lots of work I like to try to shed some light on those questions as quickly as I can, usually with working prototypes.
Read More →

Handling Dates & Times in SQLite

SQLite may not have dedicated datetime data types, but that doesn’t mean we have to restort to queries filled with meaningless numbers and post-processing datasets in application code. Here we’ll take a look at a real world use case for SQLite’s datetime functions and see how they can make working with dates easier.
Read More →

SQLDelight on the Server

Cashapp’s SQLDelight, a great ORM-like library for Android apps and SQLite, recently extracted it’s database driver to support other types of databases, opening it up to other use cases. Here are some tips from my recent experience deploying SQLDelight in a web app.
Read More →

Server Side Analytics with GoAccess

While simplifying and modernizing my website I realized that I don’t need anything as invasive as Google Analytics, so switched to server side analytics. Here I detail what I tried, and the docker container I ended up building to support automatic, robust, server side analytics.
Read More →

Replacing Mocks

After reading a recent post by Sam Edwards detailing how he wraps mock objects for tests, I had a good discussion with him and others about the alternative: simply making Fake implementations.
Read More →

Your Labor is a Product

How my experience as a freelancer changed my perspective on hiring and employment.
Read More →

Easy Android Scopes

Properly scoping objects in Android apps to avoid memory leaks and avoid repeating work can be challenging. Let’s take a look at some ways that this could be done in the past, and also an approach that is clean and simple, but isn’t tied to the Android framework.
Read More →

Handling Transient Events

Some data communicated between view models and views shouldn’t be restored. Here’s a look at a simple way to deliver these transient events, avoiding complexity and common bugs.
Read More →

Encapsulating View State

This article looks at an approach to encapsulate view state, allowing us to move more logic into our more easily testable ViewModel classes, and simply our views.
Read More →