Show Up To Work

Even if you have enough celebrity, fame, or goodwill to coast through an important presentation, you shouldn’t.

It may not hurt you in the short term, but every time we let ourselves do less than our best, we get a little bit worse.

You let yourself slip a little until your peak isn’t what it used to be. Slacking compounds just like striving does. Eventually the external assessments will catch up with you. At that point, you won’t be able to just turn it back on. You will have to go back up the mountain the same way you went down it.

Show up, do a little better than yesterday, and over time you will be unstoppable.

Why Have Hobbies

“A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.”

Robert A. Heinlin

At some point we all forget how many things we wanted to know and do when we were kids. We get old, and we get “practical”. We specialize. We stop having hobbies.

We start defining everything we do in terms of usefulness for some end beyond the thing itself. I have to eat well and exercise so I can get enough sleep so I can succeed at work so I can have a nice house I can sleep in and a car to get to work and the gym and buy the groceries I need to stay fit so I can excel at my job…

I cringe when I hear people talk about the health benefits of forgiveness, like it’s not something that we should just do.

There are clear benefits to being someone with a lot of interests. I could talk about the effect on creativity, happiness, pride of accomplishment etc. Or that Nobel Prize winners are rarely people who don’t have other interests outside of work.

But if everything you do is for the sake of some other thing, what is it that you’re doing that everything is ultimately for? Is life just an endless succession of random tasks that help you get better at those random tasks? Is it just one long Incremental Game?

Something you do should be worth doing just to do it.

A good hobby should be something that you do because you want to do that thing, for whatever reason.

Revel in the joy of just doing something, of exercising agency, of bending the world to your creative will in some limited way.

Revel in the joy of bending yourself to the reality of the endeavor you’re undertaking.

Find joy in being fully present in an activity, of slipping out of time slightly.

Taste the liberating goodness of doing something for its own sake.

Practicing Fundamentals For Mastery

What makes the difference between the pro and the amateur?

The pro has mastery of fundamentals.  The amateur is inconsistent and undisciplined and neglects practicing the basics.

The basics of any practice, profession, sport, or activity are the foundation on which you build your performance.

As an example – I like to play pool.  A lot.  Probably way too much.  In college I played pool about as much as I was in class.  I played games, and when nobody was around, I just practiced making shots.  I would line up hard shots and hit them over and over and over again.  I analyzed what I did wrong, and then I tried again.

I got pretty good.  I was one of the best, if not the best, players at my school. (There were only 350 students at my tiny Catholic college and maybe a couple dozen frequented the pool room.)  When playing 8-ball, I frequently won in one or two turns.  I wasn’t quite a pro, but I had a real love of the game, and was a solid player.

After college, I stopped having the time or opportunity to play, and my skills waned dramatically.

Recently, I picked it back up (and joined the APA).

The things I had difficulty with were very basic:  visualizing my shots, executing a solid stroke.  The fundamentals.  I couldn’t do them.

It took several sessions to start to pick it back up.  I had to practice the hard way.  I painstakingly lined up my shots, examined the strike point and the cue, focused on the angles needed, and finally after all that shot.  And I was inconsistent.

This was intensely frustrating, as I used to make these shots effortlessly.  It was annoying.  I got angry with myself.  But I kept going, and had occasional encouraging moments.

And then it clicked.

At some point, I rebuilt the basic fundamental skills enough to connect it with the intuition and accumulated skill to begin playing closer to where I had previously.

Practicing the basics relaid the foundation and I started to play consistently better.

Fundamentals are also key in other areas of life, such as relationships.

Occasionally, relationships get rocky.  It doesn’t happen all at once.  It’s a gradual process.  Kindnesses are omitted.  Consideration is forgotten.  Little gestures aren’t practiced.  And suddenly, you’re not really on the same page, and hardly speaking the same language.

It can be tempting in these circumstances to think that something is really wrong that requires dramatic action.  However, most of the time, all that’s needed is to simply commit to small daily practices that help bring you back into sync, re-establish understanding, and rebuild the emotional bank account balance that was getting sorely overdrawn.

A lot of the time when our life or coding is feeling way off, it’s because our foundation is shaky.  And frequently, it’s simple basic things that we neglected.

Practicing fundamentals helps keep our execution consistently high, and can help reinvigorate our skills when things get a little off.

Why Complaining is Fun And Why You Shouldn’t Do It

Recently, I read something that pointed out we only do things because we find them somehow enjoyable.  And it said something along the lines of “Maybe we complain because it gives us an audience, or makes us feel important.”

Suddenly I realized that my complaining (at home, or to a couple friends) was in fact an impediment to Doing Something.  Because I got to feel like things were Way Harder than they actually are.  This gave me something psychologically satisfying, but it also gave me something that made me feel safe.

By putting up obstacles in front of myself, I was able to feel like there was no point in trying, which meant I could avoid doing the things that I was afraid of.

And – Bonus – I also got to feel like I was really doing something difficult and praiseworthy and get encouragement and validation from others.

This of course is not what I needed.  I needed to buckle down and push through, instead of getting a quick boost from others that fades back into inaction.


Complaining is a lot like telling people what you’re going to do.  It’s a way of satisfying a psychological itch without actually accomplishing anything.  You get the social validation without actually accomplishing anything.

Leave the itch unsatisfied.  Keep yourself hungry for action.

5 TroubleShooting Techniques (For When Things Gets Hard)

Programmers typically spend more time debugging code than writing it.  And since we can’t always practice Test-Driven Development, especially on legacy software projects, there are often some complicated tangles of spaghetti code to work through.

Normally, you can use a debugger and find information about the state and flow of the code.  Occasionally even with a debugger, things are still quite difficult.

But what do we do when our normal tools aren’t available, and we’re left with incomplete information and not a lot of leads?

#1 Stop Doing What You’re Doing

When it’s not working and you’re getting frustrated, you need to stop.  Take a break.

Take a 10 minute walk, talk to someone, get a coffee or a snack or a drink.

Walk away.  Just getting away from the problem for a few minutes will frequently be enough to give you a new idea.

This is often the most difficult step when you’re really intensely focused in a debugging session.

#2 Question Basic Assumptions

Do you have a mental model for what is happening in the code?  How confident in that model are you?

Have you checked for typos?  (This is a problem in bash scripts more than you’d like to believe.)

Are you sure the inputs and outputs are what you think they are? Can you verify them?

Do you think you know where the problem is happening?  How have you verified this?

Have you read the error message correctly?  Do you know which stack trace (if there’s more than 1) is the relevant one?

Is there possibly a silent upstream failure?  (This happens with front-end javascript frameworks a LOT)

What other tools are at your disposal?  What other programmers are at your disposal?

Can you list your assumptions?  Test them?

Can you solve a simpler problem?

#3 Talk To Someone

If there’s someone technical who knows your space, that would be your best option.

But anyone will do as long as they’re willing to listen.

Try to explain the problem clearly.  Frequently, if you can’t explain it and what you are stuck on, you are simply lacking sufficient clarity in your problem definition to move forward.

Frequently, vocalizing it to someone else helps us to move forward or get better ideas.

#4 Expand Your Search

Google is usually the first step when we see a new kind of error and don’t know what to try.

However, sometimes you can’t find much of anything.

When that happens, try broadening your search.  Look for general information.  Expand your understanding of the technology, looking for concepts that might help you, or people with similar-sounding issues that don’t quite match what’s happening to you.

Think of a new way to describe your situation.

Read whatever comes up.

Remember that you’re not trying to find a problem-solution pair, but rather are giving your mind additional material to let it do its work.

#5 Change Your Problem Description

It is often the case that we are describing the problem by looking at the symptom that immediately presents.

Instead of thinking in terms of what is wrong, think in terms of what you are trying to accomplish originally.

Sometimes you can simply not solve a problem and move forward by a different route.

In short, make sure you are solving a problem you need to solve.

If None of That Works…

Give up.

Seriously.  Go to sleep.  Take a nap.  Go do something fun.

Let your subconscious attack the issue while you recharge and relax.

Come back to it later with fresh energy.  If you’ve done all you can do, let that be enough.  Life is about more than this one issue.