Internet Health Tools

The Internet is millions of networks interconnected, it is not a thing but rather things that are connected. When I hear a customer or a friend say “My internet is slow or down” generally they look at internet is a thing, product in a single package that should either work or not. But that is kinda like saying “My body is not working”. Reality is the issue can be so many different things.

With Customers and friends alike, I generally take the same approach. Start from the device and work hop by hop service by service backwards. eventually reaching the things call the internet. After I have ruled out the users wifi, copper, jacks, drivers, pc, mac OS and so on, basically everything from the Dmarc in, I will work the local internet carrier network. If the local ISP network seems OK, I will go to the internet core health itself, which is another collection of networks. Level3, ATT and a few others. These core networks are the networks that all the IPS’s use to get to another ISP network. Kinda like a mail package, leaves a house, goes to a mailbox, if the local carrier does their job and picks up the package and delivers it to the local post office, the next step is the package if not destined for another local address will leave the town or city, and make its way over the interstate system or maybe the air, or maybe a ship. Then eventually reach another local postal carrier network, then eventually someones mailbox, then their. home. The Internet as a who works almost exactly like that. Well the tools I need to see if the network transports between the to local postal networks is working, I use the following tools

US Backbone Routes

Build your own Internet Health Report


Twin Cities 2020 Riot Map

When wrong meets wrong. Looking at the map, you can see the majority of the issues are opportunistic. Would much rather see more peaceful protests. The rioting, burning of peoples places of work, eating and getting help not only deters other peaceful protestors, but harms the ability for people who need help to get help. For example the Affordable Housing service building on 29th was burned to the ground. So many examples exist too. We have a real chance to make change and the destruction is making it much harder to make change.

Medical Report

After reading the medical report, the facts from what I see say he died from a heart attack which was induced by the restricted air to the heart and stress from the arrest. Read it you-self and let me know what you think. The less air you have the harder your heart needs to beat. Stress also races the heart. He had almost 20 cuts/scrapes from the arrest. It appears he was also on mind altering drugs, but does not be appear relevant to the death as the chemical limit was not at levels which put health in danger. But again, under the influence of drugs, wouldn’t that also influence your heart rate, especially under drugs?

IoT Technology

Thingfo Article on Transports and Protocols

Useful IoT Transports

  • sigfox @
  • LoRa
  • Z-Wave
  • Wifi
  • Bluetooth


WiFi Chipset Makers

Usefull IoT Protocols

  • MGTT

Reference – AdaFruit and Digikey IoT Thingnfo Video

Powershell Technology

Update Active Directory Users from csv file

 $userUpdate = Import-Csv -Delimiter "," -Path ("c:\FaxNumberUpdate.csv")
$rowCount = 1
foreach($user in $userUpdate){
    Write-Host  ($rowCount.ToString() + ") Update " + $($user.DisplayName) + " to " + $($user.Fax))
    # Find user
    $ADUser = Get-ADUser -Filter "displayname -eq '$($'" 

    if ($ADUser){
        Set-ADUser -Identity $ADUser -Fax $user.fax
        Write-Host  ($rowCount.ToString() + ") Completed Update " + $($ + " to " + $($user.fax))
        Write-Warning ("Failed to update " + $($
    $rowCount = $rowCount + 1

The idea is to have a CSV file with column headers, and powershell reads the CSV file into memory, assigns the memory a label called $userUpdate. Then iterates through the memory label $userUpdate row by row finding a matching AD user (Get-ADUser -Filter) matching the AD value called displayname to the spreadsheet column cell being read with the header named “name”. Its case sensitive. Set-ADUser does the actual update updating the matched $ADUser.