Skip to content
Duong (Zach) Nguyen edited this page Nov 15, 2022 · 28 revisions

Welcome to the lnagb.js wiki!

The lnagb.js project provides a free, accessible, and educational linear algebra environment for math students, computer science students, and everyone who wants to study linear algebra or algorithms. This wiki is for contributors, but those who want to understand more are also welcomed. If you want to help us, you have come to the right place! 🙌

Before you read the wiki, it is important that you have read the contributing guidelines.

🌠 Super tip for reading the contributing guidelines and the wiki: You can skim by only reading the section headings, text in bold, and tables.

Foreword

June 10, 2021

Since 2019, I have invested most of my time as a developer into building a completely free, accessible, and educational linear algebra environment. Thanks to a passion for computer science and explaining concepts in a simple language, as well as the opportunities I am fortunate to have had, I am still able to continue this project despite being the sole developer and contributor. It is my biggest project to date with the most commits (we recently reached 400 commits on June 6, 2021) and I don't think I will stop during my years ahead in university.

In many ways, I have learned so much from this project. I started lnagb.js after I had learned the basics of JavaScript, so it helped me solidify my knowledge and put my skills into practice. Then I found out about ES6 and rewrote the whole library (which was only about 200 lines of code back then) to adopt ECMAScript modules. I closely followed the 3D graphics JavaScript library three.js as a model and learned about API naming, code structures, and algorithms from it. If you use three.js, you can see that a lot of lnagb.js's objects are actually compatible with three.js. Recently, the project detached from the three.js model, defined its own goals and priorities, and is about to undergo a second major API revamp. I also learned about unit testing and the different roles which are normally taken by multiple people in a project. While developing lnagb.js, I am simultaneously a developer, a writer, a planner, a designer, a marketer, a learner, and a mentor. 2 years of lnagb.js on and off have been a worthwhile journey packed with lessons and experience for me. GitHub doesn't show this, but there's a story behind every chunk of commits.

I believe those are the intangible values that you will also receive from this project as a contributor, especially if you are still a student in an academic institution. Not only are you taking part in a huge effort of fostering a free learning platform powered by the Web—which I am sure will benefit many students of linear algebra and computer science—but you will also get away with the knowledge and experience that will serve you well. This entire wiki is dedicated to you. If it is not enough to answer your questions, you can always open a new issue on GitHub, or e-mail to cszach@proton.me.

Table of contents

Setup

How to download lnagb.js
How to download the website
How to download the wiki

Try the library

How to load the library
Performing some common linear algebra

For developers

Components of the library
Directory structure
Library formats
How to build lnagb.js
How to compile the documentation

For designers

For writers

Need more support?