<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Chegwin.Org</title>
    <link>https://www.chegwin.org/</link>
    <description>Recent content on Chegwin.Org</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 04 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.chegwin.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MQTT Home Assistant Switch setup</title>
      <link>https://www.chegwin.org/posts/mqtt_switch_setup.html</link>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/mqtt_switch_setup.html</guid>
      <description>Setting up MQTT switches in Home Assistant A work in progress
Introduction I wanted to create some switches in Home Assistant already controlled via a Raspberry Pi. The Pi uses a relay board and sequences of button presses to open/close 3 velux windows. The relay board is connected to a proprietary Velux remote control and simulates button presses. It&amp;rsquo;s horrible, but it&amp;rsquo;s been working for 11 years.
Original concept video: Raspberry Pi Velux opener Source code: https://github.</description>
    </item>
    
    <item>
      <title>Curriculum Vitae - Tim Gibbon</title>
      <link>https://www.chegwin.org/posts/curriculum_vitae_tim_gibbon.html</link>
      <pubDate>Tue, 27 Jan 2026 16:40:03 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/curriculum_vitae_tim_gibbon.html</guid>
      <description>Tim Gibbon 07977 549 321 tng@chegwin.org Professional Experience Apr 2025 - Current DevSecOps Director, Sense Technology Group Limited Greenfield infrastructure build out. Cyber Essentials and ISO27001 certification. AWS Organisations, Control Tower and Well Architected Framework implementation. CI/CD rollout for all microservices and (Terraform) infrastructure. Monitoring, Alerting and Logging rollout. Exams: GCP ACE (renewal), CKA (3rd renewal). Jul 2024 - Mar 2025 Senior Platform Engineer, AND Digital NHS Server Remediation. AWS Professional Solutions Architect.</description>
    </item>
    
    <item>
      <title>Espeak for Text to Speak conversion with a Northern English accent</title>
      <link>https://www.chegwin.org/posts/espeak.html</link>
      <pubDate>Sat, 06 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/espeak.html</guid>
      <description>Text to speech conversion from the command line Create the message and output as a wav file $ sudo apt-get install espeak $ espeak -s 120 -v english-north &amp;#34;Merry Christmas from the Guff Gibbos. Come back on the 22nd of December when this message will be replaced. This message was made in Upper Ramsbottom without the use of AI -w christmas2025.wav&amp;#34; Convert to mp3 $ ffmpeg -i christmas2025.wav -acodec mp3 christmas2025.</description>
    </item>
    
    <item>
      <title>AWS Timestream for InfluxV2 to InfluxV3 migration</title>
      <link>https://www.chegwin.org/posts/aws-timestream-influx-v2-v3-migration.html</link>
      <pubDate>Tue, 04 Nov 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/aws-timestream-influx-v2-v3-migration.html</guid>
      <description>Howto Backup and Restore a Timestream for InfluxDB 2 database or migrate to InfluxDB 3 AWS announced the availability of Timestream for InfluxDB 3 on the 16th of October 2025. The documentation is currently limited and so migration options are not detailed.
This guide explains one way to migrate the data between AWS Timestream for InfluxDBv2 to Timestream for InfluxDB 3 (or extract the data to any influx compatible database). I recommend that you check the data is consistent at every step.</description>
    </item>
    
    <item>
      <title>Cheapskate Grafana in ECS backed by EFS</title>
      <link>https://www.chegwin.org/posts/grafana-ecs-efs-howto.html</link>
      <pubDate>Sun, 02 Nov 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/grafana-ecs-efs-howto.html</guid>
      <description>Introduction This blog post explains the technical implementation of Grafana on ECS backed by EFS via Terraform/Tofu, based on this Github repository.
Overview This is a proof-of-concept for setting up Grafana cheaply, without using AWS Managed Grafana. It&amp;rsquo;s designed to be cost effective using the native SQLite on a filesystem. Data sources, credentials and dashboards persist between container restarts. It generates a new VPC, with 3 public subnets, deploys an ECS cluster and EFS into those subnets.</description>
    </item>
    
    <item>
      <title>Cross Account S3 Replication with Terraform</title>
      <link>https://www.chegwin.org/posts/s3_cross_account_replication.html</link>
      <pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/s3_cross_account_replication.html</guid>
      <description>Introduction This blog post explains the technical implementation of cross-account Amazon S3 replication using Terraform, based on my miniature-enigma GitHub repository.
Overview This is a proof-of-concept for setting up a secure and automated replication of S3 objects from a source bucket in one AWS account to a destination bucket in a separate AWS account. This is useful for disaster recovery, data aggregation, or regulatory compliance. The project leverages Terraform, an infrastructure-as-code tool, to define the necessary AWS resources.</description>
    </item>
    
    <item>
      <title>Cloudfront with Origin Access Control, S3 bucket and terraform/tofu</title>
      <link>https://www.chegwin.org/posts/cloudfront_s3_oac.html</link>
      <pubDate>Sat, 28 Jun 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/cloudfront_s3_oac.html</guid>
      <description>Introduction I&amp;rsquo;ve been struggling to find a simple working example for using Cloudfront with S3 buckets and OAC. Here&amp;rsquo;s my working example. The full code can be found in github.
locals { region = &amp;#34;us-east-1&amp;#34; domain_name = &amp;#34;mysite.com&amp;#34; subdomain = &amp;#34;www&amp;#34; } ############# # Cloudfront ############# module &amp;#34;cdn&amp;#34; { source = &amp;#34;terraform-aws-modules/cloudfront/aws&amp;#34; version = &amp;#34;4.1.0&amp;#34; comment = format(&amp;#34;CloudFront Distribution For %s&amp;#34;, local.domain_name) aliases = [&amp;#34;${local.subdomain}.${local.domain_name}&amp;#34;,&amp;#34;${local.domain_name}&amp;#34;] default_root_object = &amp;#34;index.html&amp;#34; price_class = &amp;#34;PriceClass_100&amp;#34; enabled = true create_origin_access_control = true origin_access_control = { &amp;#34;s3_oac_${local.</description>
    </item>
    
    <item>
      <title>No audio from Pirate Audio (Debian Bookworm)</title>
      <link>https://www.chegwin.org/posts/pirate_no_audio.html</link>
      <pubDate>Sat, 31 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/pirate_no_audio.html</guid>
      <description>Introduction I&amp;rsquo;ve been playing with the Pimoroni Pirate Audio board as a potential alarm clock to tie into Home Assistant. I&amp;rsquo;m running Debian 12 (bookworm) and have been trying to get the audio to play something. It appears that the vc4-kms-v3d is stopping the audio from working correctly. I found that by commenting editing the following lines in the /boot/firmware/config.txt, I was able to get the board to output audio consistently.</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://www.chegwin.org/posts/about.html</link>
      <pubDate>Wed, 23 Oct 2024 20:42:01 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/about.html</guid>
      <description>About tng Then Born in Buxton, lived the first 18 years of my life in Chapel-in-the-filth.
Now I relocated to the North West in 2003 and am currently working on something special. I live in Ramsbottom, North of Manchester.
Minimal CV. Thesis source LaTeX. Thesis Data. </description>
    </item>
    
    <item>
      <title>EKS Cluster &#43; Gateway API using Tofu/Terraform</title>
      <link>https://www.chegwin.org/posts/tofu_iac_eks_cluster_gateway_api_helm.html</link>
      <pubDate>Sun, 15 Sep 2024 08:40:03 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/tofu_iac_eks_cluster_gateway_api_helm.html</guid>
      <description>Streamlining EKS Cluster + Ingress Setup with Tofu/Terraform and GitHub Actions As Kubernetes continues to gain popularity as the de facto standard for container orchestration, managing and deploying clusters in a consistent and repeatable manner becomes increasingly important. In this blog post, we&amp;rsquo;ll explore a minimal and streamlined approach to creating and managing an Amazon Elastic Kubernetes Service (EKS) cluster on AWS using Infrastructure as Code (IaC) principles, leveraging Terraform configurations and GitHub Actions workflows.</description>
    </item>
    
    <item>
      <title>Network_diagnostics_pitft</title>
      <link>https://www.chegwin.org/posts/network_diagnostics_pitft.html</link>
      <pubDate>Sun, 07 Apr 2024 16:20:16 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/network_diagnostics_pitft.html</guid>
      <description>Network Diagnostics PiTFT I was asked to create a quick tool to perform a set of basic connectivity checks for field engineers who are unable to get servers to connect to the network. The engineers often don&amp;rsquo;t want to fire up their laptops to check Ethernet, IP, DNS and HTTP checks. I wrote a tool to run on the ethernet enabled RPis to perform these checks using an Adafruit PiTFT.</description>
    </item>
    
    <item>
      <title>Elasticsearch on Kubernetes benchmarking with esrally</title>
      <link>https://www.chegwin.org/posts/elasticsearch_kubernetes_eck_esrally.html</link>
      <pubDate>Sun, 20 Aug 2023 10:59:57 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/elasticsearch_kubernetes_eck_esrally.html</guid>
      <description>Elasticsearch on Kubernetes (ECK) worked example with terraform, GKE, podman &amp;amp; esrally I&amp;rsquo;m interested in running elasticsearch in kubernetes since an interview question I got asked: &amp;ldquo;What service would you not run in Kubernetes?&amp;rdquo;. I thought about this at the time and answered elasticsearch, my reasons being the storage, replication and the upgrades. I figured it would be easier to run this on either bare metal or SaaS (opensearch). I hadn&amp;rsquo;t heard about ECK at the time.</description>
    </item>
    
    <item>
      <title>EKS Kong Gateway Real IP via ProxyProtocol v2 and AWS Load Balancer Controller </title>
      <link>https://www.chegwin.org/posts/kong-real-ip-proxy-pass.html</link>
      <pubDate>Mon, 29 May 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/kong-real-ip-proxy-pass.html</guid>
      <description>Finding the Kong Gateway Real IP on EKS - a simple guide It is difficult to determine the correct method to find the Real IPs for IP addresses behind a Kong Gateway controlled load balancer. The documentation has an entry for both ExternalTrafficPolicy: Local, Proxy Protocol and a section applying to GKE/AKS and EKS. For example there is a sentence inside the ExternalTrafficPolicy: Local paragraph which reads &amp;ldquo;Please note that this is not supported by all of the public Cloud providers&amp;rdquo;.</description>
    </item>
    
    <item>
      <title>Skiing Courchevel 2023</title>
      <link>https://www.chegwin.org/posts/skiing_courchevel_2023.html</link>
      <pubDate>Sun, 08 Jan 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/skiing_courchevel_2023.html</guid>
      <description>Skiing Courchevel 2023 Ros Green Run before lessons Flying squirrel demonstrates his snowplough to wreck filming Great Uncle Alöis 1 Great Uncle Alöis 2 Great Uncle Alöis Gone Great Uncle Alöis Perfect Parallels Great Uncle Alöis catchup Great Uncle Alöis still not catchup Ros post lessons 1 Ros post lessons 2 Ros post lessons 3 Ros post lessons 4 Last day, Ros cold hng ski-guiding 1 Flying squirrel can parallel Suisses Ros descending, sill cold Parallel Flying Squirrel 2, heavy snow Heavy snow 2 Whiteout 1 </description>
    </item>
    
    <item>
      <title>Ipv6 EC2 Apache t3.nano</title>
      <link>https://www.chegwin.org/posts/ipv6_ec2_apache_t3_nano.html</link>
      <pubDate>Mon, 28 Jun 2021 11:48:14 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/ipv6_ec2_apache_t3_nano.html</guid>
      <description>Creating AWS EC2 t3 nano with Apache using Terraform. This code generating an EC2 instance with IPv6 networking with an SSH key copied from the source server. It uses SSM for local access, copying content from a local S3 bucket to populate the /data/sites directory which Apache then serves up. I&amp;rsquo;ve not published the Apache configuration files here.
https://github.com/tommybobbins/congenial-engine
I had some problems with t3.nano OOMs during startup, so the userdata adds a temporary 1GB swapfile in the userdata.</description>
    </item>
    
    <item>
      <title>Terraform AWS CloudFront Static site and S3 bucket</title>
      <link>https://www.chegwin.org/posts/static_site.html</link>
      <pubDate>Mon, 28 Jun 2021 11:35:55 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/static_site.html</guid>
      <description>Creating a CloudFront + S3 static site in Terraform Creating a simple static site using serverless computing. This was a project which would lend itself to Hugo, S3 and/or CloudFront. The site used https://gohugo.io/ to generate the content, the github repo for the project is https://github.com/tommybobbins/chapel_ramblers_static_site. Alex covers this step by step in his blog here: https://www.alexhyett.com/terraform-s3-static-website-hosting/
To upload content additions that can be used is the local-exec to copy the site content in place from var.</description>
    </item>
    
    <item>
      <title>Growing the Underlying Disks for DRBD - move from smaller disks to bigger</title>
      <link>https://www.chegwin.org/posts/grow_drbd_underlying_disks.html</link>
      <pubDate>Sun, 18 Apr 2021 21:34:35 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/grow_drbd_underlying_disks.html</guid>
      <description>Moving from small disks to big disks in DRBD using logical volume manager. How to move DRBD from smaller disks to bigger disks without needing a full resync. Disclaimer - Check with a DRBD expert before performing any kind of disk migration using DRBD. Take Backups. The idea behind this HOWTO is to perform the disk growth without a full DRBD resync.
Environment Assuming we have a DRBD cluster as follows:</description>
    </item>
    
    <item>
      <title>Cold backup of QEMU/KVM images</title>
      <link>https://www.chegwin.org/posts/cold_backup_kvm_qemu.html</link>
      <pubDate>Sat, 03 Apr 2021 15:43:22 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/cold_backup_kvm_qemu.html</guid>
      <description>Taking a cold backup of a QEMU or KVM VMs If you need to take backups of qcow2 images, the following script is useful. QEMU uses two pieces of information, the xml file which makes up the metadata about the VM (CPU, memory, Network configuration) and the disk image itself which is a qcow2 image by defalt.
Backup #!/bin/bash BACKUP_DIR=&amp;#34;/tng_nfs/KVM_GOLD&amp;#34; if ! [ -d ${BACKUP_DIR} ] then echo &amp;#34;Backup directory $BACKUP_DIR does not exist&amp;#34; fi for SERVER in $(virsh list --all | awk &amp;#39;{print $2}&amp;#39; | egrep -v &amp;#34;Name&amp;#34; | egrep -v &amp;#34;^$&amp;#34;) do echo $SERVER virsh dumpxml ${SERVER} &amp;gt; ${BACKUP_DIR}/${SERVER}.</description>
    </item>
    
    <item>
      <title>Raspberry Pi video switcher</title>
      <link>https://www.chegwin.org/posts/rpi_vid_switcher.html</link>
      <pubDate>Thu, 18 Mar 2021 22:59:22 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/rpi_vid_switcher.html</guid>
      <description>Switching a looped video to another video when a GPIO pin is pushed Assuming we have two videos, vid1 and vid2. We want to loop file1 and then when the GPIO button is pushed, we play vid2 to completion, then switch back to vid1. Here is some code to do that.
#!/usr/bin/python3 from gpiozero import LED, Button from time import sleep from datetime import datetime from subprocess import Popen from signal import pause from os import system import os button1 = Button(10) vid1=&amp;#34;home.</description>
    </item>
    
    <item>
      <title>Elasticsearch 6 backups via snapshots for CentOS 7.0</title>
      <link>https://www.chegwin.org/posts/elasticsearch_6_backups_centos7.html</link>
      <pubDate>Sun, 21 Feb 2021 15:42:18 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/elasticsearch_6_backups_centos7.html</guid>
      <description>Elasticsearch 6.2 backups on CentOS 7/RHEL 7 I need to run Elasticsearch 6.2 and upgrade to Elasticsearch 7.11, making snapshots at each stage (prior to 6.8 upgrade and 7.11). In order to install ES 6.2.2, this was downloaded and built from a zipfile as the RPM format is incompatible with newer rpm releases. This method might not be a complete as installing a package from the repo, The problem I had was with the path.</description>
    </item>
    
    <item>
      <title>K3S NFS Root howto</title>
      <link>https://www.chegwin.org/posts/k3s_raspi_nfs_mount.html</link>
      <pubDate>Sun, 07 Feb 2021 22:28:45 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/k3s_raspi_nfs_mount.html</guid>
      <description>Using K3S and Raspberry Pi Network booting (no SD Cards). Due to NFS not supporting overlayfs in all kernels (yet), if you want to run K3S for NFS booting Pis, there is an install option you need to add INSTALL_K3S_EXEC=&amp;quot;&amp;ndash;snapshotter=native&amp;quot; to the install process. Here is a quick description of the problem and my setup in case this is of any use.
Description of the problem. Installing K3S on Network boot Raspberry Pi 3/4 Booting the Raspberry Pi cmdline.</description>
    </item>
    
    <item>
      <title>Raspberrypi_nfsboot</title>
      <link>https://www.chegwin.org/posts/raspberrypi_nfsboot.html</link>
      <pubDate>Sat, 30 May 2020 17:57:12 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/raspberrypi_nfsboot.html</guid>
      <description>Booting a Raspberry Pi from SD card, root filesystem is NFS Other documentation has recommended the following line
dwc_otg.lpm_enable=0 console=tty1 root=/dev/nfs nfsroot=192.168.1.23:/data/raspbian_nfs/2020_06,tcp,rw,vers=3 ip=dhcp rootfstype=nfs elevator=deadline rootwait This kernel panicked for me each time due to the rootfstype=nfs, so after some digging, I used:
console=tty1 root=/dev/nfs nfsroot=192.168.1.23:/data/raspbian_nfs/2020_06,vers=3 rw ip=dhcp rootwait elevator=deadline On the NFS server, /etc/exports contains:
/data/raspbian_nfs/2020_06 192.168.1.0/24(no_root_squash,rw,async,no_subtree_check,insecure) /data/raspbian_nfs/2020_06 is populated using:
# mount 192.168.1.23:/data/raspbian_nfs/2020_06 /mnt # rsync -Phax --numeric-ids / /mnt/data/raspbian_nfs/2020_06 The /etc/dhcp/dhcpd.</description>
    </item>
    
    <item>
      <title>Mysql_max_connections</title>
      <link>https://www.chegwin.org/posts/mysql_max_connections.html</link>
      <pubDate>Wed, 29 Apr 2020 20:58:12 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/mysql_max_connections.html</guid>
      <description>Calculating the Max connections in MySQL programmatically in one pass Sometimes you need to calculate the percentage of the maximum number of MySQL connections that are being used at any one time. Here is a piece of SQL that I&amp;rsquo;m using:
MariaDB [(none)]&amp;gt; SELECT VARIABLE_VALUE INTO @maxconn FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME=&amp;#34;MAX_CONNECTIONS&amp;#34;; SELECT COUNT(1) INTO @currentconn FROM INFORMATION_SCHEMA.PROCESSLIST; SELECT (@currentconn/@maxconn)*100 AS &amp;#34;% Connections used&amp;#34;; +--------------------+ | % Connections used | +--------------------+ | 3.</description>
    </item>
    
    <item>
      <title>Find and mail GFS locks</title>
      <link>https://www.chegwin.org/posts/find_gfs_locks.html</link>
      <pubDate>Sun, 12 Apr 2020 21:48:38 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/find_gfs_locks.html</guid>
      <description>Shell script to email when GFS locks are found in /var/log/messages. Ensure that you change the MAIL_TO and the MAIL_FROM variables before running the script
#!/bin/bash HISTORICAL_OUTPUT=/tmp/gfs2_locks.old CURRENT_OUTPUT=/tmp/gfs2_locks.new CHECK_LOCKS_OUT=/tmp/check_locks.log MAIL_TO=myemail@null.net MAIL_FROM=root@servername MAIL_SUBJECT=&amp;#34;GFS locks exist on ${HOSTNAME}&amp;#34; MATCHED_MESSAGE=$(/bin/grep &amp;#34;task gfs2&amp;#34; /var/log/messages | /bin/grep &amp;#34;blocked for more than 120 seconds&amp;#34; | /usr/bin/tail -1) echo $MATCHED_MESSAGE &amp;gt;$CURRENT_OUTPUT send_email() { #echo &amp;#34;Sending email here&amp;#34; mailx -r $MAIL_FROM -s &amp;#34;${MAIL_SUBJECT}&amp;#34; $MAIL_TO &amp;lt;&amp;lt;EOF $MATCHED_MESSAGE EOF } </description>
    </item>
    
    <item>
      <title>Finding the longest running cron jobs in Magento</title>
      <link>https://www.chegwin.org/posts/magento_longest_running_cron_jobs.html</link>
      <pubDate>Tue, 07 Apr 2020 20:38:43 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/magento_longest_running_cron_jobs.html</guid>
      <description>Finding the longest running cron jobs in Magento using MySQL:
SELECT job_code,scheduled_at,executed_at,finished_at,TIMEDIFF(finished_at,executed_at) AS timediff FROM cron_schedule ORDER BY timediff DESC LIMIT 20; </description>
    </item>
    
    <item>
      <title>Rsync via SSH to a port other than 22</title>
      <link>https://www.chegwin.org/posts/rsync_to_nonstandard_port.html</link>
      <pubDate>Tue, 07 Apr 2020 20:27:03 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/rsync_to_nonstandard_port.html</guid>
      <description>Rsync via SSH to a port which is not 22 rsync -avz -e &amp;#34;ssh -p 2020&amp;#34; user@remoteip:/path/to/files/ /local/path/ Throttle rsync to prevent it from using too much bandwidth rsync -avz -e &amp;#34;ssh -p 2020&amp;#34; --numeric-ids --bwlimit=1.5m user@remoteip:/path/to/files/ /local/path/ </description>
    </item>
    
    <item>
      <title>Prefer IPv4 routing over IPv6</title>
      <link>https://www.chegwin.org/posts/prefer_ipv4_routing_over_ipv6.html</link>
      <pubDate>Tue, 07 Apr 2020 20:13:18 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/prefer_ipv4_routing_over_ipv6.html</guid>
      <description>If you have an IPv4 and and IPv6 default gateway, but you wish for mail to be routed via the IPv4 network instead of the IPv4 then create a file /etc/gai.conf which contains:
# cat /etc/gai.conf &amp;lt;&amp;lt;EOF label ::1/128 0 label ::/0 1 label 2002::/16 2 label ::/96 3 label ::ffff:0:0/96 4 precedence ::1/128 50 precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 100 EOF </description>
    </item>
    
    <item>
      <title>Unix_history</title>
      <link>https://www.chegwin.org/posts/unix_history.html</link>
      <pubDate>Fri, 27 Mar 2020 22:58:50 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/unix_history.html</guid>
      <description>Unix History UN*X By Alan Filipski
The UN*X brand operating system was writting by two computer science researchers in a closet in the attic of a famous research laboratory (The Labs) in the late 1960s. The authors had complete freedom to design an operating system according to their own wishes without management constraints. This was because everyone at The Labs, including the management, thought they were janitors who spent their time in the closet wringing out mops or something.</description>
    </item>
    
    <item>
      <title>GPG Key</title>
      <link>https://www.chegwin.org/posts/gpg.html</link>
      <pubDate>Fri, 27 Mar 2020 22:54:02 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/gpg.html</guid>
      <description>pub rsa4096 2014-07-08 [SC] F2D3 D521 5BAB 8209 8A87 193A D7C0 05F8 09DA DAE3 uid [ultimate] Tim Gibbon (DOB 6-3-1973) &amp;lt;tng@chegwin.org&amp;gt; sub rsa4096 2014-07-08 [E] </description>
    </item>
    
    <item>
      <title>Linux</title>
      <link>https://www.chegwin.org/posts/linux.html</link>
      <pubDate>Fri, 27 Mar 2020 22:32:34 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/linux.html</guid>
      <description>Linux links Historical links here.
[ UK Mirror archive for everything ] (https://mirrorservice.org) [ VNC-Virtual Nework Computing ] (https://realvnc.com) [ Slashdot ] (https://slashdot.org) [ How to Pronounce Linux (taken from ftp.funet.fi) ] (ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/SillySounds/english.au) [ Debian Homepage ] (https://debian.org) [ GNU ] (https://gnu.org) [ Fedora project ] (https://fedora.org) [ SuSe ] (https://suse.com) [ Matt Welsh. Original Author of getting started. ] (http://matt-welsh.blogspot.com/) [ User Friendly the Comic Strip ] (https://userfriendly.org) Gnuplorer A quick shell script ( https://github.</description>
    </item>
    
    <item>
      <title>Debian Preseeding with apt-cacher-ng</title>
      <link>https://www.chegwin.org/posts/debian_preseeding_apt_cacher_ng.html</link>
      <pubDate>Tue, 06 Nov 2018 20:41:11 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/debian_preseeding_apt_cacher_ng.html</guid>
      <description>Here is a working snippet of a preseed.cfg which works with apt-cacher-ng out of the box:
# Mirror settings # If you select ftp, the mirror/country string does not need to be set. #d-i mirror/protocol string ftp #d-i mirror/country string GB d-i mirror/country string manual d-i mirror/http/hostname string ftp.uk.debian.org d-i mirror/http/directory string /debian d-i mirror/http/proxy string http://192.168.1.23:3142/ References: https://www.debian.org/releases/stretch/example-preseed.txt http://www.panticz.de/Install-APT-caching-proxy
You will need to change the IP of the apt-cacher-ng server to the correct IP/hostname - 192.</description>
    </item>
    
    <item>
      <title>Wireless Things CR2032 battery life after 1 year.</title>
      <link>https://www.chegwin.org/posts/wireless_things_sensors_1year.html</link>
      <pubDate>Thu, 11 May 2017 22:11:11 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/wireless_things_sensors_1year.html</guid>
      <description>Wireless things sensors after 1 year Wireless things sensors are temperature sensors with a very long batter life. They. Here is an updated graph of all temperature sensor readings over time.
Temperatures over time The external sensors voltages decreased, but appear to have levelled off. This is probably temperature related.
Voltages over time Conclusion: Wireless things temperature sensors are/were great value and the battery life is greater than 1 year from a CR2032.</description>
    </item>
    
    <item>
      <title>Wireless Things, LLAP and house of the future</title>
      <link>https://www.chegwin.org/posts/wireless_things_llap_house_of_the_future.html</link>
      <pubDate>Sat, 09 Jul 2016 22:58:50 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/wireless_things_llap_house_of_the_future.html</guid>
      <description>Wireless things temperature sensors, LLAP and the house of the future. ESP8266 Woes I have spent a large amount of time trying to get the ESP8266s to sleep. I have this problem: http://www.esp8266.com/viewtopic.php?f=32&amp;amp;t=6763
I&amp;rsquo;ve tried to ground the pins as discussed in that thread. Given that the batteries last two to three weeks, the debugging is frustratingly long. I wanted to look at other alternatives.
The Alternative I looked again at Ciseco&amp;rsquo;s / Wireless Things range again.</description>
    </item>
    
    <item>
      <title>Splitting an mbox into individual mails</title>
      <link>https://www.chegwin.org/posts/mbox_split.html</link>
      <pubDate>Mon, 15 Feb 2016 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/mbox_split.html</guid>
      <description>Splitting mbox into individual mails Splitting an mbox format mailbox into individual mails using formail:
formail -ds sh -c &amp;#39;cat &amp;gt; msg.${FILENO}&amp;#39; &amp;lt; incoming_mbox_fle </description>
    </item>
    
    <item>
      <title>ESP8266 House of the future</title>
      <link>https://www.chegwin.org/posts/house_of_the_future_esp8266.html</link>
      <pubDate>Tue, 03 Nov 2015 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/house_of_the_future_esp8266.html</guid>
      <description>Update to the Central Heating System This describes an update which uses ESP8266 as remote sensors and removing Google calendar.
Main processes interaction in the PiThermostat code. Software stack central heating system We have recently updated the Raspberry Pi based Thermostat as discussed in previous posts and shown in a YouTube video. The idea is to move away from using multiple Raspberry Pis as networked temperature sensors, but use one central Raspberry Pi and serveral ESP8266s instead.</description>
    </item>
    
    <item>
      <title>Printing multiple PDFs quickly to a postscript printer</title>
      <link>https://www.chegwin.org/posts/printing_multiple_postscripts_fast.html</link>
      <pubDate>Sun, 02 Mar 2014 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/printing_multiple_postscripts_fast.html</guid>
      <description>Printing PDFs quickly from Linux onto a Postscript compatible printer Printing large quantities of the same document from GNU/Linux quickly When using a Postscript printer, it is much quicker to convert a PDF to a Postscript and then print natively:
tng@coalman $ sudo apt-get install poppler-utils tng@coalman $ pdftops filename.pdf; lpr -# 26 filename.ps This converts the file filename.pdf to a postscript file filename.ps and then sends it to the default printer 26 times.</description>
    </item>
    
    <item>
      <title>PiPoEGUSCA - RaspberryPi Power over Ethernet Garden Ultrasonic Squirter Camera Alarm</title>
      <link>https://www.chegwin.org/posts/pipoegusca.html</link>
      <pubDate>Tue, 15 Oct 2013 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/pipoegusca.html</guid>
      <description>PiPoEGUSCA - RaspberryPi Power over Ethernet Garden Ultrasonic Squirter Camera Alarm Raspberry Pi Powered Garden Deterrent Over the summer, we have developed a small project to stop animals from going into a small raised flower bed. The idea was to use a detector and water pistol to prevent them from spoiling the flower bed. The raised bed was built for a child to learn to garden in.
Brief The customer had just had his garden landscaped and wished to stop cats and foxes from leaving tokens of gratitude.</description>
    </item>
    
    <item>
      <title>Using Django group permissions for Object (Row) Level permissions</title>
      <link>https://www.chegwin.org/posts/django_group_perms.html</link>
      <pubDate>Sun, 16 Jun 2013 00:00:00 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/django_group_perms.html</guid>
      <description>Using Django group permissions for Object (Row) Level permissions There are better ways to do row (object) level permissions in Django, but I needed something fairly simple. I wanted Customers to be able to use the Admin interface to correct their own details, but not be able to view the other customers. SuperUsers should be able to see all rows, only users belonging to the correct Group are allowed to edit their details and not see other Customers.</description>
    </item>
    
    <item>
      <title>Printing_html_css_colours</title>
      <link>https://www.chegwin.org/posts/printing_html_css_colours.html</link>
      <pubDate>Sun, 05 Jun 2011 19:55:56 +0100</pubDate>
      
      <guid>https://www.chegwin.org/posts/printing_html_css_colours.html</guid>
      <description>Printing out HTML/CSS Colours
I was trawling around websites trying to get an idea for colour schemes. They all appear to be infested with banner ads and anti-virus peddlers.
For people who like to roll their own, here is a Python script to dump out the hex codes for the first 16**3 colours:
#!/usr/bin/python #Script to dump out all basic web colours in a table hex_colours=[&amp;#39;0&amp;#39;,&amp;#39;1&amp;#39;,&amp;#39;2&amp;#39;,&amp;#39;3&amp;#39;,&amp;#39;4&amp;#39;,&amp;#39;5&amp;#39;,&amp;#39;6&amp;#39;,&amp;#39;7&amp;#39;,&amp;#39;8&amp;#39;,&amp;#39;9&amp;#39;,&amp;#39;A&amp;#39;,&amp;#39;B&amp;#39;,&amp;#39;C&amp;#39;,&amp;#39;D&amp;#39;,&amp;#39;E&amp;#39;,&amp;#39;F&amp;#39;] counter=1; print &amp;#34;&amp;#34;&amp;#34; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt; &amp;lt;body&amp;gt; &amp;lt;table&amp;gt; &amp;#34;&amp;#34;&amp;#34; print &amp;#39;&amp;lt;tr&amp;gt;&amp;#39; for alpha1 in hex_colours: for alpha2 in hex_colours: alpha12=alpha1+alpha2 for alpha3 in hex_colours: alpha123=alpha12+alpha3 print &amp;#39;&amp;lt;td style=\&amp;#34;background-color:#%s ;\&amp;#34;&amp;gt;%s&amp;lt;/td&amp;gt;&amp;#39; % (alpha123,alpha123) #Every 20 cells, we want to change row if counter%17==0 : print &amp;#39;&amp;lt;/tr&amp;gt;\n&amp;lt;tr&amp;gt;&amp;#39; counter += 1 print &amp;#39;&amp;lt;/tr&amp;gt;&amp;#39; print &amp;#34;&amp;#34;&amp;#34; &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt; &amp;#34;&amp;#34;&amp;#34; </description>
    </item>
    
    <item>
      <title>HOWTO Get to Vesuvius using public transport</title>
      <link>https://www.chegwin.org/posts/howto_vesuvius_cheaply.html</link>
      <pubDate>Sat, 05 Nov 2005 09:54:10 +0000</pubDate>
      
      <guid>https://www.chegwin.org/posts/howto_vesuvius_cheaply.html</guid>
      <description>Howto travel to Vesuvius by train and bus from the Circumvesuvia train line Why? We stayed at the Sorrento Hilton and got told we couldn&amp;rsquo;t visit Vesuvius by train from our hotel. It wasn&amp;rsquo;t possible and we would need to take a paid-for coach excursion incorporating Pompeii (which we&amp;rsquo;d already seen). Some people like pre-packaged tours, but Italy has such fantastic public transport that you should consider using it. This guide has some hints and tips for getting there.</description>
    </item>
    
  </channel>
</rss>
