Contact

Subscribe via Email

Subscribe via RSS/JSON

Categories

Creative Commons Attribution 4.0 International License
© Rakhesh Sasidharan

Elsewhere

Moving macOS (Big Sur) to a new drive

In a previous post I mentioned I was trying out the Big Sur beta. This was actually on my iMac with a fusion drive that I wasn’t using for much else, but now that I had Big Sur on it I started using it more and the slowness of the fusion drive started getting on to me. It’s been a while since I used regular drives, and while the fusion drive is supposed to be better than regular drives due to the 32GB (in my case) of SSD caching it provides I hated it. Any other time I wouldn’t have purchased an iMac with a fusion drive, but I bought this iMac at a time when I wanted something urgently and if I switched the fusion drive to an SSD it added a couple of days to the delivery times and so I skipped it. 

Anyways, fast forward and now I have Big Sur on it and it was slow as hell and irritating. Then I read somewhere that one can boot macOS from an external drive. In fact that’s how sensible people tried out their beta versions – not by installing it on their primary partition like I had done. :) So I decided to go down that route. I could have got an SSD but I went ahead and bought a 2TB NVMe drive and an USB-C to NVMe enclosure – which on paper is expensive, and it really is mind you, but is still cheaper than buying something like the Samsung X5 of a similar capacity (the price difference being due to the fact that the X5 has Thunderbolt to NVMe and so you get 40Gbps bandwidth whereas the UBC-C one I went for gives me 10Gbps – which was fine in my case, I don’t need 40Gbps, and I couldn’t find any Thunderbolt to NVMe enclosures either). 

First I thought I’d try something like Carbon Copy Cloner to clone the internal drive to the NVMe. That didn’t work coz CCC doesn’t work with Big Sur yet and gives a warning that the destination drive won’t be bootable (it does so even before I select a destination drive). I tried to clone and boot anyways and it didn’t work as expected. So what I did instead was the following:

  1. I erased the NVMe disk as APFS via Disk Utility.
  2. Then I took a Time Machine backup the installed macOS. 
  3. Rebooted and went into recovery mode (press Cmd-R while rebooting).
  4. Tried to do a restore of the Time Machine back to the NVMe but it said I must reinstall macOS first. It gives an option to do so there itself, which I did. (Or you could choose to reinstall from the initial menu itself. (Here’s the Apple document to recovery mode for some pictures). Either ways, this will install Big Sur to the disk you specify. 
  5. While booting up into this newly installed OS (it does automatically after the install) I was asked if I want to migrate from a Time Machine backup. I selected to do so, pointed it to my previously created backup, and it restored everything. 
  6. Rebooted, and I was now booting Big Sur from the NVMe disk (speedy!!) and all my data and settings were there. 

Some things actually worked better after this. Previously in Big Sur I wasn’t able to get the default colourful wallpaper working as it would bring up the Catalina wallpaper instead. On the new install that works fine. Some apps like Witch and Alfred etc. bring up their permissions dialog again on first login – no big deal. And that’s it really. But boy, macOS runs so blazingly fast now. Every task which used to take a minute or two of me staring at the beach ball previously is now instant. Nice!

Update: Note to self. When rebooting the Mac press the Option key so I am asked which drive to boot from. The NVMe (or any external) disk can sometimes take a while before being recognised and in such case the Mac boots to the fusion drive by default. Also, press Ctrl when selecting the NVMe so it remembers that as the default (not that it matters because I should always press the Option key when rebooting). 

LG Ultrafine 4k (the newer 23.7″ version) compared to LH 24UD58

I had previously alluded to the LG 24UD58 in a post from 2018. It was my monitor of choice ever since I shifted to using macOS due to its high PPI. At that point while I was aware of the LG Ultrafine 4k it was too pricey and I didn’t want to spend that much. For the price of one LG Ultrafine 4k I can get two LG 24UD58 (which I did) and have them in a dual config. 

One thing with two 24″ monitors though is that it is a bit of a strain. I now appreciate why someone would go for an Ultrawide. Two 24″ monitors side by side means I have to stretch my neck or keep moving around to see the corners of either monitor (which is fine when I am standing and working, but not so convenient when I am sitting) while with one ultrawide presumeably it is not as taxing.

Anyways, fast forward to now. I moved countries, my LG 24UD58s were stuck in shipping, I needed a new monitor coz working on the MacBook Pro screen wasn’t cutting it for me (too small) and so I went ahead and purchased the LG Ultrafine 4k. It is still damn expensive but I was able to get a refurbished version off eBay for roughly the same price as the 24UD58. I was apprehensive getting it because I wasn’t sure what the difference would be between these two models. On paper both have similar specs, resolutions, and PPI and maybe I am missing something on this comparison page but I don’t see any obvious huge differences. 

Now that I purchased it, and a few months later my shipment has arrived and I have the LG 24UD58s to compare with side by side, I can tell you that the LG Ultrafine 4k is vastly different. For one it’s screen is way better. While the PPIs & resolution are similar, the Ultrafine 4k screen just feels better … more fluid, more clear? Maybe its to do with the brightness. When I look at them side by side I see that the Ultrafine 4k is definitely brighter than the 24UD58. It also feels a lot clearer … a statement which doesn’t make much sense, I know. On the 24UD58 it’s as if there’s a matte screen protector on it – I can make out some graininess on the screen, while on the Ultrafine 4k it is crystal clear. 

Another thing is the LG Ultrafine 4k integrates better with your Macs, so in my case I have the power cable going to the LG Ultrafine 4k and a single thunderbolt cable from it to the MacBook Pro. This powers the MacBook Pro so I don’t need to have a separate power going to that – leaving me with a cleaner setup. The Ultrafine 4k also has no buttons on it as it is entirely controlled by the brightness etc. controls of your Mac (or attached keyboard if that can talk to the Mac). It is also more responsive than the 24UD58. When I tap the computer after I have been away for a while, the 24UD58s always used to take a few seconds before waking up (they’d wake up, go to a grey screen, hang about there for a few seconds, and then come alive and show the screen contents). On the Ultrafine 4k it is instant – tap the screen and boom! it is on. It also has a height adjustable stand – a feature I never realised was useful until I experienced it firsthand here. And the Ultrafine 4k also has better tilt angles, which along with the height adjustment means you are able to better position it to your convenience.

The Ultrafine 4k also has 2x Thunderbolt 3 and 3x USB-C ports in the back; while the 24UD58 has 2x HDMI and 1x DisplayPort – so that might be a factor if the ports matter to you. I wonder if the graininess I feel on the 24UD58 is because I am using the HDMI port. You see, Thunderbolt 3 on the LG Ultrafine 4k will give me a bandwidth of 40Gbps, but HDMI 2 on the 24UD48 is limited to 18Gbps while DisplayPort is more comparable at 32.4 Gbps so maybe I should switch to the latter to see if that works better. (Update: Looks like you don’t have any Thunderbolt to DisplayPort adapters. You have Thunderbolt to Dual DisplayPort docks – which should do in my case I guess, but they are not cheap and I don’t want to waste the money for it – or you have USB-C to DisplayPort cables, similar to the USB-C to HDMI 2 cable that I am currently using, but this obviously won’t let me use the full bandwidth available to DisplayPort. Assuming USB-C in this case refers to 3.1 Gen 2 that means I can get a maximum of 20Gbps on these cables). 

The Ultrafine 4k also has inbuilt speakers (but no headphone output port) while the 24UD58 has no inbuilt speakers (but has an headphone output port). Again, I prefer the ports and speakers of the LG Ultrafine 4k over the 24UD58 for my use cases, so now I at least get why the LG Ultrafine 4k is pricier than the 24UD58. (Not sure it’s worth double the price though, but there could be factors I am unaware of).

Trying out macOS 11 (Big Sur)

So WWDC 2020 was this past Monday. I didn’t watch the keynote but I downloaded macOS 11.0 soon after that from Beta Profiles. Not sure what I was thinking really, it’s a bit of a silly move downloading a beta version of macOS, especially considering even “stable” versions like 10.5 have been flaky. Anyhoo, too late to think about it now … the only solace is that at least I didn’t install it on my primary Mac, so assuming it doesn’t cause any data corruption like delete my iCloud files or emails I am good. Worst case I will just re-install the older version. 

First impression – the new look took a minute to get used to, but once I did I started liking it. It feels a bit too bright to me, but that’s probably just my eyes. 

I couldn’t try the new colourful wallpaper as it would keep going to the Catalina wallpaper whenever I’d select that. I was able to use the Big Sur mountain wallpaper though – that works. 

Funny this, just earlier that day I was reading a blog post about monitors (yay for the author – good post!) and had turned off font smoothing in the OS. Interestingly, after upgrading the option is no longer available. Has Apple turned off font smoothing for good in macOS 11? That’s good if they have. 

I love the newish Music and Podcasts app. They are new in the sense that they are newer than the version in 10.5. I prefer the new look and I enjoy using these apps now. I also like the new look of the Dock, how it has rounded corners and is slightly lifted from the base (bottom or sides of the screen – wherever it is placed). For some reason with macOS 11 I have moved the Dock to the left side as I find it better there. Somehow the change in look has made me feel like putting it there (when I had put it there with earlier versions of macOS I didn’t like it). 

The upgrade broke a few apps as expected:

  • Bartender is unable to control the menubar items any more.
  • Karabiner Elements is broken (you can follow this issues page for a discussion). I simply turned off Karabiner and stopped using the Microsoft Sculpt keyboard for now (that’s the reason I was using Karabiner Elements) and went back to the Magic Keyboard.
  • Toothfairy works as usual – good!
  • No issues with Alfred 4 either.
  • Contexts works but the theming is broken. Not a big deal.
  • Homebrew broke. Thankfully the fix is simple – download the latest Xcode and CLI tools from Apple. Thanks to the people at this issues page for pointing me in the right direction. 
  • That’s it for now! This is not my primary Mac so I don’t have too many apps there. The only other apps I have are stuff like LastPass, Bitwarden, BBEdit, TextMate, iTerm2 … and all these work fine. 
  • Oh, forgot! Safari Developer Edition doesn’t even launch. Expected I guess. (Update – 26th June – now fixed in an update)
  • The Music app still has this bug wherein when I am listening to a song and I add it to my library it stops playing the song. I’ve had it since macOS 10.15, I just put up with it.

Checkout this WWDC 2020 music playlist from Apple while you are at it. Good stuff!

Converting iTerm2 colours to Windows Terminal colors

I want to convert an iTerm2 colour scheme such as this one (Ubuntu) to the Windows Terminal color scheme. I have no idea how to do this! I have no idea what those iTerm2 colour schemes even mean. It is an XML file with what looks like RGB values in decimal. Moreover, instead of specifying colours it has entries like “Ansi 1 Color” etc. Whatever that means!

Here’s an excerpt of the file:

I want to try and figure out what these mean and how I can convert them to an iTerm2 format. Going to try and do this as I make notes in this blog. Hence some of the steps below might seem obvious or elementary. 

I can download a colour scheme thus:

And quickly view the colour keys thus:

Here’s the output:

Since each <key> element has a <dict> too I can view those thus:

Output:

What does this mean? RGB scales are usually on a 0 – 255 scale, so this confused me. After some Googling I realised you can have them on a 0 – 1 scale too. Thanks to StackOverflow. So a number X on the 0 – 255 scale can be converted to the 0 – 1 scale by dividing it by 255. Therefore a number in the 0 – 1 range above can be converted to 0 – 255 scale by multiplying it by 255. From there it’s an easy step to converting to RGB values in hex. Cool!

At this point I have the following rudimentary script:

If I do $valuesArray[0] I get the first line, and if I do $valuesArray[0].real I get an array of 3 colors – Blue, Green, and Red. 

Ok, so I need something that will convert these to hex. Time to create a function:

Let’s try it out:

Cool! Quick test with my array:

Nice! I can just capture this into a new array:

So at this point I have a $hexColorsArray with the hex values of the colors, and I have a $keysArray with the “Ansi 0 Color” etc. whatever that is. 

Here’s a place where one can find Windows Terminal themes. A sample theme looks like this:

I have no idea how to map the iTerm2 keys to these! Eugh. 

Here’s what the colors section of my iTerm2 looks like:

Ok, so that’s 8 colours (Black – White) along with their bright variants. Hmm, those line up with the colours on this Wikipedia page too. And I have similar entries in Windows Terminals, so what I need is a mapping like this:

That’s not all the colours as I am missing the following from the iTerm2 side:

Hmm, turns out the sample colour scheme I was looking at is not complete. Looking at the official docs here’s a default colour scheme:

So I’ve got four more to add. There’s three entries that I don’t have a mapping for so I’ll make a dummy mapping for these now, and prefix with an exclamation mark to ignore them later. Let’s put this into a function:

I can convert from one to another thus:

So at this point I have $winColorNamesArray and $hexColorsArray array. All I have to do now is output a JSON colour scheme. That’s easy, loop through the arrays, ignore the colours I marked earlier, make a hash-table of the rest, add a name key based on the URL, and put all this into JSON. That sounds big when I say, but is simple in PowerShell:

Awesome. Let’s try this now:

Paste this block of JSON into my Terminals settings fine, assign one of my entries the theme “Ubuntu” (or whatever your theme name is), and voila! here’s my command prompt with this theme. 

I’ve put the final script in my GitHub repo here in case it’s of use to anyone else. 

Update: The script has been updated to also allow one to specify an already downloaded iTerm2 colours file as input. 

Move multiple Safari macOS tabs to a new window

One of the neat things with browsers such as Firefox is that you can select multiple tabs in a window, right click, and move them to a new window. Very useful if you have a lot of tabs and want to split some out. In Safari on macOS however, you can’t do that. You can right click a single tab and move it to a new window, or you can drag a tab each to a new or existing window, but there’s no way to select multiple tabs and move them out. I usually drag tabs one by one, but that’s a hassle as I have to put the new window side by side or next to the existing window and then drag and drop. I don’t like moving my windows around much coz I like the position at which I have organised them. 

Today I discovered a workaround by accident. Either left click a tab and move it all the way to the left, or right click a tab and pin tab. Unlike other browsers, when you pin a tab in Safari it is pinned on all windows (which can sometimes be useful but is usually irritating and confusing – to me at least). This feature is useful in my current scenario however, because now I can open a new window or go to whichever window I wanted to move these tabs into, right click the pinned tab there and unpin it. Yes I have to do it one by one, but at least I don’t have to drag tabs around or move windows. When I unpin the tab on the destination window, it automatically disappears from all other windows. Nice!

[Aside] Demystifying the Windows Firewall

Quick shoutout to this old (but not too old) video by Jessica Payne on the Windows Firewall. The stuff on IPSec was new to me. It’s amazing how you can skip targeting source IPs and simply use IPSec to target computers & users or groups of computers & users. 

Docker Bash completion in macOS

I came across this when trying Docker in Ubuntu. Bash would autocomplete Docker commands. Things like docker im<tab> to complete commands, or even docker logs <tab> to complete container names. 

Googling on this got me to this page, which was for Docker Compose; and also this page, which was for Docker Machine. Somehow I then chanced on the correct page for Docker CLI Bash completion, which is what I was interested in. I forget how I stumbled upon it, it was through some blog post from 2016 or so which took me to an outdated GitHub page from which I came to the correct one – this. After installing bash-completion on macOS, follow the steps on that page and you are set. 

While Googling I also came across this page which I am yet to read fully. Looks useful. 

Madeline Miller interview (and a quote)

Here’s the quote (emphasis mine):

One of the things about Greek mythology that’s so interesting is just how horrible the gods are. The gods are really not exemplars. You might aspire to have the kind of power that they have, but, for the most part, they aren’t virtuous. They’re petty and selfish. The fact that they have achieved this ideal situation of having all the power, eternal life, the ability to fulfil every desire has not made them good people. If anything, it has done the opposite.
 
That was something that I really wanted to explore in Circe: this idea of when you do get everything you want, when you do have absolutely everything, it doesn’t make you a good person, actually. It makes you kind of a terrible person.

Psychological studies have proved that that is, in fact, correct: When human beings are given ultimate privilege and ultimate power, unless they actively fight against it, [their] empathy immediately starts dropping. You start assuming that if I’m way up here, I must have gotten here because I deserve it. And therefore, everybody who’s down there, they don’t deserve it. So I’m better than they are, and therefore I can treat them terribly if I want to.
 
I think it’s so interesting that the human brain goes there and that the Greeks knew that, and they manifested that in their mythology.

Listen to the interview episode here. The interview is by Ezra Klein on his podcast. 

Az CLI find location shortcode

I wanted to use the Az CLI command to find the shortcode of a location. You know: “UAE North” == “uaenorth”

This command gives you a list of locations and their shortcode and other details:

This is fine and I could scroll through the output to see the shortcode I was interested in, but I thought it would be fun if I can pipe it through jq to get exactly what I want.

That didn’t work though as I kept getting the following:

Turns out this is because jq cannot parse the input correctly. This stumped me for a while until I realized that the Az commands have an “–output json” switch to output in JSON. So while the default output looks like it’s JSON, it’s actually formatted and not really JSON.

Here’s a typical output entry for a location:

What I get is an array of JSON entries like the above.

If I want a list of locations and their shortcodes I can do something like the following:

What I am doing here is piping this to jq. And I tell jq to expect an array and iterate through it (that’s what the .[] does). Then I tell jq to select just the “displayName” and “name” elements from each JSON entry in this array, call these “displayName” and “name”, and output this as JSON (that’s what the {} around part of the commands do). The output looks like this:

If I don’t want an output as JSON I can skip the {} and do something like this:

This just returns a list of locations and shortcodes and isn’t very pretty:

Now, back to my original problem. I am only interested in the shortcode of the location I am interested in, so I don’t really need a list. Instead I can do something like this:

I use the select operator here to find the entry whose “displayName” matches what I am interested in. The result is a single shortcode.

If I want the result to be JSON I can enclose it around {} like I did earlier and also add a label. 

The result looks like this:

To make it easier for the future, I created a Bash function out of this:

It’s similar to the above just that I have to pass the argument I give the function over to jq. For this I have to use the --args switch which lets me define a new internal variable called “displayName” which has the value of the argument I give the function ($1 in this case, in quotes so I capture strings with spaces). When I use this variable as $displayName in jq later, I should skip the double quotes (figured this out via trial and error).

That’s all, now I can simply do az_location "UAE North" and get my answer!

Az CLI and multiple accounts

I wanted to use the Az CLI commands with two separate accounts – my work and personal. I thought that if I opened two separate terminal windows that’d do the trick but turns out it doesn’t. Both terminal windows share the same login info etc.

Then I came across this issue. Turns out there’s an environment variable wherein you can set the location of your Azure config. I use macOS and in my case the Az CLI commands create a folder called “.Azure” in my home directory and use that to store info. So I created a new folder called “.Azure-personal” and in the terminal window where I want to login with my personal account I did the following:

After that I used the “az login” etc. commands as usual and was able to have two separate instances running in parallel.

To make it easy I added two functions to my bash profile:

Now I can invoke the appropriate function and it will log me in correctly.

The new AirPods Pro

I bought the new AirPods Pro yesterday and returned them today (I didn’t return them; see the end of the post for an update). That’s not coz I hate them or anything, just that they had one very important niggle for me and so I don’t want to pay the current full price for them. I’d rather wait for a deal or something when the price goes down (as they tend to do with the AirPods and other headphones too at least).

So let’s get the bad out of the way: it’s the ear fit.

I don’t think my ears are identical. Heck, I don’t think even my head is symmetrical (at least in terms of ear position). I know that with on-ear headphones that have notches (very useful to mark the position of the band if it’s adjustable) I typically tend to have one side on say 3 bars while the other on 2 bars so one side is slightly higher than the other. Similarly with in-ear headphones I sometimes have to use different size ear tips – usually a large for one ear and a medium for the other. With the AirPods Pro the left ear fits amazing well and I get a good seal, while the right ear is so-so. I tried all three sizes, and while the large works great with the left ear the right works ok-ish with the large and not at all with the others. In fact with the small and medium the AirPod Pro doesn’t even sit properly in the right ear.

One good thing about the AirPods Pro though is the ear tips testing they do via the Settings app. With any other pair of in ears I’d not get a good fit and think that maybe it’s just me being picky or whatever, but with the AirPods Pro even the ear tips testing app told me that the right ear didn’t have a good seal. Of the more than 15-20 times I tried to take them off and on, I managed to get a good fit twice in the right ear (the trick is to put them in as usual and then use the thumb to sort of push them further into the ear canal) but that fit only stayed for a few mins and it soon loosened. I wasn’t even munching anything for the fit to loosen – one time I was walking, the other time I was sitting, and in both cases after a while I could feel the right side loosen and while the AirPod Pro wasn’t going to fall out I can feel the outside air and slightly more noise.

That’s it really. That’s the only negative thing I found about the AirPods Pro. If that fit was perfect – heck if they had just included an XL size ear tip, I could have used that for the right ear and be very happy with these. In fact, I don’t think the L size ear tip is really large; it’s between what I’d usually consider a Medium and Large, so if the L size was actually XL, and the M size was actually L, I could have just used the L in right ear and M in the left ear (which, come to think about it, is what I usually do anyways).

One nice thing about the ear tips though – they have little markers with S, M, L on them so you know what size it is instead of having to compare with the rest of the lot. It’s a good touch. I am not a huge fan of the click on mechanism to put them on. It does the job, but is a bit scary when you have to rip the ear tip out and hope it doesn’t tear. Similarly when you push them in it doesn’t always click. I’ve had to turn it around a bit for the notches to align and it to click in. But it’s not a big deal. I get the rationale behind the design change, so power to them.

Moving on to the good parts of the AirPods Pro: everything else.

The noise cancelling is great. The first time I put them in it reduced the outside noise and I thought: “great, not bad noise cancelling”. Then I realized that the noise cancelling wasn’t even on, this was just noise isolation from the ear tips. So I turned it on and boom I could just feel it kick in and dim the outside noise. That is great! That’s an experience unlike most other noise cancelling headphones I have used. Sure they noise cancel, but I’ve never had the transition. If I put on a pair of Bose QC 35IIs and on them the outside noise goes off, but that’s more like a flick of a switch as opposed to the transition which happens with the AirPods. It’s not a big deal in the end coz what matters is the eventual noise cancellation, but it’s a nice touch. (The same way when you take a photo on the new iPhone 11s and its dark, the phone doesn’t just tell you to hold the phone still – there’s a timer on top and the photo slowly comes on the screen as it’s being captured).

I used the AirPods Pro out for a walk along with my Sony WF1000XM3s. That’s my other pair of noise cancelling in ear buds that are similarly wireless and all, so I figured I must compare like against like. I wish I could give a proper answer about which one noise cancelled but that’s difficult because I never got a good fit with the AirPods Pro. The one time that I got a great fit (and even the app said I had a great fit) the AirPods Pro were amazing – as good as if not a bit better than the Sony WF1000XM3s – but most other times it was so-so. I could hear a lot of the outside noise and feel the outside air in my right ear.

The good thing about the Sony WF1000XM3s is that they come with many tips, including a few foam ones. So I have the foam ones on and even though I am using the same size in both ears I am able to push the right ear one more deeply inside and it stays put. Because of that I get good noise isolation and cancellation and they feel better. Where the Sony sucks though is in its app, which is terrible. Or rather, where the AirPods Pro excel is in its integration with the Apple ecosystem. There’s no slowness as you can easily toggle noise cancelling or transparency via the Settings menu or Control Centre (or even via the Apple Watch – so cool!). It’s all very natural with the AirPods Pro. Even the gestures between these two devices. For the Sonys I have to tap on the little touch area, and that’s fine, but occasionally it doesn’t register well and so skips ahead when I meant to skip back for instance. The AirPods Pro though have this little squeeze gesture and while I found it awkward initially I quickly got used to it and now I’ll miss it. Apple’s done some fine stuff in there, I really wish they’d just included a larger size ear tip and I could have been so happy. :)

Another area where the AirPods Pro shine over the Sony WF1000XMs is the mic. They work great. The Sonys are fine as long as I am inside and there’s no noise to cancel, but take them out and its like they noise cancel what I am speaking. Everything gets chopped up.

A lot of reviews compared the AirPods Pro to the PowerBeats Pro. I don’t get that comparison though. They are different beasts. The PowerBeats have no noise cancellation, and come with this humongous case … so you can’t even carry it around. At least the Sony WF1000MX3s have similar features and only a slightly larger case (not as pocketable as the AirPods Pro, but still it makes an attempt). I like the PowerBeats Pro though. Interestingly their sound signature is different to the other Beats headphones. The only other Beats I used before the PowerBeats Pro is the Beats X – which I love, and I have some 2-3 pairs of coz they keep breaking – but while the latter is more bassy the PowerBeats Pro is neutral. They fit well in the ear coz of the over-ear hooks, and have a good mic and all that. So if you want an AirPods equivalent that fits well in your ears and you don’t care about portability, then by all means get them. Definitely better than AirPods a long as you don’t want something small to carry about. But if you want noise cancelling, then AirPods Pro it is … provided they fit in your ears. With the PowerBeats my left ear is the odd one. I feel like it could fall out of my ear any time, or that the fit isn’t well – neither of which is really true, just that I feel like the left side can do better some way. A good thing about the PowerBeats Pro is that you can mess with the hook to try and get a better grip or push the headphones deeper so I have been fiddling with that to make the left side feel better.

The mic on the AirPods Pro is better than the QC 35IIs too. So if that matters to you, and not that you should be comparing the AirPods to Boses, that’s a plus for the AirPods Pro (along with the fact that its more portable, integrates better with Apple, less pricey etc). The mic of the AirPods Pro is as good as, if not slightly lower, than the NC 700s. The latter have pretty good mics, and they noise cancel the surrounding noise well too when you are speaking into it. The NC 700s however are way more pricey, and less comfortable, so it’s a different thing altogether. But that said, I’d still choose the AirPods Pro over it if I could have got the fit correct (and thus the noise cancelling too). Until that happens there’s no sense in me paying the full price for something that I’d like to own coz it’s great but which I may not make full use of coz it’s primary use case for me (noise cancelling) doesn’t work well coz the fit is bad. Hopefully in a while the price drops or there’s some 3rd party ear tips that have better fit etc. – who knows!

Ok, that’s a lot of words for a product I will be returning soon. :)

Ps. Forgot to mention this earlier. Kudos to all these wireless earbuds – AirPods, AirPods Pro, Sony WF1000XM3, and PowerBeats Pro – for either offering identical controls on the left and right side or at least the option to customize the controls on either side so you can choose to have them identical or decide which side does what. As a person who tends to use both hands that’s one thing I hate about most on-ear headphones – the important controls are all mostly on thh right side. Of these only the PowerBeats Pro offer volume controls too (on both sides, wow!) as well as nice clicky physical buttons, but the lack of volume buttons for the others isn’t that big a deal for me as I can just press the volume switch on my phone through the pockets or just use the Apple Watch.

Update 1: So I wrote the blog post, packed up the AirPods Pro (as I had already filed a return request), and went about with the rest of day. After a while I had this idea to test the mics of my various headphones. I use them for a lot of calls and while I know the Bose NC 700s are the best I wanted to compare it against the others. After doing that for the various headphones (yes Bose NC 700 rocks in terms of mic and mic noise cancelling) I thought let me try with the AirPods Pro too. After all I have them at home.

As usual the right ear didn’t fit, but whatever. The test wasn’t that great either coz I could hear a lot of the background noise due to the poor noise cancelling. However, while I was taking out and putting in the right AirPod this time I didn’t push it in as I was doing before. I simply put it inside my ear, no extra twisting or anything. I don’t know why I was pushing earlier – just habit I guess from the regular AirPods or other in earbuds. When I just put in the AirPods Pro though they stayed in magically, and even better the seal was perfect. Since then I have taken it out and put back simply a dozen times, and each time the seal is great and the test app too confirms it. Nice!

So pro tip: don’t push in the AirPods Pro, or twist or anything. Just put them in. It might feel like they are going to fall down but they won’t. I pretty much jumped around after doing this to see if the AirPods Pro fall, but they didn’t. I was like Joanna Stern in this video, less good looking and less watchable. :)

Update 2: A week after the above update I finally returned the AirPods Pro. And now I miss them, but on the whole it’s probably for the better. (Haha, sounds funny saying that about a pair of headphones). I returned the PowerBeats Pro too as they too were in the return window.

So why did I return the AirPods Pro? Because as much as the seal improved after I started to just put them in, and they stayed alright even after all the moving around I’d do, I couldn’t get this thing out of my head that the right ear bud will fall out. The logical part of my brain knows it won’t fall, but the non-logical part is always tense that it may fall out and so I keep pushing it in at random to appease myself. I didn’t like that.

I returned the PowerBeats Pro too for similar issues. There it was the left ear. The right ear had a perfect fit, the left was not completely sealed and while that didn’t give me any worry about the PowerBeats Pro falling out (coz of the hooks) I was conscious of the lack of seal and hence not great sound quality. Whenever I’d push it in the music sounded better. I played a bit with the hooks to get the ear bud to go in deeper, but that started to hurt my ear coz the hook was pressing in. I guess for the PowerBeats I wanted a larger left ear bud. So complicated, my ears!

I still might get the AirPods Pro again. They are great portable headphones. I just didn’t want to spend that much money now coz it’s more of a luxury item currently than something I absolutely need.

Azure VM stuck on starting/ running/ shutting down

So I was creating a new VM from an image in Azure today. The portal showed it as “Running” but I couldn’t connect to it. Took a look at the Boot Diagnostics and it’s stuck on boot up:

Stopping the VM from the portal or PowerShell made no difference. Finally I had to log a case with Microsoft. 

The engineer from Microsoft didn’t seem to know of any reset option either … he suggested I resize the VM, which I did and that shutdown the VM. (Or maybe it was just a matter of time. It took an hour+ from the time I encountered this issue to when I did the resize. First I had to log a case via the portal, then a Critical Situation Manager contacted me to say she will arrange for an engineer; then the engineer called me and he wanted a screen sharing and Teams call, and I was like dude why don’t you just shutdown or reset the VM from your console. He didn’t want to do that and wanted to document the whole thing so that took some time during which he suggested I do a resize … and some 10 mins after that the VM stopped. So maybe resize helps, or maybe it just needs an hour for stuck VMs to be reset automatically).

Thanks to Microsoft for calling and coordinating promptly, but I do wish sometimes people would not be so tied up in following the “script” and just listen to what the customer is saying (dude, reset the VM) instead of insisting on a screen share and call etc. Would save everyone time. :)

[Aside] man: can’t set the locale; make sure $LC_* and $LANG are correct errors

I was getting errors such as man: can't set the locale; make sure $LC_* and $LANG are correct when SSH’ing my Raspberry Pi box. Suggested fixes such as dpkg-reconfigure locales didn’t help (I got a new error after selecting the correct locale – /usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory).

This AskUbuntu thread has a good explanation of the problem and possible fixes. This StackOverflow thread has a good explanation of the Language variables themselves. It is common for macOS users coz the macOS /etc/ssh/ssh_config file exports all the language variables and that confuses the remote machine. If you don’t want to fix it cleanly, a “rough” solution is to disable sending of language variables in the Terminal app or iTerm. Special shoutout to this answer from the aforementioned AskUbuntu thread that explains the problem well and gives a good fix.

The Terror (first season) is a different type of horror… and is good!

“The Terror” is a different kind of horror show. At least the first season that I watched today & yesterday definitely is. I started watching it expecting some terrifying kind of horror. The poster had Jared Harris as a captain and I thought the story would be about zombies and other mysterious creatures attacking a bunch of seamen stuck somewhere. Lots of blood and gore basically.

Sure the show has a mysterious beast but that isn’t the central character. In fact it is even missing for most episodes, making a return towards the end. The real horror of the show is the people themselves. A group of people stuck on the cold and frozen Arctic Ocean, unable to move forward or go back, slowly being poisoned by something in the food and “losing it”… that’s the premise basically. It’s a slow burn horror show if you could call it that. Lots of character development, some amazing camera work, and the environment itself plays a role and is well captured. Think “Lord of the Flies” meets “The Leftovers”.

A lot of the scenes are setup in a way where you’d expect something to happen. Like a monster attack for instance. But nothing happens. The camera lingers ever slightly slow and you tense in your seat waiting for something… but nope. It’s almost as if the writers/ directors know you expect that and so toy with it to break you out of that expectation. This is a different sort of horror, they want to say, you are not going to get mindless gore and violence. :)

Got to watch season two now. It’s a different story, that’s good. I love it when shows have separate seasons that are only united thematically but don’t have any common story or characters.

Stop Palo Alto GlobalProtect on macOS from launching automatically

I had installed Palo Alto GlobalProtect on my macOS as part of work sometime. The silly thing always launches when I login (minimized thankfully, so that’s something) and there’s no option to quit it nor to set it as never launch upon login. Moreover, if I close it via Activity Monitor it just comes back again. Irritating!

Today I finally decided to do something about it. (This week and past I have been cleaning up my MacBook Pro, removing a lot of the clutter etc).

GlobalProtect on macOS is loaded by launchd thanks to two plist files in /Library/LaunchAgents. You can read about launchd in this link. I happened to know about it because that is the new/ preferred way of even scheduling tasks in macOS as opposed to cron for instance. If you open this file on your machine you will see that 1) it is set to load at run and 2) it is set to be kept alive in that if the application shuts down it will be launched again. I wanted to know how to change that and this post turned out to be useful. It tells you how to change whether an application is loaded at runtime or not, and also how to tweak with the exit behavior.

I decided to 1) set GlobalProtect to not load at run time, and 2) if I do close it after launching then not start again. The change was simple and here’s a git diff of the changes to the two files for easy viewing:

The changes are simple. Change two <true> keys to <false> and also modify a KeepAlive key to not do anything if the program is successfully exit.

After that do a launchctl unload each of the .plist files (no need to use sudo). This will quit GlobalProtect for you. Then on just launch GlobalProtect manually as you do any other program; and to quit it kill it via Activity Monitor.