Harvard. Software Engineer. American. jamesfulford.com

…because we were disappointed.

A normal game of Catan. Photo by Galen Crout on Unsplash

I don’t like Catan. The game is alright, but I don’t love playing it. But it’s my favorite board game. Not because of the mechanics, clever game design, community, or graphics. Because of when I played it.

We used to have friends over to play Catan…

It doesn’t matter as much as you think.

Photo by Chris Liverani on Unsplash

Engineers make their living when demand increases and supply needs to go up. We’re told stories when people built with and without scalability and how it made the difference between success and loss. We notice the times where popularity or disaster caused…

And why and when you shouldn’t

Think about who you’re telling game over — just because the player failed doesn’t mean the game failed. Photo by Sigmund on Unsplash

A few months back, I was reading about HTTP status codes — as one casually does — when I stumbled across 2 gems:

  1. Return code 418 is “I AM A TEAPOT”. It’s an April fools joke — well, as close to a joke as us nerds can muster. …

…has a lot to do with treating spaghetti code

Photo by Mae Mu on Unsplash. Not the final product of our recipe — try the recipe yourself!

Our Secret Family Recipe

Before making your sauce:

  1. Fill a pot with water. Add salt — we advise a lot. Add oil if you want; we don’t.
  2. Set the burner on low, or not at all, if you have the time.
  3. Add sweet spices, like basil or marjoram. Mix them into your water a…

How the framework fosters deception and undermines the basis of civilization

Kinda what I looked like when I uncovered Angular’s fatal flaw. Photo by Tim Gouw on Unsplash

Angular Is Not All Awful

I’ve worked with Angular professionally, some good and bad codebases. I have to say, most of Angular is fine. Many parts are actually pretty neat — I’m a fan of how much it uses reactive programming concepts, exposes web component support, and provides a nice dependency injection system.

Some of…

Hopefully, I’ll save you from getting her headache. Photo by Aiony Haust on Unsplash.

You’d imagine free public datasets would be painless

This wasn’t painless. But now that I’ve figured it out, I want to save you Google-ers out there some time.

What’s Google Colab?

Colab is a way to run Python Jupyter Notebooks on the Cloud, for free. It’s provided by Google and integrates with Google Drive. Very clean way to handle “but it…

Deploying quantopian.com algorithms for live (or paper) trading with Docker

Build your own compass for finding your way through the market. Photo by AbsolutVision on Unsplash

Before we talk code, we will clear up 2 misconceptions about stock investing, namely:

  • stocks are a zero-sum lottery (investing is not, trading may be)
  • investing can be a moral hazard (not acting may be worse)

Then, we will discuss the technical side of stocks, particularly focused on Quantopian algorithms…

Never lose a form submission again

Now that’s what I call local storage! Photo by Aneta Foubíková on Unsplash

Story Time: Moodle Quizzes

Some years ago, I used an open source LMS called Moodle (comparable to Blackboard or Canvas, if you’ve heard of those). At the time, it was not the prettiest, but it worked well enough, and the school could not complain about the price. I really only had one complaint.


Resolve. Reject. But what about neither?

Race your promise against the clock. Photo by Jonathan Chng on Unsplash

Promises are a nice way to wrangle your asynchronous JavaScript. When they resolve or reject, you can easily view how these 2 outcomes are handled with Promises.

However, asynchronous tasks have 3 scenarios: resolve, reject, or neither. The latter scenario, combined with delayed resolution/rejection, often goes unconsidered in our JavaScript…

James Fulford

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