TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Launch HN: Mito (YC S20) – Edit a spreadsheet, generate Python

140 pointsby narushover 2 years ago
Hiya HN, I&#x27;m Nate, cofounder of Mito (<a href="https:&#x2F;&#x2F;trymito.io" rel="nofollow">https:&#x2F;&#x2F;trymito.io</a>) with my best friends Jake and Aaron. Mito is a spreadsheet UI that runs inside a Jupyter Notebook. Each time you edit the spreadsheet, it generates Python code for that edit. This allows analysts to write Python scripts using an interface they are familiar with, instead of waiting months for eng resources.<p>Mito is open core: <a href="http:&#x2F;&#x2F;github.com&#x2F;mito-ds&#x2F;monorepo" rel="nofollow">http:&#x2F;&#x2F;github.com&#x2F;mito-ds&#x2F;monorepo</a>. Our docs are at <a href="http:&#x2F;&#x2F;docs.trymito.io" rel="nofollow">http:&#x2F;&#x2F;docs.trymito.io</a>, and you can download it here: <a href="https:&#x2F;&#x2F;docs.trymito.io&#x2F;getting-started&#x2F;installing-mito" rel="nofollow">https:&#x2F;&#x2F;docs.trymito.io&#x2F;getting-started&#x2F;installing-mito</a>.<p>Most people doing data analysis in Python struggle to just write basic Python. If you search StackOverflow for the [pandas] tag, you’ll find pandas users wrestling with everything from “how can I make a pivot table?” to “how do I import from another folder?” These users are experts in their field — they just aren’t experts in Python. Tasks that take them seconds in spreadsheets can end up taking them days. (Here’s how we put it to investors: the next 10 million Python programmers are transitioning from Excel and have one real problem: writing the damn code.) A lot of organizations are stuck on this dilemma: they want to move from spreadsheets to Python, but getting started with programming—even with a highly usable language like Python—is hard.<p>We’ve spent years with users trying to adapt their spreadsheet skills to Python. It takes weeks to learn the basics. Their existing skills don&#x27;t transfer. Many of their needs are simple to do in a spreadsheet—writing a formula, aggregating data, graphing—but adapting them to Python requires long courses, emails to internal support (if any exists) waiting days for a reply, and countless trips to Stack Overflow. Often they just give up and return to Excel, but that makes them dependent on IT to write code for them. One of our users was quoted a full year for IT to implement a simple report! (Fast-forward: he ended up using Mito to automate it himself in less than a week.)<p>We went through this ourselves when we went to college together, studying engineering and business. We first learned data science with spreadsheets, then had to relearn it in Python. The transition was painful—basic Excel was much easier! Of course, not-so-basic Excel soon becomes not-so-easy, which is what drives the move to Python in the first place.<p>With our interest in spreadsheets, we started a spreadsheet-version-control company at the end of college, and spent a year working with Excel power users. Eventually, we realized that version control was secondary to the real problems users faced with spreadsheets: limited data size, speed limits, lack of advanced functionality, and a horrible replayability story.<p>Essentially, enterprises are caught between a rock (their spreadsheet woes) and a hard place (the pain of moving analysts to Python). We decided to work on this instead, and started Mito.<p>Mito is a spreadsheet UI built as an extension to Jupyter Notebooks &#x2F; JupyterLab. Using a Mito spreadsheet, users can import data, add and delete columns, write formulas like Excel, make pivot tables, generate graphs, and more. See our docs (<a href="http:&#x2F;&#x2F;docs.trymito.io" rel="nofollow">http:&#x2F;&#x2F;docs.trymito.io</a>) for all our functionality.<p>Every tab in a Mito spreadsheet is a different pandas DataFrame. For each edit made, a line of pandas code is generated in a code cell directly below the spreadsheet that corresponds to this edit. For example, if I use Mito to import a CSV, add a column named Day of Week, and use the WEEKDAY formula from Excel to pull out the weekday from another column, Mito generates the following code:<p><pre><code> # Imported tesla stock.csv import pandas as pd tesla_stock = pd.read_csv(r&#x27;tesla stock.csv&#x27;) # Added column Day of week tesla_stock.insert(1, &#x27;Day of week&#x27;, WEEKDAY(tesla_stock[&#x27;Date&#x27;])) </code></pre> In practice, the typical user bounces back and forth between writing Python and using the Mito spreadsheet, depending on the task at hand. We think this fluid movement between a spreadsheet and Python is really cool. The spreadsheet backend is just a Python extension to the IPython kernel you’re already running for your Jupyter Notebook. Because Mito is just a Python package, all data processing happens locally.<p>As mentioned, Mito is an open core product. 90% of the code is AGPL licensed. The rest is under a separate enterprise license. These modules are still source-visible, but require users to pay for a pro or enterprise offering before using them. That’s basically our business model.<p>We have 3 versions (<a href="https:&#x2F;&#x2F;trymito.io&#x2F;plans" rel="nofollow">https:&#x2F;&#x2F;trymito.io&#x2F;plans</a>): (1) Free: basic analysis tools, as well as some basic telemetry that you can opt out of; (2). Pro: all of (1), with advanced functionality; (3) Enterprise: all of (2), with more advanced features, optimizations, and support.<p>Because spreadsheets are sprawling pieces of software, we’re pretty obsessed with optimizing for long-term development. We use strong types where we can (TypeScript on the frontend, fairly comprehensive MyPy in Python). We’ve implemented our own component libraries for common components from scratch, which lets us be flexible during large refactorings. We implemented our own custom JavaScript grid—hyper-optimized for our use case, and as a result is the fastest JS grid we tested in our context. We&#x27;re also big fans of metaprogramming—we write an increasing amount of code that writes code for us—which in turn makes it easy to add more functionality to our spreadsheet.<p>We posted about Mito a long time ago: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24305615" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=24305615</a>. No one really liked it (we learned our lesson!), and it didn&#x27;t do much at the time — I think the app had a single button that added a column. Three months ago, someone (not sure who — thank you, alefnula!) posted it again: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31446236" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31446236</a>. It reached the top 3 and we got lots of comments—yay! Since then, we’ve doubled the number of features (mostly data processing), done a UI overhaul, dramatically expanded the Pro + Enterprise offering, made telemetry optional in the free version, and more.<p>We’d love to hear all about your experiences with spreadsheet analysis, the uncanny valley between spreadsheets and code, the travails of moving enterprise analytics off of spreadsheets, and whatever else you’d like to ask or mention. Any and all feedback is greatly appreciated!

8 comments

abanayevover 2 years ago
Wouldn&#x27;t actually using Excel create less friction for potential users?<p>Your target audience is theoretically Excel users who want&#x2F;need to code instead, but I think you&#x27;re alienating the power users of Excel, because their power tools are unavailable in the Mito spreadsheet editor.<p>For example, have you considered dumping the dataframes to &quot;smart&quot; xlsx files with backing code that connects to a local server, listens to worksheet events and tells the server everything that happens so it can write python code in the source notebook?
评论 #32724344 未加载
评论 #32725053 未加载
cm2187over 2 years ago
That&#x27;s an interesting product. What is the advantage over Power Query for a non technical user?<p>There is a slightly different idea on the same theme that I&#x27;ll give a stab at one day: let users express their logic in excel using standard excel formulas, then tell a tool what are the inputs and output ranges, the tool will extract the logic between them (follow the formula), and generate the equivalent code. This would allow a user to express and maintain, in excel, a logic that can be run by IT with no dependency to excel.
评论 #32725982 未加载
b800hover 2 years ago
This is quite similar in concept to a spreadsheet product from 2008, called Resolver One, which ran on IronPython.<p><a href="https:&#x2F;&#x2F;media.prleap.com&#x2F;image&#x2F;221&#x2F;640&#x2F;share_trade_screenshot.png" rel="nofollow">https:&#x2F;&#x2F;media.prleap.com&#x2F;image&#x2F;221&#x2F;640&#x2F;share_trade_screensho...</a><p>It was excellent, and a bit of a shame that it didn&#x27;t get more traction at the time.
评论 #32731383 未加载
bravuraover 2 years ago
This is cool.<p>I&#x27;m a Python engineer (and ML person). I don&#x27;t use pandas often, so when I do need it, I am constantly on stackoverflow.com and testing single lines at a time in Jupyter.<p>I&#x27;d love a version of Mito where I could give it the original mock table and the desired output table maybe as a function (not using a spreadsheet UI), and it would propose pandas code for me.
评论 #32736408 未加载
plaidfujiover 2 years ago
This is really interesting. I would almost frame it as “the missing GUI for pandas”.
评论 #32739029 未加载
Closiover 2 years ago
Well done on making such a huge application!<p>From a user perspective, what are the benefits using this rather than using PowerQuery within Excel? From a functional perspective it seems to do something very similar (i.e. your demo on your front site, I could just do in PowerQuery).
评论 #32725320 未加载
rpicardover 2 years ago
Congratulations on all the product development progress!<p>My wife is a spreadsheet wizard and I’m excited to get her take on this too.
评论 #32724362 未加载
coltoneakinsover 2 years ago
Congrats on the launch!<p>Random, but: what program did you use to make the intro video? It looks really clean.
评论 #32726683 未加载