2026-04-03 16:32:35

One of the under-appreciated benefits of using LLMs for coding is that they are experts on most topics.

Writing Trakaido would have been impossible if the LLM did not already have familiarity with Lithuanian. 💡 It was also familiar with dozens of other languages.

Languages are a strong point for large language models, but there are many other software projects that can benefit from having domain experts available to all developers at all times at a minimal cost.


This applies to non-coding projects as well. Trying to use LLMs to help file my taxes was ... still a bit optimistic in early 2026 🌎 there were several mistakes it made. But it generally understood what was going on. Without context.

💡 I have discussed before the question of context v. built-in training data. Should the machine be able to play chess without instructions (or external tools)? What about backgammon? Or a game I just made up? Is there any reason to believe/expect the universal game-playing machine will be a Large Language Model?

2026-04-03 15:16:01

About $600 of LLM credits. This includes one month of $200/mo Claude Code, about 8 months of having two $20/mo subscriptions (between ChatGPT, Claude, Replit, Zencoder), and API calls to generate data. ⚙️ there is a difference between "LLMs to write code" and "code that uses LLMs to generate data". although they do blur together.

Other costs include:

  • $99/year to be an Apple Developer
  • $10/year for a domain name
  • $30/month for web hosting on Digital Ocean.

Of course, the largest expense remains my own time 💡 None of the coding tools are good enough to do a project longer than about 2000 lines of code without expert supervision. Yet.. My time is not metered, and thus is somewhat invisible. But, at the low end, I would probably quote Fifty Thousand Dollars to do a similar project for someone else as paid work.

Compared to what it would take to build a similar app 5 years ago, this is fairly inexpensive. However, it is still a barrier to entry substantial enough to explain why there has not been a 🔥 more substantial flood of apps into the App Store.

2026-04-03 15:06:30

Trakaido started out of a personal need. I wanted to learn Lithuanian, and Duolingo did not have it. The other apps on the app store were not satisfactory for various reasons.

As part of the process, I have developed my own pedagogy regarding language learning.

A traditional language-learning approach typically emphasizes structured instruction: grammar rules, vocabulary lists, drills, and explicit correction. Learners often progress through textbooks organized by grammatical concepts (e.g., verb conjugations, cases, tenses), practicing through exercises and translation tasks. Output—speaking and writing—is introduced early and frequently, with accuracy as a key goal. This method builds conscious knowledge of the language system and can be effective for understanding formal structure, especially in academic settings, but it can sometimes lead to slower conversational fluency or reliance on mentally translating before speaking.

Comprehensible input is a language-learning approach most associated with Stephen Krashen, centered on the idea that people acquire language best by understanding messages that are slightly above their current level (often described as “i+1”). Instead of focusing on explicit grammar study or memorization, learners are exposed to meaningful, interesting content—stories, conversations, videos—where context, visuals, and prior knowledge help them infer meaning. The emphasis is on input that is understandable but still challenging, allowing the brain to naturally internalize patterns over time. Speaking emerges gradually and is not forced early; comprehension leads production. This method prioritizes fluency, intuition, and long-term retention over conscious rule application.

While I have found that the comprehensible input approach has some value, especially for grammar conjugations and the like, for building initial vocabulary and bootstrapping one's understanding of the language, I have found there is no approach better than rote memorization. This requires roughly 250 words, depending on:

  • How one counts word forms
  • How motivated one is to acquire vocabulary
  • Whether one memorizes words such as numerals

Once a user has a basic understanding of some vocabulary, sentences can be presented that are mostly understandable: grammatical forms, verb conjugations (which are often more sensible audibly than in spelling), and (conjunctions, prepositions, and the like) are then acquired more naturally in an approach similar to comprehensible input. 💡 In particular, I have found that memorization of verb conjugations is time- and effort-intensive for little practical benefit either in recalling them or in using them to generate sentences.

2026-03-10 14:56:48

Learning a new language is a long game. You need a tool that meets you where you are — whether you're on your phone during a commute, at your desk with a full keyboard, or offline on a plane. That's what Trakaido is built to do.

What Is Trakaido?

Trakaido is a vocabulary and language learning app available on the web, iOS/macOS, and Android. It's designed around one core idea: the best way to build lasting vocabulary is through varied, well-timed practice — not grinding the same flashcard deck until you're bored.

You can start learning immediately in demo mode without creating an account. When you're ready, sign in to sync your progress across all your devices.

Languages You Can Learn

Trakaido currently supports four languages across all platforms:

- *Lithuanian* — including full noun declensions and verb conjugations

- *Chinese* — with pinyin support

- *French*

- *Spanish*

Additional languages (German, Italian, Dutch, Portuguese, Swedish) are available on the web app for early exploration.

You can use Trakaido in your own native language too. The app's interface and word translations are available in English, Kannada, Bengali, Ukrainian, Polish, and Romanian, with more on the way.

How the Learning Works

Trakaido is built around a *tier-based spaced repetition system*. The app tracks which words you know well, which you're still learning, and which you haven't seen yet — then schedules review at the right time to lock knowledge into long-term memory.

Journey Mode: Your Daily Practice

*Journey Mode* is the heart of Trakaido. Every session, it automatically selects words for you based on where you are in your learning progression. You don't have to decide what to study — the app figures that out. It mixes in new words gradually while making sure older words don't fade.

Within a Journey session, the app varies the type of activity to keep things from getting repetitive:

- *Flashcards* — see the word, recall the meaning

- *Multiple choice* — pick the right answer from options

- *Listening comprehension* — hear the word, identify it

- *Typing practice* — spell it out yourself

- *Sentence practice* — see words in context

Focused Practice Modes

When you want to drill a specific skill, Trakaido has dedicated modes for that too:

- *Drill Mode* — choose any set of words and activity type for targeted practice

- *Blitz Mode* — timed speed rounds for a quick challenge

- *Vocabulary List* — browse and search your word lists

- *Grammar Mode* — structured lessons on conjugations and declensions

Study Materials: You Choose the Scope

Words are organized by *level* (beginner through advanced) and *group* (thematic categories like greetings, food, travel). You decide which levels and groups to include, so your practice stays focused on what's relevant to you right now.

Native Audio from the Start

Every word in Trakaido comes with high-quality audio. You'll hear native pronunciation whenever you encounter a word — in flashcards, multiple choice, and listening activities alike. The iOS app pre-caches audio so it works even when you're offline.

Available on Every Platform

*Web app* — works in any browser, on any device. No install required. Start at trakaido.com and pick your language.

*iOS/macOS* — a full native app with offline support, haptics, and iCloud sync. Built for iPhone, iPad, and Mac.

*Android* — a native app with background sync and home screen widget support.

All three apps share the same learning model and word data, so switching between devices feels seamless.

Privacy and Data

Trakaido takes a simple approach: demo mode requires no account and stores nothing remotely. When you sign in, your progress syncs to the cloud — and your data stays yours. There are no ads.

For Educators

If you teach a language and want to track student progress or assign spaced repetition practice as homework, Trakaido is building educator-specific features. Reach out at educators@trakaido.com to share what you need.

---

Trakaido is available now at [trakaido.com](https://trakaido.com). Pick a language and start your first session — no credit card, no setup, no excuses.

2026-03-09 17:02:50

The Problem

Building a language-learning app is a data problem disguised as a software problem.

Trakaido is a language-learning application. To teach someone Lithuanian, or Swahili, or Japanese, the app needs more than a translation dictionary. It needs to know that Lithuanian nouns decline into seven grammatical cases, and which declension class each noun belongs to. It needs to know that Chinese has no verb conjugation but every noun requires a specific measure word — you count flat things differently from round things differently from long things — and that the measure word depends on the individual noun, not just its shape. It needs to know that German nouns have grammatical gender that doesn't track biological sex or English intuition: die Sonne (the sun) is feminine, der Mond (the moon) is masculine, das Kind (the child) is neuter. It needs to know that Swahili verb infinitives take a ku- prefix. These aren't edge cases — they are the grammar, and the app needs them for every word.

It also needs example sentences, IPA pronunciations, synonyms, difficulty ratings, and translations — not into one other language, but into fourteen simultaneously, with more handled on the margins. And it needs all of this organized: not just a flat list of words, but words grouped by semantic category (food nouns, motion verbs, perception adjectives) and difficulty level, so the app can present vocabulary in a sensible pedagogical order.

That data does not exist in one place, in one consistent format, at the required level of detail, for all of these languages. So we built Greenland to create it.

What Greenland Is

Greenland is the backend data and tooling repository for Trakaido. It builds, maintains, and exports a multilingual linguistic database covering fourteen primary languages — English, Lithuanian, Chinese (Simplified), French, German, Spanish, Portuguese, Korean, Swahili, Vietnamese, Japanese, Italian, Dutch, and Swedish — plus dozens of additional languages handled for source data and supplementary content.

The database currently holds around 2,500 words across 90 semantic categories. For each word, it stores translations into all primary languages, inflected forms (conjugations, declensions, plurals), IPA pronunciations, example sentences with translations, grammar facts, synonyms, and learner difficulty levels.

Words are organized by part of speech and semantic category: food nouns, motion verbs, manner adverbs, and so on. This organization matters both pedagogically — it shapes how the app sequences material — and operationally, since the tooling processes batches of related words together.

How It Works

The Data Layer

The canonical source of truth is a set of JSONL files in the repository — one file per semantic category, one JSON record per word. Because this lives in version control, every word added, changed, or removed is visible as a code change and can be reviewed like any other commit.

The live working database is SQLite. It extends the JSONL baseline with everything generated by the automation pipeline: full morphological forms, sentences, pronunciations, grammar facts, operation logs. It can be rebuilt from the JSONL files at any time, and changes made through the tools can be exported back to JSONL to keep the repository current.

The Automation Agents

A fleet of autonomous scripts performs the bulk of data generation and quality assurance. Each agent is named after a Lithuanian animal and performs a specific task.

Voras (the Spider) generates and validates translations. Vilkas (the Wolf) generates word forms — conjugations, declensions, plurals — for six languages. Žvirblis (the Sparrow) generates example sentences. Lape (the Fox) generates language-specific grammar facts: which measure word a Chinese noun takes, the grammatical gender of French and German nouns, the declension class of Lithuanian nouns. Lokys (the Bear) validates English lemma forms and definitions. Papuga (the Parrot) generates IPA pronunciations. Šernas (the Boar) generates synonyms and alternative forms. Sarka (the Magpie) generates conversational example dialogues.

On the quality and export side: Bebras (the Beaver) checks database integrity. Povas (the Peacock) generates HTML reports. Ungurys (the Eel) and Elnias (the Deer) export the database in the formats the app consumes. Strazdas (the Thrush) and Vieversys (the Lark) generate audio files via eSpeak-NG and OpenAI TTS respectively.

The agents run in a pipeline: initialization, then translations, then word forms and grammar facts, then sentences, then audio, then export. Each supports a read-only check mode, a dry-run preview, and a fix mode that writes changes. They are idempotent and safe to run repeatedly as the database grows.

Generation is done by LLMs — OpenAI, Anthropic, and Google models, as well as local models via Ollama and LM Studio. Results are stored so each word is only processed once; humans review and correct output through the web editor.

The Benchmark Suite

Greenland includes a framework for evaluating the LLMs it relies on. Over 40 benchmarks test different skills:

- *Token and word processing*: syllable counting, spell checking, IPA transcription, plural generation

- *Lexical semantics*: antonyms, synonyms, definitions, part-of-speech tagging, lemma identification

- *Morphology*: verb form generation, lemma validation

- *Translation*: nine language pairs spanning European and Asian languages

- *Mathematics*: arithmetic, algebra, geometry, unit conversion, word problems, time arithmetic

- *General knowledge*: geography, historical dates, book-author matching, food classification, syllogism validity

Some benchmarks directly test agent decisions — for example, whether Lokys's lemma validation judgments match known-correct answers. This closes a quality loop: the models used to build the database are evaluated against ground truth, so systematic errors can be detected before they propagate through thousands of words.

Barsukas: The Web Editor

Barsukas is a local Flask application for human curators to interact with the database. It provides a full editing interface: browsing and searching the lemma inventory, editing translations and definitions, reviewing and correcting example sentences, managing pronunciations.

A sync interface compares the live database against the JSONL files — showing additions, removals, difficulty changes, and translation changes — and lets curators apply or reject each category. Selected agent workflows can be triggered from within Barsukas, so a curator can generate a translation or sentence for a specific word without going to the command line. Operation logs record what changed, when, and by which agent or user, making it possible to trace the provenance of any piece of data.

The Export Layer

Ungurys exports the database into WireWord format — the JSON structure the app consumes — organized by difficulty level and part of speech. Elnias produces a minimal bootstrap format. Audio files, generated by Strazdas and Vieversys, are uploaded to S3.

Why This Approach

The core design choice is to use LLMs for generation and humans for judgment. LLMs handle the volume: translating 2,500 words into 14 languages, generating every conjugation of every verb in six languages, identifying the measure word for every Chinese noun. Humans handle the exceptions, corrections, and quality bar — through the web editor, through reviewing commits, through the benchmark suite catching systematic failures.

The JSONL files in the repository make this sustainable. Every word has a traceable record. The database can be audited, reconstructed, and extended without losing history. New languages, new word categories, or new types of linguistic data can be added incrementally without disrupting what's already there.

2026-02-16 23:18:21

New Rule: when running a command, any pipe to "head" or "tail" should pipe to a version that automatically tee-s the output to a temp file as well, or should otherwise explicitly contain the tee in the command prompt.

2026-02-09 15:14:21

This is a genuinely interesting linguistic modeling problem. After reviewing the current data model, here are my thoughts.

The Core Problem

Each Lemma currently represents one concept anchored to an English label. "hat" and "cap" are two separate lemmas, each with one translation per language. But languages carve up semantic space differently:

English: "hat" (broad brim) vs "cap" (fitted, no brim) — distinct

Lithuanian: "skrybelė" (wide brim) vs "kepurė" (general headwear/cap) — different boundary

Chinese: "帽子" covers nearly all headwear generically

French: "chapeau" (hat, broad) vs "casquette" (baseball cap) — yet another split

The current model has no way to say "these two lemmas occupy overlapping semantic territory, and in language X they might collapse into one word."

Click title to read full message...