Oct 4, 2024
A notebook with tabs that live-update as you edit.

The sort of interaction I live for: someone wished something existed, and it gave me a great deal of pleasure to manifest it.

permalink

* *
Oct 2, 2024
This debug UI has been surprisingly handy over the last few days. I'm able to visualize a parse tree even after it's been flattened, just using color transparency. All I'm doing is painting all the rects that contain the mouse cursor. Since the color is transparent, it doesn't matter what order they're in. (The larger rects actually come later; they're fall-backs if a more fine-grained rect isn't found.)

permalink

* *
Sep 30, 2024
My notebook now synchronizes the results of computation into named blanks in prose.

Repo

permalink

* *
Sep 29, 2024
A little toy I spent too much time on, just because fractals are always such catnip for me.

audio/video; 2 minutes

The LÖVE app with all its source code if anyone wants to play with it.

permalink

* *
Sep 19, 2024
Adding styling to my notebook UI.

It looks like I care about always making the styling very transparent, so it's possible in principle to guess what characters one needs to type to copy the look of something one sees on screen. So the style directives will never be hidden.

permalink

* *
Sep 17, 2024
Very initial draft of a notebook UI.

There are 2 kinds of lines here:

  • Regular lines are prose, but you can also insert named blanks into them using the syntax [value|name], which renders vertically across 2 lines. You can't nest blanks within blanks. These lines can wrap, but a single blank can't wrap across multiple lines on screen.
  • Indented lines (though the indentation is currently subtle) are code. They can render fractions using the syntax (a/b) as I showed before. (Not sure I'll keep this in the long term.) You can nest fractions within fractions. These lines don't support wrapping.

Planned:

  • synchronizing blanks with the same name
  • using code in indented lines to compute derived names without values inline

Inspirations:

permalink

* *
Sep 15, 2024
I've implemented the Mandelbrot set several times before, but zooming manually into the Mandelbrot set on a touch screen is surprisingly delightful.

Get it from the Lua Carousel Devlog.

It takes only 20 lines of code to implement the core of the Mandelbrot set. But then it takes 20 lines to specify the palette. And 100 lines to adjust the viewport in response to touch events. And another 10 lines to render at lower precision while touches are in progress.

This does run into the limits of floating-point precision at some high level of zoom.

permalink

* *
Sep 10, 2024
My Sokoban client now includes the Microban puzzle sets.

"Sokoban puzzles crafted with the express aim of being tiny, tight and foundational for Sokoban idiom.. Effortlessly teaching you an entire language of mechanics through focused and methodical exploration of a ruleset." — a nice 2-minute video review

Download: sokoban.love

How to switch to the Microban levels:

(Or play them in a non-mobile web browser at Sokoban Online.)

(Microban is by David W. Skinner.)

permalink

* *
Sep 8, 2024
While I recently made text2.love easy to embed in other LÖVE projects and documented its API, the true interface of this thing doesn't lie in how you wire it up its bog-standard handlers. No, it's what you do in a workhorse internal method called I.get_rect which gets called on every frame and for every input event.

Here's a very silly example of the sort of app that is now easier to create: 
Screenshot of the following text in an editor window -- except the fractions and nested fractions are shown vertically, with numberator and denominator separated by a horizontal line:

# Simplifying fractions

Suppose we have a fraction:

2/6

The GCD of 2 and 6 is 2.

Dividing both numerator and denominator by 2, we get:

(2/2) / (6/2) = 1/3

Repo
Compare with text2.love

permalink

* *
Sep 7, 2024
Max Bernstein and I have been playing with and putting together a rudimentary 0-dependency cross-platform platform for GUIs. Standing on the shoulders of Fenster and microUI, 2KLoC to support Linux, Windows and Mac without any SDL. (No shade on SDL, though.)

Here's a longer blog post by Max.

Repo

permalink

* *
archive
projects
writings
videos
subscribe
Mastodon
RSS (?)
twtxt (?)
Station (?)