<!DOCTYPE >
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!-- Consider adding a manifest.appcache: h5bp.com/d/Offline -->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8"></meta>
<!-- Use the .htaccess and remove these lines to avoid edge case issues. More info: h5bp.com/i/378 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></meta>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>




<title>TechSparx</title>





 
 
 
 













<meta name="pagename" content="TechSparx"></meta>











<meta name="DC.title" content="TechSparx"></meta>














<!-- OpenGraph Meta Tags -->

<meta name="og:title" content="TechSparx"></meta>

<meta name="og:url" content="https://techsparx.com/index.html"></meta>


































<link rel="canonical" href="https://techsparx.com/index.html"></link>


<link rel="sitemap" type="application/xml" href="sitemap.xml" title="Sitemap"></link>









<link rel="stylesheet" type="text/css" href="vendor/@akashacms/diagrams-maker/style.css"></link><link rel="stylesheet" type="text/css" href="akasha/epub-website/style.css"></link><link rel="stylesheet" type="text/css" href="vendor/bootstrap/css/bootstrap.min.css"></link><link rel="stylesheet" type="text/css" href="vendor/bootswatch-litera.css"></link><link rel="stylesheet" type="text/css" href="style.css"></link><link rel="stylesheet" type="text/css" href="vendor/highlight.js/styles/tomorrow-night-blue.css"></link><link rel="stylesheet" type="text/css" href="vendor/fontawesome-free/css/all.min.css"></link>



<link rel="alternate" type="application/rss+xml" href="ALL.xml"></link>
<link rel="alternate" type="application/rss+xml" href="blog/rss.xml"></link>
<link rel="alternate" type="application/rss+xml" href="doctor-who/rss.xml"></link>
<link rel="alternate" type="application/rss+xml" href="nodejs/rss.xml"></link>

<!-- Propeller Ads -->
<meta name="propeller" content="0e6c4d6a2c29fc6abe531d0387b45dd5"></meta>


<meta name="og:image" content="https://techsparx.com/homelab/services/img/affordable-artificial-intelligence-workstations.png"></meta><meta name="og:image" content="https://techsparx.com/linux/performance/img/ubuntu-OOM-killer.png"></meta><meta name="og:image" content="https://techsparx.com/homelab/services/img/ollama-in-docker-homelab.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/ai/img/Hallucinations.png"></meta><meta name="og:image" content="https://techsparx.com/homelab/img/simple-homelab-architecture-hero.png"></meta><meta name="og:image" content="https://techsparx.com/homelab/reverse-proxy/img/caddy-docker-homelab.png"></meta><meta name="og:image" content="https://techsparx.com/homelab/dns/img/easy-dynamic-dns.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/img/Docker_logo_horizontal.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/self-hosting/img/nextcloud-docker.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/git/img/Git-Logo-2Color.png"></meta><meta name="og:image" content="https://techsparx.com/linux/routers/img/wifi-calling-from-cell-phone.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/oauth2/img/oauth2-client-credential-flow-ory-hydra-openAPI-node.png"></meta><meta name="og:image" content="https://techsparx.com/privacy/google/img/google-analytics-1000-usd.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/internals/img/exploring-docker-image-filesystem.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/travel/img/wifi-calling-overseas.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/own-data/contacts/img/applications-access-your-contacts-list.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/own-data/contacts/img/direct-import-export-contacts.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/travel/img/prepare-to-travel.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/own-data/contacts/img/keep-our-data-out-of-the-clutches-of-the-clouds.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/travel/identity/img/maintain-bank-accounts-abroad.png"></meta><meta name="og:image" content="https://techsparx.com/linux/filesystems/img/mount-remote-filesystems-ssh-sftp.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/own-data/contacts/img/synchronize-contacts-nextcloud.png"></meta><meta name="og:image" content="https://techsparx.com/linux/filesystems/img/mount-nextcloud-webdav.png"></meta><meta name="og:image" content="https://techsparx.com/linux/filesystems/img/s3-hero-image.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/self-hosting/img/dockge-logo.png"></meta><meta name="og:image" content="https://techsparx.com/linux/multipass/img/multipass-logo.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/img/typescript-types-data-validation.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/mongodb/img/document-identifiers-integer-sequences.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/travel/identity/img/sd-traveler-w-traveling-mailbox.png"></meta><meta name="og:image" content="https://techsparx.com/linux/ubuntu/img/ubuntu-read-apfs-drives.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/podman/img/FAIL.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/img/TypeScript-benefits.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2022-season/img/near-death-doctor-who.png"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2023-season/img/new-doctor-who-logo.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/mqtt/img/mqtt-ssl-tls.png"></meta><meta name="og:image" content="https://techsparx.com/linux/tools/img/barrier-dissolve.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/mqtt/img/mqtt-install.png"></meta><meta name="og:image" content="https://techsparx.com/linux/photography/img/digital-cameras-linux.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/content-creators/img/demonetization-information-space.png"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/virtual-mailboxes/img/usps-1583-addresses.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/testing/img/nodetest-framework.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/datastore/img/protocol-buffers.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/bun/img/test-Bun-Node.js-compatibility-faster-execution.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/esnext/img/mocha-bad-errors.png"></meta><meta name="og:image" content="https://techsparx.com/linux-sbc/raspberry-pi/img/rpi4-power-limits.png"></meta><meta name="og:image" content="https://techsparx.com/blogging/video/img/using-smart-phone-webcam-OBS.png"></meta><meta name="og:image" content="https://techsparx.com/linux-sbc/raspberry-pi/img/rpi4-multi-drives.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/tutorials/img/open-source-search.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/tutorials/img/DMARC.png"></meta><meta name="og:image" content="https://techsparx.com/linux-sbc/raspberry-pi/img/WiFi-Router-Raspberry-Pi-RaspAP.png"></meta><meta name="og:image" content="https://techsparx.com/linux-sbc/raspberry-pi/img/pi4-WiFi-Router-CLI-tools.png"></meta><meta name="og:image" content="https://techsparx.com/linux-sbc/raspberry-pi/img/raspberry-pi-openwrt.png"></meta><meta name="og:image" content="https://techsparx.com/linux-sbc/raspberry-pi/img/raspberry-pi-usb-boot.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/webapi/img/webhooks-RESThooks.png"></meta><meta name="og:image" content="https://techsparx.com/web-marketing/seo/img/indexnow.png"></meta><meta name="og:image" content="https://techsparx.com/energy-system/openadr/img/openadr-introduction.png"></meta><meta name="og:image" content="https://techsparx.com/energy-system/openadr/img/openleadr-development.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/img/data-validation.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/openapi/img/implementing-servers.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/openapi/img/swagger-editor-online.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/openapi/img/petstore-spring-ui.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/self-hosting/img/inexpensive-self-hosting.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/international/img/international-news.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2022-season/img/sea-devils.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/img/using-typedoc.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/runtime-data-validation.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/news/2022/img/TypeScript-like-types.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/esnext/img/http-import.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/parameter-decorators.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/hybrid-decorators.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/reflection-metadata-typescript.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/news/2022/img/express-beta-1.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/method-decorators.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/accessor-decorators.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/property-decorators.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/class-decorators.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/typescript/decorators/img/Decorators-for-TypeScript.png"></meta><meta name="og:image" content="https://techsparx.com/img/typescript-nodejs-logo.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/doctor-13/img/jodi-leaving.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/install/img/node-js-package-versions.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/companions/peri/img/peri-brown.png"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/doctor-14/img/tennant-returns.png"></meta><meta name="og:image" content="https://techsparx.com/linux/tools/img/flatpaklogo.jpg"></meta><meta name="og:image" content="https://techsparx.com/blogging/ai/img/robotic-writing.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2022-season/img/yaz-crying-over-Doctor.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/self-hosting/img/self-host-own-services.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/security/img/adverts-access-camera.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/tools/img/git-submodules-nodejs-packages.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/06-avoiding-life-memories.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/web/img/XML.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/06-passenger-form-saves.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/05-squandered-cliff-hangers.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/05-new-unit-timeline.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/05-serpent.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/season-13-dates.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/04-great-reset.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/unit-returns.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/big-finish/news/2021/img/unit-returns.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/kate-stewart.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2022-season/img/01-teaser-image.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2022-season/img/jodi-doctor.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/03-who-hell-are-you.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/img/time-corridor-sorta.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/graphics/img/reading-image-metdata.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/03-seige-atropos.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/02-sontaran-knight.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2021/10/img/COVID-19-origin.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2021/10/img/MIT_Covid-Sensor-02-PRESS.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/01-flux.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/docker-desktop/img/running-wo-docker-desktop.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/docker-desktop/img/docker-end-free.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/img/es-2015-16-17-promises-generators-and-async-await-2-1000.jpg"></meta><meta name="og:image" content="https://techsparx.com/robotics/cyborgs/img/cyborg-beetle.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/img/nodejs-dark.png"></meta><meta name="og:image" content="https://techsparx.com/news/2021/10/img/truth-social-front-page.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/official-trailer.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/howto/img/uncaught-errors.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/season-13-teaser.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/blog/img/rtd-show-runner.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/dwoonline-spaceship-liverpool.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/make-money-online/img/serpclix-logo.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/voting/img/facebook-voter-registration.jpg"></meta><meta name="og:image" content="https://techsparx.com/blog/2021/09/img/matrix-trailer.jpg"></meta><meta name="og:image" content="https://techsparx.com/blog/2021/09/img/mexico-lights.jpg"></meta><meta name="og:image" content="https://techsparx.com/blog/2021/09/img/smart-phone-app-tracking.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/voting/img/digital-identifiers-paper-ballots.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/content-creators/img/medium-writers-destiny.jpg"></meta><meta name="og:image" content="https://techsparx.com/computer-hardware/storage/img/hard-drive-cage-with-fan.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/money-making-scams/img/upwork-scam-alert.jpg"></meta><meta name="og:image" content="https://techsparx.com/lifestyle/content-creators/img/Content-Creators-Platforms.jpg"></meta><meta name="og:image" content="https://techsparx.com/social-media-warfare/fake-news/img/conservative-fake-news.jpg"></meta><meta name="og:image" content="https://techsparx.com/ufo-uap/usa/2021/img/pentagon-UFOUAP-report.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2021/06/img/covid-19.jpg"></meta><meta name="og:image" content="https://techsparx.com/ufo-uap/usa/2021/img/defense-dept-report-expect-denial.jpg"></meta><meta name="og:image" content="https://techsparx.com/ufo-uap/canada/img/Canada-UFOUAP-reporting-system.jpg"></meta><meta name="og:image" content="https://techsparx.com/computer-hardware/video/img/P1000838.JPG"></meta><meta name="og:image" content="https://techsparx.com/nodejs/async/img/parallel-tasks.jpg"></meta><meta name="og:image" content="https://techsparx.com/photography/infrared/img/P1040908.JPG"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/john-bishop-dan.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/big-finish/news/2021/img/ecclestone.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2021/04/img/java-compatibility-matters.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/big-finish/news/2021/img/ecleston-ravagers.jpg"></meta><meta name="og:image" content="https://techsparx.com/computer-hardware/desktop/img/intel-nuc-closeup.JPG"></meta><meta name="og:image" content="https://techsparx.com/img/logo-mysql-mysql.png"></meta><meta name="og:image" content="https://techsparx.com/img/MongoDB_Logo_FullColorBlack.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/img/docker-wordpress.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/img/docker-compose-mysql.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/img/docker-wp-php-mysql.jpg"></meta><meta name="og:image" content="https://techsparx.com/software-development/docker/docker-ecs/first-look/img/docker-aws-ecs.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2018-season/img/p05tyrgh.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2021-season/img/yaz-fan-rage.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/2020-season/img/timeless-children/p084qvqz.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2020/10/img/fake-trump-news.jpg"></meta><meta name="og:image" content="https://techsparx.com/doctor-who/blog/img/lonely-assassins.png"></meta><meta name="og:image" content="https://techsparx.com/blog/2020/09/img/vaccine-hoax-beast.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/docker/img/node-js-docker-aws.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/img/nodejs-npm.jpg"></meta><meta name="og:image" content="https://techsparx.com/nodejs/examples/todo-bootstrap/img/todo-application.jpg"></meta><meta name="og:image" content="https://techsparx.com/img/Bootstrap-v5-new-logo.png"></meta><meta name="og:image" content="https://techsparx.com/nodejs/img/sequelize-logo.png"></meta><meta name="og:image" content="https://techsparx.com/privacy/license-plates/img/flock-safety.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2020/08/img/h9-usps-confirms-removal-public-mailboxes-oregon-cities.jpg"></meta><meta name="og:image" content="https://techsparx.com/img/terraform-logo.png"></meta><meta name="og:image" content="https://techsparx.com/software-development/aws/img/Amazon_Web_Services_logo_AWS.png"></meta><meta name="og:image" content="https://techsparx.com/news/2020/07/img/covid-19.jpg"></meta><meta name="og:image" content="https://techsparx.com/news/2020/07/img/covid-filter-720.png"></meta><meta name="og:image" content="https://techsparx.com/blog/2019/02/img/youtube-demonitization.jpg"></meta><meta name="og:image" content="https://techsparx.com/imgz/udemy/39197_1387.png"></meta><meta name="og:image" content="https://techsparx.com/imgz/udemy/39197_7119.png"></meta><meta name="og:image" content="https://techsparx.com/imgz/a2hosting/468x60.jpg"></meta><meta name="og:image" content="https://techsparx.com/imgz/a2hosting/1d7c1fc2.png"></meta></head>
<body>

<div class="container-fluid" role="main">
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top" role="navigation">
    <a class="navbar-brand" href="index.html">
      <img style="height: 50px;" id="site-logo-image" src="logo.jpg" title="TechSparx News"></img>
    </a>

    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#techsparx-navbar-collapse-1" aria-controls="techsparx-navbar-collapse-1" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="techsparx-navbar-collapse-1">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Blog <span class="caret"></span></a>
          <div class="dropdown-menu">
            <a class="dropdown-item" href="blog/index.html">News</a>
            <a class="dropdown-item" href="doctor-who/index.html">Doctor Who</a>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Computers <span class="caret"></span></a>
          <div class="dropdown-menu">
            <a class="dropdown-item" href="homelab/index.html">Homelab self-hosted services</a>
            <a class="dropdown-item" href="chromebooks/index.html">Chromebooks</a>
            <a class="dropdown-item" href="computer-hardware/index.html">Hardware</a>
            <a class="dropdown-item" href="computer-hardware/apple/index.html">Apple</a>
            <a class="dropdown-item" href="computer-hardware/arduino/index.html">Arduino</a>
            <a class="dropdown-item" href="linux-sbc/index.html">Linux SBC's</a>
            <a class="dropdown-item" href="linux/index.html">Linux</a>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Privacy <span class="caret"></span></a>
          <div class="dropdown-menu">
            <a class="dropdown-item" href="social-media-warfare/index.html">Social Media Warfare</a>
            <a class="dropdown-item" href="spying/index.html">Spying</a>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Software Development <span class="caret"></span></a>
          <div class="dropdown-menu">
            <a class="dropdown-item" href="software-development/spring/index.html">Spring</a>
            <a class="dropdown-item" href="software-development/docker/index.html">Docker</a>
            <a class="dropdown-item" href="software-development/aws/index.html">AWS</a>
            <a class="dropdown-item" href="software-development/serverless-computing/index.html">Serverless</a>
            <a class="dropdown-item" href="nodejs/index.html">Node.js</a>
          </div>
        </li>
        <li class="nav-item dropdown">
          <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Catalog <span class="caret"></span></a>
          <div class="dropdown-menu">
            <a class="dropdown-item" href="nodejs/learning/products.html">Learn Node.js Programming</a>
            <a class="dropdown-item" href="software-development/docker/learning.html">Learn Docker</a>
            <a class="dropdown-item" href="computer-hardware/arduino/products.html">Arduino</a>
            <a class="dropdown-item" href="linux-sbc/raspberry-pi/products.html">Raspberry Pi</a>
          </div>
        </li>
        <li>
        <a href="about.html" class="nav-link">About</a>
        </li>
      </ul>
      <form method="get" id="cse-search-box" class="form-inline my-2 my-lg-0" role="search" action="https://duckduckgo.com/">
        <input type="hidden" name="sites" value="techsparx.com"></input>
        <input type="hidden" name="k7" value="#ffffff"></input>
        <input type="hidden" name="k8" value="#222222"></input>
        <input type="hidden" name="k9" value="#00278e"></input>
        <input type="hidden" name="kx" value="#20692b"></input>
        <input type="hidden" name="kj" value="#fafafa"></input>
        <input type="hidden" name="kt" value="p"></input>
        <div class="form-group">
            <input type="text" name="q" placeholder="Search TechSparx.com" aria-label="Search techsparx.com on DuckDuckGo"></input>
        </div>
        <button class="btn btn-outline-success mb-2" type="submit">Search</button>
     </form>

      <!-- <form action="//www.google.com" id="cse-search-box" class="form-inline my-2 my-lg-0" role="search">
        <input type="hidden" name="cx" value="partner-pub-2401070691062219:9544629023" />
        <input type="hidden" name="ie" value="UTF-8" />
        <div class="form-group">
          <input type="text" class="form-control" placeholder="Search" name="q"  />
        </div>
        <button type="submit" name="sa" value="Search" class="btn btn-outline-success mb-2">Submit</button>
        <script type="text/javascript" src="//www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script>
      </form> -->

    </div>

</nav>


<div class="row">
  <!-- include our document's content -->
  <article class="col-md-9">
    <div class="mx-auto">
        <div id="ezoic-pub-ad-placeholder-102">
        </div>
    </div>
    <div class="article-body">
      <div class="row" id="home-page-blog-river">
    <div class="col-sm-12">
    <div class="blog-river">
    
        <div class="blog-item">
            
                <a href="homelab/services/ollama-ryzen-docker.html">
                    <h3>Building affordable homelab Local AI workstations with AMD Ryzen, Ollama, and Docker</h3>
                    <img class="techsparx-tagpage-thumb" src="homelab/services/img/affordable-artificial-intelligence-workstations.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/performance/linux-no-crash.html">
                    <h3>Preventing Ubuntu's Out of Memory killer from crashing your login environment</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/performance/img/ubuntu-OOM-killer.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="homelab/services/ollama.html">
                    <h3>Self-hosting Ollama, in Docker, to support Local AI features in other Docker services</h3>
                    <img class="techsparx-tagpage-thumb" src="homelab/services/img/ollama-in-docker-homelab.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/ai/claude-hallucinates.html">
                    <h3>The Hidden Danger of Confident AI: When Wrong Feels Right</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/ai/img/Hallucinations.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="homelab/applications/immich.html">
                    <h3>Self-hosted photo gallery and backup using Immich in your homelab</h3>
                    <img class="techsparx-tagpage-thumb" src="homelab/img/simple-homelab-architecture-hero.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="homelab/architecture.html">
                    <h3>Homelab architecture, how to safely expose home-based services to the Internet</h3>
                    <img class="techsparx-tagpage-thumb" src="homelab/img/simple-homelab-architecture-hero.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="homelab/reverse-proxy/caddy.html">
                    <h3>Installing Caddy as a homelab reverse proxy, exposing home-based services to the Internet</h3>
                    <img class="techsparx-tagpage-thumb" src="homelab/reverse-proxy/img/caddy-docker-homelab.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="homelab/dns/dynamic-dns.html">
                    <h3>Use DynamicDNS to give your homelab services on your home internet connection a domain name</h3>
                    <img class="techsparx-tagpage-thumb" src="homelab/dns/img/easy-dynamic-dns.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/self-hosting/docker-setup.html">
                    <h3>Setting up Docker for an easy-to-configure self-hosting environment</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/self-hosting/nextcloud.html">
                    <h3>How to install NextCloud 30.x using Docker Compose: a comprehensive guide</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/self-hosting/img/nextcloud-docker.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/git/update-branch-from-main.html">
                    <h3>How to update a Git branch from the main or master branch</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/git/img/Git-Logo-2Color.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/routers/wifi-calling.html">
                    <h3>Enabling WiFi Calling using a GL-SFT1200 (Opal) WiFi Travel Router</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/routers/img/wifi-calling-from-cell-phone.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/tutorials/multi-stage-multi-platform.html">
                    <h3>Multi-stage Docker image builds, minimizing final image size, supporting multi-architecture containers</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/oauth2/oauth2-client-credentials-ory.html">
                    <h3>Implementing OAuth2 Client Credentials Flow using self-hosted Ory tools</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/oauth2/img/oauth2-client-credential-flow-ory-hydra-openAPI-node.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="privacy/google/analytics-data-worth.html">
                    <h3>Google willing to spend $1000 to get me to restart using Google Analytics</h3>
                    <img class="techsparx-tagpage-thumb" src="privacy/google/img/google-analytics-1000-usd.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/drupal/modern-drupal-7-hosting-docker.html">
                    <h3>Hosting Drupal 7 with PHP 8.2 and MySQL 8.2 using Docker</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/internals/container-filesystem.html">
                    <h3>Inspecting a Docker container filesystem without starting a container</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/internals/img/exploring-docker-image-filesystem.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/travel/cell-phones.html">
                    <h3>Using USA regular phone numbers while traveling abroad</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/travel/img/wifi-calling-overseas.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/own-data/contacts/secure.html">
                    <h3>How to prevent smartphone apps from accessing the Contacts list</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/own-data/contacts/img/applications-access-your-contacts-list.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/own-data/contacts/import-export.html">
                    <h3>How to import or export contacts data on Android and iPhone (iOS) devices</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/own-data/contacts/img/direct-import-export-contacts.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/travel/prepare-full-time-travel.html">
                    <h3>How an American can prepare for life as a full-time traveler,
inside or outside the USA
</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/travel/img/prepare-to-travel.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/own-data/contacts/why.html">
                    <h3>Why avoid sharing smart phone Contacts using iCloud/Google/etc</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/own-data/contacts/img/keep-our-data-out-of-the-clutches-of-the-clouds.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/travel/identity/us-financial-traveling.html">
                    <h3>Maintaining accounts with USA banks etc, while traveling abroad, using virtual mailboxes and virtual phones</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/travel/identity/img/maintain-bank-accounts-abroad.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/filesystems/ssh-remote.html">
                    <h3>Using SSH or Rclone to mount remote directories on Ubuntu or macOS</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/filesystems/img/mount-remote-filesystems-ssh-sftp.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/own-data/contacts/nextcloud-contacts.html">
                    <h3>How to self-host our Contacts list on NextCloud</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/own-data/contacts/img/synchronize-contacts-nextcloud.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/filesystems/davfs-nextcloud.html">
                    <h3>Using WEBDAV to mount a NextCloud account on Ubuntu or macOS</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/filesystems/img/mount-nextcloud-webdav.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/filesystems/s3-filesystem.html">
                    <h3>Mounting S3 (compatible) buckets as a filesystem on Linux or macOS using S3FS or Rclone</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/filesystems/img/s3-hero-image.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/self-hosting/dockge-setup.html">
                    <h3>Installing Dockge, a lightweight Docker management tool</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/self-hosting/img/dockge-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/multipass/advanced.html">
                    <h3>Advanced setup tips for Multipass 1.12.x</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/multipass/img/multipass-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/multipass/enable-ssh.html">
                    <h3>How to enable passwordless SSH login on Ubuntu inside Multipass</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/multipass/img/multipass-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/install-docker.html">
                    <h3>Installing Docker Engine or Desktop on Ubuntu, macOS or Windows</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/openapi/schema-types.html">
                    <h3>Autogenerating TypeScript types and data validation for OpenAPI Schemas</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/img/typescript-types-data-validation.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/mongodb/sequential-id-numbers.html">
                    <h3>How to get the maximum value of a field in MongoDB</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/mongodb/img/document-identifiers-integer-sequences.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/travel/identity/traveling-mailbox-sd-nomad.html">
                    <h3>Getting a South Dakota full time traveler ID using Traveling Mailbox</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/travel/identity/img/sd-traveler-w-traveling-mailbox.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/ubuntu/mount-apfs.html">
                    <h3>Mounting APFS file systems on Ubuntu 22.04</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/ubuntu/img/ubuntu-read-apfs-drives.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/podman/mongodb.html">
                    <h3>Using Podman to run MongoDB on MacOS mounting data directory from MacOS host</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/podman/img/FAIL.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/typescript-dying.html">
                    <h3>TypeScript adds to programmer productivity and expressiveness, and is not dying</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/img/TypeScript-benefits.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2022-season/doctor-nde.html">
                    <h3>The Power of the Doctor and the near death experience</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2022-season/img/near-death-doctor-who.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2023-season/2023-schedule.html">
                    <h3>Doctor who going on 1 yr hiatus before 60th anniversary 3-specials blowout</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2023-season/img/new-doctor-who-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/mqtt/mosquitto-ssl.html">
                    <h3>Authenticating and encrypting MQTT to Mosquitto with SSL</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/mqtt/img/mqtt-ssl-tls.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/tools/barrier.html">
                    <h3>Bring sanity to your desk by installing the Barrier KVM</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/tools/img/barrier-dissolve.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/mqtt/mosquitto-docker.html">
                    <h3>Deploying Mosquitto MQTT broker on Linux using Docker</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/mqtt/img/mqtt-install.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/photography/digital-camera-interface.html">
                    <h3>How to connect a digital camera by USB to Ubuntu/Linux</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/photography/img/digital-cameras-linux.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/content-creators/ukraine-demonetization.html">
                    <h3>Google demonetizing YouTubers reporting on Russia's war on Ukraine</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/content-creators/img/demonetization-information-space.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/virtual-mailboxes/usps-form-1583.html">
                    <h3>Details about USPS form 1583 the CMRA's don't tell you about</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/virtual-mailboxes/img/usps-1583-addresses.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/testing/node-test.html">
                    <h3>The new test framework built-in to Node.js 18.8.0</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/testing/img/nodetest-framework.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/datastore/protocol-buffers.html">
                    <h3>Using Protocol Buffers with Node.js applications</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/datastore/img/protocol-buffers.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/bun/test-2022-08-12.html">
                    <h3>Bun is baking its way towards Node.js compatibility</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/bun/img/test-Bun-Node.js-compatibility-faster-execution.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/esnext/mocha-reserved-word.html">
                    <h3>Debugging Syntax Error Unexpected Reserved Word in Mocha on Modern Node.js</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/esnext/img/mocha-bad-errors.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux-sbc/raspberry-pi/pi4-usb-power-limit.html">
                    <h3>Power input and output limits on the Raspberry Pi 4B and 400
</h3>
                    <img class="techsparx-tagpage-thumb" src="linux-sbc/raspberry-pi/img/rpi4-power-limits.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blogging/video/iphone-obs.html">
                    <h3>Use your iPhone or Android as webcam input to OBS on Linux, macOS, or Windows</h3>
                    <img class="techsparx-tagpage-thumb" src="blogging/video/img/using-smart-phone-webcam-OBS.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/bun/speed-test.html">
                    <h3>Deeper testing of Bun's performance and compatibility against Node.js</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/bun/img/test-Bun-Node.js-compatibility-faster-execution.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux-sbc/raspberry-pi/automount-usb.html">
                    <h3>Using multiple USB disks on a Raspberry Pi OS on RPI 4</h3>
                    <img class="techsparx-tagpage-thumb" src="linux-sbc/raspberry-pi/img/rpi4-multi-drives.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/tutorials/diy-search-engine.html">
                    <h3>Self-hosted metasearch engine protects against tracking from Google, Bing, etc</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/tutorials/img/open-source-search.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/tutorials/dmarc-report.html">
                    <h3>Self-hosted DMARC report viewer to aid your anti-SPAM effort</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/tutorials/img/DMARC.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/bun/1st-trial.html">
                    <h3>Testing Bun's compatibility with Node.js and speed with a complex application</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/bun/img/test-Bun-Node.js-compatibility-faster-execution.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux-sbc/raspberry-pi/pi4-raspap.html">
                    <h3>A portable WiFI router/NAS/Docker using RaspAP on Raspberry Pi 4 with USB/SSD boot device
</h3>
                    <img class="techsparx-tagpage-thumb" src="linux-sbc/raspberry-pi/img/WiFi-Router-Raspberry-Pi-RaspAP.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux-sbc/raspberry-pi/rpi4-manual-router.html">
                    <h3>Manually build a portable WiFI router/NAS/Docker on Raspberry Pi 4
</h3>
                    <img class="techsparx-tagpage-thumb" src="linux-sbc/raspberry-pi/img/pi4-WiFi-Router-CLI-tools.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux-sbc/raspberry-pi/pi4-openwrt.html">
                    <h3>Installing OpenWRT on Raspberry Pi 4 using USB boot device
</h3>
                    <img class="techsparx-tagpage-thumb" src="linux-sbc/raspberry-pi/img/raspberry-pi-openwrt.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux-sbc/raspberry-pi/pi4-boot-usb.html">
                    <h3>How to Boot a Raspberry Pi 4 or 400 from a USB drive
</h3>
                    <img class="techsparx-tagpage-thumb" src="linux-sbc/raspberry-pi/img/raspberry-pi-usb-boot.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/webapi/web-rest-hooks.html">
                    <h3>Implementing WebHooks and RESTHooks using TypeSript for Node.js and ExpressJS</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/webapi/img/webhooks-RESThooks.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="web-marketing/seo/indexnow.html">
                    <h3>IndexNow, the new way to inform search engines of new/changed content</h3>
                    <img class="techsparx-tagpage-thumb" src="web-marketing/seo/img/indexnow.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="energy-system/openadr/introduction.html">
                    <h3>An Introduction to OpenADR - the Automated Demand/Response protocol</h3>
                    <img class="techsparx-tagpage-thumb" src="energy-system/openadr/img/openadr-introduction.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="energy-system/openadr/openleadr-docker.html">
                    <h3>Launch both OpenLEADR VTN (top node) and VEN (end node) using Docker for development</h3>
                    <img class="techsparx-tagpage-thumb" src="energy-system/openadr/img/openleadr-development.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/runtime-validation.html">
                    <h3>Automatically handling runtime data validation in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/img/data-validation.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/openapi/openapi-nodejs-servers.html">
                    <h3>Building Node.js REST API servers from OpenAPI specifications</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/openapi/img/implementing-servers.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/openapi/edit-openapi-documents.html">
                    <h3>Easily edit or view OpenAPI 3 API specifications using free tools</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/openapi/img/swagger-editor-online.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/openapi/swagger-ui-viewer.html">
                    <h3>Displaying Swagger UI in an HTML page without using server-side services</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/openapi/img/petstore-spring-ui.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/self-hosting/index.html">
                    <h3>Self-hosting services using Docker</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/self-hosting/img/inexpensive-self-hosting.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/international/news-info.html">
                    <h3>Tips for reading international news &amp; social media to be informed about the world</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/international/img/international-news.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2022-season/legend-sea-devils.html">
                    <h3>The yawn of the legend of the Sea Devils</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2022-season/img/sea-devils.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/typedoc.html">
                    <h3>Generating API documentation for TypeScript packages with TypeDoc</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/img/using-typedoc.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/using.html">
                    <h3>Using automated runtime data validation decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/runtime-data-validation.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/news/2022/typescript-trending.html">
                    <h3>Microsoft proposes bringing TypeScript-like type syntax to JavaScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/news/2022/img/TypeScript-like-types.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/esnext/import-https.html">
                    <h3>Importing an ES6 modules over HTTP/HTTPS in a Node.js
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/esnext/img/http-import.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/parameters.html">
                    <h3>Deep introduction to parameter decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/parameter-decorators.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/runtime-validation.html">
                    <h3>Runtime data validation in TypeScript using decorators and reflection metadata</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/runtime-data-validation.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/hybrid-decorators.html">
                    <h3>Implementing hybrid decorator functions in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/hybrid-decorators.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/reflection.html">
                    <h3>Using the Reflection and Reflection Metadata APIs with TypeScript Decorators</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/reflection-metadata-typescript.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/news/2022/express-5.html">
                    <h3>Express enters Beta 1, proving the project is still alive</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/news/2022/img/express-beta-1.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/methods.html">
                    <h3>Deep introduction to method decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/method-decorators.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/accessors.html">
                    <h3>Deep introduction to accessor decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/accessor-decorators.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/properties.html">
                    <h3>Deep introduction to property decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/property-decorators.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/classes.html">
                    <h3>Deep introduction to class decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/class-decorators.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/decorators/introduction.html">
                    <h3>Deep introduction to using and implementing TypeScript decorators</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/decorators/img/Decorators-for-TypeScript.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/validation.html">
                    <h3>Data validation decorators in TypeScript</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/typescript/img/data-validation.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/modules-01.html">
                    <h3>Creating either CommonJS or ES6 modules for Node.js packages using Typescript</h3>
                    <img class="techsparx-tagpage-thumb" src="img/typescript-nodejs-logo.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/typescript/setup.html">
                    <h3>Setting up the Typescript compiler to integrate with Node.js development</h3>
                    <img class="techsparx-tagpage-thumb" src="img/typescript-nodejs-logo.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/doctor-14/regeneration-first-glimpse.html">
                    <h3>BBC's first hints on Regeneration from Jodie Whittaker (Doctor 13) to replacement</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/doctor-13/img/jodi-leaving.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/install/pinned-versions.html">
                    <h3>Avoiding rogue Node.js packages by using good version dependencies in package.json</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/install/img/node-js-package-versions.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/companions/peri/peri-fate.html">
                    <h3>Solving the fate of Peri?  In a DVD trailer?</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/companions/peri/img/peri-brown.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/doctor-14/tennant.html">
                    <h3>David Tennant to return as The 14th Doctor?  Do what?  What are they smoking?</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/doctor-14/img/tennant-returns.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="linux/tools/flatpak.html">
                    <h3>Why use Flatpak on Linux (Ubuntu), and how to get started</h3>
                    <img class="techsparx-tagpage-thumb" src="linux/tools/img/flatpaklogo.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blogging/ai/robot-writers.html">
                    <h3>Services, like OpenAI's GPT-3, could mean the death of blogging/journalism or else a massive wave of fake news</h3>
                    <img class="techsparx-tagpage-thumb" src="blogging/ai/img/robotic-writing.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2022-season/yaz-cries.html">
                    <h3>Yaz and The Doctor playing hanky-panky?  PLEASE NO NO NO NO NO!!!!</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2022-season/img/yaz-crying-over-Doctor.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/self-hosting/why.html">
                    <h3>Why self-host web services for more control and lower cost than cloud-based web services</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/self-hosting/img/self-host-own-services.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/security/csp-camera-microphone.html">
                    <h3>An iframe from googlesyndication.com tries to access the Camera and Microphone
</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/security/img/adverts-access-camera.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/tools/submodules.html">
                    <h3>Using Git submodules to streamline Node.js package development
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/tools/img/git-submodules-nodejs-packages.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/git/submodules.html">
                    <h3>How and why to use Git Submodules</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/git/img/Git-Logo-2Color.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/06-life-memories.html">
                    <h3>The Doctor pushed away reliving her life memories for another day - Doctor Who Season 13</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/06-avoiding-life-memories.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/web/htmlparser2.html">
                    <h3>Using HTMLParser2, DOMUtils, to process HTML and XML in Node.js</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/web/img/XML.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/06-disappointment.html">
                    <h3>Disappointed by the Vanquishing of The Flux - Doctor Who Season 13</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/06-passenger-form-saves.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/05-flux-survivors.html">
                    <h3>Survivors of Survivors of the Flux - Doctor Who Season 13</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/05-squandered-cliff-hangers.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/05-rewritten-unit-history.html">
                    <h3>Did they change UNIT history in Survivors of the Flux?  Doctor Who season 13</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/05-new-unit-timeline.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/05-serpent-is-master.html">
                    <h3>The Great Serpent is clearly The Master?  Doctor Who, Season 13</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/05-serpent.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/05-special-dates.html">
                    <h3>Specific dates in Doctor Who Season 13, BBC's marketing, and scheduling</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/season-13-dates.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/04-great-reset.html">
                    <h3>Has the Great Reset come to Doctor Who?</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/04-great-reset.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/unit-returns.html">
                    <h3>BBC helps with UNIT's return by showing UNIT highlights</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/unit-returns.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/big-finish/news/2021/kate-stewart-unit.html">
                    <h3>Kate Stewart's UNIT team comes to Big Finish</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/big-finish/news/2021/img/unit-returns.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/kate-stewart-returns.html">
                    <h3>Kate Stewart returning to Doctor Who in conclusion of The Flux</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/kate-stewart.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2022-season/01-announce.html">
                    <h3>Regarding the Jan 1, 2022 Doctor Who holiday special</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2022-season/img/01-teaser-image.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2022-season/2022-schedule.html">
                    <h3>Doctor who approximate schedule for 2022 - 3 episodes fairly evenly spread</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2022-season/img/jodi-doctor.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/03-fugitive-doctor.html">
                    <h3>We finally know where The Fugitive Doctor fits into The Doctor's history</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/03-who-hell-are-you.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/doctor-13/bbc-confirms-jodi-leave.html">
                    <h3>BBC confirms Jodie Whittaker and Chris Chibnall leaving Doctor Who at end of 2022</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/doctor-13/img/jodi-leaving.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/doctor-14/unlikely-process.html">
                    <h3>The unlikely way for the BBC to handle the 2023 holiday special after Whittakers exit</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/img/time-corridor-sorta.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/graphics/image-metadata.html">
                    <h3>Getting image metadata (EXIF) using Node.js</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/graphics/img/reading-image-metdata.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/03-once-upon-time.html">
                    <h3>Doctor Who Season 13 - The Fairy Tale of 'Once upon a Time'</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/03-seige-atropos.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/02-sontarans.html">
                    <h3>Doctor Who Season 13 - Sontarans as horse-mounted knights?</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/02-sontaran-knight.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2021/10/covid-origin.html">
                    <h3>COVID-19 was in Europe in summer/fall 2019, negating the official COVID-19 origin story</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2021/10/img/COVID-19-origin.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2021/10/covid-test.html">
                    <h3>Carbon Nanotube biological sensor for detecting COVID-19 or other infections</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2021/10/img/MIT_Covid-Sensor-02-PRESS.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/01-haloween.html">
                    <h3>Doctor Who Season 13 - The Halloween Apocalypse</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/01-flux.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/docker-desktop/multipass.html">
                    <h3>Replacing Docker Desktop with Multipass, to avoid Docker Desktop fees</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/docker-desktop/img/running-wo-docker-desktop.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/docker-desktop/not-free.html">
                    <h3>Docker Inc squeezing money from Docker Desktop and other Docker tools</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/docker-desktop/img/docker-end-free.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/howto/async-code-flow.html">
                    <h3>Troubles with Asynchronous code flows in JavaScript, and the async/await solution of ES-2017
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/es-2015-16-17-promises-generators-and-async-await-2-1000.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="robotics/cyborgs/insect-research.html">
                    <h3>Scary exciting research into robotically controlled beetles</h3>
                    <img class="techsparx-tagpage-thumb" src="robotics/cyborgs/img/cyborg-beetle.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/howto/domain-name-match.html">
                    <h3>Correctly match URL against domain name without killing yourself with regular expressions
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2021/10/trump-truth.html">
                    <h3>Donald Trump starting a social network named TRUTH is complete irony</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2021/10/img/truth-social-front-page.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/season-13-teaser-2.html">
                    <h3>Doctor Who Season 13 official trailer breakdown</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/official-trailer.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/howto/error-handling.html">
                    <h3>Simplify catching uncaughtException, unhandledRejection, and multipleResolves in Node.js</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/howto/img/uncaught-errors.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/season-13-teaser.html">
                    <h3>Doctor Who Season 13 starts October 31 with 'The Flux', Sontarans, Weeping Angels, and everything else</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/season-13-teaser.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/blog/rtd-slams-culture-minister.html">
                    <h3>RTD starts Doctor Who show runner tenure by getting into fight with Culture Secretary</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/blog/img/rtd-show-runner.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/liverpool-spaceship.html">
                    <h3>BBC projects Sontaran spaceship over Liverpool, signaling Doctor Who Season 13 about to start</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/dwoonline-spaceship-liverpool.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/make-money-online/serpclix.html">
                    <h3>SerpClix is a great side hustle and you'll enjoy it, they said (REVIEW)</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/make-money-online/img/serpclix-logo.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/voting/facebook-voting.html">
                    <h3>I want Facebook to keep its nose out of my voter registration status</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/voting/img/facebook-voter-registration.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/blog/rtd-empire.html">
                    <h3>We can expect RTD to launch multiple Doctor Who shared universe shows?</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/blog/img/rtd-show-runner.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/blog/rtd-returns.html">
                    <h3>Oh my god YES, RTD is back as Doctor Who Show Runner</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/blog/img/rtd-show-runner.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blog/2021/09/matrix-returns.html">
                    <h3>Watching the Matrix Resurrections official trailer is one huge YES YES YES YES</h3>
                    <img class="techsparx-tagpage-thumb" src="blog/2021/09/img/matrix-trailer.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blog/2021/09/earthquake-blue-flashes.html">
                    <h3>Ominous blue flashes in sky during Sept 2021 Acapulco earthquake</h3>
                    <img class="techsparx-tagpage-thumb" src="blog/2021/09/img/mexico-lights.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blog/2021/09/vaccine-rfid.html">
                    <h3>Is US Patent 11107588 a vaccine-injected big brother tracking system?</h3>
                    <img class="techsparx-tagpage-thumb" src="blog/2021/09/img/smart-phone-app-tracking.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/voting/voting-by-qrcode.html">
                    <h3>Securely voting by mail with paper ballots containing QR Codes</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/voting/img/digital-identifiers-paper-ballots.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/content-creators/medium-subscriptions.html">
                    <h3>Medium giving writers more direct access to their audience</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/content-creators/img/medium-writers-destiny.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="computer-hardware/storage/diy-drive-cage.html">
                    <h3>DIY hard disk cages for DIY network attached storage (NAS)</h3>
                    <img class="techsparx-tagpage-thumb" src="computer-hardware/storage/img/hard-drive-cage-with-fan.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/money-making-scams/misusing-upwork-account.html">
                    <h3>Scam proposal to misuse my Upwork account</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/money-making-scams/img/upwork-scam-alert.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="lifestyle/content-creators/content-platforms.html">
                    <h3>Content platforms (Medium, YouTube, etc) are rigged against individual creators</h3>
                    <img class="techsparx-tagpage-thumb" src="lifestyle/content-creators/img/Content-Creators-Platforms.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="social-media-warfare/fake-news/conservative-content-mill.html">
                    <h3>Conservative news site hiring writers to regurgitate predetermined truth</h3>
                    <img class="techsparx-tagpage-thumb" src="social-media-warfare/fake-news/img/conservative-fake-news.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="ufo-uap/usa/2021/pentagon-report.html">
                    <h3>Pentagon UFO/UAP report describes craft with capabilities way beyond human technology</h3>
                    <img class="techsparx-tagpage-thumb" src="ufo-uap/usa/2021/img/pentagon-UFOUAP-report.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2021/06/covid-origin.html">
                    <h3>COVID-19 origin in question due to early detection in Barcelona on March 2019 and Milan in December 2019 (UPDATE)</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2021/06/img/covid-19.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="ufo-uap/usa/2021/leak-expect-denial.html">
                    <h3>Leak: Defense Dept report on UAP/UFO phenomena will say no proof of alien contact</h3>
                    <img class="techsparx-tagpage-thumb" src="ufo-uap/usa/2021/img/defense-dept-report-expect-denial.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="ufo-uap/canada/ufo-report-example.html">
                    <h3>Canada's military is documenting UFO/UAP sightings</h3>
                    <img class="techsparx-tagpage-thumb" src="ufo-uap/canada/img/Canada-UFOUAP-reporting-system.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="computer-hardware/video/hdmi-video-capture.html">
                    <h3>Recording a Raspberry Pi desktop using a HDMI Video Capture device and OBS Studio</h3>
                    <img class="techsparx-tagpage-thumb" src="computer-hardware/video/img/P1000838.JPG"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/async/queue-processing.html">
                    <h3>Implementing worker queues for processing datasets in Node.js</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/async/img/parallel-tasks.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="photography/infrared/diy-conversion.html">
                    <h3>DIY Convert Lumix DMC-ZS3 for infrared or full spectrum photography</h3>
                    <img class="techsparx-tagpage-thumb" src="photography/infrared/img/P1040908.JPG"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/esnext/esm-to-cjs.html">
                    <h3>Complete guide to using ES6 modules to create Node.js packages that are easily usable from CJS modules</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/esnext/esmodules-from-commonjs.html">
                    <h3>Loading an ES6 module in a Node.js CommonJS module
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/john-bishop-liverpool.html">
                    <h3>Surprise, surprise, NOT, John Bishop's character in Doctor Who will be from Liverpool</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/john-bishop-dan.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/big-finish/news/2021/eccleston-answers.html">
                    <h3>Christopher Eccleston answers questions about his return to Doctor Who and Big Finish</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/big-finish/news/2021/img/ecclestone.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/datastore/forerunnerdb.html">
                    <h3>Serverless MongoDB, using ForerunnerDB to store local data in a Node.js application</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2021/04/google-java-api.html">
                    <h3>US Supreme Court rules Google's use of Java SE API is 'fair use'</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2021/04/img/java-compatibility-matters.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/big-finish/news/2021/eccleston.html">
                    <h3>Eccleston returning as The Doctor on Big Finish in Ninth Doctor Adventures, Ravagers</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/big-finish/news/2021/img/ecleston-ravagers.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/self-hosting/hardware.html">
                    <h3>Self-hosted Docker infrastructure in home or office using low-cost computers like Intel NUC</h3>
                    <img class="techsparx-tagpage-thumb" src="computer-hardware/desktop/img/intel-nuc-closeup.JPG"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/docker-cron.html">
                    <h3>Scheduling background tasks using cron in a Docker container</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/mysql-multiple.html">
                    <h3>Using multiple databases and PHPMyAdmin in a single MySQL Docker instance</h3>
                    <img class="techsparx-tagpage-thumb" src="img/logo-mysql-mysql.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/mysql-ssl-connection.html">
                    <h3>Connect with SSL to MySQL in Docker container</h3>
                    <img class="techsparx-tagpage-thumb" src="img/logo-mysql-mysql.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/remote-control.html">
                    <h3>Using SSH to remotely control a Docker Engine or Docker Swarm in two easy steps</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/access-denied.html">
                    <h3>Understanding MySQL the Access Denied error in or outside a Docker container</h3>
                    <img class="techsparx-tagpage-thumb" src="img/logo-mysql-mysql.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/mongodb.html">
                    <h3>Running MongoDB with Docker and Docker Compose</h3>
                    <img class="techsparx-tagpage-thumb" src="img/MongoDB_Logo_FullColorBlack.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/mysql.html">
                    <h3>Set up MySQL using Docker on your laptop</h3>
                    <img class="techsparx-tagpage-thumb" src="img/logo-mysql-mysql.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/wordpress-local.html">
                    <h3>Wordpress local development environment with Docker and Docker Compose on your laptop</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/docker-wordpress.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/compose-intro.html">
                    <h3>Deploying MySQL to get started using a Docker Compose file</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/docker-compose-mysql.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/mysql-phpmyadmin.html">
                    <h3>Set up PHPMyAdmin and Wordpress Docker containers using existing MySQL</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/docker-wp-php-mysql.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/familiarization.html">
                    <h3>Familiarizing ourselves with Docker</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/howto/csv2mysql.html">
                    <h3>Easily export or import data between CSV files and SQLite3 or MySQL databases with Node.js
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/howto/csv-transformation.html">
                    <h3>Memory-efficient CSV transformation into CSV or text reports in Node.js
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/docker-ecs/load-balancer/https.html">
                    <h3>Implementing HTTPS with Docker services on AWS ECS using Docker Compose</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/docker-ecs/first-look/img/docker-aws-ecs.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/doctor-13/jodi-quits.html">
                    <h3>Jodie Whittaker quits Doctor Who, as expected after Companions depart the show</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2018-season/img/p05tyrgh.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/changed-companions.html">
                    <h3>Doctor Who companions changing for Season 13, Graham and Ryan out, Dan is in (John Bishop)</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/john-bishop-dan.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/fans-betrayed.html">
                    <h3>Doctor Who 2021 special 'Revolution of the Daleks' channels fan rage at BBC</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2021-season/img/yaz-fan-rage.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/2021-season/shortened-season.html">
                    <h3>BBC's Chibnall confirms Doctor Who Season 13 shortened to 8 episodes</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/2020-season/img/timeless-children/p084qvqz.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/graphics/svg-to-png.html">
                    <h3>Convert SVG to PNG in Node.js using Sharp, no headless browser in sight
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2020/10/usps-destruction.html">
                    <h3>Trump supporters claim rally for killed Police Officers was in support of Trump</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2020/10/img/fake-trump-news.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="doctor-who/blog/maze-theory.html">
                    <h3>Ingrid Oliver is back playing Osgood in two upcoming Doctor Who games</h3>
                    <img class="techsparx-tagpage-thumb" src="doctor-who/blog/img/lonely-assassins.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/damp/wordpress-production.html">
                    <h3>Wordpress production deployment with Docker Compose</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/docker-wordpress.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/docker/swarm/share-networks.html">
                    <h3>How to share a Docker network between Stacks deployed to a Docker Swarm</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/docker/img/Docker_logo_horizontal.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blog/2020/09/vaccine-rfid.html">
                    <h3>Does a COVID-19 Vaccine have 'Mark of the Beast' written all over it?</h3>
                    <img class="techsparx-tagpage-thumb" src="blog/2020/09/img/vaccine-hoax-beast.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/docker/aws-ecs-deploy.html">
                    <h3>Fixing CannotPullContainerError when deploying to AWS ECS using ECR registry
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/docker/img/node-js-docker-aws.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/tools/npm-build-scripts.html">
                    <h3>How to use npm/yarn/Node.js package.json scripts as your build tool</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-npm.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/examples/todo-bootstrap/running.html">
                    <h3>Running the TODO application</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/examples/todo-bootstrap/img/todo-application.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/examples/todo-bootstrap/user-interface.html">
                    <h3>Using Bootstrap and Socket.IO for the user interface in an Express Node.js 14 application
</h3>
                    <img class="techsparx-tagpage-thumb" src="img/Bootstrap-v5-new-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/examples/todo-bootstrap/database.html">
                    <h3>Using Sequelize for the database layer in an Express Node.js 14 application
</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/sequelize-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/examples/todo-bootstrap/setup.html">
                    <h3>Project setup for Node.js 14, Express, Bootstrap v5, Socket.IO application
</h3>
                    <img class="techsparx-tagpage-thumb" src="img/Bootstrap-v5-new-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/examples/todo-bootstrap/index.html">
                    <h3>Single page multi-user application with Express, Bootstrap v5, Socket.IO, Sequelize</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/examples/todo-bootstrap/img/todo-application.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="privacy/license-plates/default-search-engine.html">
                    <h3>TALON, the big-brother-like license plate recognition network to track all car movement everywhere</h3>
                    <img class="techsparx-tagpage-thumb" src="privacy/license-plates/img/flock-safety.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2020/08/usps-destruction.html">
                    <h3>USPS being destroyed not just over election, but for replacement with FEDEX/UPS/DHL/etc</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2020/08/img/h9-usps-confirms-removal-public-mailboxes-oregon-cities.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="nodejs/async/top-level-async.html">
                    <h3>Node.js Script writers: Top-level async/await now available</h3>
                    <img class="techsparx-tagpage-thumb" src="nodejs/img/nodejs-dark.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/terraform/aws/setup/setup.html">
                    <h3>Configuring Terraform to use for deploying AWS Infrastructure</h3>
                    <img class="techsparx-tagpage-thumb" src="img/terraform-logo.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/git/jenkins-access.html">
                    <h3>Fixing could not read Username for 'https://github.com': No such device or address in Jenkins</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/git/img/Git-Logo-2Color.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="software-development/aws/aws-cli.html">
                    <h3>Setting up the AWS Command-Line-Interface (CLI) tool on your laptop</h3>
                    <img class="techsparx-tagpage-thumb" src="software-development/aws/img/Amazon_Web_Services_logo_AWS.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2020/07/covid-origin.html">
                    <h3>COVID-19 origin in question due to early detection in Barcelona on March 2019 and Milan in December 2019</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2020/07/img/covid-19.jpg"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="news/2020/07/covid-filter.html">
                    <h3>U of Houston researchers develop COVID-19-killing air filter for HVAC systems</h3>
                    <img class="techsparx-tagpage-thumb" src="news/2020/07/img/covid-filter-720.png"></img>
                </a>
            
        </div>
    
        <div class="blog-item">
            
                <a href="blog/2020/07/youtube-repair-channel.html">
                    <h3>YouTube shuts down channel for Repair Video creator Jordan Pier</h3>
                    <img class="techsparx-tagpage-thumb" src="blog/2019/02/img/youtube-demonitization.jpg"></img>
                </a>
            
        </div>
    
</div>

    </div>
</div>

    </div>
    <div class="mx-auto">
        <a href="https://click.linksynergy.com/fs-bin/click?id=PPTIpcZ17qI&amp;offerid=507388.7119&amp;subid=0&amp;type=4" rel="" target="_blank">
            <img border="0" alt="The Data Science Course 2019: Complete Data Science Bootcamp for as low as $10.99." src="imgz/udemy/39197_7119.png"></img></a>
    </div>

<div id="ezoic-pub-ad-placeholder-104">
</div>

  </article>
  <section id="right" class="col-md-3">
    <!-- Ezoic - sidebar - sidebar -->
<!-- <div id="ezoic-pub-ad-placeholder-106"> </div> -->
<!-- End Ezoic - sidebar - sidebar -->

    <div class="card" style="width: 100%; text-align: center;">
    <div class="card-body">
        <h4 class="card-title">Subscribe via RSS</h4>
        <a href="feeds.html">
            <img src="img/rss_button.gif" align="middle" width="40px"></img>
        </a>
    </div>
</div>

    

<div>



<span class="link-to-external-card" style="float: left; width: 100%; padding: 2px; margin: 2px;">
    <figure>
        <a href="software-development/docker/learning.html#DevOpsKubernetes">
            <img src="imgz/amazon/51DZhnviyOL.jpg" alt="DevOps with Kubernetes: Accelerating software delivery with container orchestrators" title="DevOps with Kubernetes: Accelerating software delivery with container orchestrators" style="width: 100%;"></img>
        </a>
    </figure>
</span>

<span class="link-to-external-card" style="float: left; width: 100%; padding: 2px; margin: 2px;">
    <figure>
        <a href="nodejs/learning/products.html#UDEMYRESTNodeJS">
            <img src="nodejs/img/nodejs-dark.png" alt="UDEMY: Build a REST API with node.js, ExpressJS, and MongoDB" title="UDEMY: Build a REST API with node.js, ExpressJS, and MongoDB" style="width: 100%;"></img>
        </a>
    </figure>
</span>

<span class="link-to-external-card" style="float: left; width: 100%; padding: 2px; margin: 2px;">
    <figure>
        <a href="linux-sbc/raspberry-pi/products.html#VilrosRaspberryPi3Starter">
            <img src="imgz/amazon/91x8dvdaRbL._SL1500_.jpg" alt="Vilros Raspberry Pi 3 Kit with Clear Case and 2.5A Power Supply" title="Vilros Raspberry Pi 3 Kit with Clear Case and 2.5A Power Supply" style="width: 100%;"></img>
        </a>
    </figure>
</span>

<span class="link-to-external-card" style="float: left; width: 100%; padding: 2px; margin: 2px;">
    <figure>
        <a href="computer-hardware/arduino/products.html#TinySineRS485Shield">
            <img src="https://images-na.ssl-images-amazon.com/images/I/612bClb1mKL._SL1000_.jpg" alt="RS232/RS485 Shield for Arduino" title="RS232/RS485 Shield for Arduino" style="width: 100%;"></img>
        </a>
    </figure>
</span>

<span class="link-to-external-card" style="float: left; width: 100%; padding: 2px; margin: 2px;">
    <figure>
        <a href="lifestyle/geek-gear.html#older-than-the-internet">
            <img src="imgz/zazzle/i_am_older_than_the_internet_simple_white_t_shirt-r8c2b06cc1c1445a89945384400188128_jyr6t_1024.jpg" alt="I Am Older Than The Internet Simple White T-Shirt" title="I Am Older Than The Internet Simple White T-Shirt" style="width: 100%;"></img>
        </a>
    </figure>
</span>
</div>

    <!-- Ezoic - sidebar - sidebar -->
<!-- <div id="ezoic-pub-ad-placeholder-106"> </div> -->
<!-- End Ezoic - sidebar - sidebar -->

    <div>

<a href="https://fave.co/3eo8MDm" rel="" target="_blank">
<!-- https://images-na.ssl-images-amazon.com/images/I/41SzsmJa9uL.jpg -->
<img src="imgs/amazon/41SzsmJa9uL.jpg" align="center" width="100%" style="max-width: 180px; margin-left: auto; margin-right: auto;"></img>
</a>

<a href="https://www.amazon.com/dp/B072FRZNPD/ref=as_li_ss_tl?ie=UTF8&amp;linkCode=ll1&amp;tag=thereikipage&amp;linkId=d8d0049c1c18a35cb83f2282297119ec" rel="nofollow noskim" target="_blank">
    <!-- https://images-na.ssl-images-amazon.com/images/I/510Xc8ieh0L.jpg -->
    <img src="imgz/amazon/510Xc8ieh0L.jpg" align="center" width="100%" style="max-width: 180px; margin-left: auto; margin-right: auto;"></img>
</a>

<!-- style="max-width: 150px;" -->

<a href="https://www.amazon.com/Asynchronous-Node-js-JavaScript-Promises-Generators-ebook/dp/B01N2Z4SOR/ref=as_li_ss_tl?s=books&amp;ie=UTF8&amp;qid=1498008506&amp;sr=1-2&amp;linkCode=ll1&amp;tag=thereikipage&amp;linkId=1c85526832f99037c925080682f1db36" rel="nofollow noskim" target="_blank">
    <img src="nodejs/img/es-2015-16-17-promises-generators-and-async-await-2-1000.jpg" align="center" width="100%" style="max-width: 180px; margin-left: auto; margin-right: auto;"></img>
</a>

<a href="https://www.amazon.com/dp/B00WTKDH72/ref=as_li_ss_tl?ie=UTF8&amp;linkCode=ll1&amp;tag=thereikipage&amp;linkId=27adeed4cabfcdcc78a6ce776f8eeae3" rel="nofollow noskim" target="_blank">
    <img src="nodejs/img/create-ebook-cover.jpg" align="center" width="100%" style="max-width: 180px; margin-left: auto; margin-right: auto;"></img>
</a>
</div>

    <div class="mx-auto">
        <script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
        <!-- techsparx-sidebar -->
        <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2401070691062219" data-ad-slot="3887160627" data-ad-format="auto"></ins>
        <script>
        (adsbygoogle = window.adsbygoogle || []).push({});
        </script>
    </div>
  </section>
</div>

<footer class="row" style="text-align: center; height: 100px;">
<span class="col-md-8">
    <a href="about.html">About TechSparx</a>

    
<!-- span class="col-md-3">< %- partial('google-voice.html') %></span -->
</span></footer>

</div>

  <!-- JavaScript at the bottom for fast page loading -->
  
<script src="vendor/jquery/jquery.min.js"></script><script src="vendor/popper.js/umd/popper.min.js"></script><script src="vendor/bootstrap/js/bootstrap.min.js"></script><script src="vendor/highlight.js/lib/highlight.js"></script><script>hljs.initHighlightingOnLoad();</script>
  <!-- <script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-96446326-1', 'auto');
  ga('send', 'pageview');

</script>
-->
  
  <script type="text/javascript" src="//s.skimresources.com/js/27810X1162539.skimlinks.js"></script>
  <!-- Go to www.addthis.com/dashboard to customize your tools --> <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-594227a34ce36d45"></script> 

</body>
</html>
