You are viewing archived messages.
Go here to search the history.

Kartik Agaram 2023-08-22 17:23:52

You can now make any app end-user-programmable -- as long as it's built in LÖVE




Eli Mellen 2023-08-24 10:46:28

Kartik Agaram have you poked around the way fennel-folks tackle this?

I like your way better because it is all lua+love, no emacs 😆

📝 Interactive programming with Fennel Lua Lisp, Emacs and Lisp Game Jam winner EXO_encounter 667

Phil Hagelberg recently won the Lisp Game Jam 2018 with his entry EXO_encounter 667. What I found most interesting however, was his interactive programming setup. He programmed his game in (and contributed new features to) a Lisp to Lua compiler called Fennel, and used the game programming library Löve. With Emacs and some Lua thread magic, he was able to perform runtime changes and introspection to his live running game project.

Kartik Agaram 2023-08-24 14:20:41

I've played with Fennel very slightly, though I haven't tried to set up any emacs integration.

I have no doubt Emacs is far more powerful in these capabilities. Hopefully my stuff can act as a gateway drug for a few people.

Eli Mellen 2023-08-24 14:27:12

yeah -- my goal here wasn't to push you to emacs (I would never recommend anyone pick it a life long emacs addict), but to flag that folks are doing this sort of interactive dev with love using fennel.

I think the main guy behind fennel even has a package specifically for doing it. Sort of like an embeddable editor.

Kartik Agaram 2023-08-24 14:34:32

Thanks! I don't think I'd ever actually tried this, even though I follow technomancy on Mastodon. People are too retiring about plugging their stuff, compared to me 😆 I'm going to try it out.

Kartik Agaram 2023-08-24 16:25:51

Oh, Polywell doesn't even require Emacs.

Kartik Agaram 2023-08-24 16:42:47

The original blog post says an error crashes the whole app. And I spot checked a few places in Polywell from my phone and didn't see any error handling. So maybe that's one difference. Both my and this new approach are robust to errors. (The motivation for this new approach: someone was trying to use on iPad, where the OS only permits one LÖVE app to run at a time.)

There's also a minor difference in the communication mechanism. Polywell uses a separate thread, but it seems to be just to get non-blocking I/O. uses a temporary file for the same purpose. Feels like fewer moving parts, but this is subjective.

There's no reason you couldn't read/write the temporary file from Emacs and get all its sweet sweet power. Conversely, there's no reason you couldn't switch Polywell to's error handling and/or simpler communication mechanism.

Ivan Reese 2023-08-23 02:54:38

Future of Coding • Episode 66

Bonnie Nardi • A Small Matter of Programming


This community is a big tent. We welcome folks from all backgrounds, and all levels of experience with computers. Heck, on our last episode, we celebrated an article written by someone who is, rounding down, a lawyer! A constant question I ponder is: what's the best way to introduce someone to the world of FoC? If someone is a workaday programmer, or a non-programmer, what can we share with them to help them understand our area of interest?

A personal favourite is the New Media Reader, but it's long and dense. An obvious crowd-pleaser is Inventing on Principle.

Bonnie Nardi's A Small Matter of Programming deserves a place on the list, especially if the reader is already an avid programmer who doesn't yet understand the point of end-user programming . They might ask, "Why should typical computer users bother learning to program?" Well, that's the wrong question! Instead, we should start broader. Why do we use computers? What do we use them to do? What happens when they don't do what we want? Who controls what they do? Will this ever change? What change do we want? Nardi challenges us to explore these questions, and gives the reader a gentle but definitive push in a positive direction.

Also of note — we've launched a Patreon! If you enjoy the show, please consider supporting it with a small (or not-so-small) monthly contribution. You'll get bonus episodes and a warm feeling in your heart (disclaimer: warm feeling is a metaphor; if you actually feel an increase of body heat please do not discontinue support but do talk to a doctor)

Ivan Reese 2023-08-23 20:07:53

In the game of FoC Patreon Tiers, Visual Programming is in the lead. Type System purists, where you at!?

Personal Dynamic Media 2023-08-24 17:10:50

Thanks for another fun episode! Here are my notes.

Alan Kay's vision is focused on communicating by giving other people an executable simulation of your idea, not just figuring things out for yourself. His work on "active essays" is all about embedding simulations within a document for the purpose of improving communication.

With respect to programs that write programs, Andrew Hume supposedly said "Programs that write programs are the happiest programs in the world."

Regarding "The computer is the fake bit and the program is the real part," though I cannot find a primary source, Dijkstra is sometimes quoted as saying "Computer Science is no more about computers than astronomy is about telescopes."

Also, from SICP (, "First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute."

If Dijkstra the Formal AND the freewheeling MIT crowd BOTH agree with you, Jimmy, then you might be onto something.

On the subject of modifying existing programs, one outstanding success story is Emacs. Emacs is really easy to customize in little and big ways because it was designed to be customized, with extensive support for custom key mapping, configuration, and the ability to install hooks before and after almost every important action. The result Is that it takes very little code to insert a little tweak in behavior wherever you want to. This wasn't an inevitable consequence of the language or the development environment, although they were a tremendous help. It came from a steadfast commitment to customizability at every stage of the design and implementation.

It also offers a gentle on-ramp to programming because the user can start with small customizations and gradually ramp up to more intricate ones. There is no point in the journey where you need to stop playing and go learn how to program all at once.

I especially love section "8.3 Blue Sky" in the original Emacs paper.

I think Peter Naur's paper Diminishing Returns of User Programming (1978) is relevant to this whole conversation. As languages become higher and higher level, they tend to either become specialized and limited, or to have an explosion in vocabulary. Some people think that domain-specific languages are a way to escape this trap, but somehow this dichotomy must be addressed if we want to create a form of programming that is easy, high level, and general purpose.

Kartik Agaram 2023-08-26 15:05:27

It's now easier to build and run little LÖVE apps for yourself on Android

  1. Install LÖVE from the app store (see

  2. Download from I've been contributing to this app and vouch for it.

cc Konrad Hinsen who's been waiting for this 🙂

(MiniIDE has also been tested on iOS without limitations. But I gather LÖVE is quite tortuous to install on iOS, so you're on your own there..)