There’s a lot to like about Plex from a philosophical standpoint — it’s local-first software centered around sharing your favorite art with your friends. Plex hosts movies, TV, and music — media you purchase because you love it, and share with your friends because we share media we love with our friends since time immemorial. I’ve been shaking loose streaming services for the past three or four…
There are about a thousand and one debates about the ecology of AI, the ethics of AI, the governance of AI. As the technology advances, the debate with the slipperiest footing is on the actual efficacy of AI: does this work for this application? Or for this one? Ultimately, whether LLMs “work” as a technology or not doesn’t matter. The function of a system is its output , and no matter what…
The first thing I did last year was run | Henry From Online A tiny website by Henry (From Online) which I am publishing in February 2026 for your exclusive reading pleasure :) The first thing I did last year was run . 00:00:00:00 I found myself on the eve of the new year lying restlessly on the floor of my apartment (on this great Mashhad rug from like 1937 which is ornate and beautiful, and for…
What I did Did not buy any new clothing, save for DIY band merch. (I love fashion, and I did shop! I just only shopped vintage. It made it a really fun adventure, it turned every desire from a whim into a quest.) Switched off Spotify to Tidal. Started an earnest movement towards a diet of physical media only. Stayed vegan for my 8th year, for the animals and for the Earth. January Drove to the…
A Website To End All Websites | Henry From Online A website to destroy all websites. How to win the war for the soul of the internet and build the Web We Want . Captive Pegasus, Odilon Redon (1889) A tiny website by Henry (from Online) ~3100 words; about a 15 minute read table of contents, of course The internet is bad The invention of the automobile Tools for Conviviality & the industrialization…
There’s a growing attitude in the technology industry that LLM technology is, or will be, the next great innovation to our work. Business owners and workers alike seem to be in unlikely agreement: owners are thrilled at the prospect of making their businesses more efficient and productive, and workers are thrilled at the prospect of simplifying their workstreams or making their jobs easier. It’s a…
Quick disclaimer before we start. This is well-trod ground. Nothing here is new or revolutionary, nothing about this implementation hasn’t already been done by smarter folks than I :) This is just my blog post about it. We’ll use webmention.io for this. webmention.io is a hosted service for receiving Webmentions. There are many other implementations of the Webmention spec , but this is the easiest…
Anyone online has seen over the past years how the frequency of Palestinian accounts on Bluesky and other platforms has increased, two- and four-fold, folks asking for help and linking to GoFundMes. They share their stories and plea for help, to flee Gaza, to buy price-gouged food for their children, to afford healthcare. I have made the choice to move from my values, namely that no one asks for…
I’ll be honest — I am ashamed of how long it took me to get here. Too many half-hearted hypothetical protestations, hands sweatily-wrung. I read someone’s blog post about this a few years back (I’ll link it when I find it) and it hit me square in the middle of the forehead with how obvious this all ought to be: We should give folks spare change when they ask for it. The lady on the corner by your…
Quick heads up: Since writing this, I’ve found one or two fairly sizeable bugs in the Galleria plugin. I’ve published anyway cause the guide is not entirely dependent on Galleria, and Galleria is mostly functional. You can still give it a shot, or alternately use Photoshop’s Perspective Warp tool, or come back soon and I should have it worked out :) (cir. Feb 21 2025) I’m a twisted animal with a…
Whether it’s a framed image that was taken at a slight angle, or a product photo that just doesn’t quite match the rest in the grid, I’ve frequently had the need to adjust the perspective of an image in my design work. In the past I’ve just used the Perspective Warp tool in Photoshop, but it felt silly to boot up a whole separate graphics program for a two-second adjustment, so I made Galleria , a…
Well it’s that time again, migrating for one reason or another listlessly between computers as priorities and jobs change. Here’s a middle-depth breakdown of how I speed-run getting a new machine off the ground. This post is for Mac computer users who might be interested in automating their setup workflow. TL;DR It’s like 85% Homebrew automation and about 5% dotfiles and about 3% curling tools…
Often in creative web projects, I find myself having to take a number, which exists in a specific range of numbers, and find the number that would be in the same position if the range were changed. Examples of this type of operation can vary anywhere from converting Fahrenheit to Celsius, to my recent use-case of creating an array of 500 “particles” with 3D coordinates and assigning each one a…
TL;DR One of my most-frequently searched dev tasks over the course of my career thus far has been the “how do I find what process is on a port” to “how do I kill a given process” wombo-combo — there’s always some memory-leaky service running that ctrl + c isn’t tough enough for. Figured it’d be good to write a quick shell function for doing just this. Before I get into the explainer, here’s the…
Before I even get into the impetus for this blog post, if you came from a search engine and you just want the code, here’s a demo . Pleasure doing business with you. Introduction In a client’s project recently, I found that their Wordpress setup required content editors to upload four separate versions of a blog post’s featured image at varying dimensions to ensure a correct appearance in the many…
This Is That Dreaded Blog Post That Was Foretold Every blog poster fears that one day this post will be upon them — that painfully self-important and -unaware “Why I’m Leaving ${city} ” post. I’m gonna try to do this right; to make this one on the less-obstinate side to some of the other ones I’ve seen, but unfortunately I may make no promises, and you’re on my blog. I’ve tried to write this post…
I recently saw an online acquaintance of mine share a Controversial Opinion™ that I found challenging: If you do not have formal training in design you are not a designer. Right off the bat — L take, and I’m trying not to say that just because I am a designer with no training (lol). I think there’s more ways to be critical here than just being like “haha ok then how me doing design rn”, though.…
I got an email recently from a kind online friend who said they thought my work was swell, and that they’d like to ask about my process or what makes a good website. Aside from that being a really nice email to receive, it’s also good impetus for me to be a little more candid and critical about my practice. Here’s my breakdown on how to make a Good Website. It’s fine if you disagree with me on…
Contentful is an immensely well-featured headless content management system, but the density of its featureset can be daunting to integrate with static site generators. The great news is, Eleventy is so well-designed and modular — it doesn’t have to be nearly so challenging. TL;DR Contentful has a REST content delivery API and a GraphQL API. This post covers using the REST API to query blog posts…
Okay quick disclaimer before I kick this off — this post does not cover how to use interactive Vue components in an Eleventy project. This post covers using Vue entirely server-side! The client will not receive any Vue code. All of the code for this project can be found in this repo on GitHub. TL;DR If you’re using Eleventy because it’s lovely, but like using Vue syntax to handle single-file…
I have this weird relationship with Incredible Amounts Of Grief where, like, I’ve literally been there — I know there’s nothing to say, and nothing will heal but time. When The Bad Thing™ happened, I felt angry so often with people wasting both my time and theirs trying to string together something moralizing and impactful, either to Make It Better, or to make themselves feel like they tried. When…
I recently* built this really cool feature for my personal website that allows me to use Netlify Functions to show my most-recently-listened-to tracks from Spotify. *It wasn’t recently, it was in July 2020, please don’t look behind the curtain. It’s an easy way to show some personality, and mostly just an excuse to get friendly with Netlify Functions. While the authorization flow for Spotify’s API…
This morning, the atomic design GOAT Brad Frost Tweeted a question about variable naming for colors: Here’s a fun one: what variable name would you define for `rgba(0,0,0,0.9);`? I drafted up a Tweet to answer this, but it ended up being closer to five Tweets, so I figured it might just work better for me to do a tiny blog post instead of a big, noisy thread. Strategy This might seem overwrought,…
Inspiration and research assistance for this article was extremely graciously provided by David Darnes , Robb Owen , and Andy Bell . They're good, grounded folks who care about the right things. So as it turns out, the guy who made Statamic has decided to publicize his extremely unfortunate views that controlling womens’ bodies is the most important thing to him in this election, over keeping…
Impetus I’ve been working on a project lately that requires the loading of many, many webfonts. For the main UI font alone, we needed to download over 980 kB of WOFF and WOFF2 files. As it happened, the client eventually developed a variable font version of the UI face, which was a much smaller 225kB file. However, when I received the variable font file, I realized it was a TTF, and not the WOFF2…
Introduction This time last year, I Tweeted out some goals for the New Year. 🗣️ Speak about CSS at a conference or school 🎓 Take a class a month 📚 Read a book a month ✈️ Go back to SF, go back to Europe 💵 Save enough to buy a house Bring it tf on, 2019. I was determined and inspired by a strong career year, financial independence earned by selling my car, and the sense of indomitability and…
Before you get started, fair warning that this post has “takes”, some of which could be considered “hot”. This post is not about web development. So, Twitter recently stopped allowing political advertising. jack 🌍🌏🌎 (@jack) October 30, 2019 We’ve made the decision to stop all political advertising on Twitter globally. We believe political message reach should be earned, not bought. Why? A few…
So, I was looking for a fun example of UI interactivity to prototype on Codepen, and I stumbled upon this really cool shot that Alexsander Barhon shared. It’s a simple enough animation, with a really nice loading effect and staggered timeline that make it feel super fluid. I’ve been really into Vue.js lately, and this seemed like a perfect opportunity to code out a little app. Live your life, but…
This is a non-exhaustive list of the tools I use in my day-to-day operation for design, development, and life as a human. If I’m missing something, let me know ! Hardware Main Computer — 2023 MacBook Pro, 14-inch, 16GB M2 Webcam — Onboard Mac laptop camera Logitech C920 Pro HD Microphone — Blue Microphones Yeti Blackout . Got it for streaming, use it for everything. Keys — GK64 custom build, with…
This article was originally posted on the Universal Mind blog in June 2016. It’s come to my attention lately that my kitchen is absolutely riddled with poor experiences. Most of the appliances and apparatus one uses on a day-to-day basis in the kitchen were invented or last revolutionized in the early part of the 20th century, and many of them have seen very little innovation, if any, since that…
This article was originally written for the Fusionbox blog in January 2015. The Fusionbox process takes many pages from the Great Big Book of Agile Methodology to streamline and modernize the production of web content, etcetera, but for the folks at home, what is agile development? Where did it come from? Who let it in? Should we feed it? Waterfall Software development used to be treated the same…
A lot of the SVG filter primitive content out there is some really rad, deep-dive type content (I’ll link some of these at the end!) , so I reckoned it might be nice to do a quick write-up on some effects I use pretty commonly. These are more-or-less plug-and-play; simple filters for making your friends go “ooh how did u do that lmao”. Setup To kick this off, all we need is a super simple HTML…