© 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)…


Software engineering is chock-full of problems which seem boring and pedestrian at first, but unlock a world of intrigue and insight upon close study. Case in point? API pagination. Seriously, the title of this blog post is like a Seroquel for the soul — just looking at it makes me want to crawl into bed and cry. But APIs are a huge, important, fascinating topic — the stuff that billion-dollar fortunes and Supreme Court cases are made of.

If you manage to stay awake long enough to follow me to the end of this blog post, hopefully you’ll deepen your…


If you’ve read any of my previous blog posts, you can probably guess that I love games and puzzles! And not just because I love playing them on long train rides — games are the perfect template for diving deep into software engineering. Even a simple game has rules, hierarchies, states and conditions —implementing it all forces one to think like a programmer and gain a real, true understanding of how to solve any problem. No surprise that Ada Lovelace, the world’s first computer scientist, was obsessed with games.

In this blog post, we’ll explore the use of regular expressions…


Neither COVID nor a weeklong winter break will stop me from coding, no-sir-ee! This week’s blog post even includes code you can fork and clone for yourself! I’m covering today’s subject, grid path problems, because I’ve seen a few solutions on search engines but never one in Ruby. Let’s dive in!

Background: What’s a grid path problem? Why should we care?

Grid path problems are widely studied in applied mathematics, and software engineers are commonly asked to solve them in job interviews. That’s because they require breaking a complicated problem down into smaller parts, demonstrating a programmer’s computational thinking skills.

There are dozens of variations of the grid path problem…


Video poker machines, like these at the Borgata in Atlantic City, New Jersey, must calculate millions of combinations of hands and hold cards — how does Ruby make this easy? (Photo credit: Atlantic City Weekly)

I’m not a gambling man — I work too hard for my money to give it away — but I am an avid poker player. I love poker because it’s a game of skill disguised as a game of chance. The engine of poker, its beating heart, is a complex and nuanced probability puzzle. The world’s top poker players aren’t unusually lucky or rich or obsessed with winning big money — they‘re just skilled at calculating lots of odds and analyzing large probability universes, and doing so quickly, accurately, under pressure, and while distracted or multitasking. …


God on a wheel, am I tired. My eyes hurt, my brain hurts, my butt hurts, my shoulders hurt — even my hurt hurts. What on earth have I gotten myself into? I feel like the sports announcer for the Ball State University athletics department.

Surprisingly, what sticks in my head from today is NOT the various actually-useful tidbits of programming knowledge that our kind, wonderful instructors bestowed upon us… y’know, the stuff that I paid to be here for. Instead, as I sit here nursing what feels like a terrorist attack above my parietal bone, I’m thinking about a…


Dang, this is pretty hard. There’s a lot of support and everyone is cheerful, supportive and upbeat… but it’s very fast-paced and mostly independent. After an initial logjam, things calmed down and my labs are going smoothly. I’m enjoying the lectures and work, even though I’m worried I’m not participating enough. I think the real value added to this course will be the career services, which I’m eager to see and hear more about. Time for a Zoom discussion


Today I started coding bootcamp. First we had an orientation and met the school’s education managers and our instructors. Now I’m going to jump on another Zoom call and start our first lesson.

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