3 ms·
These are great suggestions! A few years ago I worked through building a spreadsheet in JavaScript. It was a great introduction to interpreters. I read through
by lancefisher 7y ago
These are great suggestions!
A few years ago I worked through building a spreadsheet in JavaScript. It was a great introduction to interpreters. I read through Writing an Interpreter in Go by Thorsten Ball [1]. Constraining the interpreter to execute formulas in cells was a straight-forward way to approach building one from scratch.
Writing a Pratt parser as part of this forced me to understand how it works. Figuring out how to process a sheet led me into algorithms and structures like directed acyclic graphs (as mentioned in the article). I found myself referencing Introduction to Algorithms and really studying it [2].
In the end I turned it into a talk at Big Sky Dev Con in Montana. The whole thing was a good experience - from researching how to do it, to sticking it out through the implementation, to distilling it to a 45 minute talk. Be sure to check out the recording [3] and code [4] if you're interested.
Any of these suggestions will lead you down a rabbit hole of learning with a clear objective in sight to keep you motivated to dig deeper.
[1] https://interpreterbook.com/ https://interpreterbook.com/
[2] https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844 https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press...
[3] https://www.youtube.com/watch?v=Sj4h0DcVLL0 https://www.youtube.com/watch?v=Sj4h0DcVLL0
[4] https://github.com/lancefisher/cellularjs https://github.com/lancefisher/cellularjs
- will_pseudonym 7y agoThank you for sharing this, Lance! I'm a "recovering actuary/Excel power user/Excel developer (shudder)" currently in Lambda School in their web development track. I'm really enjoying watching the recording of your talk, and in addition to learning one way to build a spreadsheet, I'm also learning lots of good software development practices orthogonal to the specific project, which is great. Again, thank you for sharing!
- lancefisher 7y agoThanks! Glad you like it!
- will_pseudonym 7y agoBy the way, I'm curious, how did the company you work(ed?) for in Missoula, MT, get started? I'm always interested when I come across software companies in non-megalopolises.
- lancefisher 7y agoThe three founders live here, and wanted to build a software company. They worked hard to make something people wanted, and raised money from the three Fs (friends, family, and fools). They applied to YC on a lark, actually got in, moved to Mountain View for 3 months, learned a ton and made good connections. After gaining traction in the market it was possible to raise from angels and then VCs. I believe you can build and sell software from anywhere if you have the drive and find a way to solve problems that people are willing to pay money to solve. Here's an article that talks more about it: https://missoulacurrent.com/business/2018/08/missoula-tech-submittable/ https://missoulacurrent.com/business/2018/08/missoula-tech-s...