humancode.us

Streaks are bad for you

April 13, 2023

I’m convinced that streaks is an antipattern for healthy habits, and it is actually quite bad for you.

Streaks encourages perfectionism, and undervalues the progressive nature of growth. The goal of any good habit is not to do it every single day, but to do more of it over time.

Streaks punishes you for missing a day by throwing out all your accumulated progress so far—back to zero you go!—even when you have a perfectly wise reason to miss a day’s session. The loss of all your “progress” can be devastating, and people may do damage to themselves solely to keep a streak going.

Stop using streaks in your apps. Use a different metric that encourages growth, not perfection. Try a trailing tally with a target band instead (you did the activity 25 days out of the past 30! Good job!), or let your users view their progress on a calendar without any metric at all, and let them judge for themselves how well they did.

Dealing with Bad News

March 29, 2023

AI-generated image of smashed glass

DiffusionBee-generated image

I had to deal with some potentially awful news a couple of days ago, and I’d like to share with you how I deal with events that knock me off balance. Maybe it’ll help you too.

Read more…

Make Prototypes Entirely Out of Tracer Bullets

March 10, 2023

When creating a whole new functionality in your app (or a whole new app), prioritize validating your stack of abstractions over making each layer feature-complete. Think of the simplest use case that crosses all the abstraction layers (connecting a view to a model and syncing state to a server, for example) and implement it. Have it do one simple thing (refresh its content on demand, say), and ensure you can test it. Then, add functionality incrementally.

Having a fully-testable stack, even with only a tiny bit of functionality, opens up a world of experimentation and lets you prioritize your work. Every additional function you put into the stack incrementally adds to a demonstrable, shareable prototype, right from the start.

Practitioners of agile methodologies will recognize this as the Tracer Bullet technique. Your project bringup should be made entirely of Tracer Bullets. Others may recognize this as the Steel Threads method. In any case, it’s a great way to ensure you have a working prototype as early as possible in your project’s lifetime.

Keep personal data off of work devices

March 3, 2023

Maintain strict hardware separation between work and personal data.

While many corporations are diligent about keeping work data out of your personal devices for security reasons, the reverse is often entirely your responsibility.

When things go wrong, or your company gets into legal trouble, you want to be sure you’re not exposed to liability or exploitation. One way to help you get there is to make sure your personal data never gets onto work hardware.

Read more…

You cannot separate art from artist

February 26, 2023

You cannot separate art from artist; they flow from the same font, the same value system, the same framing, the same agenda. There is but one personality behind both of them.

You can put the art of dead artists in their historical contexts to maybe lessen their blame. But living artists in a shared culture deserve no such latitude, as their context is now.

Elevating the art endorses the artist. You can’t help doing the latter when you do the former.

The next time you get the urge to “separate art from artist”, ask yourself why you want to do that.

Chances are you want to continue enjoying the art despite it being made by a despicable person.

Chances are you don’t want to be held responsible for elevating a terrible human being, even as you continue to reward them by engaging with their work.

Chances are you’re doing it because you don’t want to stop the flow of your entertainment, despite the harm it causes others.

Chances are it’s a euphemism for selfishness.