The ECMA - 262 Standard, ratified after Netscape and Microsoft (mostly) agreed to make JavaScript and JScript interoperable.

Setting Up Node

In order to run NodeJS sanely on macOS and WSL, I’ve taken to setting up an unprivileged package install folder like so:

mkdir "${HOME}/.npm-packages"

# Add a new dotfile, without expanding $HOME
cat << 'EOF' >> ~/.npmrc

# Add the following five lines to .bashrc, without expanding variables:
cat << 'EOF' >> ~/.bashrc 
# Unset manpath so we can inherit from /etc/manpath via the `manpath` command
unset MANPATH # delete if you already modified MANPATH elsewhere in your config
export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

Ways To Avoid Writing JavaScript

I’ve taken to looking for alternative ways to develop in JavaScript that don’t require me to put up with its syntax and overall insanity. Here’s a few I like (mostly compilers, since that’s what makes the most sense for me):

Category Date Link Notes
Compilers 2019 Reason an OCaml-like language and compiler
2018 Elm A functional language that compiles to JavaScript
pythonium A Python3 to JavaScript translator
2017 Opal A Ruby transpiler
wisp A homoiconic LISP dialect with Clojure syntax and macros


Most of these are library-independent. Check my jQuery page for more, since there’s an entire sub-culture that believes it to be JavaScript programming in and by its own…

Category Date Link Notes
AI 2019 nlp.js a natural language processing library for bots
Animation 2018 Pts A Processing-like library
Charting 2010 Highcharts A very comprehensive charting library
2013 GoJS A commercial charting and diagramming library
2018 F2 an elegant charting library for mobile
Data Structures 2017 seamless-immutable Immutable data structures a la Mori
2018 knockout.sync.js A nice nockout extension that allows you to sync data among clients and backends
Games 2010 Akibahara A wonderful set of small libraries to clone 8-bit era arcade games
Graphics 2008 JS Infoviz Toolkit A pretty comprehensive set of resources
2009 Parcycle A particle system for Canvas
2010 Raphael A vector graphics library
2011 paper.js open source vector graphics scripting framework that runs on top of Canvas
2012 Ejecta A fast GL-backed canvas library for iOS
2013 Two.js An intriguing API that supports a number of back-ends (svg, canvas and WebGL)
svgjs A lightweight library for SVG handling
2014 glsl-transition A library that uses GL shaders for transitions
2015 smartcrop.js Content-aware image cropping
2019 Fabric.js supports various kinds of canvas manipulation, including image filters
Planetary.js Another globe visualization library
uPlot extremely fast timeseries plotting
Gio.JS Globe visualization library
chart.xkcd various XKCD-styled chart types Very nice globe visualization component, with animated overlays, arcs, etc.
2020 Textures a lovely way to do SVG-based hatch fills for charts
Interpreters 2019 QuickJS supports compilation to standalone binaries
Libraries cote a zero-configuration microservices framework
moveable GUI library for drawing editors
htm a JSX-like library
flexsearch a full-text indexer for browser and server-side
osmosis an HTML parsing library with Xpath support
azure-sync syncs from local filesystem to blob storage
Markup 2007 Diff Algorithm Text diffing
2013 Rainbow A nice syntax highlighter
Codeblock.js A nice way to provide code samples.
Mobile 2019 Expo Good React Native wrapper/accelerator
NativeScript Native mobile development with nice Vue support. Probably my favorite so far
Ionic Good Angular, Vue and React Native wrapper/accelerator
Tools 2011 PhantomJS A complete WebKit renderer, since obsoleted.
2012 javascript.tmbundle An indispensable "TextMate":apps/TextMate add-on (the autocompletion features alone are priceless)
2016 nodeenv A sane way to install multiple versions of Node in segregated environments. Downloads prebuilt binaries on macOS, Linux and Windows.
create-react-app A bootstrap tool for React apps.
2017 pkg Package Node projects into an executable
UI 2007 Timeline a draggable timeline widget
2011 Color Wheel A color picker component
Timeframe Amazing calendar widget with support for date range selection.
2012 Mousetrap a very nice way to handle keyboard shortcuts
jsPlumb A Yahoo pipes-like library
2013 rainbow.js A slim progress bar
Odometer A library for counters with smooth transitions
nprogress Another slim progress bar
Kalendae a very impressive, framework-agnostic date picker
date A date parser that can take pseudo-natural language strings
2014 Framerjs For designing interactive prototypes
2015 lazysizes For lazy image loading
dragula a cute drag and drop library
2018 zircleUI a Vue-based framework for developing zoomable UIs (especially nice for touchscreen displays)
2019 Flowy a library for implementing flowchart editors with drag and drop
tiptap a nicely featured editor component for Vue.js
2020 arwes a React-based framework with a futuristic look and feel
neutralino a lightweight alternative to Electron
plyr a customizable HTML5 video player component

This page is referenced in: