Mesh Spreadsheet
mesh-spreadsheet.com
mesh-spreadsheet.com
Mesh is still very much an alpha. Since the last public commit I have been experimenting with:
- different text representations of the sheet (to make diffs as readable as possible)
- ways to compress more functionality into the 'boilerplate' included with each sheet.
On the to-do list are:
- persistence (including fixing "save sheet as URL" and local load/save)
- selecting input cells with a keyboard while editing a formula
- a way to include 'standard' spreadsheet formulas such as 'SUM' on-demand in the sheet file
- case-insensitive cell references
- much more polish...
JavaScript's lack of a built-in parser is a real bummer, and it means that while Mesh's backend logic can be written as a spreadsheet, in Mesh [1], the file has to include a third-party JS parser, which significantly slows down the editing process. I'd also like a proper SQL and first-class table support, but we work with what is supported by Internet Explorer 11.
I remain confident that we can substantially improve the status quo of spreadsheets and, by extension, programming.
[1] https://twitter.com/MeshSpreadsheet/status/10195553103635046...
Aside from the SQL support you mentioned wanting to add, and the various todo-items, are you planning on going beyond the spreadsheet concept? For example with some type of node-based interface, like Unreal Engine 4 Blueprints [1], or like the materials editor in Blender [2]? I realize that might be a vague question, heh.
[1]: https://docs.unrealengine.com/en-US/Engine/Blueprints/index....
[2]: https://docs.blender.org/manual/en/latest/editors/shader_edi...
I'd like to stick to a grid for writing 'functional core' logic, but there's potential to use a node interface at the surface of the 'imperative shell', to link up sheets or data feeds (push/pull). I was really impressed by Nodes [2] and I need to spend some time digging into Node-RED [3].
Keep the good work!
edit - some remarks to "get there": it must be/feel fast like native Excel, Sublime Text or at least VS code. In another phase, to be a real "programming editor" it would be great if you could use any programming language you want, not just JS. Clojurescript or Elm/Purescript could be a good start.
edit2 > ways to compress more functionality into the 'boilerplate' included with each sheet. I think the boilerplate should be somehow hidden from the end user.
As someone who is working on an Excel compiler, I can tell you it's challenging to make it very fast.
The sheets I'm working with have around a million expressions, and there are large sparse regions, so the data structures have to be a bit compact.
I would like to do a write-up about it at some point though, if for no other reason but to show the Open Document or LibreOffice people what could be improved about the formats.
Not every programming language is suitable but ClojureScript would probably work (no plans to support it right now though, gotta finish this one first!).
Considering hiding the boilerplate in the text pane.
Furthermore, maybe the data could be in CSV at the top of the file, in an HTML comment, and the editor could be in HTML at the bottom of the file, in a CSV comment, so the file could be opened in either a browser or Excel? Haha
If you were thinking about WebSQL, then sticking to IE11 has skipped you over an obstacle course in web standards, because WebSQL was abandoned by the browsers (for good reasons, led by Mozilla and Microsoft trying not to let SQLite bugs define the web platform for decades) and won't be supported again soon, in lieu of the much simpler key-value store called IndexedDB.
> JavaScript's lack of a built-in parser is a real bummer
eval() wasn't sufficient for your needs?
... as a second thought spreadsheets are the wikis of people in finance, management...
I think it's a pretty promising project. Spreadsheets are very useful tools but usually crippled by single-line, crappy, not syntax-checking, not highlighting function editors.
Yes - there are, or will be, other special fields, such as 'transpose' (so table headers would go in the first column instead of the first row). I was still figuring out which flags should be included, which is why it was under-documented.
Never expected sub-tables as a use case. Displaying nested cells would require a substantial re-write, but having logically nested tables may work... you'd just need to call the table making boilerplate function manually.
[0] https://orgmode.org/worg/org-tutorials/org-spreadsheet-intro...
On the "Why may I want to use Mesh instead of..." you may consider describing why I would want to use mesh instead of jupyter notebooks.
https://manns.github.io/pyspread/index.html
https://hackernoon.com/introducing-grid-studio-a-spreadsheet...
https://help.libreoffice.org/6.3/en-US/text/sbasic/python/ma...
isn't that just pandas?
Tangent: I'm reminded of [Mobx creator] Michael Weststrate's post^1 citing familiar spreadsheet formulas and input cells as a way to explain concepts of derivations and observables in mobx (his excellent state mgmt lib, which imho improves on redux), making React actually "reactive".
^1 https://hackernoon.com/becoming-fully-reactive-an-in-depth-e...
This line, though:
> is lightweight: ~2000 lines of source code (excluding libraries)
I feel like that's a very different meaning of "lightweight" than I normally think of. I guess you're considering it from the perspective of a developer who works on it. As a user, however, the browser downloads 1.4MB of javascript, which is quite large, I'd say.
"substantially improve the status quo of spreadsheets and, by extension, programming."
I couldn't agree more!
We've created a new kind of spreadsheet for building software -- mintdata.com
Would be great to get your feedback -- any thoughts on what we could improve?
- $95/mo for a single user sets the impression that this is way out of reach for anything I'd consider. Clearly, I'm not the customer. - The fact that it appears to be using traditional spreadsheet formulas gives me concerns about how general it might be. Mesh is intriguing for its more flexible programming and table model. - There's a live chat module on your page that appears to not be able to be dismissed, which blocks a lot of the page content.