Whoa, that catalog of oscillators is beautiful! Thanks for taking the time to arrange it with your son and for sharing it with us. Can definitely see the appeal of having a giant wall tapestry of it. :D
Seeing all 43 oscillators all at once took my breath away because it reminded me so much of some prime-factor flowers I've been playing with for years. Perhaps you or your son might find them interesting: https://twitter.com/elzr/status/1733007772181233681
I agree entirely with your prediction: spreadsheet programming is different from interactive "control flow" programming... and it should remain different! The spreadsheet model of programming is easier to grasp and incredibly flexible. I think the key is that spreadsheets are time-less & space-full, I hint at this in the talk & see also my root comment for more elaboration on this.
What's exciting to me about lambdas is that they can be used to enhance this time-less, space-based style, like in the examples I elaborate around 18m47s: the habit tracker, timesheets & a spatialized Game of Life.
I imagine/hope that in a few years we will have a culture of casually importing magical custom functions that will become polished through mass use and eventually become standard. These native functions are much safer than macros so you can be as casual with them as copy-pasting formulas. There's no permissions fuss to wade through, as there is for AppScript. (I even think there will soon be libraries of custom functions, I might even publish one myself in a couple of months.)
* * *
As to your question, I interpret it as: why are lambdas coming inside spreadsheets instead of spreadsheets becoming incorporated into programming languages, right?
I have come across many extensions of spreadsheets over the years. Spreadsheets are so ubiquitous there's many kinds of wrappers for them, many hybrids. Since the birth of spreadsheets in 1979 there has been a flood of drastic alternatives & variations that have been tried. The most famous variant so far has been pivot tables, which has become a useful, somewhat infamously intimidating feature of spreadsheets but not the revolution once expected. One of the more interesting extensions is TreeSheets https://strlen.com/treesheets/ But nothing yet has beaten the simplicity & power of a flexible grid sprinkled with formulas & references through the value rule.
To me the most important thing I learned researching this talk was that it crystallized in my mind that spreadsheets are not just a table, not just a grid. They have a key constraint, they intertwine code and data through the value rule that Kay pointed out 5 years after dynamic spreadsheets were invented (see http://worrydream.com/refs/Kay%20-%20Computer%20Software%20-... ).
So my answer to your question is that spreadsheets have been incorporated into programming languages, they have long grown scripting languages like VBA or Google AppScript. Those are massively useful for top-down extensions of the functionality of spreadsheets.
But the other direction, lambdas in spreadsheets, has been much slower & difficult, yet it offers the promise of a more bottom-up revolution in usage. It has taken us decades to evolve the model of spreadsheets towards lambdas in a way that works well with their true nature and to the ton of other features & culture they've grown over the years. (My personal favorite feature, btw, is the incredibly flexible formatting we can give to a sheet, specially conditional formatting.) As mentioned in the talk, spilled arrays are a recent, crucial step to make lambdas possible & useful.
I believe Alan drew his observation of the 'value rule' from work on ASP, Analytical Spreadsheet Package - a part of Analyst, done in the Xerox Special Information Systems Group. This system is also interesting because it used blocks (aka. closures - the object version of lambdas) as the formulas for cells as pointed out by Kurt Piersol's article in the OOPSLA '86 proceedings, https://dl.acm.org/doi/10.1145/28697.28737 .
Spreadsheet rules (or formulas) in The Analyst are kept as Smalltalk blocks. A block is a common Smaiitalk object class which allows a section of compiled code to be kept as an object. They can be passed as arguments and stored as variables. Obviously, they are an ideal choice for rule storage and execution, since they allow the rules to be directly executed by Smalltslk at compiled speeds.
The description of ASP (and the Analyst package from which it was split out as a separate product) can be found at http://www.bitsavers.org/pdf/xerox/xsis/XSIS_Smalltalk_Produ... . Of interest is the example of dropping a bitmap image into a cell and having an adjacent cell display the next generation of the game-of-life run on that initial cell. (That as opposed to having each spreadsheet cell in a region represent a cell in a game-of-life automata.)
As to homoiconicity, I wouldn't be surprised if Alan didn't at some point have a Smalltalk project window running full screen that was imbedded in a cell of a spreadsheet which was running in a Smalltalk project window within the Smalltalk environment. It's the kind of thing I saw him demonstrate as an aside during presentations as he popped out of the full screen project window which the audience had assumed was the root Smalltalk environment rather than a nested environment. What is a cell or window but a live code object running in the language environment after all?
> As to your question, I interpret it as: why are lambdas coming inside spreadsheets instead of spreadsheets becoming incorporated into programming languages, right?
Let me extend this. The power of the spreadsheet programming model (and work environment) is indisputable. In recent years, we've seen many interesting attempts to bring that power directly into programming tools (examples in the Clojure space: witheve, javelin, hyperfiddle; I even think witheve's first iteration was in fact a programmable spreadsheet, but I can't find it anymore). Conceptually these tools have the potential to converge to the same sweet spot, being a merge of 2 similar tenets. But the programming-driven side is converging far more slowly.
I'm interested in this because I think most programming environments these days are still too serial, and there's a lot to gain from moving into a more 2D -- spreadsheet like -- programming environment. It seems obvious, but still far away. It looks like spreadsheets will reach the sweet spot faster. But I like navigating code in Emacs more than I do jumping around cells and hitting F2 to edit.
Have you checked the interface that Google Sheets came up for custom functions? It's in the menu of every spreadsheet in Data > Named Functions. It's pretty good and encourages not only extensive naming but documentation & examples of the function and each argument. These descriptions are then displayed piece-meal as you edit a formula, just like native documentation.
I also love good names! I hated not being able to have names in formulas and the name part of Named Functions is alone a big quality of live improvement for me.
As to lambdas, perhaps calling them anonymous functions is giving the wrong impression here. What lambdas really are is a simple, native way to create a context with local names. They can be a great boon to clarity through naming!
Spreadsheets have been historically so limited that programmers have resorted to hacky ways to have names/comments. The N function for numerical values is used sometimes for this since N of a string defaults to 0: so N("Name/comment") = 0 and can be added to a formula without changing it.
As to the cultural practice of ultra-short, likely meaningless variable names, like single letters. I do agree it's a "mathy" thing and can quickly descend into maddening opaqueness. The trick though is that sometimes it's very useful to have as compact a symbolic representation as you can manage (such a process of abbreviation gave us algebra!). Naming things is hard, perhaps one of the truly hard things in thinking/programming as the saying goes :)
Hi all, I'm Eli Parra & I gave this talk at ReClojure 2022 in December 3, 2022. Very happy to see this here in HN!
A bit of personal background of the talk: my work over the years has involved making internal tools for fast-moving, small organizations and that's how I fell in love with spreadsheets. They are the best canvas I know of to whip up custom, user-friendly interfaces in a couple of hours. These prototypes often then go on to be intensely used for months and even years with organic growth & minimal maintenance.
Spreadsheets are often seen with condescension by technical people & they've grown a heavy patina of drudgery over the decades. But to me they represent creative freedom & the easiest interface to computation we've yet found, so successful it's nearly invisible. I gave this talk because I'm starting to find answers to what makes them so successful and have ideas of how they might evolve.
My key points in the talk:
* Spreadsheets matter. Used by billions of people, they're the main way to go beyond being a point-and-click user and start programming. I frame spreadsheets as level 2 in a scale for interfaces that Gordon Brander imagines in this essay: https://subconscious.substack.com/p/a-kardashev-scale-for-in...
* Spreadsheets are changing. In 2022 Excel & Google Sheet got lambdas and reached level 3 in Brander's scale. The talk is a stab at what a level-4 spreadsheet might be, how you could translate QUOTE & EVAL into spreadsheets.
* Spreadsheets have an essence, what Alan Kay described as "the value rule" back in 1984: a cell can read from any other but can only write to itself. This is the founding, simplifying constraint of spreadsheets, akin to how structured programming outlawed go-to’s in code.
* Spreadsheets are time-less. The consequence of the value rule is that there is no time in spreadsheets. There are no unfolding sequences or loops or conditionals, execution happens in a subjective instant after a user change and only then.
* Spreadsheets are easy because they're time-less & space-full. They do without the trickiest part of computation (invisible unfolding time) and include a native, idealized space, the biggest aid to computation we’ve found: an interactive grid you embody & reference through cells. As opposed to ”normal" control-flow programming that goes wild with time & has abstract data structures for space.
* Homoiconicity can be practical! When translated to spreadsheets, homoiconicity looks very related to copy-paste, links, transclusion & component/instances.
To sum up: Spreadsheets are old but they've never been "finished", they've keept evolving and they merit a new look.
I think you'll enjoy Andreas Wagner's 2014 Arrival of the Fittest https://amzn.com/B00INIQTA6 The title is of course a play on the (in)famous phrase "survival of the fittest".
The book's about how nature manages to actually explore the vast, vast genetic space and harvest its bounties cumulatively, while under the constrain that every "step" must be a viable organism with offspring.
Whoa, that IS neat. Thanks for sharing! A key part of his reformulation is π = α + β + γ (the sum of the internal angles of a triangle equal 2 right angles). That statement is, funny enough, equivalent to the parallel postulate.
Going on a tangent now: lately I've been thinking that the "dead horse" of the Pythagorean theorem is actually trying to tell us that flat (as opposed to fractal!) dimensions come from composable self-similarity (squares).
Yeah if the parallel postulate is out then this obviously doesn't stand. Starting from the North Pole, walking down the prime meridian to the equator then turning right and walking along the equator finally turning right to the north again at the right point so you walk through New Orleans creates a triangle on a sphere with three right angles...
Have you read Mortimer J Adler's How to Read a Book? I just finished it a month ago and your mention of terms, propositions and arguments seems straight out of the book's theory of reading :)
Thanks for your review by the way, it motivated me to reread Euclid.
You have a lot of people watching the trusted source to make sure that it's append-only and follows the rules for appends. It's a reputation thing; not impossible but it will be detected.
Actually I meant the source tree, and it's because Linus signed the git commit, and thus the tree and all its history. But yeah, the distro works too, which is the whole point: centralized trust does work without a solution to the "no trust" problem. And it works because you build an identity that is consistent over time. I can trust the 4.10 tree because it's signed by the same keys that have been signing kernel keys for years, which are themselves cross-signed by a bunch of trusted identities who have similarly built histories.
This is about tracking the source code using git. The specific thing being guaranteed is that they won't rewrite history; if they rebase you (and many others) will detect it.
Of course you're still trusting them in other ways.
> Another good contingency measure is for only the CEO to hold a board seat before a significant equity fundraise. That will prevent board disputes during tough decisions, such as in the unlikely event that the CEO has to fire a co-founder.
Can someone please unfurl what this means? Is it arguing for the founders NOT to have a board seat before significant equity changes so that the CEO can be the arbiter betwen them? (Btw, it's odd to assume the CEO is not a founder).
No, it's a way of dealing with the issue of deadlocked decisions between co-founders if equity is split evenly.
Usually in the case of a deadlocked decision between co-founders, you can resort to a board vote, after which you resort to a vote among shareholders.
If, say, two co-founders split equity and they're both on the board, then a disagreement could lead to a problem. If, however, only one of them (usually the CEO) is on the board, then there's no deadlock there.
Sometimes people recommend giving one co-founder (again, usually the CEO) one extra share so their vote can break a deadlock. But putting only the CEO on a board is another way to deal with that problem without having to worry about extra shares.
Seeing all 43 oscillators all at once took my breath away because it reminded me so much of some prime-factor flowers I've been playing with for years. Perhaps you or your son might find them interesting: https://twitter.com/elzr/status/1733007772181233681