tentkotta

six things · one tent

A fort of small apps, each built with only “me” as the audience :) All offline, all open source.

kind
android app
state
v0.2.0, on device
needs
no account, no api keys
crossfeed playing a local file
now playing, from a local file

crossfeed

any music link, your player.

A friend sends a Spotify link. You use Apple Music, and half the tracks are already FLAC on your phone. Crossfeed sits between the tap and the app: it reads the link, works out what the song actually is, finds it where you listen, and opens it there.

  • resolvingReads the source platform's own page, whether Spotify, Apple Music or YouTube Music, for title, artist, album and duration. No outside APIs, no keys to register.
  • local firstSearches MediaStore alongside the catalogue, so the copy you already own wins over a stream if you want it to.
  • speedAbout 500 ms cold, 62 ms cached. One exact match opens straight through; several targets get a sheet.
  • libraryLocal files and the online catalogue merged into a single search, with a player fork that plays both.
kind
android app plus android auto
state
in build
needs
nothing online, ever
tamepest guiding a drive
guidance, cruise theme

tamepest

a route worth driving, not the fastest one.

An offline driving app for Android. Routing, guidance, search and maps all live on the device, one region pack at a time, no tiles fetched, no trip leaving the phone. Tame plus tempest: taming the tempest in oneself is a drive.

  • routingIts own router and map format, with sliders for curvature, elevation and scenery instead of a single arrival time.
  • guidanceTurn by turn built to be glanced at, never listened to. Newspaper typography where you read, maximum contrast where you drive.
  • the car screenA proper Android Auto surface. Nav state and routing contracts live in a module the phone UI and the car session both consume.
  • after the driveEvery trip kept on device, the long ones scored: curvature held, elevation gained, how smoothly it was driven.
kind
python framework plus workbench
state
usable, in use, MIT
needs
python 3.11 or newer
the anvil site
one command opens the workbench

anvil

from equations to engineering tools.

Write physics as plain Python functions, wire them into solvable systems, and get results with units tracked for you, either as a library or in a browser workbench that opens itself with one command.

  • systemsComposable relations solved forward or inverted, with sweeps, parallel evaluation and sensitivity analysis built in.
  • unitsQuantities carry their units through every solve, so a dimensional mistake is an error rather than a plausible number.
  • workbenchCalculator, node graph canvas and offline docs at 127.0.0.1. One command builds the venv and opens the browser.
  • adaptersOptional extras for plotting, surrogate models, pyNASTRAN post processing and OpenMDAO problems.
kind
static site, astro plus preact
state
live, twenty experiments
needs
a browser. there is no backend
the daily aporia front page
the front page, one problem a day

the daily aporia

thought experiments you argue with, set in a newspaper.

Twenty classic thought experiments, among them the trolley problem, the veil of ignorance, the Chinese room and Newcomb's paradox, rebuilt as small interactive machines rather than essays. Every answer is stored in your own browser and nowhere else.

  • consistencyMark statements true or false; the tensions between your own answers are what gets surfaced.
  • scenarioBranching dilemmas that map the choices you actually made onto a named philosophical position.
  • puzzleOne hard problem, among them Monty Hall, Wason, Gettier and Ellsberg, committed to before the analysis is revealed, with live simulation where it helps.
  • buildFully static. Adding an experiment is one typed data file and one line in the registry.
kind
browser tool, one html file
state
live
needs
a tab. no install, no account
the slideforge editor
the editor, running in a tab

slideforge

make presentations in your browser.

A whole slide editor in a single HTML file. Nothing is uploaded, nothing is stored on a server, and on the web version the deck is erased the moment you close the tab. Literally, not as a policy.

  • offlineMaths and fonts are bundled, not fetched. Exports contain no CDN reference at all, so a deck opens years later on a machine with no network.
  • editingGrouping, templates, vertical alignment, presenter view, and a keyboard layer that keeps your hands off the mouse.
  • exportStandalone HTML, print with live maths rendered to SVG, and PNG at up to six times scale as a true render rather than an upscale.
  • portableDownload the file and it works from disk. The local build autosaves, the web build deliberately does not.
Obsidian logo Trilium logo
kind
python script, one file
state
done, does its job
needs
requests, markdown, an etapi token
$ python obsidian2trilium.py "D:\MyVault"

  scanning vault
  notes and images mapped
  writing to trilium
  done
a vault, moved in one run

obsidian2trilium

move the whole vault, keep the shape of it.

One script that walks an Obsidian vault, a folder or a zip, and rebuilds it inside Trilium over ETAPI, with the folder tree intact as a note hierarchy and every internal link still pointing at the right note.

  • links[[wikilinks]] are resolved to real Trilium note references, matched by title, filename or stem.
  • imagesEmbedded images are inlined as base64 data URIs, so nothing depends on a path that no longer exists.
  • the workaroundTrilium 0.103.0 has a broken content PUT. The script assigns every noteId during the scan, so all content is written at creation time instead.
  • rerunnableOne switch clears a previous import first, so a failed migration is one command away from a clean retry.