Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # Jon's Blog A Collection of Things I Have Learned ## Sitemaps - [XML Sitemap](https://chemejon.io/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Terraform Tips & Tricks - Part 1 - Building A Constant Reference](https://chemejon.io/terraform-tips-tricks-part-1-building-a-constant-reference/) - September 25, 2023 One of the most common problems I see in large organizations when working with terraform is consistency. When we have a large amount of resources being managed and multiple writing terraform code it often gets hard to maintain consistency in naming or abbreviations used for naming. Problem Consider the following organization with a 2 tier - [Everything You Ever Wanted to Know About Istio but Were Afraid to Ask](https://chemejon.io/an-introduction-to-istio-on-kubernetes/) - June 9, 2022 - Learn how to get started with Istio Service Mesh and Kubernetes, with use-cases and examples. - [How to Setup a pfSense IPsec VPN Connection Behind a Router to Google Cloud](https://chemejon.io/configuring-a-virtual-pfsense-vpn-connection-to-google-cloud/) - May 6, 2022 A tutorial on how to setup a virtual pfSense router behind a main router for VPN communications with Google Cloud Platform. - [OPA Gatekeeper: Bringing Law and Order to Kubernetes](https://chemejon.io/opa-gatekeeper-overview-and-configuration/) - May 31, 2022 Introduction Open Policy Agent (OPA) is a policy based control agent that is able to be integrated on various platforms. For the sake of this document we will be talking about its implementation in K8s via the Gatekeeper - Policy Controller for Kubernetes. In Kubernetes, OPA is implemented as an Admission Controller, the admission controller - [How to Monitor Your Enphase Home Solar System with Telegraf](https://chemejon.io/enphase-solar-monitoring-with-telegraf/) - How to collect metrics from an Enphase Envoy PV system, with telegraf and influxdb. Motivation I had an Enphase solar system installed in 2020 and the default logging interval for the Enphase appliance was 15 minutes. Being the data hoarder I am, a 15 minute interval was far too long and I wanted closer intervals to see near real-time performance of my solar modules. Luckily I already had a - [How to Setup Anthos on GKE Autopilot with Private Certificate Authority](https://chemejon.io/anthos-on-gke-autopilot-w-ingress-gateway-cert-manager/) - May 23, 2022 What You Will Create The guide will set up the following: 2 Private GKE autopilot clusters with master global accessASM with multicluster meshIstioIngress gateway to a L4 Internal Load BalancerGateway cert issued with cert-manger and google-cas-issuer requesting certificates from a Google PCAWhereami deploymentCustom routes for control-plane access via VPN (optional)See my post on GCP Cloud - [Cryptography is the Mathematical Form of Art](https://chemejon.io/introduction-to-cryptography/) - November 9, 2021 How I got Interested A few months ago I watched the film The Imitation Game. This peaked my interest and introduced a physical aspect to my concept of cryptography. To summarize very briefly the movie revolves around a device called the Enigma Machine, a machine used by the Nazi's in World War II to encrypt - [The Beautiful Mathematics Behind the RSA Cryptosystem](https://chemejon.io/how-the-rsa-cryptosystem-works/) - November 10, 2021 What is RSA? RSA or Rivest-Shamir-Adleman is a public-key cryptosystem that was first described in 1977 by Ron Rivest, Adi Shamir and Leonard Adleman. RSA is one of the oldest public-key cryptosystem but not the first. The first ever publicly known system was the Diffie-Hellman key exchange published just one year prior to RSA. Asymmetric - [A Brief Explanation of Turing Completeness and Smart Contracts](https://chemejon.io/turing-and-smart-contracts/) - November 16, 2021 Turing Completeness The concept of Turing completeness stems from Alan Turing's definition of a Turing machine. I came across this concept after researching smart contracts. I saw that bitcoin's used a Turing-incomplete script language vs Ethereum's Turing-complete language, and it got me wondering what that actually meant. After a bit of research the concept of - [How to Deploy Anthos on Bare Metal On-Prem](https://chemejon.io/anthos-on-bare-metal-on-prem-deployment-guide/) - May 31, 2022 Introduction The main advantage of Anthos on BM over Anthos on VMWare for on-prem deployments is the ability to run Anthos clusters without a hypervisor license. Cluster Types A bare metal deployment can consist of the following cluster types: A user cluster that runs workloads.An admin cluster that creates and controls user clusters to run - [In-depth Visual Breakdown of the SHA-3 Cryptographic Hashing Algorithm](https://chemejon.io/sha-3-explained/) - Background SHA-3 is short for Secure Hash Algorithm 3 This means that SHA-3 is a hash function and meets certain attack resistance criteria, if you don't know what those are you can read my introduction post on hashing functions. I will go into depth about hashing function attacks and what makes a hashing function secure - [Fixing Windows 10 BSOD After Linux Ubuntu Live Boot](https://chemejon.io/fixing-windows-10-bsod-after-linux-ubuntu-live-boot/) - October 4, 2017 Yesterday I tried to create a persistent USB bootable version of Ubuntu 16.04. After not being able to retain persistence on a reboot a BSOD occurred with BAD_SYSTEM_CONFIG_INFO. After hours of googling and trying various methods, one worked. 1. Create a Windows 10 flash drive and go to this screen or if you already have - [PLC Big Data Analysis with Pandas and Power Bi](https://chemejon.io/plc-big-data-analysis-with-pandas-and-power-bi/) - October 28, 2019 At work, I am responsible for collecting PLC/HMI data logs from systems, organizing and transforming the data so relative system performance can be acquired. In the infancy of my "data science" journey, I used Microsoft Excel and its integrated Power Query program to fulfill my data analysis needs. This method had a very shallow learning - [Ultrasonic Level Sensor for Water Level Measurement (Arduino Nano + HC-SRF05)](https://chemejon.io/arduino-nano-srf05-level-sensor/) - October 12, 2017 This is a level sensor I built for my Raspberry Pi PLC for Membrane Filtration. Here is a comparison of a SEIMENS SITRANS Ultrasonic level sensor and my DIY level sensor. I have worked with the SEIMENS SITRANS before, it is a great sensor, and very easy to work with. However it cost around a grand. - [How to Use Packer and Subiquity on WSL2](https://chemejon.io/how-to-use-packer-and-subiquity-on-wsl2/) - July 21, 2021 Background My main dev environment is windows convenient WSL2, however the WSL2 instance is isolated from the host machines IP, leading to some issues when it comes to accessing ports WSL ports on my LAN. Specifically the issue I ran into was when building packer and automating my Ubuntu 20.04 install. After some research I - [How to deploy Ubuntu 20.04 packer templates for terraform on VSphere without duplicate IP's](https://chemejon.io/how-to-deploy-ubuntu-20-04-packer-templates-for-terraform-on-vsphere-without-duplicate-ips/) - July 21, 2021 Background For a while now I have been struggling with Packer templates built with Ubuntu 20.04 server deployed on VSphere 7.0. When I build the packer image and deploy VM's with terraform specifying a static IP with terraforms customize block, DHCP would pick up an additional IP address as well as the static IP. I - [How to Mount CIFS Windows Share to Kubernetes Pod with Flexvolume](https://chemejon.io/how-to-mount-cifs-windows-share-to-kubernetes-pod-with-flexvolume/) - July 21, 2021 Background When setting up my bare-metal Kubernetes cluster I initially used a NFS provisioner with a Windows NFS share for my PV, however Windows NFS shares often cause more issues than they solve. Given this I decided to use CIFS as a work around. Setup In order to use CIFS mounts on Kubernetes there are - [WiFi Scale (ESP-8266 MQTT Scale)](https://chemejon.io/esp-8266-mqtt-scale-tutorial/) - September 22, 2018 A DIY Mass Flow Meter for Process Measurement - [Raspberry Pi Laboratory R&D Automation](https://chemejon.io/raspberry-pi-lab-plc-automation/) - October 5, 2017 How I built a custom PLC system and sensors for process data collection and control. - [Saving Files to Network Drive via NodeRED (Raspberry Pi)](https://chemejon.io/saving-files-to-network-drive-via-nodered-raspberry-pi/) - October 11, 2017 Recently I needed to save a csv file to a network location in NodeRED. After searching various places on how to mount my drive I finally found a method that uses cifs. 1. Create a location you want to map your drive. cd / mkdir mnt mkdir /mnt/ 2.Find the local IP address of the ## Pages - [About](https://chemejon.io/about/) - I am a Socal native that graduated from San Jose State University with a B.S. in Chemical Engineering and a Minor in Chemistry. This blog was born from my experiences from my Raspberry Pi PLC project. At the beginning of this project I knew nothing about electronics both software and hardware. It was through various - [Contact](https://chemejon.io/contact/) - This is just a short excerpt for the contact page. ## Categories - [Microcontrollers](https://chemejon.io/category/microcontrollers/) - [Software](https://chemejon.io/category/software/) - [Cloud](https://chemejon.io/category/software/cloud/) - [Cryptography](https://chemejon.io/category/software/cryptography/) - [Data Science](https://chemejon.io/category/software/data-science/) - [Kubernetes](https://chemejon.io/category/software/kubernetes/) - [Logging/Monitoring](https://chemejon.io/category/software/logging-monitoring/) - [Packer/Terraform](https://chemejon.io/category/software/packer-terraform/) ## Tags - [3-D printing](https://chemejon.io/tag/3-d-printing/) - [ADC](https://chemejon.io/tag/adc/) - [admission controller](https://chemejon.io/tag/admission-controller/) - [alan turing](https://chemejon.io/tag/alan-turing/) - [anthos](https://chemejon.io/tag/anthos/) - [anthos on bare metal](https://chemejon.io/tag/anthos-on-bare-metal/) - [anthos service mesh](https://chemejon.io/tag/anthos-service-mesh/) - [arduino](https://chemejon.io/tag/arduino/) - [arduino IDE](https://chemejon.io/tag/arduino-ide/) - [ASM](https://chemejon.io/tag/asm/) - [asymetrical keys](https://chemejon.io/tag/asymetrical-keys/) - [atlas scientific](https://chemejon.io/tag/atlas-scientific/) - [audit](https://chemejon.io/tag/audit/) - [autodesk](https://chemejon.io/tag/autodesk/) - [automation](https://chemejon.io/tag/automation/) - [autopilot](https://chemejon.io/tag/autopilot/) - [BAD_SYSTEM_CONFIG_INFO](https://chemejon.io/tag/bad_system_config_info/) - [bare metal](https://chemejon.io/tag/bare-metal/) - [bgp](https://chemejon.io/tag/bgp/) - [Big Data](https://chemejon.io/tag/big-data/) - [blockchain](https://chemejon.io/tag/blockchain/) - [BSOD](https://chemejon.io/tag/bsod/) - [C++](https://chemejon.io/tag/c/) - [CAD](https://chemejon.io/tag/cad/) - [carmichael's totient](https://chemejon.io/tag/carmichaels-totient/) - [centos](https://chemejon.io/tag/centos/) - [cert-manager](https://chemejon.io/tag/cert-manager/) - [cheap](https://chemejon.io/tag/cheap/) - [cheap low flow meter](https://chemejon.io/tag/cheap-low-flow-meter/) - [cheap PLC](https://chemejon.io/tag/cheap-plc/) - [cifs](https://chemejon.io/tag/cifs/) - [cloud vpn](https://chemejon.io/tag/cloud-vpn/) - [cluster](https://chemejon.io/tag/cluster/) - [cole-palmer](https://chemejon.io/tag/cole-palmer/) - [conductivity](https://chemejon.io/tag/conductivity/) - [Conductivity Sensor](https://chemejon.io/tag/conductivity-sensor/) - [constraint template](https://chemejon.io/tag/constraint-template/) - [constraints](https://chemejon.io/tag/constraints/) - [CRD](https://chemejon.io/tag/crd/) - [Cryprocurrency](https://chemejon.io/tag/cryprocurrency/) - [crypto](https://chemejon.io/tag/crypto/) - [cryptocurrency](https://chemejon.io/tag/cryptocurrency/) - [csv](https://chemejon.io/tag/csv/) - [CSV Processing](https://chemejon.io/tag/csv-processing/) - [custom](https://chemejon.io/tag/custom/) - [data](https://chemejon.io/tag/data/) - [Data Analysis](https://chemejon.io/tag/data-analysis/) - [Data Calculations](https://chemejon.io/tag/data-calculations/) - [Data Cleaning](https://chemejon.io/tag/data-cleaning/) - [data logging](https://chemejon.io/tag/data-logging/) - [Data Transformation](https://chemejon.io/tag/data-transformation/) - [Data Visualization](https://chemejon.io/tag/data-visualization/) - [decryption](https://chemejon.io/tag/decryption/) - [deployment](https://chemejon.io/tag/deployment/) - [dhcp](https://chemejon.io/tag/dhcp/) - [distance](https://chemejon.io/tag/distance/) - [distance measurement](https://chemejon.io/tag/distance-measurement/) - [DIY](https://chemejon.io/tag/diy/) - [DIY PLC](https://chemejon.io/tag/diy-plc/) - [DIY Sensor](https://chemejon.io/tag/diy-sensor/) - [dns](https://chemejon.io/tag/dns/) - [DS18B20](https://chemejon.io/tag/ds18b20/) - [duplicate ip](https://chemejon.io/tag/duplicate-ip/) - [encryption](https://chemejon.io/tag/encryption/) - [enigma](https://chemejon.io/tag/enigma/) - [ESP-8266](https://chemejon.io/tag/esp-8266/) - [ESP8266](https://chemejon.io/tag/esp8266/) - [esxi](https://chemejon.io/tag/esxi/) - [ETH](https://chemejon.io/tag/eth/) - [ethereum](https://chemejon.io/tag/ethereum/) - [euler's totient](https://chemejon.io/tag/eulers-totient/) - [explained](https://chemejon.io/tag/explained/) - [filtration](https://chemejon.io/tag/filtration/) - [FIX](https://chemejon.io/tag/fix/) - [flexvolume](https://chemejon.io/tag/flexvolume/) - [flow sensor](https://chemejon.io/tag/flow-sensor/) - [flowmeter](https://chemejon.io/tag/flowmeter/) - [function](https://chemejon.io/tag/function/) - [fusion 360](https://chemejon.io/tag/fusion-360/) - [Galois LSFR](https://chemejon.io/tag/galois-lsfr/) - [gatekeeper](https://chemejon.io/tag/gatekeeper/) - [gcp](https://chemejon.io/tag/gcp/) - [gke](https://chemejon.io/tag/gke/) - [global access](https://chemejon.io/tag/global-access/) - [google](https://chemejon.io/tag/google/) - [google CAS](https://chemejon.io/tag/google-cas/) - [google cloud](https://chemejon.io/tag/google-cloud/) - [google private certificate authority](https://chemejon.io/tag/google-private-certificate-authority/) - [HC-SR05](https://chemejon.io/tag/hc-sr05/) - [HMI](https://chemejon.io/tag/hmi/) - [how it works](https://chemejon.io/tag/how-it-works/) - [how to](https://chemejon.io/tag/how-to/) - [how to save file](https://chemejon.io/tag/how-to-save-file/) - [http](https://chemejon.io/tag/http/) - [HX711](https://chemejon.io/tag/hx711/) - [industrial](https://chemejon.io/tag/industrial/) - [ingress gateway](https://chemejon.io/tag/ingress-gateway/) - [interface](https://chemejon.io/tag/interface/) - [internal load balancer](https://chemejon.io/tag/internal-load-balancer/) - [iota](https://chemejon.io/tag/iota/) - [ipsec](https://chemejon.io/tag/ipsec/) - [istio](https://chemejon.io/tag/istio/) - [javascript](https://chemejon.io/tag/javascript/) - [k8s](https://chemejon.io/tag/k8s/) - [keccak](https://chemejon.io/tag/keccak/) - [keccak-256](https://chemejon.io/tag/keccak-256/) - [kitchen scale](https://chemejon.io/tag/kitchen-scale/) - [Kubernetes](https://chemejon.io/tag/kubernetes/) - [laboratory](https://chemejon.io/tag/laboratory/) - [level](https://chemejon.io/tag/level/) - [LFSR](https://chemejon.io/tag/lfsr/) - [linear feedback shift register](https://chemejon.io/tag/linear-feedback-shift-register/) - [liquid flow meter](https://chemejon.io/tag/liquid-flow-meter/) - [load cell](https://chemejon.io/tag/load-cell/) - [Loadcell](https://chemejon.io/tag/loadcell/) - [logging](https://chemejon.io/tag/logging/) - [low flow meter](https://chemejon.io/tag/low-flow-meter/) - [lvp share](https://chemejon.io/tag/lvp-share/) - [machine vision](https://chemejon.io/tag/machine-vision/) - [mass flow](https://chemejon.io/tag/mass-flow/) - [mass flow meter](https://chemejon.io/tag/mass-flow-meter/) - [master global access](https://chemejon.io/tag/master-global-access/) - [mci](https://chemejon.io/tag/mci/) - [mcm](https://chemejon.io/tag/mcm/) - [measurement](https://chemejon.io/tag/measurement/) - [membrane](https://chemejon.io/tag/membrane/) - [membrane filtration](https://chemejon.io/tag/membrane-filtration/) - [Merging Datasets](https://chemejon.io/tag/merging-datasets/) - [modulus](https://chemejon.io/tag/modulus/) - [mount](https://chemejon.io/tag/mount/) - [mounting](https://chemejon.io/tag/mounting/) - [MQTT](https://chemejon.io/tag/mqtt/) - [multicluster ingress](https://chemejon.io/tag/multicluster-ingress/) - [multicluster mesh](https://chemejon.io/tag/multicluster-mesh/) - [nano](https://chemejon.io/tag/nano/) - [netapp](https://chemejon.io/tag/netapp/) - [netplan](https://chemejon.io/tag/netplan/) - [networkdrive](https://chemejon.io/tag/networkdrive/) - [networklocation](https://chemejon.io/tag/networklocation/) - [node.js](https://chemejon.io/tag/node-js/) - [NODEMCU](https://chemejon.io/tag/nodemcu/) - [nodered](https://chemejon.io/tag/nodered/) - [nvidia](https://chemejon.io/tag/nvidia/) - [on-prem](https://chemejon.io/tag/on-prem/) - [opa](https://chemejon.io/tag/opa/) - [opencv](https://chemejon.io/tag/opencv/) - [openebs](https://chemejon.io/tag/openebs/) - [Packer](https://chemejon.io/tag/packer/) - [Pandas](https://chemejon.io/tag/pandas/) - [persistent volume](https://chemejon.io/tag/persistent-volume/) - [pfsense](https://chemejon.io/tag/pfsense/) - [ph](https://chemejon.io/tag/ph/) - [pH sensor](https://chemejon.io/tag/ph-sensor/) - [pichi](https://chemejon.io/tag/pichi/) - [ping](https://chemejon.io/tag/ping/) - [PLC](https://chemejon.io/tag/plc/) - [pod security policy](https://chemejon.io/tag/pod-security-policy/) - [port forward](https://chemejon.io/tag/port-forward/) - [Power Bi](https://chemejon.io/tag/power-bi/) - [private clusters](https://chemejon.io/tag/private-clusters/) - [private key](https://chemejon.io/tag/private-key/) - [problem](https://chemejon.io/tag/problem/) - [programming](https://chemejon.io/tag/programming/) - [public key](https://chemejon.io/tag/public-key/) - [python](https://chemejon.io/tag/python/) - [Recursive Reference](https://chemejon.io/tag/recursive-reference/) - [rego](https://chemejon.io/tag/rego/) - [rhel](https://chemejon.io/tag/rhel/) - [rho](https://chemejon.io/tag/rho/) - [round constant](https://chemejon.io/tag/round-constant/) - [router](https://chemejon.io/tag/router/) - [rpi](https://chemejon.io/tag/rpi/) - [rsa](https://chemejon.io/tag/rsa/) - [savingfile](https://chemejon.io/tag/savingfile/) - [sensor](https://chemejon.io/tag/sensor/) - [sensors](https://chemejon.io/tag/sensors/) - [serial](https://chemejon.io/tag/serial/) - [sha-3](https://chemejon.io/tag/sha-3/) - [sponge construction](https://chemejon.io/tag/sponge-construction/) - [static ip](https://chemejon.io/tag/static-ip/) - [step](https://chemejon.io/tag/step/) - [subiquity](https://chemejon.io/tag/subiquity/) - [tekton](https://chemejon.io/tag/tekton/) - [template](https://chemejon.io/tag/template/) - [terraform](https://chemejon.io/tag/terraform/) - [theta](https://chemejon.io/tag/theta/) - [Time Based Data](https://chemejon.io/tag/time-based-data/) - [trapdoor function](https://chemejon.io/tag/trapdoor-function/) - [turing machine](https://chemejon.io/tag/turing-machine/) - [turning-complete](https://chemejon.io/tag/turning-complete/) - [tutorial](https://chemejon.io/tag/tutorial/) - [ubuntu](https://chemejon.io/tag/ubuntu/) - [ultrasonic](https://chemejon.io/tag/ultrasonic/) - [ultrasonic level sensor](https://chemejon.io/tag/ultrasonic-level-sensor/) - [unifi](https://chemejon.io/tag/unifi/) - [usb](https://chemejon.io/tag/usb/) - [visualization](https://chemejon.io/tag/visualization/) - [vmware](https://chemejon.io/tag/vmware/) - [vpn](https://chemejon.io/tag/vpn/) - [vsphere](https://chemejon.io/tag/vsphere/) - [whereami](https://chemejon.io/tag/whereami/) - [windows](https://chemejon.io/tag/windows/) - [windows share](https://chemejon.io/tag/windows-share/) - [WINDOWS10](https://chemejon.io/tag/windows10/) - [wireless measurement of flow](https://chemejon.io/tag/wireless-measurement-of-flow/) - [workstation](https://chemejon.io/tag/workstation/) - [wsl2](https://chemejon.io/tag/wsl2/) - [ubuntu 20.04](https://chemejon.io/tag/ubuntu-20-04/) - [deploy](https://chemejon.io/tag/deploy/) - [software](https://chemejon.io/tag/software/) - [solar](https://chemejon.io/tag/solar/) - [monitoring](https://chemejon.io/tag/monitoring/) - [enphase](https://chemejon.io/tag/enphase/) - [telegraf](https://chemejon.io/tag/telegraf/) - [influxdb](https://chemejon.io/tag/influxdb/) - [production](https://chemejon.io/tag/production/) - [modules](https://chemejon.io/tag/modules/) - [grafana](https://chemejon.io/tag/grafana/) - [dashboard](https://chemejon.io/tag/dashboard/) - [net consumption](https://chemejon.io/tag/net-consumption/) - [pv](https://chemejon.io/tag/pv/) - [photovoltaic](https://chemejon.io/tag/photovoltaic/) - [gateway](https://chemejon.io/tag/gateway/) - [egress](https://chemejon.io/tag/egress/) - [istiod](https://chemejon.io/tag/istiod/) - [pilot](https://chemejon.io/tag/pilot/) - [usecases](https://chemejon.io/tag/usecases/) - [kiali](https://chemejon.io/tag/kiali/) - [prometheus](https://chemejon.io/tag/prometheus/) - [service mesh](https://chemejon.io/tag/service-mesh/) - [traffic metrics](https://chemejon.io/tag/traffic-metrics/) - [observability](https://chemejon.io/tag/observability/) - [envoy](https://chemejon.io/tag/envoy/) - [proxy](https://chemejon.io/tag/proxy/) - [metalLB](https://chemejon.io/tag/metallb/) - [egress to external ip](https://chemejon.io/tag/egress-to-external-ip/) - [egress gateway](https://chemejon.io/tag/egress-gateway/) - [service entry](https://chemejon.io/tag/service-entry/) - [destination rule](https://chemejon.io/tag/destination-rule/) - [virtual service](https://chemejon.io/tag/virtual-service/) - [virtualservice](https://chemejon.io/tag/virtualservice/) - [destinationrule](https://chemejon.io/tag/destinationrule/) - [meshconfig](https://chemejon.io/tag/meshconfig/) - [outboundtrafficpolicy](https://chemejon.io/tag/outboundtrafficpolicy/) - [canary deployment](https://chemejon.io/tag/canary-deployment/) - [subsets](https://chemejon.io/tag/subsets/) - [bookinfo](https://chemejon.io/tag/bookinfo/) - [sourcelabels](https://chemejon.io/tag/sourcelabels/) - [visual](https://chemejon.io/tag/visual/) - [tips](https://chemejon.io/tag/tips/) - [best practice](https://chemejon.io/tag/best-practice/)