Writing on AI architecture, AWS, security, and building production-ready systems.

Thoughts on applied AI, AWS, secure system design, graph databases, and the practical challenges of building and scaling production systems.

No Backend Needed: Running Python in React with Pyodide

A step-by-step guide to integrating Pyodide into a React + TypeScript + Vite app, loading Python packages like NumPy and Matplotlib in the browser, and generating client-side data visualizations from CSV revenue data.

Neo4j Cypher Cheat Sheet

Curious how Neo4j and Cypher stack up against traditional SQL? This post takes the classic Northwind database and reimagines it as a graph, offering a practical cheat sheet that translates common SQL queries into Cypher. Learn how graph databases simplify complex relationships, reduce the need for joins, and offer a more intuitive way to explore connected data—complete with side-by-side query comparisons and real-world use cases.

Debugging DllNotFoundException on Linux and Containers or DLL Hell in 2023

How to debug runtime exceptions like 'System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: Error loading shared library liblibSkiaSharp: No such file or directory' on Linux or containers

API Rate Limiting by IP with NGINX

How to implement IP rate limits for ASP.NET Core REST API hosted behind NGINX reverse proxy.

Lightweight search for .NET Core

Hassle-free full-text search implementation for small and medium-size applications using LunrCore.