## A Gift

The Internet was choppy when I stayed out of town. Completing courses had become
my morning routine. A library of books and video courses was granted to me by a
gift to O'Reilly by
[the first team I managed](https://louisfoster.com/first-year-manager.html).[^1]
The majority of videos, I noticed, were narrated slides, having watched a few
full courses worth on different topics.[^9] Every slide without an image to be
described by the narration just had a transcript of the spoken audio.[^2]

The text in the video was often something I needed to search or copy down, but
there were no video notes.[^3] Hyperlinking from content in my browser required
hand typing. I could mimic these videos with a web app, it occurred to me, and
with infinite screen scaling, interactivity, and way lower bandwidth.[^4]

## A New Language

I had at one time experimented with creating minimal declarative languages,
inspired by countless of examples of document layout systems.[^5] I figured I
could give this task to an LLM to design and write, as it's not super-easy to
devise a tidy language and parser, but there's enough examples for one to have
likely trained on the pattern.[^6]

## Features

[The result was exactly
what I had imagined](https://codeberg.org/bytetrie/useful), after iterating the
workflow and export system.[^7] It includes some really nice features:

- Custom voice for TTS
- Plugin system for JavaScript
- Export as PWA
- Auto-layout and basic animations
- Video-like interface
- Interactive visuals[^8]
- Stream-based playback

I created some
[pro-Useful propaganda](https://bytetrie.codeberg.page/useful-course-examples/)
to share on LinkedIn and such. My plan is to flesh out the project, create some
more example videos, and use Useful for tutorials in future projects.

[^1]: It's a great gift, and I really enjoyed all the different topics I've been
    able to explore.

[^2]: Motion graphics helped the visual, and occasionally the visual was the
    information itself (e.g. a photo, a diagram).

[^3]: Not to mention streaming often bumps down your resolution if you have a
    slow connection - basically everything in the video becomes illegible, but
    video streaming platforms often don't offer an audio-only stream.

[^4]: I had been experimenting with TTS and video generation. I'm surprised
    there's not a standard format for producing content this way yet. The
    bandwidth requirements for video are crazy and it's just not a great format
    for a lot of the content it's currently used for.

[^5]: I had created a variety of languages and parsers during a period where I
    was interested in hypertext and the markup that produces it.

[^6]: And... the rest of the project as well.

[^7]: I leveraged another project I created to serve as
    [the TTS system](https://codeberg.org/bytetrie/pocket-tts-deno).

[^8]: You can copy the text right out of the "video" and fix incorrect content
    without having to re-cut and re-render anything: search and replace.

[^9]: Occasionally, there might be a cut to the speaker, but I found this to be
    unncessary filler. Also, some were narrated by TTS!
