Engineering

Technical Journal // Engineering
May '26

Building a Poor Document Store inside PostgreSQL

A forensic analysis of why abusing JSONB for schemaless architecture leads to write amplification, TOAST bloat, and catastrophic query planner failures.

May '26

How to Handle PostgreSQL Database Migrations in Go with Goose

A breakdown of database migration strategies and implementation guide using PostgreSQL, Golang, and the Goose migration engine.

Apr '26

Migrating Cloudflare to Terraform

A technical reference on migrating existing Cloudflare infrastructure to Terraform. Includes an automated bootstrapping script to bypass manual state imports and handle API edge cases.

Apr '26

Critical Rendering Path Optimization: 8 Proven Strategies to Boost Web Performance

Master critical rendering path optimization. Learn 8 proven strategies to reduce First Contentful Paint, improve Lighthouse scores, and boost Core Web Vitals.

Apr '26

A Tale of Web Vitals

A technical guide to Web Vitals. Solve LCP, TBT, CLS, and Accessibility issues using automated build-time pipelines and vanilla JS patches.

Apr '26

Why Your Goroutines Need a Speed Limit: Bounded Concurrency in Go

Unbounded concurrency is a reliability nightmare. Learn how to protect your system from OOM kills and database exhaustion by implementing Semaphores and Worker Pools in Go.

Apr '26

Part 3: Casting Shadows Without Trigonometry: The Beauty of Integer Math

To calculate Field of View in a grid-based game engine, you have to cast rays. The naive approach uses heavy floating-point trigonometry. This post explores Bresenham's Line Algorithm: a 60-year-old technique from the era of hardware plotters that draws perfect lines using only integer addition and comparison.

Apr '26

Part 2: Decoupling the Renderer: Terminal to Raylib in One Interface

If your game logic knows about OpenGL, your architecture has failed. This post dissects the Interface Segregation Principle in Go, demonstrating how the Derelict Facility engine swapped an ANSI terminal renderer for hardware-accelerated Raylib without changing a single line of game simulation code.

Apr '26

Part 1: Data-Oriented Design in Go: Why [][]Tile Destroyed My Game Engine

The textbook answer for a 2D grid in Go is a slice of slices. In a systems-level game engine running at 60 FPS, this innocent data structure becomes a performance landmine. This post explores pointer chasing, CPU cache lines, and how flattening a 2D map into contiguous memory creates massive performance gains through Data-Oriented Design.

Apr '26

10 years of lorbic.com architecture

Reviewing the technical evolution of this blog over a decade: from managed platforms and dynamic backends to a custom, zero-dependency Hugo architecture.