Inside cover

★ FLAGSHIP#1

Penumbra

A local, offline math notebook that recognizes handwritten equations, solves them, and answers in the writer's own hand.

  • C#
  • .NET 8
  • On-device ML
  • Computer algebra

Source repositoryLatest release

The problem

Most digital math tools make handwriting a temporary input: write something, then watch it turn into typeset text somewhere else. Penumbra keeps the work on the page. A person writes an expression ending in =, and the answer appears from that mark in animated handwriting, with no cloud service, account, or solve button.

Recognition that is allowed to say “I don’t know”

Handwriting recognition is uncertain by nature, so Penumbra makes that uncertainty visible. Low-confidence symbols desaturate and shiver; ink that cannot be read as math is refused instead of being forced into a confident-looking wrong answer. The recognizer also learns the writer’s digits and operators over time, while a bundled handwriting font fills gaps it has not learned yet.

A page with dependencies, not isolated answers

Definitions and queries can live on separate lines: write x=5, define y=x+2, then ask for y+1=. Editing an upstream value re-solves downstream answers and shows the dependency ripple. Holding a numeric literal creates reversible “taffy” ghost ink, so dragging the value previews every affected result before committing a change.

What ships today

The Windows x64 early release supports single-line arithmetic, dependency re-solving, stroke-level erase, gesture undo/redo, and saveable .pen pages. Answers remain connected to their source strokes and can be dragged elsewhere as ordinary ink. Fractions, radicals, superscripts, graphing, and tutoring are deliberately still future work.

Why it matters

Penumbra is an end-to-end on-device ML product: recognition, uncertainty, symbolic solving, dependency tracking, persistence, and interaction design all meet on the same canvas. The hard part is preserving the feeling that the page still belongs to the person writing on it.

Back to all projects