✉️ Not subscribed yet? Subscribe to the Newsletter

Future of Coding Weekly 2024/02 Week 3

2024-02-18 22:32

📢 You should write an Onward! paper 💡 Maybe Everything Is a Coroutine ߷ Unison Cloud Demo

Two Minute Week

💬 Robin Allison

🧵 conversation

A screen recording from a program I did a while ago. Its an idea.

Our Work

🎥 Embed an Extensible AI Copilot in Any Web Application via Mariano Guerra

🧵 conversation

Youtube Thumbnail

Making Gloodata embeddable using Web Components and Shadow DOM

The demo embeds Gloodata in the Future of Coding history search web app and shows how it can do external requests to the app and get information back from it.

Shadow DOM allows to isolate all scripts and styles from both sides and allow embedding in any web app using vanilla js/DOM and Web Components.

Devlog Together

💬 Tom Lieber

🧵 conversation

I started all this by saying PPLs were surprisingly visual and physical, so I'm concentrating on the interaction loop that I had in mind when I said those things: every time you edit a program, you see how it affects the distributions of data flowing through.

So in the attached GIF, there's a dataflow graph for a simple model where every few seconds I add an additional wire.

PPLs don't solve for a result—they converge . So I expected the visualizations to have a very springy response to changes. And that's what I get! In fact, the juiciness of the program output contrasts so much with the stilted UI that I might have to resubscribe to some game design blogs sooner than later. 😬

But this is good. I have ideas for where to take the language that are milquetoast but implementable by me in my spare time, at a pace that I think should allow me to explore complex models within my lifetime.

2024-02-11 binomialish buildup.gif

📝 Lab notebook for “Tom’s PPL” via Tom Lieber

🧵 conversation

I've actually been keeping a lab notebook for this project. Tonight I decided to put it online, since it explains some of my design choices at a length that wouldn't be appropriate in Slack.

🎠 New version after 51 days via Kartik Agaram

🧵 conversation

I just published a new version of my thing, with focus not on the new version number but on the number of days the previous version lasted. Because I find these numbers in our statements subconsciously go from facts to bragging to metrics..

I just published a new version with a few changes. Firstly, an incompatibility: creating an editor now requires a font, where it used to implicitly use the current font. I'm fixing one previous Devlog...

💬 Ivan Reese

🧵 conversation

I haven't been doing much coding lately (past ~4 months), so I'm doing a tiny side project to test out some new ways of working.

  • I'm converting an old CLJS project to TypeScript. I really wanted to authentically live in CLJS, but after months and months of trying, I never got over pain caused by the tooling. (This was back in ~2016, and I hear things have come a long way since. I'd give it another shot, but I no longer have much free time to learn languages/ecosystems.) I tried to get GPT to actually just convert the whole CLJS codebase. It was a mixed success. This is why I chose TypeScript, rather than (my preference) some dynamically-typed language. As it passes through an intentional state of chaotic mush , I want as much structure as possible to be imposed upon my work. Once the conversion is done and I'm ready to resume work on the actual capabilities of the system, I'll probably gradually convert it to JS so that I can get away from needing a build step at all.
  • Inspired by @Maggie Appleton, I'm using native apps for Whisper and GPT. When I want to know how to do something, I just ramble out loud. Eg: "Does JavaScript have any syntax yet for iterating over the keys and values of an object without using object.entries?" I've found that for certain kinds of question, it feels really fluid. It might not be any faster than switching to my browser, typing mdn.io followed by my query, and then scanning the page. But it often is, and even when it isn't it just feels really nice to get some help from the computer without having to touch the keyboard. (I have a weird relationship with my sense of touch — for instance, I really dislike touching anything made of metal and think we need to put all the metal back in the ground where it belongs, we've awoken a demon of unhindered conduction and are reaping the consequences, we're all damn fools — so it's nice to be able to converse directly with my computer without having to touch anything)

📝 What's immediately next? via Tom Lieber

🧵 conversation

I've resigned myself to the fact that models in my language are going to get worse before they get better. There are things I love about this representation already, but I can already see it getting mired in "syntax".

I'll get to it. I want to work on model editing so badly that I'm just throwing in first drafts of the language features that I need in order to implement more interesting models as quickly as possible. I'm only a few away.

I added new entries in the lab notebook about why and how, and created this lovely GIF for you. This is a "trait attribution" model that infers whether an exam is fair based on an assumption about the base rate of exams being fair, and how many people pass. (Only one person took this particular test—and they failed. 😰) Cute and small.

2024-02-17 fair exam - one failure.gif

Reading Together

📝 Programming-in-the-large versus programming-in-the-small by DeRemer and Kron (1975) via Christopher Shank

🧵 conversation

📝 A Small Matter of Programming Perspectives on End User Computing By Bonnie A. Nardi via Stephen De Gabrielle

🧵 conversation

~Chapter 1 Introduction~ (11 pages)

A Small Matter of Programming Perspectives on End User Computing By Bonnie A. Nardi

Thinking Together

💬 Guyren Howe

🧵 conversation

Trying to see what I can do with the relational model, only supporting multi-model. Tagging each row of tables with a “model” identifier, much as temporal databases attach an interval or whatever to a row.

This would be give us a First Order Modal logic. I could have some fund pondering what various modal logics can do here (I’ve studied Modal Logic, but not recently). It occurred to me to ask about existing work in the area. At least what the concept is called, so I can go look for prior art.

Think of having a Datalog database and being able to set a “current model” or being able to do separate parts of queries in different models.

I’m also interested in the idea of merging multiple models to build new ones.

What should I look for?

Thanks.

📼 WAFlash is a WebAssembly AS2/AS3 Flash compatible player developed with HTML5, WebGL, WebAssembly and Emscripten. via Justin Janes

🧵 conversation

I’m not sure which channel this belongs in or the usernames of the podcast but i’ve been working through the podcasts backlog. I wanted to share that Flash isn’t entirely dead and it’s based on a usable and sandboxed Wasm.

app.myinnergenius.com/ibm/techtypes via Justin Janes

🧵 conversation

I’m not planning on working for IBM/Rhel when i share this but - i did learn in 2015-2016 that for a long time IBM was the third largest employer of psychologists and therefore they have good assessments and profiling quizes lol.

IMG_3665

Content

🐦 Duncan Cragg on X via Duncan Cragg

🧵 conversation

🐦 Duncan Cragg (@Duncan__Cragg) on X: @jonathoda I'm a "crazy, misfit, rebel, trouble-making" person, who "sees things differently"

I don't just "provide entertainment for jaded developers" in my blog; I want to "add to human knowledge"

But:

https://t.co/oTZHbNBVYB

I see folk stifled by conformist academia

What did I miss?

Tweet Thumbnail

💡 Maybe Everything Is a Coroutine - Adam Nelson via Kartik Agaram

🧵 conversation

Coroutines as a foundation for state machines, effect types and resumable exceptions.

I was inspired, after reading the excellent blog post Let Futures Be Futures, by the author's thought experiment of a language in which all functions are coroutines and this is used to express asynchr…

🎥 Tomorrow Corporation Tech Demo via Ivan Reese

🧵 conversation

Youtube Thumbnail

Reposting a classic in case any of the new folks here haven't seen it.

📝 Capital and enclosure in software commons: Linux & Ethereum via Andreas S

🧵 conversation

Stumbled upon this interesting perspective on Commons

Entities which extract profits from software commons like Linux and Ethereum have the greatest incentive and capacity to co-opt them.

🎥 Creating and Deploying Slackbots with Unison Cloud via Mariano Guerra

🧵 conversation

Youtube Thumbnail

This video guides you through creating a Slackbot in Unison and deploying it to Unison Cloud, starting with a simple example and finishing with a ChatGPT bot.

Present Company

📢 To the crazy ones via Jonathan Edwards

🧵 conversation

To: the crazy ones, the misfits, the rebels, the troublemakers, the ones who see things differently

Subject: you should write an Onward! paper


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/02 Week 2

2024-02-12 00:17

💡 Notation & representation 🪢 Combine nodes into compositions 🦠 Will Wright's Dynamics for Designers

Our Work

💡 Zest: notation and representation via Jamie Brandon

🧵 conversation

Struggling with nominal types sneaking in everywhere

👄 Teaching computers to speak: the prosody problem via Kilian Butler

🧵 conversation

I wrote this article which covers speech synthesis ML, with a focus on the most challenging + interesting problem in speech: prosody generation.

Understanding this is key to building multi-modal input/output for LLMs

~_*Teaching computers to talk: the prosody problem*_~

papercup.com/blog/realistic-synthetic-voices

If anyone’s interested in the topic hit me up 🤩

🎥 Gloodata: Smart Labels & Mistral Model using Anyscale Endpoints via Mariano Guerra

🧵 conversation

Youtube Thumbnail

Smart labels are a visual indication that a value has detailed information and contextual actions accessible with a click

Plugins can register their own smart label types and detailed views and contextual actions for those types or types registered by other plugins

First demo using an open model instead of ChatGPT

💭 tldraw.com via Daniel Buckmaster

🧵 conversation

Not exactly a project, but I was thinking about the way I use tldraw.com as an infinite single notepad - not starting new files, just gradually moving to a new part of the canvas as I need to. And as I was thinking I thought it'd be amusing to show off my canvas. This is about a year's worth of intermittent diagramming. I still use pen and paper a lot, and I don't yet know what the trigger is for me to get on tldraw instead of reaching for my notebook.

image.png

🐸🎥 DreamBerd Vision Pro [FULL COMPREHENSIVE REVIEW] via Lu Wilson

🧵 conversation

Youtube Thumbnail

Introducing the DreamBerd Vision Pro

(satire)

💬 Tom Lieber

🧵 conversation

The future of coding may involve rendering histograms of random variables in Three.js, so here we are.

2024-02-07 animated histogram.gif

💬 Tom Lieber

🧵 conversation

It's all smoke and mirrors, but seeing the charts fill up was part of the UX that I wanted to test first, and… oh yeah, that's what I was hoping for. 👌

2024-02-08 marginals with code.gif

💬 Lu Wilson

🧵 conversation

🎥 is this silly?

🪢 Combine nodes into compositions in a visual programming system via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

Hi, in this video I show the progress on a new feature that I really wanted for quite some time: combining nodes into reusable compositions. This helps in making flows smaller. The compositions can be accessed from within the node-type selector so they can be added to the flow. One thing that I really like is how the inputs and outputs to compositions are created based on the connections which cross the bounds of the selected area. I've also finally added a way to copy & paste nodes which is a nice productivity improvement.

In the video I demonstrate my other flow engine instance with which you can create fragment shaders in webgl and here I've recreated a shader form shadertoy made by kishimisu (see shadertoy.com/view/mtyGWy ). I had to extend the node-types to make this possible. Currently I cant yet create nested compositions but once that is possible I hope it will help decrease the "node-spaghetti" further. Because I do think that the textual shadertoy code is still easier to read then my visual version. Which obviously I want to improve.

I am almost ready to send out a link to my visual editor but decided to work on it a little bit more for ar least this month. I want to extend and improve some features and create more example flows.

📝 Cognition and conditioning via Tom Lieber

🧵 conversation

I wanted to make a pit stop at this tug-of-war example from ProbMods before I moved on to working on the code editor because it's one of the most eye-opening in terms of what's possible in PPLs, and because this is the visual I wanted that I couldn't get in WebPPL, in two ways: 1) all the plots, arranged how I wanted them, and 2) always-on plots that let me see the samples as they come in, with the charts getting smoother and smoother the longer I'm willing to wait.

2024-02-10 tug-of-war.gif

Reading Together

📝 If What We Made Were Real: Against Imperialism and Cartesianism in Computer Science, and for a discipline that creates real artifacts for real communities, following the faculties of real cognition via Stephen De Gabrielle

🧵 conversation

If What We Made Were Real: Against Imperialism and Cartesianism in Computer Science, and for a discipline that creates real artifacts for real communities, following the faculties of real cognition~

Antranig Basman

Abstract: I argue that we have not yet succeeded in constructing any real software, but merely simulations or cardboard prototypes of software…

PPIG 2017 - 28th Annual Workshop

ppig.org/papers/2017-ppig-28th-basman

Not new, but new to me. Indeed PPIG seems to be a goldmine

🖊️ video: Mobile Pen-based Computing (1992) via Pietu

🧵 conversation

An inspiring video: Mobile Pen-based Computing (1992). 1hr 3 min.

In the conference recording, Terry Winograd demos the PenPoint OS, a mobile operating system focused on the "notebook interface". This is around the time PDA's and Apple Newton were on the radar.

🗨️ Software Craftsmanship: The New Imperative via Dave Liepmann

🧵 conversation

Pete McBreen's Software Craftsmanship: The New Imperative (2002).

Most of the book is about the consequences of distinguishing between "software engineering" (defined as armies of programmers going down a waterfall) and "software craftsmanship" (defined as small teams working incrementally). He runs deep with the craftsman metaphor, taking seriously how to make real the "apprentice" and "journeyman" stages in a software developer's career.

One interesting thread is that he points out how "best practices" are firmly a creation of the software engineering side of his binary, and do not satisfy craftspeople's very different trade-offs. Some by nature will wind around on their own path, custom-fitting each architectural decision to their preferences and the needs of the specific project.

There is overlap with our 💬 #thinking-together@2023-12-30, exploring Jack Rusher's ontology of [programming, computer science, software engineering]. It seems useful to me to further distinguish the "strong S.E." that Jack and McBreen use as definitional from the "soft S.E." which we all seem to use colloquially to mean all manner of techniques for making an application error-resistant. The work of the latter may not be intellectually engaging or novel but it lacks the qualities which make strong SE distasteful: centralization of power, treating developers interchangeably, the urge towards monoculture, a cultural belief in "training" instead of learning.

image.png

Thinking Together

💬 Jim Meyer

🧵 conversation

New visual programming languages don't fail as visual programming languages.

They fail as programming languages, which is what most new programming languages do.

💬 Guyren Howe

🧵 conversation

Is there an attempt at making a more beginner-friendly, perhaps graphical, form of prolog. Perhaps something like Squeak, but where the computation model is more logic programming than imperative, structured programming?

Or perhaps some other friendly presentation of logic programming?

Content

📜 Vesuvius Challenge 2023 Grand Prize awarded: we can read the scrolls! via Walker Griggs

🧵 conversation

This might be old news to some, but: Vesuvius Challenge 2023 Grand Prize awarded: we can read the first scroll!. I'm blanking on who exactly (if it's you, I apologize), but I met someone at a FoC SF meetup last year who was working on this project. Immensely cool work!

The 2000-year-old scroll discusses music, food, and how to enjoy life’s pleasures.

📝 The Unreasonable Sufficiency of Protocols via Christopher Galtenberg

🧵 conversation

Bumping this from history, as a submission for FoC podcast papers to consider, at least a background text to have in the toolbelt – as so many of the podcast's conversations are around bridges yet-to-be-built – the meta-domain of protocols supplies much of the missing scaffolding

Protocols, we believe, deserve to be first-class concepts in any discussion of coordination phenomena, at every level: from handshakes to civilizational futures. We believe that protocols, especially ones mediated by computers, will play an increasingly important role across all aspects of modern human life.

venkatesh-rao.gitbook.io/summer-of-protocols

Unreasonable Sufficiency of Protocols snippet.png

🦠 Will Wright's Dynamics for Designers via Mariano Guerra

🧵 conversation

Youtube Thumbnail

Present Company

💬 Tom Lieber

🧵 conversation

Can I be happy writing TypeScript for the browser? I made a Node project that imports Three.js, and Browserify takes almost four seconds to bundle it every time I make a change. Is this how it’s done?

📢 Levlo: looking for the first team member via Jarno Montonen

🧵 conversation

I'm looking for the first team member for a natural language programming startup I've been working on since the beginning of 2021: levlo.com.

The responsibilities can be defined based on experience and interests to fit somewhere between passionate frontend developer + designer and full-stack developer + product owner/chief product officer.

I live in Espoo, Finland, but we'd work mostly full-remote. However, due to bureaucracy, residence in Finland is required. Atm I have funding for 12 months of 4200€/month salary (with working time and benefits as defined by Finnish law) and will be offering equity on top. The goal is certainly to find funding for paying the salary going forward as well.

Since releasing the demo shown on the site, I've been working on rewritting large parts of the underlaying technology to be able to add features required by potential use-cases that have come up. Now, after ~5 months, I've finally been able to start adding those language features and start work towards enabling real world use-cases. Sales effort hase been fairly minimal so far, but I have one confirmed pilot customer (B2B) and will be putting more effort into sales going forward.

The techstack is C#, Azure and Blazor (similar to Vue). The most important skills would be web frontend development (& design), cloud (Azure), and C#. In that order. The C# you'll need to write will be fairly trivial and it should be easy for anyone familiar with eg. Java or TypeScript to pick it up. But first and foremost I'm looking for someone passionate about the future of programming willing to embark on this hopefully decades long journey with me!

Textual no-code platform for creating logic-focused web apps usable by people and other software


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/02 Week 1

2024-02-04 23:10

Our Work

🎥 Inventing on Principle for Gleam via Peter Saxton

🧵 conversation

Vimeo Thumbnail

I've implemented an interpreter for Gleam, (in Gleam) so that I could make a bunch of tooling quickly. This is my first effort at brett victors version of Live Coding.

📝 Software Instruments via Jasmine Otto

🧵 conversation

My PhD thesis about my ongoing attempts to marry AI and HCI is now up. (A lot of it is about academia, where those two fields do not like to talk.) Plenty of stuff about paper tools, rapid visualization prototyping, and the connection between domain-specific languages and direct-manipulation interfaces.

Author(s): Otto, Jasmine Tan | Advisor(s): Smith, Adam M | Abstract: Software instruments are intelligent interfaces used by domain experts to manipulate complex artifacts. By contributing the concept of software instruments, this thesis connects the field of data visualization to its relations in both artificial intelligence and computer-supported collaborative work. Software instruments arise from projects carried out by teams with complex datasets in aerospace and narrative design, whom I have worked closely with, and which are developed and documented in this thesis. They are a lens for other computational media practitioners to introspect about their own design processes and artifacts. I argue that the evaluation of software instruments occurs in discussion with expert stakeholders, adopting the lens of critical technical practice to avoid disciplinary silos and narrow strategies of evaluation.

💻 github.com/sublayerapp/blueprints via Scott

🧵 conversation

We just open sourced this concept we've been working on for programming with LLMs we're calling Blueprints. It is kind of an alternative to coding copilots. It allows you to capture patterns/sections/chunks/classes/etc of your code to store as a "blueprint" then use those blueprints as a base template for generating something new - in your particular style. Think about it similarly to how when you work on a new feature, a lot of the time there's similar code in your codebase that you look at and modify for this new use case you're working on.

The way it works is that when you capture a blueprint, the server generates a description with GPT4 along with vector embeddings of that description so that the next time you want to do something you just need to describe it, it finds the closest description, and uses the description+code to prompt for the new code generation.

Would love feedback or to chat if this sounds interesting to anyone!

Repo here: github.com/sublayerapp/blueprints

Short demo of it in action

💬 Elliot

🧵 conversation

Hey y'all. I'm working towards a library for rendering and adding direct-manipulation to infinite recursive things. I want to share this picture showing where I'm at.

On the left is the rendered infinite recursive thing. On the right is the diagrammatic specification for the thing on the left. The library interprets the diagrammatic spec and produces a program that takes the initial transformation (position, rotation, scale, and skew) of a shape (data for a t in the diagram), and then runs forever, adding more shapes to the left and the right as it runs.

The arrows in the spec mean "depends on", and the lines mean "depends on" both ways. I could have drawn the lines as two-sided arrows but I found that it was harder to read. Explaining this now I realize its kind of confusing tho lol.

The self-loop on the t in the spec is what makes the resulting diagram recursive, otherwise it would be a single red, green, and blue thing.

Currently the diagrammatic spec is actually specified in text 😐

image.png

💬 Gabriel Grinberg

🧵 conversation

Hey everyone 👋 made some big progress with Flyde in the recent months, and would love to share it here!

Flyde is an open-source, visual programming language. It runs in the IDE, integrates with existing TypeScript code, both browser and Node.js.

Flyde is

Would love to hear your thoughts and feedback 🕺

🎥 Demo

Devlog Together

🎠 Pong Wars via Kartik Agaram

🧵 conversation

Have y'all heard the good word yet about Pong Wars, a.k.a Yin-Yang for Pong, a.k.a Pin-Pong?

🎥 Ping Pong

🎲 Intro to WebPPL, a Probabilistic Programming Language (PPL) via Tom Lieber

🧵 conversation

Thanks to the power of View Source, I've embedded WebPPL on a web page of my own site! Just a simple (but perhaps more evocative than usual) intro to the language for now: alltom.com/pages/webppl-intro

💬 Oleksandr Kryvonos

🧵 conversation

so this has been developed a while ago, I just wanted to see how 🎥 code on canvas looks like

Reading Together

📝 The half-life of developer skills is shrinking rapidly - Stack Overflow via Salmen Hichri

🧵 conversation

A very interesting podcast talking about the future of software engineering 💡

  • How classic programming differs from ML/AI programming ..
  • How to software engineers can adapt to emerging AI technologies ..
  • And few other topics related to AI/ML and software engineering ...

Content

📘 The Architecture of Open Source Applications via Florian Schulz

🧵 conversation

Just learned about this: “The Architecture of Open Source Applications”

📝 The Engineering behind Figma's Vector Networks via Shalabh Chaturvedi

🧵 conversation

Interesting read covering vector graphics "paths" and "vector networks"

A deep dive into the world of vector networks, and the engineering challenges involved in their implementation.

🧑🏽‍💻 getspectral.io via Mariano Guerra

🧵 conversation

Figma meets Visual Studio Code: Collaboratively navigate, debug and edit your codebase on an infinite canvas


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/01 Week 5

2024-01-28 22:46

📍 Spatial Computing 🧑‍🏫 Future of Kids Coding

Our Work

📝 Structured data. Not too much. Mostly text. via Kartik Agaram

🧵 conversation

📍 Spatial Computing with links not apps via Duncan Cragg

🧵 conversation

My latest article:

Spatial Computing with links not apps

Freedom from the Metal to the Metaverse

Devlog Together

💬 Jason Morris

🧵 conversation

This week I paid off some technical debt, and refactored a single 7500-line file into 134 different JavaScript modules. I did this to myself. No one to blame but me. But it's finished.

Thinking Together

💬 Mariano Guerra

🧵 conversation

Why aren't you using one of these? What's missing in them? is your use case not covered?

  • gtoolkit.com is the Moldable Development environment. It empowers you to make systems explainable through experiences tailored for each problem.
  • unison-lang.org A new approach to Distributed programming
  • github.com/hyperfiddle/electric A reactive DSL for full-stack web development, with compiler-managed frontend/backend network sync
  • redplanetlabs.com a new programming platform that ** reduces the cost of building scalable backends by 100x
  • croquet.io Multiplayer Platform for Web and Unity
  • enso.org Nodes and wires data manipulation
  • rvbbit.com reactive data boards & flows
  • wolfram.com/language a symbolic language, deliberately designed with the breadth and unity needed to develop powerful programs quickly.

💬 Jacob Zimmerman

🧵 conversation

Just curious for all your thoughts, is being ahead of your time a good thing? I’m thinking of a conversation I had with @Toby Schachman in the Cuttle discord a while back where he mentioned that Cuttle aimed certain details at a status-quo of programming style unlike it’s predecessor Apparatus, I thought that was quite profound. I’m thinking also of Fortran vs Lisp (or perhaps Forth). When is it not worth it to meet people where they are?

📍💬 Eli Mellen

🧵 conversation

I wanted to bounce 2 terms I've been thinking of off of this group:

I dig visual programming, but think the term is like a little bit of a brain poison because it isn't really descriptive of the goals, and, like, almost all textual programming is inherently visual, too...just...in the way text is.

I think Ivan Reese was the person I first heard float the term "spatial programming," which I dig, but at least for me, it also misses the real value add of what I'm looking for in a "visual" system.

So, the two terms I've been kicking around:

  • relational programming
  • cartographic programming

Neither are perfect, and both feel exhaustingly pretentious (a good thing, may haps?) but my intention with both terms is to highlight that these sorts of systems, unlike text-based programming, help make the relationships between different elements (classes, data flow, inheritance, etc.) meaningful using information other than similar names.

Useful? Stupid? Prior art?

Content

🎥 The Only Unbreakable Law via Konrad Hinsen

🧵 conversation

Youtube Thumbnail

A nice talk about Conway's law

📝 Visualization of Cultural Heritage Collection Data: State of the Art and Future Challenges via Jasmine Otto

🧵 conversation

Given recent discussion of what social scientists need from computing (and is it plain-text scripting?), sharing this recent survey of cultural heritage visualization systems (16p). Section 3.4 (Granularity and Interactivity) will be especially interesting; the authors avoid flattening this idea to a 'file system'.

💬 Eli Mellen

🧵 conversation

Another one of those developer thriving comics from pluralsight’s research folks. I like that this one hits on contest culture, and its relationship to AI. (also, love that the PDF includes accessible text)

📄 Brilliant Blobs.pdf

🧑‍🏫🎥 Testing a new programming approach with 11 and 12 year-old children by Agustín R. Martínez via Beni Cherniavsky-Paskin

🧵 conversation

Youtube Thumbnail

Whoa. Similar to Lu Wilson's probabilistic rule-driven VMs,

plus a touch of Orca? (Specifically the way the kid built a timer out of a character pacing back and forth, see around 11:10-14:30)

I particularly love the use of user-drawn icons in lieu of symbols. Naming is hard (and requires literacy).

End User Programming

📝 Myths and Mythconceptions via Stephen De Gabrielle

🧵 conversation

Almost finished listening to the marathon podcast on this paper.


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/01 Week 4

2024-01-21 23:07

🤖 Intersection of programming & AI ⌨️ Keys, Boxes & Arrows 📚 Probabilistic Models of Cognition

Our Work

🎼 Polygon via Clam R

🧵 conversation

Polygon: A spatial approach to sequencing musical rhythms

Inspired by Bret Victor's lectures and some of the cool stuff i've seen on here, I made a drum sequencer where the relative positions of nodes determines the spaces between notes in a pattern.

Generate drum patterns through spatial computing.

🤖🎥 Gloodata: Your Personal Productivity Assistant via Mariano Guerra

🧵 conversation

Youtube Thumbnail

I recorded a short demo showing the latest plugins and improvements I've been working on in gloodata.

Gloodata: Your Personal Productivity Assistant

The demo shows timezone information, weather forecast, maps, routes, content extraction and summarisation plugins.

📝 public.me via Anton Podviaznikov

🧵 conversation

made a simple tool to publish Apple Reminders online public.me.

Sounds not impressive, but Apple Reminders gave me an interesting data structure: list of items with predefined format(name, description, date, url, isCompleted, images etc).

So I was able to build habits tracker directly in reminders and have nice visualizations of streaks like this public.me/anton/daily

🤖🐦 Tweet from @io_sammt via Samuel Timbó

🧵 conversation

I see lots of folks here are interested in the intersection of programming and AI (to say little); I finally posted an example combining Unit and LLMs on X. It is a reactive graph for text reasoning and image generation. I start from a statement, then apply commands to transform it, ultimately rendering generated images. Take a look . Full preview:

Screenshot 2024-01-20 at 10.56.26.png

Devlog Together

🎠 A little game integrated with its tools via Kartik Agaram

🧵 conversation

Integrating a little game with a sprite editor and a maze editor, all on a touch-screen.

🎥 sprite game

💬 Jimmy Miller

🧵 conversation

When working on my language I've been frustrated by the lack of symbols and extra information for my JIT compiled code. There is a way to get this kind of information, but it involves building an elf binary in memory. Way too much overhead for this point in my development.

So I started building my own debugger frontend to lldb. Not much to show right now. But the idea is to specifically tailor it to my language. So you'll get a compiler explorer like experience, but also be able to view the stack and heap and all of that live. See the language level values stored in there.

The fun part to for me was how to convey the information I need to the debugger. The answer came from the standard JIT interface. How do you tell your debugger things? You make a function that the debugger has a breakpoint in. The function does nothing in the body. You just pass some args that tells the debugger where in memory to get the information it needs. Super clever. So now I'm working on passing all my compiler metadata to the debugger frontend so it can know how to render things intelligently.

⌨️🎥 Using just the keyboard for visual programming via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

This week I spend a lot of time adding basic keyboaed support in the visual programming system that I am developing. For productivity I think that just using a mouse for creating a visual flow is not enough. One of the reasons why we are so productive when using a text editor for programming is the usage of the keyboard I think. Off course it's not the only reason but I do think it's of major influence.

So being able to use the keyboard for visual programming seems like a very good idea. In this video I show exactly that.

Currently after every update to the flow, the tabindex is set on all the nodes and input elements. In normal webapps this is not a good idea, but here it is the only way to give the browser the proper and logical tab order. When tabbing through the flow, the camera is focused on the selected node overriding default browser scroll-behavior when a focused element is out of the current view. Using ctrl+a you can add a new node and also select the thumbs for the connection.

Furthermore I've added some other features like being able to run a flow using the keyboard (ctrl + Enter) and opening the properties popup. A missing feature is being able to add a new node before the currently selected node.

Lots of small tweaks were needed to make this work, but I am glad I spend the time because this also increases the accessibility.

💬 Oleksandr Kryvonos

🧵 conversation

I created a simple Linked-Data / RDF console app (I call it MondAI),

it allows creation of triples Entity->Connection->Another-Entity

and allows query data

🎥 Demo

Reading Together

💬 Tom Lieber

🧵 conversation

Ivan Reese, in episode 9 of a podcast I can’t tell if I’m supposed to know about or not, you asked, “Where is [data] going when you’re throwing it away, and when you rewind, how does it come back?” And I don’t think it has answers that you’d want to apply directly to your situation, but ~Feynman’s Lectures on Computing~ comes back to the idea of reversible computing again and again with various playful metaphorical lenses. I think that at the very least it might be a nice way to take a break and think about the problem from a physicist’s perspective now and then, if this is still a problem you’re working on.

Content

🐇 rabbit.tech/keynote via Pietu

🧵 conversation

rabbit.tech/keynote (demo starts at 7:33) shows an un-released portable personal-assistant device. There's a lot going on in the keynote, both in UI-wise, and how they demo and describe this "new kind" of device.

📄 Modern Plain Text Computing via Ivan Reese

🧵 conversation

This Modern Plain Text Computing course at Duke has a refreshingly frank description written by Kieran Healy. I can't tell if I should feel positively, negatively , or overwhelmingly negatively — double adverb !! — about the existence of this course, though.

📚 Probabilistic Models of Cognition via Tom Lieber

🧵 conversation

I’ve been really into probabilistic programming languages (PPLs) lately. I had a few “aha” moments and I’m decidedly in the “hit everything with this hammer to figure out where the nails are” phase.

Anyway, is anybody here in a similar headspace? Or already experienced with PPLs?

Is anybody curious to enter this headspace with me? I reviewed the (online, free, programmable) book that brought me here: micro.alltom.com/2024/01/11/the-cognition-in.html

The “Cognition” in Probabilistic Models of Cognition 📚 is the hardest part to get across when I recommend this book. Because the book isn’t “Bayes works, yawn.” It’s so much more interesting if you, like me, exist primarily in ML circles that focus on curve-fitting: What could be going on in our heads when we can’t tell that the two grid squares in that optical illusion are the same color?


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/01 Week 3

2024-01-14 23:16

🐦‍🎵🐸 Arrows in Arrows in Arrows 💡 Moldable Development Patterns 🤖 LLMs & Languages

Two Minute Week

💬 Jason Morris

🧵 conversation

Big milestone. Three minute video, shows my system using LLM code generation to generate visual logic code representing sections of a law, based only on the text of the law. (play at 2x, there's a lot of waiting)

🎥 LLM code generation

Our Work

🧮 Binary Tetris: What if tetris had a baby with a hex editor? via Mariano Guerra

🧵 conversation

Binary Tetris: Interactive Binary Operation Playground

What if tetris had a baby with a hex editor?

🐸🎥 🎵 Arrows in Arrows in Arrows via Lu Wilson

🧵 conversation

Youtube Thumbnail

hello i made a little explainer video for my node-based visual programming language please enjoy

Devlog Together

🤖💬 Jason Morris

🧵 conversation

Proof of concept for having an LLM generate logical code in a visual coding environment for legislation.

🎥 blawx autogen

🎥 Timeline slider for a visual programming system via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

In this video I show a timeline slider with which you can scroll through the executed path of a visual flow program. Some node-types like variables and the node-tree-visualizer have there state being recorded for each execution.. so when moving through the timeline, these nodes are updated and especially with the node-tree-visualizer this gives a good overview of how a program/algorithm works (in this case quicksort). Instead of having to visualize this in your head , you see the effect of the program for each execution step and you can also inspect the variables like the left and right arrays and the pivot variable.

On the end of this month I hope to release a demo version of the project I am working on, so the last weeks I've also been fixing bugs and making other improvements. One of the bigger improvements is the way the moving message bubble is handled, it's now much smoother especially on lower execution speeds because of the use of requestAnimationFrame, it was on my wishlist from the beginning I implemented this but hadn't come around to it yet.

Thinking Together

🤖📝 The Future is Conversational ― Crafting Next-Gen User Experiences With AI via Salmen Hichri

🧵 conversation

I wrote an article discussing The Future of User Interfaces .. and the role of Conversational AI :

I'm curious to know what the community thinks! 🧠💡

  • Do you foresee a world where chatbots and voice are the dominant user interfaces?
  • Or will the mouse/screen always maintain a leading role in human/machine interactions?

Conversational AI is transforming software design. Learn how AI co-pilots, chatbots, voice assistants, and spatial interfaces are changing UX and development from NLUX founder Salmen Hichri. Get hands-on advice for auditing and integrating intuitive conversational interfaces today.

Content

🤖🎥 The Near Future of AI [Entire Talk] - Andrew Ng via Paul Tarvydas

🧵 conversation

Youtube Thumbnail

Ng talks about upcoming opportunities for entrepreneurs exploring AI technology and addresses questions of responsibility and risk.

Ng understands the technology, yet, in this talk concentrates on opportunities.

📝 What Can Software Learn From Hypermedia? via Shalabh Chaturvedi

🧵 conversation

I really like the premise of this paper and the first few sections of this paper, framing hypermedia as an underlying medium in software.

Hypermedia was introduced not as a subgenre of software, but as a different conceptualization of what software is.

I'm not too excited by their implemented solution though (Webstrates). Still, the premise can be taken in many other directions I imagine.

📝 Missing the Point of WebAssembly via Ivan Reese

🧵 conversation

I enjoyed this article on Missing the Point of WebAssembly. Count me as one of the people previously "missing the point" by this definition. I now feel less inclined to explore wasm in my web dev work, and more inclined to explore it in my VPL work.

💡🎥 Keynote: Moldable Development patterns by Oscar Nierstrasz via Konrad Hinsen

🧵 conversation

Youtube Thumbnail

This talk on Moldable Development gives a nice introduction

📑 Folk (Browser) Interfaces via Nilesh Trivedi

🧵 conversation

Really liked the take on digital library :

I think of these as folk interfaces, akin to the jigs one makes in wood-working. Divorced from grandiose ambitions of building comprehensive systems, it leads the programmer to directly engage with data.

🤖

🤖🎥 LLM/Copilot UX Experiment: Fuzzy Matching via Josh Bleecher Snyder

🧵 conversation

Youtube Thumbnail

Not sure whether this is quite on topic for FoC, but I made a toy and I'm pleased with it.

I was inspired by Dasher, which uses the low entropy of natural language to make it possible to enter text using only a 1-dimensional input device. The core idea is to make the most likely next input take up a lot of space and thus make it easy to reach.

Most interactions we have with a computer involve low entropy input.

With (1) good models, and (2) a lossy encoding/decoding model that is easy for humans to use, you should be able to get away with entering a lot less.

For code, LLMs are pretty powerful models. And fuzzy matching is a pretty easy-to-use lossy encoding model.

So I made this


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/01 Week 2

2024-01-08 00:09

💡 Communicating programming ideas 📑 On simplicity 🎥 What even is code?

Our Work

💬 Robin Allison

🧵 conversation

I really like TodePond's video "Screens in Screens in Screens". I've been wanting to do the same kinda thing with mathematical formulas instead of shapes, a kind of "formulas in formulas in formulas", but I'm an awful programmer so I'll describe some math you can do to that effect. Apologies in advance for the shoddy explanation though.

Here's a thing you can do with "screens". You can name screens. Start with some screens A B C. Then if C is inside A, and A and B are the same color, then there is a copy of C inside B. What do you call this copy? "The copy of B from A to C"? It will be convenient if we give it a symbolic name. Call it (A->B)C. Or if you are really hardcore you can call it just t(A,B,C) where t is a ternary operator describing the result of copying C from A to B. You may think to only consider (A->B)C when C is inside A, but the math becomes tractable if you consider all screens at once. Then we can stipulate some axioms:

  1. (A->A)B = B

  2. (A->B)A=B

  3. (B->C)(A->B)=(A->C)

  4. (A->(X->Y)A)=(X->Y)

The first axiom means if you are copying a screen from one screen to itself, you aren't changing anything. The second axiom is "obvious" except for considering (A->B)A in the first place. The third axiom means if you copy a screen from A to B and then from B to C that is the same as if you were to copy it from A to C directly. It is also shorthand for (B->C)((A->B)D) = (A->C)D for all screens D. The fourth axiom takes a bit more explaining. Basically we want this equation to be true whenever A is in X, and both sides are being used to copy something from A. But our theory at this point doesn't have a predicate for "A is contained in X" so we say it holds in all cases.

With these axioms you can show the operators (A->B) form an algebraic structure called a group: You can multiply them by performing one copy after the other (C->D)(A->B). This operation is associative (I mean, it must be), and has an identity element and inverses. The identity being (A->A) and the inverse of (A->B) being (B->A).

Another perspective is to view screens as points in an affine space (i.e. vector space without a specified origin). Then (A->B)C can be thought of as (B-A)+C, and each of the axioms above can be interpreted as vector equations. This isn't a good model though because it ends up saying some screens are the same when they should be different. You can still take the above axioms and show that screens form a generalization of affine spaces called torsors.

I'll share more if anybody is interested. It really needs a much longer write up, but I thought somebody might know if its already been done before.

📝 Don't strip the meaning away from your runtime via Mariano Guerra

🧵 conversation

Don't strip the meaning away from your runtime: Exploring extending programming languages to include descriptions in the domain of the problem and solution

Spoiler alert: interactive example inside 🙂

First draft, feedback welcome!

📑 On simplicity via Stefan Lesser

🧵 conversation

A few weeks ago I started a new series of blog posts (or “newsletters”, in Substack parlance) about simplicity :

1 • On simplicity introduces the series with how my thinking about simplicity has changed over the years.

2 • Meaning-ful design connects simplicity to meaning making and coherence.

3 • Familiarity explores how complex things can be surprisingly simple and why we can’t ignore context.

4 • Reciprocal realization frames design as a complex dynamic process of mutual adaptation between designer and designed object.

I expect about four or five more posts coming after that, but I haven’t written them yet, so I have no idea. 🙂

A lot of this draws on 4E cognitive science, design theory, and philosophy. As such it may perhaps be less technical than you would expect it to be, although I try much harder in this series to relate it more directly to programming and software development than in my last.

And that’s why I post it here, today. I’m hoping to learn if this resonates at all with a technical audience, or if this is still too abstract. I know we’re all craving for the easily applicable Top 10 Things to Make Things Simple (and number 6 will surprise you), but I have reason to believe that it’s just not that… well… simple. But I think I’m slowly making progress towards synthesizing something valuable, even if I can’t express it as beautifully as I would like to. Yet.

Let me know what you think, and please ask any questions you may have (in thread or via DM). Appreciate your feedback!

💬 Jim Meyer

🧵 conversation

Spinners are boring, so might as well get creative with AI UX for loading states, even with fast LLMs like Mixtral.

The thinking is to not only show multiplayer presence on our canvas, but also what the AI is doing and working on, including visualizing the code its writing in real-time.

henosia-ai-code-minimap.gif

Devlog Together

💬 Kartik Agaram

🧵 conversation

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 (first clip) 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 (second clip) 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.

🎥 dash-baseline

🎥 dash

💬 Oleksandr Kryvonos

🧵 conversation

I built a bare-minimum in-browser text editor,

it saves files immediately on every key press,

I also created a history of revisions but realised I do not need them, git works good enough for now.

🎥 Demo

Some squishy balls via Kartik Agaram

🧵 conversation

🎥 boids

💬 Jason Morris

🧵 conversation

So I've only been a real developer again for a month, but holy cow. I would have thought keeping your data persistence layer in sync with your code would be easier than this, by now. Irritating.

Thinking Together

💡 Communicating programming ideas by Ivan Reese

🧵 conversation

Someone reached out to ask me for more thoughts about communicating programming ideas through media other than the academic paper. I wrote a reply, and then decided it would be worth sharing here to see if other folks have their own inspirations they'd like to share, or ideas for how our industry can go paper-free ;)


I feel like I owe reading an apology. I certainly try to play up my "crank" side on the podcast, but it does run the risk of mixing-up this is being silly with this is thoughtful critique .

I have tremendous reverence for the communicative potential of the written word. I just think there are some kinds of ideas that lend themselves better to other forms of expression, or some ideas that can't be written down.

For instance, it's very strange to me whenever I read a paper about HCI, especially if they're discussing GUI ideas. Sure, often these papers will be accompanied by a video. But, like, the work being described is about interacting with interfaces . I think the work should be presented as an interface you can interact with!

I'm especially fond of Bret's essays, naturally. Bartosz also does great work with visualization, though I feel like he leans a little too heavily on text and that the visualizations are too linear. Amit also does excellent work, but he has the advantage that most of the things he demos are inherently about interactive graphics so they lend themselves naturally to this sort of presentation (not to diminish the incredible effort Amit puts in to these articles).

The thing I want to see more of is… people finding ideas that can only be expressed through interaction. I think successfully achieving this requires that someone work natively in interaction, a lot, for a long time. As a result, most of these ideas seem to emerge in the periphery of video games.

One of my favourite examples is Dys4ia, a collection of microgames about the trans experience. It uses written language and (meaningfully crude) visual art to set up the plot , but interaction to tell the story .

Something I'm very interested in seeing (and have made a few attempts at myself, but nothing worth sharing) is an attempt to create a fully-usable programming environment presented as a game specifically for the purpose of communicating ideas about programming. There've been plenty of the inverse, where a programming system is the setting within which a game takes place (see all the works of Zachtronics, for instance), but I haven't seen anyone do a game as the setting within which actual programming takes place. Closest to that might be something like Minecraft or Dreams (etc), but I don't think those were designed to communicate ideas about programming the way, say, The Witness was designed to communicate a philosophy of science.

Another close comparison might be Advent of Code, where you playfully approach programming differently than in your normal work. The programming you do for AoC should feel meaningfully different. Similarly, imagine building your own Rosetta Code from scratch. That should give you a really particular feeling. I think it's related to, say, the feeling of writing a rasterizer for the dozenth time. I think these feelings are ideas, and that there's a whole language of them, and that the language is expressed through the creation of systems. I think if we studied this language, it would guide us toward building different kinds of tools.

And hell, you might eventually be able to write a paper about that. (Countdown to someone arguing that this is what Christopher Alexander has made a career of, in a sense.) But I don't think we will arrive at those system-feeling ideas in any way other than by building and playing with systems, and with a particular intention at that.

📖 tiktok.com/@etymologynerd via Steve Krouse

🧵 conversation

Hey friends!

I don't know if you're familiar with this harvard linguist on tiktok but he's the best: tiktok.com/@etymologynerd

I think it would be AWESOME if someone from "our community" would make those style of tiktoks, but about computer and programming history. I think it would become quite popular and be super enriching and educational

I have some amount of capacity to help and sponsor this, but I mostly wanted to put it out there as a general request for someone in our community to take up the gauntlet in this new medium

💬 Ivan Lugo

🧵 conversation

Heya internetpeoples ❤ I’ve spent a long time refining this and brought in “The LLMs” to help craft the tone here, and I think I’ve finally gotten it to a point where I feel like it hits my message and question, and doesn’t assume too much negativity or… doomcalling, heh. Thanks for the time and shared space, as always.


I’ve despaired when stuck on problems I just couldn’t crack. I’ve also felt the joy of those “aha!” moments when things finally click. We’ve all been there as coders. While documentation and searches can help fill gaps, little replaces another human sitting alongside, guiding with patience earned from experience. In those moments when someone more seasoned gave guidance, I felt hope renewed. How might we foster more of these vital human connections?

Key Discussion Points:

  • Knowledge flows when passion meets patience . I’m grateful for the patient coders who “reached down” to guide me. Let’s discuss barriers hampering these relationships. Generalizations about certain groups being “unwilling” to help are counterproductive. However, empathetic mentorship remains scarce. How might we change incentives?

  • Truly supporting newcomers requires understanding their frustrations are valid. I want to open a thoughtful discussion on constructive ways we can keep improving in this regard.

  • There are always exceptions by those dedicated to lifting others up. But much room remains for improving access, channels and incentives for more direct peer sharing across experience levels. It’s on each of us to reflect on where we can have an impact.

I welcome reactions, shared experiences, and dialogue toward that aim. How might we strengthen coder communities through human connections? Where do you see the biggest opportunities? Together, I believe we can guide positive change.

Content

📼 Cassette is a small, Lisp-like programming language via Eli Mellen

🧵 conversation

I ran across Cassette, a programming language today. I liked some of the stuff on the webpage and think it is interestingly aligned with the Future of Coding community.

I made Cassette as a simple language for “playful programming”. Playful programming is writing something for the sake of writing it. It’s making a software 3D renderer or a GIF reader, even though better implementations of those already exist. It’s making generative art programs and drawing them with a pen plotter. Cassette itself is playful programming—there are certainly other scripting languages that may be better for personal projects like these, but this one is mine.

Continuing,

In particular, I wanted Cassette to feel “essential”, where each aspect of the language reflects some fundamental aspect of computing (from a functional language perspective, at least). For example, I consider garbage collection, lexical scopes, and immutable types essential. The result is a little boring, but I hope it’s a good platform to play with other programming concepts.

Emphasis mine.

📝 This looks fun: Creative Coding 2024 via Eli Mellen

🧵 conversation

This looks fun

🎥 "What even is code? Building a non-code coding interface" - Katie Bell (LCA 2021 Online) via Nilesh Trivedi

🧵 conversation

Youtube Thumbnail

by @Katie Bell is 👍

🤖

💬 Jason Morris

🧵 conversation

Is anyone aware of any papers on LLM assisted code generation inside a visual programming environment? I've only seen one. I'm going to be doing some experiments later this month, and I don't really know the state of the art.


👨🏽‍💻 By 🐘 @marianoguerra@hachyderm.io 🐦 @warianoguerra

💬 Not a member yet? Check the Future of Coding Community

✉️ Not subscribed yet? Subscribe to the Newsletter / Archive / RSS

🎙️ Prefer podcasts? check the Future of Coding Podcast

Future of Coding Weekly 2024/01 Week 1

2024-01-01 22:44

🎙️ FoC: Mary Shaw • Myths & Mythconceptions 🥕 Elliot Evans 2023 projects 📑 Malleable Systems Collective 2023 Digest

Our Work

🐸 World’s first full-stack tadi website via Lu Wilson

🧵 conversation

I wrote an overly in-depth write-up of how I built a dashboard.

It was the first time I've tried to build something a bit more ambitious using the new "tadi web" principles that got 💬 #devlog-together@2023-12-20 a few days ago.

📝 Being Stuck in Someone Else’s Theory via Jimmy Miller

🧵 conversation

The perhaps most melodramatic thing I've ever written about software. Sat in my to publish folder for a while. But I realized I am just a bit melodramatic, no one will care :)

Theory creation, world-building, and crafting software are all one in the same activity. Removing any of these elements eliminates the very value you hired software engineers to provide. But it does more than that. It forces these software engineers to make a difficult choice: fight to create the world they believe in, or give up and live in a world they are no longer invested in.

🎙️ Future of Coding • Episode 69 • Mary Shaw • Myths & Mythconceptions via Ivan Reese

🧵 conversation

𒂶 futureofcoding.org/episodes/069

In the spirit of clearly communicating what you're signing up for, this podcast episode is nearly three hours long, and among other things it contains a discussion of a paper by author Mary Shaw titled Myths & Mythconceptions which takes as an organizing principle a collection of myths that are widely believed by programmers, largely unacknowledged, which shape our views on the nature of programming as an activity and the needs of programmers as people and the sort of work that we do as a sort of work , and where by acknowledging these myths the three of us (Mary Shaw primarily, and by extension Jimmy and I, those three people, that's it, no other people appear on this podcast) are able to more vividly grip the image of programming with our mind's eye (or somesuch) and conceive of a different formulation for programming, and in addition to these myths this paper also incudes a number of excellent lists that I take great pleasure in reading, beyond which I should also note that the paper does a job of explaining itself and that hopefully you'll find I've done a similar job, that's the spirit, please enjoy.

Devlog Together

🎠 Building an equation plotter via Kartik Agaram

🧵 conversation

Combining charting with the pinch-zoom gesture

I've written a couple of programs now that have felt too large for this particular devlog, which I've been trying to limit to a size I can comfortably edit on a phone, around 200 lines or so.. 🤔

🎥 carousel plot

🎥 Quicksort with visualization and decorators build using my own visual programming system via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

In this video I show an implementation of the quicksort algorithm using my visual programming system and not only that, but also the different steps of the output of the algorithm are visualized using a node tree.

One thing I noticed when making these kinds of algorithm flows, that they tend to grow horizontally quickly. So, to help prevent that, I've introduced the concept of "decorators" (they are in the "stacked" nodes). Decorators can be added before or after node-types that support this.

Now at least flows can also grow vertically a bit more. In the future I also want to be able to combine multiple nodes in a component or grouped node.

There are currently only 2 decorator types: expressions and sending data to the node-tree. Editing is not yet possible via the editor itself but only directly in the underlying json data of a flow. Also I needed to improve the way scoped variables work with regard to recursive functions, the same for the "merge"-node-type. Each node receives a scopeId depending on the scope within it is executed (every call to a function creates a new scope, this scopeId is passed to the function-node which passes it through to its connected nodes and so on).

💬 Kartik Agaram

🧵 conversation

Screenshot_20231230-051117.jpg

💬 Jason Morris

🧵 conversation

Thought about a new architecture for my tool that would make it play better with LLMs, so as to get more help with generating code. Built an MVP version of it over the last week, or so, with just text-based code, and it works well enough that I'm going to have to re-implement my visual language in the new architecture.

Thinking Together

💡 I think programming, software engineering, and computer science are three different things via Stefan Lesser

🧵 conversation

Can we make this a top-level discussion please?

[December 29th, 2023 6:17 AM] jack529: A mythconception that chaps my bottom: I think programming, software engineering, and computer science are three different things, but people insist on using the terms interchangeably. :disappointed:

I’m not so much interested in what the “correct” way of distinguishing those three is, more in how people distinguish them, in their idiosyncratic ways.

So what do you think makes ~programming~ different from ~software engineering~ different from ~computer science~ ?

Content

🥕 Elliot Evans 2023 projects via Mariano Guerra

🧵 conversation

  • Polytope is a rich and composable experimental code editor that combines text and visual coding; structured and unstructured (I call this mixture "ummm-structured") representations of code; and symbolic and direct manipulation of code.
  • Caretope: I began working on adapting text editor caret navigation to visual editors in 2022 as a part of Polytope. I slowly realized that caret navigation is a rich topic in and of itself so I seperated it into its own project: Caretope!
  • Made a small experimental bidirectional programming language
  • Made bidirectional parser combinators which were used for the bidirectional programming language
  • Ended the year working on a bidirectional+recursion library.
  • I'm currently using it to make some interactive recursive visuals. It is inspired by Lu Wilson's ScreenPond and Toby Schachman's Recursive Drawing. Talking with Lu, Ivan, Sharon, Josh, and Marcel has helped me think about this project quite a bit.
  • Nudging is about exploring a large space of values by making local movements through that space. Constraints limit large spaces to smaller ones, and change how those spaces are navigated.

  • This year I made a bidirectional nudging with constraints demo.

  • I also made an equation plotter. This plotter will be used to visualize constraints. It will also add visualization to complement direct manipulation of constraints and values.

📑 Malleable Systems Collective 2023 Digest via Mariano Guerra

🧵 conversation

🖨️ A Core Calculus for Documents. Or, Lambda: The Ultimate Document via Mariano Guerra

🧵 conversation

There are no theoretical tools for reasoning about the design of a document language. Programming language theorists can use the lambda calculus to reason about the design of general-purpose programming languages. No such formal model exists for document languages.

Our work addresses this issue by providing a document calculus , or a formal model of the programmatic aspects of document languages.

Future of Coding Weekly 2023/12 Week 4

2023-12-25 19:22

🛸 Retrofuturistic software systems 👓 Touch Designer 📘 The Architecture of Open Source Applications

Two Minute Week

🎥 Datalog notebook via Peter Saxton

🧵 conversation

Vimeo Thumbnail

I built a datalog notebook. I want to try and tie this to some public data sources and see how end user friendly it is as an interface

Our Work

📝 Apps considered harmful via Duncan Cragg

🧵 conversation

"Apps considered harmful"

(or "I can't believe how you all tolerate apps")

My latest: Apps considered harmful

📝 LLVM IR: Playing around with LLVM IR via FreeMasen

🧵 conversation

Wrote up a little post about learning LLVM's Intermediate Representation

🎠 The Lua Carousel "productivity suite" via Kartik Agaram

🧵 conversation

4 primitives that can be composed into little productivity apps for yourself, particularly on a phone or tablet.

I think the next major piece I'm missing is images 🤔

🎥 A tool to augment creative problem-solving. via Vardnan Sivarajah

🧵 conversation

Youtube Thumbnail

Hey everyone! 👋 I’m a student who’s been working on a side project to explore how LLMs may augment creative problem solving.

I’ve synthesised everything into a rough concept I would love to hear your perspectives on:

~Here is a quick demo:~ A tool to augment creative problem-solving.

Initial inspirations include Jef Raskin’s “Archy”, Mozilla’s old “Ubiquity” project, the thinking of Vannevar Bush, and recent tools like “mymind”. There are still many ideas and user experience concerns to be properly fleshed out, but hopefully it’s an interesting direction.

🌳 Grapher via Nilesh Trivedi

🧵 conversation

I had helped build this tool to create civilizational tech trees so that resources (like talent and funds) can be directed where they are most impactful.

Foresight institute has used it to map the tech tree in 5 domains: Intelligent Cooperation, Spacetech, Neurotech, Molecular Machines, and Longevity: foresight.org/tech-tree

SVG-based interactive graph dataset editor with live real-time collaboration. Powers Foresight Institute's civilizational tech trees: https://foresight.org/tech-tree/ and http://LearnAwesome.org|LearnAwesome.org's learning roadmaps: https://learnawesome.org/#/roadmaps

Devlog Together

🎠 New version after 9 days via Kartik Agaram

🧵 conversation

I built a little voice recorder in Lua Carousel last night

One little detail here involves Android permissions. I almost ended up asking for microphone permissions in Lua Carousel. Luckily I managed to stop and ask myself what the user experience is. "Hi, I'm Lua Carousel, could I please have access to your mic?" Ick! It seems like a bad idea to ask for a permission for the whole app just in case some single script uses it. Probably affects the conversions from this particular blog post, but I don't want to feel like I'm contributing to the general fatigue over apps asking for permissions. 🤷

carousel-recorder.jpg

💬 Paul Tarvydas

🧵 conversation

aside: The whole issue of passwords and permissions is a huge UX issue that deserves a long discussion on of-end-user-programming. Users should be allowed to just use a device without being forced to answer a bunch of questions about technical issues and needing to keep a bowl full of anti-anxiety meds nearby. Imagine if my refrigerator required me to perform some ritual before allowing me to put my recently-bought lettuce into the crisper.

💡 TadiWeb via Ivan Reese

🧵 conversation

I've been enjoying the "tadi web" approach Lu has been espousing lately. I also had some nice discussions at Strange Loop with Devine and a few others about minimizing friction / dependencies / build steps, both broadly but also specifically pertaining to publishing one's personal site. So in this spirit, I've been reworking my personal site a bit. I plan to finally add RSS and, even though it goes against the spirit of Lu and Devine's approaches, add a more complex build process that enables some functionality I've long wanted.

💬 Kartik Agaram

🧵 conversation

Starting to get back into the reason I got roped into developing for mobile in the first place: my friend is a doctor trying to use his iPad to analyze datasets like this plot of Covid concentrations in waste water in two random testing stations over 2 months.

carousel-chart.png

💬 Kartik Agaram

🧵 conversation

I've been figuring out some improvements to the live programming environment for my apps. Some little videos in 🧵

🎠 One finger to pan, two fingers to zoom via Kartik Agaram

🧵 conversation

Pan and zoom gestures on a multitouch screen

Thinking Together

💬 Kartik Agaram

🧵 conversation

A large codebase is a realm ruled by the iron fist of legalism. In addition, it is a patchwork of many different jurisdictions, each with their own overlapping but subtly different laws. And it's incredibly easy to spawn a new jurisdiction!

Content

🛸 The Medley Interlisp Project via Mariano Guerra

🧵 conversation

The Medley Interlisp Project: interlisp.org

a retrofuturistic software system

What did we leave behind on the path to developing today's computer systems? Could there be lessons for the future of computing hidden in the past? Enter the Medley software environment to explore these questions.

📝 Designing a Programming Language to Speedrun Advent of Code via Nilesh Trivedi

🧵 conversation

github.com/betaveros/noulith

background: blog.vero.site/post/noulith

🎥 Redeeming Open Source with ABE - Sid Kasivajhula, feat. Michael Ballantyne - RacketCon 2023 via Kartik Agaram

🧵 conversation

Youtube Thumbnail

This looks tantalizing for the economic angle in particular: Redeeming Open Source with ABE

The repo for that is github.com/drym-org/dia ~, but sadly there's no documentation yet~ github.com/drym-org/foundation. If anybody has more details or pointers please chime in.

(Thanks Konrad Hinsen.)

Present Company

🕹️ Mobile Suit Baba via Ivan Reese

🧵 conversation

Free (for the moment) game from the maker of Baba Is You, in which Baba pilots a mech suit (a la Into The Breach)

📘 The Architecture of Open Source Applications via Daniel Buckmaster

🧵 conversation

I was exploring a domain outside programming today and thought "gee, I wonder if somebody has written a detailed end-to-end case study about this?' Then, I wondered, "gee, has anybody written a detailed end-to-end case study about a software project?"

I always think of software as a very open and sharing community, where we talk about our work and learn from each other without too much secrecy. But I struggled to think of examples. Of course, we seem to be constantly publishing tiny, focused case studies as blog posts. And this is incredible and valuable. But my curiosity is now piqued about this other thing.

AOSA comes to mind, but what comes to others' minds?

👓 TouchDesigner: a visual development platform via Eli Mellen

🧵 conversation

Today I learned about TouchDesigner

Derivative is a software company that offers TouchDesigner, a visual development platform.

Future of Coding Weekly 2023/12 Week 3

2023-12-18 10:29

💻 The Future of Cloud Computing 🚰 The life and times of Yahoo Pipes 🐸 CellPond: Spatial programming without escape

Our Work

👓 LookAtThat: Render source code in 3D, for macOS and iOS. via Ivan Lugo

🧵 conversation

Hey all! All abuzz that I’ve finally pushed the alpha version up of my Metal-based 3D code visualizer apps. After many months, I’ve finally gotten in my place:

  • A brand new and extremely amateurish Metal rendering “engine” focused primarily on character glyphs.
  • An, “is this a joke?” UTF8->UTF32->UnicodeGraphemeCluster GPU based text parser and basic layout engine.
  • Download GitHub repositories in-app and view arbitrary textual files.
  • Reset your atlas if you stumble into new languages online 🤓

If you’ve got an iPhone, iPad, or Mac device, I’d be happy to invite ya to the TestFlight to give the app a whirl where you’d like. Desktop builds and releases coming upon next coffee intake ritual.

IMG_20231210_210128118_HDR

📝 Shader Park is Kinda Neat - Untested via Rafał Pastuszak

🧵 conversation

I wrote a quick intro to Shader Park (a JS-like DSL for programming shaders) which gained some traction on similar forums:

📝 Shader Park is Kinda Neat - Untested

💻 The Unison™ Cloud Platform | Say hello to the future of cloud computing via Stew O'Connor

🧵 conversation

I've been working for Unison for the last three years. I got hired start and head up the Unison Cloud project, which today we are starting to open up to early adopters: unison.cloud The idea is that we want to make it as easy as possible to go from some function from HttpRequest -> HttpServer to a deployed service, but we also want to give a rich and modern distributed programming interface to that function. Hit me up if you want to get access to the Beta!

Say hello to the future of cloud computing. Deploy with a function call. Call services as easily as local functions, verified by the typechecker. Access typed storage as easily as in-memory data structures.

🏕️ Local-first software: You own your data, in spite of the cloud via Anton Podviaznikov

🧵 conversation

I'm currently working on a set of simple tools to make data from the apple products available on the traditional web.

  • montaigne.io - create website from apple notes
  • public.photos - publish photos online from apple photos. a bit on pause
  • kiwi.page - publish apple notes online. a bit on pause too

There are few interesting moments here for me:

  • liberate data from apple products
  • explore idea of local first software but in a different way. what is cool with this approach that data lives locally on your devices and then I just sync it to the web where it can be viewed and used by everyone

It's not super challenging programming wise, but interesting to think about in terms of how software can be written

Devlog Together

🎠 Lua Carousel via Kartik Agaram

🧵 conversation

💬 #share-your-work@2023-11-23 is starting to contribute to Rectangle World

Pushing objects around in a dozen lines of code

🎥 aabb collision

📝 Handling cascading collisions via Kartik Agaram

🧵 conversation

🎥 slide

🧮 App for drilling addition problems via Kartik Agaram

🧵 conversation

Yesterday I turned a couple of my unused kids apps into just scripts you could run on Lua Carousel.

git.sr.ht/~akkartik/sum-grid.love

git.sr.ht/~akkartik/spell-cards.love (exercising my phone's microphone for the first time)

Both qualified successes. I didn't uncover any bugs, but the programs were 250 and 350 lines long, which starts to feel too long for my implementation of scrollbars.

🎥 Advent of Code 2023 day 5 part1 using visual programming via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

I heard that day-5 part two was a curveball, so I really want to be able to implement it using my visual programming system... which failed so far. Using a brute force solution would mean that the program would run very very long. And my current "speed run" solution wouldn't suffice for this.

Part one actually provided a big challenge for my vps as well, running the program with the small test dataset can be seen in the video: youtu.be/td0QeePvfGQ . I've spend a lot of time adding more new node-types this weekend (like handling a while-loop and improved array handling) and making changes to the variable-nodes and expressions. Also the variable scoping (needed for local function variables) that I implemented had some flaws, so I fixed that as well. You can now define global and scoped variables. I've also made some simple variable visualizers that better show the data for data types like dictionary/array and grid.

My current vps solution works better than the flow-based vps that I was building last year. A big difference is that the data that is send from node to node is now just a single value. That value can still be of different types (number, string, array).. and special variable-nodes are needed to keep track of data. These variables also have a type like number, string, array, dictionary, grid. Often working with a single value is not enough and that's why these variables are needed. They can be referenced from within expressions. Also being able to run some flow-parts in parallel or sequentially helps a lot. This starts to feel much more like a regular 3rd gen programming language.

The UI is currently quite limited.. to be able to create a flow program efficiently it definitely needs a lot of work. Textual programming is much faster. I want to finish at least one of the advent of code puzzles where a grid is involved .. so today's puzzle (17) seems like a good fit. I'll probably work on that next weekend.

🧬 Re: Conway's game of life via Kartik Agaram

🧵 conversation

One nice reusable abstraction my LÖVE apps have all converged on is an immediate-mode button primitive. I draw all my buttons each frame along with all the callbacks they need, and a couple of framework-y lines of code in the mouse-press callback is all it takes to get them working. Last night I realized (while poking inside Re: Conway's game of life) that my hacky sliders in Lua Carousel's settings admit a similar abstraction (even better than the one there). The only additional complexity is it needs a couple more lines in the update callback that continually refresh the backing value as you drag the slider.

💬 Jimmy Miller

🧵 conversation

Finally starting to see a workflow come together in my editor. Here you can see Fibonacci at three different levels in the language I'm making. These functions live in three different files. Looking at them at once and comparing them isn't easily supported in any other editor I use. On the left is a simplistic symbol browser.

I'm super excited that I'm slowly getting to the point where I can do these kinds of things. Having different views of our codebases that we can switch between is something I've been wanting for years.

Screenshot 2023-12-17 at 1.31.15 PM.png

Thinking Together

💬 Prabhanshu Gupta

🧵 conversation

I'm making a system for working with loosely structured tables in spreadsheets. Tables/lists in sheets represent collections of things, however formulas and drag-filling works at an item-level (cell-level) abstraction. This causes a lot of problems – duplicated effort, hard to do lookups across tables, errors when new data is added. However, committing to a structure upfront (a SQL style table for example) has a big cost. An effective system would allow users to gradually introduce structure that works with whatever rich table they draw.

Right now I'm onto a language for pulling data from such rich tables. It works by manipulation of the ranges (rectangles) pointed to by Labels. Queries can be made by intersecting/unioning rectangles (in picture is a small example). What ideas/projects would you recommend looking at in this space? I've looked around a fair bit for "2D grammar" and "spatial programming language" but haven't had much luck.

image.png

💬 Ivan Reese

🧵 conversation

In linguistics, we have "denotation" and "connotation" as two forms of meaning. In programming, we have denotational semantics and operational semantics. Do we have connotational semantics? (If not — may we?)

Content

🚰 lovely tribute to Yahoo Pipes via Ivan Reese

🧵 conversation

A lovely tribute to Yahoo Pipes written by the inimitable Glenn Fleishman appeared on the Retool site today.

Every Pipes’ mapping was public; every Pipe could be copied and modified. “That was design principle one for us, and I think that had a lot to do with making it accessible to non-developers,” Sadri said. This openness that encouraged—really, required—knowledge-sharing embodied some of the internet’s best qualities that were on the verge of being lost at that time.

📝 The subjective experience of coding in different programming languages via Jimmy Miller

🧵 conversation

Different programming languages feel viscerally different, right? I can’t be the only one. It’s so embodied.

When I’m deep in multiple nested parentheses in a C-like language, even Python, I feel precarious, like I’m walking a high wire or balancing things in my hands and picking my way down steep stairs. It’s a relief to close the braces.

🐸 CellPond: Spatial programming without escape via Mattia Fregola

🧵 conversation

Youtube Thumbnail

As a Cellular Automata and design tools aficionado I loved this whole thing from Lu Wilson .

(saw some shared essence with Apparatus and Netlogo)

📝 ln.hixie.ch/?start=1700627373&count=1 via Andreas S

🧵 conversation

Hello 🙋‍♂️ future of coding.

I came across this some time ago but I still think it’s worthwhile sharing,

It showed for me how one the one hand the ethical decline of google went from “don’t be evil- to… what ever it is today that’s their guiding principle. But also more importantly how a change in company culture also reflected on technical innovation.

Present Company

💬 Nilesh Trivedi

🧵 conversation

Today, is there a way to build state-driven UI components (like React/Vue/Svelte) where some of the state, but not all, can be persisted periodically in the backend perhaps as an event log which would enable things like playback of past interactions? How would you go about creating something like this with usual tools like Javascript, REST and Postgresql? 🤔

Contents © 2024 Mariano Guerra - Powered by Nikola