Title: I wanted to share a simple web app I created recently, which lets you estimate income taxes owed in the US: <a href="https:&#x2F;&#x2F;taxsim.app" rel="nofollow">https:&#x2F;&#x2F;taxsim.app</a><p>All the calculations occur directly in the browser, and are powered by a Fortran program that has been converted to WASM using emscripten. This calculator was originally developed in the 1970s [1] by the non-profit National Bureau of Economic Research. NBER has been maintaining this F77 codebase for the last 50 years, and uses it primarily for academic research on tax policy. The Fortran source code itself is over 1MB of text, because it codifies both federal and all 50 states&#x27; tax laws for each of the last 62 years.<p>I first learned about NBER TAXSIM [2] a few months ago via an interesting paper they published &quot;Automatic Tax Filing: Simulating a Pre-Populated Form 1040&quot; [3]. The Fortran code itself is not open-source, but is available on request for research purposes. I reached out to NBER and proposed compiling it to WASM, so it could be run directly in a browser. With relatively little effort I was able to create a js&#x2F;wasm version [4], thanks in huge part to previous open-source work [5].<p>This WASM build now powers <a href="https:&#x2F;&#x2F;taxsim.app" rel="nofollow">https:&#x2F;&#x2F;taxsim.app</a>, which is my attempt to create an interactive UI to allow for easier exploration of the US tax code. Specific tax scenarios can also be shared easily, by simply copying the browser URL. The code for this webapp is also open-source [6].<p>This was my first time experimenting with WASM, and I am already a huge fan. Not only was I able to take a 60 year old codebase and get it working on every modern browser and device, this work is also now benefiting the academic community. For example, the js&#x2F;wasm can be run directly in V8, which means it can also now be run locally within R using libv8 [7]. Previously most researchers were uploading their tax scenarios to NBER&#x27;s servers via ftp&#x2F;ssh&#x2F;http.<p>[1] <a href="https:&#x2F;&#x2F;taxsim.nber.org&#x2F;feenberg-coutts.pdf" rel="nofollow">https:&#x2F;&#x2F;taxsim.nber.org&#x2F;feenberg-coutts.pdf</a><p>[2] <a href="https:&#x2F;&#x2F;taxsim.nber.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;taxsim.nber.org&#x2F;</a><p>[3] <a href="https:&#x2F;&#x2F;www.nber.org&#x2F;papers&#x2F;w30008" rel="nofollow">https:&#x2F;&#x2F;www.nber.org&#x2F;papers&#x2F;w30008</a><p>[4] <a href="https:&#x2F;&#x2F;github.com&#x2F;tmm1&#x2F;taxsim.js" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tmm1&#x2F;taxsim.js</a><p>[5] <a href="https:&#x2F;&#x2F;chrz.de&#x2F;2020&#x2F;04&#x2F;21&#x2F;fortran-in-the-browser&#x2F;" rel="nofollow">https:&#x2F;&#x2F;chrz.de&#x2F;2020&#x2F;04&#x2F;21&#x2F;fortran-in-the-browser&#x2F;</a><p>[6] <a href="https:&#x2F;&#x2F;github.com&#x2F;tmm1&#x2F;taxsim.app" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;tmm1&#x2F;taxsim.app</a><p>[7] <a href="https:&#x2F;&#x2F;github.com&#x2F;shanejorr&#x2F;usincometaxes&#x2F;pull&#x2F;11" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;shanejorr&#x2F;usincometaxes&#x2F;pull&#x2F;11</a>
Upvote: