Friday, September 15, 2017

NPM package tip

FYI the only way to install and save Node/Javascript libraries is like this:

npm install mongoose@"~4.0.8" --save

This installs anything 4.0.x — major and minor are respected.  The option “@4.0.8” would be only 4.0.8, which is fine, but probably too picky.  The default “^4.0" is terrible and will install anything with major version 4. Don’t ever do this.  It’s also the default. Programmer emptor.

For Python, I generally do "pip install package" to install the latest version of a module, then "pip freeze mypackage >> requirements.txt" to capture the exact version number.

Sunday, August 13, 2017

TIP: draw plots directly in terminal! (with iTerm2)

Example: your data is already in CSV format in "z.plt", this one-line command will render a plot and show it in the terminal:

gnuplot -e 'set terminal png ; set output "plot.png"; plot "z.plt" using 0:7 with lines' && imgcat plot.png

This is great for testing web site performance. The previous one line ran Apache Bench to beat the crap out of my local server, and write the output into a Gnuplot-compatible CSV file:

ab -n10000 -c100 -g z.plt

Tuesday, July 25, 2017

slides: Design Patterns in Python

(this page is

Slides in Google Docs, or just buy the book: "Design Patterns Explained Simply", via Sourcemaking. The have a lot of material online so check it out!

Wednesday, July 12, 2017

show all project code (a find-git-xargs example)

The following command finds all your project's Javascript files that aren't installed via NPM. It then does a "git blame" so you can see who wrote which bits of code, and how old the code is.

find . -path ./node_modules -prune -o -name '*.js' | xargs -n1 git blame --date=short --

If you're using OSX, install the GNU versions of the Unix tools

gfind . -path ./node_modules -prune -o -name '*.js' | gxargs -n1 git blame --date=short --

Those who don't understand Unix will be doomed to reimplement it. Poorly. :)

Tuesday, July 11, 2017

OSX: control-left/right moves by words in terminal

I use the three-finger-swipe to move viewports on OSX. Using control-left and -right to move by words in the terminal is VERY helpful!  Here's how to do it:

1) go into Preferences and disable control-left/right

2) add this to your ~/.bashrc file:

# control-left/right = skip by word in terminals
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e[1;5C": forward-word'

bind '"\e[1;5D": backward-word'

3) log out and back in to enable control-left/right to skip by words

hack day THIS SATURDAY in Santa Monica!

Next John Tells All Hack Day is this Saturday!
Bring a project (yours or open source), I'll talk about Python Iterators and Functional Programming for a while, then we'll work on stuff together.

Saturday, July 8, 2017

talk: APIs, Authorization, Authentication, Word Soup!

(This page is


Students learn a ton of webapp acronyms, and which are important.

Talk is now on Youtube!  Thanks to Wai-yin and Philosophie for sponsoring my being at the Coding for Product group.

"Can I hack my banking website with Curl?  Lil Bub wants to know!"