I wandered off and built an IDE

A few years ago, I set out to build a small Excel plugin to help out my girlfriend at the time. I ended up building a full-blown IDE over the course of four years and spent the winter in Poland in a startup accelerator.


How did this happen? As with many great endeavors of man, this one also started in order to impress a girl.

Back in 2014, my girlfriend, let’s call her Anna, was having a hard time dealing with data in Excel files. Anna worked in quality control in a large pharma company. Every month or two, she’d start bringing home this soul-crushing pile of Excel files to work on, often over evenings and weekends. I wasn’t too happy about this since I had other plans for our evenings and weekends, but it did give me a chance to show off my superior tech skills so I wasn’t too sad about it. You might be surprised to learn that in a developer’s life, there aren’t all that many chances to impress girls with your coding skills.

Anyway, I took a look at the Excel files she was bringing home and they were basically huge tables of data exported from various systems. She had to alchemy this data into several reports and the way to do it was to carefully follow the several dozen manual steps that were laid out in an arcane word document prepared by God-only-knows-who some years before. I looked at it carefully, and it turned out that what she needed to do would have been a few 10-line queries in SQL. In Excel, though, it was several days worth of vlookup-index-match-temporarycolumn-pivottable-copypaste-HELL. My first thought was importing the data into a database, processing it there and exporting it back. But this task was something she needed to do often and she didn’t have any database experience so this wasn’t an option.

So anyway, I had built some plugins for Excel before, and I figured I could probably build something that would automate at least a part of her task, after which I would be seen and admired by her as the hero that I was. The first thing I wanted to implement was joining tables. So, I rolled up my sleeves and eagerly set out to reinvent the wheel. It took about an hour for me to realize that there already existed these mysterious softwares that have the ability to join tables of data. The idea struck me like a lightning bolt: I could put a small database engine (SQLite) into my plugin, load Excel data into it and query the crap out of it six ways from Sunday. In the UI of my plugin, I’d give the handsome user (myself) a textbox for writing the queries and a grid for displaying results. This was going to be great!

It took a few days to build the first version. It was butt-ugly and looked like it was designed according to whatever the opposite to Feng Shui is, but it worked nicely. I could load data from Excel with the click of a button, type my SQL query into the textbox and run it by pressing “Button2”. Once the plugin was ready, I sat down with a somewhat skeptical Anna and we prepared the queries for her use cases. I was seriously looking forward to the next time Anna would bring home the pile of Excel files. And bring them she did. And work spectacularly it did! Not to brag, but instead of several days, we were done with her reports in about an hour! There was still some manual copy-paste work to do (hence the hour), but the bulk of the work was done by the queries and SQLite.

“I had done it”… I remember thinking… “I had stared the into the eyes of the Gods of the spreadsheet underworld, and the bastards flinched!”. Anna was impressed (ever so slightly and not nearly enough). Not only did I win Anna’s underwhelming admiration, but this was a general purpose solution that I could sell to other people! It was obvious there was only one way this could go, and only one question to answer: what color mansion would I like?

So I posted about my plugin on Reddit/r/excel. The response was very enthusiastic, people loved it! Close to 100 upvote’s worth of love. Encouraged, I continued working on it much to Anna’s annoyance, because now, instead of her spending time in Excel, I was. At one point she got so annoyed that she gave me an ultimatum: either her or the project.

Anyway, the Reddit reception was encouraging but for some strange reason, I did not have thousands of people beating a path to my door to buy some licenses the next morning. It was quite obvious that there was something wrong with all these people who weren’t lining up to buy. After all, my ex-girlfriend Anna saves several days each month with it, and she can’t be the only one who could make good use of it. Perhaps the problem is auto-complete. Any serious tool needs autocomplete these days…

What was I to do, my turquoise mansion was waiting for me just one auto-complete feature away. So, I dusted off my compiler theory books from college, picked up Antlr and built a parser for SQLite (with the help of a SQLite grammar I found on GitHub). This was my favorite feature to build. With the parser in place, one by one I added all the cool features: auto-complete, error highlighting, symbol tooltips, bracket-matching, code formatting, function insights and star expansion. Then I added the ability to use external databases instead of SQLite, which made it possible to process Excel data with an external database but also to easily move data between Excel and databases. This was great: posts on Reddit, posts on HackerNews, money rolling in, licenses being bought. Still, it was only a few hundred – maybe up to a few thousand dollars per month. Careful calculations conclusively showed it wasn’t enough for a mansion.

But, it was fun, and my corporate job wasn’t. I decided to quit and devote my time to a worthy project: my Excel plugin. Being a techy person, I wasn’t very keen to do any marketing and sales, though. I didn’t need those. So, fast forward to today, I completely ignored the business side of it and continued developing what I felt like developing. Inevitably, after a while, I was slowly starting to go broke, but I had a lot of fun developing features, yay! For example, I took Roslyn and used it to add C# support, intellisense and all. LINQ queries on Excel tables, for God’s sake, you can’t tell me that doesn’t make your heart beat just a little bit faster.

At this point, a reasonable question to ask might be: “Why in God’s name would you build an IDE in Excel, I thought developers hate Excel?!”. And you’d be right, most developers don’t care much for Excel, but that’s only because it doesn’t actually let them use their tech skills. But not everyone is technical, and spreadsheets are almost everywhere, especially in companies. Working with this data and getting data in and out of spreadsheets is a tedious process. Good tech tools would make dealing with data in spreadsheets a whole lot easier. Additionally, imagine how much easier it would be to build prototypes and small applications if instead of VBA you could use C# (and LINQ) in Excel. You could write business logic in C#, load data from all sorts of APIs and use Excel for everything else: storage, user interactions, and visualizations. Having Excel as part of your application could give you a whole lot of functionality for free. Excel might not seem fashionable, but it’s really useful and in business, you can pretty much count on most people having it on their machines.

So here are some of the interesting things you can do with QueryStorm:
Using C# in Excel
Cross-database queries from SQLite
C# user-defined functions for SQLite (in Excel)
Prototyping with C# and Excel
Regex galore in Excel

Anyway, a few months ago, by chance, a guy I know asked me if I wanted to apply to this Polish accelerator. I said, “Yeah, sure, sounds good”. He saw right through my cunning attempt at blowing him off and said “no yeah sure… APPLY, NOW MOT*******ER!”. Well, apply I did, and it was fantastic. I spent four months in Warsaw, met a bunch of really cool people, got some new friends, got financing and some useful new skills like presenting. Could have been worse, all in all. I’m really grateful both to Luka (the super cool dude who made me apply) as well as to the HugeThing team. If QueryStorm succeeds on the market, it will be in no small part thanks to theese amazing gentlefolk!

So anyway, I have this IDE… wanna check it out?

  1. […] I wandered off and built an IDE 19 by anakic | 4 comments on Hacker News. […]

  2. Ben Roberts says:

    Just curious – is English your native language? Because this is extremely well written! For a technical blog, I’m extremely impressed at the writing style

    • anakic says:

      Thanks Ben, that’s really nice to read! I’m from Croatia, but I picked up English very young via TV and two older brothers. Got lucky there, turns out English is quite useful:) Glad you enjoyed the story!

  3. Leo says:

    A really entertaining read, awesome 5 minutes – congrats on your product! 🙂 But…what happened with Anna? 🙂

  4. savimportweb says:

    Wow that’s Impressive !

    Thanks for sharing ! I use excel a lot. and i admit i am sooooo bad at excel formulas… and i am a C/C# dev.

    I’m gonna try i out, i have a lot of large “datasets” in excel form, just the idea of doing SQL request on them… and the ide looks nice

    the love story is nice too 😉

  5. Patrick says:

    Awesome story, but what happened to Anna?

  6. Ege Demirel says:

    Cannot believe how far QueryStorm has come from ThingieQuery. I haven’t used it since my old job but saw this on top of HN, and was incredibly happy to see all the new features coming up! I think the next problem problem that you have is inherently, Excel people are afraid of learning new skills, so how can you show them that their workflows can get 10000% easier with SQL and make them write it,

  7. Steve Spangle says:

    . . . At one point she got so annoyed that she gave me an ultimatum: either her or the project.”

    With enuff money you can always find women – – – as evidenced by your new creation for the Excel files.

    Stubborn women are not worth your time, we have a saying here in Texas: “My way or the Highway – – – – oh, and don’t let the screen door hit you in your ass on the way out (emphasis added).”

    • exit jones says:

      spangle: it’s true that inflexible people are not worth your negotiation, so i won’t try and convince you not to “represent” your state with a sexist use of https://en.wikipedia.org/wiki/My_way_or_the_highway (plus a bonus idio[t|m]). but for the record, not everyone in texas agrees with you about “stubborn women” (i, for one, think we need many more of them in congress), and i fail to understand why you feel it apropos in a tech blog to promote the commodification of people like your mother (“with enuff money you can always find…”). srsly dude, why be toxic? what’s your angle?

      anakic: an excellent story well told, a great post, and best of luck to you. i know a bunch of people i can recommend it to, and will do so. awesome work!

  8. Dan says:

    Ah man, I am thinking about building an IDE, and have been for some time. I figure it’s going to be able to be fully programmable like vim, but also have some 3d features, so you can explore your files like a game, and also handle a task running system, so you can see your tasks running ( like a chain of minions in a 3d video game ). It’s something I haven’t gotten to yet. Currently finishing up a long 2+ year dev cycle on animation software, to let people make 2d/3d animated experiences in the web easier + smaller.. but some day maybe the cards will fall, or I’ll get sick of not having a fun IDE.

  9. Stu says:

    I think developers hate visual tools like Excel because they don’t play with their existing tools like version control and text editors.
    If the excel sheet was saved in a format that was a directory and seperate files (not XML – but something readable), then it would be harder for developers to have a problem – it could be integrated into their workflow.

    Anyway – now you just need Microsoft to buy your company and incorporate this into Excel itself.

  10. rich says:

    This is such an obvious thing to build, in retrospect, I wonder why nobody has ever done it before?

    Anyway – an excellent tool, I wish I had thought of it! Good luck with it!

  11. kimjongman says:

    Fuck anna, go Excel plugin

  12. Venkatesh says:

    Man, this was an very interesting read. Congratulations on your journey and good luck for the IDE.

  13. Patrick Williams says:

    Does Air Table have these features? I haven’t used it too much but I thought that was what they were shooting for.

  14. Chris says:

    “At one point she got so annoyed that she gave me an ultimatum: either her or the project [… a few lines later…] After all, my ex-girlfriend Anna saves several days each month with it […]”

    Really like that. Even the way you portray your breakup dismisses it as a footnote to your adventure. Beautiful.

    Disregard Anna. Aquire currency.

  15. Robert Moore says:

    I was under the impression that excel was limited to opening data files with less than 65k ~ records. Is that still the case? Btw amazing job on QueryStorm. When someone goes ALL IN on something for a long period of time, its pretty amazing to be on the sideline and watch you climb your mountain!

    • Hey Robert,

      there are no such limits. Only limits are your memory. If you go with Power Query which is built in Excel 2016, you have a full blown self service BI which handles lots of data and connects to all sorts of services and files.

  16. Simon says:

    THIS is the relevant xkcd, IMO: https://xkcd.com/196/

  17. Chima says:

    How about saying some gratitude to azhdaja, that let you, back in the days, polish your writing skills, eh?! 🙂

  18. Cool, we also built an sqlite based SQL formula for Excel but based on Python and without IDE: http://docs.xlwings.org/en/stable/extensions.html

  19. Javier says:

    Love your writing, keep it up!

  20. […] Show HN: I wandered off and built an IDE 160 comments on Hacker News. […]

  21. Ramkarthik says:

    Interesting read about an equally interesting product (plugin). I can definitely see how it can help so many people.

    Quick suggestion: If at any point you are looking to offer varying price points based on features, one possibility is to have three versions – Business (for people who know and work mostly on Excel every day), Developer (C#, LINQ etc.) , Complete (All features).

    Because having worked with many people who work with Excel for whole day, at least 90% of the users will not understand or use this:
    “Additionally, imagine how much easier it would be to build prototypes and small applications if instead of VBA you could use C# (and LINQ) in Excel. You could write business logic in C#, load data from all sorts of APIs.”

    Not to say this will not be useful. This will be extremely useful for me (a developer). Just a thought.

    Good luck with QueryStorm.

  22. Mike S says:

    Light grey text on a white background, please read usability studies about the best combinations of background and foreground color. This is not one of htem.

    • Ramkarthik says:

      I have used MS SQL Server, Toad and SqlDbx and all these IDEs pretty much use the same background and text color for queries. So I believe most people who write SQL queries are already used to this.

  23. kenn says:

    Hi thanks for query storm.

  24. Alistair says:

    any chance that you’re going to make this MacOS compatible anytime soon for those of us using Office for Mac?

  25. Bill says:

    Very nice writing style. You made the story fun and interesting to read

  26. Al says:

    I’m impressed!! … But as a programmer I can’t fathom why a company would even bother doing this in excel… Keep the data in a DB and export to excel when someone needs a report. It’s terrifying to think there are corporations in the private sector this dumb.

    • Shane says:

      AI, How old are you? Because I can tell you there are MANY companies where the excel spreadsheet is the one data source to rule them all. And in big companies, there is always that one guy who looks after some bit of important data who has no interest in ever using anything but their beloved excel.

      On a side note, nice article anakic , good luck with the application.

  27. […] Why develop an IDE? To impress your girlfriend of course! […]

  28. Chris says:

    You should have named the ide Anna.

  29. […] 四年前,有位 Poland 工程師因為不忍心女友每日都要寫一大堆 vlookup。於是研發了一個 plugin QueryStorm 可以直接係Excel 上行 SQL。可以用 SQL CRUD Excel 的 data,而且提供 C# API 去擴展功能。原文。 […]

  30. Adam says:

    Cute. Really cute. For me when wrangling with this trouble the solution was a Microsoft Access database. It’s very easy to reference excel files in it and then have other sheets in the excel file link to access query. Even if you’re handling a situation with lots of excel files you can write some VBA to handle that, make a nice control panel with some buttons and then leave the SQL writing open to the user. However, there’s no arguing that as a SQL writing IDE what you built is way more handy than Access.

Leave a Comment

Your email address will not be published. Required fields are marked *