JavaScript

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
prefix=${HOME}/.npm-packages
EOF

# Add the following five lines to .bashrc, without expanding variables:
cat << 'EOF' >> ~/.bashrc 
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
# 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)"
EOF

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

Resources

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
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
Libraries 2019 flexsearch a full-text indexer for browser and server-side
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)