Bonus Drop #30 (2023-10-22): Travel Hodge Podge

BYOS; Terminal Decks; Turing Streams

I’ll never miss an opportunity to see .1, and he and his parents got just close enough to the Maine compound to warrant a trek into NY state to help him celebrate his bday (early) and his soon-to-be brother’s baby shower. As such, your travel weary hrbrmstr has no theme for this week’s Bonus Drop, but he does have three keen resources. I hope you find at least one of them engaging enough to dig into (mine was the first one).

Resources covered:


Build Your Own Svelte

text

Build Your Own Svelte is a video series (hosted by Li Hau) and GitHub repository that teaches us how to build our own simplified version of the Svelte compiler, piece by piece. Each video covers specific topics and edge cases. Combined, they incrementally make the mini Svelte compiler increasingly capable.

This is a solid resource for anyone interested in learning more about how the Svelte compiler works and how to build their own simplified version of it. The videos are well-organized and easy to follow, and Li Hau does an excellent job of explaining each step of the process.

By hacking on this project, you can gain a more in-depth understanding of how Svelte works and how it compiles your code into optimized JavaScript. It also allows you to customize a Svelte stack to your specific needs (i.e., you can add or remove features as you see fit).

It can be a great learning experience, especially if you are interested in compilers and programming languages. Tis also a solid “kata” for enhancing skills in programming, debugging, and problem-solving. You might even get a hankering to contribute directly to Svelte, especially as it migrates from TypeScript to JSDoc (many folks find it easier to hack on vanilla JS).

presenterm

Presenterm is a terminal-based slideshow tool that let us define slideshows that run in their terminal. It is heavily inspired by slides and lookatme , both of which also use a single markdown file to define slides in a single file.

It supports image rendering for terminals that support kitty/sixel graphics (this may require a special build if you’re doing the build by hand), and text formatting support for bold, italics, strike-through, and inline code. Of course, it has code highlighting baked in, and even has support for column layouts. You can also create pauses between each slide so that the deck progressively renders for a more interactive presentation. It also supports automatic reloading of presentations every time it changes, for a fast development loop.

Installation is simple via GH release binaries, or:

$ cargo install presenterm
# OR
$ nix run github:mfontanini/presenterm

The section header is a screen cap from my local test run of the demo deck. Said demo deck does a fine job of demonstrating the features, so I’ll leave you in its capable hands.

In a world of endless PPTX/Keynote monstrosities, and a plethora of also-ran Reveal.JS decks, a terminal-deck may help you stand out in a crowd, and definitely requires fewer resources to help get your message across.

[chess-]sed

white ceramic figurine on black table

Chess-sed (1, 2) is a chess game written in GNU sed, a stream editor used to perform basic text transformations. There are two links, as it’s difficult to know which one is “authoritative”. Neither is feature complete, and there is no “GUI” or even a way to show the chessboard.

I link to it/them, since I’m not sure how many folks know that sed — which most of us likely just use to replace characters using regular expressions — is Turing complete. The most basic definition of said term is that a Turing complete program can answer a computable problem given enough time and space.

It’s kind of bonkers to think that a “stream editor” could be Turing complete, but sed is just a tiny assembly language that has a comparison operation, a branching operation, and a temporary buffer. These operations, combined, make sed Turing complete.

Remember that the next time you wield this tool for mere character substitution.

FIN

Once more, thank ye for your support! ☮

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.