Launch HN: Neptyne (YC W23) – A programmable spreadsheet that runs Python
The world runs on spreadsheets, and for good reason: they are a universal data canvas. But building on top of and around the spreadsheet is clumsy: limiting scripting environments, APIs and file formats get in the way of making the spreadsheet a part of a broader application. Excel workbooks become monolithic and unmaintainable. Google Sheets data become static and stale.
Both Excel and Google Sheets offer some level of programmability but we have yet to find any user who liked the experience. It’s harder than it should be, using programming languages that are more limited than you expect. With Excel you've either got VBA or an extension like pyxll to deal with. With Google Sheets, your options are AppsScript or the REST API. These tools are mediocre but the need for programmable spreadsheets is such that people use them anyway.
With Neptyne, the spreadsheet itself runs in the Python runtime, so you can write to it or read from it like an in-memory data structure, because that's exactly what it is.
Neptyne primarily solves problems that exist at the boundaries of what other spreadsheet tools can do. We make Python a first-class citizen of spreadsheet-land, meaning you don't need a clumsy integration or extension to make your code work with spreadsheets. You can use standard off-the-shelf Python libraries to build on top of an Excel-like spreadsheet environment to build collaborative applications. You mix Excel style cell addresses (A1, C3) and ranges (B2:B20) with Python code (e.g. `A1 = "foo" if B2 > 0 else "bar"`, or `for num in B2:B20:`).
Before starting Neptyne we worked at Sidewalk Labs, where we built models in Python that would typically be shared or used via spreadsheets on an interdisciplinary team. The final step of many pipelines was "write a .csv with the results", which was a great way to share data but only in one direction. What we really needed was a way for users to interact with our Python models through a spreadsheet: tune inputs, see results, make quick aggregations. After making some version of this work with the Google Sheets API, we knew this could be better. What we wanted was basically a Jupyter notebook embedded in our spreadsheet, that could give us the full power of Python while keeping the accessibility of a spreadsheet. We built a proof of concept, found some interest in it, and formed Neptyne.
Neptyne differs from lots of modern takes on the spreadsheet tool in that we really wanted to preserve the "data canvas" nature of a true spreadsheet. While there is value in making spreadsheets more like SQL databases with column-based types and formulas, Neptyne gives you the freedom to structure your spreadsheet as you would with Sheets or Excel. Mix and match data types, table dimensions, graphs, charts, and buttons as freely as you might with those tools.
Neptyne behaves exactly like a spreadsheet but is secretly an alternative frontend to a Jupyter Notebook that has an embedded spreadsheet engine. Because it runs a Jupyter kernel, we support anything you can run in a Jupyter notebook, including all the expected visualization packages (matplotlib, plotly, etc.). This is not merely scripting using Python—you can use any (stateful) Python framework to get serious work done.
Things users have built with Neptyne so far include a Twitter bot, a private spaceflight schedule optimizer, and a CRM that pulls from several different data sources.
Neptyne's basic tier is free to use. As we add more capabilities to the product, certain features will be introduced at paid tiers. For individuals bu...
220 comments
[ 3.1 ms ] story [ 266 ms ] threadLeft the page.
Online python REPL, no login: https://replit.com/languages/python3
Another generic online REPL service, with pandas example, no login: https://onecompiler.com/python/3x7an28pr
ReactJS online playground, no login: https://playcode.io/react
Here the Tutorial is Login Gated. That's just going to turn people who are curious and have 2-3 min to look at it, away.
I'm not going to make a new account somewhere just to demo what they offer. I have to be convinced before I enter my personal info
1. Is this a HN only phenomenon or is there a significant drop-off in general because of the signup requirement?
2. If the drop-off is general, how are you planning to handle AI pay-per-use credit tracking without signup?
So much stuff is released every day, I don’t want to be bothered creating an account and giving my info to everything on the internet. Give me a good demo and if I’m interested I’ll sign up.
Then maybe you're not who they want as a first customer anyway.
Perhaps this is just successful self-selection, rather than merely a user-hostile behavior?
Show what you have, then gently nudge people in to the sales funnel. Dont body slam them in to i.
EDIT: this should work now. Just click the new button that says "Skip signup and let me try it out first"
This would be useless for spreadsheet users (those who use sheet formulas) as they have to learn python.
I'm not in the target audience, so I might be completely wrong about the use cases.
You're spot on in that, if you're a Python developer, you're probably using Jupyter and/or Streamlit, gradio, etc. and spreadsheet users are most comfortable with Excel-style formulas. What we've done with Neptyne is create an environment where teams of both types can be productive in a shared environment: the usual spreadsheet formulas are there, and so is a full Python/Jupyter runtime.
As with any tool that attempts to combine the best of multiple great tools, there's always the risk that it falls short of one or the other. Our aim is to make Neptyne a better alternative to both standard spreadsheets and Jupyter notebooks.
One more thing that surprised me a bit: in talking to spreadsheet power users, you see a lot of interest in using more Python. Neptyne is a great way to start off with a spreadsheet and gently incorporate more Python into your work!
PS: I'm convinced I was indeed wrong after reading replies, because I didn't consider the interaction of coders with no coders, and this tool may indeed be useful. Nevertheless I maintain these cultural changes are very hard, and wish the company good luck!
If so, that's false. Spreadsheets are a fantastic way to present visual data and analysis in a way that's auditable by anyone, regardless of technical competence. They are visual programming!
This also makes them a better way to do lightweight data processing. One of my most common workflows is to dump production data into a CSV so I can analyze it and build charts off it. This is perfect for business-as-usual questions, like basic segmentation analyses. Pivot tables!
A major issue with Google Sheets is that the DSL is terrible. Like, try to do any sort of string manipulation (extract the first two words)[1], and you'll see how bad it is. Adding native python support helps solve this.
I'm just a random HN-er who saw this, but I'm very excited about this product.
---
[1] https://www.spreadsheetclass.com/extract-text-or-numbers-fro...
EDIT: Sorry I see you changed your mind - so what I wrote maybe wasn't necessary but I'll leave it here. To be clear I wish my team would learn Python, but most of them get promoted and richer without learning it.
So to convince a BA to input their data on Neptyne because the DA might need to python script it at some point is maybe premature optimization.
That's an uphill battle... But I definitely see it a good case for me personally as someone who both originates data (nothing fancy) and needs to process it further...
Will definitely check it out!
A1 = requests.get(SOME_URL).json()
to make a REST API call for example. Right now that's often done by running some script that produces a .csv that then gets emailed around and imported into a spreadsheet.
With Google Sheets you get a flavor of JS called Apps Script, a flavor of JS with some limitations. Some ways in which our use of Python differ are:
- run Python directly in the spreadsheet cells, not just as an "extension"
- a full runtime in a Jupyter kernel, so you can import and use effectively any Python package, as long as it runs on Linux
- an interactive REPL that gives you a nice test environment, but also a command line of sorts for working with your spreadsheet. (e.g. you can say `A1 = requests.get(URL).json()`) to do a one-off fetch of some data from an API.
Generally speaking we hope to give you a much more powerful/seamless integration between spreadsheet/Python than what you get with Sheets/JS
You've hit the nail on the head: While Google Sheets supports Javascript, the integration feels clunky. You have to switch from the spreadsheet you're working on, to the Apps Script editor. This is awkward enough that I tend to avoid this functionality, even in use-cases where a few lines of Javascript code would probably save me time (vis-a-vis engaging in gymnastics in a bunch of spreadsheet rows/columns or a separate tab).
In comparison, Neptyne makes Python feel like a first-class citizen.
That said, you might want to consider slight changes to the UX so that users conditioned on Google Sheets/Excel's UX paradigms can use it with their "muscle memory." For example, when I select a cell and press the '=' key, I expect to be able to start typing in a formula. Both Google Sheets and Excel behave this way. In Neptyne, I had to double-click on the cell first. The closer the experience to the two "biggies", the easier it'll be to convince folks to switch.
I wouldn't rule it out for the future though -- a lot will depend on where we see Neptyne being used.
Is it going to be cloud-only, or are you planning on making a desktop app? If it's cloud-only, you can grab some (hopefully many) Google Sheets users, but most Excel users will probably pass.
To answer your question, it's cloud-only -- we wanted to build Neptyne as a collaborative platform where teams of programmers and non-programmer types could get things done together. I think you're right in that this will mean it doesn't work for a certain class of user, but for now at least, we're focused on Neptyne as a web app.
My unsolicited advice (that's probably on your radar anyway) would be to try and get a management consulting firm on board with this. The flexibility this has would be well used there, and you've got lots of people who are engineers stuck using spreadsheets that would be on board with trying something like this.
Our biggest challenge as you say is definitely the fact that lots of users will be entrenched in Excel. Our goal right now is to appeal not to those who are happy in Excel today, but to those who have grown disillusioned: lots of users today build up amazingly complicated things in Excel and grow frustrated by the difficulty of maintaining that complexity. Python can be a much better fit in many cases for a lot of that complexity.
And as a platform for data science, we've found Neptyne really nice for sharing results. I was surprised at how often I heard from users: "well, we usually do everything in Jupyter, but then whenever management wants to see the output, they ask for it in a spreadsheet".
It seems a web version of the app has been published in open-source[3] but that too has been EOL.
[1] https://web.archive.org/web/20120211201410/http://www.resolv... [2] https://www.resolversystems.com [3] https://github.com/pythonanywhere/dirigible-spreadsheet
Thanks for mentioning this! I came across Resolve One recently in another HN thread. Were you a user yourself? What did you think of it?
I was very sorry to see the project go insolvent. I didn't become an active user due to accident of time not discovering it until the final months.
All our clients had stacks of sedimented business rules and know-how, lying around in a mess of unreliable, unmaintained and un-versioned Excel files.
I was thinking of using Resolve One as a conduit that might be helpful to absorb all of that. A UI similar to a spreadsheet would be a clever trojan for adoption, as I could win the hearts and minds of the users that were not seeing themselves as developers. While bringing better software engineering and QA in the enterprisey world of organically grown, ad-hoc solutions.
Neptyne seems to revive that grand vision, so it would be interesting to study how and why Resolve One failed. Too soon perhaps, as the market wasn’t as big as it is today? Or maybe by the time you reach the critical point of the messy pile of Excel docs, you consent to invest into your core business and hire internal developers. I’d love to read a post-mortem of Resolve One.
lol, threw in the AI there just in case
believe it or not this is my biggest problem with Sheets, and while Excel does better it's still capped at 1M
SQlite could be enough, and it's comparable to a spreadsheet in that it is well suited to a single-file single-user local-DB scenario, yet can still handle large quantities of data.
Computers are fast, I have gigabytes of RAM, I should be able to look at 10M rows
Don't forget "Filter". It's very easy in a spreadsheet to take a huge number of rows and cut them down -- interactively! -- to a subset that's of interest.
Based on what I see I may want to scribble formulas in the margins.
I love love love SQL but it is not a spreadsheet. SQL is great at aggregating down a column but very awkward at aggregating across a row. My SQL prompt doesn't have scatter plots built-in. I can't arbitrarily color rows/columns/cells.
This is a platform as a service?
How does the frontend work with the backend, it’s all backend and magic stuff to reflect it on the frontend?
> How does the frontend work with the backend, it’s all backend and magic stuff to reflect it on the frontend?
All the logic is happening the backend, yeah. The Jupyter kernel runs Python, but the Python is processed in a way that it understands spreadsheet expressions like A1, B3:C8 and has the Excel functions available. The frontend reflects the state of the backend at all times and syncs over a websocket. This setup gets you multi user for free.
"Python for Data Analysis 2nd ed" (Wes McKinney, 2018)
On the other hand, while Matplotlib and its ecosystem of add-ons and close imitators is fantastic, it's not friendly to most people, and making it interactive is a massive pain. If you want to wiggle sliders and watch your charts change in real time, you need to use pyplot or something instead.
All great tools to be sure! I am a huge fan of numpy and pandas especially. For plotting in Neptyne I usually opt for plotly over matplotlib/seaborn. Agreed too on the shell -- that's why we built one into our product.
I am curious though, do you typically share/collaborate on these spreadsheets with others? Do you have a neat way of packaging up the spreadsheet+Python code?
I do have a question: Similar tools tend to fall down after the code grows to a certain size. Modularity, unit tests, etc. become more useful at this point. I'm wondering if Neptyne will (or does?) support these sorts of features?
Edit: Here's a link to the developer docs: https://docs.google.com/document/d/1zLOXBoy-nf05SU3d5sZ7lDDg...
I would love a Google Sheets integration, since that's where I already live with most of my CSV/Sheets data + it would seamlessly fit into my workflow. If this was a Chrome extension I would have installed it today.
As is, I don't see myself using another spreadsheet app.
Is that the HN hug of death, or my corporate netowrk playing up?
So it's definitely not a neptyne problem (it works great on my personal laptop).
Cool product! Thanks for the good work there.