✉️ Not subscribed yet? Subscribe to the Newsletter
Future of Coding Weekly 2023/06 Week 3
💡 Inventing Mario on Principle 📙 Live Coding User's Manual 🤖 Generative all the Things
Two Minute Week
🎥 Nette Generate: Start With A Word via Pawel Ceranka
Generating initial content for an any workspace.
We are, by design, about non-linear explorations, in that setting it’s not always easy to start.
A bit like sitting in front of a blank page. This feature is like priming / toning the canvas 😉
I personally think visually a lot of the time (spatially / moving pictures), but the trigger for starting a thread of thought is quite often a word, term, phrase or a sentence .
This feature is about that kind of exploration, you drop a word and it ripples out into all kinds of useful directions.
(of course, being useful is the trick here, this is very minimal atm)
The way the app is set-up it’s not difficult for us to generate those workspaces (the blocks are Clojure maps in a re-frame db), so if it turns out that it’s useful we’ll probably generate more content.
Not my main work, but a fun little programming project that's relevant in a number of ways, despite apparently being more about the Past of Coding, than the Future.
I wrote a small (<500 lines of code) BASIC to JS compiler, that lets me run the programs from the class book 101 BASIC Computer Games from 1978. It's interesting for two reasons I think: 1. for those who want to learn about languages and compilers, this provides a very simple example 2. philosophically, I think BASIC really exemplifies the Worse is Better approach outlined by Richard Gabriel and covered in a FOC podcast. It is a terrible language in many ways, but it was small enough to be stored in a 4k ROM and be used to to useful things on an early microcomputer with only 4k of RAM. If we had waited for machines with enough memory to run Lisp, Smalltalk or Algol, the microcomputer revolution would have been delayed by a decade or more. Source: github.com/kgrgreer/foam3/tree/429f2fd2b4cef0e37996a4c4ad35cdf5f83a8b97/src/foam/demos/basic
A BASIC to JS compiler that lets you compile classic programs written in the BASIC programming language to JS and then run them in your browser. To us...
🐦 Matt Webb 🌸🌼🌸 on Twitter via Matt Webb
I’ve been sketching multiplayer UIs. Folks who came to the most recent London meet will recognise these from my demo. I’m trying not to converge on anything right now — how we interact with AI NPCs is still so open.
I made a new one today, with spatial multiplayer chatrooms and an NPC inhabiting each. It’s on Twitter
An archive of all of my sketches, including a bonus gesture-controlled lamp actsnotfacts.com/made/multiplayer
🐦 Matt Webb 🌸🌼🌸 on Twitter: what if you had one chatroom with an AI for wild ideas... and another next door for a dose of reality?
and you travel between AI NPC chatrooms like a spatial map?
yeah and it's all multiplayer so your friends can be there too?
oh yes ALSO one of the rooms is haunted 👻
A series of software sketches exploring multiplayer UI.
👮 lintrule.com: Let the LLM review your code. via Evan Conrad
with encouragement from @Joe Grossberg, down to share what I’m doing…
I make lintrule.com, a little CLI for having a language model do your code review.
You write rules in plain text, and then it checks them against your code, like a test framework. Here’s an example rule that runs on SQL migrations:
include: ["migrations/*.sql"] Make sure our postgres migrations follow these rules: 1. ensure new tables are at least 3NF (third normal form). If they're not, fail and give an example of what's wrong, assuming the reader does not know terms like "BNCF", "3NF", "BCNF", and so on. 2. make sure that all tables have a created_at and updated_at 3. make sure migrations don't have breaking changes. For example, removing a table, removing column, and so on. 3.1 It's okay to have a breaking change if there's a comment on the migration that explains why it's safe to have that change. 4. prefer 'uuid' over 'serial' or 'int' for primary keys. Ignore this check if it's primary key made up of two columns.
Worked on a prototype for visualizing a map operation on arrays using the visual programming system that I am working on, hopefully it's clear from the video what is going on, at least that is the intention 😅
I’m been thinking about this concept of a “full-stack” database. I’m curious what connotations that invokes for folks here and what features you might imagine a futuristic, “full-stack” database would have? Bonus question: is it “fullstack”, “full-stack” or “full stack”?
Are people here aware of Super Mario Maker 2 ? I somehow totally missed the memo that one part of Bret Victor's Inventing on Principle has been productionized.
📝 Emily Dickinson’s Apple Computer House via Ibro C.
A look at Folk Computer (ofshoot from Dynamicland by Omar Rizwan and Andrés Cuervo) through Emily Dickinson’s poetry
The 19th-century poet, whose verse still resonates with its open-ended sense of how language produces meaning, is a model for a group of Brooklyn coders inventing a more humane computer.
Coworker just shared this book and I was surprised not to see it in the search history here (maybe I missed it). I thought this group would be interested: livecodingbook.toplap.org/book/#
To give some scope:
In asking “What is live coding?,” our intention is not to fix or define but rather to explore how live coding opens up . Live coding is about people interacting with the world, and each other, in real time, via code. Live coding is about making software live .
The first part is more practice focused, offering an account of the origins, development, and aspirations associated with the evolution of live coding alongside presenting documentation and examples of live coding practice. The second part is more speculative and conceptual in its register, allowing space for discussion of the many ways live coding reflects and informs wider cultural and political concerns.
Live Coding: A User's Manual, published by MIT Press
💬 Greg Bylenok
This might fall under "thinking-together", but I'm throwing this here as it specifically relates to AI. For context, I've been working to integrate an LLM into an existing application. If "prompt engineering" is part of the future of coding, here are some challenges to expect:
- Non determinism: I can repeat a prompt and get back drastically different results, in both content and format.
- Capabilities: I feel like I'm constantly probing to discover the capabilities and limits of the model. Every interaction is similar to being presented with a blank canvas: What should I ask? What can I ask? Is there something that I could ask that I am forgetting about? Can I reword my prompt slightly and (potentially) get better results? This leads to a lot of experimentation.
- Expectations: We are tricked into believing the LLM comprehends what we are saying, when it's really just a giant prediction table. Then we are disappointed when it gives less-than-satisfactory replies.
Compare this to programming against a traditional API:
- On in the input side, an API constrains the vocabulary. With an LLM, everything is fair game.
- On the output side, I can guess (or learn) the effect of a given API call. With an LLM, it's all probabilistic.
Curious about others experiences here, ways to reason about these models, techniques for overcoming, etc...
💬 Jarno Montonen
What are good web based node-based programming environments for implementing simple arithmetic and boolean logic?