11

Mesh Spreadsheet

 4 years ago
source link: http://mesh-spreadsheet.com/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

What is Mesh?

Mesh is a JavaScript code editor that feels like a spreadsheet.

It runs in a browser (but doesn't require internet) and can be carried with you on a USB. It:

  • uses JavaScript as its formula language, and stores sheet files as JavaScript source code
  • is lightweight: ~2000 lines of source code (excluding libraries)
  • has no install or privacy headaches
  • strives for maximum compatibility: runs in Internet Explorer 11+ and is based on ECMAScript 5
  • is free (as in beer), open-source and permissively licensed (Apache 2.0).

Mesh is really a 'user experience' layer on top of the JavaScript that's built into browsers.

How do I use Mesh?

Download it here or try it out here (takes a couple of seconds to load). Here's the user guide.

Mesh emphasises structured data (arrays, tables, etc) more than Excel and Google Sheets, which can take getting used to.

Why may I want to use Mesh instead of...

Excel or Google Docs?

Aside from being free, with Mesh you can:

  • work with data of arbitrary length (including changing the row count of tables at calculation time)
  • compare spreadsheets using standard tools such as Word's 'compare docs', or 'diff' them at the command prompt
  • integrate sheets within websites, as calculation engines
  • manage sheets with the rest of your code base using your existing version control tools (they're just text files)
  • use and write custom themes (using CSS).

Libre Office?

Mesh fits into <1MB, so it has a much smaller download size. Also, it has a different feature mix.

I'd like to think that Mesh's code base is small enough that anyone can read it and be ready to contribute within an hour or two.

A 'real' programming language?

You can write real programs in a spreadsheet! For example, here's what Mesh's own code looks like.

Writing code in a spreadsheet format provides you with immediate feedback and lets you lay out your program on a 2D canvas. I highly recommend trying it.


Roadmap

Alpha

  • Allow loading and saving
  • Anonymous-first. Make it so you don't need to name data to enter it. Right now empty cells generate names, will that change?
  • Any code layout changes.
    • Remove _OUTPUT and just add props via code to cells?
    • Figure out whether managing locations and other props in a separate object
  • Docs:
    • Create short tutorial of how to use and when better than Excel, Google Sheets, etc. [shortcut list]
    • Update README, including better-sized GIFs that show off the features, and interop (messaging)
    • Libraries (and how to "import" and use without a build process)
  • Flush out any remaining cache logic issues, eg:
    • Don't recalculate if the cell's a primitive value and it didn't change
    • Let's say we override b, then we send in new data in a subsequent recalc. Should b now return to normal?
    • What if a cell happens to recalc to the same value as before? Should we not invalidate its calc chain from that point?
    • Deleting names has a bug
  • Add Mesh to Product Hunt and this free office suite list and other 'self-hosted' app lists
  • Cleanup:
    • Figure out whether need to add Apache license to each source file? (+ remove NOTICE?)
    • Update boilerplate with latest from app.js
    • Scan code for TODOs and comments
    • Fix themes being gross in some browsers
    • Finish light theme
  • Get 'new' working again (as in =new Object)
  • When creating name, check for valid symbols and existing names
  • Make sure edit without replacement works on strings, dates etc
  • Add back array and object literal support? If so, stop extra brackets being added when add new key to object literal?
  • Undo/redo
  • RO table support
  • IO and sharing (use Monotreme?):
    • Share sheets via url hash
    • Override cells via url querystring
    • WebDAV and remote servers
  • Add highlighting behind occupied cells to show they're taken (eg if empty string or renders to eqivalent)
  • Style regex differently
  • Make a Mesh electron package
  • Click on cells to reference in formula (or move cursor with arrow keys)
  • Aggregations - SUM, AVERAGE, etc. Predefine these functions? Have the UI insert them automatically?
  • Make it easier to manage dates
  • Why lookup tables are awesome (incl use of 'find')
  • Copy and paste data in/out
  • Guide on setting up a WebDAV server
  • Move around cell locations via dragging mouse
  • Split reducer table so that each 'state component' has its own column (separate fns?), eg formula bar, cells, etc
  • Edit table header to rename

Miscellaneous

  • Empty string entry
  • Change add row/col labels so take up less height/width?
  • Figure out how to manage row/col widths
  • Add row/column indices (useful for counting / IDing). Similarly, way to see the coords of the selected cell?
  • Excel -> JS function equivalent table
  • APL/K support
  • Version that supports TypeScript or all the latest JS features (bigints, realms, etc)
  • Figure out how to manage Recast being pasted into the spreadsheet app (how to speed up parsing on change?)
  • What to display for cells that have an invisible string? What about objects that have no string rep (eg Array.prototype)?
  • Center function symbol in cell?
  • Overflow - make expand to literal size?
  • Boolean cells - hardcode vs softcode (take into account colour vs background)
  • Should there be a function that lets you specify which cells you want the values of? IE don't get it all, all the time (feels wasteful)
  • APLers don't use libraries

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK