Awesome Mad Science
Delightful npm packages that make you say "wow, didn't know that was possible!" PRs welcome!
peer-to-peer
- peerwiki - all of wikipedia on bittorrent
- simple-peer - send video/voice/data p2p in the browser (with webrtc)
- torrent-docker - realtime boot of remote docker images over bittorrent
- torrent-mount - mount a torrent as a filesystem
- webtorrent - streaming torrent client for node & the browser
browserify
- brfs - turn
fs.readFileSync()
calls into inlined static assets - browser field spec - replace certain files/modules when a module is bundled for the browser
- browserify - use
require()
in the browser - glslify - npm modules compiled into WebGL shaders
- webworkify - composable web workers for browserify
files
- file-type - detect file content types by checking their magic numbers
- fuse4js - write filesystem driver in js
geometry
- alpha-shape - any dimensional alpha shapes (think "concave" hull)
- box-intersect - fast any dimensional box intersection detection
- convex-hull - robust any dimensional convex hull
- delaunay-triangulate - robust any dimensional delaunay triangulation
- surface-nets - extracts level sets in any dimension
- voronoi-diagram - any dimensional voronoi diagrams
- voxelize - voxelize a mesh
hardware
- cylon - command robots, devices, and more from node
images
- indico.io - facial emotion recognition and facial feature extraction
- trackingjs - computer vision on the web
sound
- doppler - detect motion with the doppler effect using only the microphone and speakers
- speak.js - text-to-speech on the web
streams
- strip-html - strip html from a stream
text
- diff - show text differences
- franc - detect the language of text
- indico.io - political sentiment analysis
- node-tesseract - A simple wrapper for the Tesseract OCR package
- normit - Google translate text & speak it
- ocrad.js - OCR in Javascript via Emscripten
- pullquoter - pull interesting quotes out of an article
- sbd - split text into sentences
- sentiment - basic sentiment analysis
terminal
- minimist - simple argument parser
- progress - create a simple terminal progress bar
- terminal-menu - create retro terminal menus
- vantage.js - CLI + SSH + REPL for Node
- cash - Cross-platform Linux commands in pure ES6
virtual machines
- jsemu - A list of emulators written in the JavaScript
- jslinux - x86 emulator for running Linux, written in JavaScript
- jvm - java virtual machine in pure node.js
- doppio - actively updated jvm in node.js, written in TypeScript
misc
- bell.js - real-time anomalies detection for periodic time series.
- bitcoinjs-lib - bitcoin client for node & the browser
- fastparallel - zero overhead parallel function calls
- google-distance - calculate travel distance between two locations on earth using Google Maps' API
- qr-image - generate QR codes
meta-programming
- notevil - javascript javascript interpreter, useful for running untrusted code safely.
mad scientists (people)
- Mikola Lysenko - linear algebra, computational geometry, WebGL
- Dominic Tarr - streams, distributed systems
- Elijah Insua - NC machines, CAD/CAM
- Mathias Buus - torrents in node, fuse bindings, data replication
- Feross Aboukhadijeh - webtorrent, bittorrent, p2p hacks
- Max Ogden - streams, voxels, data replication
License
To the extent possible under law, Feross Aboukhadijeh has waived all copyright and related or neighboring rights to this work.