

Jonathan Freeman
Contributing Editor
Jonathan Freeman is a software developer, consultant, and jazz musician living in Chicago. Through consulting, he's enjoyed working in various domains, from finance to healthcare to video games. While he specializes in JavaScript, both browser and server side, he also takes a keen interest in modern data stores (particularly graph databases) and distributed computing platforms.

JavaScript tutorial: Add speech recognition to your web app
Harnessing the power of voice commands in a React map explorer app with the annyang JavaScript library

JavaScript tutorial: Animated charts with React-vis
With React-vis, breathing life into a chart is as simple as adding a single word to our code

JavaScript tutorial: Beyond basic charts with React-vis
How to use Uber’s library of React components to create interactive line charts that display comparative values over time

JavaScript tutorial: Easy data visualizations with React-vis
The library of React components from Uber makes creating charts and other simple visualizations a snap

Functional JavaScript: Building data structures from functions
Combining functional programming concepts to produce data structures feels like alchemy

JavaScript tutorial: Functional programming in JavaScript
How to embrace immutability, think functionally, and write code that is easier to understand and test

JavaScript tutorial: Higher-order functions
‘Higher-order functions’ is a fancy term for functions that take other functions as arguments or that return functions. Very powerful!

JavaScript memoization: Handy functional programming
Memoization is a neat functional programming trick you can use to speed up expensive calculations

JavaScript autocomplete is better with TabNine
The AI-driven TabNine autocompleter is like your best friend that finishes your sentences—in any language
JavaScript dapps: Public and private data on Blockstack
With blockchain and the Blockstack.js library, mixed privacy apps aren’t as tricky as you might think

JavaScript dapps: Decentralized lists with Blockstack
File-based persistence in decentralized apps requires us to rethink how we store data