Skip to main content

Small daily exercises to make you fluent at writing and reading code. Python first; C, C++, Rust, and Go on the roadmap.

Project description

bytelings

Small daily exercises that make you fluent at writing and reading code.

Python Inspired by Rustlings License: MIT

Inspired by Rustlings. Built to make you reach for dict instead of looking it up; write a try without thinking about it; recognize a sliding-window problem from one glance. Python today — C, C++, Rust, and Go on the roadmap.

Install

pip install bytelings
# or
uv pip install bytelings

Quickstart

mkdir my-bytelings && cd my-bytelings
bytelings init        # copies the curriculum into ./curriculum/
bytelings welcome     # one-minute intro (optional)
bytelings             # start the watcher — save files, see green panels

That's it. Open curriculum/phase-1-python-core/module-01-setup-and-values/day-001-*/ in your editor and start fixing the broken bits.

How it works

Each day teaches one concept in 5 rungs:

  1. Readconcept.md, written in one of 8 rotating storytelling styles (story / pain-point / compare / trace / build-it / metaphor / code-tour / detective). Same shape every day = autopilot. Different shape every day = forced re-engagement.
  2. Fluency drill — fix a broken file. Tests turn green when you do.
  3. Guided implement — fill a function body, signature pre-built.
  4. Solo implement — no scaffold, hidden tests, you write it cold.
  5. Apply — a tiny project chunk that reuses what you just wrote.

The watcher (bytelings) runs pytest on every save and advances you through the rungs automatically. On rung 5 of day N, you're auto-ported to rung 1 of day N+1.

After every 5 modules, a 3-day phase project combines all the phase's concepts in a real build (a contacts manager, an async website snapshotter, a parallel log analyzer, a tiny in-memory database, a maze pathfinder). The whole curriculum ends in an 8-day capstone where you ship a real CLI tool.

Commands

Command What
bytelings init Copy the bundled curriculum into ./curriculum/
bytelings Start the watcher (the main loop). Ctrl-C to exit.
bytelings today Print what you're working on now
bytelings progress Streak + completion bar
bytelings hint [DAY] Show today's (or named day's) concept page
bytelings run [DAY] Run current rung's tests once (no watch)
bytelings list List every day with completion markers
bytelings done Manually mark current rung done
bytelings next Skip to next rung (escape hatch)
bytelings reset DAY Reset a specific day's progress
bytelings welcome Print the orientation message

What's in the Python track

135 days, 6 phases, 27 modules:

  1. Python Core Fluency (31d) — values, strings, lists, dicts, functions, decorators, type hints
  2. Pythonic Tools & I/O (27d) — comprehensions, async, dataclasses, classes, context managers, files
  3. Quality & Production-Grade (21d) — errors, pytest, logging, profiling, concurrency choice
  4. Data Structures from Scratch (19d) — stacks, linked lists, trees, heaps, hash tables
  5. Algorithms (25d) — recursion, sorting, graphs, DP, greedy, backtracking
  6. Packaging, AST, Capstone (12d) — uv packaging, AST, ship a real CLI

Phases 1–5 each end in a 3-day phase project. Phase 6 is the 8-day capstone.

Roadmap

  • Python — shipped (135 days)
  • C — planned (memory, pointers, undefined behavior intuition)
  • C++ — planned (RAII, templates, modern C++)
  • Rust — planned (ownership, lifetimes, error handling — yes, on top of Rustlings, with a different ladder)
  • Go — planned (interfaces, goroutines, the philosophy)

The runner is language-agnostic. Each track ships its own curriculum and test driver under the same bytelings UX.

Why this exists

Most curricula teach concepts in blocked order: all syntax, then all data structures, then all algorithms. Research consistently shows interleaved practice (mix topics each day) produces dramatically better long-term retention.

And most courses skip the bottom rungs of any concept ladder — they parachute you onto "implement merge sort from scratch" without first giving you the worked example, the broken-file drill, or the scaffolded version. That's why so many self-taught engineers feel comfortable reading code but freeze when asked to write something non-trivial.

bytelings is the curriculum I wished existed when I was decent at Python but still reaching for syntax references daily.

Acknowledgements

This project is deeply inspired by Rustlings (carol-nichols & contributors). The "save → watch → green panel" loop, the init / hint / reset / run command shape, and the "small exercises in a single concept" philosophy all come straight from there. If you do Rust, do Rustlings first; bytelings borrows their playbook for other languages.

Other inspirations: Codewars and 100 Days of Python.

License

MIT. Curriculum content is also MIT — fork it, remix it, build your own bytelings track for any language you want.

Contributing

Bug reports, content fixes, and new-language curriculum tracks all welcome. The runner is small (~1000 LOC); adding a new language means shipping a new _curriculum/<lang>/ tree and a <lang>_test.py discriminator. See CONTRIBUTING.md (TBA).


Bytes don't lie. The fluency comes from the reps.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bytelings-0.1.0.tar.gz (513.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bytelings-0.1.0-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file bytelings-0.1.0.tar.gz.

File metadata

  • Download URL: bytelings-0.1.0.tar.gz
  • Upload date:
  • Size: 513.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for bytelings-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ef6d89e76b9ea64a00a70c8e0f0cdaa628cf1b2d0346960ec4fa3d8d104de187
MD5 5e0588176167fc1948a942846a32ba25
BLAKE2b-256 ea6fea29ba530d4a4d2924f61be799b824f2db2de6abc854911dfee486eaead0

See more details on using hashes here.

File details

Details for the file bytelings-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bytelings-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for bytelings-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25bb4a32930adab27f2d8073f86322326c91cf250769ead8033b8df5b12f7821
MD5 d3b8d530442855c37bb1d59a9b12ac90
BLAKE2b-256 d234e483854cf29f10a011a8e7428da2df756c28d94d7407419ec9173bdc90a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page