Shawn Wang
100 Bytes of CSS to look great everywhere
An Article by Shawn Wanghtml { max-width: 60ch; padding: 1.5rem; margin: auto; line-height: 1.5rem; font-size: 24x; }
Metrics have a strange hold on the imagination
A Fragment by Shawn WangOnce in place, metrics have a strange hold on the imagination: I've seriously had a CTO carelessly reject my genuine idea out of hand because "it doesn't help OKRs", the same OKRs we previously agreed should not describe all that we do.
I agree with Amir Shevat that we should "do the right things over the easy to measure things."
The Genius of Apple's Name
An Article by Shawn WangIt's easy to have strong opinions about stuff only developers see since user validation is just asking people like yourself. It's much harder to name something consumer facing. Here are some useful rules I gleaned from Apple:
- Two syllables max
- Familiar English word - literal 5 year olds can spell and pronounce it right
- Starts with A - useful for alphabetical sort. Amazon did this too
- Name leads to easy logo/swag/branding ideas
- Evoke aspirational qualities - knowledge, health, nature
Don't Rush to Simplicity
An Article by Shawn WangYou've probably heard this story before:
A businessman finds a fisherman, who is living an idyllic, peaceful life by the sea.
He laughs and tells the fisherman how to get rich instead.
The fisherman asks him what he will do after he gets rich.
He replies that he would retire to an idyllic, peaceful life by the sea.There's supposed to be a deep life lesson in there, but it's always felt insincere to me.
To me it is better to have reached the heights of a career, or suffered an epic defeat, even if I do end up in the same place as everyone else in the end.
To me simplicity is made more beautiful when understood through a long personal struggle with complexity. When I can dance with it, having turned a mighty nemesis into an old friend, and teach others to do the same.
Better to have loved and lost, than never to have loved at all.
80/20 is the new Half-Ass
An Article by Shawn WangThe Pareto Principle is making you lazy.
Let me be more precise: The Pareto distribution is a useful model of power law effects in real life. But people are using it poorly, primarily as an excuse to be lazy.
...People forget that the devil is in the details. The first 20% everyone knows to say on Twitter. The remaining 80% is the ugly, nasty, hacky, unglamorous shit nobody talks about unless you've got time to sweat the details.
The small web is beautiful
I believe that small websites are compelling aesthetically, but are also important to help us resist selling our souls to large tech companies. In this essay I present a vision for the “small web” as well as the small software and architectures that power it.
Why aim small?
Why aim small in this era of fast computers with plenty of RAM? A number of reasons, but the ones that are most important to me are:
- Fewer moving parts. It’s easier to create more robust systems and to fix things when they do go wrong.
- Small software is faster. Fewer bits to download and clog your computer’s memory.
- Reduced power consumption. This is important on a “save the planet” scale, but also on the very local scale of increasing the battery life of your phone and laptop.
- The light, frugal aesthetic. That’s personal, I know, but as you’ll see, I’m not alone.
Features and complexity
Niklaus Wirth of Pascal fame wrote a famous paper in 1995 called A Plea for Lean Software. His take is that “a primary cause for the complexity is that software vendors uncritically adopt almost any feature that users want”, and “when a system’s power is measured by the number of its features, quantity becomes more important than quality”.
Solving the problem of software bloat
But instead of just complaining, how do we actually solve this problem? Concretely, I think we need to start doing the following:
- Care about size: this sounds obvious, but things only change when people think they’re important.
- Measure: both your executable’s size, and your program’s memory usage. You may want to measure over time, and make it a blocking issue if the measurements grow more than x% in a release. Or you could hold a memory-reduction sprint every so often.
- Language: choose a language that has a chance.
- Remove: cut down your feature set. Aim for a small number of high-quality features. My car can’t fly or float, and that’s okay – it drives well.
- Say no to new features: unless they really fit your philosophy, or add more than they cost over the lifetime of your project.
- Dependencies: understand the size and complexity of each dependency you pull in. Use only built-in libraries if you can.
Raw size isn't enough
A few months ago there was a sequence of posts to Hacker News about various “clubs” you could post your small website on: the 1MB Club, 512KB Club, 250KB Club, and even the 10KB Club. I think those are a fun indicator of renewed interested in minimalism, but I will say that raw size isn’t enough – a 2KB site with no real content isn’t much good, and a page with 512KB of very slow JavaScript is worse than a snappy site with 4MB of well-chosen images.
...[Instead, it's about] an “ethos of small”. It’s caring about the users of your site: that your pages download fast, are easy to read, have interesting content, and don’t load scads of JavaScript for Google or Facebook’s trackers.