Skip to content

Writing

The blog

Thoughts on app development, AI, productivity and the tech industry.

Jul 17, 2026·14 min read·Latest

How I Built a Prompt-Injection Game

TrickGuard is a browser game where you talk an AI guard out of its password. How it was built: a tiny local model, a five-level prompt-hardening ladder, and every security lesson learned along the way.

Read article
Jul 15, 2026·6 min

Function Calling in Practice: Designing Good Tools for LLMs

Most agent failures are really tool-design failures. How to name, describe and shape the functions you expose to a model — and handle the calls it gets wrong.

Read
Jul 8, 2026·6 min

CI/CD for Flutter: Automating Builds and Store Releases

Releasing a Flutter app by hand is an hour of ritual and a dozen chances to slip. Automating tests, signing, builds and store delivery, one stage at a time.

Read
Jun 30, 2026·7 min

AI Agents Explained: From Chatbots to Tools

An AI agent is more than a chatbot — it can decide, act and use tools. What agents really are, how the loop works, and where they help (and hurt).

Read
Jun 27, 2026·6 min

Fine-Tuning vs RAG vs Prompting: How to Add Knowledge to an LLM

Prompting, retrieval, or fine-tuning? Three ways to make a language model know what you need it to know — what each does and when to use it.

Read
Jun 24, 2026·6 min

How to Add AI to a Flutter App with LLMs

A practical, framework-agnostic guide to wiring a large language model into a Flutter app — architecture, streaming, cost control, and the mistakes to avoid.

Read
Jun 17, 2026·6 min

RAG Explained for App Developers

Retrieval-Augmented Generation in plain terms: what RAG is, when you actually need it, and how the pipeline fits together — without the academic jargon.

Read
Jun 12, 2026·6 min

Keeping LLM Costs Under Control in Production

AI features are metered by the token, and costs scale with success. Measure per feature, route to cheaper models, cache, cap, and design so waste never ships.

Read
Jun 10, 2026·5 min

Python vs Go for App Backends: How to Choose

A pragmatic comparison of Python and Go for app backends — where each one shines, and how to pick without starting a holy war.

Read
Jun 3, 2026·6 min

How to Choose an LLM for Your App

A decision framework for picking an LLM — balancing quality, latency, cost, context length and privacy — instead of reaching for the biggest name.

Read
May 27, 2026·6 min

On-Device vs Cloud AI: Where Should Inference Run?

On-device or cloud AI? One of the biggest architecture decisions in a modern app — how to weigh privacy, cost, latency and capability.

Read
May 20, 2026·6 min

Getting Reliable Structured Output from LLMs

If your app needs JSON from a language model, hope is not a strategy. How to get valid, structured output from an LLM every time — and handle the failures.

Read
May 16, 2026·6 min

Streaming LLM Responses in Your App

Streaming turns an eight-second wait into instant feedback. How token streaming works, how to pipe it through your backend to Flutter, and the pitfalls.

Read
May 13, 2026·6 min

A Practical Guide to Flutter State Management

State management is where most Flutter apps get messy. A no-nonsense guide to the main approaches, what each solves, and how to choose without overthinking.

Read
May 6, 2026·6 min

Prompt Engineering for Production Apps

Prompt engineering for real software is different from chatbot tricks. Writing prompts that stay reliable, testable and maintainable at production scale.

Read
Apr 29, 2026·6 min

Vector Databases Explained (Without the Hype)

Vector databases power semantic search and RAG, but they're simpler than the marketing suggests. What embeddings are, and when you need a dedicated database.

Read
Apr 22, 2026·6 min

Tokens and Context Windows Explained

Tokens and context windows quietly determine your LLM app's cost, speed and limits. A clear, practical explanation of what they are and how to work with them.

Read
Apr 19, 2026·6 min

SQL vs NoSQL for App Backends: How to Actually Choose

The database decision, minus the tribalism: what relational databases give you by default, what NoSQL actually buys, and a default that's right for most apps.

Read
Apr 15, 2026·6 min

How to Know Your AI Feature Actually Works: Evaluating LLM Outputs

You can't ship what you can't measure. A practical guide to evaluating LLM outputs — building test sets, scoring quality, and catching regressions early.

Read
Apr 8, 2026·7 min

Go Concurrency: Goroutines and Channels Explained

Concurrency is Go's headline feature. A practical introduction to goroutines and channels — how they work, how to use them safely, and the pitfalls to avoid.

Read
Apr 1, 2026·6 min

Building a REST API with FastAPI: A Practical Starter

FastAPI is one of the fastest ways to build a modern Python backend. A hands-on intro to routes, validation, async, and habits that keep it maintainable.

Read
Mar 29, 2026·6 min

Testing Flutter Apps: Unit, Widget, and Integration

Flutter has one of the best testing stories in mobile — if you know which of the three test types to reach for. What each layer is for and what to skip.

Read
Mar 25, 2026·6 min

Flutter Performance: Making Your App Feel Fast

A smooth Flutter app comes from disciplined rebuilds, cheap widgets and smart image handling. Practical techniques for a steady 60fps and an instant-feeling UI.

Read
Mar 18, 2026·6 min

REST vs GraphQL vs gRPC for App Backends

Three ways to design the API between your app and its backend, compared honestly: how REST, GraphQL and gRPC differ, what each is good at, and how to choose.

Read
Mar 14, 2026·7 min

Push Notifications in Flutter, Done Right

Push is two problems: the plumbing (FCM, tokens, app states) and the product (permission timing, deep links, not becoming spam). A practical guide to both.

Read
Mar 11, 2026·6 min

Storing Data in Flutter with SQLite

When your Flutter app outgrows key-value storage, SQLite is the workhorse for structured local data. How it fits, when to use it, and how to keep it clean.

Read
Mar 4, 2026·7 min

LLM Guardrails: Keeping AI Features Safe

Language models are powerful and unpredictable. Guardrails keep AI features safe, on-topic and trustworthy — what they are and how to build them.

Read
Feb 25, 2026·6 min

How to Reduce LLM Latency in Your App

Slow AI features feel broken. Practical techniques to make LLM-powered features respond faster — from streaming and model choice to caching and doing less work.

Read
Feb 18, 2026·7 min

Local-First Apps: Building for Offline

Local-first apps work instantly and offline by treating the device as the source of truth. The ideas, the benefits, and the hard part: conflicts.

Read
Feb 14, 2026·7 min

Securing API Keys in Mobile Apps

Anything shipped in a mobile binary can be extracted — including your keys. Which keys are safe on the client, which never are, and the backend fix.

Read
Feb 11, 2026·6 min

A Practical Intro to Docker for App Developers

Docker solves 'works on my machine' by packaging your app with everything it needs. A jargon-free intro to images, containers, and deploying with confidence.

Read
Feb 4, 2026·7 min

API Authentication with JWTs, Explained

JSON Web Tokens are the standard way to authenticate app users against an API. What a JWT is, how the flow works, and the security details that actually matter.

Read
Oct 18, 2023·1 min

Introducing Manage Your Budget App

A straightforward expense tracker for iOS and Android: log your spending, sort it into categories, see it in clear charts, and back it up to Google Drive.

Read
Apr 25, 2023·1 min

Split Your Bills App: Effortless Bill Splitting Solution for Group Dining

Enter the items and who ordered them, and Split Your Bills works out each person's share — tax, service and tip included — then exports a clean PDF.

Read