Email or username:

Password:

Forgot your password?
Kartik Agaram

Implementing the Potluck system in LÖVE

inkandswitch.com/potluck

Research is awesome, but sometimes when you read a paper you just want to add it to your toolbox right now. In a way that fits in with your other tools.

Properties of my tools:

- minimal dependencies (no browser!)
- cross-platform; runs on Windows
- easy for anyone to modify (inkandswitch.com/end-user-prog)
- live; modify without restarting (youtube.com/watch?v=8Ab3ArE8W3)

Done so far: Potluck annotations

@emenel @khinsen LoveFrames alert

12 comments
Kartik Agaram

A minimalist DOM in 50 LoC

Is there a better name for this than "DOM"? A notation for a tree of rectangles, often containing text, to be rendered to screen and united with mouse events.

Rects contain either text or rows/cols of other rects. Other attributes: fg, bg, margin. Margin is margin-top or margin-left depending on whether the rect contains rows or cols.

No inline styling yet (bold, span, etc.), that feels like a separate concern.

@emenel @khinsen @akavel

Kartik Agaram

A Lua-based Markup Language

Demo of a structured text editor where you can edit multiple buffers arranged in nested rows/columns.

codeberg.org/akkartik/luaML.lo

Doesn't save what you type in yet. This is just a demo for playing with.

I have no idea what attributes to include besides fg/bg/margin. So get in touch if this sparks ideas/suggestions.

This toot is dedicated to @nff.

Kartik Agaram

Black triangles for the umpteenth time.

I reimplemented my little box model atop a foundation of an infinite 2D surface that can be panned and zoomed.

@nff

Kartik Agaram

luaML on an infinite surface

You can draw various graphics and edit text in arbitrary grid layouts, all on a pannable, zoomable infinite surface.

codeberg.org/akkartik/luaML.lo

@nff The Readme still warns that commit hashes may change, but I'm hoping this one's for good. I finally understand how to cleanly update the viewport based on edits within a pane; that was the major mountain to climb here.

Kartik Agaram

I've been live-coding my Lua-based markup language luaML using a driver program. Now I've pulled luaML into the driver program so that I can open multiple buffers, move them around, zoom in, zoom out, etc.

(And yes, you can live-program the driver. Not quite using itself, but by copying it into a "meta driver" and making a handful of edits.)

Compare v1 of the driver: merveilles.town/@akkartik/1091; v2: merveilles.town/@akkartik/1094

Kartik Agaram

A map for code

In this video, I start up in quick succession:

* a simple test app
* the 'driver' programming environment showing the map for the app's code
* the 'meta-driver' programming environment showing the map for the driver's code

On initial load the driver (glitchily) zooms out over the whole codebase before zooming back in to the previous session.

codeberg.org/akkartik/driver.l

(Inspiration: early side-scrolling videogames that would often start a new level by panning across all of it.)

A map for code

In this video, I start up in quick succession:

* a simple test app
* the 'driver' programming environment showing the map for the app's code
* the 'meta-driver' programming environment showing the map for the driver's code

On initial load the driver (glitchily) zooms out over the whole codebase before zooming back in to the previous session.

Kartik Agaram

Inspired by @ltratt's tratt.net/laurie/blog/2023/com, I spent some time kicking the wheels on my code map based programming environment by building a BF interpreter.

Next up: reproducing in Lua Laurence's results regarding the compiler-interpreter spectrum.

Kartik Agaram

Here's the "load screen" for my environment, showing a visual overview of the code I've written.

Kartik Agaram

Dealing with failing tests when all you have is a map for code

Mechanisms:
* Highlight tests in green.
* Run all tests on any change.
* Highlight failing test cases in red.
* Turn edges of vision red when there's any failures, just in case failing tests are out of view.
* Hotkey to zoom out over all of current view.
* Same hotkey to restore viewport settings.
* Click anywhere to zoom in.

git.sr.ht/~akkartik/driver.lov

(What is a "freewheeling" app? akkartik.name/post/roundup22)

Dealing with failing tests when all you have is a map for code

Mechanisms:
* Highlight tests in green.
* Run all tests on any change.
* Highlight failing test cases in red.
* Turn edges of vision red when there's any failures, just in case failing tests are out of view.
* Hotkey to zoom out over all of current view.
* Same hotkey to restore viewport settings.
* Click anywhere to zoom in.

Kartik Agaram replied to Kartik

Some distilled reference documentation on my Freewheeling Apps (a way of building low-maintenance Situated Software for small groups)

In a bare-bones template repo (~500 LoC): codeberg.org/akkartik/template

In a more elaborate template with testable primitives and an editor widget: codeberg.org/akkartik/template

Open it on a browser tab when you clone and start editing using git.sr.ht/~akkartik/driver.lov. There are a few examples in the Readme to spark ideas. Works on any Windows and Unix.

Some distilled reference documentation on my Freewheeling Apps (a way of building low-maintenance Situated Software for small groups)

In a bare-bones template repo (~500 LoC): codeberg.org/akkartik/template

In a more elaborate template with testable primitives and an editor widget: codeberg.org/akkartik/template

Kartik Agaram replied to Kartik

A little app for drawing graphs

git.sr.ht/~akkartik/snap.love

I've wanted something like this for a long time. Intended for small graphs where laying things out by hand is not too painful, and it's nice that things don't move around every time I make a change, as happens with graphviz (graphviz.org). The file format is also amenable to git; no long lines, and adding new nodes or edges doesn't reorder unrelated nodes and edges.

Go Up