Eric Smith is a software architect and developer. He currently works for StorageCraft, and graduated with a computer science degree from Brigham Young University back when the World-Wide Web was a new thing.

Latest Posts

Preserving Git Blame History when Refactoring

I have some big source files in a project I'm working on. Embarrassingly big files -- multiple thousands of lines long. Those files also have years of Git blame history associated with them, and not wanting to lose that history has deterred me from refactoring to break those files into more …

SQLAlchemy Cascade Delete: Clarity through Examples

Since there is overlapping "cascade delete" functionality supported by SQLAlchemy -- with the ORM handling some deletes and the database itself handling others -- it can be hard to know the right way to set it up. Here are some examples to help clarify how it all works.

Starting Example

Here we …

Review of "The Body: A Guide for Occupants"

Book Cover

Douglas Crockford, in JavaScript: The Good Parts said, “Computer programs are the most complex things that humans make.” As someone who builds software, that idea can make you feel pretty good about your intellectual place in the world, because even though I don't know how lots of software works, I …

When to Give Up - Retrying Failures

When we programmers find an aspect of software that fails intermittently, we sometimes follow the impulse to add retries with a Churchillian insistence that we will "Never give in — never, never, never, never"! But sometimes the right thing is to give up.

One might ask, why retry at all? Didn't …

My Best Side Project

After a few years working on it, I can say that the "magic mirror" I built with my son has been the best for-fun side project I've ever done. When I was describing the idea, my wife was hesitant about letting me hang it on the wall -- mostly due to …

My Favorite Podcasts 2019

After working at home for a couple of years, it was hard to get back in the car every morning to commute after changing jobs. I'm lucky that it isn't that far, but it still felt like a monumental waste of time to be stuck in traffic. Podcasts have redeemed …

Notable for Note Taking

I recently started using Notable for my software development notes. It is an Electron app that lets you write your notes as Markdown. It is a little light on features currently, but that can be a good thing.


OneNote Screenshot

I've used Microsoft OneNote for a long time. There are a …

Tips for Your First Month at a New Job

Congratulations on getting your new job as a software engineer! Your employer and team are happy to have you join them. Here are some tips for the first few weeks to help them feel like they made the right choice in hiring you.

Work hours

Learn what the work time …

Randomness in Tests

Wouldn't it be cool if a few uses of the random module in your unit tests could discover bugs in your code? Meh.

The problem is that random tests are non-deterministic, meaning they lack the highly desirable property that if they pass in my local development environment, they'll also pass …

The Impossible World

Sometime when I was a teenager, my step-dad gave me a box full of sci-fi and war novels. I'm not sure where he got them -- maybe in bulk at a garage sale or something. Years later, many of them are still sitting on a shelf, mostly unread. I thought I'd …