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!
- 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.
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.
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-3branch for now, but that shouldn’t remain the case once I am done migrating to the new
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.
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!
In software, there is room for specialists, generalists, and everything in between. Enough with gatekeeping already.
Mozilla: Apple’s anti-tracking plans for iPhone
As you might have already heard, Apple announced earlier this summer their plans to turn off IDFA—a unique device ID used by advertisers track users across apps. Following the backlash from online advertisers and mobile game publishers that this move triggered, they subsequently backed down this fall when iOS 14 was released.
In the light of this development, Mozilla put out a page with a form for users like you and me to show support for Apple’s anti-tracking plans. I signed it and I recommend anyone who cares about online privacy to do so1.
The fact that both Apple and Mozilla generate a lot of revenue, albeit indirectly, from online and mobile advertising might sound puzzling at first, but the potential gains in terms of brand value and consumer trust would more than make up for the presumed losses.↩
Chrome is Bad
Google Chrome installs something called Keystone on your computer, which nefariously hides itself from Activity Monitor and makes your whole computer slow even when Chrome isn’t running.
I still don’t understand how people choose to use a piece of software that has consistently abused their trust.
After 8 months of writing This Week I Learned, I would like to try out a more spaced out frequency starting this month. Beside alleviating some of the pressure, the increased gap between the learnings and the synthesis is likely to help me remember things for longer!
“Who’s the idiot who wrote this code?” Oh, never mind, it’s yours truly from a couple of weeks ago.
The “users won’t be able to tell the difference” argument for Electron apps falls apart like a house of cards after every major OS release. It’s a weak argument to begin with, but these transition periods widen the chasm between proper native apps and all the other junk.