Trevor’s Blog

Ten years in mobile, now mostly Kotlin Multiplatform and AI tooling. Most posts appear on WeChat first and get archived here, with reproducible steps and primary sources wherever possible.

DeepSeek Harness Code Review: The Bottleneck Was Never Git

DeepSeek Harness Code Review: The Bottleneck Was Never Git

DeepSeek Harness 0.2.2-rc.2 added review by branch, commit and file type. I measured every stage on a 21,711-file repository: creating a worktree takes 1.5 seconds, producing a 28,458-line diff takes 75 milliseconds, and what actually does not fit is 300,000 tokens of context.

2026-11-12 · 7 min · 1292 words · Trevor Wang
You Asked for Rounded Corners, Compose Multiplatform Desktop Drew a Spike

You Asked for Rounded Corners, Compose Multiplatform Desktop Drew a Spike

Stroke(join = Round) was drawn as Miter on Compose Multiplatform’s desktop, iOS and web targets while Android stayed fine. The root cause is a setter that never runs. I rendered both versions and diffed them pixel by pixel: 1,619 pixels apart.

2026-11-12 · 6 min · 1213 words · Trevor Wang
Jake's Approach: Run Compose on the Server, Push Only HTML

Jake's Approach: Run Compose on the Server, Push Only HTML

Jake Wharton runs Compose on the server with Molecule, renders HTML with kotlinx.html, pushes it over SSE, and merges it with Idiomorph. I rebuilt it and found that whether your text input survives comes down to three defaults.

2026-11-12 · 7 min · 1378 words · Trevor Wang
Liquid Glass, Running on Compose Desktop

Liquid Glass, Running on Compose Desktop

Apple shipped Liquid Glass and Android still has no official answer. I dropped Kyant0/Backdrop into a Compose Multiplatform desktop project and it actually runs on macOS. The cross-platform adaptation is only 280 lines, because AGSL is a subset of SkSL.

2026-11-06 · 8 min · 1624 words · Trevor Wang
dsh 0.2.2-rc.1: This Release Changed 0 Lines of Code

dsh 0.2.2-rc.1: This Release Changed 0 Lines of Code

Unpack both tarballs and compare md5 file by file: 8 packages, 290 files, 8 differences, all of them in package.json. The version number went from alpha to rc, not a line of code moved, but every dependency got bumped, and plugins have to follow.

2026-11-04 · 7 min · 1386 words · Trevor Wang
JetBrains' New IDE, and the Editor Is Read-Only

JetBrains' New IDE, and the Editor Is Read-Only

JetBrains shipped an AI IDE, and getting it running showed me that the feature list isn’t the interesting part: the source hardcodes readOnly: true, and when I typed into the editor the file hash didn’t move. This is an IDE that won’t let you change code.

2026-11-04 · 9 min · 1700 words · Trevor Wang
I Had dsh Write Its Own Plugin. It Took Nine Minutes.

I Had dsh Write Its Own Plugin. It Took Nine Minutes.

I asked dsh’s Creator mode for a plugin. It inspected the runtime, read source, wrote the package, requested install approval, and nine minutes later the tool was sitting in the plugin manager. A fresh session called it in ten seconds.

2026-11-03 · 3 min · 1305 words · Trevor Wang
Android 16 Deleted Your Portrait Lock, and I Verified It Three Times on an Emulator

Android 16 Deleted Your Portrait Lock, and I Verified It Three Times on an Emulator

One codebase, two builds, targetSdk 35 and 36, a screen resized to tablet size, then a command to rotate. 35 stays locked with black bars, 36 flips and fills the window, and back on a phone-sized display the restriction returns.

2026-11-03 · 6 min · 1272 words · Trevor Wang
The eMudhra Certificate Chain Broke, So I Audited Every JetBrains App on My Mac

The eMudhra Certificate Chain Broke, So I Audited Every JetBrains App on My Mac

Eight intermediate certificates with recoverable private keys, four root CAs to distrust. After following JetBrains’ own guidance I found the official workaround removes two of them, my machine had all four, and not one of my three JVMs was patched.

2026-11-03 · 7 min · 1331 words · Trevor Wang
Google Turned Every App Into an MCP Server on Your Phone

Google Turned Every App Into an MCP Server on Your Phone

On Android 16 every app can declare functions like an MCP server. I sent a message from outside my own app with zero screen touches, and dug out the internal|privileged permission gate.

2026-11-02 · 6 min · 1157 words · Trevor Wang
Giving an AI Agent DevTools: It Can See Every Frame

Giving an AI Agent DevTools: It Can See Every Frame

The same screen: a 77 KB screenshot the model has to guess at, versus 4,184 bytes of text that states the structure. I ran both on an emulator, and hit the parts it still cannot do.

2026-11-01 · 6 min · 1256 words · Trevor Wang
Split One Developer Request Into Three Messages and the Agent's Cost More Than Doubles

Split One Developer Request Into Three Messages and the Agent's Cost More Than Doubles

JetBrains analyzed 4,782 real IDE sessions: splitting one request into three messages more than doubles cost and barely moves the resolve rate.

2026-10-30 · 8 min · 1495 words · Trevor Wang