July 02, 2021 • 2 min read
Here’s my weekly review.
None; I haven’t done a review in a while. It’s good to be back.
🎉 This week I shipped my first major feature for my team! Wish that I could say more; I’ll list the behaviors after announcements are made.
I did some styling this week using
cursor: not-allowed, mixins, and
on-the-fly design choices, and it came naturally. I’ve often felt hamstrung in
this domain. Confidence and fluidity in CSS really does come with time.
Participated in multiple product demos for my side project. Lots of information, ideas, and encouragement.
The deployment of said feature was stressful. Deployments should be completely hands-off: merging, testing, pushing, migrations, and cleanup all automated. When you’re doing anything by hand, you’re inviting stress and catastrophe.
Foreign keys on a ‘belongs to’ relationship should not be nullable. This is my preference, shared in recent Rails versions.
Foreign keys constraints go hand-in-hand with ActiveRecord associations. Without them orphaned records are virtually guaranteed.
Tests should be WET, not DRY. Here’s a great
summary of this idea from
Thoughtbot. I believe that promoting variables out of their specs to the top of
the tests (
subject) almost always lowers the readability and
extendibility of a test. Prefer local variables in the spec.
TailwindCSS is a way to learn CSS. The CSS confidence I’ve recently gained I owe to Tailwind. To acknowledge the obvious: learning CSS via an abstraction of CSS is Wrong™ and counter-intuitive. But, hear me out.
First, I think most would agree that CSS is an imperfect interface, and
Tailwind presents many CSS properties in ways that might better ‘click’ for
some people. Though I prefer them, Tailwind properties like
justify-content: space-between, are not objectively
better. However, I think that seeing these concepts presented with different
verbal handles through the abstraction has reinforced and deepened my
command of them.
Second, styling HTML and composing stylesheets are two distinct skillsets, and trying to master them simultaneously is hard. Tailwind decouples them via its utility-first design.
Third, Tailwind reduces the Paradox of Choice, allowing me to maximize my limited design opinions. Consider the colors: unless you choose to customize, Tailwind gives you a default palette. Same for margin, padding, font: there are sane defaults that you can easily override if you care. I have malleable design opinions and this helps me focus on shipping rather than choosing between dark magenta and purple.
“Real artists ship.” —Steve Jobs
Blog of Jake Worth, software engineer in Maine.