Ilana River

Developer and technical writer

IlanaRiver

I build tools for problems I've actually had, and I write about what broke along the way.

01 / 03 A simulated star, 27 days of light. Scroll to fold it.

scroll

About

I like problems with a right answer.

  1. Jul 2026ChronicledHistory site, written and built from scratch
  2. Aug 2026LocusA Level study app with a step checker
  3. Aug 2026chatvault and face-grouperData recovery and photo sorting, both on CPU
  4. Aug 2026entolog and starfoldSpecies records and a transit search in the browser
  5. Aug 2026PellixMy web design studio
  6. Sep 2026The AssayMy own technical publication
  7. Oct 2026Mark point marking in LocusPast papers marked against the real schemes

Most of what I build started as a problem of my own. A chat app on my laptop stopped opening my messages, so I wrote the tool that got them back, and then made it work for other apps too.

I spend most of my time on Linux, in file formats, encrypted databases, recovery and automation. My favourite problems are the ones where the answer is hiding in a binary layout or a schema nobody documented, and the only way in is reading the source. If something needs a web app, I build the web app.

I'm doing Edexcel A Levels in Physics, Maths and Computer Science. Maths and physics are why I like software you can check. Locus is the app I study with.

  • Systems and data

    Python and SQL, SQLCipher, AES, binary formats. chatvault checks every attachment it decrypts before it calls it recovered.

  • Web apps

    TypeScript, React 19, Vite, Tailwind, Cloudflare. Locus, Chronicled and Pellix are live, and you can click through to them below.

  • Numerical work

    Exact fractions, transit search and clustering. starfold searches real TESS data for planets without a single library.

  • Technical writing

    I run The Assay, and when a build goes wrong I write down why.

Work

Six things I built.

Click one to see what the problem was, what I did about it, and how it turned out.

01

Locus

Study app with a step checker
React 19TypeScriptKaTeX

Problem

An answer key tells you if your final answer is right. It can't tell you whether the working that got you there is.

What I did

Wrote a checker that reads working line by line in exact arithmetic, and added marking against real mark schemes, point by point.

Result

It catches a right answer reached the wrong way. Study data never leaves the browser.

02

chatvault

Recovery and troubleshooting for messaging apps
PythonSQLCipherAES

Problem

When a desktop messaging app breaks or won't open, your messages and photos are usually still on disk. They're just locked behind encryption the app normally handles for you.

What I did

Built a core that unwraps Electron's safeStorage across keyring backends, opens SQLCipher, and decrypts each attachment with an HMAC check. Each app gets a small adapter.

Result

Adding a new app only takes a small adapter, and the ones I've built are tested against real profiles. Anything it can't recover is sorted into four categories, so you know exactly what's missing.

03

starfold

Planet search in the browser
JavaScriptTESS dataNo dependencies

Problem

Searching a star's light curve for a planet usually means Python libraries and a machine to run them on.

What I did

Wrote a Box Least Squares transit search from scratch in JavaScript and pointed it at real TESS light curves.

Result

The whole search runs in a browser tab, with no server and no library behind it. The curve at the top of this page folds the same way.

04

face-grouper

Sorts photos by person, offline
OpenCVscikit-learnPython

Problem

Sort a folder of photos into one folder per person, with no GPU and without uploading anyone's face anywhere.

What I did

Face detection and clustering on the CPU. It doesn't guess gender on purpose: those models fail worst on the people a wrong label hurts most.

Result

At a threshold of 0.85 the detector found faces in zero of eighty real photos and still reported a clean run. I caught that and wrote it up.

05

entolog

Photos to species records
Python stdlibDarwin Core

Problem

Insect recorders end up with hundreds of photos and a spreadsheet they fill in by hand.

What I did

A tool that walks the photo folder and builds the record table with the fields the recorder picks, in a window, a terminal or their own editor.

Result

Exports a Darwin Core Archive, the format biodiversity databases accept. Nothing to install beyond Python.

06

Chronicled

History site
TanStack StartReact 19Vite

Problem

Most history sites are a flat archive. You have to already know what you're looking for.

What I did

Organised it into Past, Present and Future, with a world map for browsing by place and a research view that searches several open sources at once.

Result

It's live, and I wrote every article on it.

Contact

Want to work together?

I'm looking for remote work in software or technical writing. Email is the best way to reach me.

adlie72ae@gmail.com · Bangladesh, UTC+6