October 8, 2026
A screen that survives rotation is not necessarily safe from process death. A ViewModel keeps state through configuration changes, but Android can kill a background process to reclaim memory. When the user returns, a new ViewModel is created, and any form values or edits stored only in the old one are gone. Testing rotation alone can therefore hide an important state-restoration failure.
Use the storage that matches the data: rememberSaveable for small UI state, SavedStateHandle for small values needed to rebuild a screen, and a database, DataStore, or backend for important or lasting data. For an edit screen, saving an orderId and loading the latest order is often better than saving the full object in SavedStateHandle. Test the real scenario by backgrounding the app, killing its process, and reopening it from Recent Apps to confirm that the screen can rebuild itself.
October 5, 2026
Modularization can make a project easier to work with by clarifying dependencies, improving build times, and separating concerns. But turning every feature, layer, or group of classes into its own module can reverse those benefits. The dependency graph, Gradle configuration, contracts, and coordination required to make small changes can become more complicated than the feature itself.
A new module should have a clear reason to exist: an independent responsibility, a possible separate team, genuine reuse, stronger dependency boundaries, or a measurable benefit for builds and tests. If none of those reasons is present, keeping the code in its current module is often the simpler choice. Modularization is valuable, but every module adds technical and cognitive overhead that the whole team must understand.
October 4, 2026
In Kotlin Multiplatform, a high percentage of shared code is not a success metric by itself. Moving every similar Android and iOS implementation into commonMain can introduce interfaces, expect/actual declarations, and extra layers that make the project harder to change. Before sharing code, the important questions are whether the business rule is genuinely the same, whether it can be tested independently of the platform, and whether the abstraction is actually simpler than two small platform implementations.
Domain logic, networking, and data transformations are often strong candidates for sharing. Permissions, navigation, lifecycle behavior, and UI details can be clearer and easier to maintain when they stay platform-specific. The goal of KMP is not to maximize shared code; it is to reduce real duplication without making platform-specific changes more difficult.
October 4, 2026
Vibe Coding is often criticized as a shortcut that will inevitably leave companies with broken applications and technical debt that engineers must later repair. I disagree with that conclusion. AI Agents are now capable of producing accurate, disciplined code, and with even light guidance from a developer—including a junior developer—they can build solid applications. The assumption that AI-assisted development must produce meaningless or low-quality code ignores how capable these tools have become.
More importantly, poor code has never automatically meant business failure. I have worked on a successful, growing American product company whose codebase contained almost every imaginable engineering mistake, yet its product had customers, revenue, funding, and acquisitions. Many companies already run on poor code written by human engineers, including senior ones. Rather than waiting for AI adoption to fail, developers should focus on learning how to use AI effectively and become stronger software developers with it.
October 4, 2026
I returned to Claude after spending about two months using GPT Codex. Claude’s Opus has generally been my preferred AI Agent because it is smart, practical, and efficient: it completes tasks with few attempts and does not waste limits. I had no major issues with Claude, but I switched to Codex because of the excitement around Sol, Terra, Luna, GPT Work, the Inline Browser, and Computer Use. Those capabilities brought me back to blogging after a long break—GPT could take an article, format it, add images, and publish it across several platforms within minutes.
However, Codex’s weekly limit management became a real problem: I often ran out two or three days before the reset, which reduced my overall output significantly. Sol is capable and close to Opus in quality, but it frequently gets trapped in long review loops—repeatedly finding and fixing small issues until a large part of the limit is consumed. Unlike Opus, which usually finishes a task and stops in a reasonable amount of time, Codex often required close supervision. My plan is to return to Claude’s $100 plan and potentially keep GPT’s $20 plan only for blog management, unless Claude’s Computer Use has improved enough to replace it entirely.
October 1, 2026
Most architecture debates ask which acronym is newest. This TechTok edition asks a more useful question: what kind of complexity is your screen actually carrying?
MVC, MVP, MVVM, and MVI protect different boundaries, solve different pressures, and introduce different costs. The goal is not to choose a winner. It is to choose the smallest structure that makes state, side effects, lifecycle, and testing easier to reason about.
Read More
October 1, 2026
Browser debugging becomes much more useful when the agent can inspect the real runtime instead of guessing from a screenshot.
In this TechTok edition, I walk through Chrome DevTools MCP: console and network inspection, real user-flow automation, screenshots, performance traces, setup, and the guardrails worth keeping.
The practical rule is simple: the agent investigates and proposes; the browser, tests, and developer prove.
Where would live browser evidence remove the most guessing from your workflow?
Read More
October 1, 2026
Use a Think, Challenge, Build, Verify, Reflect loop to strengthen engineering judgment with AI without outsourcing your learning.
Read More
October 1, 2026
Learn how small pull requests improve review, feedback, rollback safety, and architecture—and how to split real features without breaking the system.
Small Pull Requests Are a Technical Strategy, Not a Team Preference
A “complete feature” pull request feels efficient.
Read More
October 1, 2026
Welcome to my Journal — a space for quick notes on software, product work, and whatever I’m thinking through.