HomeBlog

My Personal Musings 🤓

Welcome to my blog, where I share my passion for technology and software development. With a background in software engineering and a keen interest in cloud-native development, I enjoy exploring how modern tools can solve real-world problems.

David Muraya's blog header picture
Running AI Models on the Edge with Cloudflare Workers AI

Running AI Models on the Edge with Cloudflare Workers AI

Learn to run private, serverless AI models on Cloudflare's edge network. This guide covers secure REST API usage and building a production-ready AI gateway on Cloudflare, emphasizing user data protection and compliance.

David Muraya

10 mins read

16 hours ago

Read More...

A Practical Guide to Rendering Markdown to HTML in Reflex

A Practical Guide to Rendering Markdown to HTML in Reflex

Learn how to render Markdown to HTML in Reflex using `rx.markdown`. Covers basic usage, custom styling with `component_map`, and advanced pre-processing techniques.

David Muraya

8 mins read

6 days ago

Read More...

Building Resilient Task Queues in FastAPI with ARQ Retries

Building Resilient Task Queues in FastAPI with ARQ Retries

Learn how to make your FastAPI background tasks resilient using ARQ's retry mechanisms. This guide covers automatic retries, manual retry logic, and best practices for handling failures in production.

David Muraya

12 mins read

8 days ago

Read More...

A Guide to Authentication in FastAPI with JWT

A Guide to Authentication in FastAPI with JWT

Learn to secure your FastAPI API. This guide covers password hashing, OAuth2 password flow, and using JWT for a robust, production-ready authentication system.

David Muraya

9 mins read

18 days ago

Read More...

Reusable Model Fields in SQLModel with Mixins

Reusable Model Fields in SQLModel with Mixins

Stop repeating id and timestamp fields in your SQLModel models. Learn to use mixins and a base model to write cleaner, more maintainable code for your FastAPI application.

David Muraya

8 mins read

19 days ago

Read More...

Advanced Performance Tuning for FastAPI on Google Cloud Run

Advanced Performance Tuning for FastAPI on Google Cloud Run

Optimize your FastAPI application on Google Cloud Run. This guide covers advanced performance tuning, from Gunicorn worker configuration to minimizing cold starts.

David Muraya

13 mins read

1 month ago

Read More...

Secure FastAPI Environment Variables on Cloud Run with Secret Manager

Secure FastAPI Environment Variables on Cloud Run with Secret Manager

Learn how to secure your FastAPI application on Google Cloud Run by managing secrets like API keys and database passwords with Google Secret Manager. This guide covers setup, permissions, and CI/CD integration.

David Muraya

10 mins read

1 month ago

Read More...

Connecting FastAPI to a Database with SQLModel

Connecting FastAPI to a Database with SQLModel

Learn to connect FastAPI to SQL databases using SQLModel. This guide covers creating models, managing sessions, and building a complete CRUD API with practical examples.

David Muraya

11 mins read

1 month ago

Read More...

FastAPI Tutorial: A Complete Guide for Beginners

FastAPI Tutorial: A Complete Guide for Beginners

Learn to build fast and reliable APIs with this complete FastAPI tutorial. Covers installation, endpoints, data validation, and links to advanced topics.

David Muraya

14 mins read

1 month ago

Read More...

Managing Background Tasks in FastAPI: BackgroundTasks vs ARQ + Redis

Managing Background Tasks in FastAPI: BackgroundTasks vs ARQ + Redis

Learn how to handle background tasks in FastAPI using both the built-in BackgroundTasks and ARQ with Redis. This guide compares both approaches and shows how to build scalable async job queues and track task status.

David Muraya

7 mins read

1 month ago

Read More...

How to Set Up Logging in FastAPI

How to Set Up Logging in FastAPI

Learn how to set up robust logging in FastAPI. This article explains why logging matters, compares it to print statements, covers log levels, and shows how to configure logging for development and production.

David Muraya

8 mins read

1 month ago

Read More...

Building a Flexible Memcached Client for FastAPI

Building a Flexible Memcached Client for FastAPI

Learn how to build a flexible async Memcached client for your FastAPI application. This guide covers key generation, namespace invalidation, and integrating the client into your FastAPI routes.

David Muraya

13 mins read

1 month ago

Read More...

Serving a React Frontend Application with FastAPI

Serving a React Frontend Application with FastAPI

Learn how to serve a single page application (like React or Vue) directly from your FastAPI backend. This guide covers handling client-side routing, middleware order, CORS, and using a multi-stage Dockerfile for a unified deployment.

David Muraya

11 mins read

2 months ago

Read More...

Running Database Migrations with Alembic in Google Cloud Build

Running Database Migrations with Alembic in Google Cloud Build

Learn how to centralize your FastAPI configuration using Pydantic Settings and a .env file. This post covers setup, usage, and best practices for managing environment variables and secrets in a maintainable way.

David Muraya

10 mins read

3 months ago

Read More...

Centralizing Your FastAPI Configuration Settings with Pydantic Settings

Centralizing Your FastAPI Configuration Settings with Pydantic Settings

Learn how to centralize your FastAPI configuration using Pydantic Settings and a .env file. This post covers setup, usage, and best practices for managing environment variables and secrets in a maintainable way.

David Muraya

9 mins read

3 months ago

Read More...

Connecting FastAPI to a Serverless Database with pool_pre_ping

Connecting FastAPI to a Serverless Database with pool_pre_ping

Learn how to keep your FastAPI app connected to serverless databases like Neon, even when they scale down to zero. This post explains how to use SQLAlchemy's pool_pre_ping=True to automatically reconnect and avoid broken connections, with practical code examples and .env setup.

David Muraya

8 mins read

4 months ago

Read More...

Slimmer FastAPI Docker Images with Multi-Stage Builds

Slimmer FastAPI Docker Images with Multi-Stage Builds

Learn how to use multi-stage builds in Docker to create smaller, more efficient images for your FastAPI applications.

David Muraya

14 mins read

4 months ago

Read More...

Function Calling in Google Gemma3

Function Calling in Google Gemma3

Explore how Gemma3's function calling feature, powered by Python, enables developers to create interactive AI applications that go beyond text generation

David Muraya

7 mins read

5 months ago

Read More...

Full-Text Search: Using the Trigram Tokenizer Algorithm to Match Peoples Names

Full-Text Search: Using the Trigram Tokenizer Algorithm to Match Peoples Names

This article explains how to use SQLite's FTS5 module with the trigram tokenizer to perform efficient full-text searches, particularly for matching similar names in a large database. It covers setting up the virtual table, normalizing names, bulk inserting data, and executing searches that handle close but not exact matches

David Muraya

12 mins read

5 months ago

Read More...

How to Get a Structured JSON Response from a Web Page Using AI

How to Get a Structured JSON Response from a Web Page Using AI

This article demonstrates how to leverage Google Gemini AI to extract structured JSON data from a web page. It includes a detailed guide with code examples for defining data structures, and implementing a parsing function

David Muraya

10 mins read

5 months ago

Read More...

How to Set Up a Custom Domain for Your Google Cloud Run service

How to Set Up a Custom Domain for Your Google Cloud Run service

Learn how to connect your custom domain to Google Cloud Run in just a few simple steps, making your website look professional without breaking the bank.

David Muraya

9 mins read

5 months ago

Read More...

Reflex Makes SEO Easier: Automatic robots.txt and sitemap.xml Generation

Reflex Makes SEO Easier: Automatic robots.txt and sitemap.xml Generation

Reflex simplifies SEO by automatically generating robots.txt and sitemap.xml files when you include the deploy_url in your application's configuration.

David Muraya

11 mins read

6 months ago

Read More...

Deploying Reflex Front-End with Caddy in Docker

Deploying Reflex Front-End with Caddy in Docker

This blog post explains how to use Reflex to generate static front-end files and serve them using Caddy in a Docker container. It covers the Dockerfile setup, and Caddy configuration.

David Muraya

8 mins read

6 months ago

Read More...

Optimizing Reflex Performance on Google Cloud Run

Optimizing Reflex Performance on Google Cloud Run

In this article, I tested various methods to run a Reflex 0.7.4 app on Google Cloud. After experimenting with Gunicorn, Uvicorn, Granian, and Reflex's built-in command, I found that Gunicorn with Uvicorn workers delivered the best performance.

David Muraya

13 mins read

6 months ago

Read More...

6 Essential FastAPI Middlewares for Production-Ready Apps

6 Essential FastAPI Middlewares for Production-Ready Apps

Learn how to build a production-ready FastAPI applications by implementing 6 essential middlewares. This guide covers security headers, CORS, trusted hosts, Gzip compression, process time tracking, and custom exception handling, including why their order is critical.

David Muraya

12 mins read

8 months ago

Read More...

Adding Google Authentication to Your FastAPI Application

Adding Google Authentication to Your FastAPI Application

Learn how to add Google Authentication to your FastAPI app, making it easier to use and more secure.

David Muraya

9 mins read

8 months ago

Read More...

Simple CI/CD for Your FastAPI App with Google Cloud Build and Cloud Run

Simple CI/CD for Your FastAPI App with Google Cloud Build and Cloud Run

Learn how to connect GitHub, Google Cloud Build, and Google Cloud Run to automatically build and deploy your FastAPI application every time you push code changes.

David Muraya

10 mins read

8 months ago

Read More...

Contact Me

Have a project in mind? Send me an email at hello@davidmuraya.com and let's bring your ideas to life. I am always available for exciting discussions.

© 2025 David Muraya. All rights reserved.