Masthead image of a light brown and white barn owl, its head cocked
    completely sideways, looking at you inquisitively.
Keith's avatar
Keith J. Grant
keithjgrant.com

Front end developer working primarily in React. Currently at Red Hat working on Ansible Controller.

I live in the great Pacific Northwest. I care about people and believe in the open web.

  1. Keith's avatar

    Hey Indieweb friends... I've decided to let my registration of https://omnibear.com lapse (it's good til February).

    If anybody is interested in taking over that project, I'm up for a domain transfer. Anthony Ciccarello has indicated some interest, so teaming up with him might be a possibility.

  2. Keith's avatar

    I was wrong about Zelda Tears of the Kingdom.

    Sure, the game gives a stunning first impression. And a stunning second impression (the moment you discover the depths). After that... it kind of consistently disappoints.

    If this had been released as is, without BotW ever existing, it would perhaps be far more impressive. But as it stands, I've already explored this world.

  3. Keith's avatar

    I think the key problem with recent Metallica is there’s no variety anymore. No dynamics.

    The songs themselves are generally solid. I’m happy when they show up in my shuffle. But every single song now hits hard and heavy. I can’t often bring myself to listen to their recent albums in one sitting, from start to finish.

  4. Keith's avatar

    The best CSS features to drop in 2023, in increasing order:

    • Trig functions
    • text-wrap: balance
    • Nesting
    • @property (close enough; FF will ship any day)
    • nth-of selector added to :nth-child()
    • Subgrid
    • :has()
    • Wide gamut color
    • color-mix()
    • Container queries
  5. Keith's avatar

    My 20-years-abandoned guitar skills have been coming back to me surprisingly quickly. But dang, I can’t remember any songs. A few riffs of Enter Sandman is about it. Guess I’ve got my work cut out for me.

    Anyway, this time around I’m determined to properly learn the notes of the fretboard, so I started making a little app. It still needs some polish, but it’ll serve the purpose.

  6. Keith's avatar

    YouTube has a led me into a realm of videos on the Star Wars sequels. I get that Rise of Skywalker is basically universally hated, but it also seems to be overwhelmingly negative towards episodes 7 & 8 also, even though reviews on those were generally mixed when they were released (I loved them both would be happy to tell you why).

  7. Keith's avatar

    I think we're going to regret CSS nesting, at least the way it’s defined in the spec.

    CSS has been going in a very strong direction for the past five years. There just aren’t any more “gotchas” or confusing/misleading parts of modern CSS, because the W3C has worked their asses off essentially refactoring them all away... except nesting.

  8. Keith's avatar

    “Sass will simply not support plain CSS nesting unless we can do so in a way that’s fully compatible with existing Sass behavior.”

    I think this is the end of the Sass road for me. In fact, as soon as I read this, I immediately regretting using Sass in my recent website redesign at all.

  9. Keith's avatar

    I tried Arc Browser as my default browser for several months. I even tried to talk a few co-workers into doing the same. I absolutely love the way it manages Spaces, and no other browser comes close to this kind of reasonable, real-world tab management, not by light years.

    Unfortunately, I’ve had to give up. I’m switching back to Firefox. A few issues were starting to feel like death by a thousand papercuts. Here are my reasons for giving up on Arc:

  10. Keith's avatar

    The silly low-chance thing I'd really like to see in Tears of the Kingdom is a revamped version of the Gerudu Valley music from Ocarina of Time. And the Forest Temple song.

    That game had some killer music. I feel like Nintendo has been sitting on some wasted opportunity for quite a while to revive those.

  11. Keith's avatar

    Okay, it's time for me to start experimenting with posting short notes to my own website again.

    I probably have some fiddling to do to get webmentions working on the new subdomain.

  12. Keith's avatar

    Web Whiskey Weekend, here I come... 🥃

  13. Keith's avatar

    That episode of the Great British Baking show where they make “American pies” but Paul makes it abundantly clear a) he doesn’t like American pies, and b) he doesn’t have a clue what constitutes an American pie.

    Then most of the contestants proceed to make tarts that are decidedly neither American nor pies. Though one guy makes a rocking proper American key lime pie, and Paul says he loves it even though it wasn't what he asked for.

  14. Keith's avatar

    Dear online merchants: “Your package has been shipped” does NOT mean “We have obtained a shipping number from the post office and will actually deliver your package to USPS in five days.”

  15. Keith's avatar

    For Father's day this year, my family got me gift cards to all the artisan coffee shops in Spokane, so I can test them all out.

    Up this afternoon: First Avenue Coffee ☕️

  16. Keith's avatar

    Something that will always bug me:

    I still think const should be used for constants (like ALL_CAPS_CONSTANTS) and var should be the default. Use let when you really want block-level scoping.

  17. Keith's avatar

    I love what Svelte is going for, putting the framework in the compiler. But I see “template logic” in the HTML and alarm bells ring.

    Unless I’m missing something, you'll always be limited by what the template language supports :(

  18. Keith's avatar

    I tried to read game of thrones once. After 150 pages, nothing had happened, so I stopped.

  19. Keith's avatar

    Insane idea (don't flog me): NPM browser extension. Once a site uses a dependency, it gets stored locally & doesn't need to be downloaded again.

    Like CDNs, but with more strongly enforced SST, because CDNs don’t actually gain the caching benefits they initially hoped.

  20. Keith's avatar

    I will henceforth be referring to RSS as “the future from the past”

  21. Keith's avatar

    A young, naive me: “When I’m grown up, I’m going to have a set of set of matching coffee mugs, not some random assortment”

  22. Keith's avatar

    Don’t forget, kids: “Always bet on JavaScript” is and always has always been shorthand for “Always bet on the Open Web Platform”

  23. Keith's avatar

    I get frustrated with debugging & breakpoints in Firefox. It seems like they often just don’t work—but I suspect it’s that they don’t work exactly like Chrome.

    Are there any write-ups that walk through the differences between the two?

  24. Keith's avatar

    A search on the online store for computer mice, but with a filter that only shows me big, full-size mice that won't cramp my hand

  25. Keith's avatar

    Yeah, so I realize I still need to finish writing that final installment in my IndieWeb series. Hoping I can get to it this week.

  26. Keith's avatar

    Everyone likes to make a fuss over Celsius vs. Fahrenheit and gallons vs. liters.

    But can we talk for a minute about the UK placement of punctuation outside of quotes makes far more sense than the ridiculous U.S. style?

  27. Keith's avatar

    Amazing how there's a tendency (in myself & others) to think it would be easier to build your own tool than to simply learn one that already exists.

    Subtweet: You don't need a new flexbox-based grid system. Learn CSS Grid.

  28. Keith's avatar

    Rule of thumb: if a method in a React class doesn’t reference this (or only references one or two values on this), extract it out into a standalone util and pass those values in as params.

  29. Keith's avatar

    Deleting code to improve test coverage 💪🏻

  30. Keith's avatar

    I’m not one who typically has the problem of too many browser tabs open at once. My code editor on the other hand…

  31. Keith's avatar

    Nothing against React Suspense here, but… y’all realize that waiting a set delay before showing a loader is do-able with just a few lines of CSS, right?

  32. Keith's avatar

    I wish everybody arguing about the cascade (on both sides) understood the difference between cascade & inheritance, and was more explicit which one they mean when.

    The lack of clarity is certainly not helping the discussion.

  33. Keith's avatar

    I have made a cocktail with London dry gin, lemon juice, and habanero cucumber syrup. And it is one of the best drinks I've ever created.

  34. Keith's avatar

    Currently chewing on this idea:

    Many frustrations with CSS come from unexpected behavior when we ask it to do conflicting things. Part of this stems from not fully understanding the default behavior, and how our code might fight against that.

  35. Keith's avatar

    Building a React SPA with a top-level App component, routing, centralized application state, & API data fetching.

    And it renders to static HTML and works without JavaScript.

    The whole “docs vs. apps” thing is nonsense

  36. Keith's avatar
  37. Keith's avatar

    Typed up several new drinks & added them to Sidecar over lunch. Check out the lemon bomb!

    https://sidecar.us/drinks/lemon-bomb/

  38. Keith's avatar

    When one browser dominates the market, bugs become features and open standards take a back seat. When IE6 became the dominant browser, we had to live with the consequences for a decade.

    It is certainly plausible that Microsoft just doomed us to another decade of fallout.

  39. Keith's avatar

    We finished a re-watch of all six seasons of Community last night (though it was our first time seeing season 6, since it originally only appeared on a weird Yahoo streaming service). Such a phenomenal show. And the final episode was the perfect way to end it.

  40. Keith's avatar

    I still say there’s something fundamentally wrong with our food distribution practices when one outbreak/incident means the entire country has to beware an entire product.

  41. Keith's avatar

    A fire in the fireplace and a dram of Talisker Storm 🥃

  42. Keith's avatar

    Chrome is simply better at debugging JavaScript. And Firefox is simply better with CSS.

  43. Keith's avatar

    Has anyone done a good exploration yet of good ways to integrate useReducer() and context?

  44. Keith's avatar

    So Connect.Tech is this week. I’m not there because I apparently cannot read a calendar correctly, and thought it was during my Scotland trip last month. 😕

  45. Keith's avatar

    Today I made:

    • Scramled eggs with Scottish smoked salmon, shallots, & tarragon
    • Almond biscotti from scratch
    • My famous burgers (the 5 y/o says they're the best anywhere)
  46. Keith's avatar

    The perfect use case for Web Components as they are currently defined: libraries like Bootstrap. Then provide thin adapters over the top to tie them into various frameworks.

  47. Keith's avatar

    Developers: Please make sure your library can be imported in both Node and browser environments. Please handle typeof window === 'undefined' gracefully, even if it “should only ever be run in browser.”

  48. Keith's avatar

    Observation about coffee in the UK:

    Most espresso drinks I had there were decent but not outstanding. Meanwhile, none of the drip coffee was remotely as bad as the swill that’s so common in the States. (I did see a few Starbucks, but I avoided them there just as I do here because their coffee is unpalatable.)

    In the States, I usually have a bit of trepidation when I order coffee from a new place, but everywhere I went in the UK was “safe.”

  49. Keith's avatar

    Oh hai I have like 30 unread newsletters from my time (mostly) away from the screen. I’m probably gonna skim through them really fast so let me ask this:

    Were there any really cool/essential/notable things to read in the past two weeks in webdev?

  50. Keith's avatar

    “Yes hi I have a very important question. So instead of asking it in this email, I have saved it as a Word document and attached to waste your time. Please get back to me ASAP”