onehappycloud · a small lab for odd ideas

We build the app the platform said no to.

Phone apps, Android TV, an illustrated history of ciphers, a local research library, a visual LaTeX editor, a librarian for book files and an illustrated formula library. Each one starts with something an existing tool refuses to do. For every project we show the limitation, how we got around it, and a demo you can try right here.

Android · Android Auto

Plex Audiobooks

Plex serves audiobooks as music albums. This app adds real chapters, on-device transcripts, smart bookmarks, spoiler-free recaps and page numbers.

See how it works →
Android TV · Nvidia Shield

Blackbox TV

A native Android TV app for a home media server. Merged libraries, film cuts as versions, and interchangeable skins over one core.

Watch the Halo demo →
Illustrated long read · ciphers

Enigma & Lorenz

From Caesar's shift to twelve Lorenz wheels and on to public keys, with twenty-four live figures: the mathematics that hid the messages, and the mathematics that exposed them.

Follow the signal →
Desktop app · local AI

Sorcery

PDFs, ebooks, Word files and web pages read into one library on your own computer, connected by meaning, names and topics, and answerable with real page numbers.

See how it cites →
Desktop app · LaTeX

Textery

Write like a word processor, get clean multi-file LaTeX and a real PDF that rebuilds as you type. Try the real interface in the page.

Try the editor →
Desktop tool · ebooks & audiobooks

Shelver

Sorts a messy pile of ebooks and audiobooks into the folder layout your book app expects, without renaming a single file. Every move is previewed and can be undone.

Watch it tidy up →
Illustrated formula library · EN / DA

Mathlab

149 formulas in mathematics, physics and chemistry, each with a figure you can move, where it comes from, a worked example and hints instead of answers.

Open a formula →
The lab · experiments

The Lab

Smaller experiments that explain an idea: game algorithms you can play against, a Shakespeare-typing monkey simulator, and a piano coach that listens.

Visit the lab →

Project 01 · mobile app

Plex Audiobooks

Plex is a great server for an audiobook library but a poor audiobook player. We keep Plex as the back end, serve each book as a plain album, and do all the audiobook work on the phone.

in daily usein active developmentread-only against Plexoffline-firstAndroid Auto

The real app

Running on a phone today

Screenshots from the Android build, streaming from a home Plex server, in four groups. Tap a phone or its caption to bring it to the front.

1 / 4

First run

Three pages before you sign in

The app's onboarding, rebuilt from its own source: the same pages, words, icons and animations. Tap Continue or swipe the phone. On the last page, Start setup plays the Plex sign-in steps.

AUDIOBOOKS1 / 3
THE
AUDIOBOOK

YOUR LIBRARY

Your audiobooks.
Your server.

Listen to your audiobook library directly from Plex, with your listening experience kept on your device.

  • Plex library
  • Progress kept locally
  • Never writes to your server
YOUR
BOOK

LISTEN YOUR WAY

Listen anywhere.
Keep it local.

Your listening progress stays on your device. Download books when you want to take them offline.

  • Your device
  • Download and listen offline
  • Private by design
YOUR
BOOK
voice becomes text

MORE THAN AUDIO

More than just
listening.

Turn your audiobook into text when you want to skim, search, revisit, or catch up faster.

  • Readable transcripts
  • Search inside books
  • Processed on device

Swipe to explore

Explain before asking

Three pages say what the app is before it asks for anything: your server stays yours, your progress stays on the phone, and the audio can become text.

No password in the app

Start setup opens Plex's own sign-in in the browser. The app waits for your approval and keeps the token in the phone's secure storage.

A normal Plex device

Sign-in uses the same device registration and approval as any other Plex app. The phone shows up in the server's device list, where the owner can evict it or revoke its access at any time.

The gap

Three things Plex won't do for audiobooks

Plex

No proper audiobook agent

A book is treated like music. Narrator, series and descriptions don't fit the metadata model.

Our fix

Serve it as an album, enrich on the phone

Plex only hosts the files. The app backfills chapters, genres and descriptions from AudiobookDB and AudioSilo.

Plex

Chapters get lost

Chapter markers in the file often never make it through the API, so a 12-hour book is one long track.

Our fix

Read chapters from the file itself

The app parses the M4B's own atoms, even while streaming, and rebuilds the chapter list.

Plex

Audio is a black box

You can't search a book, see what you bookmarked, or remember where the story was.

Our fix

Transcribe it on the device

Whisper runs locally. The text drives search, smart bookmarks, recaps and a read-along view.

How it works

Six drawings of the machinery

Pick a part of the system. Each drawing shows where the data goes and what runs where.

AudiobookDB · AudioSilo online chapter + genre lookup backfill when the file has none HOME SERVER Plex Media Server untouched, stock install Music library each book = one album M4B / MP3 files LAN remote relay fastest reachable route wins GET only library · covers · audio bytes no progress written back PHONE · EVERYTHING BELOW RUNS ON THE DEVICE Plex client Chapter readermoov · chpl atoms Downloads Media3 playernative module Android Auto · lock screen whisper.cppspeech → text llama.cppQwen2.5 recaps SQLite progress stats chapters transcripts bookmarks recaps lists bytes files play pos 16 kHz audio segments transcript up to your position cached recaps
The server stays dumb on purpose. Plex only answers GET requests, over whichever route is fastest right now. Chapters, playback, transcripts, recaps and every bit of your progress live in a database on the phone, so nothing about your listening ever touches the server.

Chapter x-ray

Same file, two different answers

Many M4B files store chapters twice: as a QuickTime chapter track, which Plex reads, and as a Nero chpl list, which Plex ignores. When a tagging tool leaves the first one as a one-entry stub, Plex shows no chapters even though the data is in the file. The app reads both and keeps whichever has more entries.

What Plex shows

The Lighthouse at Skarø
E. M. Holt · Album · 2019
1. Lighthouse_at_Skaro.m4b9:12:00
chapters: 1 reported

What the app reads from the file

ftyp M4B moov ├─ trak audio tref → chap ├─ trak text 1 sample (stub) └─ udta └─ chpl 12 entries, winner

Try it

Play with the player

A simulation of the app with a made-up demo book. Drag the scrubber, open the read view, search the book, drop a bookmark or ask for a recap.

21:04offline
The Lighthouse at SkarøE. M. Holt · read by Ida Brandt
Ch. 1 · The Crossing
0:00-9:12:00
page 1 / 306
Chapters that exist

The chapter under the cover updates as you scrub. Plex reported one for this file.

ePages

A page estimate from narration speed and words per printed page, so an audiobook feels like a book. A sensible guess the user can tune, not metadata.

Read along

The transcript follows the audio and is split by chapter. Tap a line to jump there.

Search the audio

Find a phrase in the book, or across the whole library, and jump to that moment.

Smart bookmarks

Bookmarking transcribes the audio around the spot, 30 seconds each side by default, so every bookmark comes with its own context. Window and read-around length are adjustable.

Snapshot window
Spoiler-free recaps

An on-device model summarises only what you've already heard, chapter by chapter, then combines the summaries.

In the car

Android Auto, with the whole library

Plex's own apps treat the car as a music player. Here the car gets the audiobook app: your books in progress, the full library, cover art, and resume in the right spot.

CONTINUE
The Lighthouse at Skarø38% · 5 h 42 m left
Salt Roads12% · 8 h 10 m left
The Quiet Engine71% · 2 h 03 m left
Ch. 5 · Salt and Paraffin The Lighthouse at Skarø
−15❚❚+301.1×
A native player underneath

Playback runs on a native Media3 module with a media library service, so the car, the lock screen and the notification all control the same player.

Browse everything

Books in progress up front and the full library behind them, with artwork.

Car buttons just work

Steering-wheel and on-screen seek buttons skip back 15 and forward 30, like in the app.

ePages, the math

How long is an audiobook in pages?

Page numbers make an audiobook feel like a book. The estimate is plain arithmetic, and it lines up well with the print and audio lengths publishers list for the same title.

12 h 06 m
155
280

Estimated length

402

pages · about 1.8 minutes of listening per page

pages = minutes × wpm ÷ words-per-page

By the numbers

Three weeks, a lot of commits

~200Almost 200 commits later, here we are. Three weeks, 31 Aug to 20 Sep 2026
0writes to the Plex server
3 + 3speech models and recap models, downloaded on demand
±30 sof audio around every bookmark, transcribed on the spot
Expo SDK 57 · React NativeTypeScriptwhisper.cppllama.cpp · Qwen2.5SQLite + DrizzleMedia3 native playerAndroid AutoTanStack Query · Zustand

Project 02 · Android TV

Blackbox TV

TV apps are usually phone apps stretched to a big screen, or a web page in a wrapper. Blackbox TV is written in Kotlin for the remote, plays through Media3, and runs on any Android TV box. It is used every day on an Nvidia Shield TV Pro, our test device. Plex is the live backend today; the interface never talks to it directly.

in daily useKotlin · Compose for TVMedia38 skins

One app, two skins

Same app, same data, redrawn

Web recreations of two of the app's skins, built from their own colours, fonts, sizes and motion. Halo is light that frames things: a gold ring for focus and a floating tab bar, in light and dark. Monolith is black slabs with an orange marker, like a flight recorder. Switch between them: same titles, same menus, different app. Each demo loops by itself, and the D-pad shows which remote key is pressed. Every title, person and picture is invented.

Skin
Appearance
Open full screen ↗

The gap

What the stock apps get wrong on a TV

Stock app

The same film, twice

Each library is its own list. A film in both your 4K and HD libraries shows up two times.

Blackbox TV

Merge libraries, keep the copies

Libraries of one kind browse as one list, even ones shared with you from another server. Copies with the same IMDb, TMDB or TVDB id become one title with versions, and shared copies are marked Remote.

Stock app

A cut is a file name

To know which file is the Director's Cut you open the details and read paths.

Blackbox TV

Cuts are version labels

The edition the server names, or one read from the file name: Extended, Theatrical, IMAX and more. Best picture first.

Stock app

One fixed interface

Menus hold one kind of library, and the look is what ships.

Blackbox TV

Skins over one core

Eight skins redraw every screen on the same data. A menu entry can mix movies and series, like "Documentaries".

How it works

Four drawings of Blackbox TV

SKINS · EACH ONE REDRAWS HOME, MENU, BROWSE, DETAIL AND PLAYER ViewModels Domain libraries · titles · versions · tracks · playback decision · menu entries as data adapter boundaryabove it: no Plex paths, tokens or DTOs Plex adapterHTTP · token in Keystore · DTOs Blackbox adapterplanned, same contract swap the server,keep every screen
The look is replaceable; the core isn't. Skins only read the domain, so a new skin like Halo reuses every call, view model and the playback service. Only the adapter knows it's talking to Plex, which is why a second server can be added later without a second app.

By the numbers

Tuned on the real box

297 mslaunch to first frame on a Shield TV Pro at 4K, down from 2,370 ms
27%janky frames while Home loads, down from 85%, with a hand-written baseline profile
8skins on one core: Glass, Aperture, GrayScale, Marquee, Atlas, Monolith, Premiere, Halo
0web views. Native Compose, public Android TV APIs only
Kotlin 2.2Jetpack Compose for TVMedia3 ExoPlayer · HLSOkHttp · RetrofitCoroutines · StateFlowDataStore · Android Keystore

Project 03 · an illustrated long read

Enigma & Lorenz

The Enigma and the Lorenz machines protected the most secret German messages of the Second World War. Both rest on a five-hundred-year-old idea: encipher every letter with a different alphabet. This page builds that idea up one step at a time, from a shifted alphabet to a machine with twelve wheels, and shows the mathematics that hid the messages and the mathematics that exposed them. It ends with the public keys that replaced the codebooks.

  1. ICaesar
  2. IIVigenère
  3. IIIEnigma
  4. IVLorenz
Open the journey →
Rotor windows
AAA
Key
Lamp

Ten presses of the same key. The rotors turn before every letter, so each A lights a different lamp.

Every figure is live

Twenty-four instruments, not illustrations

Each figure on the page is a working model you can type into, drag or run. Eight of them, as they look on the page:

The tabula rectaThe tabula recta
The signal path through the EnigmaThe signal path through the Enigma
The Bombe at workThe Bombe at work
Three rotors against fourThree rotors against four
The Lorenz key generatorThe Lorenz key generator
Colossus at workColossus at work
From the air to the commanderFrom the air to the commander
Agreeing a key in publicAgreeing a key in public

The gap

What most explanations leave out

Usually

A photo of the machine

You see the rotors, but not what the current does inside them.

Here

Type and watch the current

Every key press draws its path through plugboard, rotors and reflector, with the real wiring.

Usually

"Too many settings to try"

A big number, and the maths stops there.

Here

The arithmetic, shown

Modulo 26, the key space and why it peaks at eleven plug cables. Trying every setting at a million a second would take about five million years.

Usually

"And then Turing broke it"

The breaking is a footnote to the machine.

Here

Every break, step by step

Frequency analysis, Friedman's index, cribs, menus and a running Bombe, Tiltman's depth, Tutte's differences and Colossus's counts.

By the numbers

24live figures to type into, drag and run
7chapters, from Caesar to the keys behind https
12Lorenz wheels, with 501 cams between them
121days for one Bombe to try every wheel order of the four-rotor M4

The project keeps its own look: file paper and ink, Enigma lamp amber for the signal in, cable green for the way back and for bits, and a cryptanalyst's red pencil for contradictions.

Project 04 · desktop research tool

Sorcery

Your sources come as scanned PDFs, ebooks, Word files and web pages, each in its own reader, and none of them talk to each other. Sorcery reads them all into one library on your own computer, connects them by meaning, names and topics, and answers questions across every file with real page numbers you can put in a footnote.

PDF · EPUB · Kindle · Word · webruns locallyreal page numberschecked answersChicago · APA · MLA

The real app

Any book file in, one connected library out

Drop in scanned PDFs, ebooks, Word files, web pages and your own drafts. Sorcery reads them all into one library and finds where they agree, overlap and cite the same people and places. Shown here with an invented project, a chapter on lighthouse families, so every title, person and place is made up; the app and its screens are real.

127.0.0.1:8765
Library with PDF, EPUB, DOCX, AZW3, HTML and Markdown sourcesLibrary with PDF, EPUB, DOCX, AZW3, HTML and Markdown sources
Page numbers: PDF page to printed page grid, the page image and the correction rulesPage numbers: PDF page to printed page grid, the page image and the correction rules
Ask: an answer footnoted to four different filesAsk: an answer footnoted to four different files
Notebook mixing passages from different files with notesNotebook mixing passages from different files with notes
Topics: passages grouped by meaning across sourcesTopics: passages grouped by meaning across sources
A back-of-the-book index across all sourcesA back-of-the-book index across all sources
Network of people, places, organisations and ships across sourcesNetwork of people, places, organisations and ships across sources

The gap

Three things a citation needs that other tools skip

PDF readers

Page 58 of the file

The page counter counts the cover, the front matter and the plates. Cite that and your reader looks on the wrong page.

Sorcery

Page 46 of the book

Numbers are read from the page itself: roman front matter, unnumbered plates, chapter openers, articles that start at p. 245. Each one says how it was found.

AI chat

Confident and unchecked

Ask about your PDFs and you get fluent prose, sometimes with a page number or a quote that isn't there.

Sorcery

Footnoted and checked

The model only sees numbered passages and writes [3]. The page behind [3] comes from storage, quotes are matched word for word, and unsupported sentences are underlined.

Cloud tools

Upload your library

Your books and notes leave your computer, and the search runs on someone else's terms.

Sorcery

Everything on your GPU

OCR, meaning search, reranking, name finding and the assistant all run locally. Claude is an option you switch on with your own key.

How it works · page numbers

Which page is this?

A made-up book, as a PDF: a cover, roman front matter, an unnumbered photo plate and a chapter that opens without a number. Click any page to see what the PDF counter says, what Sorcery cites, and how it knows.

PDF page–
→
Sorcery cites–

How it works · answers

An answer is checked before you rely on it

An invented question against two invented passages. The model writes the answer and its markers; Sorcery checks every marker and every quotation against what it actually sent. Run the check.

Passages sent to the model

[1] Harbour Signals, p. 112
The night shift logged every intercept by hand, and by spring the files filled three rooms.
[2] The Quiet Station, p. 47
Most of the staff were recruited from universities and were told nothing about the purpose of the work.

The model's answer

Intercepts were logged by hand, and by spring the files filled three rooms.[1] Staff came mainly from universities and were told nothing about the work.[2] The station closed in 1946.[3] Many of them later wrote memoirs.

    How it works · the machinery

    Five drawings of Sorcery

    What runs where, and how a file becomes a passage you can cite. Pick a part of the system.

    YOUR COMPUTER Your browser React · TypeScript · pdf.js 127.0.0.1:8765 Sorcery server Python 3.12 · FastAPI search · citations · export Tesseract OCR pages without text are read as images Import worker one file at a time, in the order you added them Background jobs · GPU meaning: Qwen3-Embedding names: GLiNER LIBRARY FOLDER · YOURS, MOVABLE, NEVER UPLOADED Your files a copy of every PDF, ebook and document SQLite database documents · pages · chapters passages · 2 word indexes (FTS5) names · notebooks · conversations Vectors one file per source, searched in full Ollama qwen3.5:9b writes answers Claude · optional only if you choose it: the question and the passages found are sent Hugging Face search models, about 5 GB, downloaded on first start, then the app goes offline
    A web app with no web server in the cloud. Sorcery is a Python server and a React page, both on your own machine. Files, indexes, notes and conversations all live in one library folder you can move. The models come from Hugging Face once and the app then switches to offline mode; the only other way out is Claude, and only if you pick it over the local model.

    Under the hood

    Seven stages for every source

    1TextPDF, EPUB, MOBI/AZW, DOCX, HTML, TXT, Markdown
    2OCRScanned pages found and read with Tesseract, flagged in results
    3Page numbersPrinted numbers, read and inferred; ebooks use publisher page markers
    4ChaptersBookmarks, else the printed Contents page, each entry confirmed in the text
    5Word indexSQLite FTS5: phrases, OR, -exclude, prefix*, NEAR/10
    6Meaning indexQwen3 embeddings on the GPU, reranked with bge-reranker
    7Names & termsGLiNER finds people, places, units, battles, ships and aircraft

    By the numbers

    Built for footnotes

    0files uploaded anywhere, unless you choose Claude for the assistant
    3citation styles: Chicago notes, APA 7 and MLA 9, copied with italics intact
    3export formats: Word with real footnotes, LaTeX with biblatex, and Markdown
    112tests, run against generated books with known page structures
    Python 3.12 · FastAPISQLite FTS5PyMuPDF · TesseractReact · TypeScript · pdf.jsQwen3-Embedding · bge-rerankerGLiNEROllama · ClaudeBibTeX · RIS · CSL-JSON

    Project 05 · desktop app

    Textery

    LaTeX makes the best-looking theses and papers, but you write it as code. Word processors are easy to write in, but the result is hard to number, cite and typeset properly. Textery is a visual editor that writes clean, multi-file LaTeX behind the scenes and builds the real PDF a moment after you stop typing. It is Sorcery's companion: cite straight from your research library.

    runs locallyreal LaTeX on disklive PDF16 citation stylesGitHub sync

    The real app

    Textery, running in this page

    This is Textery's own interface, not a recording: its server is replaced by a small stand-in so it runs in your browser. A pointer takes it through the main features on its own: it folds the PDF preview away for room to write, adds a source from its PDF and fills in the missing fields by selecting text in that PDF. Click or type anywhere in it and the tour stops, so you can try it yourself. The document and the source are invented, and the document's PDF was built ahead of time, so your edits won't appear in the preview.

    Textery · Reading the Tide

    Two screens

    The text on one screen, the PDF on the other

    The preview can leave the editor for a window of its own, so it can sit on a second screen and stay live. The editor notices and gives the room to writing. Both screens below run the real app, linked as they would be on a desk: press Back on the right-hand screen and the preview returns to the editor; open it in its own window again from the editor's preview bar.

    Together

    Two people, one chapter, at the same time

    Start Textery with sharing on and the Together dialog gives a link for your network. Everyone who opens it edits the same chapter live: you see their changes as they type, a cursor with their name, and who is in which chapter. Below are two copies of the real app, Ingrid's and Jonas's, joined the same way. Click into either screen to stop the play-through and type in one to see it arrive in the other.

    Ingrid's computer
    Jonas's computer, same network

    Waiting for Jonas to open Ingrid's link…

     

    The gap

    Between a word processor and a LaTeX editor

    Word processors

    Easy to write, hard to finish

    Numbering, cross-references, a bibliography in the right style and a clean table of contents all fight you near the deadline.

    Textery

    LaTeX does the finishing

    Chapters, equations, figures, references and sixteen citation styles are LaTeX underneath, so the output is typeset properly every time.

    LaTeX editors

    You write code

    Backslashes, braces and a log full of errors between you and the text, with the PDF a compile away.

    Textery

    Write, and watch the PDF

    Headings, emphasis, rendered maths and tables look like the output. The LaTeX is one switch away, and problems are explained in plain language with a link to the line.

    Online editors

    Your thesis on their server

    Documents live in someone else's account, and working together means one shared copy.

    Textery

    Plain files, your choice of sharing

    A folder of .tex files that also opens in Overleaf. Share live on your network, or sync through GitHub with paragraph-by-paragraph merges.

    How it works

    From a keystroke to a page

    01

    Edit visually

    A TipTap editor shows chapters, maths (KaTeX and MathLive), tables, figures and citation chips as they will print.

    02

    Write clean LaTeX

    Each chapter is saved as its own .tex file, one paragraph per line, so Git merges paragraph by paragraph. main.tex is generated from Document setup.

    03

    Build the PDF

    Tectonic (XeLaTeX) builds a moment after you pause, with biber for APA and Chicago. Errors come back in plain language.

    04

    Keep every version

    A version every few minutes, named milestones, word-by-word comparison and restore, plus live editing together and GitHub sync.

    By the numbers

    A typesetter that feels like a word processor

    16citation styles in three families, previewed by LaTeX with your settings
    7 · 10table-of-contents designs and table designs, plus your own saved table styles
    1switch between the visual editor and the LaTeX source of the same chapter
    98tests: 53 for the server, 45 for the LaTeX parser and citations
    React · TypeScript · ViteTipTap · CodeMirrorKaTeX · MathLivepdf.jsYjs live editingPython · FastAPITectonic · biberGit

    Project 06 · desktop tool

    Shelver

    Every audiobook and ebook app wants its own folder layout, and books arrive in any shape: a folder of chapter MP3s, a single .m4b, an EPUB next to a MOBI, a Calibre export. Shelver reads each book's own metadata, keeps the files that belong together, and moves them into the layout your app expects. It never renames a file, shows every move before it happens, never overwrites anything, and can undo a run.

    runs locallyfiles never renamed13 reference layoutspreview & undoweb UI + command line

    The real app

    Shelver, running in this page

    This is Shelver's own interface and its own planning code, running in your browser. Only the disk is pretend: an invented library of thirteen books that exists in memory. A pointer scans it, fixes a missing author, tries other layouts, organizes it and undoes the run. Click or type anywhere in it and the tour stops, so you can try it yourself. Nothing on your computer is read or touched.

    Shelver · /Books/Incoming

    The gap

    Between a messy book folder and a tidy library

    Media servers

    Each has its own rules

    Audiobookshelf, Plex, Jellyfin, Kavita and Komga each expect a different folder structure, documented in different places.

    Shelver

    Pick the app, get its layout

    Thirteen reference layouts, each linked to that app's own documentation, or a template of your own with a live example as you type.

    Renaming tools

    They rewrite your files

    Bulk renamers and taggers change file names and tags, which breaks other apps' references to them.

    Shelver

    Only the folders change

    File names and tags stay exactly as they were. When you correct an author or a title, only the folder name uses it.

    Move scripts

    Move first, hope later

    Two books with the same name, a half-copied folder or a drive that drops out can leave a library in pieces.

    Shelver

    Preview, then a journal

    Nothing is overwritten, a conflict skips the whole book, moves across drives are checked before the original is removed, and every run can be undone.

    How it works

    From a pile of files to a shelf

    01

    Find the books

    Files are grouped into books: a folder of chapters with its disc sub-folders, a single .m4b and its cover, an EPUB and a MOBI of the same title, a Calibre-style book folder.

    02

    Read what each book says

    Sidecar files first (metadata.opf, metadata.json), then embedded metadata in EPUB, MOBI, FB2, PDF, CBZ and audio tags, then file and folder names. Anything guessed from a name is flagged.

    03

    Plan the shelf

    A template such as {author}/[{series}/]{title} places each book. Spelling variants of an author or series share one folder, names are made safe for Windows, macOS and NAS shares, and collisions are found before anything moves.

    04

    Move, with a way back

    Move or copy after you confirm. Folders left empty are cleaned up, and a journal of every move makes undo possible. The command line does a dry run unless you add --apply.

    By the numbers

    Careful by design

    13reference layouts, from Audiobookshelf and Plex to Calibre and A–Z
    36file types recognised: 19 ebook and comic formats, 17 audio formats
    0files renamed. Only the folders around them change
    1dependency, for reading audio tags. Ebook formats and ZIP are read by its own code
    Node.jsplain HTML · CSS · JSmusic-metadataown EPUB · MOBI · FB2 · PDF readerslocalhost + session tokennode:test

    Project 07 · an illustrated formula library

    Mathlab

    A formula collection that explains itself. Every formula, from adding fractions to the surface of a cone, escape velocity, the rocket equation and the slowing of time near a black hole, comes with a picture you can move, the reason it is true, a worked example, and a problem to try with hints instead of answers. Written for pupils from about ten to sixteen, and for teachers who want the mechanics, not answers to copy. In English and Danish.

    1. 11shelves of mathematics
    2. 8of physics
    3. 3of chemistry
    Open the library →
    Fig. 0Times tables on a circle
    2
    Join every dot to the dot at twice its number and a heart appears, the curve called a cardioid. Mathlab's front page opens with this figure; try 3, then play.

    The real site

    Mathlab, running in this page

    This is the whole site, not a picture of it. Pick a page, then move the figures, open the derivations step by step and try the problems. The same pages exist in Danish.

    The front door: search every formula, then pick a shelf. Each shelf is numbered like a reference book, so figure numbers stay put as the library grows.

    The gap

    Between a formula sheet and an answer machine

    A formula collection

    The formula, and nothing else

    Symbols in a box. What they mean, and why the formula holds, is left to the reader.

    Mathlab

    Every formula explains itself

    Colour-coded symbols with units, one plain sentence, and a derivation you step through while a drawing follows along.

    Homework apps

    Type the problem, copy the answer

    Fast, and nothing is learned.

    Mathlab

    Hints instead of answers

    Each "Your turn" has an answer box and a ladder of hints that ends with the method, never just the number.

    Textbooks

    A still picture

    One drawing with one set of numbers.

    Mathlab

    Move it and watch the numbers

    Every figure is live, and a line under it shows the formula with today's numbers plugged in, in the same colours as the symbols.

    Anatomy of an entry

    Seven parts, the same on every page

    1. 1Formula cardThe formula with colour-coded symbols, one plain sentence, and a legend of every symbol with its unit
    2. 2Live figureDrag it, and the formula is shown again with the new numbers in it
    3. 3Where it comes fromA step-by-step derivation, with a diagram that follows each step
    4. 4Worked exampleUnderstand, plan, solve, check, revealed one step at a time
    5. 5Your turnAn answer box with a ladder of hints that ends with the method
    6. 6Watch outThe classic misconception, named and taken apart
    7. 7RelatedWhat it builds on, what it leads to, and the classic problem that tells its story

    By the numbers

    One catalog, two languages, no build step

    149formula entries on 22 shelves of mathematics, physics and chemistry
    178task generators for printable worksheets with a solution key
    6 · 14classic problems from history, and problem-solving tricks in the toolbox
    62pages in English and Danish, checked by a robot after every change: every "Your turn" answer, layout on phones, labels inside their figures

    Plain HTML, CSS and JavaScript with no build step and no server: open index.html and it works. One catalog file drives the menus, the search, the formula sheet and the related links, and every figure is drawn in SVG from the same colour tokens in light and dark.