Frequently when people discuss what is a “good” Go library, they usually use
terms like “idiomatic” or “the Go way”. These terms are imprecise and make it
difficult to discuss the merits of different API designs. I recently re-read
Don Norman’s The Design of Everyday Things and realized that the same
principles of design discussed in the book can be used to evaluate the design of
APIs.
When I was mentoring a FIRST robotics team, the fundamental revelation I had was
seeing how the robot the team built became a part of our identities. When we won
a match, it was validation. When we lost a match, it was a reflection of our
failures. Being a mentor gave me a level of detachment, but the students working
on the robot did not have that luxury. For many, this was their outlet they took
pride in. And losing gave that wretched inner voice (the voice of the bullying
they had endured) hold to beat them down.
When I started working in the software industry, I soon came to realize that we
are not that different (myself included). Even the terminology — team
— evokes tribalism. Pitching a design to your team and having it fall flat
feels much the same as losing. But often in industry, you don’t have the safety
net of a mentor. You either have your previous experiences or you don’t. And
there’s the pressure of financial stability. Fundamentally, this adds stress and
hampers creativity. (Also open office plans, but I digress.) To me, that’s why I
prioritize supporting my team above all else. The easy thing is to be critical
of others; the right thing is to find how you can help them succeed. Creating
something worthwhile usually requires vulnerability. Don’t exploit that: see it
for the gift it is.
As I’m shutting down my Tumblr, I took one last look through all my fandom blog
posts. Not even my most wholesome fandom posts are safe from Tumblr’s new
content policy. Good riddance.
This is my first post to this blog in a long time, and it is with a fully new
engine! zombiezen.com is now entirely hosted by Firebase Hosting and
generated by Hugo.
When I first joined Tumblr, it was a very different blogging service than what
it has grown into. And especially now that I am working in open source and
wanting to post more regularly about more in-depth technical content, I want to
have a platform that I can post to and not worry about my content going away. As
such, I’ve also copied my content on Medium into this blog.
In this blog post, I’m to do a deep dive into the specific steps and tools that
I used to achieve this new mindfulness. If you haven’t read my first blog post
about Getting Things Done, you should take a look. I’m not recommending
the tools here in any capacity other than from my own personal viewpoint: I’m
not getting paid to promote these. I still recommend reading Getting Things
Done by David Allen to understand the theory and reasoning for why to use
particular tools, and adapt for your own circumstances.