Feb 3, 2024
I'm finally frustrated enough with the state of Mastodon search to start implementing my own local archive. If it's ever on my feed, it should be a grep away.

There are performance issues in putting search on the instance that disappear entirely if everyone just archives everything locally (and the archiver doesn't hammer at the instance too much)

permalink

* *
Jan 30, 2024
Try Pong Wars out on your mobile device.

This cute little program has been doing the rounds. Credit: Koen van Gilst; name from this implementation, though I tend to think of it as Yin-Yang for Pong. Maybe Pin-Pong?

permalink

* *
Jan 22, 2024
I've been trying today to come up with a word that precisely evokes "text but not terminals".

Structured data. Not too much. Mostly text.

permalink

* *
Jan 21, 2024
Now with better artwork from the kids.

permalink

* *
Jan 19, 2024
A 300-line game in 3 screens, with WYSIWYG editors for player and level.

Read more on the Lua Carousel devlog.

permalink

* *
Jan 1, 2024
A mobile app you can modify right on your mobile device.

I think I have a usable app development experience now on my tablet. I basically took my recent Lua Carousel and made a few changes. In Carousel you start in the programming environment, each screen runs a separate script, scripts run in the background of the editor, and each screen manages its own canvas. The new setup starts in the app, which takes over the entire device until I 'exit' into the programming environment. In the programming environment, screens are now just editors with a shared 'run' button and canvas. Hopefully I can now finish polishing this turd app entirely on the tablet.

As with anything mobile, there are caveats:

  • Not very usable on a tiny phone screen. Tablet works better.
  • I'm always scared of losing my code changes. If I upgrade LÖVE, poof. No other app can access them, so I currently back them up laboriously using copy-paste.

permalink

* *
Dec 30, 2023
The last few hours were a bit of a rollercoaster. I went back and tried running the script in one of my recent Lua Carousel updates, and it wouldn't work. It's only a week old, but in the mean time both LÖVE and Carousel have seen version upgrades. And so I was running around frantically trying out various combinations of Android device, LÖVE and Carousel.

But in the end the problem was just that upgrading LÖVE reset microphone permissions :facepalm:

I'm so used to upgrades causing regressions that that's still the first explanation I reach for. I should have more confidence in Lua and LÖVE. And my own hard-won tendency to be conservative in introducing new features. These new versions really didn't have much new at all.

permalink

* *
Dec 26, 2023
An equation plotter you can pan and zoom around with on a touchscreen.


Adaptive ticks on the axes are extremely satisfying.

Unfortunately the size of the program goes from 90 to 150 lines. (200 lines is about the limit Carousel can comfortably handle on a phone, so I've been trying to adopt that creative constraint, even though these videos are taken on a tablet.)

Read more on the Lua Carousel devlog.

permalink

* *
Dec 23, 2023
Pan and zoom gestures on a multitouch screen

Read more on the Lua Carousel devlog.

permalink

* *
Dec 22, 2023
Some improvements to my live programming setup

It's been a while since I showed it here, so to recap, this is how my programming environment has looked for most of 2023. It's an infinite surface where you can move each top-level definition independently of the others.

Using it revealed one problem: sometimes definitions would overlap. If the move bar is occluded, I need to move other nodes to find it.

I mulled it over while resisting the urge to build a window manager.

On Dec 10, after some experiments using Lua Carousel I gave my definitions some minimal physics to nudge other definitions away. Lines of code required: 70.

Using this revealed a new problem: it was hard to move one definition around another. More broadly, my UI -- where things mostly stay fixed unless you move them -- now seemed a lot less calm.

Yesterday I made 2 tweaks, and now things seem pretty decent again. This took 30LoC:

  1. Resolve collisions only at the end of a drag. Now moving seems to lift the definition above the surface and set it down at its destination.

    During the drag I show a shadow where any other definitions would get nudged out.

  2. Dropping near the original place resolves no collisions. This lets me change my mind after starting a move. A shadow at the original location helps me give up.

Try it out yourself.


Ooh, the process of writing this up gave me an idea to improve things further. Now I only show the shadow if I would actually move anything aside.

Lines of code: 3

Best #DecemberAdventure yet.

permalink

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