You Might As Well Use a Content Security Policy - Very thorough and well-written overview of CSP, how to deploy it, and why. Plus, I totally missed that you can do this with a <meta> element!
Egoless Engineering - I've been sharing this everywhere. I really good read if you, like me, are often frustrated by teams responsible for a Thing having no power to change the Thing.
unminify - "Free tool to unminify (unpack, deobfuscate) JavaScript, CSS, HTML, XML and JSON code, making it readable and pretty." It all stays in-browser, allegedly.
Frameworkism is now the dominant creed of today's frontend discourse, and it's bullshit. We owe it to ourselves and to our users to reject dogma and embrace engineering as a discipline that strives to serve users first and foremost.
(Emphasis mine.)
I remember the moment I knew we were screwed. I was at our annual developer conference in the early 2010s. Teams usually sent a few devs to demo something cool they were working on.
I started to notice a common narrative from these sessions: we needed front-end, but we didn't have front-end expertise, so React allowed us to do it ourselves. Over and over. By the end of the day one presenter quipped "so, we ended up using React...maybe you've heard of it?" eliciting chuckles from the crowd.
"Front-end engineer" would not become an official role at the company for another five years. It was clear in those early days that React was a way for any engineer to "do" front-end, including those who weren't particularly concerned for the quality of the user experience.
Frameworkism is now the dominant creed of today’s frontend discourse, and it’s bullshit. We owe it to ourselves and to our users to reject dogma and embrace engineering as a discipline that strives to serve users first and foremost.
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.