Speaking of Safari, I actually ended up restoring compact tabs since I prefer them over the old design. My only qualm with Safari during the beta was the adaptive toolbar color but that’s gone now.
As a heavy Safari and Notes user, Tab Groups and Quick Notes in Monterey have been a great boon for my productivity. And for all the Twitter drama the Safari 15 redesign generated, it’s been a solid release for me so far.
This weekend I hesitantly started migrating my 11k LOC server-side Swift project to use
async
/await
, and I’ve been having a blast. I still have ways to go, but the code is easier to read and reason about, which conveniently highlights areas that can be refactored out to streamline the codebase even further.I really want to keep liking Gatsby.js, but the distasteful npm ecosystem, the forced client-side JavaScript, and my complete lack of use for client-side hydration—the process of turning static pages into interactive ones using JS—have been standing in the way as of late.
Random Lessons from the SwiftUI Digital Lounge
Javier once again knocks it out of the park with a meticulously curated list of questions and answers from this WWDC’s SwiftUI digital lounge.
This easter break I built my first command line utility in Swift using the Argument Parser library. My main motivation was to automate some of the tasks I have been doing manually in one of my unannounced projects. The result is a kickass CLI with all the bells and whistles such as help, auto-completion, etc. Shoutout to Nate Cook over at Apple for this awesome library!
風任せ
風任せ (kaze-makase)
- Literal meaning: leaving it to the wind.
- Figurative meaning: being worry-free, going with the flow, leaving things to the course of events.
- Example: 船は帆任せ、帆は風任せ
Open-source maintainers: README files should not replace proper reference documentation.
I noticed that I consistently, and mistakenly, name the first closure parameter in Swift functions with multiple trailing closures. My two cents on SE-297 now that the dust has settled: ignoring this specific feedback point was not a programmer-centric decision.
“No one gives a shit what programming language you use.” A harsh but forthright rant by George Stocker.
There’s nothing wrong with preferring one language over another, as long as it is not the only deciding factor. I was tempted to use Swift for building static sites, but I decided against that because JavaScript and its ecosystem, warts and all, is still better suited for Web development.
I love the indie Web concept of POSSE, but it’s not universally practical given how the platform and the format actively shape the content. Many of my micro-posts fit poorly in the context of Twitter/Mastodon, which prompted me to come up with
creativehacky workarounds to remedy that—entirely defeating the purpose of POSSE. Going forward, all content posted here will be syndicated to a dedicated account, @WideGamutFeed, leaving me the freedom to retweet or quote tweet using the main account for additional context or commentary.With the Gatsby 3.0 migration complete, I took some time to try out Gatsby Cloud. The onboarding was smooth and the build times were almost twice as fast as what I saw on Netlify for the same build. I moved this site there already and will follow up with the others in the coming weeks.
Sylvain Kerkour writes about the high churn rate in the Rust language:
Unfortunately, there is one thing that makes me anxious about its future: the 6-week development cycles. It’s, I believe, one of the causes of an unhealthy problem: feature bloat. It’s also the cause, in my opinion, of another problem: the immaturity of the ecosystem.
I share some of these feelings with regards to Swift. On the flip side, seeing a language grow and evolve right before your eyes can be a unique educational experience. I genuinely can’t wait for the concurrency work to land and make all my code obsolete overnight.
Gatsby 3.0
Yesterday I started migrating this site to the freshly announced Gatsby 3.0, and to my delight, it was a much smoother experience than I had anticipated. I had some issues with one particular community plugin, but the fix didn’t take long to surface on GitHub. The changes are living on the
gatsby-3
branch for now, but that shouldn’t remain the case once I am done migrating to the newgatsby-plugin-image
.Good to see both Rust and Kotlin move to a foundation-based governance model. I’m not holding my breath for Swift, but I think it’s an important step towards making it a truly general purpose language.
Open-sourcing Kroma
Today I open-sourced Kroma, a collection of color helpers for SwiftUI. While it’s not feature-complete, it might be already useful in a handful of situations, such as determining if a given color is perceived as light or dark. This will likely end up being split into 2 packages down the line as I add more framework-agnostic color manipulation and conversion helpers. In the meantime, give it a try and let me know what you think!
In preparation of the beta launch of one of my yet-to-be-announced projects, I have spent some time devising a plan for server-side caching using Redis. This led me to read about some common caching strategies such as cache-aside and write-through (link). I was never fluent in backend development jargon, but it’s never late to fix that!
Between Combine’s
Publisher
, The Composable Architecture’sEffect
, and NIO’sEventLoopFuture
, I am often left wondering what operations are available where and what they’re called. Maybe I can use some type aliases and extensions to bridge the API gaps.In software, there is room for specialists, generalists, and everything in between. Enough with gatekeeping already.