Jamie Craane personal blog

My views, thoughts and experiences about Fullstack software development.

Parsing, Visualizing and Analyzing Log Data with Claude Code

From a static log file to an interactive analysis tool—and beyond

How I used Claude Code to turn a production slow-query log into an interactive visualization, then let Claude analyze the result and propose fixes.

Operational Guardrails for Autonomous AI Agents in Production

Reliability Engineering in the AI Era

Defense in Depth practices for running autonomous AI agents safely — from least-privilege credentials and environment segregation to soft deletes, PITR, and RPO/RTO targets.

Bridging Human Intent and AI Code Generation with @AIGuideline

A Novel Approach to Embedding Architectural Guidelines in Your Codebase

Learn how the @AIGuideline annotation helps AI assistants understand and respect your project's architectural decisions and coding patterns.

Integrating Firebase auth in server side Thymeleaf app

Using Firebase authentication with Ktor and Thymeleaf

This post, we will look at how to integrate server side Firebase authentication with Ktor and a Thymeleaf application

Integrating Firebase JWT token verification in Ktor - Part 2

Using Firebase authentication with Ktor

This post, we will look at how to integrate your Firebase users in your own application database.

AI Assistant Prompt Catalog

Collection of useful prompts for Jetbrains AI Assistant

This blog post provides a collection of powerful prompts for JetBrains AI Assistant, designed to boost productivity and simplify development tasks. Perfect for Kotlin developers, it demonstrates how to leverage AI effectively within JetBrains IDEs.

Integrating Firebase JWT token verification in Ktor - Part 1

Using Firebase authentication with Ktor

This blog post guides you through integrating Firebase JWT token verification in a Ktor server application, enhancing security by leveraging Firebase's authentication capabilities.

Jetpack Compose - Recompositions

Recompositions in Jetpack Compose

This post describes what Compose recomposition is and how to optimize your Compose code to minimize recompositions.

Standalone KMM Images

Using KMM Images in a standalone Android project

This post describes the benefits of using KMM Images in a standalone Android project.

Koin ViewModel Injection

Inject objects into Android ViewModel which depend on a CoroutineScope

This post describes various methods to use dependent objects in an Android ViewModel which depend on the viewModelScope.