So why do we hold computers to higher standards than humans? Either it's OK to not being able to define criminality objectively and in that case algorithms shouldn't be disqualified for this very reason, or it's not OK, but in that case humans should not be allowed to do the job either.
Convicting people for criminal behaviour based on a subjective definition of it, is what we already do wrong. Way too many innocent people end up being punished or killed, which I expect to be (objectively) a criminal act in itself. So, I thought we better first have a tool that solves that, instead of a tool that amplifies it.
What a great project, and what a great synth you have reproduced! This is an awesome musical instrument, nothing less. Really inspiring, thanks for making and posting it.
I was kind of frustrated for a while with the broken type system of Javascript, as well as with the lack of easy type checking. I then wrote a simple small library to make my life a little easier. It's called types.js, in NPM as well..
Changing my entire code to TypeScript just feels a bit over the top to achieve only static type checking. I now only dynamically check if needed. I believe there are so much worse and important problems we are dealing with as Javascript developers today that need attention.
I really believe WASM will become the base for a great new language that eventually will make Javascript, TypeScript and so many others deprecated, solving a zillion problems at once.
Try Flow, if you haven't yet. It's not as complete as TS, but it gets out of your way and requires minimal investment. I find that the `(foo: string, bar: number)` annotation style is just far more readable than e.g. JSDoc. You don't even really need to be running Flow (babel will strip them), but it's practically free - why not.
Looking good, only the score numbers might be a little too thin, and the margin on hover animation doesn't work for me. It distracts me from reading, becoming a bit annoying.
Static? I use my own type-checking/enforcing lib as a base for everything I write in JS or CS (https://github.com/phazelift/types.js). It's only 1.8kb, dynamic and never fails on me.