Ambsheets: Spreadsheets for Exploring Scenarios
inkandswitch.com
inkandswitch.com
It feels like user interface innovations all stopped/stagnated in the early 2000s and we've just spent the last 20 years adjusting the previous 20 years of desktop UI paradigms to the mobile and tablet space.
It's great to see people still working on interesting problems like this
1) Editing can be sped up, albeit with a learning curve, so maybe I can see that one. At least at my proficiency, I doubt I'd be saving any material amount of time. I can think of scenarios where this would actually be slower for me. People with less experience in spreadsheets might find some time savings, it's hard for me to gauge that.
2) Space, on the other hand, I'm not really buying. You replace extra columns with a wider column and a bespoke UI piece on the right-hand side. I can see columns A:H in the column example, and columns A:B in the final Ambsheet example (which, funny enough, is displayed as a 2x3 spreadsheet -- why not just have those 6 cells right in the sheet?).
This also seems much more difficult to do visualizations from. Graphs, conditional formatting, etc. But that part isn't discussed, so there may be a solution for that which isn't shown.
It's interesting enough that I would enjoy playing around with it. I very well could just be entrenched in my habits.
A real budgeting scenario might have 2 * 3 * 7 * 4 * 5 * 3 * 9 * 2 * 5 = 226,800 possible outcomes, so the obvious question is what UI do you use to consider/narrow down that beast? You need tools that let you slice and dice that output based on different sets of criteria.
The simplest might be something like, "rule out all solutions that total more than $5000" but you also need things like "I will only pay for a total of 3 streaming services, rule out all scenarios with more than that" and "if I choose not to have a car, then I have to get a transit pass and an e-scooter"
I almost feel like, as clever as this is, the harder problem is the one I describe above.
I'm still trying to find it: anyone remember this, or did I just Mandela Effect myself? I'm not sure whether it computed outputs analytically or through simulation.
(Hell, I might just recreate it on my own...)
- GetGuesstimate[1] is probably the most polished, but development on it is slow and it doesn't lean into the same interaction patterns that I think make actual spreadsheets popular.
- There are various plugins for the proprietary Microsoft Excel that can do this. I don't remember their names off the top of my head, but sometimes "Monte Carlo" is the phrase that unlocks many searches around this. (Crystal Ball is a name of a plugin that pops into my head.)
- One can hypothetically do this in vanilla spreadsheets, by generating arrays of random values and serialising/deserialising to space-separated strings in a cell. This is very, very slow, though.
- I have started working on something I call Precel[2] which is not very polished but I think the basic idea (if not the current implementation) can be a solid foundation for a proper spreadsheet-for-full-distributions.
[1]: https://www.getguesstimate.com/
[2]: https://git.sr.ht/~kqr/precel/tree/master/item/README.md
Last time I used it was about 3 years ago - I used it to estimate of how much we'll end up spending on renovating the apartment we were planning to move it, and then updated it as the work progressed to make decisions like whether we can afford some optional elements of the plan, if we'll need to get a loan to finish everything, and how much.
Structurally, I basically broken it down by rooms, categories of work and stuff to buy - building materials, furniture. Initially, I just guesstimated (!) the costs based on gut feel, or web search. I'd start with things like: "my mom's apartment had the same proportions and painting it costed $X last year, ours is about Y% larger" -> one node "Painting walls & ceilings except kids room", value = PERT distribution between $X and $X * (1 + Y%) * Fudge factor. After we picked the paint, I'd just split that node into a) labor and b) material, the latter split into surface area (known), bucket cost (known), buckets per sqm (distribution based on values from the back of the bucket) - getting a much narrower probability distribution on the material (and total) cost. Stuff like this for every aspect - I'd just model the things I know.
It was a bit of extra work, but it was instrumental for keeping the costs in check and gave me great peace of mind. It also made it obvious which aspects were driving the costs, which were most risky - wide distributions going into large amounts, which I prioritized pinning down the costs of - and where it's worth to look for savings or alternatives.
Also, it demonstrated the usual case of webapps being optimized for demo examples instead of real use cases. My renovation planner quickly accumulated about a hundred nodes, most of which were computing probability distributions (via ~1k samples Monte Carlo). That slowed the UI down to a crawl, and many times updating a node would create a cascade of errors down the dependency graph, as the diminished performance started surfacing race conditions in the evaluator.
(You may ask, wouldn't it be better to do that stuff in code? Not really - half of the value was in having every part of the math as a node in visual, interactive DAG, that displayed histograms of the probability distributions at every node, so you could just see everything all the time.)
Still, I loved it, and I really wish someone made an actively supported product like this.
https://www.inkandswitch.com/crosscut/
https://www.inkandswitch.com/inkbase/
are very interesting and promising, but not available for use/experimentation.
I'm peripherally involved in a similar project:
https://github.com/IndiePython/myappmaker-sdd
and appreciate anything which could be shared which might be helpful or inform development.
I will note that if you would try either Android or a Windows tablet w/ a Wacom EMR stylus you should be able to get the sort of input you want --- or maybe on a Mac w/ a Wacom One Gen 2 13 inch or Movink 13 or Cintiq w/ Touch display?
[0]: https://causal.app/
Presumably this tool only works for relatively small possibility spaces due to the problem of combinatorial explosion?
If you were doing it that way, you could also set distributional values for the variables. Rather than x = {500, 1000}, you could set (say) X ~ N(750, 100) and have it pull samples from that distribution. If you really wanted to get fancy you could take advantage of known results on operations on distributions to keep things exact for a lot of common calculations, then turn to numerical methods for uglier operations (at which point you're basically building a wrapper around one of the usual statistical libraries, I suppose).
(EDIT: apparently this already exists, see other comments in this thread.)
(What I'm saying is get a big sports team to fund you)
[Multi-Dimension Data Table MDDT Feb 2025](https://www.mathpax.com/multi-dimension-data-table-mddt-feb-...)
My preferred approach combines the ubiquity of Excel and the simple power of Python. The large combinatorial effect is addressed.
There is also the opensource Flexisheet:
https://github.com/NattyNarwhal/FlexiSheet
which I wish someone would fork and get running again.
[0] https://www.xelplus.com/excel-what-if-analysis-data-table/
The negative of data tables is that it massively slows down your spreadsheet, and cause some weird errors/glitches, but it’s essentially the same thing.
Although the thing is, that it would be nice to have weights too.
Usual answer is to keep various options in separate columns (e.g. worst case, normal case, best case), problem is that often you want more scenarios and some have 3 options while other have 10
Somebody is rediscovering why slide rules are nice. you get your answer but you simultaneously get nearby answers as well.
I am not sure what the modern ui equivalent would be. a plot?