How I Build Things

Build stories, architecture decisions, and lessons from shipping real products.

Privacy

PrivacyInfo.xcprivacy: The Complete Guide for Indie iOS Developers

The 4 required keys, UserDefaults CA92.1 (the most commonly missed entry), FileTimestamp, SystemBootTime, auditing third-party SDKs, and the full XML template.

April 2026 · 10 min Read →
DevOps

Sentry vs Crashlytics for iOS: Why We Chose Sentry for 27 Apps

Breadcrumbs, release health, performance tracing, dSYM upload automation, noise filtering, and the privacy manifest impact across a 27-app portfolio.

April 2026 · 10 min Read →
DevOps

Automating App Store Screenshots with Simulator and Python

xcrun simctl, SCREENSHOT_MODE UserDefaults injection, screencapture -l window capture, and the batch pipeline for iPhone 16 Pro Max at 1320x2868 across 27 apps.

April 2026 · 10 min Read →
ASO

App Store Optimization: Keyword Research for 27 Apps Across 38 Locales

The 100-character keyword limit, locale contamination (German words in en-US wasting chars), avoiding competitor brands, and batch keyword validation at portfolio scale.

April 2026 · 10 min Read →
macOS

Building macOS Menu Bar Apps with SwiftUI and NSPopover

NSStatusItem setup, contentSize clipping traps, @Observable environment not crossing .sheet() window boundaries, and the Settings scene blank render problem.

April 2026 · 9 min Read →
DevOps

XcodeGen for Multi-Platform Projects: One YAML, 27 Apps

Zero committed .xcodeproj files. How project.yml powers 27 apps across iOS, macOS, and visionOS with multi-platform targets, compile flags, and automated builds.

April 2026 · 9 min Read →
Monetization

StoreKit 2 in Practice: Subscriptions, Lifetime Purchases, and Grace Periods

Transaction.updates at launch, the 6-state subscription machine, grace period handling, sandbox gotchas, and the finish() rule that prevents re-delivery loops.

April 2026 · 9 min Read →
Privacy

Privacy-First Analytics for iOS: TelemetryDeck vs Firebase

Why we chose TelemetryDeck over Firebase for 27 apps. PrivacyInfo.xcprivacy requirements, GDPR compliance, and the full privacy stack.

April 2026 · 9 min Read →
Build Story

Real-Time Electricity Prices: Building Wattora with the ENTSO-E API

How we fetch hourly spot prices from ENTSO-E, parse XML in Swift, build WidgetKit timelines, and cache data for 30+ European bidding zones.

April 2026 · 10 min Read →
Monetization

Why We Build Paid Alternatives to Our Own Free Apps

The paid-analogue strategy: one-time purchase versions of subscription apps. How compile guards, XcodeGen, and one shared codebase make it work.

April 2026 · 9 min Read →
Architecture

Building 27 Apps with One Shared Swift Package

How a single Swift Package powers 27 iOS and macOS apps. Architecture decisions, shared components, and the trade-offs of extreme code reuse at scale.

April 2026 · 8 min Read →
Architecture

From One Quiz App Template to 8 Country-Specific Exam Prep Apps

How a single SwiftUI template became 8 exam prep apps across the UK, Germany, Italy, France, and Switzerland. The architecture, content pipeline, and localization decisions.

April 2026 · 9 min Read →
Localization

How We Localize iOS Apps for 38 Languages Using String Catalogs

String Catalogs, runtime language switching without restart, the Bundle override pattern, and the enum localization gotcha that cost us a full day.

April 2026 · 9 min Read →
Growth

The LinkedIn Commenting Strategy That Generates 50-125 New Followers Per Week

Data-backed system: who to comment on, what to write, and how comments convert to followers.

April 2026 · 7 min Read →
GEO

I Audited My Website for AI Search Visibility — Here's What I Found

A full audit on my own site: every problem discovered and the 8 fixes that took less than a day to implement.

March 2026 · 9 min Read →
GEO

7 Things to Fix So ChatGPT and Perplexity Can Find Your Business

The non-technical GEO checklist. Each fix explained in plain English with the exact code to copy.

March 2026 · 8 min Read →
GEO

Traditional SEO Won't Get You Found by AI — Here's What Does

Ranking #1 on Google doesn't mean ChatGPT cites you. The signals AI systems actually use, and what's changed.

March 2026 · 9 min Read →
Build Story

I Built an MBOX Converter in 30 Minutes with Claude

How I went from "I need to convert these MBOX files" to a working tool in half an hour using Claude Code. The full build story.

January 2026 · 5 min Read →
Optimization

How to Cut AI API Costs 90% in Production

Four techniques that work without rebuilding anything: model right-sizing, prompt compression, semantic caching, and async batching.

April 2026 · 7 min Read →
Operations

The Real Cost of Manual IT Ticket Triage

Most teams underestimate this by 3–5×. Here's how to calculate it — and the three steps that eliminate it entirely.

April 2026 · 5 min Read →
Tutorial

How to Build a Slack Bot That Routes Jira Tickets with AI

Full code walkthrough: Slack modal → AI classifier → Jira creation → correct queue. ~200 lines of Python, €5/month to run.

April 2026 · 8 min Read →
Automation

Jira SLA Automation: How We Cut Response Time by 65%

AI ticket classification, automatic routing, and Slack alerts before breaches happen. A real project with a 50-person team.

April 2026 · 6 min Read →
Architecture

How I Built a Multi-Tenant Slack Bot

The architecture behind a Slack bot that serves multiple workspaces. OAuth flow, token management, and the mistakes I made along the way.

January 2026 · 8 min Read →
Optimization

98% API Cost Reduction: From $0.15 to $0.003 Per Classification

How I cut AI classification API costs by 98% without losing accuracy. Prompt engineering, model selection, and caching strategies.

January 2026 · 6 min Read →
Tutorial

How to Set Up Google Search Console in 5 Minutes

Complete GSC setup guide. Verification, sitemap submission, and what to monitor. From zero to tracking keyword rankings.

February 2026 · 4 min Read →
Growth

15 Lead Magnets in One Week: Build vs. Buy

How I built 15 interactive lead magnets in 7 days. Calculator design patterns, email capture, GA4 tracking. Free tools beat gated PDFs.

February 2026 · 5 min Read →
DevOps

Deploy a Static Site to Cloudflare Pages in 60 Seconds

Complete Cloudflare Pages deployment guide. From git push to live site in under a minute. Free SSL, global CDN, unlimited bandwidth.

February 2026 · 3 min Read →
Book Review

SPIN Selling Changed How I Sell Consulting Services

How Rackham's question framework transformed my discovery calls. From pitching features to uncovering real business pain. 4.5/5.

March 2026 · 7 min Read →
Book Review

Deep Work Is the Only Productivity Book That Actually Changed My Output

How time-blocking and a shutdown ritual helped me ship more while billing the same hours. The one productivity book worth reading. 5/5.

March 2026 · 6 min Read →
Book Review

How $100M Offers Helped Me Stop Competing on Price

Hormozi's Value Equation reframed how I package consulting services. Stopped selling hours, started selling outcomes. Overhyped but useful. 4/5.

March 2026 · 7 min Read →
Guide

How to Pass Italy's Driving Licence Exam (Patente B) — Complete Guide

Exam format, 7000+ official questions, common failure reasons, and study strategy. Plus the free app.

March 2026 · 7 min Read →
Guide

How to Pass Italy's Nautical Licence Exam (Patente Nautica) — Complete Guide

Coastal vs offshore licences, exam structure, the hardest topics, and study strategy for both licences.

March 2026 · 7 min Read →
Guide

How to Pass Germany's Fishing Licence Exam (Fischerprüfung) — Complete Guide

6 topic areas, 60 questions, 75% pass mark. The common fail reasons and the study strategy that works.

March 2026 · 8 min Read →
Guide

How to Pass the CSCS Card Test First Time — Complete Guide

50 questions, 94% pass mark required. The 8 topic areas, hardest questions, and what trips people up.

March 2026 · 7 min Read →
Guide

How to Pass Germany's Einbürgerungstest — Complete Guide

310 official BAMF questions, 33 state questions, 60-minute exam. Study strategy and what actually trips people up.

March 2026 · 7 min Read →
Guide

How to Pass the French Citizenship Exam (Examen Civique) — Complete Guide

Oral interview format, 5 topic areas, and the key reason candidates fail despite knowing the facts.

March 2026 · 7 min Read →

Want me to build something for you?

15 minutes. No pitch. Just honest advice on whether I can help.

Book Free Audit
Book Free Audit