Studio notes

Lessons from software that has to last.

Short notes on native Apple software, product decisions, AI, and the cost of keeping code alive. Written from the work, not from a content calendar.

Native is a product decision, not a developer preference.

Cross-platform can be the right tradeoff. But if the app depends on native behavior, performance, accessibility, or platform polish, the shortcut can cost more than it saves.

A sprint needs an edge.

If scope, time, and quality are all allowed to move, the project drifts. A bounded audit or rescue sprint forces the decisions that get the product moving again.

AI makes judgment more important, not less.

AI can speed up research and implementation. It can also produce a lot of confident nonsense. Someone still has to choose the right problem, check the result, and own the tradeoffs.

Users should be able to leave with their data.

Local-first products are easier to trust when export is a feature, not a threat. Chat Explorer keeps imported data local by default and treats yearly and lifetime ownership as real options.

Every line of code has a cost.

It can break, needs tests, and has to survive the next Apple release. That is why I prefer built-in frameworks, native behavior, and a small dependency surface when they do the job.