There’s a legend in computing history that Bill Gates once said, “640k ought to be enough for anybody” while describing the RAM limit of the IBM PC at a trade show in 1981.

This quote is often referenced as shortsighted and makes for a perfect snarky Twitter reply. There’s a similarly uncorroborated quote for Thomas Watson, chairman of IBM, stating in 1943, “I believe there’s a world market for maybe 5 computers".

People love to throw around these quotes as examples of poor foresight and as a check on one’s humility towards the unbelievable technological changes that happen in short…


This is the final post in a series of my journey to launch a side project in 2020. You can find the previous posts here and here.

After working to launch MergeCaravan, I finally felt like the product was ready to be released. I had a few things left to do before doing any promotion.

First, I needed a way to actually charge customers. Stripe’s Checkout product made this super easy and with just a little work I was able to set up support for monthly subscriptions. By leveraging Stripe, I could ignore all sorts of concerns, such as providing…


You got your htmx in my Django!

This is the second post about my journey launching a side project in 2020. The first post can be found here and the last post here.

Last year, I set a goal for myself: Build, launch, and close a paying customer for a product that I built entirely on my own. I was working at a startup called Resource, and a daily problem that I encountered was driving me crazy. …


Photo by Jukan Tateisi on Unsplash

This is the first of a few posts about my journey launching a side project in 2020.

At the beginning of 2020, I set out a goal for myself:

Build, launch, and get a paying customer for a product that I built entirely on my own.

As much as 2020 was a dumpster fire of a year, I’m thrilled to say that I managed to achieve that goal. In this post, I’ll outline why I set that goal, why I chose to build MergeCaravan, and what I learned about launching a side project.

Why Do This?

During my professional career, I’ve worked at…


A good wrapper hides the tastiest implementation details

How Wrapping Your Dependencies Will Save You From Future Suffering

A few months back, I was talking with one of the other developers on our team and somehow we got onto the topic of what I thought my biggest learning in the past couple years was at our company. I’d been working as a software developer for the past 6 years and at Resource for just over 2 years.

“Wrap your dependencies,” I told my coworker with the sort of gaunt stare you expect to see from a grizzled war veteran.

Despite the fact that I’ve been writing software for over half a decade, I didn’t learn this lesson until…


= potential pitfall

Hand-holding Honeymoon

The first time I used Netlify to deploy a single page app, I was pleasantly surprised. Before then, I’d usually used Heroku to deploy applications, which meant serving my index.html file from Heroku, and configuring my Heroku build process to upload my compiled assets to a CDN. While not too terribly difficult to set up, this process had some downsides. Serving the index.html file from Heroku meant that it could take extra time before changes were deployed to users and the performance wasn’t ideal. Netlify, on the other hand, deploys your index.html file and your assets almost instantaneously and it…


Not that sort of blessed.

Throughout my time as a software developer, I’ve noticed a pattern with the language and framework ecosystems that I tend to enjoy working with most; they generally operate as “blessed” ecosystems.

What is Blessed?

When I say “blessed”, I’m referring to two properties that these ecosystems possess:

  • The components are explicitly designed to work together.
  • The components are designed so that they can be swapped out for alternatives.

In essence, the creators of the primary component(s) of these ecosystems have explicitly “blessed” other components as being a good default choice.

Examples of Blessed Ecosystems

My favorite example of a blessed ecosystem is the Django Project. The project…


Before There Were Trees

When I first started using git professionally, one habit I had was to frequently stash code. I’d be working on a particular feature and I’d see a Hipchat alert (yes, this was before Slack) about an error being thrown in production. I’d take a look at the stacktrace in Sentry, and find the offending section of code. From there I’d return to my terminal, stash my changes, open a new bugfix branch off master, and begin trying to reproduce the error locally.

Usually this process would happen without too much pain. If there were untracked files in my working tree…

James Pulec

Early Stage Engineer. Free Thinker. Beer Drinker.

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