APL was created by Kenneth Iverson (array based programming language still in use today in production at places like Volvo and sold by Dyalog APL) and Arthur Whitney (APL genius) made several APL like languages for banking/financial analysis applications in the late 80's in 90's to make super efficient stock ticker analysis apps. He funded kxsystems which is a very very fast memory mapped database technology that uses the "K" language which is like APL, but uses ASCII instead of Unicode glyphs. He made zillions of dollars then left again to make another company (Shakti) which uses a new version of his language. He writes a new one from scratch every few years. The "K" executable is tiny (something like a few dozen pages of C written in an extremely unusual style).
This guy explains it well although is a little zealous:
Yeah, I didn’t find the website particularly informative, just a bunch of marketing hype. I’m still a bit confused by what it does, how it works, how it can achieve those numbers (and benchmarks to prove it can), what the failover story is, etc etc
In a past life I've made extensive use of the q/kdb excel plugin to do my financial analysis (backtesting, model fitting etc).
The basic setup was:
1. set up a q server and load lots of price data and signal tables in memory
2. open a connection to the server from your spreadsheet
3. write q queries in excel directly.
Because q is so compact you could essentially write a (quite long) one line aproximate backtester, as long as your q server stored daily prices, volumes, advs etc in a sensible way.
The spreadsheet form factor was pretty good - it was nice to be able to plot arbitrary series and generally made it quite fast to work with data.
It was by no means perfect, but I found it infinitely better than setups like jupyter notebooks.
I don't get it. Maybe he lost me at the beginning when he showed an example of a table that was apparently supposed to be easy to grok but I just found puzzling.
The first example is a new version of mesh based on the k programming language (afaik, still under development). If you are not familiar with k or other array languages, you may find much clearer the examples in which he shows the previous version of mesh, based on JS. See also: http://mesh-spreadsheet.com/
The interesting thing is, you can run the js you build in the spreadsheet, independent of the spreadsheet environment.
Unfortunately the project looks pretty dead. And further one of the bullet points is "is lightweight: ~2000 lines of source code (excluding libraries)" but looking into app.js it's something like 23k loc. It uses react but it looks to be pre-JSX. And because it's all in one giant file it feels too overwhelming for me to want to learn/extend it. He says it's compatible with IE 11. And maybe that's why it's structured that way, but I don't know. Despite it all the idea is really cool.
Not dead, just evolving! I hope to bring some of the insights from doing the k version into the free JS version. But even then, the formula language is unlikely to be raw JS - maybe jq, or a k subset. JS, as a moving target, is just too hard to parse in a small package.
Mesh's backend sits in one giant file because that's how we can write it in a Mesh sheet. But unfortunately the JS parsing library is huge and forms the bulk of the code. Happily, the k version is currently ~100 lines excluding tests.
If JSX were used, would the code need to be compiled? Mesh used to have a compilation step but it just added complexity (config files, build process, increased download size). Keep it simple! React.createElement is fine.
Thanks for the reply. I hope my post didn't sound snarky. I have very limited time and was just disappointed at the size of the parsing code. Ultimately, I really think the idea is great!
I've never seen k, nor any array langs before but would definitely checkout the K mesh version.
It was an old design of the periodic table. Presumably the rectangular tabular form was used because that's how it was developed and to show the similarity to the tool he's trying to explain. I think it was a good example of his general point, but it was poorly presented. He could have shown a familiarly shaped periodic table and then shown the version to make it more clear.
I'm honestly unable to make sense of this given the poor "camera pointed at projector screen" quality. Website looks intriguing, but I can't figure out how to do anything in the browser demo besides simple numeric calculations inside single cells.
One thing that I like about Google Sheets is the ability to query the sheets with SQL. Only complaint is that the queries aren't super powerful and I can't use names. This would be super helpful. A powerful query language in a more powerful spreadsheet.
Users have strong expectations about what features a "spreadsheet" application should have, so I say it merely "feels like" a spreadsheet to help manage those expectations.
For example, in existing spreadsheet programs, each cell gets an A1-style location reference (even in an Excel table or a dynamic array).
That's not the case in Mesh, but it does something similar: a cell's default name is where it was entered in the grid UI, and (soon!) we update that name when the cell gets moved around.
> That's not the case in Mesh, but it does something similar: a cell's default name is where it was entered in the grid UI, and (soon!) we update that name when the cell gets moved around.
But that's still possible in Excel too right? With "named ranges".
Anyway, I see you're the creator and want to thank you for sharing the project and releasing the source-code. I feel like it's pushing the boundaries, but it can't really be explained yet. Look forward to seeing future development in this!
Kind of - in Excel everything just has a location reference, even if you name it. So that means you can get collision errors if a dynamic array expands into another cell.
AFAIK this is not the repo for the code in the talk. The talk is about using K as a language. The repo in [1] is a JS implementation that runs in the browser. It seems like it's his first run at this idea of spreadsheets accompanying code.
It's an evolution of the same language:
K3 = K (Kx) / Kona (Kevin Lawler open source),
K4 = Q (in the current Kx KDB),
K7 = Shakti (Arthur Whitney's most recent project),
Slides (view in Powerpoint slideshow mode to see the animated GIFs): https://github.com/chrispsn/presos/raw/master/2020-02-26%20M...
And past demo videos of the JS prototype:
- Basics: https://www.youtube.com/watch?v=_U6gE3cNgbI
- Dynamic tables: https://www.youtube.com/watch?v=x32tBLGrLAQ