The Hidden Gem to AirPlay 2

A couple of weeks ago I came across a 9to5Mac article indicating that Apple has updated all Airport Express 2nd Gen (A1392) firmware to 7.8. This means that if you have one of these little gems you can pretty well enable any active speakers or receivers that can take RCA, 3.5 mm, and optical toslink inputs (with appropriate cables).

I immediately scour my local Kijiji site and Facebook marketplace for these devices. I ended up buying five of these little devices. One for $25 CAD and the others for $50 CAD. All are in working order and I added all five of them to my network, enabling all of my speakers in the house. Now every speakers on all three floors in my house are AirPlay 2 enabled.

My Airport Utility Status Display

To test the new setup, I ended playing Christmas Carols on all three floors. The songs are all in sync. As I walk around the house, it is pretty surreal to have the same song omnipresent around your head.

The boys are happy because their bedroom speakers are now enabled via AirPlay. This means they can be more lazy by switching songs while laying in bed. Before, they had to plug their iPhones into their receivers.

If these devices are still around, you cannot beat the $50 value to enable any speakers of your choice to be AirPlay 2 compatible. Start looking around!

Nutrition Label for Planet Earth

In Canada when we buy groceries, we can inspect their nutritional make up. The idea is to make better or more fitting diet choices to improve our health. Whether to reduce our saturated fat, sodium or carbohydrates. All of this makes perfect sense. We can extend this concept by having a nutritional label for every item that we purchase. How do we do that?

We can create a new eco-label. This label can consists of a summary of the cost that we impose on our planet to create and make this item available for you to purchase, along with any recyclable or waste disposal characteristics. Instead of making a conscious decision in regards to our own health, this eco-label can be used to help us make good decisions that will improve the health of the planet.

The eco-label can indicate how much energy in joules was consumed and how much harmful emissions were created to produce and deliver this product. The label can also indicate whether the product is recyclable and what will it take to recycle the product. We can start simple, and does not have to be complete to make a difference. I know that it would affect my purchasing decision if I knew how much CO2 gases were generated by the next pair of running shoes that I will buy.

Having such a label will have ancillary influences on how manufacturers will design and make their products. Businesses will be more accountable in terms of auditing their planetary impact. Perhaps a new dedicate discipline of eco-centric chartered accountants can focus on the auditing of such activities as well. Market forces can also help businesses to be more competitive by attaining certain goals on the eco-labels.

We all need to be actively concern and participate in a continuous fashion if we are to make an impact on how we change our planet. The eco-label can make climate change a topic of concern at every point of purchase. Even if you are not a climate change believer, the eco-label provides more eco transparency in addition to the financial and health costs.

I think this is very powerful. I am willing to bet that most of you will have similar feelings and thoughts on this topic as well. What do you think, a good idea?

3D Printed Qi Wireless Charger

Last year when I purchased the iPhone X, I was curious whether Qi Wireless Transmitters were available. To my surprise, I was able to search for a Qi Wireless Transmitter PCB board from eBay. Out of curiosity I purchased one for about $5 CAD (free shipping). It took awhile to arrive but I was in no hurry.

The intent is to design a 3D printed container for the PCB board and I would have a very cheap functional Qi compliant wireless charger.

Unfortunately, I didn’t get to this project until last weekend. I spent almost an entire day designing the container and printed 4 prototypes before I got the measurements perfect.

This morning, I finally got the two pieces printed, a simple top cover along with a bottom container. It was pure joy when all the pieces fitted perfectly together. Please witness the pieces here, along with a video showing how everything just works!

I have to say, super proud of myself on this one.

 

Creating DVD Video Discs

Recently I created a video to commemorate my mom’s 80th birthday. Of course once the video is created, there is always the challenge of distributing the video. For people who are always online and have a respectable bandwidth, they can simply view the video online, as I have made arrangements to post it here on my blog site. The video is embedded in The Grand Birthday post. What about others who are not online savvy or are still clung to their DVD players.

I usually use a program called Burn on my Mac to burn videos into DVD Video discs. However I find the process unsatisfying. I needed something that can be applied to mass processing. I also did not like the unprofessional DVD menu that Burn applies to the DVD disc. Also the program is quite old and I fear may not work for future versions of macOS.

I came across this Convert any Movie to DVD Video wiki link, and found some really useful information. After reading through their process, I found, practiced, and proven this trimmed down version on my Mac.

First I had to install several utilities through the brew packaging system on my Mac.

brew install ffmpeg dvdauthor cdrtools

I use the above utilities to perform the following steps:

  1. Convert the source video (typically optimized for my Apple devices and my TV’s) to an NTSC DVD compatible format;
  2. Author a DVD directory structure using the video;
  3. Create an ISO from the DVD directory structure for archiving and burning purposes;
  4. Burn the ISO to a physical DVD-R disc.

The first step is to convert the video:

ffmpeg -i original.mp4 -target ntsc-dvd -r 29.97 -s 720x480 -aspect 16:9 -b 8000k -g 12 -mbd rd -flags +aic -trellis 1 -cmp 2 -subcmp 2 video.mpg

I ended up using the above command which supposedly yields the most optimum  quality in terms of viewing. The output video.mpg is DVD compatible. The above command assumes an aspect of 16:9, which is what most home videos are shot at today.

I then use the dvdauthor tool to create the DVD directory structure. Before I use the tool, I first have to create an XML file containing how I like the DVD to be configured. Below is a bare minimum XML file configuration that I used to simply create a DVD disc containing a single movie. The tool gives me the option in the future to add menus, chapters, etc.

    <dvdauthor format="ntsc">
        <vmgm />
        <titleset>
            <titles>
                <subpicture lang="en" />
                <audio lang="en" />
                <pgc>
                    <vob file="/Users/kanglu/Downloads/video.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

I then proceed to run the tool with the above XML file, which I named dvd.xml.

    dvdauthor -o dvd -x dvd.xml

This will result in a folder called dvd which will contain the contents of the DVD disc. Once I have the folder, I can then create the ISO file.

    mkisofs -dvd-video -udf -o dvd.iso dvd

The resulting dvd.iso file is a good archiving format in case I want to make more DVD discs in the future. At this point, I no longer need video.mpgdvd.xml, and the dvd folder. The ISO file is all I need to create a DVD Video disc containing my video. After sticking in a blank DVD-R disc, I executed the following command.

    hdiutil burn dvd.iso

I repeated the above hdiutil command with several more blank discs to make a bunch of discs for distribution. The resulting DVD Video disc contains a single video without any confusing menu system; the way I like it — keep it simple and stupid.

Too bad not everybody has Plex or Kodi. Even a Raspberry Pi with OSMC installed would be wonderful. That will make future distribution of family videos a lot easier!

However, I am now happy to have a workflow that works for me. I hope you will find this helpful.

A Grand Birthday

This past weekend on October 6th, 2018, we celebrated my mom’s 80th birthday. We invited many friends and family to come to Richmond Hill at a restaurant called Emperor’s Chinese Fine Cuisine restaurant for a casual dinner, along with some light entertainment.

Family from Mauritius and around Canada came to join us in celebrating my mom’s 80th birthday. I am super thankful for the great turn out, and we all participated in making some great memories. Special thanks to the performers, who also made the event that much more special. The lion dance from Sammy Cheng was spectacular. The traditional dancers made our venue magical, while Kalen’s guitar performance brought the celebration close to heart. Of course, the line dancers also added a fun and coordinated touch to the dance floor. The beat of Sega music brings out the joy in us all.

With the help of some high tech toys, people were able to record and contribute some wonderful moments. I took the past couple of days to put these media snippets together in this twenty-three and a half minutes long video.

So when you have a moment, sit back, and enjoy. I know that I will cherish this moment and will use this video to remind me of this grand, happy occasion.

Your Internet speed may not be fast enough and you may experience freezes or stuttering when playing the above video. If you have such an experience, it may be better to download the movie first and then play it locally on your computer. Sorry for the inconvenience.

Press one of the buttons below to download the movie of the quality you wanted.


Updated October 16: You can also download all the source media, original photos and videos from here:

Note that the original media will only be available for about 60 days from the time of this posting, so if you want it, then please download it now.

Switching Sides

Yesterday in a surprising announcement from our MP Leona Alleslev (@LeonaAlleslev), MP Alleslev decided to resign from the Liberal party and join the Conservative party of Canada.

Her reasons and quotes are publicly available and I will not comment on them. As a member of her constituent, my immediate reaction is one of betrayal, and now with more time thinking about it, I hope to articulate my reasons for feeling as such, for that feeling continues to persist.

Leona Alleslev campaigned on the Liberal platform, with the support of the Liberal party. As a voter in her riding, I supported the platform (not all but most) and voted for her. The Liberal party did not have multiple candidates in my riding, so the only way to support the Liberal agenda during a federal election in my riding is to vote for her. The Liberal party could have picked a different candidate with different values, qualities, and beliefs. It would not have mattered. If I wanted to support the federal Liberals, then I have no choice but to vote for her. Therefore it is my interpretation that my vote is in support of the Liberal red and not the Conservatives blue.

I want to repeat what I just outlined. I did not vote for her. I had no choice but to vote for her if I want to support Liberal.

We can have the debate about whether my vote should be based on the merits of the individual representative or the party. The substance or outcome of such a debate is irrelevant because as a qualified voter in Canada, I should be allowed and have the right to vote however I want, and the meaning of my vote resides in my sole interpretation, as I have outlined above.

Her decision to switch to the opposing team is in direct negation of my vote. I am  not saying that she did not have the right. I am simply justifying my feeling of betrayal.

She can justify her actions to our riding, to the media, and to the country. In today’s political climate, words offered by politicians are a simple commodity. Her action to cross the floor not only canceled my vote but reversed my decision in the last election without a discussion or debate. This is the action that I will remember in the next federal election as a proxy for her values. It is irrelevant whether these are her true or real values, but they are the values that she has chosen to project by carrying out such an action.

Leona Alleslev, you will be remembered.

The Road to Harmony

The Basement Replacement

It all started with me spotting an extraordinary deal for a pair of ELAC Surround Bookshelf Home Speaker (UB51-BK) designed by Andrew Jones.

ELAC UB51-BK

I purchased a pair from Amazon and saved more than 20% at the time of purchase. Little did I know that this particular purchase is the first step of many on the road to pursue the best sound system for the buck that I can have in our basement and bedroom.

The ELAC speakers were suppose to replace my old JBL Northbridge (N28) speakers, which were my front speakers for my basement home theater system.

JBL Northbridge N28

At the heart of the home theater system, was the Marantz NR1408 AVR. Unfortunately, this particular AVR did not drive the new ELAC speakers sufficiently. Rated at 50W at 8 Ohms per channel, I found that the sound coming out of the ELAC, rated at 4 Ohms, was somewhat unsatisfying.

NuPrime STA-9

Since the AVR has pre-amp out connections, I started to search for a suitable stereo power amplifier that can output enough juice to drive my new ELAC’s. I settled on the NuPrime STA-9 power amplifier, with a 120W per channel at both 8 and 4 Ohms. The NuPrime and the ELAC’s were an excellent match. The sound was crisp, and the imaging was superb. You can hear the instrument separations and placements clearly through a wide soundstage. The vocals were warm and super comfortable to listen to. Today I am really happy with my basement setup. Unfortunately this new experience cost around $1200, $520 for the ELAC’s and $700 for the NuPrime.

The Bedroom Boom

Now, what should I do with my old JBL N28 speakers? Sell them, throw them out, or repurpose them? Selling them was not an option. A quick search on Kijiji and eBay yielded less than compelling value to dredge oneself through a resell transaction that is worth less than $100. Throwing them out seems like a huge waste on a perfectly good pair of speakers.

Bose Wave Radio/CD

I decided to put them in my bedroom and replace my aging Bose Wave Radio/CD Player. The Bose sounded good but nothing close to the fidelity that I am now use to in both the basement and the living room setup. The JBL N28 are passive speakers so if I want them in my bedroom, I will need to find another stereo amplifier. However, I don’t want to invest in another NuPrime, which seemed excessive and expensive.

Topping TP60

I found a $293.99, 80W per channel amplifier with many praises called Topping TP60. For source, I repurposed my Airport Express that was originally
feeding the Bose and redirected its input into the TP60. This combination gave new life to the N28 speakers.

To benchmark the different setups we were using a Chinese album named,《民歌·蔡琴》. The first song, 被遗忘的时光, is the same song used in the Infernal Affairs (無間道) movie. You can find the album on Apple Music. We had the following versions of this song:

  • Apple Music (Streamed)
  • CD (XRCD) 44.1KHz 16 Bits
  • SACD 192KHz 24 Bits

After much A/B testing, I found the highest SACD fidelity with 192KHz at 24 Bits sounded the best. The differences were not marginal but substantial audible differences could be heard. The Apple Music version sounded almost like mono when compared to the high resolution versions. The female vocal came across more life like and real in the SACD version.

Pivotal Digital

So, what’s the problem? In this new bedroom setup, I simply used a 3.5mm audio jack RCA splitters to connect the Airport Express to the TP60. This first attempt at using the splitter cable uses the internal and inferior DAC.

FiiO D3 DAC

To remedy the solution, I purchased a cheap external FiiO D3 DAC ($35), and used the mini-Toslink connection from the Airport Express. The song sounded better but was not the same as the basement. As it turns out, the Airport Express was limited to 44.1KHz, so I could not experience the hi-fidelity SACD source. When I streamed the SACD version, it just gets down-sampled. What a waste of perfectly good material. We cannot let good music goto waste, so onwards to a solution.

HiFiBerry DAC+ Pro

I needed to replace the Airport Express all together. A podcast that I listened to gave me the idea to explore how I can use my Raspberry Pi as the digital source for music. After much research, I found the combination of Raspberry Pi, HiFiBerry’s DAC+ Pro, and the Volumio software can give me what I wanted.

Raspberry Pi 3 Model B

In summary, the Raspberry Pi with Volumio software acted as my Airport Express replacement, and the HiFiBerry DAC+ Pro add on board eliminated the 44.1KHz limitation. This combination sounded really good.

Topping D30 DAC

Until I tried DSD materials through the stack.

DSD64 (2.8224MHz) and DSD128 (5.6448 MHz) music will play because Volumio will resample the material to 192KHz at 24 Bits, but sometimes it would stutter.
In my pursuit for native DSD capability, I ended up purchasing another external DAC that is capable of playing DSD natively. Since the Topping TP60 was so good, I thought I give the Topping D30 DAC ($175) a go. The inclusion of the D30 replaced the HiFiBerry DAC+ Pro add on board, since the Raspberry Pi can directly connect to the D30 DAC via USB.

Dilvpoetry Tube-01 Buffer Pre-Amp

The final setup is:

  • Raspberry Pi running Volumio to act as my Wireless streamer, rendering music from AirPlay, or from my Plex server acting as a NAS;
  • Raspberry Pi emits the music as digital streamed data via the USB to my D30 DAC;
  • The D30 DAC can now decode music up to 192KHz at 24 Bits and DSD128 natively, and amplifies the signal to pre-amp levels which is then fed to another toy, the Dilvpoetry Tube-01 amp, that buffers the input signal with 6J1 vacuum tubes;
  • The output of the tube amp is then fed to the TP60 that then drives the JBL N28.

Whew! What a journey just to reuse my old pair of JBL N28 speakers. BUT I now have a setup in my bedroom that sounds almost as good as my basement setup. The imaging is not as good, but I am happy with what I have got, a wide stage, warm and realistic vocals, that can play soft jazz to put me to sleep. Harmony!

Update:

The Raspberry Pi has problematic USB drivers which caused crackling sounds with the D30. I had to add the following parameters into the /boot/cmdline.txt file.

    • dwc_otg.speed=1
    • dwc_otg.fiq_split_enable=0

Crackling still happens sometimes, but it is now bearable. Also without the speed parameter, the D30 will only play DSD using DoP at 100% volume. Obviously this was annoying as well.

On the lookout now for an alternate Raspberry Pi that has WiFi and a more robust USB port. Perhaps the ODROID-C2.

Tragic Van Attack in Toronto

Last week we witnessed a horrible event in Toronto. A young man, Alek Minassian rented a van and proceeded to hit pedestrians on Yonge Street between Sheppard and Finch with the explicit intent to cause fatal harm.

I learned of this news at the office and my initial thoughts were, “No it could not be. Not in Toronto. Not in Canada!” As we review the news briefings on Twitter, CBC, Global, CTV, and CNN, it is tragically clear that many innocent people enjoying a beautiful, sunny afternoon on Yonge met an unfortunate fate.

Of course this type of drive-by killing immediately reminds us of the numerous and similar incidents in Western Europe and in the US. I still cannot fathom why any individual would cause harm to strangers who have not displayed any threat or ill intent towards the perpetrator. These hateful behaviours are not compatible with any stable society.

People who wield, advocate and execute such abhorrent beliefs are effectively cancerous to others livelihood. We must combat such cancer with education, empathic communication, and not lash out with ignorant animosity. We need to show them that we can keep our wrath in check, and we can stay vigilant and strong, and move forward, and continue to live life the way we want and not in fear.

I was doubly surprised when Alek’s father turned out to be a former coworker of mine back at Ironside Technologies. I cannot imagine how he feels. The words, “extremely difficult”, is probably a drastic understatement. He is also a victim of the event. I reached out to him and offered whatever support should he requires it.

My condolences to all victims, survivors and others that are horribly touched by the event. Let us all work together and be transparent to our beliefs, and grievances. Let us leverage our empathies so that we can address our disagreements with civilities and compromises. In the end, we can and should ALL GET ALONG!

Facebook Trap

I deactivated my Facebook account on March 23. Here is my experience.

I continue to use messenger without any issues on my iPhone, but trying to use messenger on my computer via the browser eventually forces me to validate my identity with my Facebook account, which will implicitly reactivate my account. I had to consciously avoid doing this on many occasions. This means I can only use messenger on my mobile devices. This sucks.

During the deactivation period, I found using Instagram to be quite satisfying. I would say that a combination of Twitter and Instagram is a better fit for my social media needs than Facebook at the moment but it does have one severe drawback. When I find something of interest on the Internet, I cannot share links with Instagram at least not directly. I ended up sharing those thoughts with Twitter instead, but people on Twitter is not the same on Facebook. Also there are links within the Instagram App itself that will re-enable your Facebook account. I also had to consciously avoid those.

The other major difficulties is the use of my Facebook identity on other sites that I used, for example Strava and CBC, etc. disassociating these accounts from my Facebook account was annoying and most people will probably not tolerate it and simply reactivate their account. I did preserve through this process though and try to isolate my Facebook identity to just Facebook. However I have not found a way to separate Instagram entirely.

Facebook continues to send notifications via email even when you have your account deactivated. This includes messenger when you get a new message. Obviously clicking on these will eventually reactivate the account. Again I avoided doing this for about two weeks until this morning I inadvertently clicked on an email which brought me back to my Mobile Facebook Page. This automatically reactivated my account.

In summary, once you are a member of a social network, trying to leave the platform is extremely difficult. The combination of WhatsApp, Instagram, and Facebook is a perfect trap that is difficult to escape from. You have to sever yourself entirely as an interactive Internet user to really do it. You can still consume from the Internet, but as soon as you like to engage you’ll find yourself being lured into the Facebook trap.

So I am back. I guess I am admitting that currently the benefits out weigh the risk.

Deactivated Facebook

Today I  took the plunge and deactivated my Facebook account. I can still be reached with Facebook messenger, but if you try to look at my Facebook account, it will show that I am no longer there.

I guess the best way to find me online now is here, or on:

I may reactivate my account after a month, but we’ll see.