Show HN: Quadratic – Open-Source Spreadsheet with Python, AI (WASM and WebGL)
224 points| davidkircos | 3 years ago |quadratichq.com | reply
Unlike other spreadsheets, Quadratic has an infinite canvas (like Figma). As a result, you can pinch and zoom to navigate large data sets, and everything renders smoothly at 60fps.
Our vision is to build a place where your team can collaborate on data analysis. You can write Python, AI Prompts, and Formulas in one spreadsheet feeding each other data and updating automatically.
Quadratic is built using WebGL and Rust WASM. To render a large grid of cells smoothly, we tile the spreadsheet similar to google maps. If you are interested in the technical details, check us out on GitHub (https://github.com/quadratichq/quadratic/)
You can use AI to help you write Python and then run the code directly in Quadratic. Then, we feed the result back to the AI model so it can follow along, help you debug, and modify your existing code.
AI can also be used to directly generate data onto the sheet with prompts. It knows the context of what's on the sheet and how the data it's inserting fits in. Try it out.
SQL is coming soon... stay tuned!
[+] [-] probablypower|3 years ago|reply
I'll buy into this in a second, however, if you find a way to defragment the logical mess of a spreadsheet and turn it back into functional transformations of tabular data, such that we can implement it into stream processes or ETL pipelines. Otherwise you're just letting the next generation of corporate workers fall into the same trap of embedding their business logic lazily into a digital grid cemetery that'll end up wedged into the onedrive file pile.
(Apologise if this comes across as cynical, from an implementation perspective you've done an amazing job, I just hate spreadsheets)
[+] [-] shaftway|3 years ago|reply
And it was all done in a Excel spreadsheet.
Each night a bunch of traders would each kick off scripts in Excel. The script would download the new ratings (S&P, Fitch, and Moodys) for each bond, download the new LIBOR curves, update the spreadsheet, save a copy (y'know, for backup purposes and history), then generate an XML file, shell out to the risk tool provided by the quants, then parse the XML result, load it back into the spreadsheet, let it crunch and then FTP it to the central risk server.
Each deal was a separate spreadsheet, and there were about 30 of these deals. Some of the runs would take ~20 hours, so they were basically always running, but most of them took about an hour. The sheets were a spaghetti mess of formulas, often with errors or inexplicably different formulas.
I also am cynical, and I can't imaging supporting something with even more programming ability.
[+] [-] davidkircos|3 years ago|reply
Our goal isn't to replace production ETL pipelines etc. We are building a place where you can quickly do an ad hoc analysis, share it with your whole team, and iterate on it.
If it's small and works great you're all set. If your work out grows Quadratic just take the Python and SQL code from Quadratic, modify it slightly, and deploy it on more robust infra.
[+] [-] swyx|3 years ago|reply
[+] [-] mkl|3 years ago|reply
[+] [-] davidkircos|3 years ago|reply
[+] [-] el_don_almighty|3 years ago|reply
The enterprise manager of complex financial and equipment excel models worries about managing those code bases if they are spread out all over God's creation, hidden in a thousand cells without change management or access control...
Is there a single code/formula base location for everything? (I admit, I have only been playing with it for a little bit...)
How do I manage who gets the 'user version' and who gets to play with the 'creator' version?
We always use the first worksheet as a version control chart tracking recent changes and modifications. It's rudimentary, but surprisingly effective over time now that OneDrive desperately undermines these controls with history management
[+] [-] davidkircos|3 years ago|reply
Access controls will allow you to set who can edit and who can view. We also want to have a mode where you can edit, but only in your own fork.
[+] [-] carom|3 years ago|reply
Jokes aside, this is legitimately awesome. I have been dreaming about an application like this ever since I found out Excel can't handle more than 1 million rows. I'm glad spreadsheets are getting a fresh rewrite with modern technologies.
[+] [-] swyx|3 years ago|reply
[+] [-] adamdill|3 years ago|reply
I'm excited to see work in this space, because it's such a great lever for continued productivity.
how do you see your open source model making money and continuing to scale feature development?
[+] [-] Andrew_nenakhov|3 years ago|reply
[+] [-] WillAdams|3 years ago|reply
Look up Lotus Improv and Javelin and Quantrix for examples of spreadsheets done right.
[+] [-] davidkircos|3 years ago|reply
[+] [-] deely3|3 years ago|reply
How so? Could you please elaborate, whats wrong with technical users and spreadsheets?
[+] [-] JulianWasTaken|3 years ago|reply
To pick something else -- I again haven't used it yet and might not be in the target market as I don't find myself saying "I wish my spreadsheets had more functionality" -- but if I were, I'd probably lead with more of the flexibility or collaboration functionality (e.g. "write Python not VB", even though Google Sheets lets you write JS at this point.)
[+] [-] davidkircos|3 years ago|reply
Google Sheets does not have pinch to zoom. Maybe Excel does on some platforms, it doesn't on 365. The only other spreadsheet I know with decent pinch to zoom support is Numbers on mac.
[+] [-] jarpineh|3 years ago|reply
Without knowing anything about your architecture I wonder if you could support Duck DB WASM as a data source and SQL engine. Also, since there’s Python there you could conceivably bring Jupyter into the mix. Shared runtime (or at least a connection) and data space within browser sounds like a powerful combination.
[+] [-] davidkircos|3 years ago|reply
[+] [-] hyuuu|3 years ago|reply
[+] [-] swyx|3 years ago|reply
[+] [-] nhatcher|3 years ago|reply
There are a million things in my head. Let me just mention two:
* When you are sending close to 20Mb of data compress it, it's going to make a huge difference in loading times. * I think, and I might be very wrong, but I think that when you are looking at a spreadsheet that looks like Excel you have certain expectations about the the UX. How to insert formulas, the way you extend content from some cells to others, etc
One question, what algorithm are you using to evaluate the dependencies? Could you point me to the source?
[+] [-] davidkircos|3 years ago|reply
Here is how we manage cell dependencies https://github.com/quadratichq/quadratic/blob/main/src/grid/...
[+] [-] knewter|3 years ago|reply
Connecting this up to databases seems like it would provide a great deal more value - excited to see that come to fruition.
Additionally, from the demo video, I have to say the performance is impressive. I haven't seen a similar product yet from that respect - curious if this is due to my ignorance or your ingenuity.
At any rate, congratulations!
What are some of the useful things you've used it for recently?
[+] [-] davidkircos|3 years ago|reply
Directly using SQL would make this even easier.
We are also working on support for popular Python charting libraries like MatPlotLib and Plotly!
[+] [-] timmit|3 years ago|reply
I was quite surprised that the AI feature is free for everyone's trial, I believe it is quite expensive.
The payload for consuming the GPT-4 is interesting as well, there are one 1 out of 7 messages were from users, the first 6 are all system promots.
Looks like it is an example for users to understand how to use the ai assitant.
{"role":"system","content":"For example if a user asks for a list of 3 months starting at Jan 2020, you reply [\"Jan 2020\", \"Feb 2020\", \"Mar 2020\"]."}
[+] [-] marwis|3 years ago|reply
[+] [-] davidkircos|3 years ago|reply
We are working on support for multiple sheets (both infinite or finite) and support for Python files to enable reusability of code across the sheets.
[+] [-] HactarCE|3 years ago|reply
Currently the classic Excel-style formulas are implemented in Rust, and we're planning on writing the spreadsheet core + multiplayer server in Rust as well.
[+] [-] swyx|3 years ago|reply
congrats on your launch - wondering how youre thinking about the UX of AI integration in spreadsheets?
[+] [-] dsnr|3 years ago|reply
On a related note, there’s no mention that the product is built using Pixi.JS, an open source 2d graphics engine.
https://pixijs.com/
[+] [-] davidkircos|3 years ago|reply
This context makes it easy to use GPT to write, edit, and debug your code to get the desired result faster.
We are working on inline code completions and experimenting with whole document generation.
Imagine a spreadsheet that generates all you need for your analysis, with each step being verifiable in code, SQL, and formulas. Then being able to share it with your team with a link.
[+] [-] zokier|3 years ago|reply
[+] [-] davidkircos|3 years ago|reply
[+] [-] tritiy|3 years ago|reply
However, there is no pricing information on the page. Where is this information?
[+] [-] Andrew_nenakhov|3 years ago|reply
[+] [-] drexlspivey|3 years ago|reply
[+] [-] marcus_yallow|3 years ago|reply
[+] [-] jonathaneunice|3 years ago|reply
Accessibility, however, needs work. Must be a way to zoom on the inspector/code pane for those of us with less than stellar vision.
[+] [-] m00nsome|3 years ago|reply