Skip to content
Duong Hoang Nguyen edited this page Jul 26, 2021 · 28 revisions

Welcome to the lnagb.js wiki!

lnagb.js is 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 project collaborators and potential contributors. If you want to help us, you have come to the right place! 🙌

Foreword

June 10, 2021

lnagb.js is the flagship project of the Division of Mathematics at the Computer Graphics Central (CGC). CGC is on a mission to study and make our discoveries of computer graphics and related subjects (such as linear algebra and artificial intelligence) available for free to everyone. 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 novakcgx@protonmail.com.

In this wiki

  1. Download and installation
    1. Getting started
    2. Website, wiki & documentation
  2. How lnagb.js works
  3. Development
    1. Introduction
    2. API designs

Download and installation

Getting started

How to download lnagb.js
How to load lnagb.js
Setting up for a Node project
How to build lnagb.js manually

Website, wiki & documentation

How to download the lnagb.js website
How to download the lnagb.js wiki
How to compile the documentation manually

How lnagb.js works

How lnagb.js encodes equations
How lnagb.js encodes matrices
How lnagb.js encodes vectors

Development

Introduction

The lnagb.js ecosystem
Components of lnagb.js
Library formats
Git branches
Workflow
Directory structure

API designs

Purposes of API designs
API design: Equations
API design: Matrices
API design: Vectors