This is my personal blog
  • A fun exercise during this migration was to create a async delegate for UIDocumentPickerController to return the selected URLs or throw an error based on the delegate methods invoked.

    You can weakly reference the continuation token from withCheckedContinuation and call its respective methods.

    Not intuitive at first, but once you get it working, composing other similar delegates becomes natural.

  • I’ve read about a lot of conversation about how Swift concurrency will replace Combine.

    I believe the two serve different purposes altogether and can be used in unison to achieve your purpose.

    They do offer similar ways to achieve the same thing. So picking the right one seems critical.

  • Been slowly working at migrating various internal functions in Elytra to be async so I can compose them in View Controllers and Coordinators in a visually linear way.

    Makes composing the app structure so much simpler.

    Discovered consequence: handling errors also becomes simpler.

  • Some additional notes on my Studio Display post I posted earlier today:

    Thunderbolt 3

    I baffles me as to why Apple chose to use two DisplayPort 1.2 streams instead of a single DisplayPort 1.4 stream on supported Thunderbolt 3 controllers.

    My MacBook Pro 14” will use a single DP 1.4 stream, but my Hackintosh will use two DP 1.2 streams. The Intel JHL7540 does support DP1.4 streams but the Studio Display will instead choose to complete the handshake using two DP1.2 steams.

  • Apple Studio Display

    I received my Studio Display (Standard stand, standard glass) late Friday evening. Spent a good part of the weekend setting it all up, configuring all the required reference modes I would need.

    The best part: It worked with my Hackintosh with a litte bit of tinkering. And everything works.

    Initial Thoughts


    The A13 makes absolutely no sense. It handles the camera (which, as you may have already read, is terrible at the moment), handles the spatial audio bit (which is a hit-or-miss especially playing audio through Apple Music) and not much else. Its mere pressence complicates internal wiring so the extent of the display being a Smart Display. It cannot take AirPlay input on its own, or process HDMI signals (it doesn’t even any other input sources), or have anything to do with managing the USB ports on the back panel (that I know of).

    Image Quality


    Yup, those 3 emojis pretty much sum up my feelings. Combined with the capability to configure various reference modes, it’s the display you should get if you need 5K and everything else this display comes with.

    Did I mention it also works with Windows? And games look incredible on it. I’m most probably spending the upcoming weekend playing Forza.

    The Stand

    The default stand configuration actually is perfect for my personal setup. It’s at the same height (or probably 2cm taller) compared to my previous setup.

    The Bezels

    Why are they so big? Why, Apple! Why!?

    The Build

    The Studio Display is built to last! Or atleast it feels like that. But I’m still going to get AppleCare for it given Apple’s recent track record with hardware and random stuff breaking with OS updates. Considering this monitor ships with an A13 chip, and there has already been an incident (now resolved) of people unable to update the firmware on it, I’m skeptical.

    4.5/5 ⭐️

  • Got to eat fresh river fish today (after many years) thanks to my mother-in-law who managed to procure some specially for me and her daughter-in-law. What a legend.

    Unfortunately, I don’t have photos to share because we ate them all within minutes of them being cooked 😅

  • The winds have blown The clouds have moved on The sun is out

    …and Pune’s air quality has spiked 😣

  • The more I use async/await in Swift, the more I believe it to be an obvious inclusion.

    Back-porting it was the right choice, hopefully accelerating its adoption.

    withCheckedContinuation is a great addition which is going to help with adopting a lot of the non-async methods and functions from 3rd party libraries.

    Exciting times ahead.

  • Tranquility & Trust