Zack Apiratitham

The Lord of the Rings by J. R. R. Tolkien


Not many people will disagree with me when I say that The Lord of the Rings trilogy by Peter Jackson is the greatest film trilogy of all time. Despite having watched all three films through many times (including the extended edition), I had never read the book. For years it was a goal of mine to do so, and in my top books of 2021 post I committed myself to read The Hobbit and The Lord of the Rings this year. Last month I finally accomplished that goal, having read both of them back-to-back. It took me just over a week to read The Hobbit and five weeks for The Lord of the Rings.

There’s no shortage of The Lord of the Rings reviews and analyses on the internet, so in this post I’m not going to go that much into my thoughts on the story. What I want to focus on instead is the actual physical copy I read this on.

Some Quick Thoughts on the Story

Even though I already knew all the main story beats so well from the films, it did not at all take away from my enjoyment of the book. I was enthralled from start to finish and there was rarely any dull or slow moment. For years I had been avoiding reading the book as I had this preconceived notion that it was going to be difficult to read and the plot would proceed at a glacial pace, and that it would take me months to get through it. I was happy to not find that to be the case.

These days I don’t read much fiction, and almost never something that is this long. This is one of those rare books that made me feel this huge sense of loss after finishing it. I sat down to read this book every single day for over a month, and I was truly immersed. It felt like I was on this adventure with these characters and went through thick and thin with them. Reaching the end of their story and having to leave them behind just left me feeling sad and empty. As dramatic as it might sound, it was almost as if I had lost some purpose in life now that I won’t get to sit down and continue on the journey with them. I know this phenomenon is not uncommon among fiction readers, but I honestly don’t remember the last time I felt this way; I read the entire Harry Potter series a few years back—which is more than doubled in word count—and I don’t recall feeling this way after completing that.

The 2021 Illustrated Edition

Going into this, I knew that I wanted to read it with a physical copy. I also specifically wanted a single-volume edition with all three parts contained in one binding. The one I ended up getting is the illustrated edition released late last year. This is a hardcover and includes illustrations in full color done by Tolkien himself.

With a $60 price tag, this is not a cheap book, probably the most expensive book in our humble home library (excluding college textbooks of course). It is quite a fancy book, and I know that “you’re not supposed to read fancy books” as John Green said. But this is the only good copy I have and I just wanted to read with it.

The Lord of the Rings book with dust jacket on

On the outside, this book is just gorgeous. The dust jacket comes in gray and features the original illustration from the first edition of the book with Tolkien's signature. The page edges are colored red which gives out a nice contrast. The best part about the exterior design is the Ring Verse on the fore-edge. It almost made me want to shelve this book backwards so this would be visible.

The fore-ege of the book with the Ring Verse

With the dust jacket off (as I always do when reading hardcover books), you will find that the Eye of Sauron illustration is actually printed on the cloth hardcover itself and not on the dust jacket which I think is a nice touch. The same illustrations on the dust jacket spine can also be found on the hardcover.

The Lord of the Rings book with dust jacket off

Close-up photo showing the binding
The book is nicely case bounded which allows for it to lay flat.

With 1,178 pages, this book is not light: it weighs 1,585 grams (yes, I did put it on a scale). So it’s not one of those books that you would want to bring with you to read in a park or on a flight.

Inside there are 32 illustrations (excluding the maps) inserted throughout the book, between relevant pages. It also comes with a nice little bookmark.

The book laid flat on a table on a page with an illustration of Orthanc

I actually purchased a box set of The Lord of the Rings a while back, but it comes in three separate paperback books. The main reason I didn’t want to read those was the low print quality of the text. I don’t know what the correct term for this in publishing world, but it looks almost like these pages were photocopied from older, lower-quality edition of the book. On the other hand, this single-volume illustrated edition has high print quality and sharper text which made for a much more pleasant reading experience.

Side-by-side comparison of the text with the paperback edition

There are two 10.5”×14.5“ fold-out maps drawn by Christopher Tolkien. One of the west of Middle-earth and the other of a more close-up area near Rohan, Gondor, and Mordor. I found these maps tremendously helpful with establishing spatial awareness when it comes to the plot and character movements throughout the story.

Two included maps laid out on the table

This 2021 illustrated edition of The Lord of the Rings is indeed a fancy book. To me it is well worth the premium price for the entertainment value I got out of it. Given the quality of this printing, I’m sure it will remain in good condition in my book collection for many years to come.




Thoughts on Apple’s Peek Performance Event


I didn’t think this event was going to be anything that exciting. Just a regular spring event for iPhone SE, iPad Air, and perhaps MacBook Air refresh. But boy, was I really in for a treat this time. As you may know, for a few years now I had been pleading for a new less expensive Apple-branded display. Here’s what I wrote most recently back in June of last year:

Again, here is all I'm asking: take out that 5K 27-inch panel in the discontinued iMac Pro (or the one you're putting in the new 27-inch Apple Silicon iMac), put it in an external display chassis, maybe add some bells and whistles like a webcam, USB-C ports, fancy speakers, etc., slap a $1,300-1,500 price tag on it (knowing Apple), and take my money.

And look at what they announced:

[Studio Display] features an expansive 27-inch 5K Retina display, a 12MP Ultra Wide camera with Center Stage, and a high-fidelity six-speaker sound system with spatial audio.

[…]

With 600 nits of brightness, P3 wide color, and support for over one billion colors, images come to life with spectacular detail. True Tone technology automatically adjusts the display’s color temperature as the environment changes for a more natural viewing experience. An industry-leading anti-reflective coating enables incredibly low reflectivity for better comfort and readability.

[…]

Studio Display also includes a studio-quality, three-microphone array with an especially low noise floor for crystal-clear calls and voice recordings.

[…]

Studio Display has three USB-C ports that deliver speeds up to 10Gb/s to connect high-speed peripherals, storage, and networking right into the display. A Thunderbolt port enables users to connect Studio Display and any connected peripherals to their Mac with a single cable. The same cable also delivers 96W of power to a Mac notebook, allowing Studio Display to even fast-charge a 14-inch MacBook Pro.

Never before in my time of following Apple had my wish been granted almost so spot-on. The Studio Display has everything I asked for, and then some. Not only that it has a webcam, it also supports Center Stage. Not only that it has speakers, it also supports spatial audio.

The announcement itself was such a roller coaster of emotion. They showed the Studio Display and went into all of its features, talking about the camera, speakers, built-in A13 Bionic chip, etc. And that’s when I (and my bank account) got really worried: this thing is packed full of features and I thought that it for sure was going to be at least $2,200-2,500. So when it was revealed to be $1,599, I never celebrated so hard for something that is still so expensive. But given the precedent with the $5,000 Pro Display XDR with a $1,000 stand, this Studio Display price tag is quite reasonable in my opinion.

Annoyingly the base configuration comes with a non-height adjustable stand which is such a cheap move from Apple given how much it already costs. To upgrade to a height-adjustable stand without the nano-texture coating is extra $400, making it a nice rounded $2,000. Way too much for a computer monitor, but that configuration is what I ordered.

Not to make excuses for how ridiculously expensive this monitor is, but for comparison the Thunderbolt Display that came out in 2011 had a $1000 price tag which, adjusted for inflation, would cost around $1,250 today. That monitor came with a non-retina 1440p panel and 720p camera. So the new Studio Display costing $350 more with all of these extra features is not out of character for Apple.

Mac Studio

This was another surprise for this event. This Mac and the M1 Ultra look like a beast of performance. I definitely don’t have that kind of need and I am very happy with my 14-inch M1 Max MacBook Pro. The tease at the end about the Mac Pro is so very cheeky and I can’t wait to see what they’re going to do with it.




An Unsolicited Streaming App Spec →


John Siracusa wrote up this great post listing out what he thinks are the very basic functionalities every streaming app should have:

Obviously, a list of even the most rudimentary features can’t help but also be opinionated. Though my tastes have surely influenced this list, I really do think that any streaming app that fails to implement nearly all of these features is failing its users. Again, these are not frills. These are the bare-bones basics.

He also pointed out this little feature with Siri on Apple TV which blew my mind:

I can ask “What did he say?” and the Apple TV will skip backwards, enable subtitles, play for a short duration, and then disable subtitles again, all on its own. Surprise and delight!

Surprise and delight, indeed! My ears are not as well-tuned to English dialogues as compared to native speakers so I often miss lines when watching movies. But I also don’t want subtitles on all the time either. This trick is going to be life-changing.


There is one Apple TV-specific thing I would like to add to this list. When a video is paused with a UI overlay with some informational text and/or scrubber, and I hit play to resume playback, I would like to be able to then hit the back button on my remote to dismiss that overlay. Having to continue watching with that overlay still obstructing or dimming the video, even for a few seconds, is a terrible experience. Or better yet, the app should just dismiss the overlay the instant the playback resumes.

The worst part is that this behaves differently on different apps which drives me up the wall. In YouTube and TV app, you can hit back and it will dismiss the overlay while still playing the video. In apps that use the native player you have to tap (not click) on the touchpad on the remote to do so. In apps like Netflix and Disney+ when you hit back it just exits out of the video player entirely! They’re all so inconsistent and it’s just pure maddening!

I don’t know what the solution should be here. It would be great if all these apps use the same native video player so the experience would be consistent across the board, but that’s never going to happen.




Some Thoughts on the 2021 14-inch MacBook Pro


After years of anticipation, Apple officially announced at WWDC 2020 that they were beginning the transition of the entire Mac lineup to the ARM architecture. Since then I had been itching to get my hands on one, but the MacBook Air and 13-inch MacBook Pro with the M1 chip did not fit the bill. I was waiting for that long-rumored all-new MacBook Pro.

Fast forward one and a half years later to January 2022, my wait was finally over!

MacBook Pro welcome screen

The configuration: 14-inch MacBook Pro with M1 Max with 10-core CPU, 24-core GPU, 64GB of RAM, and 2TB SSD. I upgraded to the M1 Max for the 64GB RAM option as I don't have the need for that much GPU performance which is also why I didn't max out to the 32-core GPU option. The extra memory bandwidth is a nice perk, but I doubt it would be that useful to me.

About This Mac window

I was originally going to get the 16-inch model, having only ever owned the 15-inch models in the past. But at 2.2 kg (4.8 lbs) compared to 1.8 kg (4 lbs) of my 2017 15-inch MacBook Pro, it would be too heavy for me on the rare occasions that I need to bring it somewhere. And since most of the time I run it docked at my desk connected to external monitors, I figured I could get by with the smaller 14-inch model. On paper, the screen is only an inch smaller than the one it's replacing anyway.

Don't get me wrong, this 14-inch MacBook Pro is still plenty heavy for a small laptop at 1.6 kg (3.5 lbs), almost as heavy as my old 15-inch.

The Migration

Transferring everything over from the old machine instead of setting this one up brand-new is definitely the way to go. I didn't want to have to spend time reconfiguring it from scratch with all the files, applications, and countless settings.

Everybody else seems to have no issue whatsoever with the Migration Assistant these days, but it ended up not being as painless as I was hoping for.

Two MacBook Pros connected with a Thunderbolt cable

With these two connected to each other using the Thunderbolt 3 cable that came with my CalDigit TS3 Plus dock, at first the Migration Assistant refused to use the wired connection and instead insisted on using the wireless "Peer-to-Peer" connection. I definitely was not going to let it transfer the data wirelessly as I knew that was going to be flaky. Here's what I ended up doing in trying to get them to use the wired connection:

  • Turned off Firewall on both machines
  • Made sure both Macs were on the same latest macOS Monterey 12.1 (at the time)
  • Turned off Wi-Fi on both machines (I don't think this this mattered)
  • Made sure in the Network preference pane that they could detect each other via Thunderbolt
  • As a desperate attempt, erased all contents and settings on the new Mac and reinstalled macOS (also don't think this mattered)

The final thing I tried—and what I should have done from the beginning—was to put the old Mac in Target Disk Mode. Right away, the Thunderbolt connection showed up so I began the transfer.

My old 2017 Mac used up about 440GB so there wasn't that much stuff to move over. I was hoping that I would see around 200MB/s transfer speed and that this process wouldn't take more than 45 minutes to complete. But to my bewilderment, it wouldn't transfer more than on average 50MB/s with a lot of time spent with less than 10MB/s. It also peaked at only 70MB/s. I quadruple-checked that the cable I used was in fact a Thunderbolt 3 cable. Having already spent too much time and energy going in circles trying to get the wired connection to work, I cut my losses and just let it do its thing, hoping that maybe it would speed up (it never did). I had already waited 18 months for this, surely I could wait a couple of hours more.

Picture of the migration in progress

In the end, it took almost three hours to complete the transfer of over four million individual files.

Screenshot showing the migration is completed

General Observations

I do love the hardware design of this model; it has somewhat of a retro look to it, reminding me of the titanium PowerBook G4. The "MacBook Pro" etching on the back is a really nice touch. I also don't mind that it's thicker.

Picture an engraving on the back

Since the 14-inch one can be configured all the way up just like the 16-inch, I figured I could save some money just getting the smaller size without having to compromise on the specs I want. And as I alluded to earlier, the screen doesn't feel that much smaller than my 15-inch one.

In a little over a month that I've been using it, I didn't run into any compatibility issue (that I could tell) with this being on a completely new architecture; Rosetta 2 is doing a fantastic job translating x86 to ARM. What an amazing feat of engineering that is.

I never had an Apple desktop computer and only ever used MacBook Pros. In all those years, I've gotten used to hearing the fans spinning up when doing anything remotely computational intensive (or even randomly). But now I've discovered the pleasure of working at my desk without that incredibly obnoxious fan noise. It is an absolutely blissful experience.

The notch was no doubt an unexpected feature with this redesign. I'm choosing to look at it not as a protrusion into my screen, but as extra screen real estate extending up to the very edge. Plus I think macOS is the perfect operating system to have to support this quirk since the menu bar, which is the fundamental part of the Mac, is already always at the top. I can't imagine how they would even support this on Windows (not that Apple's support for this was anywhere near perfect).

This also gave us a couple of fun apps like Notchmeister and NotchCam.

I wish this notch included the Face ID sensor. There's no reason why macOS wouldn't be able to support it since it's using pretty much the same chip as the iPad Pro which comes with Face ID. My guess is that they probably don't have the room to fit it as the screen lid is unbelievably thin whereas the iPhone and iPad Pro do have quite a bit more thickness to accommodate it.

This generation of MacBook Pros also sees the triumphant return of the beloved MagSafe connector. I can look past the mismatched color, but it would have been nice if they matched. I really do love the braided cable that comes with it though.

The interesting part about this is that the magnet is significantly stronger than the MagSafe connector I remembered from my 2010 MacBook Pro. Yanking it straight out is pretty much impossible as it's really on there. But pushing it at an angle up or down pops it right out. It definitely still functions as intended, as somebody tripping on the wire would almost certainly not going to be pulling it straight out. Nevertheless, I still feel like this is a slight regression from the old MagSafe we had.

Also props to Apple for still allowing charging via the three Thunderbolt ports because being able to charge on either side is definitely a big win.

Picture of the MagSafe connector connected to the laptop

Good riddance to the butterfly keyboard. These new keys do feel mushier but in a good way. They definitely provide a much better experience to type on, and more reliable too.

I never found the Touch Bar all that useful since I rarely used the built-in keyboard. As much potential as it may have had, Apple clearly did not want to invest in it, seeing that since its introduction in 2016 they did not make a single improvement to it. Unexpectedly, I did find myself missing it when I was filling out forms and not being able to quickly tap to autofill the fields. But other than that, I don't miss the Touch Bar.

With the Touch Bar gone, this means we now have back the physical escape key! No longer do I need to remap my escape key to the caps lock key to make it touch-typable. The inverted-T arrow keys are another greatly-missed affordance for touch typing and I do very much welcome their glorious return.

Performance Tests

I ran some tests to find out for myself how much faster this thing is. For comparison, my 2017 15-inch MacBook Pro came with the 2.9GHz quad-core i7, 16GB of RAM, and AMD Radeon Pro 560. The numbers are averages of multiple runs I did for each of these tools.

Xcode

I am rewriting Liftoff in SwiftUI so these tests were run using this fairly small project. Each after cleaning the build folder, of course. The build times came from Xcode directly, thanks to this neat trick (via ATP):

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

M1 Max: 10s
Core i7: 25s
Delta: 2.5x faster

Node.js (via Gatsby)

This was conducted using this very site with the gatsby build command with Node version 16.13.1.

M1 Max: 1m 5s
Core i7: 1m 34s
Delta: 1.4x faster

Flutter

Flutter still doesn't support Apple Silicon natively so the performance improvement seen here is not the most we could have gotten out of it. With this I'm running flutter build ios with flutter clean before each run.

M1 Max: 2m 18s
Core i7: 7m 25s
Delta: 3.2x faster

This test was the first time that I heard the fans on this machine, which kind of disappointed me a little to be honest.

Lightroom Classic

This was conducted on the Apple Silicon version of Lightroom Classic (v11.1). From my understanding, Lightroom doesn't really take advantage of the GPU when importing or exporting photos. But it appears to mostly be using it for displaying and processing the images. So the advantage of the M1 Max here would be around previewing and applying edits to photos, unfortunately not something that I could quantitatively measure and compare.

For import, I used 100 raw 20-megapixel photos taken on the Canon EOS 6D. There were three options enabled:

  • Copy as DNG
  • Build 1:1 previews
  • Apply lens correction

This also resulted in the fans going at full speed from what it sounded like.

M1 Max: 2m 53s
Core i7: 6m 42s
Delta: 2.3x faster

For export, I have a recent project with 44 raw 20-megapixel photos, all with various edits and color corrections. The export files were 80% JPEGs and no image resizing was done. The fans did not spin up for this.

M1 Max: 46s
Core i7: 2m 37s
Delta: 3.4x faster

Some Annoyances

My setup is through the CalDigit TS3 Plus dock connected to two 1080p monitors: one via Thunderbolt → HDMI and the other via DisplayPort → HDMI. While the connection and windows rearranging are almost instantaneous, the majority of the times only one of the monitors would display anything. The one connected via DisplayPort is the troublesome one as it rarely ever works. Every time I connect the laptop to the dock, I also have to reach back and reconnect the DisplayPort on the dock. And even that doesn't always work on the first try either, I frequently have to try multiple times for both monitors to be displaying properly.

This is clearly something specific to the M1 as this was rarely ever an issue with the Intel laptops with the exact same setup. Perhaps it's some sort of driver issue. The recent macOS 12.2 update did not improve the situation either. I think I'm going to have to try swapping out these cables to see if that helps.

What makes this all the more annoying is that it wouldn't be a problem if I had an Apple-made monitor connected to my Mac. I keep these stupidly bad monitors around because there are no good retina external monitors in the market to replace them with. This is a huge gap in the lineup that should have been addressed years ago.

This is not unique to the M1 model but there's one tiny UI issue that has been bugging me since I updated to Monterey. In the menu bar, I want hide the stock clock menu item as I prefer to use the one from iStats Menus. Unfortunately, there's no way for me to completely remove the clock so the next best thing I could do was to change the digital time to be an analog clock so that it would take the least amount of space at the very right edge of the menu bar.

Screenshot of the menu bar showing a clipped clock icon

Do you see what I'm seeing? The clock icon is clipped on the top and right side by just a pixel! Every time I look at the time and glance up to that top right corner of the screen, I'm greeted with this badly-rendered clock icon. It's worth noting that this is only visible on external monitors and not the built-in screen. I'm actually not sure how long this has been there. Maybe it's been around since the big redesign they did with Big Sur in 2020. Either way, I filed a bug report (FB9886279) so hopefully this will get fix in a future release.

Final Thoughts

Despite those complaints, I do love this machine. After long dark years of disappointing MacBook Pro lineup, what we now have is truly great and truly pro. It's not lost on me that I'm celebrating getting back what they took away from us in 2016. But it is more than just that: the M1 Max is a powerhouse, the Liquid Retina display is stunning, and the overall industrial design is just gorgeous.

With the modular 2019 Mac Pro, the redesigned Siri remote, and now the 2021 MacBook Pro, Apple showed that they do listen and are willing to give us what we want. The trend has been very encouraging in recent years. My only hope now is that they heard us begging for an external monitor that doesn't cost six grand. I'm cautiously optimistic that this year might be the year.




My Top 5 Books of 2021


All my other top books of the year posts: 2020.

A couple of years back, I rediscovered the joy of reading physical books after having exclusively been buying ebooks for years prior. Since then I had bought more and more books, which filled up my bookcase faster than I could read them. So in an effort to not have shelves full of books I haven't read, I made a decision to suspend all my book buying activities until I clear out those I had piled up. Therefore a lot of books I read in 2021 were from this backlog, and this will remain the case going into 2022.

By pure coincidence, I read 23 books in 2021 with 17 of them being hard copies, the exact same numbers as in 2020. But I read 5% fewer pages than in 2020 with 8,078 pages, dropping the average book length to 351 pages and pages per day to 21.

Below are five books that made my 2021 top list, ranked by how long it took me to read from shortest to longest.

Conditional Citizens: On Belonging in America by Laila Lalami (2020)

Conditional Citizens cover

In this book Laila Lalami covers her experiences of being a neutralized US citizen and points out the various contradictions and ways immigrants are treated unfairly in the US. She shows how non-white citizens still face challenges and prejudices in this country despite the fact that they should have the same rights and privileges as any other citizen. As a person of color and noncitizen living in the US, it wasn't hard for me at all to relate to her stories and essays.

One starkly revelatory point she made was how the US labels its non-white citizens. Even after years or decades of assimilation and generations later, they are still labeled as hyphenated Americans such as Mexican-Americans or Chinese-Americans. But descendants of white immigrants are simply referred to as Americans and not English-Americans, French-Americans, etc.

This is a poignant book everybody should read to get a better view into the immigrant experience and what it means to be a conditional citizen in the US.

a white woman told McCain that “I can’t trust Obama. I have read about him, and he’s not, he’s not, he’s a—an Arab.” “No, ma’am,” McCain replied, taking away her microphone. “He’s a decent family man, a citizen that I just happen to have disagreements with on fundamental issues.”

[...]

The woman said Obama couldn’t be trusted because he was an Arab, and the rebuttal wasn’t about the lack of causality between the two; it was a reassurance that he wasn’t Arab, he was a family man. The second contradiction was between being “an Arab” and being “a citizen.” Clearly, Obama could only be the latter if he was not the former. (p. 17-18)

The End of Everything (Astrophysically Speaking) by Katie Mack (2020)

The End of Everything cover

Cosmology and astrophysics have always been subjects that captured my imagination since I was a kid. But as just a layperson, I find the subjects exceedingly difficult to get into with all of the advanced mathematics and equations. I've read quite a few popsci astrophysics books like Stephen Hawking's A Brief History of Time and Michio Kaku's Parallel Worlds, which truthfully were not light and easy reads for me. But The End of Everything by Katie Mack provided a refreshing perspective on the genre.

This book addresses the topic of how the universe could end, where most popular science media and discussions on astrophysics I've come across usually focus on the beginning. We all know that the Earth and all of its inhabitants will die a fiery death when the sun eventually engulfs us in five billion years. But Mack isn't interested in our insignificant rock's end and instead presents us with five ways the universe as we know it could meet its demise. With enthusiasm and humor, she takes you on a journey through each of them with all the astrophysics and quantum mechanics nitty-gritty details (some of which were not easy to grasp, I must admit). My personal favorite of the bunch has to be the incredibly anxiety-inducing vacuum decay with the expanding "quantum bubble of death" traveling at the speed of light destroying everything in its path by taking apart all of the elementary particles that are held together.

Being quite a short book with just over two hundred pages, it is by no means lacking in substance. She just doesn't go off on tangents and remains straight-to-the-point which was one of the reasons that made this book an enjoyable read to me. I highly recommend it for any space nerd out there.

Something coming at you at the speed of light is invisible — any little glint warning you of its approach arrives at the same time as the thing itself. There is no possible way to see it coming, or even to know that anything has gone wrong. If it approaches you from below, there will be a couple of nanoseconds during which your feet no longer exist while your brain still thinks it is looking at them. Fortunately, the process is also entirely painless: at no point will your nerve impulses be able to catch up with your disintegration by the bubble. It's a mercy, really. (p. 145)

The Anthropocene Reviewed by John Green (2021)

The Anthropocene Reviewed cover

I am no stranger to John Green as I've been a dedicated vlogbrothers viewer for years. But I've only read two other of his books: Looking for Alaska and Turtles All the Way Down. Though young adult genre isn't really my cup of tea these days, I nevertheless still find myself drawn to his writing, not for the plot or romance aspects, but for his nuggets of wisdom and ways of looking at the world. That's why I was so excited for The Anthropocene Reviewed, his first nonfiction book1.

This book is a collection of essays, adapted from his podcast of the same name. In each essay he reviews a facet of our human-centered planet on a five-star scale, kind of like Yelp reviews. But unlike Yelp reviews, the subject is used as a jumping off point for him to tell a more personal story and offer his perspectives on being human. Some essays are autobiographical and can be quite heavy in subject matter, some lighthearted, but all endlessly thoughtful. While I quite enjoyed the humor, of which this book does not lack, I couldn't help but also get emotional reading some of his more reflective and touching essays. Some of my favorites are: Harvey, Auld Lang Syne, googling strangers, and Super Mario Kart.

This is a personal love letter to planet Earth, to celebrate humanity and the wonders of being alive on this rock.

What does it mean to live in a world where you have the power to end species by the thousands, but you can also be brought to your knees, or to your end, by a single strand of RNA? I have tried here to map some of the places where my little life brushes up against the big forces shaping contemporary human experience, but the only conclusion I can draw is a simple one: We are so small, and so frail, so gloriously and terrifyingly temporary. (p. 273)

Project Hail Mary by Andy Weir (2021)

Project Hail Mary cover

The Martian was such a fun read for me with all of the space and science nerdiness. I knew then that I had to keep an eye on Andy Weir. With Artemis, I opted to skip it due to lackluster reception. But after seeing so many rave reviews about Project Hail Mary, I figured I would give it a go.

Without spoiling too much, the premise of this book is that our protagonist woke up all by himself with amnesia on an interstellar mission to save humanity. What followed was a thrilling ride not unlike The Martian with incredible wit, humor, and such care into details any science and space nerd will surely appreciate. This novel puts the "science" of "science fiction" in the forefront and where there's fiction involved with the science, it's not too wacky or ridiculous that it took me out of the immersion of the story. My brain was willing to play along and remained engaged through to the end. This one is definitely a must-read if you enjoy a good sci-fi adventure.

Broadly speaking, the human brain is a collection of software hacks compiled into a single, somehow-functional unit. Each “feature” was added as a random mutation that solved some specific problem to increase our odds of survival.

In short, the human brain is a mess. Everything about evolution is messy. (p. 202-203)

If Then: How the Simulmatics Corporation Invented the Future by Jill Lepore (2020)

If Then cover

I've heard quite a bit about Jill Lepore, especially from her widely-acclaimed These Truths (which I still plan to pick up one of these days), but it wasn't until when I acquired a signed copy of her most recent book If Then that I finally got a taste of her writing. This book tells a story about the now-defunct Simulmatics Corporation and its mission to target and manipulate US voters and consumers using behavioral data and prediction algorithms. Sounds pretty familiar right? It wasn't Facebook or Google who pioneered these techniques we've all become so familiar with in recent years. Over half a century before Donald Trump with Facebook and Cambridge Analytica, there was John F. Kennedy with Simulmatics Corp., both men succeeding at the same audacious goal with the help of machines exploiting the same kinds of voter data.

This book wasn't originally going make my top list as I felt that large parts of it were quite dry and dragged on a bit too long with all the political details of the day and lives of men who I didn't particularly care about. I also wished that she had touched more on the technical details of the algorithms they used to do these predictions. But in the weeks since I finished this book, it has been stuck with me and I kept catching myself thinking back to it, especially the epilogue which I think was the strongest chapter. She draws parallels to what's happening now in the 21st century, and shows us that these hubristic ad men in the 60s were not all that dissimilar from tech execs in Silicon Valley today. This story also serves as a cautionary tale, reminding us that we've been through this before and that we shouldn't only just look forward to the future but to also look back at our history and not repeat the same mistakes again.

But the study of the human condition is not the same as the study of the spread of viruses and the density of clouds and the movement of the stars. Human nature does not follow laws like the law of gravity, and to believe that it does is to take an oath to a new religion. Predestination can be a dangerous gospel. The profit-motivated collection and use of data about human behavior, unregulated by any governmental body, has wreaked havoc on human societies, especially on the spheres in which Simulmatics engaged: politics, advertising, journalism, counterinsurgency, and race relations. Its rise also marked the near abandonment of humanistic knowledge. [...] The future was everything, the past nothing: a void, the humanities obsolete. Apollo reached the moon. Icarus reached the sun, and his wings did not melt. Instead, the light blinded him. (p. 324)


What I'm Looking Forward to in 2022

  • The Hobbit and The Lord of the Rings by J. R. R. Tolkien. I have been putting off reading these for too many years. So now I am publicly committing to reading them this year.
  • Crying in H Mart by Michelle Zauner. I can always read more about the Asian American experience in the US. But I've also heard a lot about this book as it showed up in so many lists, and won the Goodreads Choice Awards for Best Memoir.
  • Klara and the Sun by Sir Kazuo Ishiguro. Another book that I've seen a lot of people recommending, including by my friend Indira. It sounds like it's going to be a really thought-provoking read.
  • Rationality by Steven Pinker. I read both The Better Angels of Our Nature and Enlightenment Now, and personally found his writing style right up my alley. This is a follow-up book to that series with a topic that I'm already quite interested in.

  1. The signed copy I have is a delight in itself as not only that it has such a beautiful cover but there are also Easter eggs hidden throughout: from the circle drawings on the endpapers to his review of the copyright page. ↩︎




Immune by Philipp Dettmer


Overall a very informative and approachable book for such a mindblowingly complex subject. The text is easily digestible and engaging in the Kurzgesagt style I’ve come to know and love. There are a lot of analogies to illustrate scale or purpose of certain immune cell features which I found tremendously useful. And those beautiful graphics throughout the book really help visualize what our microscopic helpers look like and what they do.

However these immune cells are heavily anthropomorphized which I don’t like seeing too much with scientific subjects, but I understand that to not do so would make the book much less approachable.

I still highly recommend this for those looking to get a solid understanding of this system that keeps you alive.

Some interesting things I learned from this book:

  • It’s difficult for us to create medication against viruses because the way a virus works is that it needs to connect to our cell to infect it. And to do that, it needs to mimic the shape of the receptors. A drug that attacks the receptors on the virus has a high likelihood that it will also attack our own cells.
  • Developing an allergy is a two-step process. First the body needs to encounter the new allergen first, which our immune system will activate and create antibodies against the new allergen. But nothing happens this first time. The next time it encounters that allergen again is when our immune system starts attacking and that's the allergic reaction.
  • There are no scientifically-proven ways to boost your immune system. People that say so are just trying to sell you stuff.



Mindset by Carol S. Dweck


I totally agree with the main thesis of this book and she gives a lot of good advice and examples on how to apply it. And there lies the problem I have with this book. A large portion of it is just dedicated to examples and stories that I don’t really care about or add much to the central theme of this book. I found myself skimming through a lot of them so that I can get to the actual good parts.




Internationalized Domain Names Are Still Not Well Supported in 2021


Domain names are the face of the web and any time I had to register one my brain always defaulted to using Latin letters. For my own personal site here, despite its domain name being my first name I opted to use the romanized version of it, never thinking that there was actually another option. That was the case until recently when I realized that I could register a domain name entirely in my native Thai script.

This post chronicles the journey I took to get an internationalized domain registered and configured for this website.

Goals

I am by no means an expert in this domain (excuse the pun), so this is more of a documentation of my learning and the problems I ran into when trying to set this up for myself.

Here are the things that I'll go over:

  • The basics of internationalized domain names and how they work
  • Domain registration and configurations
  • Challenges and pitfalls I encountered
  • Support for them on the web

The Internet's Great Oversight

The creators of the web were mostly English-speaking Americans and this resulted in most of the standards and practices only being thought out from that standpoint. This has a lasting effect until today where the vast majority of domain names we see on the web use the limited ASCII character set, which consists of only Latin letters. This is due to the fact that the Domain Name System (DNS) was designed to only support ASCII which leaves out many languages and their native alphabets and scripts. While the Latin alphabet is the most used character set in the world, it certainly should not be the only character set supported for domain names. In order to correct this oversight, the standard for internationalized domain names was introduced.

Internationalized Domain Name

An internationalized domain name (IDN) is a domain name that contains one or more non-ASCII characters. This means it can contain Unicode characters which allows for domain names in various non-Latin alphabets and scripts. Since only ASCII characters are supported by the DNS due to its design, supporting IDNs is just a mechanism to work around this limitation without having to overhaul the deep-rooted infrastructure for the internet. The important goal the designers behind this standard had was to ensure that IDNs are interoperable with the existing infrastructure so its introduction would not break existing user-facing applications, such as web browsers or email clients. This standard was approved by ICANN and deployed in 2003.

The solution is just a matter of converting the Unicode domain name into its ASCII representation before submitting the DNS query. Doing so involves using an algorithm called Punycode which, as described in RFC 3492, "uniquely and reversibly transforms a Unicode string into an ASCII string". Everything from that point on remains the same. This means that browsers don't necessarily have to support this standard and they should still be able to locate resources specified at the ASCII version of the IDNs.

Internationalized Country Code Top-level Domain

Country code top-level domains (ccTLDs) have been around since the early days of the internet. You have probably come across them as domain hacks with the likes of .io (British Indian Ocean Territory), .fm (Federated States of Micronesia), and .ly (Libya) among many others. These are subjected to each country's requirements which means they can limit who can register them and for what purpose. A number of these ccTLDs also have non-Latin counterparts in their country's native script such as .cn + .中國 (China), .eg + مصر. (Egypt), and of course .th + .ไทย (Thailand). These are referred to as internationalized country code top-level domain (IDN ccTLD). Surprisingly they are quite recent additions to the internet, having only been available starting in 2010.

Converting Unicode to ASCII in a Domain Name

Converting an IDN into its ASCII counterpart involves a few steps:

  1. Split up the domain name into individual labels.
  2. Encode each label using the Punycode algorithm.
  3. Add a special prefix xn-- to each label.
  4. Put the full domain name back together using . to separate the labels.

As an example: for an IDN คน.ไทย, the individual labels are คน and ไทย. Encoding those labels yields 42c6b and o3cw4h, respectively. Adding the prefix and putting them together into a full domain name we get xn--42c6b.xn--o3cw4h.

You can visit http://xn--42c6b.xn--o3cw4h in your browser now and you should see that it gets decoded back to the Unicode form of คน.ไทย. Even though your browser displays the domain name in Unicode to you, in the background it first converts it to ASCII before submitting the DNS query, and everything from that point works the same way as any ASCII domain.

Registering วัทธิกร.ไทย

Having an uncommon name in English-speaking world, the domain name of this site is just my romanized first name: Vatthikorn. I would say that in itself is already pretty cool. But I think what's even cooler is to also have the domain name of my actual first name in Thai script with a Thai IDN ccTLD: วัทธิกร.ไทย. Not many people can say that they have not only one, but two domain names for their site that are literally just their first name.

To find the registrar for a ccTLD, you can of course just do a quick internet search, there's this list for every single one of them, each with its own Wikipedia page. You can also visit IANA's Root Zone Database page that lists all of the available TLDs with more details for them than you'll ever need. But a fun trick I discovered is to simply go to your terminal and use the whois command for your TLD:

whois ไทย % IANA WHOIS server % for more information on IANA, visit http://www.iana.org % This query returned 1 object domain: ไทย domain-ace: XN--O3CW4H [...contact details omitted for brevity...] whois: whois.thnic.co.th status: ACTIVE remarks: Registration information: http://www.thnic.co.th created: 2010-08-19 changed: 2020-08-24 source: IANA # whois.thnic.co.th Whois Server Version 2.1.6

So to thnic.co.th I went, and sure enough, my Thai name was not yet taken. To register it, I had to provide both the Thai name as well as its Latin counterpart. So I'm basically getting two domain names at once. They offer a few TLD options such as .co.th + .ธุรกิจ.ไทย (business entities) and .ac.th + .ศึกษา.ไทย (academic institutions). But the one I'm eligible for is .in.th + .ไทย which is designed to be used by Thai citizens.

Due to the fact that they have to verify my identity and eligibility, the registration was technically just a request which needed human review and approval before they handed the domain name over to me. After submitting the request, I then had to email them a proof of payment which I had to make via PayPal. The price was 856 baht/year (around 27 USD). And just mere five hours later — on a Sunday morning in Thailand too — I received an email back from one of their representatives saying that my request was approved!

A screenshot of an approval notice email

Setting up DNS Provider

My intention with this newly-acquired Thai domain name was to set up a basic 301 redirect to the main site. The forwarding service is not included with the purchase of the domain and they charge extra 428 baht/year (14 USD) for it which is ridiculous if you ask me. Having already spent a bit more than I wanted to on the domain name, I had to take matters into my own hands.

The DNS provider for this site is currently AWS Route 53. But in trying to set up วัทธิกร.ไทย on it, I learned that it doesn't accept domain names with Unicode characters and you have to convert them to ASCII first. That was a bit disappointing as I expected AWS to be more global and inclusive than this. On top of that, using Route 53 was going to cost me additional 50 cents a month. After some searching, I found that Cloudflare supports IDNs directly in their UI without requiring you to convert them to ASCII. Setting up an account and adding the domain name was such a smooth sailing process compared to AWS. Best of all, it's completely free for what I'm using it for.

Setting up Forwarding

Setting up forwarding using only the DNS can be done with a CNAME record but there are a couple of caveats. First, you can't do this on the apex of a domain. So while you can do:

www.example.com IN CNAME another-domain.com

You can't do:

example.com IN CNAME another-domain.com

This on its own was already a no-go for me since I didn't want to have to use www in my site's URL.

Second, this method cannot perform a proper redirect where the path and/or query components from the original domain are appended to the target domain. Say you want to have example.com/about forward to another-domain.com/about, this is not possible with a CNAME record. Doing that is a web server’s responsibility.

While you could absolutely go with a DIY route and set up a web server (like Apache or Nginx) to just do HTTP redirects with all the customizations you want, to me that seems overkill for what boils down to just a vanity domain redirect for my own amusement. There are also several free URL redirection services out there but I didn't want to add another link in the chain that could potentially break my setup.

As it turned out, Netlify, where this site is hosted, provides a domain alias feature that I can leverage to make this work the way I wanted to. Unfortunately, they also don't natively support IDNs in their UI so it has to be in its ASCII form.

A screenshot of a list of domain names with one being in Punycode

The next step is to add an A record for this domain to point to Netlify's load balancer IP address. Since I only want Cloudflare to act as a DNS provider, I made sure that this record is marked as "DNS only" instead of "Proxied". This keeps it strictly a DNS record and bypasses Cloudflare's other functionalities.

A screenshot of A record configuration on Cloudflare

After the A record was propagated, trying to load https://วัทธิกร.ไทย resulted in an error as the subject name in the TLS certificate returned didn't match the requested Thai domain name:

curl -I https://xn--12c7bd9bq4dxa.xn--o3cw4h curl: (60) SSL: no alternative certificate subject name matches target host name 'xn--12c7bd9bq4dxa.xn--o3cw4h' More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.

The problem here was that after adding an alias domain name on your Netlify site, the TLS certificate needed to be renewed so that the alias domain would be included.

A screenshot of TLS setting on Netlify showing the IDN included

After that was regenerated, วัทธิกร.ไทย finally loaded the content of this site. However, it didn't perform a redirect to vatthikorn.com (วัทธิกร.ไทย remains in the URL field in the browser). For this you can certainly set up redirect rules with Cloudflare but since I already have an existing _redirects file to have Netlify handle them for me, I wanted to keep all the configurations in one place. Doing this is just a matter of adding an entry for the domain name (of course it needs to be in ASCII as Unicode characters also aren't allowed here either):

https://xn--12c7bd9bq4dxa.xn--o3cw4h/* https://vatthikorn.com/:splat 301!

So now sending a curl to วัทธิกร.ไทย correctly returns a 301 response code with the location header pointing to the main domain name with the same path:

curl -I https://xn--12c7bd9bq4dxa.xn--o3cw4h/wwdc-2021-wish-list HTTP/2 301 cache-control: public, max-age=0, must-revalidate content-length: 64 content-type: text/plain; charset=utf-8 date: Thu, 02 Dec 2021 19:48:08 GMT strict-transport-security: max-age=31536000 server: Netlify location: https://vatthikorn.com/wwdc-2021-wish-list x-nf-request-id: 01FNYB1CN3F46QVZ4B5RS7T51Q age: 6

Some Finishing Touches

To finish this off, I figured why not add a little more fun to this by also creating a special URL for my About page all in Thai: วัทธิกร.ไทย/เกี่ยวกับ. The goal is to have this redirect to vatthikorn.com/about. This was easy enough to do using the same _redirects file, though it requires those Unicode characters in the path to be URL-encoded first.

Now the final configurations for these redirects look like the following:

https://xn--12c7bd9bq4dxa.xn--o3cw4h/%E0%B9%80%E0%B8%81%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%A7%E0%B8%81%E0%B8%B1%E0%B8%9A https://vatthikorn.com/about 301! https://xn--12c7bd9bq4dxa.xn--o3cw4h/* https://vatthikorn.com/:splat 301!

And that's all there is to it! You can now visit วัทธิกร.ไทย and it should take you to vatthikorn.com, and วัทธิกร.ไทย/เกี่ยวกับ to the About page.

Adoption and Support in the Wild

As I mentioned earlier, IDNs were first deployed back in 2003 so it's been around long enough to vote now. Thankfully, web browsers have had support for this since very early on. But what I wanted to know is if some of the popular social sites allow my newly-configured Thai domain to be added on my profile.

Instagram isn't having any of it. (But hey, you can put Unicode characters in the bio. So yay for emoji, right?)

A screenshot of a URL error on Instagram

While Twitter isn't even trying and just throws up this badly-formatted error message.

A screenshot of a URL error on Twitter

LinkedIn accepts it but converts it to the ASCII form for you, which is just lovely to look at.

A screenshot of LinkedIn with ASCII IDN

But GitHub and Letterboxd work very nicely on the web (though both of their mobile apps won't display it).

A screenshot of my GitHub profile with IDN

A screenshot of my Letterboxd profile with IDN


All in all, if there's one thing I took away from this exercise is that when developing software, we should really consider diversity and inclusion aspects from the beginning and not just take the path of least resistance and only support what we're familiar with. At the very least, making sure our apps are localized and have proper accessibility support should be on top of that list. For IDNs, the fact that it was an afterthought made adding support for it just a hack that is neither ideal nor elegant. The internet — with its great promise of allowing everyone equal access to information — should have been designed to work for everyone, not just those who speak English.

Thanks to Indira for proofreading and helping improve this post.

Further Reading




Thinking, Fast and Slow by Daniel Kahneman


All you need to know about this book: replication crisis.

Which is a shame because there are a lot of great ideas here.




WWDC 2021 Wish List


All my other WWDC wish list posts: 2016, 2017, 2019, 2020.

It's becoming such a cliché now during this pandemic when we say that time is a weird concept. But the other day I was in for a rude awakening when I found out that it's almost June. I say this every year but this year really did fly by. On the bright side, we all know what this means: it's WWDC time! To keep on the tradition, here is my wish list for this year:

16-inch MacBook Pro with Apple Silicon

We all know it's unlike Apple to announce new hardware during their big event for new software, but I think this is the right crowd to announce this for. As previously mentioned, my current 2017 MacBook Pro is starting to make me feel like I could use an upgrade. And with how well-received the M1 chip has been, I have never been more eager to see the larger MacBook Pro get a refresh. The rumors this time around have started to really pick up with a couple of recent reports saying that there is a new 16-inch MacBook Pro with Apple Silicon coming very soon with "a redesigned chassis, magnetic MagSafe charger and more ports for connecting external drives and devices" as well as the HDMI port and the SD card slot. If these all turned out to be true, this would be the best MacBook Pro update in recent memory. It also would be an unprecedented backtracking from Apple. We just saw a similar thing happened with the new Siri Remote dubbed "The Apology Remote". So I think we stand a good chance of getting "The Apology MacBook Pro" at WWDC which would make a lot of people very, very happy.

Affordable External Display

I already said this last year, and I'm going to say it again: Apple needs a less expensive external display in their product line-up. The five-thousand-dollar Pro Display XDR is an amazing feat of engineering, but at that price nobody can justify that unless you are a media production company. We sorely need an Apple-branded display that is aimed more for the mass market. Think the 27-inch Apple Thunderbolt Display. They cannot honestly expect us to use the M1 iPad Pro (with Thunderbolt 3, no less) or these new Apple Silicon Macs with this insanely expensive monitor. Apple knows that the MacBook Pro is very popular among developers — no doubt among those in attendance at WWDC — and they connect their laptops to one or more external displays, myself included. I have been holding off on replacing my monitors in hope for a new Apple monitor for years. I am still using these two ugly mismatched 24-inch 1080p ASUS monitors (one of them being a hand-me-down) from my college days as my setup.

Again, here is all I'm asking: take out that 5K 27-inch panel in the discontinued iMac Pro (or the one you're putting in the new 27-inch Apple Silicon iMac), put it in an external display chassis, maybe add some bells and whistles like a webcam, USB-C ports, fancy speakers, etc., slap a $1,300-1,500 price tag on it (knowing Apple), and take my money.

Catch Up iPadOS with the Hardware

The iPad Pros are such powerful devices, and now with the M1 chip in them, they're as powerful as the brand-new iMac. iPadOS, on the other hand, needs a lot of work to catch up with the incredible hardware it's running on. I am really hoping that this year will be the year we see some significant improvements to iPadOS to unlock the device's potential. As a developer, I would absolutely love to be able to do some sort of software development on it. The multitasking model on it also needs some rethinking/refinements to make it easier to use and manage. I have been eyeing these new M1 iPad Pros ever since they were announced in April but am still holding out on them to see what they do with iPadOS 15.

Home Screen Widgets

The popularity of iOS 14's widgets surprised a lot of people, even Apple themselves. Knowing this, I'm fairly certain that Apple will iterate more on this feature in the upcoming iOS 15. My wish for that is for them to be more interactive as right now the only possible action is launching the app (or launch the app to perform actions in it). These widgets would be vastly more useful if we were able to use them to do things like checking to-do items off or controlling media playback right from the home screen. They could also go a step further and do away with the left-to-right top-to-bottom grid for the home screen and let us place items wherever we want on there.

HomeKit

I've recently added more smart devices to the Home app and found some of the controls and automations lacking. For example, the camera automation includes options to turn the camera on or off based on the location of the members of the household. But there is currently no way to do that based on time of day. This would be really useful as I would like my indoor cameras to record when I'm at home but only during the time when I would be asleep to keep an eye on the house at night. Also the HomeKit Secure Video only saves recorded clips at 1080p and I think there should be an option for us to store them at full resolution. Sharing the Home with household members could also use improvements as I found things like notifications and access to settings to be real flaky.

Shortcuts

While Apple made some good additions to Shortcuts in iOS 14, there is still a lot to be desired. Location-based automations need to run automatically without requiring user input. Right now by requiring confirmation, they fail at the very thing they're supposed to do. These automations need to also stop popping up as notifications every time they run, cluttering up Notification Center. Please just make it an option to turn these off.

Memories Management in Photos

I love the Memories feature that resurfaces old photos grouped based on people, places, or events into nicely curated collections. And putting this as widgets on my home screen makes it all even more delightful. However, I wish there were more controls built into this such as changing cover photo for each Memory or hiding Memories based on people, time periods, or places. I also wish they would add more inclusive holiday Memories to the mix like Chinese New Year or Diwali as the ones I've ever seen are only for days like Christmas or Independence Day.

Screen Time for tvOS

We already have Screen Time for iOS, iPadOS, and macOS, so adding this to tvOS is a no-brainer. I spend a lot of time on my Apple TV so I would really like to see some data here. I'm not sure what's taking them so long, it seems like it shouldn't be that hard to implement. I've been waiting for this since 2019 so I really hope this year is the year.






© 2012-2022 Zack Apiratitham