Useful
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.1 The majority of videos, I noticed, were narrated slides, having watched a few full courses worth on different topics.2 Every slide without an image to be described by the narration just had a transcript of the spoken audio.3
The text in the video was often something I needed to search or copy down, but there were no video notes.4 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.5
A New Language
I had at one time experimented with creating minimal declarative languages, inspired by countless of examples of document layout systems.6 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.7
Features
The result was exactly what I had imagined, after iterating the workflow and export system.8 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 visuals9
- Stream-based playback
I created some pro-Useful propaganda 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.
- It's a great gift, and I really enjoyed all the different topics I've been able to explore. ↩
- Occasionally, there might be a cut to the speaker, but I found this to be unncessary filler. Also, some were narrated by TTS! ↩
- Motion graphics helped the visual, and occasionally the visual was the information itself (e.g. a photo, a diagram). ↩
- 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. ↩
- 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. ↩
- I had created a variety of languages and parsers during a period where I was interested in hypertext and the markup that produces it. ↩
- And... the rest of the project as well. ↩
- I leveraged another project I created to serve as the TTS system. ↩
- 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. ↩