It’s about time for a follow-up to the first part of my basic JavaScript web API cookbook. It’s a huge topic, and when we left off we’d only made it through setup: creating a basic Express app, provisioning our environment, and configuring Sequelize. On this episode, we’ll get to the main event: models, associations and migrations. Feel free to fork and clone this repository if you’d like to follow along; there are branches for before/after the instructions below to check progress.

5. Create your database

Before creating models, we have to create our database using the instructions we left for Sequelize in database.config.js. The…


Humble thanks to Particle in Cell, a California-based tech consultancy, and this fantastic article on their blog. The code is now a bit out of date so I’ve taken the liberty of updating/adapting it. Their work has been incredibly helpful in my personal projects! This blog post wouldn’t have been possible without it!

Today I’m following up on a previous blog post about one of my favorite subjects: vector graphics — just about the easiest way to make your web app stand out in a crowd. A talented vector artist can please nearly any taste: minimalism to realism and nearly…


This week the world saw the return of a depressing routine: new breathless headlines about another data breach

Also depressingly unsurprising? The claim of “8.4 billion leaked passwords” spread like wildfire among particularly shameless blogs and even a couple tabloids and majors; the hack was “jaw-dropping” according to The Express, and “the mother of all password leaks” according to Yahoo! News.

The least surprising part? The evidence is about as strong as the password 1234.

Here’s the deal: a source for a lot of the claims about RockYou2021 echoing around the scaremongering fringe of mainstream media seem to come from…


Photo credit: Milton Bradley Company

Acknowledgments and huge thanks to Yann Armelin for his amazing work on this subject.

There’s just nothing quite as delightful as vector graphics. Both diagonals and curves look crunchy and ill-defined with raster graphics, but with vectors they’re incomparably smooth and crisp at any scale. And vector files are light as a feather, especially compared to JPEGs, so load time is negligible and performance is fast.

On today’s blog post, we’re going to dig in to a task I’ve encountered in my personal work with vector graphics: parsing and validating path descriptors.


Colorized daguerreotype of unknown prospector with shovel and gold pan, California, ca. 1850 (Photo credit: My Colorful Past)

DISCLOSURE: I do not currently, nor have I ever, held any cryptocurrency assets. I welcome discussion and invite you to comment, but please disclose your stake in crypto if you do.

I usually blog about the technical nitty-gritty of software engineering, but today’s post is going to be a little different.

Even for the technologically uninitiated, cryptocurrency has become impossible to ignore. Celebrities promote it, big business is investing in it, and many, many ordinary people are obsessed with it. Some are even getting rich.

I won’t bore you with a detailed explanation of cryptocurrency — you’ll find one easily…


Ah, the humble array! It’s the Swiss Army knife of JavaScript data structures: nothing fancy, but it does what it says on the can. Arrays are a convenient way to group variables and values together, and understanding them is crucial to working with web APIs.

But unfortunately, like everything else in JavaScript, arrays have limits, quirks and caveats galore — and using them effectively requires smart thinking and MacGyver-esque workarounds. In particular, filtering non-primitive duplicates is an array problem so common it’s a near-ubiquitous interview subject. If I’m handling a mailing list for a client as an array, for example…


Paper zoopraxiscope by Eadweard Muybridge, 1893

Without animation, the web just isn’t as much fun. It’s just about the easiest way to engage with users because animations mimic the natural rhythms of the real world, making a website more relatable. When it’s done well, it gives an app polished, professional shine that just can’t be easily compensated for elsewhere.

I’ve written on this blog before about React, an open-source JavaScript library for building user interfaces, because its many quirks bewilder even the most seasoned developer, despite its popularity and formidable power. One of these idiosyncrasies is the way React apps relate with CSS, and since CSS…


© 2003 Universal Pictures/Buena Vista Entertainment

During my time at Flatiron School, I studied the basics of web APIs, databases, and object relationship mappers (ORMs) — which all work in harmony to give web applications the incredible functionality that helps us shape our world. We learned all this in Ruby on Rails, a wonderful framework that’s easy to use, relatively secure, and supported by a vibrant community and a wealth of free gems.

Sadly, although many products still rely on Rails, its use seems to be declining. In many circumstances Rails can be rigid, inflexible and slow, though recent versions have added features to address some…


© 1999 United Plankton Pictures and Nickelodeon Animation Studios — all rights reserved

One reason React is so widely used for building JavaScript user interfaces is its declarative design philosophy — engineers can focus on writing code without the hassle of interacting directly with the document. This power has made React very popular… but it also turns other important parts of JavaScript, like event listeners and intervals, into a tiresome chore.

In this blog post (my first as a Flatiron graduate!), I’ll take a deep dive into declarative programming with React, and how to make the most of it without losing what we all know and love about pure JavaScript. …


The average uninitiated non-programmer hears the word “computer” and thinks of zeros and ones…

…forgivably, for good reason! As the most basic unit of information in existence, zeroes and ones are the building block of digital communication. But why? This blog post will explain:

  • what makes 0 and 1 special and different from other numbers, and why they’re so important
  • how one manipulates zeroes and ones in a computer programming language (and why)
  • some practical examples of bit manipulation and limitations thereof in a dynamically-typed programming language (like JavaScript)

Background: Computers have fingers

We all know and love zero and one through decimal (base-ten)…

Josh Frank

Oh geez, Josh Frank decided to go to Flatiron? He must be insane…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store