Engineering Notes.
Practical tutorials, structural comparisons, and client engineering checklists. I cover firmware design on low-power devices, offline-first secure mobile apps, and AI agents.
Jetpack Compose State Hoisting vs ViewModel: When to Use Each
A practical guide to managing state in Jetpack Compose — when to hoist state locally within the composable tree versus lifting it into a ViewModel.
ESP32 Deep Sleep Modes and Wake Sources: A Power Optimization Guide
Reduce ESP32 current consumption from 240mA active to under 15μA using deep sleep, RTC memory, and timer or GPIO wake sources.
ISR vs SSR vs SSG: Choosing the Right Rendering Mode in Next.js
A practical breakdown of Next.js rendering strategies — when to use Static Generation, Server-Side Rendering, or Incremental Static Regeneration for real-world pages.
Designing Your First Custom PCB: From KiCad Schematic to Gerber Files
A beginner-friendly walkthrough of the complete PCB design workflow in KiCad — schematic capture, footprint assignment, PCB layout, routing, and generating Gerber files for manufacturing.
Offline-First Architecture in Android Apps with Room and WorkManager
How to build Android applications that work without a network connection using Room database, LiveData, and WorkManager sync queues.
I2C vs SPI vs UART: Choosing the Right Serial Protocol for Embedded Hardware
A practical comparison of the three most common embedded serial communication protocols. Learn which to choose for sensors, displays, and microcontroller peripherals.
Type-Safe Server Actions in Next.js App Router with Zod Validation
How to write robust, fully type-safe Next.js Server Actions using Zod schemas to validate incoming form data and protect against malformed input.
Semantic Search with pgvector Inside Supabase PostgreSQL
How to store text embeddings directly in PostgreSQL using pgvector, and build a semantic search engine without a dedicated vector database like Pinecone.
Best Practices for MQTT Telemetry on Low-Power Microcontrollers
Optimize your MQTT payload sizes, Quality of Service (QoS) levels, keep-alive frames, and deep sleep cycles for efficient IoT devices.
ESP32 FreeRTOS Task Scheduling & Prioritization
Learn how to write deterministic firmware on ESP32 using FreeRTOS tasks, task notifications, and semaphore queues.
Cursor vs Claude Code: Real-World AI Programming Compared
An comparison of developer AI tools. When to use Cursor's visual pane editor vs Claude Code's terminal agent execution.
PlatformIO vs Arduino IDE: Boosting Embedded Development Workflow
Compare embedded firmware development environments. How PlatformIO improves library dependencies, debug tools, and build configuration.
Running TensorFlow Lite Micro on ESP32-S3
How to run machine learning models directly on the edge. Deploying wake-word and audio classification models on ESP32-S3 chips.
ESP32 vs Raspberry Pi Pico: Choosing the Right Microcontroller
An in-depth hardware comparison between ESP32 and RP2040 (Pico) covering processing power, wireless connectivity, power draw, and workflows.
Supabase vs Firebase: Database & Security for Next.js Developers
A direct comparison between Firebase and Supabase focusing on SQL vs NoSQL structures, security rules, and Next.js SSR integrations.
How to Hire a Specialized ESP32 Firmware Developer
A technical hiring guide for companies looking to recruit freelance or contract ESP32 developers. Key interview questions and skill verification.
How Much Does IoT Hardware Prototyping and Development Cost?
A budget breakdown of IoT product development stages: components sourcing, custom PCB design, firmware engineering, and cloud infrastructure.
Choosing a Freelance AI Automation Engineer: Technical Checklist
How to find and screen freelance AI engineers for LLM integrations, retrieval-augmented generation (RAG), and agentic workflows.