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

Latest Posts

Review of "Waxing On: The Karate Kid and Me"

Book Cover

Hollywood memoirs aren't things I normally read. I like movies, but usually I prefer the characters to the actors, so I'm fine being ignorant. Waxing On: The Karate Kid and Me by Ralph Macchio ended up in my hands after helping a neighbor with a computer problem. The problem was …

Experimenting with Stable Diffusion on my own machine

AI generated artwork has been in the news a lot lately, from the person who won an art contest with a computer-generated image, to Microsoft recently announcing that they'd include AI image generation in their Bing search engine. I've fiddled a little with online services for AI image generation, but …

PyCon US 2022

Welcome to PyCon!

I wrapped up my participation in this year's PyCon last night. Being in Salt Lake City was great, since that's just a half-hour drive from my house, but it also means that I don't have the "completely focused on this" experience that traveling to a conference gives you. For example …

Architecture Patterns with Python Review

Architecture Patterns with Python

Architecture Patterns with Python by Harry Percival and Bob Gregory

I learned about this book by watching Harry Percival's 2020 PyCon talk Stop Using Mocks (for a while). In the past, I was pretty enthusiastic about mocks, especially in Python because they, along with patching, let me test just about …

UI Horror: Login... Again

I use Office 365 with the web version of Outlook at work. At some point, I'll notice that the browser tab has changed appearance, and click on it to find that I've been logged out. No worries, there's a prompt right there for my password to renew my session. Soon …

eero Pro 6 First Impressions

I set up an eero Pro 6 mesh network in my house this past week. These are my first impressions of the system.


Earlier this year, my employer decided that the pandemic-motivated "work from home" policy would continue indefinitely for the engineering department. After moving a few PCs from …

Functions Returning True on Success

Many beginning programmers latch on to the idea of having functions return True if they succeed and False if they fail so that you have code like this:

if do_something():
    # It worked!
    logger.error("Something didn't work!")

For me, I think it was …

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 …