Visual Studio, .NET Core, Amazon AWS CLOUD Development Project, JavaScript Date, Multiple Time Zones – Using Docker Desktop Locally To Simulate Cloud GMT UTC +0000 Deployment (Fixes Date Zone Shift)

Like many in larger companies, my current project is embracing the use of a cloud service to cut costs. As a natural consequence, projects which will make use of a cloud service will need to keep several new considerations at the forefront of design. This project is no exception, as our system will need to use a cross-platform run time to utilize both windows and Linux containers, will be used across 4 different time-zones (and allow for overriding browser display/input of dates for any one of those four) and must support multiple browsers on multiple devices (laptops and tablets).

I wrote this article to pass along my experience in testing locally our back-end API. As our back-end API (ASP.Net Core) and database (MySQL) will both be running in the cloud via Amazon AWS containers (whose system time will be UTC-0), running our API locally was problematic as dates would shift according to their JavaScript Date Offset, where this would NOT happen when hosted in an environment at UTC-0. Further, it was impractical to set my local system’s region to UTC-0 which would itself introduce a host of new problems such as errors/warnings when connecting to our cloud GIT repository.

The solution is to run a VM OR use a container-system such as Docker. My client has the option for developers to use their licensed Docker Desktop product, which also has integration into Visual Studio 2019, so this was the path I chose.

Naturally, you will want to install Docker Desktop to your machine first. You can install the free version of Docker from this link:
https://www.docker.com/products/docker-desktop
You will then need to install the Windows Subsystem for Linux Containers (WSL 2) for Windows which is a separate installation you get from Microsoft here:
https://docs.microsoft.com/en-us/windows/wsl/install#update-to-wsl-2

With Docker Desktop and the Linux Containers for Windows installed, you can now add Docker as a build-and-deploy option to your solution. Microsoft has a document on how to install Docker Support into your Visual Studio .Net CORE project:
https://docs.microsoft.com/en-us/dotnet/architecture/containerized-lifecycle/design-develop-containerized-apps/build-aspnet-core-applications-linux-containers-aks-kubernetes

The process is pretty simple and basically entails navigating Visual Studio’s Solution Explorer to the main project of your solution, right-clicking it to trigger the context menu and selecting ADD > Docker Support:

Adding Docker Support to an Existing ASP.Net CORE Main Project is as Simple as a Few Clicks

You will now see Docker as a selectable option along with IIS for build/run:

Visual Studio RUN Toolbar Option Will Now Include Docker Option

There is still a little more you will need to do in order for your Docker Container to run correctly. By default, your container will NOT have network access. Also by default, your Docker Container will dynamically assign a random external host port each time it is launched and map it to itself (example 45727:443 for SSL). Additionally, the automatic browser launch will be directed to the root URL of your API which usually provides no return value to determine if it successfully connected and is running properly. I will show you how to fix all three of these issues.

If your container image needs to access any detached network resource (not integrated/local) such as a standalone database or standalone API, you will need your container to have access to the host network. This is accomplished by editing the newly added Docker section of your application’s LAUNCHER.JSON file:

Many Options Exist For Configuring How Visual Studio Will Run Your Image In A Docker Container

For our purposes, all three aforementioned issues (network access, port mapping, browser launch url) can be resolved right here in this configuration file:

  1. To connect your container to the network for external DB access, add “–net=host” to the commandLineArgs entry
  2. To map a fixed host listening port(s) to your container, add those options and ports to their respective entries: “sslPort”: 44354 [and] “httpPort”:44355
  3. To direct the initial browser launch to a useful URL that provides feedback of successful run, simply add the additional route to the end of the launchURL entry:
    “launchUrl”: “{Scheme}://{ServiceHost}:{ServicePort}/YourRoute/YourPrameter

With these settings in place, your Visual Studio ASP.Net CORE project should now successfully launch your code in a container with its own default UTC+0 system date/time allowing for true replicated code testing!


Posted in Uncategorized | Tagged , , , , , , , , , , , , , | Leave a comment

Fuse Locations AstroAI Digital Multimeter 10000 Counts TRMS Auto-Ranging Color LCD Screen F1 mA F2 Amp

I Recently purchased the AstroAI True RMS 10000 Smart Digital Multi-meter and the manual did not specify which fuse goes into which location – fuse F1 being on the left and fuse F2 on the right. I had hastily and incorrectly assumed both fuses were the same and took both out to test them for continuity only to find out they were different and that I now had no idea which went where.

After some research, I found that the 600-milliamp fuse goes on the left side in F1 and the 10amp fuse goes in the right side F2 position. You’ll want to make this notation in your manual on the appropriate page.

Link for purchasing the Fuse1 600milliamp fuses:
https://smile.amazon.com/gp/product/B00LQP5BRU/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

You’re welcome!

Posted in Uncategorized | Tagged , , , , , , , | Leave a comment

Vicrtonix Swissbit Flash/Thumb Drive Pocket Knife/Tool – Original Knife and New Knifeless Jetsetter (Includes Instructions On How To Upgrade Original 1GB 2GB 4GB Swissbit To The Newer 16GB Flash Drive)

I purchased my Victronix Swissbit knife quite some time ago – seems like it was around 2000. It has been as reliable as we’ve come to expect for 20+ years with even the flashlight and pen still working to this day.

However, 1GB of flash memory has expectedly become outdated in the ultra-fast pace of technology. I started looking for ways to maintain what I feel like is the world’s most perfect pocket-knife.

I saw that Walmart was selling the newer Victronix Jetsetter which has a 16GB flash drive with an incredible engineering design of both a USB-A 3.0 (the legacy rectangular style) and the newest USB-C 3.1 connector.

As I had hoped, upon purchasing and receiving the newer Jetsetter, the USB tool shared the same removable design as the older Swissbit! I immediately tried the swap and VOILA – IT WORKS!

Posted in Computers and Internet, Electronics, Mobile Electronics | Tagged , , , , , , , , , , , | Leave a comment

Strange Deposit Transaction Showed Up On Bank Account 8/17/21 Labeled ‘GOOGLESETT PAToBank 081421 640888’ For $2.15

A strange deposit transaction showed up on my online banking account today:

08/17/21GOOGLESETT PAToBank 081421 640888$2.15
Online Banking Pending Transaction



Turns out this is from the Google Plus Class Action Lawsuit settlement: https://www.googleplusdatalitigation.com/

“Each of the 1,720,029 Settlement Class Members who submitted valid claims will be entitled to a settlement award payment of $2.15.”

So don’t panic. Instead you should start planning that wonderful vacation you’ve always dreamed of! You know – to the convenience store to buy yourself a Yoohoo! 🀣

Posted in Computers and Internet, News and politics, Personal Finance | Tagged , | 4 Comments

Wyze Cam Pan Stopped Working After Firmware Upgrade – How To Manually Downgrade The Firmware And Restore Function (with UPDATE 8/6/2021)

See the source image

I employ 3 Wyze Cam Pan devices in my home security system. I make sure to upgrade the firmware every opportunity and notification I get.

Recently Wyze released firmware 4.10.7.798 (July 21, 2021) which I promptly applied. Two out of my three devices upgraded perfectly and continued on their merry way. Unfortunately one device took the firmware upgrade, rebooted and connected to the network properly, but I was unable to connect to it for live or archived video streaming.

It turns out I had to manually re-apply the original previous firmware. I was not aware we could even do this, but we can. Instructions for obtaining the previous firmware versions are on the Wyze website:
Release Notes & Firmware – Wyze

With your desired firmware downloaded, you will need a MicroSD card to (a) copy the firmware .bin file to the root, and (b) insert into your Wyze camera to install.

The process for manually applying a firmware update to your camera is also on the Wyze website: How to flash your Wyze Cam firmware manually – Wyze

For my Wyze Cam Pan, I had to download the firmware .ZIP file, extract the internal single .BIN file to the root of my MicroSD card, rename the .BIN file demo.bin, then place the card into the unplugged camera, press and hold the setup tab on the bottom of the camera while plugging in the camera, watch for the light to turn blue indicating a firmware flash is in progress – took only 3-6 seconds and then release the button.

About 3-4 minutes later, the camera rebooted itself and came back online under the original firmware and was working once again! I had to know if it was just a bad flash for the latest firmware that caused the issue, so I tried once again to upgrade to the latest firmware, and sadly it failed once again. So clearly this firmware does not work on all devices. 😦

UPDATE! (8/6/2021)

I can only assume Wyze became aware that their firmware update was failing on approximately 1 of 3 devices (if my anecdotal experience holds elsewhere), as a firmware downgrade was seemingly automatically pushed/triggered on all my cams. My daughter mentioned earlier in the day that my camera rebooted and went through its power-up pan-range detection where it spins around left and right – it scared the dog, which had her laughing and trying to calm him down.
As a result, I connected to my cams and was once again notified on each individual cam – including the two I had already updated to the latest – that I was on previous firmware and the same 4.10.7.798 (July 21, 2021) firmware update was available.
I decided to give it a try once again, and amazingly this firmware (new delivery/build?!) works on ALL of my Wyze Cam Pan devices now.

Posted in Computers and Internet, Electronics | 1 Comment

How To Replace the Battery in the Microsoft Bluetooth Universal Mobile Keyboard FBA_P2Z / P2Z-00001 / P2Z-00002 / P2Z-00029 (Out Of Production)

All credit to the original author.
Battery can be purchased here:
https://www.aliexpress.com/item/1005002594496730.html?spm=a2g0s.imconversation.0.0.30e73e5fcOJWHc

Battery spec:
Model name: CA213060 PACK
Rating: 3.7vDC 300mAh 1.11Wh
Maximum charging voltage: 4.2VDC
2mm thick by 30mm wide by 65mm long
3.7V polymer lithium battery 300mAh with protection board

See the walk-through video here:
https://ruclip.com/video/O6YvaD8r0WE/how-to-replace-the-battery-of-microsoft-universal-mobile-keyboard.html

Posted in Computers and Internet, Electronics, Mobile Electronics | Tagged , , , , , | Leave a comment

How To Unlock And Access Your Files On Cell Phone With A Broken Display Screen

I recently had a dilemma where my Samsung Galaxy S10 Plus had a broken screen and I could not unlock it or even power it off. Naturally I wanted to get my data off the phone and reset it before selling it or donating it to a repair center.

I’m happy to report – specifically for Samsung Phones, but possibly for others too – there is a solution!

Samsung has a feature called DeX built into their phones which allows you to plug a monitor and keyboard/mouse into it via the USB charging port! See demo and explanation here:
https://insights.samsung.com/2021/01/14/the-beginners-guide-to-samsung-dex-6/
Other phones may at least benefit from being unlocked by use of a keyboard which Android supports natively across nearly all their smartphones.

QGeeM 7 in 1 USB C Hub HDMI Adapter, Type C Hub to HDMI 4k, 3 USB 3.0 Ports,100W Power Delivery, SD/TF Card Readers Compatible with MacBook Pro 13/15(Thunderbolt 3), 2018 Mac Air, Chromebook, USB C Adapter


I ordered this QGeeM 7-in-1 USB C Hub to HDMI 4k, 3 USB 3.0 Ports adapter…
https://smile.amazon.com/gp/product/B07QXMNF1X/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
…which accomodates ALL the aforementioned required accessories, essentially turning my phone into a desktop computer, and it worked PERFECTLY! I was able to see the lock-screen on my monitor, enter the passcode from the keyboard and navigate the entire phone using my mouse. Brilliant!

See the source image
Samsung Dex Turns Your Phone Into A Desktop Computer With Monitor, Keyboard and Mouse – Phone Screen Not Required!


The only thing this approach does NOT allow one to do is to hard (factory) reset the phone (Dex blocks it by design), but I was able to recover my data by pushing it up into Google’s DRIVE platform, which gives everyone with a Google account 1 terabyte of storage for free.

THANK YOU Samsung, for such a BRILLIANT feature on your most excellent smartphones!

Posted in Computers and Internet, Electronics, Mobile Electronics | Tagged , , | Leave a comment

ChartJS And Angular – Solution For Chart Processing Clicks/Click Event On Individual Data Segments

It is a known issue that ChartJS provides native hooks for processing clicks upon Legend items, but does not easily provide the same for a user clicking upon segments in the chart itself – slices in the pie chart, for example.

There are a plethora of solutions offered upon Stack Exchange for doing this natively in Javascript, but I wanted a better solution that primarily leverages the Angular TypeScript code instead,

I managed to create that solution, and I offer it here for the masses. See my answer here on stack overflow (carlupq) or see embedded solution below:
https://stackoverflow.com/questions/65387729/chartjs-events-in-angular/65728003#65728003

TEMPLATE

(I added #chartCanvas and (click) event)

<div style="display: block">
<canvas #chartCanvas (click)="onChartClick($event)" id="radarChart" baseChart [datasets]="radarChartData" [labels]="radarChartLabels"
    [chartType]="radarChartType" [options]="radarChartOptions"></canvas>

Β COMPONENT CODE

Add to your imports:

import { Chart, ChartElement } from 'chart.js';

Add to your class variables:

@ViewChild('chartCanvas') myChart;

Your event handler:

onChartClick(event) {
  let ActivePoints: ChartElement[] = this.myChart.getElementsAtEvent(event);
  // to do - check ActivePoints for undefined, return if true
  let idx = ActivePoints[0]['_index'];
  let lbl: string = this.myChart.data.labels[idx];
  let dat = this.myChart.data.datasets[0].data[idx];
  console.log(lbl,dat);
}
Posted in Computers and Internet | Tagged , , , , , , , | Leave a comment

Windows Remote Desktop Client / Terminal Failing To (stay or maintain) Connect On Windows 10 – Fixes And A Free & Open-Source Alternative

There is a well known and persistent issue with Windows 10 terminal aka Remote Desktop client. The client software runs, allows you to initiate a connection, but either fails to connect or drops the connection – sometimes right away or shortly after.

After many attempts to fix this using suggestions from various sources on the internet – turning off smart card and/or printers option for the connection, etcetera – none of these resolves the problem across the board for all users.

There is a very simple free, and in my opinion, FAR more versatile and robust alternative client available.

Meet mRemoteNG! https://www.mremoteng.org/

mRemoteNG Β is an open source, tabbed, multi-protocol, remote connections manager. It allows you to view all of your remote connections (Windows, Unix, Mac, SSH, other) in a tabbed interface. mRemoteNG is free, open-source, versatile, easy to install and easy to use. In my opinion, mRemoteNG is FAR superior to the default client included in Windows, so it is an easy switch to make and to keep in your ongoing toolkit.

Posted in Computers and Internet | Tagged , , , , , , , | Leave a comment

Step By Step Instructions For How To Upgrade – Expand The Netgear ReadyNAS 102 2-Bay Marvell ARMADA 370 1.20 GHz 6 TB HDD (2 x 3 TB) 512 MB RAM RAID Supported 3 x USB Ports

It took a long time (7 years to be precise) for my Netgear ReadyNAS network storage 3GB to be permanently filled, but it has happened and has left me scrambling to expand it.

Here’s what I did to quickly and effectively expand the storage with SSD as opposed to mechanical drives:

1 – purchased 2 ADATA SU800 1TB M.2 2280 SATA 3D NAND Internal SSD (ASU800NS38-1TT-C) at $100/each.
https://smile.amazon.com/gp/product/B01MR7FVM9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

2 – purchased 2 FIDECO USB 3.1 Gen 2 to M.2 NGFF SATA SSD Enclosure Adapter, External SATA Based M.2 Solid State Hard Drive Enclosure Reader for M.2 2230 2242 2260 2280 SSD with B Key/B+M Key (SATA Based) at $12/each.
https://smile.amazon.com/gp/product/B07W4YMVQJ/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

3 – Assemble each of the two external enclosures with one SSD and proceed to format each SSD to NTFS, leaving the SSD as a maxed-capacity single active partition with no files.



4 – Add each of the SSDs to your ReadyNAS 102 being careful to plug them into the top two USB3 ports (one is USB 2 – obviously we don’t want to use that one).



5 – Now we need to allow anonymous access for your network-attached streaming and DLNA players (your smartTVs and/or VLC on FireTV, Firestick or Windows for example) to access these drives via SMB without having to log in.
Go into your ReadyNAS 102’s web-based admin by browsing from a machine on your network to http://nas102. From the SHARES button on the main page, you should now see two USB volumes present under the MEDIA navigation node named USB_HDD_# where # is the number sequence of the USB volumes that have ever been plugged in. If this is the first, it will be USB_HDD_1 and USB_HDD_2.
Hover your mouse over the EVERYONE text at the right for the volume under PERMISSIONS column. This will make the + icon (Add Permissions dialog) appear – click it to pop up the Permissions dialog. Add the Anonymous access, then click APPLY. Do this for each volume.



That’s it! You’ve successfully expanded your ReadyNAS 102’s storage with an inexpensive high-speed solution! (yeah – that’s about 3 years worth of dust πŸ˜› )

Posted in Computers and Internet, Electronics | Tagged , , , , , , , | Leave a comment