Web components won't take web development by storm, or show us the One True Way to build websites. What they will do is let us collectively build a rich ecosystem of dynamic components that work with any web stack.
A one-dimensional spectrum can't sufficiently capture the tradeoffs involved in web development.
The world is poorer when friable foundations lead to crumbling creations. But it is poorer still when we are so concerned with the foundations that we never create at all.
If we're building things that we want to work in five or ten or even 20 years, we need to avoid dependencies and use the web with no layers in between.
State-based CRDTs grow monotonically, but that doesn't mean they can't be efficient. We'll learn how to compress the pixel editor state by 98%.
CRDTs sound cool, but how are they actually used? Let's learn by building a collaborative pixel art editor.
CRDTs don't have to be all academic papers and math jargon. Learn what CRDTs are and how they work through interactive visualizations and code samples.
Two weeks at Recurse went by fast! I started out trying to build an Audio Units extension and — in a classic yak shave — ended up building a live coding audio playground.
Breaking character for a life update: I'm doing a batch at the Recurse Center!
People like signals because signal-based components are far more similar to class components than to function components with hooks.
The toxicity in the web development community needs to stop.
Cargo culting is a pejorative term that means someone is using a technology or following a pattern without understanding why. The discussion tends to myopically focus on how well a particular tool fits a problem's engineering constraints.
Turns out it’s pretty easy to set up an integration between your blog and the Fediverse!
Although not quite there yet in terms of community, Solid and Solid Start are looking real promising.
Although Tailwind does have some benefits, ultimately it’s just one more thing to learn.
I built a static site generator! It’s called Radish.
jake.museum: an online collection of my web design and development work, from 2007 to the present day. But finding the source code was just the beginning. A lot has changed since 2007, and getting these old sites up and running again is not as simple as plopping the files on a server.
Basecamp says that "work is not an appropriate place to debate political issues". The problem is that the people on the other side aren’’t actually calling for debate. So let’s see if we can bridge the gap. What, exactly, counts as politics in the workplace?
Ever since I read Bob Nystrom’s 40 Songs, I knew I wanted to write a list of my own. I’ve been procrastinating on it for a while, but “30 years” slips further away as I inch closer to 31, so it’s time to buckle down and do it.
Distilling almost two years of running this thing into a single lesson is hard, but here’s my shot: the most important factor in SongRender’s success has been my consistent, incremental effort to grow it.
If you spend a lot of time on Hacker News, it’s easy to get taken by the allure of building a project without a framework.
A stack teardown of SongRender.
Last week I posted about Section 230 and tech censorship. A couple days later, Glenn Greenwald was censored by his editors at The Intercept. What timing!
The web was built with the promise of giving everyone a voice. We keep that promise not by forcing gatekeepers to play fair, but by getting rid of them entirely.
Criticism of the Expensify email is conveniently selective.
All the Google services I used to use, how easy it is to avoid them and what I use instead.
The original deploy strategy for SongRender involved using Ansible to provision and build the application servers. I was unhappy with that process for a few reasons.
It’s pretty awesome to be able to say this: SongRender, the music visualizer video app I work on, launched one year ago today!
We need to get real for a second. The money and data that we use to build "ethical" software often goes to companies that violate the very principles we try to embody.