Welcome to the world of local-first web development. - I didn't know there was a community of devs focused on building web apps that run completely client-side. I'm also wondering why I was surprised by this.
PikaPods - Super-inexpensive ready-to-use hosted apps like RSS readers, blogging software (including Ghost and Wordpress), wikis, notebooks, link sharing and a ton of others. Via Joe Crawford.
PocketBase - an open source fully-contained backend for web apps. You get an SQLite database, authentication, and file storage, wrapped in a single binary with a REST API. Neat! One of the available apps on PikaPods.
Editing Plain Vanilla - a good overview of a VS Code profile for vanilla JS projects. The Plain Vanilla site has a lot of really good and sensible patterns for building sites and apps without frameworks or a huge toolchain, but it's such a bummer to see AI images to adorning their blog posts.
Animate.css - cool library of ready-to-use CSS animations along with best practices. Pull apart to code to see how the animations work.
...and a fun bit of web history: Nifty Corners Cube. A 2006 JavaScript library for creating rounded corners on HTML elements, from the time before border-radius existed. The demos still work! The source code is an interesting time capsule of techniques we needed to hack around poor/missing support of APIs like addEventListener and querySelector.
I stopped using Twitter (or X, whatever) personally late last year and stopped posting comics on the Neat Hobby! account earlier this year. This week I downloaded a backup of my tweets, set my accounts to private, and deleted all my tweets going back to 2006, almost two decades of tweet, replies, and likes. (Keep reading if you want to know how I did this.)
So I guess I'm done for good. I thought this would be tough emotionally, but I guess not? At one point I couldn't imagine walking away from MySpace, it just really seemed that important. And then one day it just wasn't! Maybe I'd feel different if I didn't have a copy of my stuff.
The announced change to blocking was the final insult. Blocked users will still see your tweets. This is like your landlord saying window curtains are forbidden and everyone should be able to take photos of you from the street. Their reasoning for this is stupid, they know it's stupid, and they know we know it's stupid.
And then there's training their AI on your tweets which, let's face it, we all knew was coming. I don't know if deleting your tweets actually prevents this, and it wouldn't surprise me at all if tweets are just flagged as deleted but still retained in their system. Whatever. No need to make it easy for them. They have an opt-out setting, but do you trust it?
Twitter was fun and its impact can't be understated, but for the last decade it felt like the place where journalists and politicians cursed with posting disease went to over-index on the sentiment of less than 20% of Facebook's DAU, some significant percentage of which are bots or sockpuppets.
Anyway, I'm still "on social media" but I've taken down all the links to my socials from this site. I don't see the need to give them free advertising. I'm pretty easy to find: I'm either "scottandrew" or "neathobby" everywhere.
I enjoyed Twitter, but I was never "good at Twitter" I suspect whatever was left of my followers were actually abandoned ghost accounts, like empty cicada shells clinging to a tree.
And I think it's not just me!
Post is up nearly a whole day, on an account with 16.7K followers.
First, I downloaded an archive of my Twitter data. To do this from the app or website, go to Settings and privacy > Your account > Download an archive of your data. Here's a direct link. You may be asked to re-enter your password and go through 2-step authentication if you've set it up.
Twitter/X should message you when it's ready. It took about a day to get my data, which came as a downloadable ZIP file. Unzip it and check that everything you want is there. Twitter archives used to be just a mess of folders and files, but this most recent archive came with a pretty nice little web dashbord to navigate everything:
Alternately there are some free web apps that will convert your ZIP data into something browsable, like Darius Kazemi's Twitter archiver.
To delete tweets, I used a free app called Redact. Redact has paid options that allows you to delete posts from more services, delete posts on a schedule, etc. but at the time of this writing, deleting Twitter data is free with Redact. It also has an option to archive your data before deleting, which I did not use.
If you have more than 2-3K tweets, Redact will warn you to use the "delete from file" option, which is a paid feature. You don't have to do this if you're patient. I had over 8000 tweets and just deleted them in batches one year at a time.
It wasn't perfect. I occasionally had to re-run a batch to get everything, and I had to go in and delete a few things by hand. Sometimes the program appeared to get stuck in a waiting loop. When this happened, I just cancelled and restarted the scan.
There are other web apps and programs that will mass-delete tweets but most of them cost money, some requiring a subscription. I guess this makes sense if you're a social media manager where scheduled mass deletion is part of your job.
Long long ago before the invention of social media, when browsers were nothing alike and "web designer" was your job title, I wrote a tutorial on browser event handling which included a small snippet of JavaScript code encapsulating the various implementations in a single function I named addEvent.
I didn't know this at the time, but this naïve scrap of JS would become the most-copied-and-pasted code I would ever write. When I was hired at Amazon in 2003, I had some heart palpitations upon finding addEvent strewn throughout the codebase. Today it's been mostly replaced, made redundant not so much by the broad adoption of the web standard addEventListener but by the arrival of jQuery. I still found a few references as recently as 2018, and I half-regret that I didn't file a ticket to remove it, lol.
Nineteen years later you can still read PPK's original article at the same URL. But I've migrated and redesigned this website many, many times, eventually breaking all links to my JavaScript writing. Cool URIs don't change, but that's my secret, Captain -- my links have never been cool.
It's very strange to look back on this after 23 years. The tone is very conciliatory ("let's not be too hard on Microsoft, I'm sure they're trying very hard!"), and the targeted browsers -- Netscape 6 and Internet Explorer 5 -- are so long gone I don't think anyone thinks of them.
Also: the case logic ends with an alert()? What? Not console.log()? Oh, hang on, developer consoles weren't a thing until 2006, and then you had to install Firebug!
We would get MySpace, Ajax, and YouTube several years before we had any in-browser debugging tools.
If videos taken with High Dynamic Range (HDR) on your iPhone only show a black screen during playback in the Photos app, check the Reduce White Point setting. If you have that setting active, deactivate it and see if that fixes your HDR video playback.
In iOS 17, you can find this setting under Accessibility > Display & Text Size > Reduce White Point.
I was in a panic thinking I had suddenly lost a ton of video from the past two years. Every vacation video taken with HDR was black. Via trial and error I disabled the white point reduction setting and boom, my HDR videos were restored. I had mapped the white point reduction to the side view button, so I could dim the screen with a triple-click when reading my phone at night. I had no clue this would have any effect on HDR video.
I'm writing this solution here, in the vain hope that search engines will find it and include it among the useless AI-generated trash they served up when I searched for a solution, including not only answers that were utterly incorrect, but also suggestions that I just not shoot HDR video anymore. Thanks, I could have gotten that advice from Reddit!
It's been awhile! Some interesting links saved to my Pocket account:
HTML For People - A delightful primer on how to make a website and put it online, without making you feel stupid or needing a CS degree. I really want to read this from start to finish because I've undoubtedly forgotten some things.
Faircamp - A free app that creates a static website for music.
Point Faircamp to a folder hierarchy on your disk which contains your audio files. Within minutes, Faircamp builds a complete, static website that presents your music to your audience. You can view the site on your computer or upload it to any webhost - no database, no php or such required.
SVG Repo - An enormous collection of high-quality SVG icons and vector graphics that are free/open source/public domain/CC-licensed.
Pixelmator Pro (MacOS) - I've used Pixelmator image editing software for over a decade now, but the new Pro edition includes some of the cleanest SVG output I've seen.
Every Layout - I'm fascinated by this book on mastering responsive/adaptive CSS layout and wish I had more projects to apply it to.
In the last three years I’ve worked for three very different companies. This year the tech industry is laying off thousands. I’ve been thinking a lot about jobs. In rougher times it feels risky to ask a lot from your job, but we should. Especially now. So here’s an unordered, incomplete list of things I want from a job.
I would like these too, please. And I'd add the following:
A talent review process based on achievement.
A career path that is focused on growth instead of levels or titles.
No requirement to pretend that I'm smart all the time.
I've been building this website with Eleventy on Netlify for awhile now and I love it. That said, I've started to miss having dynamic features. So I went spelunking in the cold, haunted depths of NPM to see what eyeless abyssal creatures (i.e. possessed, sleep-deprived full-stack devs) have already built for me.
Here's a feature that I've wanted for a long time: link unfurling! I've always liked those rich preview cards you see when you share links on just about any social media app. Thank you Dave and Sara!
(These might look like a mess in your feed reader, so I suggest visiting my website directly if you're using one. Yes, you there, reading this right now with a feed reader.)
I did some light hacking on a copy of this code to create a fallback format when data like images are missing.
Related to redoing this blog, I thought I’d quickly share how I exported all of my 11ty content and imported it into WordPress. Steps First up, I installed a fresh copy of WordPress and cleaned out the default posts, pages and comments. Then, in the existing Eleventy project, I added the following page—which I named […]
It's summer, and I find myself with some downtime, which usually means overthinking.
Work
Nearly a year ago I observed the 20th anniversary of my day job. Neat! And then several months later my position was eliminated in a gigantic re-org. I was given some time to find a new position in the company, but after 20 years and with the support of good friends and loved ones, I decided to just exit.
So I'm in the middle of a gap year I feel exceptionally fortunate to be able to take. It is...a very strange feeling sometimes.
I've been spending my time catching up with the state of web development outside of the silo of a Big Tech Company. There is so much cool stuff happening in the front-end space these days and I've been having fun working on personal projects and reconnecting with the work that drew me to the web in the first place.
Whatever my next career move might be, I'm aiming for something with a little more autonomy. Self-employed? I used to think I didn't have the knack for that, but these days I'm feeling the curiousity and confidence to figure it out. It also helps to have had, uh, a quarter-century of experience building stuff.
Also, the tech interviewing space has become broken and gross, and I say that as someone who's been on both sides of the process.
Music
There is no music! Since the release of the Car Trouble album and the handful of follow-up singles, I haven't written squat. There are some unreleased cover songs I recorded with Nelson and Craig over a year ago, but I really dislike my vocal performance on those and I think I'd have to fundamentally change the nature of my voice to be satisfied.
I also have the remnants of a follow-up Car Trouble EP, maybe about four new songs, scattered about. I'd like to finish those someday. But honestly, my songwriting neurons are thoroughly fried, and I'm being pulled more and more toward comics, which don't require me to go anywhere, lug gear around, or stay out past 1 A.M. to get my bass rig that I loaned to the other bands back.
On the bright side, I've been playing bass a lot and I'm very, very good now.
I do fantasize about finding a perfect gig on Craigslist, which at this point would be an all-middle-aged Phil Collins tribute.
Here's why: subscribers are getting a lot more stuff than what I post of the website. They're getting extra comics, one-panel gag comics, peeks at animation projects I'm working on, and access to a hidden blog. They also get to see comics at least a week before everyone else.
Here's another reason: social media is a lousy way to distribute comics, or any other art. You know this. I know this. Everyone knows this. It's true that algorithms hide content people actually want to see. But also? Thanks to all the noise created by AI-generated trash, policital jerks, and ads ads ads, people are just tuning out social media.
If you like an artist's work, you really should try to follow them off of social media, even if you're not ready to give them money. Go find a few artists you love and show them that love: sign up for newsletters, share links to their work, bookmark their websites, or just tell someone else!
Animation!
I am turning a small number of Neat Hobby! comics into animated shorts! I'm learning to do this through Clip Studio Paint's built-in animation tools. I haven't posted anything public yet (which is why you should join the newsletter! ) but if you subscribe to my YouTube channel you'll see them the moment they go up.
This is by far the most fun and satisfying thing I'm working on. The perfect intersection of my interests: drawing, music, voice acting, video. I want to do 8-10 of these by the end of 2024.
AI
I try to keep an open mind about it, but AI really does look like a bubble that's gonna pop before it can produce anything of broad value. That's okay, we did that with the dotcom stuff too.
Big Tech Companies had a nice sprint during Covid, but now that's over, innovation has plateaued and they're out of ideas. But because constant growth is the expectation, we get layoffs, more ads, price hikes, and Hail Mary attempts to shove AI into things that worked perfectly well without it.
Which sucks, because I actually think there's some real utility! I have a short list of things I'd want AI to do for me personally, and none of them should require god-level intelligence or a dedicated power grid.
That Thing in November
I don't even know why this is a question! But if there's any doubt, here's a handy rubric:
How did you feel when the US Supreme Court threw out Roe?
How did you feel as you watched January 6 happen in real time?