How long do we need to wait for laptop/smartphone's face unlock systems to support hand gestures as good-old passcode? Such as requiring a Kiraboshi pose for login.

The M1 Macs' benchmarks looked way beyond my wildest expectations. While the dream scenario would be a reasonably competative RISC-V CPU taking over the world, I'm still glad x86 gets some competitation from a less restricted architecture.

The power efficiency is just so tempting on the new Macs. That said, they seem like a nightmare for user repair and probably won't run Linux smoothly anytime soon. I did however start wondering whether the old everything-as-pluggable-module-upgradibility is still something we should shoot for, especially in a laptop. If we can get the cost of system-on-a-chips to down a reasonable degree, I'd be all-in for throw-away CPUs.

Never thought the day would come where I hesitate about which combination of 4K and ultrawide monitors to go for.

Re: Site Update: WebMention Support

It's exciting to see another website supporting WebMention (and return of the CSS snow)!

My primary motif of using WebMention is to ultimately centralize all my comments/replies/posts on blogs/forums/Fediverse back to my website (and allowing commenters on my site to do the same). This subsequently prompted me to add a short note/title-less post section here.

Do you plan on displaying contents of the WebMentions you get or sending WebMentions from your website?

Apparently Apple has a bunch of heuristics to determine which Siri to activate when there are multiple iDevices listening (and a non-zero amount of the world population is trying to figure out what they are). I really hope they make "Hey iPhone Siri, stop the alarm" just work so that I don't have to yell at a confused iPad twice every morning. Support for "Hey Siri #31174" or "Hey Lord Sirious" would have been nice too.

It's the 17th day of AoC! I've tied my 2019 records! The problems do feel easier this year though.

It snowed yesterday. I noticed those salt-sized ice flakes occationally making tiny marks on my foggy glasses caused by wearing face mask. Even more interesting are the thin layer of frosting found on bridge surfaces made from steel: my bicycle left behind it a double-helix-shaped trail.

Get GOing

Yes, I finished the Advent of Code this year! Aside from the problems being easier (for me) than 2019, I'm also using Go for this year's challenge and I find it to be particularly suited for this type of endeavor.

This year's puzzles mostly involve string parsing and finding efficient data structures. Majority of the logic flow are pretty straight forward and there's little need for sophisticated algorithms.

For string parsing, regex, which Go has built-in support for, is definitely the way to go. The abundance of parsing related problems means using only basic string manipulation could be rather painful, and I've definitely seen my share of horrible blobs of find/substr/trim.

Most of the time, slices and maps are all I needed. Go has multiple return values but no tuples, whose usage, I find, is largely replaced by either arrays or structs. Versatility of these data structures are actually increased due to the language's encouragement to use constants instead of enums: storing all information as ints opens up the door to some shortcuts and less conversion between types. Surely they don't give you the peace of mind type checked enums provide, but (ab)using them in short programs does provide the odd walking-on-a-knife-edge (or not-wearing-pants-during-Zoom-call) kind of satisfaction.

Imperative programs are easy to write in Go, mostly because of the language's plain and simple control flows and lack of mixed paradigms. There's no need to worry about whether we should use an STL algorithm or chained iterator methods: just write the loop. Reasonable mutability behaviors also helps: whether it's changing a map while looping through it or passing a struct containing a slice to another function, I can get the language to do what I mean without checking the specification line by line.

There's the ZOI rule about how the only reasonable numbers are zero, one, and infinity. Quite a few other languages I know, such as Python, C++, and Rust, all seem to hinge on the extreme ends of the spectrum in pursuit of consistency: everything follows the same rules and users can dictate what the syntax means as much as the base language. Go definitely has more exceptions (without supporting it) and "one" moments: built-in containers are magically generic, their methods can have variable number of return values, and everything else is denied the privilege of being eligible to be iterated over.

While just a quick comparison without touching other traits of Go (say interfaces or goroutines, but you don't really need them for Advent of Code), I do find Go's choices peculiar and interesting: everything is, well, just its own thing.