Zekun Blog

Building and evaluating AI-powered products, agent systems, and local-first developer tools.

Designing the Review Loop in Slides Thief

Slides Thief Design Notes

Automatic perspective correction was already working reasonably well by the time I started on Slides Thief 3.0. For ordinary lecture and presentation photos, the detector could usually find the pro...

A Memory System Should Survive an Interrupted Write

Transactional crash recovery, conditional rollback, and staged migration in MemoryCustodian v0.12.0

Multi-File Mutations Require Transactional Durability When a coding agent changes persistent project memory, the operation often spans several files. A governance update may rewrite structured ent...

A Memory System Should Explain What It Did Not Load

Deterministic and inspectable context routing in MemoryCustodian v0.11.0

A Bounded Context Pack Should Explain Its Omissions When an agent starts an implementation task with four memory files injected into its prompt, the context looks clean and focused. The trouble is...

What Should a Coding Agent Be Allowed to Remember?

From persistent context to governed project memory in MemoryCustodian v0.10.0

Persistence Should Not Automatically Grant Authority When a coding agent inspects a repository and notices that every data file uses JSON, that observation is factually correct. But should every s...

Slides Thief 2.0: From Rectangle Heuristics to Evidence-Aware Review

A browser-local redesign of boundary detection, confidence, and batch geometry.

What Changed in Slides Thief 2.0? Slides Thief 2.0 replaces a fragile single-rectangle heuristic with an evidence-aware detection pipeline. Rather than prematurely committing to the first plausibl...

Designing Memory That Can Safely Forget

Persistent project memory is trustworthy only when forgetting is explicit, previewable, and bounded.

What Makes Agent Memory Safe to Forget? Deleting memory safely is harder than it sounds. In a repository, editing or deleting text by hand can easily break adjacent rules, leave stale references i...

Why Project Memory Should Be Plain Text and Repo-Native

Durable coding-agent memory should live with the code, survive the tool, and load only when relevant.

Why Use Plain Text for Project Memory? Plain-text, repo-native memory remains readable without the original tool, travels with the code, participates in ordinary review, and works across agent pla...

Slides Thief - Turn Photographed Presentation Slides into Clean PDFs

Just take photos of the slides—they are yours now.

Taking photos of presentation slides during conferences, lectures, or meetups is convenient, but the resulting images are almost always skewed, unevenly framed, and difficult to organize. Slides Th...

MemoryCustodian: Durable Project Memory for Coding Agents

Memory can grow; context must stay small.

What Is MemoryCustodian? MemoryCustodian is a repo-native memory protocol and CLI for coding agents. It stores durable project decisions and constraints in plain Markdown, keeps their history in G...

Social inequality and cultural factors impact the awareness and reaction during the cryptic transmission period of the pandemic

PNAS Nexus

The World Health Organization (WHO) declared the COVID-19 outbreak a Public Health Emergency of International Concern on January 31, 2020. However, rumors of a “mysterious virus” had already been c...