Writing
-
In-App Review Returned Success — The Dialog Never Showed
Ratings fell. Installs did not.
-
Mobile Logs, Crashes, and Metrics: Pick Signals That Decide
More telemetry is not more control
-
Tickets Where an Agent Makes You Slower
Negative expected value is allowed
-
Making a Monorepo Navigable to Agents
Agents fail on layout, not IQ
-
The Chat That Forgot the Constraint — and the Memory That Gaslit the Fix
The rule lived three turns ago
-
Planning Theater vs a Plan That Saves a Rewrite
When the plan is the product
-
"It Worked Once in Chat" Is Not a Ship Bar
The demo is not the product
-
The Bot Commented on Your PR and Nobody Owns It
Public wrongness has a different cost
-
Your Agent Has Too Many Tools — and Mistakes Access for Expertise
Twenty plugins, worse judgment
-
The Overnight Agent PR Fantasy
You closed the laptop on a green fantasy
-
Agent Trust Boundaries: Approvals That Matter, Tools That Lie
Two ways you lose the same afternoon
-
The Agent Said Done — and CI Is Red
Green chat, red pipeline
-
Building an AI Assistant Surface in Jetpack Compose Without Fighting the Keyboard
Chat UI fails where screenshots look fine
-
Subagents That Argue While You Pay for Both
Parallel looked free until the summaries disagreed
-
Feature Flags on Mobile: Kill Switch, Rollout, Experiment
Three jobs, one muddy word
-
Scalable Patterns Worth Stealing (Without Renaming Your Résumé)
You already ship these — under different names
-
One Telemetry Story Across Client and Server
Users say it’s broken; three dashboards disagree
-
Mail Storage & Caching Without Lagging the Gesture
“We have a cache” is not a latency budget
-
Multi-Region Reality for Mobile Users
The phone moved; the control plane did not
-
GitHub Actions for Android: PR Gates That Protect Merges
Green checks that mean nothing
-
Rate Limits Without Gaslighting the UX
The spinner that lied
-
Fat vs Chatty APIs on Cellular
The list scrolled fine on Wi‑Fi
-
Three Clients, Same Aggregation: Why BFF Shows Up
Copy-paste composition
-
A Hot Mailbox Melts the Shard
One inbox, everyone refreshing
-
Push Is a Distributed System, Not a FCM Call
“Just send a push”
-
Gradle Modularization: Slice for Change, Not for the Diagram
The debate that stalls the roadmap
-
The Request Path Should Never Wait
The send button lied
-
Retry Storms: When Your Own Clients DDoS You
The outage ended. The traffic did not.
-
Replication Lag Filed as an Android Bug
Send, pull to refresh, message gone
-
Redux on Android: When Unidirectional State Is Worth the Ceremony
The bug was order, not syntax
-
Cache Invalidation from CDN to Room
Same bug, four layers
-
Offline-First Mail: Consistency Is a UX Decision
The draft that vanished between phones
-
The API Is Up. Why Are Phones Still Broken?
Green dashboards, angry sessions
-
Imperative vs Declarative Android UI: What Migration Actually Changes
Why the paradigm matters
-
Android FE Architecture History: MVC to Compose
Why front-end architecture stops being optional
-
Memoization: Cache the Result, Not the Algorithm
When the same work runs twice
-
ANR Stack Traces Lie by Omission — Crashlytics Is One Layer
The dialog is late; the trace is a snapshot
-
Types of Mobile Apps: When Native Still Wins
The decision that keeps coming back
-
From Jenkins to Screwdriver: What CI/CD Actually Buys an Android Team
Shipping broke before the code did
-
Why Your PR Diff Is Noisy: Formatters vs Linters
The symptom is the diff, not the bug
-
Web-to-App Install Prompts: When Nagging Costs Retention
The install funnel nobody measures end-to-end
-
Image Security in General: What Breaks on the Mobile Photo Path
Why a photo is harder to secure than a message
-
Cross-Platform Mobile Frameworks: Flutter, RN, and the WebView Trap
One codebase — two very different architectures
-
Android SDK Versions: compileSdk, minSdk, and targetSdk in Production
The release that broke on a newer phone
-
Android Support Library → AndroidX: What the Old Stack Maps To Today
Why this post still exists
-
Android Sandbox: UID Isolation and the Holes You Open Yourself
The symptom that looks like a bug
-
Zombie vs Orphan Processes: What ps Is Actually Showing
The ps line that will not die
-
Primitive vs Reference Types: Memory, Boxing, and Kotlin Nulls
Why “same variable” stores different things
-
Stack-Based vs Register-Based VMs: Why Dalvik Chose Registers
Two ways to fake a CPU
-
OpenGL Rendering Pipeline: What Actually Breaks in Practice
Why the pipeline map matters
-
tee, Pipe, and Redirection: Watch Output While You Log It
Why plain redirection hides the stream
-
Hard Links vs Symbolic Links: Same Inode, Different Contract
When two paths are not two files
-
Android Architecture Breakdown: Which Layer Owns Your Bug?
Why the layer map matters
-
Linux Filesystem Hierarchy: Where Production Bugs Hide
When the filesystem layout is the bug
-
Software Testing Methods
Why method choice is a budget decision
-
Interrupt Handling in OP-TEE: IRQ, FIQ, and World Switches
When a secure interrupt lands in the wrong world
-
White Box, Black Box, and Gray Box Testing
Why “how much you know” changes what you find
-
Research Methodology: Qualitative vs Quantitative
Why the split matters before you collect data
-
Dalvik and ART: What the Runtime Layer Still Explains
Why Dalvik still shows up in stack traces
-
Levenshtein Distance: Edit Cost for Typos and Fuzzy Match
When exact match is too strict
No posts in this category.