Very cool idea. Issues I noticed (without intending to discourage this sort of brainstorming in any way):<p>1. You can either define a function scattered across multiple cells in a single row, or gathered all in one cell. But as is, it doesn't look like you can define a function taking arguments in the scattered way.<p>2. The way the row evaluation works, each cell from left to right shares a stack. But the cells only show the top of the stack. The rest stays hidden. This feels like a departure from a key tenet of spreadsheets: to show all the data.<p>But this really sparked lots of ideas for me, and even got me to make a 5.5 minute video riffing on it: <a href="https://archive.org/details/akkartik-2020-06-17-LoGlo" rel="nofollow">https://archive.org/details/akkartik-2020-06-17-LoGlo</a>
Hmm, so cell formulas, custom formula implementations, and presumably named cell ranges, all use the same language, a concatenative language? And all are written in cells rather than (the latter two) as auxiliary data?<p>I wonder, for formulas, if word stack effects are known or inferred, might the language simply be syntactic sugar? So `A:| 3 | 5 | negate | plus |` desugars as `| 3 | 5 | =negate(A2) | =plus(A1,A3) |`. Because the stack effects of negate and plus are known to be x-x and xx-x respectively. Factor is an example of a concatenative language with explicit stack effects. It does sacrifice allowing variadic words.<p>Might a range of code cells serve as a code block? In a concatenative language, evaluating a word simply pushes its definition on the stack. So if `A:| 1 | + |` and `B:| 2 push(A1:A2) |` then B1 would expand as `2 1 +`. So perhaps named ranges and custom formula definition are then overlapping concepts?<p>Meta: I find it curious that this post, variously submitted a day ago, and again at 1/2 and 1/4 day ago, were all at 1 or 2 points with no comments, and then this, the first submitted, surged to popularity. I'm glad it "caught".
Like. I use a (very primitive) Forth based language for laser machining every day. Despite how poor the implementation is (it was hobbled together over many years by novice programmers) it is amazingly productive. RPNs don't get enough love.
This is awesome, and as the title says, very left field. I wonder what visuals would be produced if you could specify that a given parameter linearly tracks across a parameter space. Some crazy animation?
I developed but never completed a similar idea for custom business rules:<p>* each spreadsheet defined one function<p>* one sheet for inputs, each input labeled (i.e. function parameters)<p>* one sheet for outputs, each output labelled (i.e. function results)<p>* sheets for test data for inputs and expected output (examples of correct function parameters and results)<p>* cell values could be result tables from SQL statements, with cell formulas that could act on tables (where, join, etc) i.e. a single cell could contain a table value<p>* the idea was to allow consultants to naturally design business rules in a functional manner, and intuitively see how values flowed through a calculation. Debugging is natural, and test driven design is built in to the design. Business rules are often driven by examples in my experience.<p>* Because all calculations are a graph, I believed that the results of complex business rules could be computed efficiently as updates occur.<p>There was more to it of course.
I'm really looking forward to seeing this develop. I think we're far from having too many strategies for generating parametric drawings.<p>I liken this to OpenSCAD, which is really fun in a similar way.
<i>It's currently focused on the narrow domain of producing SVG output to feed to a CNC machine or laser cutter.</i><p>Having generated files for CNC mills, laser cutters, waterjets, and a plasma cutter, drawing by writing commands seems like the wrong way to do the job. Everybody uses graphical tools for that. There was once a programming language for machine tools called APT, where, amusingly, GOTO moved the tool. Nobody does that any more. Maybe for CNC punching or drill lists, but not for anything with non-trivial edges and surfaces.<p>The good graphical software for this is expensive, though. Vectrix has a whole line of software - Cut2D, Cut2D Pro, VCarve, VCarve Pro, and Aspire, starting from $150 and each more expensive than the last. They're really all the same program.<p>You can also do this stuff with Autodesk Inventor, Fusion 360, SolidWorks, or other high-end CAD programs, but those are overkill for a laser cutter. On the free side, there's TinkerCAD and FreeCAD, which can do the job and suffer from the usual problems of open source GUI programs.
Have you seen Bret Victor’s substroke? Loglo really reminds me of this: <a href="http://worrydream.com/substroke/" rel="nofollow">http://worrydream.com/substroke/</a>
As someone who spends at least a few hours every day working with vectors that are then output to a laser cutter or a CNC, I'm having a hard time working out what exact problem this solves.<p>To my - very likely entirely ignorant - eye, it seems to hyper-complicate something much easier and quicker done with a mouse (etc) and a GUI.<p>I'm sure I'm just a bit stupid.
Maybe something like the eggbot extensions for inkscape would be a good idea for this <a href="https://wiki.evilmadscientist.com/The_Eggbot_Extensions" rel="nofollow">https://wiki.evilmadscientist.com/The_Eggbot_Extensions</a>
This looks interesting. Here's a shameless plug if somebody needs tracing:<p>ImageTracer is a simple raster image tracer and vectorizer that outputs SVG, 100% free, Public Domain.<p>Available in JavaScript (works both in the browser and with Node.js), "desktop" Java and "Android" Java:<p><a href="https://github.com/jankovicsandras/imagetracerjs" rel="nofollow">https://github.com/jankovicsandras/imagetracerjs</a><p><a href="https://github.com/jankovicsandras/imagetracerjava" rel="nofollow">https://github.com/jankovicsandras/imagetracerjava</a><p><a href="https://github.com/jankovicsandras/imagetracerandroid" rel="nofollow">https://github.com/jankovicsandras/imagetracerandroid</a>
Submitted title was "Loglo: A very experimental programming environment by Avi Bryant", which was a good choice because it was representative language from the article. And we love and admire Avi. But I'm wondering what title might appeal most to the readers here, and thought maybe a description of its juiciest elements would fare even better. We shall see.