Blogs
-
Auto-Shut-Off Headphones
TLDR: Blah blah: I’ve got a pair of Bose Noise Cancelling Headphones. I may have gotten them from a weird marketing campaign 😂. They are pretty nice. I think Bose made the “noise canceling” thing a thing, and I’m not turning my nose up at near-$400 headphones. But I’ll critique them a little! There are […] -
Two Things That are Not Great About OKLCH
I’m still a fan of the OKLCH color model and CSS function. But there are a couple of things that are confusing or weak about it, and it’s probably fair to point those out clearly. 1) Adjusting the L, C, and H values by hand is a bit dangerous Dangerous because of totally invalid combinations. […] -
New File Here
You can make a new folder anywhere you like on macOS. But not a new file. Sorta makes sense. What kind of new file? In a program like VS Code, it assumes it will be a text file (as opposed to binary), so it absolutely lets you create a new file wherever and you name […] -
Prebiotic Sodas
I like kombucha as much as the next person (a little), but unfortunately, nothing has really been able to break my Diet Soda addiction. Is it a huge problem? I don’t know. But sometimes I think, well, at least it can’t be terribly good for my guts. Maybe prebiotic sodas (kombucha formulated to taste like […] -
If you’re trying to trick people into thinking a domain name is legit and definitely not harmful, just put google.com@ in front of it.
I don’t know why this works, but it’s some kinda feature of URLs: https://google.com@chriscoyier.net/ It’s not a Google thing, I think anything works: https://daverupert.com@chriscoyier.net/ It opens a door to make functional URLs that go somewhere you really aren’t expecting: https://definitely-safe-place-to@buy-drugzzz.com I saw this in The Dangers of Google’s .zip TLD that used these examples: https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1271.zip […] -
The Best Mouse Pad
It’s the Razer Atlas Tempered Glass Gaming Mouse Mat. It’s so enormous. It’s so silky smooth. I love it. -
Early Days Examples of View Transitions
All of these are page transitions, like when you leave one page and go to another. As opposed to the document.startViewTransition kind, which are also cool, but not as game-changing. Here’s my playing around, which you can see in this Project. That’s an <a> that turns into a <div> on the next page, because that’s […] -
Tracking Blocked Scripts
If you have a reference to a script in JavaScript you think might be blocked… Before you add it to the page, you can add an error handler: Then kick it off… If you’re trying to detect this from <script> tags in the HTML, you can still get a reference to it the script element, […] -
Cross-Posting
Y’all know Buffer? It’s a fairly sophisticated app for posting to social media. It began, I believe, as just a way to schedule tweets. Then it became a way to craft social media posts but send them to more than just Twitter: Facebook, Pinterest, LinkedIn, etc. That, to me, is still the core value. If […] -
Add Opacity to an Existing Color
Say your brand color is the orange #f06d06. Now you need that color but with some opacity on it. One option is the 8-digit hex code. I find it hard to know which additional two characters are needed, but it’s possible. Hex Code Notes #f06d06 Original Orange #f06d0640 Orange @ 25% opacity #f06d0680 Orange @ […] -
If you’re looking to have nested DOM elements all participate on the same CSS grid, you’ve got Subgrid, but that just inherits grid lines. `display: contents;` can help put the elements on the same parent grid.
Take this markup: If article.recipe is display: grid;, then the only grid items are the <h2>, <div>, and <ul>, because they are the direct descendants. But it’s a reasonable ask, I think, that you’d want the <li> elements, actually, to be grid items, not the entire parent. The trick there is to tell the ul.ingredients […] -
☠️ WordPress to Twitter
I’ve long used automation to auto-publish from my WordPress sites to Twitter. I used to work with Automattic as a sponsor for ages, and I’d talk up Jetpack, a WordPress plugin, that handled this social media automation nicely. The Jetpack Blog, 10 days ago: The End of Twitter Auto-Sharing We have attempted to work with Twitter […] -
Piping stdout and stderr to Preview
A while back, I wrote about how handy it was to redirect a man page into Preview. This allows you to keep the man page open, search it, and generally have a better user experience than struggling with more (or less) to navigate through the information provided there. man -t apropos | open -fa Preview […] -
Xcode: Vimpocalypse Now
This has appeared at the bottom of Xcode’s Text Editing > Editing settings, sure to make many vi users very happy indeeed: The change is heralded in the Release Notes: Using the new vim features is super easy. When the Vim keybindings are enabled, the bottom of your source editor gets this, showing current state, plus a […] -
Controlling Screen Sharing from the command line
My world often narrows to Xcode and Terminal. There are times I just want to check in on another computer quickly and I don’t want the hassle of creating a new Finder window, going to the network, waiting for the items to load, and clicking Screen Sharing. Let me share a quick osascript solution I […] -
Crafting a custom word count service
I just happened to need to do a lot of word counts today so I put together a service to make my life easier. While, I performed my initial work on Mojave but the same approach works all the way to Big Sur and, presumably, the upcoming macOS Malibu Barbie. Open Automator To get started, […] -
Pasting quoted code perfectly
You have some code you need to incorporate into a multi-line string. What’s the quickest and best way to handle it? Although I see people do this all the time, manually adding spaces to each line isn’t the best solution. Here’s a quick Xcode tip: First, paste your material into scope. Retain the indentation by […] -
Executing command-line directly from Xcode
I got pulled into one of those conversations where I end up saying, “Fine, I’ll put up a post about it” and this is the post. Yes, you can test and run command-line apps directly from Xcode but I pretty much never do. It’s a pain with few benefits. That said, here’s how you do it. […] -
A different way to develop SwiftPM Packages inside Xcode projects
WWDC gave us many reasons to both migrate libraries to SwiftPM and to develop new ones to support our work. The integration between Xcode development and SwiftPM dependencies keeps growing stronger and more important. Apple’s Editing a Package Dependency as a Local Package assumes you’ll drag in your package to an Xcode project as a local […] -
The (Switch) Case of the Missing Binding
Here’s a cool little challenge brought up this morning by a friend. Consider the following code: switch foo { case .a: return "a" case .b(let str) where str.hasPrefix("c"), .c: return "c" case .b: return "b" } It won’t compile. When you bind a symbol for one pattern, you must bind that symbol for every pattern […] -
Well that was a surprisingly bad Apple Store experience…
Remember the battery amnesty? Despite the stores doing everything they could to try to convince me not to replace the batteries, I insisted and persisted. I figured $29 would buy me the start of a new battery life-cycle. Less than 2 years later, my daughter’s iPhone SE battery is dead. Let me try to explain how […] -
Importing Web-based SwiftPM packages to your Xcode Playground
I’ve been kicking the wheels on Xcode 12 and its ability to use frameworks and packages with playgrounds. Up until now, I’ve only been able to import packages that are either downloaded or developed locally on my home system. However, a lot of the packages I want to work with are hosted from GitHub. I […] -
Adding the noopener attribute to CommonMark
Over on Notist I’m using the PHP League CommonMark Markdown parser to convert Markdown to HTML.
One recommendation that Google’s Lighthouse audits recommend is that
rel="noopener"
be added to any external links. There’s an entire article explaining why this is a positive move for both security and performance.I initially couldn’t figure out how best to do this, but it turns out it’s really simple. CommonMark enables you to specify and register custom renderers and they even have an example of one for adding a class to external links. All I needed to do was slightly...
-
Audible’s New Customer Experience
We’ve all heard the podcast ads for Audible. I listen a lot of podcasts when I’m out running, driving back and forth from the airport, or just around the house cooking or washing up. I’m doing a lot of long runs at the moment and am running out of episodes for the podcasts I subscribe to, so I thought I’d sign up and give Audible a try.
I’ve listened to audiobooks in the past, but mostly purchased as one-offs from iTunes. This would be my first time committing to a subscription service, but I was game to give it...
-
Introducing Notist
There exists a whole class of web sites for being “your home for x” as-a-service, where x is something you’ve created and want to share with others. If it’s code, there’s GitHub. For photos, you have Instagram and poor old moth-eaten Flickr. Music goes on Soundcloud, and if you’re the active type you can share workouts on Strava.
If you ever do any public speaking, you will have information from your presentation you’d like to make available afterwards. If you speak fairly regularly, you might want to keep an upcoming schedule of future engagements, and an archive of past conferences.
To...
-
Implementing Webmentions
In a world before social media, a lot of online communities existed around blog comments. The particular community I was part of – web standards – was all built up around the personal websites of those involved.
As social media sites gained traction, those communities moved away from blog commenting systems. Instead of reacting to a post underneath the post, most people will now react with a URL someplace else. That might be a tweet, a Reddit post, a Facebook emission, basically anywhere that combines an audience with the ability to comment on a URL.
-
C'est la Vie Austin?
UnderConsideration, the force behind some of the best and longest running digital publications on design, organizers of amazing conferences, and fellow Austin residents have pulled stakes to move to Bloomington, Indiana. That's right, some incredibly creative, entrepreneurial, smart people just left one of the hottest cities in North America for a small town in Indiana, the type that was recently the subject of parody on television.
Armin Vit (co-founder of UnderConsideration) provided some rationale for this seemingly-crazy relocation.
One of the keys to doing what we do, which is an unconventional and highly unlikely way of earning an incomean income that is sufficient for a few extravagances like an HBO subscription (I know, living large!)for two adults, two kids, and two dogs, is to have a low cost of living. The cost of living in Austin has increased, our property taxes are off the roof, and the traffic has become pretty insane. Even the Austin airport, which was super chill is now nearing JFK levels at peak hours.As an Austin resident of six years I find myself nodding in agreement, especially at the last bit about the airport. Austin Bergstrom was one of the most chill airports in the country and now it's just as stressful as Oakland on a Monday morningevery day. I knew Austin was going to blow up, but I had no idea it would scale so big, so quickly. And it's still growing like crazy. The city and surrounding area is set to double in size in the next twenty years.
I don't know that Kitchen Storey and I could move to the middle-middle of the country, but we're certainly starting to consider that it's time to move back to the Pacific Time Zone. Airport lines be dammed.
-
Yellow is the new normal.
Roughly fifteen years to the day, I published the fourth blog post on Airbag. It was a quick reaction to an exciting game Super Bowl between the St. Louis Rams and the New England Patriots. The Rams mounted a last-minute comeback that was surely going to force the game into overtime, but with one minute and thirty seconds on the clock, Tom Brady drove the team within field goal range, and the Patriots added three points to their scorecard and one the game.
The year was 2002, and everyone was still trying to process 9/11 and the aftermath--we were still processing shock. Due to national security concerns, the NFL season was pushed by a week while the country considered what security precautions were necessary for events like football games were potential future attacks could occur. Thus, the Super Bowl XXXVI was the first NFL game to be played in February.
At the time we were collectively looking over our shoulder for another round, the next wave of attacks, all while trying to get back to routines. Before the Super Bowl, there was special news coverage on security--demonstrations of tactics and a showcase of equipment to be used to thwart any attacks. This was especially true for the upcoming Winter Olympics in Salt Lake City. There seemed to be just as many news stories about security as there were stories about athletes and the games themselves. You had to wonder if this was going to be the new normal.
I can't recall the last time I read or watched a story about event security. And I don't remember the last time I heard what security color we're on. It's yellow or "Elevated Condition." Thankfully, I had to look it up.
-
Using Gravatar as a Spam Indicator
One of the necessary evils of running a website that includes user comments is eventually sifting through spam. Even if you have a good anti-spam filter like Akismet in place, you still need to occasionally wade through the comments to check for false positives.
Today, I’ve been updating the Perch Blog add-on to make it compatible with the upcoming Perch 3, and one of the pages I’ve been tackling is comments listing page. The listings API in Perch 3 has the option of including a Gravatar alongside any email address column. On adding this to my comments...
-
Holiday Office Hours, the Airbag Way.
Dustin Senos, former Head of Design for Medium, and all around good guy came up with a pretty cool idea after a bit of introspection.
As the year comes to a close, I've been reflecting a lot on my career, the future, the past, and the present (2016, you've been a doozy.) When thinking about companies I've had the chance to work with, and the people I've met, I always come back to how thankful I am for those who took me under their wing. The people who took a risk hiring me when I was young and inexperienced, the people who supported me taking on more responsibility later in my career, and the people who took the time just to chat. My career exists because of those people.Looking back at my early career I too had a handful of supportive mentors during school and at work (I could use one now come to think of it). More recently, I have enjoyed building up and continuing to mentor nearly one-hundred early career designers, developers, and offering managers at IBM Studios around the world.
Inspired by his career reflection, Dustin came up with Holiday Office Hoursa way to give back by arranging eight hours of time in thirty minute blocks over the holiday break to provide consultation for "people who may be in school, getting into the industry, new to design or engineering, or struggling with their first tech job."
Once I caught what Dustin was up to and why I joined up along with Noah and a growing list of industry professionals.
So, as long as you don't work for IBM (because you all already know how to find and schedule my time), sign up for a time slot and lets talk*. I'm happy to answer any questions you have and give what advice I might have after being in the industry for twenty-plus years.
* I removed the link because all slots have been taken. Given the response I'm going to consider doing this again soon, but after I get through the initial round of sixteen discussions. Follow this account and @brilliantcrank for future