✉️ Not subscribed yet? Subscribe to the Newsletter

Future of Coding Weekly 2024/04 Week 1

2024-03-31 23:06

📑 algorithmicpattern.org λ Functions Everywhere, Only Once 🎨 Infinite Canvas Gallery

Our Work

📑 algorithmicpattern.org via Alex McLean

🧵 conversation

I belatedly updated the algorithmic pattern blog with some recent activities algorithmicpattern.org

λ Functions Everywhere, Only Once: Writing Functions for the Everywhere Computer – Fission via Zeeshan Lakhani

🧵 conversation

A co-worker and I published a post / overview on some stuff we’re working on. It’s about writing functions, compiling them to Wasm components, and combining them into a multi-language (Rust, Python, Javascript) workflow to run on the Everywhere Computer (a platform we’ve developed at Fission): fission.codes/blog/functions-everywhere-only-once.

Writing functions for the Everywhere Computer in Rust, JavaScript, and Python, and compiling to Wasm components with WIT and WASI to run everywhere

Devlog Together

💬 Mariano Guerra

🧵 conversation

Absolute/Relative Date Range UI

gd-dyndaterange.gif

progressive disclosure of complexity

click +/- to show/hide one extra offset field

ctrl+click to show/hide all

gd-range-more-less.gif

Thinking Together

🎥 The Better Parts. Douglas Crockford. JS Fest 2018 via Paul Tarvydas

🧵 conversation

Youtube Thumbnail

At about 54:20+, Crockford ends up saying that types cause bugs. What are examples of those kinds of bugs?

💬 Justin Janes

🧵 conversation

Does anyone have any solid papers on interactions with operating systems using primarily hand gestures from cameras and projectors? I know this is very dynamicland but i’m kinda tired of waiting for a system i can let the kids play with on the carpet.

🐢 scratch.mit.edu/projects/605658 via William Taysom

🧵 conversation

My sister asked whether her middle-school son should pick the choice of a block programming language (like Scratch), JavaScript, or C# for a class he's in. I claimed that he'll learn the same fundamentals with blocks minus the frustration, tedium, tea ceremony, and incantations associated with the others. To prove that the block program has the real creativity and that moving to the others is practically automatable, I took may favorite Scratch program and had Chat translate it into JavaScript and C# chat.openai.com/share/02215935-c0b8-4fc9-9bf9-94f0b3fab613. The results seemed promising. Chat even made helpful observations:

Translating the same Scratch program to C# requires a different approach because C# is often used in desktop applications, and there's no direct equivalent of the Canvas API like in web technologies. However, you can use Windows Forms or WPF (Windows Presentation Foundation) for graphical applications in C#. Here, I'll provide an example using Windows Forms to create a simple drawing application that mimics the Scratch program's behavior.

If you check my conversation, you'll see I start asking what a "partial class" is having never heard the term. Chat parroted:

Using partial classes in this way provides flexibility. You can start with all your code in one file for simplicity. Then, if the class grows or you decide to use the designer, you can easily refactor the designer-generated code into its own file without changing the class's functionality. This approach keeps your custom code separate from the auto-generated code, making it easier to read and maintain.

I explained that every language, every tool has many such conventions. You learn the ones reverent to whatever you're doing right now, but learning them all is impossible. Instead the real skill is knowing that you don't know and being able to find out quickly. We're lucky that a these things are obscure, come up often, and are discussed on the Web. Thus LLMs are especially good at helping with dumb programming problems.

So why use the established languages besides Chat knowing them well? I thought of three reasons:

  • Expressivity — Blocks will get a beginner pretty far, but you'll find the others have constructs that helpful for saying things that would be very hard with blocks. You won't appreciate scratch until you feel the itch.
  • Causal Powers — The block system will let you do things in class you'll learn core ideas, but the blocks themselves won't work everywhere. JavaScript, on the other hand, works all over on the web, and C# has its own ecosystem. Often there's bridging, but also one or other language will be the most natural one for certain kinds of work.
  • Scale — With big and medium sized programs being done with text, editors for wrangling it, and version control for keeping track of it exist. They can we weirdly powerful and janky. But you're liable to start having a hard time keeping track of blocks when it takes a dozen or more screens to fit them all.

Content

📝 Explorative Programming via Jeffrey Tao

🧵 conversation

🐚📜 Josh Horowitz (@qualmist@assemblag.es) via Ivan Reese

🧵 conversation

I've heard some tell of what Joshua Horowitz is up to, and it's exciting. He's set his sights on fixing some of the issues with shell scripting — and is looking for shell script users to interview:

📝 Josh Horowitz (@qualmist@assemblag.es)

Do you use shell scripts? :shell: :scroll: I'm conducting a study of how new tools might help. I'd love to talk with you about your shell experiences, and to run our new shell-scripting prototype by you. Interested? Heck yeah you are, here's a form (Novices & experts plz!)

🎨 Infinite Canvas app gallery via Kartik Agaram

🧵 conversation

A new category: infinite canvas apps

infinitecanvas.tools/gallery

jsoncanvas.org

canvasprotocol.org

Explore infinite canvas tools that work the way we think


👨🏽‍💻 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/03 Week 4

2024-03-26 04:35

🎼 Strudel REPL 🎙️ a podcast about Hest 🕹️ Playing with Code: Programming-Adjacent Games

Our Work

🕹️ Playing with Code: Programming-Adjacent Games via Mariano Guerra

🧵 conversation

I collected and summarized the answers to my question about programming-adjacent games

📄 Formula for generating distinct colors via Fredrik

🧵 conversation

For those situations where there's a need to automatically generate a unique color for each item in a set, I've figured out a formula that yields a good distribution based on the oklch color space. The attached document has some pretty infographics.

You can also see the source code of the document in Typst. Typst is already the future of programming.

📄 Formula for generating distinct colors

💬 Alex McLean

🧵 conversation

A tangible programming interface inspired by Andean khipu that we've been working on..

image.png

💻 Slate - A Playground for Ideas via Mohit Karekar

🧵 conversation

I recently thought about combining natural language prompts in code notebooks interface because it seemed like a great use case to me. While working with data, a mixture of low-level capability of writing code and a high-level capability to write transformations or visualization instructions in natural language can be a great advantage. You can code when you want to, and completely skip and offload to an LLM by writing natural language instructions! The notebook executes code and prompts in a single context. Here's something you can try that implements this idea: try-slate.com

Also wrote some thoughts in a post here and a short video demo here.

Similar to traditional code notebooks like Jupyter Notebooks, but with a seamless integration with large-language models. Code when you want, skip when you don't. Export to code for portability.

Devlog Together

💬 Mariano Guerra

🧵 conversation

Playing with UI filter predicates and optional values

gd-preds.gif

🫰 snap.love: a graph drawing tool via Kartik Agaram

🧵 conversation

Of all the apps I've built, perhaps my favorite is git.sr.ht/~akkartik/snap.love, my box and line drawing tool. I use it constantly -- including for work. I have a terrible short term memory, and now I make quick mindmaps for every little situation where a full-screen IDE on a huge monitor is too tiny to show all the parts of the codebase I care about right now.

I seldom mess with it, but today I modified it to show gridlines any time I drag things around. Should lead to neater maps!

🎥 snap gridlines

🎙️ a podcast about Hest recently via Ivan Reese

🧵 conversation

I listened to a podcast about Hest recently (that I wasn't even on!), and have been thinking about taking another crack at it. I'm in a really different situation now, work/life wise, and am less inhibited by idealistic ambitions (like a bunch of NIH making me write my own 3D engine, or an obsession with conceptual purity forcing me to make everything bootstrapped). Now the biggest blocker is that I only have scraps of free time, and I've been using all of it to make music. Oh, how I miss being 20 and free from obligation!

🎥 Simple gradient using new form field control for arrays of objects via Maikel van de Lisdonk

🧵 conversation

Youtube Thumbnail

I've made a new form field control for arrays of objects. The properties that go into the object can be specified and in this example I've used it to implement a simple gradient color node. This example can be viewed at demo.codeflowcanvas.io/gl and then select "Moving circle" from the examples drop-down (I just noticed a weird bug on iOS.. so please just try on desktop).

Or it can be seen in action here .. nothing fancy at the moment, but I hope this allows for more fancy stuff in the near future.

Thinking Together

📝 horrors of manually bikeshedded plain-text languages via Fredrik

🧵 conversation

Is there any wisdom on how to best lay out code in a visual code browser ?

In my experience, code can be layed out either more horizontally on long lines or more vertically on short lines. This is controlled by setting a criterion for how many levels of nesting there can be before a node switches to a multiline layout. Long lines use space efficiently but tend to get hard to read. Short lines are easier to read, as tokens of similar significance line up in columns, but tend to take up much vertical space while leaving most of the horizontal space unused, as the average line is just one key and one value.

Shall I accept that code gets very vertical, and use the free horizontal space to add multilevel navigation panels, or is there a third option that is more horizontal while still easy to read? I can go really fancy and add tables and multiple columns, since I have full control over the layout function, but not all code is regular enough to fit a tabular format, and I cannot require the person editing the code to manually bikeshed it by editing whitespace or dragging around visual nodes. I've seen the horrors of manually bikeshedded plain-text languages and the horrors of node-based languages where the programmer makes a simple one node change and then has to drag all the nodes around so they line up. Are there any examples of interesting solutions to look at?

Here's how I mean a more horizontal layout:

[redacted]

Here's how I mean a more vertical layout:

[redacted]

In the more horizontal layout, I can barely parse the surprise structure at a glance, and I can barely see if I've made a mistake in editing. It takes a lot less screen space though.

💬 Jacob Zimmerman

🧵 conversation

I want to build the backend of an as-bidirectional-as-possible spreadsheet/dataflow, does anyone have any favorite techniques?

I’d like to prefer a dataflow style solution over a constraint solver. I’ve been reading up on why this problem feels hard and its similarity to the “view update problem” in databases, I’m curious if there’s a widely accepted solution that I’m missing.

📑 Future of Coding or Programming: Project Comparison via Duncan Cragg

🧵 conversation

Hi folks, I've been fiddling around with the projects spreadsheet here: Future of Coding or Programming: Project Comparison

and I thought I'd take this opportunity to ask you all to ensure your entries are complete and up-to-date.

New users welcome: just add your project! Note: your project should ideally be at least primarily open source.

📝 scattered-thoughts.net/writing/miscellaneous-ideas via Jamie Brandon

🧵 conversation

Pondering some FoC-adjacent ideas, with the goal of finding a financially sustainable project that can fund more tentative adjacent work - scattered-thoughts.net/writing/miscellaneous-ideas / scattered-thoughts.net/writing/how-to-trade-software-for-small-money.

Less FoC-related, I mentioned in the bottom of that post that I'd love to help someone pick up the streaming system testing work that I started in scattered-thoughts.net/writing/internal-consistency-in-streaming-systems. It will be a real slog getting momentum, but there's potential to really raise the (incredibly low) bar for reliability and understand-ability in that niche.

Content

📝 Who will build new search engines for new personal AI agents? via Stefan Lesser

🧵 conversation

Some speculation by @Matt Webb about the not so far out future of AI agents and how we can/need to prepare for it.

In the other corner, some judgy comments about AI’s Looming Reputation Crisis (scroll down to the middle to find that bit).

I read both this morning and I know these are different use cases, however they beautifully cover the whole optimism/pessimism spectrum on AI.

Where do people here fall on that spectrum? Are there use cases that are obviously good/bad, or does that depend on… well… what? And are we going to outsource most of our lives soon to AI assistants while simultaneously drowning in mediocre generated bullsh*t trying to scam us?

Gosh, I miss the time of the early internet when I was excited about everything tech. Somehow I can’t find back into that mindset these days. Can someone convince me that the future is going to be universally great, like it used to be 20 years ago?

📝 Informal Organizations: Iterating on Cooperative Ownership via Andreas S

🧵 conversation

In the spirit of our #thinking-together capitalism thread. I found informal.systems/2020/09/21/informal-owners i think this is an interesting example of how to change the bigger structure- capitalism (this time I spelled it out Stefan Lesser 😅 ) by changing smaller structures I.e. companies to cooperatives.

📝 Informal Organizations: Iterating on Cooperative Ownership

Our mission at Informal Systems is not just about distributed systems, it's also about the organizations that grow along with them. Our vision is an open-source ecosystem of cooperatively owned and governed distributed organizations running on reliable distributed systems. To achieve this vision, we begin with ourselves, adopting a democratic structure that aims to rebalance the power dynamics between capital and labour towards something more sustainable and non-extractive; something that nurtures long term employment and real wealth creation through R&D, entrepreneurship, and innovation; something more like a Zebra than a Unicorn.

Music

🎼 Strudel REPL via Alex McLean

🧵 conversation

Strudel now has inline visualisation strudel.cc/?dbk9t_AYAIc8

📝 Strudel REPL

Strudel is a music live coding environment for the browser, porting the TidalCycles pattern language to JavaScript.


👨🏽‍💻 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/03 Week 3

2024-03-18 14:09

🚀 codeflowcanvas.io 🎥 Collective Problem Solving in Music, Science, Art... 🦠 Demon horde sort

Our Work

🚀 codeflowcanvas.io via Maikel van de Lisdonk

🧵 conversation

Yes, the time has finally come! I'll share a link to my visual programming project online! I've been mainly showing some video's on the devlog channel about the project.

Warning upfront: Although I've been working on this for quite some time (I even started from the ground up last year after working on my previous visual programming project for multiple years).. there's still a lot of work to be done and bugs to be fixed. The UI/UX is far from perfect but it is demo-able enough I think. However, it's still just in "demo-stage" and not usable by other projects (I haven't build any npm packages for integrating or vs-code extension for example).

My goal is to make a generic visual programming system (VPS) with which domain or application specific vpl's can be made. For now I am implementing 2 vpl's on top of the current base: a flow-based-programming inspired system and a "visual shader-toy".

Since the tool is an infinite canvas, you can zoom and drag the canvas using mouse/wheel/touchpad. I've spend some time getting touchscreen support, but more work definitely needs to be done there.

When you open up one of the editors, you can use the dropdown in the top-menu to load an example flow.

Without further ado, here's the link: codeflowcanvas.io : there are 2 demo playgrounds in which you can play around.

I'll post some more details in the 🧵.

Thanks for some feedback!

Devlog Together

💬 Kartik Agaram

🧵 conversation

A little thing like an 'edit' button introduces cascading issues:

  • LÖVE (in combination with mobile restrictions) won't let me modify code files in place. I have to overlay my changes in a new location.
  • But now I can't pick up any upgrades to my app. Upgrades modify code files in place, but any overlay persists (otherwise you'd completely lose your changes after upgrading).
  • But hey I have a programmable editor here! I'll just create a new file called 'scratch' with a one-liner to blow away the overlay. (With my app user's hat on, I know in this case my changes are minor in a way that I don't with my app developer's hat on.)
  • (A few hours later.) Wait, now none of my changes are having any effect. And they're completely blown away when I go back to the code.
  • 🤦 Oh it's that 'scratch' file still hanging around. So it needs to be a 2-liner. I have to make any changes I want to the file system -- and then delete 'scratch' to make this a one-time operation.
  • I could try to create a screen of helpers for this, along with a comment that says, "insert file system operations here" after which is a delete of 'scratch'.

In this way I find myself playing meta-Sokoban.. 🙄

Tl;dr - the 'edit' button isn't really usable yet.

I really don't want to go down the road of building a compare and merge flow 🙄

💬 Kartik Agaram

🧵 conversation

Simple shortest-path routing to reduce some of the drudgery in Sokoban. Integrated with undo.

Next up: routing while pushing a single crate without moving any other crates. That feels more complicated than this glorified breadth-first search. In particular, I'm not yet sure how to detect cycles. Moving a crate can involve being in the same place over and over again. I think I need to hash the player's location in combination with the crate's location 🤔

🎥 sokoban empty path

💬 Kartik Agaram

🧵 conversation

My solver can now push a single crate to a destination without moving any other crates. But I feel ambivalent about this. Devlog in 🧵

🎥 sokoban solver

Thinking Together

💬 Stephen De Gabrielle

🧵 conversation

Does a ~parametric IDE~ exist?

I’m not sure if this makes sense, but I’m thinking similar to Parametric CAD tools(&sketchpad), but for code?

Maybe making use of type annotations, contracts, interfaces, etc. at ~edit-time~ (instead waiting for ~compile-time~ or ~run-time~ ).

💬 Kongwei Ying

🧵 conversation

Another concept I've been ideating about is how to bring Literate Programming, by Donald Knuth, into my daily work, which involves modern tools and stacks like VSCode and Node.js. I believe inline, rich text snippets which are integrated with some kind of personal knowledge management system is the way to go. This way, instead of having comments like this:

// TODO: Refactor this to use the revised approach

It instead would look like using Notion or Obsidian inside VSCode. So above a function, would be a small window into a single page that describes a single function. You can do anything here, like linking references that are relevant to the design of the function. Or you could even have a lengthy design document that explains why a function was written a certain way. Going even further, you could have a page which describes the evolution of a function over time, why at the beginning it was written a certain way, why changes had to be made, and why it looks the way it looks right now.

And added bonus of this approach is that now it's possible to have a single source of truth for docs and your code. So rather than maintaining a separate Docusaurus that has to be updated to sync it with evolution in code, you can just maintain documentation in line. And then to publish developer docs online, you merely just take all the little snippets above each function and then aggregate them onto a single page.

Basically, this approach is powerful because instead of 1D strings of text, now you can have the power of rich text in your code. Including diagrams, and even embedding other programs through would be possible. And when your code needs to be compiled, all these rich text snippets are simply removed.

Content

📝 Accessibility Has Failed: Try Generative UI = Individualized UX via Dave Liepmann

🧵 conversation

Jakob Nielsen asserts that accessibility has failed to serve disabled users because of a mistaken focus on standards. This approach is unable to address the wide variety of disabilities, and because it is by definition a derivative of a GUI, it is doomed to provide a second-class experience to e.g. blind users. He points out differing needs by older and less literate users, and proposes generative UI as a promising solution.

I was skeptical of the headline and tweet-length summaries. There has been not-insignificant backlash. The full article leaves me still skeptical but certainly willing to see where the idea of bespoke-to-one's-needs UIs could take us.

🎼 cmajor.dev via Christopher Shank

🧵 conversation

You’ve heard of C, C++, C#, objective-C… well, Cmajor is a C-family language designed specifically for writing DSP signal processing code.

They have a JIT engine, but it also compiles to WASM so it can run on the web. This means old synths can be ported to run on the web!

cmajor.dev/docs/Examples/Pro54

🎥 RubyConf 2019 - Keynote - Collective Problem Solving in Music, Science, Art... by Jessica Kerr via Oleksandr Kryvonos

🧵 conversation

Youtube Thumbnail

this is a great inspirational talk about sharing ideas

📝 An overdue status update on Darklang via Jeffrey Tao

🧵 conversation

Haven't checked in on Dark in a few years but it seems they're dropped the custom editing environment, among other changes blog.darklang.com/an-overdue-status-update

We've been working hard at Darklang for the past year, but haven't been very vocal about what we've been up to.

Here’s the “Darklang” that’s been live for years:

Darklang – the live version, which we're now calling Darklang classic – is a developer tool composed of a few interconnected

📝 CP 2024 - Choreographic Programming 2024 - PLDI 2024 via Ivan Reese

🧵 conversation

A call for talks for the first ever workshop on Choreographic Programming at PLDI this summer. Deadline next Friday.

Choreographies are coordination plans for concurrent and distributed systems. A choreography defines the roles of the involved participants and how they are supposed to work together. In the emerging paradigm of choreographic programming (CP), choreographies are programs that can be compiled to executable implementations. CP originated primarily in the context of process calculi, with preliminary work done to establish its foundations and experiment with implementations. Recently, several proposals have shown that one can adapt CP to work in synergy with mainstream programming paradigms ...

📝 ‹Programming› 2024 - Arts - ‹Programming› 2024 via Alex McLean

🧵 conversation

I've only just noticed that there is an arts track at the ongoing conference this year! awesome ‹Programming› 2024 - Arts - ‹Programming› 2024

Step into a world where lines of code dance with strokes of creativity! At this year’s edition of the Programming conference, we are opening an Arts track to engage with the idea that art can inform computational practices and their presence in the world. With this track we invite participants of the conference to join a series of presentations and meet with the artists. We hope the Arts track will inspire the programming community to propose artistic projects for future editions. Events include: KhipuKoding, a session with live coding by Paola Torres Nunez del Prado; Programming a ...

🦠🎥 T2 Matrix Brain Challenge T-2 And Counting - T2sday 3148 via Lu Wilson

🧵 conversation

Youtube Thumbnail

Update from Dave Ackley (whose essay we talked about on the last episode)

A large part of this video is about some initial work on making the 'demon horde sort' better, which is his proposed robust-first way of doing number sorting

📝 If What We Made Were Real via Christopher Shank

🧵 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” by Basman (2020)

🤖

📝 Cognition emerges from stealth to launch AI software engineer Devin via Greg Bylenok

🧵 conversation

Is the future of coding just not coding?

In the SWE-bench test, Devin was able to correctly resolve 13.86% of GitHub issues without any assistance, performing far better than GPT-4.


👨🏽‍💻 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

Contents © 2024 Mariano Guerra - Powered by Nikola