Skip to content

References

Prasad Talasila edited this page Jan 23, 2019 · 171 revisions

Reference Architectures

Submitty - an open source programming assignment submission system website, github
http://web-cat.org/cta13
http://web-cat.org/
http://web-cat.org/group/web-cat
http://marmoset.cs.umd.edu/index.shtml
https://code.google.com/archive/p/marmoset/source/default/source
https://github.com/matale/marmoset
https://github.com/cs50
http://cs.harvard.edu/malan/sandbox50/readme.html
http://inginious.org/
https://github.com/exercism/exercism.io
https://mooshak.dcc.fc.up.pt/ (supports Java)
https://github.com/autolab/Autolab
http://www.autolabproject.com/
http://etherpad.org/
MIT tools:
    didit - github, web a classroom continuous build server
    collabode - github, web Collabode is a web-based Java IDE for close, synchronous collaboration between programmers.
    caesar - github Collaborative code review

Complementary Code Components

Codalab - platform for executing code for reproducible research; can use parts of this project in ours.
botpress - wordpress-like bot creation framework github
pkg - A packaging system to produce binary from node.js application. This can be used to simplify the deployment of all the AutolabJS components, especially the execution nodes.
parcel.js - A packaging system to deliver client-side assets of a web application. This can deliver the static assets of the website.
signal - an open source secure communication library and application github, signal-protocol-js, docs
dat - distributed, secure P2P file system node.js module, website, dat library and cli
IPFS - P2P secure hypermedia, file distribution system and name lookup system. A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.
git servers - gitolite, gitolite + ldap authentication, gitolite config via git repo-1,2, NodeJS-Git-Server
ionic framework - build native apps using web technologies
gittorrent - A decentralization of GitHub using BitTorrent and Bitcoin
carlo - Web view for Node applications via Google Chrome
electron - cross platform desktop apps (use for installation), GUI for autolabcli, review
Blockstack - Distributed P2P web with distributed DNS, PKI Blockstack-core, blockstack organization
docker-node: github, docker hub
Netflix Conductor - process workflow orchestrator for microservices
https://github.com/openHPI/codeocean
https://github.com/Coding/WebIDE, https://coding.net/
http://www.tutorialspoint.com/codingground.htm
https://github.com/c9
https://github.com/ashking/Cloud9
https://github.com/kdelfour/cloud9-docker
https://github.com/siemens/jailhouse
https://github.com/ajaxorg/ace
https://kubernetes.io
https://dcos.io/
https://ordina-jworks.github.io/docker/2018/09/24/docker-networking-with-weave.html
typeahead - useful text box suggestions during install setup
http://techgenix.com/kubernetes-alternatives/
https://github.com/hashicorp/nomad
https://stackoverflow.com/questions/29198840/marathon-vs-kubernetes-vs-docker-swarm-on-dc-os-with-docker-containers
https://www.reddit.com/r/devops/comments/6o4ryf/nomad_vs_kubernetes/
https://blog.kublr.com/choosing-the-right-containerization-and-cluster-management-tool-fdfcec5700df
Install Cloud9 locally - 1, 2, 3, 4
https://wiki.eclipse.org/Orion
https://www.eclipse.org/che/
https://www.nomachine.com/
https://github.com/Netflix/Hystrix
https://github.com/Netflix/Hystrix/tree/master/hystrix-dashboard
DB + Cache - Redis, review, EVCache
http://cloudcoder.org/
https://github.com/cloudcoderdotorg/CloudCoder
http://codemirror.net/
https://about.gitlab.com/
gogs - Gogs is a painless self-hosted Git service. github, api docs, nodejs-client
GitBlit - Java-based git server

zeroMQ - home, message matching, comparison with RabbitMQ, competitors, node.js library, review, Redis vs ZeroMQ
(Lesson: use zeroMQ for distributed messaging)
deepstream - real-time messaging library
SocketCluster
JSON Web Tokens - tutorial1, tutorial2, node-jsonwebtoken, njwt, jsonwebtoken, jwt
http://alternativeto.net/software/gitlab/
Buildkite - OSS alternative to Gitlab CI-runner
https://github.com/education/classroom-desktop
https://github.com/turnkeylinux-apps
libsodium, sodium announcement
gitlab - install tutorial, security
docker - survey
http://www.rancher.io/rancher-os/
travis-ci has open-source components that are useful to our project. Especially, look at worker and travis-build
linkerd - another gateway to microservices, review, service mesh vs API gateway
Kong - NGNIX API Gateway with built-in authentication, review, website
Traefik - reverse proxy and load balancer for microservices and docker containers
Zuul - Load balancer and dynamic router from Netflix
gitinspector - The statistical analysis tool for git repositories
deployd - another API builder
muguet - DNS Server and Reverse proxy for Docker
GitLab may be heavily for some installations. For lightweight alternatives, see jgit-based gitblit
Gitiles - web-hosting of git repositories
loki.js - lightweight NoSQL DB for Node.js and Browser website and GitHub
Blessed - ncurses like terminal library for node.js.
plagiarism detector in python
fx - CLI json prettifier and explorer written in JS

Test Generators

https://randoop.github.io/randoop/
http://www.evosuite.org/
Stackoverflow comparison
artillery - load testing of servers including socket.io and websocket servers; reviews - 1, 2

Docker, Vagrant, Ansible, Kubernetes

https://docs.docker.com/engine/reference/commandline/
Docker Remote API - helpful for lifecycle management of docker containers
Core OS - wikipedia, website, container linux, rocket container engine, etcd, coreOS on vagrant, fleet process manager
weave - docker networking, DNS and load balancing
http://stackoverflow.com/questions/16647069/should-i-use-vagrant-or-docker-for-creating-an-isolated-environment
https://www.vagrantup.com/docs/vagrantfile/ssh_settings.html
http://ermaker.github.io/blog/2015/11/18/change-insecure-key-to-my-own-key-on-vagrant.html
https://github.com/devert/vagrant-nodejs-app-starter
https://www.quora.com/What-are-the-specific-roles-of-Ansible-and-Kubernetes-and-their-differences
https://blog.kublr.com/approaches-to-configuration-management-chef-ansible-and-kubernetes-80e8d390c93
http://www.networkworld.com/article/2172097/virtualization/puppet-vs--chef-vs--ansible-vs--salt.html
https://www.stavros.io/posts/example-provisioning-and-deployment-ansible/
https://www.vagrantup.com/docs/provisioning/ansible.html
http://stackoverflow.com/questions/30075461/how-do-i-add-my-own-public-key-to-vagrant-vm
https://blog.confirm.ch/deploying-ssl-private-keys-with-ansible/
http://docs.ansible.com/ansible/playbooks_vault.html
https://dantehranian.wordpress.com/2015/07/24/managing-secrets-with-ansible-vault-the-missing-guide-part-1-of-2/
https://github.com/fjsanpedro/vagrant-nodemaster
https://github.com/fjsanpedro/vagrant-node
https://github.com/catedrasaes-umu/vagrantweb/
Docker swarm mode will be useful in deploying execution nodes
http://docs.ansible.com/ansible/test_strategies.html
Tests for ansible scripts - 1, 2, 3, 4
https://raymii.org/s/tutorials/Ansible_-_Playbook_Testing.html
https://github.com/tumf/ansible-unit-test
Test Kitchen - testing framework for Ansible, review article, PPT Testing in ansible discussion
ServerSpec - another RSpec engine for testing Ansible scripts

Node

process managers for node apps - pm2, hotel, alfred-hotel
Node.js tutorial

JS Libraries

awesome-nodejs
Commander - commandline interfaces in node.js
other CLI libraries for node.js - vorpal.js, vantage.js, caporal.js.
inquirer - A collection of common interactive command line user interfaces.
Node.js REPL module
SWIM - a distributed service discovery algorithm paper, js module, seneca-swim
micro - microservices framework for Node.js
seneca - microservices framework in js github, seneca-web, www, seneca-mesh, seneca-entity, seneca-mysql-store, seneca-load-balancer - learn from this module and redo it from scratch; don't use it, seneca-auth
A more popular framework that is similar to seneca.js is feathers.js - github, website, performance
Shelljs - portable UNIX shell in JS
execa - child process mgmt
Nesh - Node.js interactive shell
liftoff - Launch your command line tool with ease.
[history](Manage session history with JavaScript) - Manage session history with javascript
simple-git - light weight interface for running git commands in any node.js application.
nodegit - similar to simple-git, but much better website, github
[gitlab])(https://github.com/repo-utils/gitlab) - Gitlab nodejs API Client; not an npm package
gitlab - npm, code gitlab api nodejs library
cli-gitlab - a GitLab CLI library; can learn much from this library code base
nitro - file and shell utils
pm2 - process manager
lodash - functional programming library; successor to underscore, see lodash review, lodash documentation
express-session - session manager for express.js server
forever node.js library
chalk - colored text on terminal
karma - test runner; wrapper around Mocha
Mocha - unit testing framework
chai - assertion library
mocking libraries - jsmockito, sinon, mock-socket, nock, json-server
Browser-based testing overview
phantomjs - headless webkit based browser
casperjs - junit-like wrapper around phantomjs
selenium server - real browser automation tool
webdriverIO - selenium driver for nodejs
cucumber github website - BDD tests written in plain english
protractor - E2E test framework for Angular apps
browser-perf - Performance Metrics for Web Browsers
protractor-perf - E2E test framework to check for performance regressions in Angular apps
node logging basics, log libraries comparison
winston - multi-transport logger
express-winston - winston logger for express server
good logging practices - from Java world, node.js world
debug - most popular JS logging module github npm, njsTrace
morgan - HTTP request logger
sequelize - ORM library
keyv - Simple key-value storage with support for cache, redis, mongo, sqlite, mysql, postgres
lowdb - JSON based DB storing to file system (perfect for configuration)
crypto-js - javascript library of crypto standards
node-sodium, libsodium - nodejs wrappers for NaCl library
OpenPGP in JS - code, website
Stanford Javascript Crypto Library - website, github, paper
Node.js crypto module
jsdoc - Javascript documentation generator
Comparison of documentation tools
validator.js - input validation library
ow - function arguement validator
Async, review
HTTP clients - request, request-promise, superagent
Delivery for file transfer to and from clients
yargs - option parser
Flightplan - Run sequences of shell commands against local and remote hosts. Flightplan is a node.js library for streamlining application deployment or systems administration tasks.
JS Promises - Bluebird
Top Node Packages
Most admired npm packages
npm documentation - commandline options, tutorial
State of Java Script survey
npmtrends - package popularity comparator
validator - string validation package
ipaddr - IP address manipulation and validation package
tldjs - DNS name validation and manipulation
microservices - microservices libraries for node js
awesome nodejs libraries
awesome serverless computing
ES6 modules
Babel - javascript compiler that turns the latest JS/ES code to earlier versions website, review
feathers - open source REST and realtime API layer
API Documentation tools --> swagger, APIdocs, slate, loopback, comparison
Cookies: nodejs - tough-cookie, cookies; browser - js-cookie, Cookies
Pure JS Webapp frameworks - Meteor, sails
express-limiter - express rate limiting package
Node.js frameworks - compilation, review, tutorial
load balancers - node-http-proxy, bouncy, websockets+node-http-proxy, scaling review, reddit opinions
Scaling node.js apps - slides, video, standard options
Service discovery - seaport
Find and list free ports - find-free-port, get-port, minihost
browserify - for having require in browser code
SQL libraries - sequelize, pg, mysql
highlight.js - LaTeX minted equivalent for node.js and browser
bluebird - a JS promises library
HTTP request client libraries - request, axios
node-monitor - remote monitoring of node.js apps
monit - a Linux process monitoring utility
node-config - node.js configuration library
node-cache - in-memory cache for node.js application
Review of Docker monitoring tools - 1, prometheus, collectd, 2, 3, docker blog, 4
base64 - base64 encoder and decoder in the browser
JSONParse - create and handle JSON streams
node plugin systems - Architect, comparison - 1, 2
async - async utilities for node and browser doc
preact - light-weight react framework in JS for browsers
webpack - code bundler and dynamic code loader for JS
architect - a plug-in management system for Node.js, tutorial, presentation
survey of node.js plugin frameworks
broadway - most-popular plug-in system for node.js.
defaults - A simple one level options merge utility
TOML - Simple ini-style config language github, toml-node
Comparison of config formats - review, editorial review, FAQ, toml vs yaml example
(lesson: use YAML for AutolabJS Config and let the custom ConfigParser read YAML and generate JSON config for all the AutolabJS components) isomorphic-git - pure JS implementation of git for node and browsers
js-git and js-github
assemble - a waf-like build tool for web projects
micromatch - regular expressions (regex) matching library for JS

Secure VMs

https://susestudio.com/
https://www.turnkeylinux.org/nodejs
https://alpinelinux.org/
https://clearlinux.org/
Secure Remote Password - key negotiation from password, SRP6a is the latest version
RFC5054 - Using the Secure Remote Password (SRP) Protocol for TLS Authentication
RFC2945 - The SRP Authentication and Key Exchange System
Also see chapter 14 of Cyptography Engineering, Bruce Schneier et al., 2010.
Stanford Javascript Crypto Library - website, github, paper
SRP on wiki - see the implementations section for useful node.js, client, java and other language implementations, why not use SRP
(https://github.com/bitwiseshiftleft/sjcl), paper
GNU Crypto - A JAVA cryptographic library
Nimbus SRP - SRP implementation in Java and Javascript
Recommended ciphers and configuration for popular web servers - Cypher List, SSL Labs, OWASP, stackoverflow, Mozilla
libsodium - doc
https://www.indolering.com/dnschain-is-harmful
https://www.indolering.com/okturtles-dnschain-unblock-us
david - dependency management tool, the badge
suggested security settings - keylength, OWASP, certificate pinning, assessment tools for security settings
HOWTO: tls on node.js
Free SSL certificates - Startcom, Let's Encrypt

code quality tools

codeclimate - website, config, remember to add the code coverage part to this report
eslint - website, config, google-rule-set, airbnb rule set
XO - clean wrapper around eslint
comparison of tools
StandardJS - no frills JS code linter and fixer
istanbul - code coverage tool website, use with coveralls
cucumber - BDD tool website, cucumber.js
overview - article
testling - a TAP compliant headless JS unit tests
ava - concurrent node.js test runner
Tests for web content layout in a browser. See reftests, web platform tests and wptrunner
ESLint config generator
flame graphs - 0x, cpu, node.js, Brendon Gregg's repo, node-stackvis
standard.js - JavaScript Style Guide, with linter & automatic code fixer
queue and job management - bull, kue, celery
FlameScope
flow - Static type checker for javascript web, github
unstated - state management for react apps

Telemetry

statsd - metrics collection server code, polyglot support
graphite - graphing of time series data collected by statsd
store.js - cross-browser storage engine
pkg - Package your Node.js project into an executable

Java Libraries

List of open source Java tools / libraries, see Code Analyzers, Code Beautifiers, Code Coverage Tools, Profilers

Useful Tools

Teamviewer for remote help during labs and office hours
Install gedit plug-ins; enable sidebar and bottom bar (commandline terminal)
GitHub markdown help
Rosetta Code - implementations of same problem in different programming languages
creating a deb package

Books

Eloquent JavaScript
Head First JavaScript
JavaScript: The Good Parts - Crawford website, video
Pro Javascript Performance Monitoring and Visualization, Tom Barker
ES6 features
modern-js-cheatsheet
idiomatic js
HTTP API Design

Clone this wiki locally
You can’t perform that action at this time.