Zee Spencer

Zee. Software Developer. Educator.

Subscribe to my Newsletter

My newsletter is a weekly-ish set of interesting links and a short essay. The essay may be about programming, design, technical leadership, or anything that strikes my fancy.

Not sure? Read the archive.

Drift Work, Shift Work

I've heard many ways to frame the tradeoff in work conditions that optimize contributors' work productivity and managers' work productivity.

While I agree that some kinds of work are best suited to specific work conditions, I'm unconvinced a manager versus individual contributor framing is helpful when attempting to determine how to structure my workday.

Posted on January 8, 2020 - about , ,

2019 Year in Review

In 2018, I set out to establish habits that made me physically, economically, and mentally healthier. It's been tough, but worth it. And it gets easier every day.

Here's the metrics I've used to guide me, the goals I set to improve those metrics, and where I am now.

Posted on January 1, 2020 - about , ,

How Kiera and I Merged (some of) our Finances

Having been with Kiera for going on 4 years now; and having lived together for 3 of those years; It seemed a bit unnecessary that we maintain separate budgets for shared resources like groceries, rent, utilities, streaming media accounts, etc. We’d cobbled together a “I‘ll pay for Blue Apron if you pay for the CSA” form of spreading of fiscal responsibilities, but that was getting more and more complicated and difficult to balance to ensure an equitable split based upon our respective incomes.

Posted on April 17, 2016 - about , ,

Defining My Dream Job

About a year ago I got back into freelancing and started building a small, distributed development studio. While I enjoyed the freedom and the people; I couldn't sustain the constant sales cycle and discovered management and operations is a recipe for burnout for me. My constant anxiety over payroll, bookkeeping and cash flow was/is debilitating.

Posted on August 3, 2015 - about , ,

Effective Code Critique

Code review gets a bad rap. People worry that code reviews slow teams down, create conflict between team members, or disempower team members by taking away decision making authority.

Posted on July 26, 2015 - about , ,

The Rationale Behind Testing

Tests are use cases. They illustrate how to use the code, how the code behaves, how it works in a given context, highlight pain, and expose complexity.

When they notify us the code does not behave as specified? That's a bonus. Not the goal.

When we don't write tests, we miss out on design feedback.

Posted on February 12, 2015 - about , , ,

When To Hire Apprentices And Junior Developers

As bootcamp-esque educational programs train more people on the baseline skills to contribute to a software project, companies are learning how (and how not) to integrate these lower-cost, less experienced developers with their teams. Frequently, these companies hire these less-experienced, single-skilled individuals as "Junior Developers" and throw them at a project. While this has some level of success, savvy companies are turning to apprenticeship.

Posted on February 2, 2015 - about , ,

Branding Inception: $2,000 - CLOSED

ZincMade is a recently incorporated business focused on technical team training, end-to-end product development, and technical management consulting. We are investing in a solid foundation for our branding. To do so, we are looking for a designer to provide logo design, typography choices, and color selection services.

Posted on January 26, 2015 - about , , ,

Walking Desks - A Year in Review

For the past year, I've been doing most of my computing at a walking desk. Learn how to assemble your own walking office, as well as what habits to build and which tendencies to avoid.

Posted on November 30, 2014 - about

Getting Past Junior

Junior developers have a unique struggle. How can they know when they're "good enough" to be a non-junior developer? How can they move quickly from the novice or advanced beginner level and into competent?

Posted on June 27, 2014 - about , ,

The Chef's Tale

Once upon a time there was a Chef. This Chef was sought by all of the rulers in the land to cater their feasts. The Chef was ferried from castle to castle; delighting all for whom they cooked.

Posted on June 25, 2014 - about ,

Fear Not Your Ignorance

Ignorance is a blessing. An opportunity.
Ignorance is where possibilities are boundless.
Don't fear it. Embrace it.
Explore the unknown.

Posted on November 12, 2013 - about

Back to Codin'

The last 9 months have been some of the most amazing, fullfilling, enjoyable months I've ever had.

Posted on October 25, 2013 - about ,

Splitting codebases

As programmers, we split our code along what job those bits of code do for us. We pontificate about whether MVVM or MVC or another pattern is the appropriate way to build an app for the given language, environment, or problem domain.

Posted on June 2, 2013 - about ,

The Learn Startup

A long time ago, in an industry far far away, there were two competing production models: the assembly line and the master craftsmen.

Posted on May 13, 2013 - about ,

The Windsurfer

She chrouches, alert and ready.
Waves crash across the bow.
She clenches the mast tightly
She furrows up her brow.
Winds roar with fury
Waves whip to foam
All other beach-goers
Turn their faces home.

Posted on April 13, 2013 - about , ,

Introducing jekyll-cdn

I extracted my jekyll plugin for cache-busting from my blog into a gem, jekyll-cdn! The main feature is a set of Liquid filters for getting the right asset_path, stylesheet_path, and javascript_path for the environment you're building.

Posted on March 23, 2013 - about ,

Gertrude the Giraffe

I have a small menagerie I take wherever I go. One who has accompanied me since I was a child is Gertrude. Gertrude is a giraffe with a long, beautiful neck with spots which spell four words: Guess, Google, Grab, Go.

Posted on March 12, 2013 - about


Last year was fantastic. I started my own business, helped three startups get off the ground, learned a ton about working with distributed teams, and fell in love.

Posted on February 19, 2013 - about ,

Grind Young

I hear your heart beat from all that caffeine
Oh, what a shame there's not more in your bloodstream
So while you're here in my cafe
Let's make the most of the beans that we're gonna grind young

Posted on February 17, 2013 - about ,

Using Nil Effectively

We seem to use nils in place of a default return value in a function. Say you wanted to write a function that splits a string on its commas:

Posted on February 17, 2013 - about , ,

Now I Know That Love Is Blind

Now I know that love is blind
In the dark your smile shines.
My heart is stolen and I feel fine!
Why is organ harvesting a crime?

Posted on February 14, 2013 - about ,

Two Lumps of Clay

Two lumps of clay were bought by a potter and set on her windowsill to soften in the sun. The first was terrified of being prodded, poked, and shaped. "I don't want any part of this!" He said, "I'm a good piece of clay! I don't want to be a pot!" and he hardened himself in the noon day sun.

Posted on February 10, 2013 - about ,

Point Victor

There was a young lad named Rictor
Who gloated he was the Point Victor
But the cards he'd "completed"
Had bugs left untreated
And rejection befell poor young Rictor

Posted on February 10, 2013 - about , , ,

The Ruby & Symbol

& is a powerful ruby operator, when you use it as a unary operator it has two main use cases:

Posted on January 30, 2013 - about , ,

Build a Command Line Remote Pairing Setup

Over the past couple years I've done a bit of remote pairing. When I need a GUI everything is pretty straightforward: Join.me for screen/keyboard sharing and iPad with Skype or Google Hangout for video calls. This is pretty bandwidth intensive and can be slow, so I'd rather keep as much as I can in a terminal.

Posted on January 29, 2013 - about , ,

Thank You Heather, Steve, and Corey

Recently I saw a few highly critical tweets go by my stream about a package written by Heather Arthur. They were by Corey Haines and Steve Klabnik, a couple of my friends.

Posted on January 25, 2013 - about ,

Building Communities of Empowerment

Recently I sat in on a conversation between two people I respect. One declared empowerment is an individuals choice. We choose how to respond to situations and we can choose to remove ourselves from unacceptable situations.

Posted on January 13, 2013 - about ,

Keeping Space

While at Devbootcamp last week I was introduced to a new phrase by an instructor. I asked how intensely draining his job must be, and he remarked that his wife is amazingly good at "keeping space" for him. I didn't grasp what he meant, so I asked him to clarify.

Posted on December 12, 2012 - about ,

The Proud Ants

Once upon a time there was an ant colony. It wasn't a very big colony, but it had the best hunters, builders, and nurses for miles around. For many seasons, the colony prospered.

Posted on November 23, 2012 - about , ,

Why I Don't Use Aliases

The difference between an amateur and a professional is their capability to execute consistently in a variety of situations.

Posted on June 20, 2012 - about

When to Reject and Accept Work

No matter how well you define what should be done you will always wind up with work that isn't quite right. In these situations you have three courses of action: 1. Reject the work and provide feedback. 2. Accept the work and add new work items. 3. Accept the work and ignore its imperfections.

Posted on April 15, 2012 - about ,

Coding the Distance

Reluctantly Crouched at the command line, Keyboards clicking and clacking in time...

Posted on February 26, 2012 - about ,