I'm making a system for working with loosely structured tables in spreadsheets. Tables/lists in sheets represent collections of things, however formulas and drag-filling works at an item-level (cell-level) abstraction. This causes a lot of problems – duplicated effort, hard to do lookups across tables, errors when new data is added. However, committing to a structure upfront (a SQL style table for example) has a big cost. An effective system would allow users to gradually introduce structure that works with whatever rich table they draw.
Right now I'm onto a language for pulling data from such rich tables. It works by manipulation of the ranges (rectangles) pointed to by Labels. Queries can be made by intersecting/unioning rectangles (in picture is a small example). What ideas/projects would you recommend looking at in this space? I've looked around a fair bit for "2D grammar" and "spatial programming language" but haven't had much luck.
Some free-form tables as example.
12/14/2023, 11:47 AM
Not directly related to your experiments but I'd love to have a reactive data management app where I can create atoms(name-value pair), objects/dicts (set of atoms, name being the unique key), flat tables (sequence/list of objects) and then be able to create new values with formulas referring to any of these. Spreadsheets mix up data structures and presentation which I dislike.
12/14/2023, 11:56 AM
Also slightly unrelated: What would be the ideal way for you to access said data from outside the app?
12/14/2023, 11:57 AM
The whole file would be just a json object.
12/15/2023, 9:30 AM
Knee-jerk reaction (coming from having thought about related issues for years and years). At the deep level, I find it best to keep track of functional/cardinality dependencies: a given employee has a name, age, salary; a team has multiple employees on it and an employee can be on multiple teams. That way you can pay less attention to the exact organization of tables. Instead focus on a richer grammar for views. I'm especially fond of grouping, which if you think about it, is a lot like currying a function.
In my work, I often have a compound key —given a time, place, and person, you have a unique event of some sort — and then it makes sense to talk about events, but you also want to pretty freely switch between places or people and still retain the context.