Hugo Minify Options

If you are using minify while building your site, by default quotes will be stripped out, leading to the rel="me" tag rendering as rel=me, which Mastodon won’t pick up.

To fix that you can either simply not use minify ( I did this ) or change the minify config to not strip quotes.

Moving to Github

Test post as I move this blog from Gitlab to Github

Python Defaultdicts and Dictionary Size Changed Error

I had a python script that was using a defaultdict to store some values and then passed it in to a function along with a string, to do some further processing. Within the function there was a for loop to iterate over the dictionary for further processing.

During the run, I kept on getting this error

RuntimeError: dictionary changed size during iteration

This was odd since I wasnt adding or deleting any values in the function and was only going over it with a for loop like this:

for key, val in map_ids:
    #do something

Turns out that a default value is created when iterating over a defaultdict causing a size change error. The easiest way to solve this is to get a list of the items that returns the dictionary view, thereby iterating over that list instead of the defaultdict

for key, val in map_ids.items():
    #do something

My 2020 Homescreen

The last time I shared my home screen it was 2016, so I thought it would be interesting to see what things have changed over 4 years.

One of the first things that pops out is how outdated the 2016 home screen looks with the general look and feel; just shows how far Android has come along since then, even down to consistency with the icon shapes.

It has largely been a reduction of the social apps I used and how over time that activity has gone over to messaging apps with a select group of people. I do have a second screen with apps that I don’t use everyday but refer to from time to time such as Yelp, Cisco Headphones, Taxi apps etc. If there is a significant change in the home screen going forward, I would predict its the removal of Gmail. Email has been reduced to just a place where I get notifications about deliveries, appointments etc and its no longer a place where I have conversations with friends and family, but lets see how it turns out.



2016 Homescreen2020 Homescreen

















What Was Removed

  • The Social folder - I removed Google+ ( and so did Google 😉 ), Facebook , Twitter & Instagram. While I still use Facebook, Twitter & Instagram, its no where near my usage of 2016 - 2017 that I needed apps full time, so I just with chrome tabs that I load when I feel like checking in.
  • Foursquare & Swarm - Once the gaming aspect was split in to Swarm, the fun was just not there and eventually my friends stopped using it, reviews & tips on Foursquare weren’t as good as what I could find on Yelp & Google Maps. I now just use the location history on Google Maps to keep track of that information.
  • Home Control Folder - I moved over to OpenHAB since I felt Wink wasn’t going anywhere with their hub. Turned out to be the right decision as they faced a lot reliability issues, funding issues and a poorly thought out subscription plan.The new home automation runs everything locally, it is exceptionally fast with support for a lot of smart home devices.
  • Yatse - A remote for Kodi, the excellent home theater software. I ditched my HTPC and went with the Nvidia Shield 2017. With streaming services I didn’t continue using Kodi on it and when I do want to play media from my NAS, I simply use VLC.
  • Inbox by Google - I really enjoyed Inbox, but I saw the tea leaves when the application was not receiving periodic updates and I also experienced missed email notifications. After missing a few important emails it was back to Gmail and then Google ultimately sunset it as well.
  • Google Play Music ( replaced by YouTube Music, but no longer on the home screen)
  • OneDrive - Stopped using it when Microsoft decided to remove all of the free storage upgrades that they had given as rewards.
  • Snapseed - I was barely using it and Google Photos got a lot of advanced editing features that it made no sense to keep it around.
  • Facebook Messenger & Google Hangouts - My conversations have moved primarily to WhatsApp, Signal & RCS/SMS, so they were gone as well.

New Additions

  • Google Duo - 2020 increased video calling and Duo is perfect, its cross platform, e2e and has excellent video/audio quality when compared to the others.
  • Google Fit - Simple app to keep track of steps and other health data
  • Google Podcasts - Simple podcast app that just works and syncs across the web & my home hubs. Lack of a commute due to 2020 has dramatically decreased my podcast listening.
  • Google Pay - Contactless payments is fast and convenient versus the chip readers on terminals.
  • Security Folder - Bitwarden a great open-source cross platform password manager and Aegis an open source 2FA app, with the ability to import/export tokens.
  • Firefox Focus - Its fast, doesn’t leave a trace and a great alternate browser.
  • Waze - I also have Google Maps on there but there are times I feel Waze offers faster routes and when there is a slowdown or some event on the road, it updates faster with the reason.

Power Automate and Azure Iot Hub Integration

We recently ran in to a situation where we wanted to get Event information from the Azure IoT Hub and use Power Automate to notify users about various thresholds etc.

Automate has the Event Hub Connector and IoT Hub provides an Event Hub Compatible Endpoint, so using those two was the obvious choice.

We ran in to two issues while using the compatible endpoint

  • The endpoint the IoT Hub provides looks like this

    Endpoint=sb://abcd1234namespace.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=keykeykeykeykeykey=;EntityPath=iothub-ehub-abcd-1234-123456
    . To create a connection that the connector can use, you have to remove the EntityPath portion so that it looks like this
    Endpoint=sb://abcd1234namespace.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=keykeykeykeykeykey=;

  • As you build the Flow and are asked to pick the name of the Event Hub that you want to work with, Flow throws the following error

    Could not retrive values. The remote server returned an error(401) Unauthorized. claim is empty
    In our case we had the proper claims and we were able to connect to the endpoint using a simple python script. Turns out the solution was to simply type in the name of the EventHub that IoT Hub provides.

You should now be able to now get events from Azure IoT Hub in to Power Automate using the Event Hub Compatible Endpoint.

Installing Rust on Manjaro - Missing Linker Error

I decided to pick up learning Rust again and was setting up my dev environment on a Manjaro VM. As I was finishing a tutorial and when I hit compile I received the following error

__error: linker cc not found

|

= note: No such file or directory (os error 2) error: aborting due to previous error__

Turns out Manjaro doesnt ship with the GCC compiler and you have to install it with the following

	pacman -Sy gcc

Now your rust code will be able to compile properly.

[Solved] Virtual Box Error VM Sesssion Was Closed Before Any Attempt to Power It On

For a random reason today when I tried to launch an Ubuntu or Manjaro VM using VirtualBox I was getting the following error

The VM Session was Closed Before Any Attempt to Power it on, VirtualBox Error. Checking the Error details further gave this

The VM Session was aborted, Result Code E_FAIL (0x80004005), Component SessionManage

I tried the following solutions that came up on Google to no avail :

  • Tried to discard save state for the VM - couldnt because the option was grayed out
  • Deleting the storage devices and then forcing a restart - didnt work, couldnt delete the storage devices

I was about to remove VirtualBox and reinstall when it struck me as to what could be the issue. I dual boot windows 10 and Ubuntu 19.04 and my virutal machines are stored on another internal platter drive. When you are using Windows and then shut down, there are certain times if something goes wrong and it doesnt shut down properly, Windows leaves the internal drive as read only. In that state, under Ubuntu (or any other distro) the drive will mount, but you cant do anything on it - no new files, no new folders, access files etc.

The simplest solution is to boot back in to windows and simply restart. When it shuts down properly, the drive is no longer read-only and Ubuntu along with VirtualBox can then access the VMs again and should now start successfully.

Setting Up Hassio on Fedora 31

I was trying to install Hassio (the popular home automation software). It has a couple of pre-reqs that need to be installed before you can run the docker image

apparmor-utils
apt-transport-https
avahi-daemon
ca-certificates
curl
dbus
jq
socat
software-properties-common

Out of these only a couple need to be installed on Fedora, so you can use the following

	sudo dnf install jq socat avahi

Now when I was trying to get the container running using the installer script from, I was getting the following error

sudo curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s
bash: line 130: /etc/hassio.json: Permission denied

The easiest way to solve this is to run as root

sudo su
sudo curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s

After that it downloaded the image and everything was running properly.

My Phone Timeline - 2019

The last time I updated my Phone Timeline it was 2012 followed with a minor update when I bought the Galaxy Nexus. I figured it would be fun to update the list from that point onwards to today, especially with a new Pixel 4 around the corner.

I mention in first post that I wanted the Nexus to I could play with the newest Android updates straight from Google rather than waiting on the OEM or Carrier to push down the update ( which usually meant long delays or never ). The Samsung Captivate ( The first Galaxy) was a great phone but had a nasty GPS bug that made using maps or anything needing a location a horrible experience because it could would take a very long time to get a lock on you. You can take a look at the issues here where a few updates from Samsung, people trying different methods, ROMs etc did very little to fix the situation. If I remember correctly someone did a teardown and determined it was a design issue with the way the GPS radio was placed. That experience along with the lack of timely updates was the biggest driver to jump over to the Nexus line.

So here we go :

Nexus 5 (Oct. 2013) - One of the best Nexus devices built. The screen was a big upgrade from the Galaxy Nexus and it only cost $350 for the cheapest model. At that the messaging seemed to be that you could make a high quality handset without the high cost. With HDR processing with Android 4.4 Google started to focus on the camera. Also the last time I did a yearly upgrade of a phone. Nexus 5

Nexus 6p (Sept. 2015) - The last Nexus with a metal body made in partnership with Huawei and coming in at $499. Google really started to flex its camera muscle with this phone and even to this day its no slouch with some night time photos on Google AI blog. I bought graphite black and it fell out of my pockets the first day, scratching some of the paint off from the bottom lip. Nexus 6p

Pixel XL (Sept. 2017) - Here we are at the first Pixel and the prices start to head north. I received this from Google Support when there was a battery issue with the Nexus 6p. I used it for a couple of months before giving it to my mom and getting the next version. This is where the Pixel series started establishing itself as the camera king. Pixel 1 XL

Pixel 2XL (Oct. 2017) - The phone I am currently using and which just received Android 10. Camera capibilities improved and the phone has been solid. There were initial reports about the screen having a blueish hue which I never really noticed. Pixel 2 XL

Fixing VS Code Go Tools Download Error

I ran in to an issue while setting up my Go environment on Ubuntu. Using VS Code I was installing the go tools to round out the set up and I ran in to an issue where I was getting permission denied errors on all the libraries hosted on github

Installing github.com/mdempsky/gocode FAILED
Installing github.com/uudashr/gopkgs/cmd/gopkgs FAILED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru SUCCEEDED

gocode:
Error: Command failed: /usr/local/go/bin/go get -u -v github.com/mdempsky/gocode
github.com/mdempsky/gocode (download)
# cd /home/kashif/go/src/github.com/mdempsky/gocode; git pull --ff-only
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Turns out the issue was that my gitconfig was using an insteadOf override to use ssh always instead of https for Github, Gitlabs and Bitbucket. The simple solution was to comment out that portion in the gitcofig run the tools again from VS Code to get everything resolved and get going ;)

Next page (2 / 37)