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

🕰️ 2023-11-15 19:03:43

...

Duncan Cragg 2023-11-20 16:44:30

Part 2 is now online, covering the Blob (app functionality) and Big Tech in the same style.

📝 The Object Network for goldfish - Part 2

Solving the Blob and Big Tech app traps

Prabhanshu Gupta 2023-11-20 16:57:59

I’ve been researching spreadsheets and writing one for a couple months. I wrote a bit about the what and the why, give it a read!

blog.nilenso.com/blog/2023/11/10/spreadsheets-and-small-software

I wasn’t able to cover many specifics here – writing about the work seems like a lot more work than doing the actual work 😅. There’s a lot to cover and I’m hoping to get to it slowly. Until then please shoot thoughts and questions here, I’d love to answer.

Yoz Grahame 2023-11-20 17:05:06

writing about the work seems like a lot more work than doing the actual work

(cue deafening chorus of agreement from everyone else on this Slack)

Yoz Grahame 2023-11-20 17:06:59

This is a great summary and hits all the points I've been wondering about spreadsheets, with plenty more. I didn't know about EUSPRIG, thanks for that link!

Yoz Grahame 2023-11-20 17:11:42

Also, I strongly recommend looking at Coda if you haven't already. I've seen so many new spreadsheet tools, but Coda seems (to me, at least) way ahead in terms of both features and flexibility:

  • Much better formula language than Excel
  • Lovely UI for writing & debugging formulae
  • Tons of ways to build reactive documents and apps on top of the data
  • All the right kinds of product polish (to these eyes, anyway)

The main downside: closed source, alas.

📝 Coda: Your all-in-one collaborative workspace.

Coda brings teams and tools together for a more organized work day. Learn why 40,000+ teams use Coda to supercharge their work days and foster collaborative workflows.

Yoz Grahame 2023-11-20 17:22:34

There's another problem with Coda that seems inherent to the model of keeping data and computation together: forking is easy (copy the document) but there's no easy way to merge improvements from forks back into the original. It takes careful manual work to separate the data changes from the logic changes, unlike traditional code where the two are already separate. What makes them bleed together is the third circle in your Venn diagram: Presentation.

When I add text in a Coda document, I might consider it Data (to be ignored, or swapped with a placeholder) or UI (to be treated as part of the App Logic). Coda, at present, can't tell the difference.

I mention it here because the need to fork and then merge logic back to the original is likely to come up pretty quicky.

Personal Dynamic Media 2023-11-20 17:29:37

For those with an historical interest, I really enjoyed the spreadsheet chapter in Serious Play by Michael Schrage.

It had a fascinating analysis of what made spreadsheets successful and the impact they had in the 1980s on the financial and management worlds.

Yoz Grahame 2023-11-20 17:34:45

@Personal Dynamic Media Thanks for the tip, I'll check it out! I don't know much about the history of spreadsheets, but I get the impression that they were the original killer app : a single app that's so good, it sells the underlying platform. It sounds like accountants would watch a demo of VisiCalc recalculating an entire sheet in seconds and then just whip out their checkbook.

Prabhanshu Gupta 2023-11-20 17:39:19

@Yoz Grahame Coda has many really well done things but it falls in the something else bucket imho. I’d say the grid and free form tables are quintessential spreadsheet ingredients. I haven’t spent a lot of time on it but Airtable/SQL-style tables don’t suit general purpose math & programming well.

Prabhanshu Gupta 2023-11-20 17:50:36

It takes careful manual work to separate the data changes from the logic changes, unlike traditional code where the two are already separate.

One software analogue I’d apply here are creating different environments of an application – for ex. a staging/QA environment and a production environment for a web app. Keeping them in sync is made possible by versioning schema changes (of the code and the database) separately.

This does imply making the separation between schema and data explicit (i.e presentation and everything else). Many more things depend on this separation. The hard bit is to do it in a way that requires little upfront commitment from users.

Guyren Howe 2023-11-20 23:37:38

The spreadsheet is clearly the most successful end-user/non-developer programming “language” ever developed. Big fan.

A major development a couple years back that doesn’t get remotely the attention it deserves is that Microsoft added user-defined functions to Excel: support.microsoft.com/en-us/office/create-custom-functions-in-excel-2f06c10b-3622-40d6-a1b2-b6748ae8231f

📝 Create custom functions in Excel - Microsoft Support

Although Excel includes a multitude of built-in worksheet functions, chances are it doesn’t have a function for every type of calculation you perform. Custom functions, like macros, use the Visual Basic for Applications (VBA) programming language.

Mike Austin 2023-11-20 23:42:58

Kind of related, what is the state of Functional Reactive Programming these days? RxJS (frp-ish), Svelte $:, Elm had FRP then not, Pluto.js, R Reactor, etc. herbsusmann.com/reactor It feels like "reactive" systems should be just as ubiquitous as spreadsheets, but it doesn't feel that way.

Yoz Grahame 2023-11-21 00:00:57

@Mike Austin I don't know about Reactor, but Observable (which Reactor is based on) is still going strong.; the site's code is mostly proprietary but the reactive core is open. Svelte is also doing well, and the upcoming v5 has a bunch of syntax changes aimed at making Svelte more universally usable while substantially reducing weird gotchas.

📝 Introducing runes

Rethinking 'rethinking reactivity'

Yoz Grahame 2023-11-21 00:02:34

(And kudos to Rich Harris for this line in the above blog post: " Like every other framework, we've come to the realisation that Knockout was right all along." )

Yoz Grahame 2023-11-21 00:04:09

Oh, and I forgot about Solid, which seems to come up far more often in random web dev discussions than I would expect.

📝 SolidJS

Solid is a purely reactive library. It was designed from the ground up with a reactive core. It's influenced by reactive principles developed by previous libraries.

Arcade Wise 2023-11-21 16:54:35

Oh! have you read An App Can Be A Home-cooked Meal? feels similar :>

📝 An app can be a home-cooked meal

I made a messaging app for my family and my family only.

Lu Wilson 2023-11-21 22:09:38

Watch my new talk!

It's about a music-making node-based language tool for feeling.

ARROOST: NORMALISE SHARING SCRAPPY FIDDLES

youtu.be/cF2OF75ivZM

Lu Wilson 2023-11-22 13:23:23

If you wanna go down a rabbit hole, this is one of the influences for this talk: youtu.be/vX-dEq4UDYI

Marcelle Rusu (they/them) 2023-11-22 14:03:58

this makes me so happy, thanks for sharing

Tak Tran 2023-11-23 20:55:39

aw, gutted I missed it Lu Wilson, great work! 👏 Looks so fun! Yes to more nonsense machines! Thoroughly enjoying the rabbit hole 😂 One of the fun-est things I’ve made was a makey makey powered percussion instrument.

Maywa Denki also reminds of me of the old school instruments you find in musicalmuseum.co.uk, and mechanical contraptions of themadmuseum.co.uk

Mike Austin 2023-11-21 23:57:56

I've demoed my Kopi language and Rect-Desktop projects a few weeks ago. In my experience writing Kopi, I've always wanted to write a "How to Write a Programming Language" tutorial based on it, since the core language is simple and familiar (infix operators, assignment, anonymous functions, etc.). Here's the start of something (written in Markdown, presented using the React-Desktop Markdown app:

mike-austin.com/react-desktop/?app=markdown&args=/Let%27s%20Build%20a%20Language.md&width=1280&height=1440

It's in an early draft. I like presenting ideas very incrementally, and being able to see and even interact with each small change. You can modify any of input or parser code and see the result value change.

Kartik Agaram 2023-11-23 19:28:48

Lua Carousel: A lightweight programming environment for desktop and mobile devices that you can make changes to while it's running.

akkartik.itch.io/carousel

repo: git.sr.ht/~akkartik/carousel.love

Scott 2023-11-24 16:03:11

This is really cool Kartik Agaram! I also just read your Freewheeling presentation and really enjoyed it. Tons of stuff I've been thinking about lately too, especially the "that is easy to modify" "that you can modify" pieces 🙂

Scott 2023-11-24 16:53:07

Oddly enough, I've also shared akkartik.name/post/wart-layers to a few different people this last week

Daniel Garcia 2023-11-24 20:03:17

Followup on my ~_*Colorful types*_~ project. I’m trying to create a ~_*map*_~ for a codebase with different zoom levels.

I have been thinking about having 3 zoom levels:

  • Level 1: Only colors for both types & functions
  • Level 2: Colors and names for types, functions and parameters
  • Level 3: Shows the entire source file (maybe with some extra color sugar on top?)

Here are a couple of screenshots of level 1 & 2, and video of the WIP interface.

PS. Anyone have good recommendations of typescript codebases with a couple dozen source code files which I can use for testing?

Kartik Agaram 2023-11-24 20:34:41

Does it have to be any particular language? git.sr.ht/~akkartik/template-live-editor might be a good candidate if you can handle Lua.

Daniel Garcia 2023-11-24 20:46:44

Good question. It will work in any static language (I’m using tree-sitter for parsing), but I’m currently focusing only in typescript for now. I updated the post to mention it

Dany 2023-11-25 05:07:49

I find that there are usually way too many types to make the colors meaningful. Grouping the types (containers / records / unions..) doesn't really make that much sense. So you just end up using up all colors.. starving the UI of any usable colors. Maybe a better approach is being able to highlight a certain type, and that one is colored throughout the program.

Ivan Reese 2023-11-25 17:43:21

Yeah, this feels like a really promising beginning of an exploration. If you keep pulling the thread, tuning the design, trying different approaches, I bet it'll lead somewhere compelling

Daniel Garcia 2023-11-25 18:40:26

@Dany I agree that highlighting one type throughout the code base sounds useful for exploration. I’m still thinking of a good way to implement it.

What do you mean by “starving the UI of any usable colors”?

Dany 2023-11-26 05:36:31

You only have a limited number of distinguishable colors. If you use them all for types, you don't have any left for anything else. Such as: Error (red), Info (yellow?), Ok (green?), Link (blue?) etc. Maybe you even want to do some syntax highlight later on.

Slackbot 2023-11-26 07:22:31

This message was deleted.

Shalabh 2023-11-26 08:07:09

[November 18th, 2023 10:02 PM] ivanreese: Future of Coding • Episode 68 Philip Wadler • Propositions as Types 𒂶 https://futureofcoding.org/episodes/068

The subject of this episode’s paper — <https://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf|Propositions as Types> by <https://en.wikipedia.org/wiki/Philip_Wadler|Philip Wadler> — is one of those grand ideas that makes you want to go stargazing. To stare out into space and just disassociate from your body and become one with the heavens. Everything — life, space, time, existence — all of it is a joke! A cosmic ribbing delivered by the laws of the universe or some higher power or, perhaps, higher order. Humanity waited two thousand years, from the time of the ancient Greeks through until the 1930s, for a means to answer questions of calculability, when three suddenly arrived all at once: • General recursive functions by Gödel in 1934, with functions of sets of natural numbers. • Lambda calculus by Alonzo Church in 1936, with anonymous single-variable functions. • Turing machines by Alan Turing in 1937, with a process for evaluating symbols on a tape. Then it was discovered that these three models of computation were, in fact, perfectly equivalent. That any statement made in one could be made in the others. A striking coincidence, sure, but not <https://en.wikipedia.org/wiki/Multiple_discovery|without precedent>. But then it was quietly determined (in 1934, again in 1969, and finally published in 1980) that computation itself is in a direct correspondence with logic. That every proposition in a given logic corresponds with a type in a given programming language, every proof corresponds with a program, and the simplification of the proof corresponds with the evaluation of the program. The implications boggle the mind. How could this be so? Well, how could it be any other way? Why did it take so long to discover? What other discoveries like this are perched on the precipice of revelation? Philip Wadler is here to walk us through this bit of history, suggest answers to some of these questions, and point us in a direction to search for more. And we are here, dear listener, to level with you that a lot of this stuff is miserably hard to approach, presented with the symbols and language of formal logic that is so often inscrutable to outsiders. By walking you through Wadler’s paper (and the much more approachable <https://www.youtube.com/watch?v=IOiZatlZtGU|Strange Loop talk>), and tying it in with the cultural context of modern functional programming, we hope you’ll gain an appreciation for this remarkable, divine pun that sits beneath all of computation.

Personal Dynamic Media 2023-11-26 09:48:06

Thanks, I'm not sure how I missed it

Duncan Cragg 2023-11-26 11:31:22

Oh - I was coming back to have a think about all those excellent questions, @Personal Dynamic Media!!