<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Golder.org</title><link>https://golder.org/posts/</link><description>Recent content in Posts on Golder.org</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Wed, 02 Jul 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://golder.org/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>How This Site is Built: A Modern DevOps Pipeline</title><link>https://golder.org/posts/2025-07-02-how-this-site-is-built/</link><pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2025-07-02-how-this-site-is-built/</guid><description>&lt;h2 id="architecture-overview">Architecture Overview&lt;/h2>
&lt;p>The site follows a GitOps approach, with every component self-hosted across multiple geographic regions:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Source Control&lt;/strong>: Self-hosted Gitea Git repository&lt;/li>
&lt;li>&lt;strong>Static Site Generator&lt;/strong>: Hugo with custom theme&lt;/li>
&lt;li>&lt;strong>Build Pipeline&lt;/strong>: Argo Workflows&lt;/li>
&lt;li>&lt;strong>Container Registry&lt;/strong>: Harbor&lt;/li>
&lt;li>&lt;strong>Orchestration&lt;/strong>: Kubernetes clusters across multiple regions&lt;/li>
&lt;li>&lt;strong>Deployment&lt;/strong>: Flux GitOps operator&lt;/li>
&lt;li>&lt;strong>Networking&lt;/strong>: Home networks with VPN interconnects&lt;/li>
&lt;/ul>
&lt;h2 id="static-site-generation-with-hugo">Static Site Generation with Hugo&lt;/h2>
&lt;p>The foundation is &lt;a href="https://gohugo.io/">Hugo&lt;/a>, a fast static site generator written in Go. Hugo was chosen for several key advantages:&lt;/p></description></item><item><title>Packer node builder</title><link>https://golder.org/posts/packer-node-builder/</link><pubDate>Thu, 28 Nov 2024 00:00:00 +0000</pubDate><guid>https://golder.org/posts/packer-node-builder/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>In this article I will discuss my &lt;code>k8s-node-packer&lt;/code> folder, which contains an environment I use to build fresh VM images which I then use to deploy VMs on various bare metal hosts running &lt;code>libvirtd&lt;/code>.&lt;/p>
&lt;h1 id="getting-started">Getting started&lt;/h1>
&lt;!-- raw HTML omitted -->
&lt;!-- raw HTML omitted -->
&lt;p>You will need a recent version of Packer. To summarise &lt;a href="https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli">the installation&lt;/a> for Ubuntu&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt-add-repository &lt;span style="color:#e6db74">&amp;#34;deb [arch=amd64] https://apt.releases.hashicorp.com &lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>lsb_release -cs&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74"> main&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt-get update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> sudo apt-get install packer
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ensure some tools that will be needed are installed:&lt;/p></description></item><item><title>Enable Kubernetes auth on Hashicorp Vault</title><link>https://golder.org/posts/enable-kubernetes-auth-on-hashicorp-vault/</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate><guid>https://golder.org/posts/enable-kubernetes-auth-on-hashicorp-vault/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>In this post I describe the steps taken to enable a Kubernetes authentication backend for Hashicorp Vault and configure a PKI role for &lt;a href="https://cert-manager.io">cert-manager&lt;/a> to use to issue certificate signing requests.&lt;/p>
&lt;h1 id="process">Process&lt;/h1>
&lt;p>Start by enabling the auth method.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>vault auth enable --path&lt;span style="color:#f92672">=&lt;/span>k8s-yourdomain-production kubernetes
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should see:&lt;/p>
&lt;pre tabindex="0">&lt;code>Success! Enabled kubernetes auth method at: k8s-yourdomain-production/
&lt;/code>&lt;/pre>&lt;p>The cluster needs a &amp;rsquo;token reviewer&amp;rsquo; service account that Vault can use to validate tokens presented by clients that claim to have been authenticated by the cluster.&lt;/p></description></item><item><title>Granting TLS user access to a Kubernetes Cluster</title><link>https://golder.org/posts/granting-tls-user-access-to-k8s-cluster/</link><pubDate>Tue, 23 Jan 2024 00:00:00 +0000</pubDate><guid>https://golder.org/posts/granting-tls-user-access-to-k8s-cluster/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>I run up clusters with &lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/">kubeadm&lt;/a>. Once a cluster is up and running, it can be enticing to just copy the &lt;code>/etc/kubernetes/admin.conf&lt;/code> credentials down to your local &lt;code>.kube/config&lt;/code> file and crack on. However, as you can guess, that&amp;rsquo;s not best practice, especially when working in teams.&lt;/p>
&lt;p>In order for audit logs to contain more specific details about which user performed which actions, and for general access control purposes, it helps a lot if users authenticate to clusters using their own credentials, not using shared credentials.&lt;/p></description></item><item><title>Granting an OIDC user access to a Kubernetes Cluster</title><link>https://golder.org/posts/granting-oidc-user-access-to-k8s-cluster/</link><pubDate>Sun, 21 Jan 2024 00:00:00 +0000</pubDate><guid>https://golder.org/posts/granting-oidc-user-access-to-k8s-cluster/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>I run up clusters with &lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/">kubeadm&lt;/a>. Once a cluster is up and running, it can be enticing to just copy the &lt;code>/etc/kubernetes/admin.conf&lt;/code> credentials down to your local &lt;code>.kube/config&lt;/code> file and crack on. However, as you can guess, that&amp;rsquo;s not best practice, especially when working in teams.&lt;/p>
&lt;p>In order for audit logs to contain more specific details about which user performed which actions, and for general access control purposes, it helps a lot if users authenticate to clusters using their own credentials, not using shared credentials.&lt;/p></description></item><item><title>Adding new user to Redis Cluster</title><link>https://golder.org/posts/adding-new-user-to-redis-cluster/</link><pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate><guid>https://golder.org/posts/adding-new-user-to-redis-cluster/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>I run Redis Cluster in K8S. I need to manage client access for service accounts.&lt;/p>
&lt;p>Currently I do this manually using the following process.&lt;/p>
&lt;h1 id="connect-to-redis-cluster">Connect to Redis Cluster&lt;/h1>
&lt;p>Ensure your &lt;code>kubectl&lt;/code> is configured to use the appropriate cluster.&lt;/p>
&lt;pre tabindex="0">&lt;code>export IP=$(kubectl -n redis get svc redis-redis-cluster -ojsonpath=&amp;#39;{.spec.clusterIP}&amp;#39;)
export REDISCLI_AUTH=$(kubectl -n redis get secret --namespace &amp;#34;redis&amp;#34; redis -o jsonpath=&amp;#34;{.data.redis-password}&amp;#34; | base64 -d)
redis-cli -c -h $IP
&lt;/code>&lt;/pre>&lt;p>This should give you a &lt;code>redis-cli&lt;/code> prompt like the following:&lt;/p></description></item><item><title>Renumber cluster IP addresses</title><link>https://golder.org/posts/renumber-cluster-ip-addresses/</link><pubDate>Sun, 14 May 2023 00:00:00 +0000</pubDate><guid>https://golder.org/posts/renumber-cluster-ip-addresses/</guid><description>&lt;p>So, about a year after I &lt;a href="https://golder.org/rebuild-staging-cluster">redeployed my in-house staging cluster&lt;/a>, I&amp;rsquo;ve reached a point where I&amp;rsquo;m not happy about the addressing scheme I&amp;rsquo;ve used and how it affects the routing on my internal network. So this article is going to try to cover the steps I took to re-number the whole cluster, and put all the nodes into their own LAN segment too to physically segregate/isolate it&amp;rsquo;s traffic for performance and security reasons.&lt;/p></description></item><item><title>AWS SSO with Keycloak via SAML</title><link>https://golder.org/posts/aws-sso-with-keycloak-via-saml/</link><pubDate>Tue, 12 Jul 2022 00:00:00 +0000</pubDate><guid>https://golder.org/posts/aws-sso-with-keycloak-via-saml/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>&lt;a href="https://www.keycloak.org/">Keycloak&lt;/a> is a popular Java-based SAML/OpenID identity service provider application that can be self-hosted. It&amp;rsquo;s a very comprehensive package and widely supported, so even if it is a bit of a &amp;lsquo;heavyweight&amp;rsquo; (resource and time-wise) to set up, host and support, it&amp;rsquo;s a more sensible and mature solution to adopt for now, and there doesn&amp;rsquo;t seem to be anything that fits our needs yet in the wider open source world.&lt;/p></description></item><item><title>Migration from WordPress to Hugo</title><link>https://golder.org/posts/migration-from-wordpress-to-hugo/</link><pubDate>Fri, 08 Oct 2021 00:00:00 +0000</pubDate><guid>https://golder.org/posts/migration-from-wordpress-to-hugo/</guid><description>&lt;p>I have three public-facing sites which I&amp;rsquo;d rather not have to manage with WordPress any more. None of them do anything fancy. They&amp;rsquo;re just a collection of pages and posts. I span them up and started adding content in the days where WordPress was all the rage. Recently, I&amp;rsquo;ve been looking at ditching the WordPress hosting burden and converting them to simple, static websites. This will save me time and money in the long run.&lt;/p></description></item><item><title>Development Snapshot Download Service</title><link>https://golder.org/posts/development-snapshot-download-service/</link><pubDate>Sat, 06 Jun 2020 00:00:00 +0000</pubDate><guid>https://golder.org/posts/development-snapshot-download-service/</guid><description>&lt;p>Suppose the database or state data for your production application is being backed up in full on a regular basis, encrypted and stored on an object storage service, such as S3. Suppose the &lt;a href="https://github.com/rossigee/backups">backup tool&lt;/a> you are using keeps track of successful backups in some kind of lookup service, such as an ElasticSearch index, database, etcd cluster or whatever. Suppose one of your developers needs a recent database snapshot to seed their local development environment to develop a feature or reproduce a bug.&lt;/p></description></item><item><title>Azure CLI can't find antlr4 python library</title><link>https://golder.org/posts/azure-cli-cant-find-antlr4-python-library/</link><pubDate>Sat, 14 Mar 2020 00:00:00 +0000</pubDate><guid>https://golder.org/posts/azure-cli-cant-find-antlr4-python-library/</guid><description>&lt;p>I&amp;rsquo;m trying to run up a VM on Azure using CLI commands on my Ubuntu 20.04 (Focal) workstation. I&amp;rsquo;m following the &lt;a href="https://docs.microsoft.com/en-us/azure/virtual-machines/linux/quick-create-cli">official instructions&lt;/a>. On running the &lt;code>az vm create&lt;/code> command, I get the following error:&lt;/p>
&lt;p>The command failed with an unexpected error. Here is the traceback:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>No module named &lt;span style="color:#e6db74">&amp;#39;antlr4&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback &lt;span style="color:#f92672">(&lt;/span>most recent call last&lt;span style="color:#f92672">)&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#e6db74">&amp;#34;/usr/lib/python3/dist-packages/knack/cli.py&amp;#34;&lt;/span>, line 206, in invoke
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cmd_result &lt;span style="color:#f92672">=&lt;/span> self.invocation.execute&lt;span style="color:#f92672">(&lt;/span>args&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#e6db74">&amp;#34;/usr/lib/python3/dist-packages/azure/cli/core/commands/__init__.py&amp;#34;&lt;/span>, line 528, in execute
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> self.commands_loader.load_arguments&lt;span style="color:#f92672">(&lt;/span>command&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#e6db74">&amp;#34;/usr/lib/python3/dist-packages/azure/cli/core/__init__.py&amp;#34;&lt;/span>, line 300, in load_arguments
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> loader.load_arguments&lt;span style="color:#f92672">(&lt;/span>command&lt;span style="color:#f92672">)&lt;/span> &lt;span style="color:#75715e"># this adds entries to the argument registries&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#e6db74">&amp;#34;/usr/lib/python3/dist-packages/azure/cli/command_modules/vm/__init__.py&amp;#34;&lt;/span>, line 31, in load_arguments
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> from azure.cli.command_modules.vm._params import load_arguments
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#e6db74">&amp;#34;/usr/lib/python3/dist-packages/azure/cli/command_modules/vm/_params.py&amp;#34;&lt;/span>, line 31, in &amp;lt;module&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> from azure.cli.command_modules.monitor.actions import get_period_type
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#e6db74">&amp;#34;/usr/lib/python3/dist-packages/azure/cli/command_modules/monitor/actions.py&amp;#34;&lt;/span>, line 7, in &amp;lt;module&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> import antlr4
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ModuleNotFoundError: No module named &lt;span style="color:#e6db74">&amp;#39;antlr4&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Looks like the Azure CLI packages for Ubuntu have a dependency on &amp;lsquo;antlr4&amp;rsquo; python library, and that isn&amp;rsquo;t being packaged or distributed upstream for whatever reason. In my case I&amp;rsquo;m using the Ubuntu Focal (20.04) series.&lt;/p></description></item><item><title>Dynamic DNS with external-dns</title><link>https://golder.org/posts/dynamic-dns-with-external-dns/</link><pubDate>Sat, 14 Mar 2020 00:00:00 +0000</pubDate><guid>https://golder.org/posts/dynamic-dns-with-external-dns/</guid><description>&lt;p>This came about from deciding to switch from Route53 to Cloudflare for DNS management. I&amp;rsquo;d already prepared the destination zones on Cloudflare but needed to update the mechanism I had in place that manages the DNS entry for the dynamic IP address. The mechanism was a NodeRED flow that made an API call directly to Route53. I&amp;rsquo;d need to do some research on how to do the same on Cloudflare.&lt;/p></description></item><item><title>Certified Kubernetes Application Developer</title><link>https://golder.org/posts/certified-kubernetes-application-developer/</link><pubDate>Thu, 30 Jan 2020 00:00:00 +0000</pubDate><guid>https://golder.org/posts/certified-kubernetes-application-developer/</guid><description>&lt;p>&lt;a href="https://www.youracclaim.com/badges/072a2a90-ba32-4e72-9b65-0c6184a4af20">


&lt;img src="https://golder.org/posts/certified-kubernetes-application-developer/images/ckad-1024x791.png" width="100%"/>

&lt;/a>&lt;/p></description></item><item><title>Deploying OPNSense to no-name WAN router hardware</title><link>https://golder.org/posts/deploying-opnsense-to-no-name-wan-router-hardware/</link><pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate><guid>https://golder.org/posts/deploying-opnsense-to-no-name-wan-router-hardware/</guid><description>&lt;p>I live and work in a remote area, which does not have the most reliable power and internet connections. I&amp;rsquo;ve addressed the intermittent power outages by installing a battery back-up system which covers the server cabinet and various other circuits in the house. I&amp;rsquo;ve addressed the intermittent network issues by deploying a multi-WAN router, which is what this article is about.&lt;/p>
&lt;p>The WAN router also provides me with an extra NAT layer between my home/work network and the Internet, as you never know if you can trust ISP-provided routers. Additionally, it provides me and members of my team with OpenVPN access to resources on the network when we&amp;rsquo;re out and about, and much more besides.&lt;/p></description></item><item><title>Certified Kubernetes Administrator</title><link>https://golder.org/posts/certified-kubernetes-administrator/</link><pubDate>Wed, 11 Dec 2019 00:00:00 +0000</pubDate><guid>https://golder.org/posts/certified-kubernetes-administrator/</guid><description>&lt;p>&lt;a href="https://www.youracclaim.com/badges/c1a38075-def3-47aa-a9e3-3c976c042fa8">


&lt;img src="https://golder.org/posts/certified-kubernetes-administrator/images/cka-1024x790.png" width="100%"/>

&lt;/a>&lt;/p></description></item><item><title>Grant read-only rights to backup user for PostgreSQL</title><link>https://golder.org/posts/grant-read-only-rights-to-backup-user-for-postgresql/</link><pubDate>Mon, 29 Jul 2019 00:00:00 +0000</pubDate><guid>https://golder.org/posts/grant-read-only-rights-to-backup-user-for-postgresql/</guid><description>&lt;p>This one comes up quite regularly, so worthy of note. Whenever an application using Postgres changes or creates tables (i.e. Odoo module updates for example), those tables don&amp;rsquo;t seem to be accessible by the &lt;code>backups&lt;/code> user on the next backup run. This is the SQL I use to work around it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">GRANT&lt;/span> &lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#66d9ef">ON&lt;/span> &lt;span style="color:#66d9ef">ALL&lt;/span> TABLES &lt;span style="color:#66d9ef">IN&lt;/span> &lt;span style="color:#66d9ef">SCHEMA&lt;/span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">to&lt;/span> backups;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">GRANT&lt;/span> &lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#66d9ef">ON&lt;/span> &lt;span style="color:#66d9ef">ALL&lt;/span> SEQUENCES &lt;span style="color:#66d9ef">IN&lt;/span> &lt;span style="color:#66d9ef">SCHEMA&lt;/span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">to&lt;/span> backups;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">ALTER&lt;/span> &lt;span style="color:#66d9ef">DEFAULT&lt;/span> &lt;span style="color:#66d9ef">PRIVILEGES&lt;/span> &lt;span style="color:#66d9ef">IN&lt;/span> &lt;span style="color:#66d9ef">SCHEMA&lt;/span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">GRANT&lt;/span> &lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#66d9ef">ON&lt;/span> TABLES &lt;span style="color:#66d9ef">TO&lt;/span> backups;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">ALTER&lt;/span> &lt;span style="color:#66d9ef">DEFAULT&lt;/span> &lt;span style="color:#66d9ef">PRIVILEGES&lt;/span> &lt;span style="color:#66d9ef">IN&lt;/span> &lt;span style="color:#66d9ef">SCHEMA&lt;/span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">GRANT&lt;/span> &lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#66d9ef">ON&lt;/span> SEQUENCES &lt;span style="color:#66d9ef">TO&lt;/span> backups;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It&amp;rsquo;d be nice to find a way for the &lt;code>backups&lt;/code> user to automatically get read permissions, but I&amp;rsquo;ve yet to figure that out. I understood that the above &lt;code>ALTER DEFAULT PRIVILEGES&lt;/code> would cover it, but I seem to need to run it myself each time there is a change.&lt;/p></description></item><item><title>Managing Kubernetes certificates with Python</title><link>https://golder.org/posts/managing-kubernetes-certificates-with-python/</link><pubDate>Wed, 15 May 2019 00:00:00 +0000</pubDate><guid>https://golder.org/posts/managing-kubernetes-certificates-with-python/</guid><description>&lt;p>I run into a small stumbling block the other evening while working on my &amp;lsquo;site domain manager&amp;rsquo; project (for want of a better name). This is essentially a REST API running in a daemon service that manages the mappings of domains to websites, and uses &amp;lsquo;agents&amp;rsquo; to automate the configuration via API calls to the various services involved (domain registrars, DNS servers, WAF providers, SSL certs etc.)&lt;/p>
&lt;p>The problem arose because the manager class I was writing to interact with kubernetes needed to manage certificates. The &lt;a href="https://github.com/kubernetes-client/python">kubernetes python client library&lt;/a> has a whole bunch of useful higher-level API and model classes for listing, creating, updating the main models I needed to manage, such as the ConfigMap, DaemonSet, Service and Ingress, but because the Certificate is part of the cert-manager package, it doesn&amp;rsquo;t have the equivalent higher-level methods I needed.&lt;/p></description></item><item><title>Testing SMTP creds with Docker</title><link>https://golder.org/posts/testing-smtp-creds-with-docker/</link><pubDate>Sun, 24 Mar 2019 00:00:00 +0000</pubDate><guid>https://golder.org/posts/testing-smtp-creds-with-docker/</guid><description>&lt;p>One of our sites stopped sending it&amp;rsquo;s mail a few days ago. Unfortunately, the SMTP plugin used does not provide any debug logs of the SMTP connection, and it&amp;rsquo;s &amp;rsquo;test&amp;rsquo; tool just says that it sent the mail successfully. The logs for the SMTP service provider suggest they haven&amp;rsquo;t seen the connection. I issue a new password and reconfigure, still the same symptoms.&lt;/p>
&lt;p>So, I just want to do a simple check of the new SMTP creds. I also wanted to use a simple tool to avoid having to recall (Google) the magic SMTP protocol incantations and perform them via &amp;rsquo;telnet&amp;rsquo; or whatever. The &amp;lsquo;ssmtp&amp;rsquo; tool sprung to mind for some reason, so I figured I&amp;rsquo;d see how simple that would be to use in this case.&lt;/p></description></item><item><title>Monitoring Windows processes from Nagios</title><link>https://golder.org/posts/monitoring-windows-processes-from-nagios/</link><pubDate>Tue, 12 Mar 2019 00:00:00 +0000</pubDate><guid>https://golder.org/posts/monitoring-windows-processes-from-nagios/</guid><description>&lt;p>So, something I had to do recently was to set up monitoring for a couple of specific Windows processes, so that we get notification via a Discord channel if those processes are not running on various hosts.&lt;/p>
&lt;p>Typically, you&amp;rsquo;d do this with something like &lt;a href="https://www.nsclient.org/">NSClient++&lt;/a> but this was proving to be too problematic and time-consuming to get the client side configured and working correctly.&lt;/p>
&lt;p>So, I decided to try a different approach to keep things quick and simple. However, things turned out to be neither quick nor simple. I&amp;rsquo;ll save the rant, needless to say I generally leave managing our Windows hosts to our Windows people. I haven&amp;rsquo;t used Windows since &amp;lsquo;98. I typically steer clear, and I&amp;rsquo;m not even sure why I took this on, or why I&amp;rsquo;m writing this up. I hope it helps someone else, but I personally hope never to have to come back here!&lt;/p></description></item><item><title>Nginx Ingress access logs to ElasticSearch via syslog</title><link>https://golder.org/posts/nginx-ingress-syslogging-to-elasticsearch/</link><pubDate>Mon, 25 Feb 2019 00:00:00 +0000</pubDate><guid>https://golder.org/posts/nginx-ingress-syslogging-to-elasticsearch/</guid><description>&lt;p>There are several ways to extract the logs from a Kubernetes Nginx Ingress deployment into an ElasticSearch instance. One way I found was to use &lt;a href="https://www.elastic.co/products/beats/filebeat">Elastic Filebeats&lt;/a>, but I couldn&amp;rsquo;t find any really good examples of how to apply that to our cluster, and I felt it would clutter up the proxy servers with more containers they may not necessarily need.&lt;/p>
&lt;p>Instead, I chose to use &lt;a href="http://nginx.org/en/docs/syslog.html">nginx&amp;rsquo;s syslog&lt;/a> facility, which is a little more lightweight, and serves our purposes for now.&lt;/p></description></item><item><title>Simple LDAP proxy container</title><link>https://golder.org/posts/simple-ldap-proxy-container/</link><pubDate>Tue, 10 Apr 2018 00:00:00 +0000</pubDate><guid>https://golder.org/posts/simple-ldap-proxy-container/</guid><description>&lt;p>So, you have an LDAP server running happily on port 636 but one of your client applications doesn&amp;rsquo;t seem to be happy with the SSL connection for whatever reason. You need an intermediary container to handle the SSL connection to the LDAP server on port 636, presenting it to the local application on port 389.&lt;/p>
&lt;p>First, we write a Dockerfile that will describe a container that runs up an haproxy daemon.&lt;/p></description></item><item><title>Merging Confluence users</title><link>https://golder.org/posts/merging-confluence-users/</link><pubDate>Tue, 30 Sep 2014 00:00:00 +0000</pubDate><guid>https://golder.org/posts/merging-confluence-users/</guid><description>&lt;p>One of my clients is running Confluence. Somewhere along the line, two user accounts had been created for one user, and content had been added using both users.&lt;/p>
&lt;p>So muggins here to the rescue. Unfortunately, not much help to be found Googling, so I roll up my sleeves and dig into the Confluence DB schema. Oh what fun.&lt;/p>
&lt;p>The main users table appears to be the &amp;lsquo;user_mapping&amp;rsquo; table, where each user has a record. The user appears to have a long hash-like ID that represents them in any other records. I chose the ID of the account I would be merging from, and attempted to find the other tables involved in the database that would link to the record I am about to delete.&lt;/p></description></item><item><title>Building a Resilient Rural Network Infrastructure</title><link>https://golder.org/posts/2014-08-15-building-resilient-rural-network/</link><pubDate>Fri, 15 Aug 2014 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2014-08-15-building-resilient-rural-network/</guid><description>Designing and implementing a robust dual-WAN network with wireless mesh connectivity to serve multiple households in rural Thailand, featuring automatic failover and centralized monitoring.</description></item><item><title>GStreamer pipeline for RTSP stream</title><link>https://golder.org/posts/gstreamer-pipeline-for-rtsp-stream/</link><pubDate>Tue, 21 May 2013 00:00:00 +0000</pubDate><guid>https://golder.org/posts/gstreamer-pipeline-for-rtsp-stream/</guid><description>&lt;p>A simple gstreamer pipeline to display at RTSP stream (from an Aircam)&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gst-launch -m rtspsrc location&lt;span style="color:#f92672">=&lt;/span>rtsp://172.16.2.251/live/ch00_0 ! rtph264depay ! ffdec_h264 ! ffmpegcolorspace ! autovideosink &lt;span style="color:#f92672">[&lt;/span>/code&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Harvest e-mail addresses from stdin</title><link>https://golder.org/posts/harvest-e-mail-addresses-from-stdin/</link><pubDate>Sat, 18 May 2013 00:00:00 +0000</pubDate><guid>https://golder.org/posts/harvest-e-mail-addresses-from-stdin/</guid><description>&lt;p>A little python script to do this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#!/usr/bin/env python&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> sys &lt;span style="color:#f92672">import&lt;/span> re
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bulkemails &lt;span style="color:#f92672">=&lt;/span> sys&lt;span style="color:#f92672">.&lt;/span>stdin&lt;span style="color:#f92672">.&lt;/span>read()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># regex = whoEver@wHerever.xxx r = re.compile(&amp;#34;\[-a-zA-Z0-9.\_\]+@\[-a-zA-Z0-9\_\]+.\[a-zA-Z0-9\_.\]+&amp;#34;) results = r.findall(bulkemails)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>emails &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#66d9ef">for&lt;/span> x &lt;span style="color:#f92672">in&lt;/span> results: print str(x)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Magento API problem setting additional_attributes</title><link>https://golder.org/posts/harvest-e-mail-addresses-from-stdin/</link><pubDate>Sat, 18 May 2013 00:00:00 +0000</pubDate><guid>https://golder.org/posts/harvest-e-mail-addresses-from-stdin/</guid><description>&lt;p>For some reason, it&amp;rsquo;s damn hard to get the &lt;code>additional_attributes&lt;/code> set via Magento&amp;rsquo;s v2 API. Even the example code in their API docs doesn&amp;rsquo;t cover it. After trying many permutations, I finally managed to get it working with the following snippet of code:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;?&lt;/span>&lt;span style="color:#a6e22e">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$soapopts &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">array&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;trace&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;exceptions&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;features&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#a6e22e">SOAP_SINGLE_ELEMENT_ARRAYS&lt;/span>); $client &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">new&lt;/span> &lt;span style="color:#a6e22e">SoapClient&lt;/span> ( &lt;span style="color:#e6db74">&amp;#39;http://www.yourmagentosite.com/api/v2_soap/?wsdl&amp;#39;&lt;/span>, $soapopts); $session &lt;span style="color:#f92672">=&lt;/span> $client&lt;span style="color:#f92672">-&amp;gt;&lt;/span>&lt;span style="color:#a6e22e">login&lt;/span> ( &lt;span style="color:#e6db74">&amp;#39;apiuser&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;apipassword&amp;#39;&lt;/span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$productData &lt;span style="color:#f92672">=&lt;/span> (&lt;span style="color:#a6e22e">object&lt;/span>)&lt;span style="color:#66d9ef">array&lt;/span>( &lt;span style="color:#e6db74">&amp;#39;additional_attributes&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> (&lt;span style="color:#a6e22e">object&lt;/span>)&lt;span style="color:#66d9ef">array&lt;/span>( &lt;span style="color:#e6db74">&amp;#39;single_data&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">array&lt;/span>( (&lt;span style="color:#a6e22e">object&lt;/span>)&lt;span style="color:#66d9ef">array&lt;/span>( &lt;span style="color:#e6db74">&amp;#39;key&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;custom_image_url&amp;#39;&lt;/span>, &lt;span style="color:#e6db74">&amp;#39;value&amp;#39;&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#39;http://www.yourmagentosite.com/nicepic.jpg&amp;#39;&lt;/span>, ), ), ), ); $result &lt;span style="color:#f92672">=&lt;/span> $client&lt;span style="color:#f92672">-&amp;gt;&lt;/span>&lt;span style="color:#a6e22e">catalogProductUpdate&lt;/span>($session, &lt;span style="color:#e6db74">&amp;#39;abjb91&amp;#39;&lt;/span>, $productData); &lt;span style="color:#66d9ef">print&lt;/span> $client&lt;span style="color:#f92672">-&amp;gt;&lt;/span>&lt;span style="color:#a6e22e">__getLastRequest&lt;/span>(); &lt;span style="color:#a6e22e">var_dump&lt;/span>($result);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Mastering my action lists</title><link>https://golder.org/posts/2006-09-15-mastering-my-action-lists/</link><pubDate>Fri, 15 Sep 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-09-15-mastering-my-action-lists/</guid><description>&lt;p>In a drive to improve my time management, and general management skills, I started reading &lt;a href="http://www.amazon.co.uk/Getting-Things-Done-Stress-free-Productivity/dp/0749922648/sr=8-1/qid=1158347768/ref=pd_ka_1/026-3792728-3798014?ie=UTF8&amp;amp;s=gateway">Getting Things Done&lt;/a>. It&amp;rsquo;s full of common sense ideas and stuff that can make you think twice about the way your are/were doing things. I&amp;rsquo;m no further towards world domination, but I do already start to feel a little comforted by the fact that it&amp;rsquo;s forced me to collect and organise my thoughts from time to time. I feel my brain is starting to become less cluttered and I can feelsome more productive hacking sessions coming up in the next few weeks.&lt;/p></description></item><item><title>Nautilus file operations</title><link>https://golder.org/posts/2006-08-02-nautilus-file-operations/</link><pubDate>Wed, 02 Aug 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-08-02-nautilus-file-operations/</guid><description>&lt;p>Why is it that to simply copy a file in Nautilus, you need to click &amp;lsquo;Copy&amp;rsquo;, then &amp;lsquo;Paste&amp;rsquo;, &lt;em>and&lt;/em> then have to rename the file (or open up another window and navigate somewhere so you can drag&amp;rsquo;n&amp;rsquo;drop it). It seems unnatural to me. Why must we have to know about and use the clipboard for such a simple operation?&lt;/p>
&lt;p>What I reckon is that on right-clicking a file you should get &amp;lsquo;Copy to&amp;hellip;&amp;rsquo; and &amp;lsquo;Move to&amp;hellip;&amp;rsquo; options, which pop up a standard filechooser dialog, prefilled with the selected file&amp;rsquo;s name and location. I think that would be simpler and more intuitive than the current method. Shame I don&amp;rsquo;t have the time or skillz to knock up a patch at the moment.&lt;/p></description></item><item><title>Nautilus file operations (b)</title><link>https://golder.org/posts/2006-08-02-nautilus-file-operations-b/</link><pubDate>Wed, 02 Aug 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-08-02-nautilus-file-operations-b/</guid><description>&lt;p>Also, the list view is useless (whereas in Windows it is not). If you copy a file with the intention of pasting it, you often have to switch back to icon view to find a spare place that you can right-click to paste. Oh, unless I remember the &amp;lsquo;Paste&amp;rsquo; option under the &amp;lsquo;Edit&amp;rsquo; menu.&lt;/p>
&lt;p>I get the feeling that Nautilus, as developed as it is after all these years, still has lots of potential but needs a fair amount of usability love (and more innovation over the klunky old Windows-based methods for managing files).&lt;/p></description></item><item><title>Taking it all into consideration</title><link>https://golder.org/posts/2006-07-24-taking-it-all-into-consideration/</link><pubDate>Mon, 24 Jul 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-07-24-taking-it-all-into-consideration/</guid><description>&lt;p>Probably worth a quick blog, while I&amp;rsquo;m waiting for the kettle to boil. I&amp;rsquo;ve not had a lot of GNOME time in the last week, except a few hours to help Danilo start setting up a new L10N server to host the translation status pages. Patience, people, these things take time. So, I guess there are a few people that would like to hear about &amp;lsquo;what happened to the Subversion migration?&amp;rsquo;. Well, let&amp;rsquo;s see.&lt;/p></description></item><item><title>GNOME Subversion just hours away</title><link>https://golder.org/posts/2006-07-14-gnome-subversion-just-hours-away/</link><pubDate>Fri, 14 Jul 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-07-14-gnome-subversion-just-hours-away/</guid><description>&lt;p>Well, I guess I&amp;rsquo;m about as prepared as I can be for this now. When I&amp;rsquo;ve finished this blog entry, I shall feed the dogs and the cat and get some sleep. It&amp;rsquo;s nearly 11pm here, and 0:00UTC is 7am for me. I&amp;rsquo;ve got the alarm set for 6am, should be on IRC with a coffe by 6:30, ready to start the migration process at 7am prompt.&lt;/p>
&lt;p>A couple of minor niggles, but no real showstoppers:&lt;/p></description></item><item><title>Bastard mailserver from hell</title><link>https://golder.org/posts/2006-07-10-bastard-mailserver-from-hell/</link><pubDate>Mon, 10 Jul 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-07-10-bastard-mailserver-from-hell/</guid><description>&lt;p>On Saturday, I sent a mail to the &amp;lsquo;gnome-sysadmin&amp;rsquo; list for review before sending it to the larger GNOME community. I pressed &amp;lsquo;send&amp;rsquo; and expected our more-than-capable servers to take care of the rest. I got on with some other things.&lt;/p>
&lt;p>On Sunday, I looked to see if there were any comments or criticisms of the said sent mail only to find it didn&amp;rsquo;t appear to have reached the list. In fact, I didn&amp;rsquo;t appear to have any GNOME mail for the last couple of days. I headed for the mail logs on menubar.&lt;/p></description></item><item><title>Peace'n'quiet</title><link>https://golder.org/posts/2006-07-01-peacenquiet/</link><pubDate>Sat, 01 Jul 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-07-01-peacenquiet/</guid><description>&lt;p>Mee has gone to her parents in Khemmerat (nr. Ubon, Thailand). So I&amp;rsquo;ve got the house to myself here in Ban Krut (nr. Prachuab Kirikhan, Thailand). It&amp;rsquo;s great! Got another 5 weeks of it too.&lt;/p>
&lt;p>I need to get my dreads sorted. They&amp;rsquo;re &lt;a href="http://www.golder.org/pictures/rossg/main.php?g2_itemId=7106">coming loose a bit&lt;/a> and could do with a tidy-up.&lt;/p>
&lt;p>I also started getting curious about getting an &lt;a href="http://www.greaterthings.com/news/Chip_Implants/index.html">RFID implant&lt;/a> in my hand, so I don&amp;rsquo;t have to keep typing passwords in. That&amp;rsquo;d be cool.&lt;/p></description></item><item><title>Connectivity heaven</title><link>https://golder.org/posts/2006-06-17-connectivity-heaven/</link><pubDate>Sat, 17 Jun 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-06-17-connectivity-heaven/</guid><description>&lt;p>Got GPRS working yesterday. It&amp;rsquo;s not much faster than a modem, but it&amp;rsquo;s an adequate backup, as the ADSL and phone line are still down. I can even take my Bluetooth dongle and mobile phone round to P&amp;rsquo;Bot&amp;rsquo;s and hook his machine up to the Internet at his house - which doesn&amp;rsquo;t have a phone line. And, next week I&amp;rsquo;ll have a new HDD and battery for the laptop, so will be able to stay connected on the train/bus. It&amp;rsquo;s not too expensive either. I chose a basic &amp;rsquo;ten hour&amp;rsquo; promotion for 50 baht to try it out, and if it&amp;rsquo;s less than 1000baht a month, I might go for the unlimited option.&lt;/p></description></item><item><title>Connectivity hell</title><link>https://golder.org/posts/2006-06-16-connectivity-hell/</link><pubDate>Fri, 16 Jun 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-06-16-connectivity-hell/</guid><description>&lt;p>Struggling to get a connection for the last few months. That, plus the myriad of other technical problems I&amp;rsquo;ve been having recently have meant that when I have managed to get on-line, it has not been to blog.&lt;/p>
&lt;p>However, enough is enough and contingency plans are in the making. I&amp;rsquo;ve subscribed to a basic GPRS package with my mobile provider (One-2-Call, Thailand) and am using the Bluetooth &amp;lsquo;Dial-up Networking&amp;rsquo; (why not just call it a bloody modem and be done with it?!) service of my Nokia 3230. It&amp;rsquo;s easy enough to use GPRS (28k+?) instead of data (9.6kbps) and cheaper too - just dial &amp;lsquo;&lt;em>99&lt;/em>**1#&amp;rsquo; (that&amp;rsquo;s right!) instead of your normal local/regional/national terrestrial point-of-presence. I had it working briefly, but now it seems to connect and be assigned an IP address (10.6.6.6) in one second, to be &amp;lsquo;LCP TermReq&amp;rsquo;qed in the next (a.k.a. &amp;lsquo;LCP terminated by peer&amp;rsquo;). The support girl seemed very proficient, and her English was quite good, although as it wasn&amp;rsquo;t on her list of common errors, I&amp;rsquo;ll have to wait for the English-speaking tech support guy to come free and call me back. I forgot to say I could speak adequate Thai ;^) otherwise I would have said a Thai speaking one would do. Never mind, I&amp;rsquo;ve got something I can do off-line in the meantime.&lt;/p></description></item><item><title>Long time no blog (again)</title><link>https://golder.org/posts/2006-02-23-long-time-no-blog-again/</link><pubDate>Thu, 23 Feb 2006 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2006-02-23-long-time-no-blog-again/</guid><description>&lt;p>Well, been a busy Christmas and New Year. GNOME-wise, I&amp;rsquo;ve mostly been concerning myself with the Subversion migration whenever I get time, although I have managed to do a few odd other odd sysadmin requests here and there.&lt;/p>
&lt;p>Work-wise, it&amp;rsquo;s been hectic. One customer started getting behind on payments, while another gave me some requirements and a lump sum in advance, but still hasn&amp;rsquo;t come up with the test data required to define the detail required to design it, but investigating the rest of the job has consumed a fair amount of time already.&lt;/p></description></item><item><title>The area got flooded</title><link>https://golder.org/posts/2005-11-26-the-area-got-flooded/</link><pubDate>Sat, 26 Nov 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-11-26-the-area-got-flooded/</guid><description>&lt;p>And I spent my birthday weekend without power. Story &lt;a href="http://mail.golder.org/pipermail/ross-thailand/2005-November/000029.html">here&lt;/a>. Pictures &lt;a href="http://www.golder.org/pictures/rossg/bankrut_flood">here&lt;/a>.&lt;/p></description></item><item><title>A month later...</title><link>https://golder.org/posts/2005-10-18-a-month-later/</link><pubDate>Tue, 18 Oct 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-10-18-a-month-later/</guid><description>&lt;p>So been playing catch-up after buying my new PC and getting it all configured etc. It took a few days to get the Ubuntu Breezy (preview) AMD64 partition CD downloaded, installed, all the packages I use from &amp;lsquo;universe&amp;rsquo; installed, almost the entire operating system re-loaded again in the form of updates over the next month (leading up to the recent Breezy stable release). However, all&amp;rsquo;s well with the world in that I can now do the bulk of my work a hell of a lot faster than I could with the laptop. The only thing slowing me down now is my Internet connection. Other, not so urgent issues remaining:&lt;/p></description></item><item><title>It shifts data and crunches numbers rapidly</title><link>https://golder.org/posts/2005-09-19-it-shifts-data-and-crunches-numbers-rapidly/</link><pubDate>Mon, 19 Sep 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-09-19-it-shifts-data-and-crunches-numbers-rapidly/</guid><description>&lt;p>My new PC rocks. It may not have the dual-core 4400 CPU I was hoping for, but the 3800 is doing a grand job at 20,000 baht less. And, I was lucky enough to pick up a nice 17&amp;quot; Philips LCD screen too for about 7000 baht less than I thought it would cost. Plus a couple of smaller savings on the other parts of the actual PC, meant I came home with some new toys and enough change to pay some bills and keep us rolling for a few more weeks.&lt;/p></description></item><item><title>From moped to sportsbike.</title><link>https://golder.org/posts/2005-09-14-from-moped-to-sportsbike/</link><pubDate>Wed, 14 Sep 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-09-14-from-moped-to-sportsbike/</guid><description>&lt;p>If I&amp;rsquo;m just popping to the market or to a local friends house, I&amp;rsquo;ll usually take the Honda Dream (100cc automatic moped). Sometimes I&amp;rsquo;ll use it to go even further, if it saves me getting the sports bike out. But, if I&amp;rsquo;ve got some serious distance to cover, I have to get the CBR400 out. Unfortunately, at the moment, it&amp;rsquo;s got a flat tyre, so I&amp;rsquo;m not going anywhere very quickly.&lt;/p></description></item><item><title>Work permit attained</title><link>https://golder.org/posts/2005-09-06-work-permit-attained/</link><pubDate>Tue, 06 Sep 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-09-06-work-permit-attained/</guid><description>&lt;p>At last. It was actually valid from 31st August, but I didn&amp;rsquo;t have any money last week to pick it up. Now I have it, as I expected, it&amp;rsquo;s only valid as long as my visa. As in, it expires in less than a month, along with my visa. So, we called into the immigration office at Dan Sing Korn on the way home to see what they need for a 1-yr visa extension. As soon as I mentioned it, there were lots of sharp intakes of breath by the various suited immigration officers present. I was shown a list of 17 articles I had to gather in duplicate. Most of it should be easily attainable, but I&amp;rsquo;ve only got a few weeks to gather it all (remember, this is &amp;lsquo;Thai&amp;rsquo; time, things don&amp;rsquo;t happen overnight around here). I&amp;rsquo;m now off to meet with my accountant to see if I can get the financial side of things prepared.&lt;/p></description></item><item><title>Slow progress, with a few obstacles</title><link>https://golder.org/posts/2005-09-05-slow-progress-with-a-few-obstacles/</link><pubDate>Mon, 05 Sep 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-09-05-slow-progress-with-a-few-obstacles/</guid><description>&lt;p>Most of my high priority work projects are now slowly coming up to speed. I&amp;rsquo;ve had to cut out all other non-urgent distractions to get this far, and it looks like that will be the case for another couple of weeks. Now, all my clients (including Golder Software Systems themselves) have a bugtracker to keep their technical/administrative issues tracker in, a subversion repository to maintain their source code and to allow people to collaborate on project work. The main clients also have a secure wiki, in which the main technical team notes are being to be gathered. Golder Software Systems (or indeed any of our clients) are now in a better position to manage their internal and client projects, issues and other day-to-day business. Hopefully some kind if integration or interface with some time-tracking and accounting/invoicing systems will come further down the road.&lt;/p></description></item><item><title>Cut off again</title><link>https://golder.org/posts/2005-08-23-cut-off-again/</link><pubDate>Tue, 23 Aug 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-08-23-cut-off-again/</guid><description>&lt;p>Usually, it&amp;rsquo;s because I&amp;rsquo;ve forgetten to pay the bill (because they keep sending it to my old address), but this time I call up my Internet Service Provider (CSLoxinfo, actually quite good) and it appears I&amp;rsquo;ve reached my &amp;lsquo;cap&amp;rsquo; of 300hrs/mth. I have to fill out a form, attach a copy of my passport, sign and stamp every page, and send it to Bangkok. This morning we already sent another form, with a copy of our latest company paperwork, signed and stamped so that they would change the bloody address! If only I&amp;rsquo;d known this morning, I could have saved a few baht.&lt;/p></description></item><item><title>Why use Linux when a copy of Windows only costs 100baht?</title><link>https://golder.org/posts/2005-08-13-why-use-linux-when-a-copy-of-windows-only-costs-100baht/</link><pubDate>Sat, 13 Aug 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-08-13-why-use-linux-when-a-copy-of-windows-only-costs-100baht/</guid><description>&lt;p>My main train of thought recently has come from thinking about &amp;lsquo;how can we get Linux to be recognised and accepted as a superior platform to Windows in Thailand?&amp;rsquo;. Whilst my main bread and butter comes from writing PHP websites for commercial clients, I don&amp;rsquo;t find I get that much job satisfaction out of it. It&amp;rsquo;s not like I&amp;rsquo;m doing anyone except myself and my one customer any big favours. Ever since setting up &amp;lsquo;&lt;a href="http://www.golder.org/">Golder Software Systems&lt;/a> as a registered Thai company, I&amp;rsquo;ve wanted it to be a player in the Linux/GNOME market in Thailand, and maybe even Asia. I&amp;rsquo;m inspired by the other Linux support players making good moves in the western world, such as &lt;a href="http://www.ubuntu.com/">Ubuntu&lt;/a>. I have already converted a few Thai home users who are now happily doing their accounts with Gnumeric (&lt;a href="http://gnome-th.sf.net/">translated in Thai&lt;/a>) and I feel I need to start promoting it in the commercial sector, not excluding the public sector of course.&lt;/p></description></item><item><title>Slowly slowly catchee monkey</title><link>https://golder.org/posts/2005-08-08-slowly-slowly-catchee-monkey/</link><pubDate>Mon, 08 Aug 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-08-08-slowly-slowly-catchee-monkey/</guid><description>&lt;p>Making small bits of progress in various areas. I&amp;rsquo;ve just committed a couple of patches to gtranslator CVS (HEAD) to fix (well, improve) the messages table and make &amp;lsquo;gtkspell&amp;rsquo; compile-time optional. Last night I was hanging out on #sysadmin, and saw someone report bugzilla was down, and on closer inspection found the mysql permissions table on button to be hosed (raised the alarm, patched up the table as best I could to get it working, called for a proper backup etc). Also upgraded mysql to 4.1.11, as per a request from the bugzilla guys (well, Olav). Whist sorting all that out, a customer called saying their mysql server has gone haywire and kept crashing randomly. Lots of unplanned support this weekend.&lt;/p></description></item><item><title>African kids with iPAQs</title><link>https://golder.org/posts/2005-08-01-african-kids-with-ipaqs/</link><pubDate>Mon, 01 Aug 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-08-01-african-kids-with-ipaqs/</guid><description>&lt;p>Nice to see &lt;a href="http://news.bbc.co.uk/1/hi/programmes/click_online/4727617.stm">a project&lt;/a> taking open source software on handheld devices into African schools. If I&amp;rsquo;m not mistaken, that looks like an iPAQ H5450 (or equivalent) in that kid&amp;rsquo;s hand. I googled a bit, and found this &lt;a href="http://www.handhelds.org/hypermail/rx3700-port/current/0021.html">post&lt;/a> from the guy running the project, which suggests that not is he enthusiastic about helping African kids, but he likes to put money up for worthy open source bounties. Matthew Herren man now joins Mark Shuttleworth in my classification for people that I respect for their work in just &amp;lsquo;helping make the world a better place&amp;rsquo;.&lt;/p></description></item><item><title>Life update</title><link>https://golder.org/posts/2005-08-01-life-update/</link><pubDate>Mon, 01 Aug 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-08-01-life-update/</guid><description>&lt;p>Things I&amp;rsquo;ve done recently, outside of normal work:&lt;/p>
&lt;!-- raw HTML omitted -->
&lt;p>Some of the things I need to do today:&lt;/p>
&lt;!-- raw HTML omitted -->
&lt;p>Oh well, it&amp;rsquo;s nearly mid-day already, I&amp;rsquo;d best get on with it.&lt;/p></description></item><item><title>Blogtastic</title><link>https://golder.org/posts/2005-07-15-blogtastic/</link><pubDate>Fri, 15 Jul 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-07-15-blogtastic/</guid><description>&lt;p>Today, I spent the morning fixing the pump. Fixed it (finally) by putting a decent (metal, not plastic) one-way valve at the bottom of the inlet pipe that goes down into the well. The weight of 7m of water in a 1 inch tube on the cheapo rubber seals in the plastic valves was forcing the water that had been sucked up to leak back down (there was also a tiny leak in the thread on the inlet port, which wouldn&amp;rsquo;t have helped). We&amp;rsquo;ve now filled up all our water containers and things are generally a lot cleaner today ;) There was even enough spare to water the grass and plants as it hasn&amp;rsquo;t rained for a couple of days. Bought a decent new mosquito net from a travelling salesman for a few quid (he appeared Indian/Malaysian, his Thai wasn&amp;rsquo;t that clear) to replace our old hole-ridden one, of which to enter would present no great challenge to a mosquito of average intelligence.&lt;/p></description></item><item><title>At work in the garden</title><link>https://golder.org/posts/2005-07-13-at-work-in-the-garden/</link><pubDate>Wed, 13 Jul 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-07-13-at-work-in-the-garden/</guid><description>&lt;p>Today I took the laptop to P&amp;rsquo;Chai&amp;rsquo;s house and networked it with a crossover cable. I spent a couple of hours comparing various locale-related settings, the MD5sums of various libraries and strace outputs etc, trying to figure out why my laptop gdm page comes up in Thai, but P&amp;rsquo;Chai&amp;rsquo;s computer, with identical everything does not. The straces showed that for some reason, P&amp;rsquo;Chais libc (right?) wasn&amp;rsquo;t checking the &lt;!-- raw HTML omitted -->/usr/share/locale-langpack&lt;!-- raw HTML omitted --> shared data area, so wasn&amp;rsquo;t finding the &amp;rsquo;th&amp;rsquo; (Thai) translations. I still have no idea why, as all the configurations, environment settings, libs MD5sums etc tally up. I&amp;rsquo;ll have to investigate the language-pack mechanism in Ubuntu a bit more and/or file a bug report about it. Here&amp;rsquo;s a picture of me, hard at work today.&lt;/p></description></item><item><title>It's life, Jim, but not as we know it.</title><link>https://golder.org/posts/2005-07-10-its-life-jim-but-not-as-we-know-it/</link><pubDate>Sun, 10 Jul 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-07-10-its-life-jim-but-not-as-we-know-it/</guid><description>&lt;p>So, we have replaced the mainboard, the graphics card, the memory, removed and/or replaced everything else and reloaded the operating systems twice in P&amp;rsquo;Bot&amp;rsquo;s computer and it still hangs randomly, and in some cases reprodicibly. I&amp;rsquo;m blogging this from P&amp;rsquo;Bot&amp;rsquo;s car on the way to find someone with a CPU so we can eliminate/confirm that as the cause.&lt;/p>
&lt;p>.
Just found out I&amp;rsquo;ve overstayed my visa (again) by four days already. Got to make an emergency trip to Burma (via Ranong) tomorrow. It&amp;rsquo;s tipping it down, so I&amp;rsquo;ll have to put on the waterproofs and take the CBR. Another day, another 2000baht lost because I&amp;rsquo;m a foreigner in Thailand. Still, no big problem.&lt;/p></description></item><item><title>Let there be lawn</title><link>https://golder.org/posts/2005-07-04-let-there-be-lawn/</link><pubDate>Mon, 04 Jul 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-07-04-let-there-be-lawn/</guid><description>&lt;p>The highlight of my week so far has been cutting the grass, and moving some large patches of it to make a lawn at the back of the house. I thoroughly enjoyed it. Then I went back to work.&lt;/p></description></item><item><title>A good couple of weeks</title><link>https://golder.org/posts/2005-06-17-a-good-couple-of-weeks/</link><pubDate>Fri, 17 Jun 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-06-17-a-good-couple-of-weeks/</guid><description>&lt;p>&amp;hellip;since my last blog. I&amp;rsquo;ve managed to clear down all, not just most of the problems in my main customer&amp;rsquo;s bug tracker related to the two projects I have done for them. I&amp;rsquo;ve got one outstanding issue left, which is just a minor cosmetic issue with a seperate internal-use system. I shall finish it shortly so I don&amp;rsquo;t have to worry about it. Inevitably, more issues will get filed that will need to be dealt with, so I doubt it&amp;rsquo;ll be this quiet for long. I&amp;rsquo;ve also got a nice chunk of cash in the bank for my troubles, which should make paying the bills for the next 2-3 months a little less traumatic.&lt;/p></description></item><item><title>If it ain't one thing...</title><link>https://golder.org/posts/2005-06-02-if-it-aint-one-thing/</link><pubDate>Thu, 02 Jun 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-06-02-if-it-aint-one-thing/</guid><description>&lt;p>Worked late (until 3am) last night. Went to bed hungry, as there is no food in the fridge. Good thing I worked late and got plenty done, as I woke to find my Internet account has been suspended for non-payment, and I simply don&amp;rsquo;t have any money to pay it at the moment. Looks like I&amp;rsquo;ll be spending more time (and money) at the local Internet shop over the next week or so.&lt;/p></description></item><item><title>GUADEC and stuff</title><link>https://golder.org/posts/2005-05-31-guadec-and-stuff/</link><pubDate>Tue, 31 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-31-guadec-and-stuff/</guid><description>&lt;p>Saturday, I moved the last of my stuff off of my old co-host so it can be shut down as scheduled next Saturday. Probably disrupted service to my friends/family all day due to the high TTL on the DNS zone (I didn&amp;rsquo;t think ahead) etc. Seems to have moved across fairly smoothly.&lt;/p>
&lt;p>Also on Saturday, P&amp;rsquo;Pa (P&amp;rsquo;Fai&amp;rsquo;s wife)&amp;rsquo;s gran (!) died (aged well over 90, very frail anyway). Thai custom is to have a week long (sometimes 3-4 days, sometimes 9-10 days) mourning period where the family of the deceased entertains everyone in the area, and anyone from anywhere that has ever known the deceased, or their family. It&amp;rsquo;s quite shocking how big it is really, especially in comparison to our relatively low-scale western funeral traditions (friends and family, one day at the church and a gathering, done and dusted). Anyway, as a close friend of P&amp;rsquo;Fai&amp;rsquo;s (and Mee is a good friend of P&amp;rsquo;Pa), we are both expected to go round a couple of times a day to show respect and help out etc. No problem, just less time available for watching GUADEC streams etc :)&lt;/p></description></item><item><title>Samui and back again</title><link>https://golder.org/posts/2005-05-27-samui-and-back-again/</link><pubDate>Fri, 27 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-27-samui-and-back-again/</guid><description>&lt;p>Friday - spent pretty much the whole day wound up because a mate borrowed my motorbike for a few minutes on Thursday, and didn&amp;rsquo;t bother to bring it back, or call or anything. I had to go hunt for it at his house and bring it back myself when I woke up so my missus could go to market. He&amp;rsquo;s been a mate a long time, so it&amp;rsquo;s a long and complicated story, but I&amp;rsquo;ve had enough and it&amp;rsquo;s about time he learned to show some basic respect. And not just to me. It seems his others friends around here are also fed up of doing him favours and ending up out of pocket in return. I tried to explain the situation to him on the phone today, but he still seems to be of the opinion that he is the one that has done everyone else all the favours! Unbelievable. If he comes back next year with the same attitude, I doubt he will be able to find anyone willing to talk to him, let alone help him do anything. Given that he, and his electric cables, have to come across other people&amp;rsquo;s land to get to his house from the road, he really should be careful about how he treats his friends and neighbours.&lt;/p></description></item><item><title>...and then there were but two.</title><link>https://golder.org/posts/2005-05-19-and-then-there-were-but-two/</link><pubDate>Thu, 19 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-19-and-then-there-were-but-two/</guid><description>&lt;p>Well, I made it to the Internet shop, and despite them normally closing at 9pm, I caused them stay until about 9:10, but it was worth it. Today, I managed to respond to just about all the e-mails in my inbox, and this evening during the hour I managed to squeeze in at the Internet shop, I managed to file all the e-mail I responded to off-line in the relevant IMAP folders, respond to all new e-mails, delete all the spam (Spamcop-reporting it is out of the question atm), respond to a couple of bug reports and new problems that came up, and fix a problem with another developer&amp;rsquo;s Plesk-generated Apache configuration file (I think I fixed it, didn&amp;rsquo;t have time to check!). So I&amp;rsquo;ve now managed to whittle my inbox down to just 2 outstanding e-mails, and my bug tracker is down to only 8 outstanding bugs. Whoo!&lt;/p></description></item><item><title>One step forward, two steps back.</title><link>https://golder.org/posts/2005-05-18-one-step-forward-two-steps-back/</link><pubDate>Wed, 18 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-18-one-step-forward-two-steps-back/</guid><description>&lt;p>I have a confession to make. I spent some of my Sunday working on something that wasn&amp;rsquo;t related to my Monday morning work deadline, or to my spare-time responsibilities to GNOME. I moved the &amp;lsquo;golder.org&amp;rsquo; and &amp;lsquo;chilternflyers.org&amp;rsquo; e-mail and related services off of the widow co-host (which is due to be shut down) and back to the backup server. I decided that it needed to be done on a Sunday (early UK morning), to give the DNS a decent chance to propogate. It took a little more than the two hours I had estimated. It took six hours, but they were well spent, and I&amp;rsquo;m much happier with the situation now. It may not have a two bytes of spare memory to rub together, but it still serves up my e-mail as fast (if not faster) than before. My dad is currently looking for a 512Mb memory module, which when fitted should make things zip along quite nicely (no long pauses when changing mail folders!). Plus, now I don&amp;rsquo;t have to look after a load of e-mail services for other people&amp;rsquo;s customers for free!&lt;/p></description></item><item><title>All change</title><link>https://golder.org/posts/2005-05-15-all-change/</link><pubDate>Sun, 15 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-15-all-change/</guid><description>&lt;p>I finally had enough. About four years ago, while working for Nildram, I was allowed to bring in an old Linux box in and put it on the Internet, on the agreement that is was not for commercial use or for hosting websites that should otherwise be considered potential custom for Nildramkeep it under my desk. The idea was that it was for friends/family/open-source stuff. At first it lived under my desk. Later it was moved into the server room (a kind of free colo arrangement &amp;lsquo;perk&amp;rsquo;). Friend #1 supplied an old desktop machine for the server in exchange for a login. Later, we gave Friend #2 a login, and they supplied a larger HDD as the original 2Gb one was soon full. Both friends knew that it was not to be used for commercial purposes, or anything high-bandwidth. I used it for hosting my &lt;a href="http://www.chilternflyers.org/">hang-gliding club&amp;rsquo;s website&lt;/a> and mailing list (non-commercial), my personal homepage, and hosting &amp;lsquo;&lt;a href="http:/www.golder.org/">golder.org&lt;/a>&amp;rsquo; services (friends/family virus+spam-filtered IMAP mail accounts etc). Friend #2 mostly used it for University stuff and running a small IRC server. However, Friend #1 started selling e-mail accounts and web services to various people, and then went on to start setting up sites selling Steroids and other banned substances. So, while I&amp;rsquo;ve been spending my free (as in &amp;lsquo;unpaid!&amp;rsquo;) time keeping the software and spam filters all up-to-date and secure, he&amp;rsquo;s been trying to make money out of the deal. Unfortunately, that&amp;rsquo;s just the way this guy is, and I&amp;rsquo;m fed up of being taken the piss out of by a &amp;lsquo;friend&amp;rsquo;, so I&amp;rsquo;ve given them until the end of June to make alternative arrangements before I shut down the server and let them take their kit back. I&amp;rsquo;ll just move my stuff off to my backup server (albeit behind an ADSL line) for now, so apologies to anyone that uses these services if things appear to slow down a little for a while, or if there any disruption of services over the next few weekends as I move stuff off the old server.&lt;/p></description></item><item><title>Samui weekender</title><link>https://golder.org/posts/2005-05-10-samui-weekender/</link><pubDate>Tue, 10 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-10-samui-weekender/</guid><description>&lt;p>On Friday afternoon, P&amp;rsquo;Chai came round and asked if I wanted to go to Samui for a couple of days. P&amp;rsquo;Chai had to go to Samui to build a house for the Loong Chai&amp;rsquo;s mum, as his dad had died last month. Loong Chai had called P&amp;rsquo;Chai to say that he was driving down from Bangkok to Samui that evening, and would pick P&amp;rsquo;Chai up on the way. As Loong Chai&amp;rsquo;s car was full, and wasn&amp;rsquo;t suitable for carrying lots of tools etc, P&amp;rsquo;Chai asked P&amp;rsquo;Fai to take the tools down in P&amp;rsquo;Fai&amp;rsquo;s pick-up truck, and that I could go down with P&amp;rsquo;Fai. I couldn&amp;rsquo;t pass up the opportunity of a free weekend in Samui, so I packed up the computer, and we set off at about 9pm Friday evening. Unfortunately, P&amp;rsquo;Fai took his wife and child, so there wasn&amp;rsquo;t enough room for Mee to go too.&lt;/p></description></item><item><title>Hak Bunchee</title><link>https://golder.org/posts/2005-05-05-hak-bunchee/</link><pubDate>Thu, 05 May 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-05-05-hak-bunchee/</guid><description>&lt;p>I haven&amp;rsquo;t blogged for a while, as I sent &lt;a href="http://www.golder.org/mailman/archives/ross-thailand">my monthly post&lt;/a> a few days ago and because my Internet account is still disabled. I managed to get a few hours on Tuesday from a &amp;lsquo;borrowed&amp;rsquo; account, before they changed the password on that. Yesterday, one of the support staff at &lt;a href="http://www.csloxinfo.com/">CS Loxinfo&lt;/a> (my ISP) then gave me their login details so I could get a few hours, on the premise I would pay the outstanding balance (4193.38 baht) this morning. I still don&amp;rsquo;t have any money in my bank, but hopefully an invoice will clear, so I can go to the bank tomorrow morning, withdraw the cash from England, deposit the cash in Loxinfo&amp;rsquo;s account, fax them the slip, and I should be back on-line by mid-day. Feels strange not having connected today, but I did make a lot of good progress off-line (less distractions?).&lt;/p></description></item><item><title>Let there be light</title><link>https://golder.org/posts/2005-04-27-let-there-be-light/</link><pubDate>Wed, 27 Apr 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-04-27-let-there-be-light/</guid><description>&lt;p>I spent pretty much the whole day installing a strip light in the bathroom. There was a single bulb in there before, but it wasn&amp;rsquo;t really sufficient. It&amp;rsquo;s like daylight in there now. At the same time, I ran some cable to the back of the house and installed the old bulb from the bathroom there. It doesn&amp;rsquo;t really light up much yet, but once I get a decent bulb for it (Philips, screw-fit 3-prong 32watt thing), it should be enough to light up the immediate back garden. I put some heavier duty cable than the rest of the lights in the house, as eventually, I&amp;rsquo;ll mount the halogen floodlight there at the back, once I get a new halogen bulb, but that will wait for now. No real reason why it took me the whole day, except that I&amp;rsquo;m a slow worker. I&amp;rsquo;m satisfied that I did a good tidy job.&lt;/p></description></item><item><title>Not as Nerdy as I thought</title><link>https://golder.org/posts/2005-04-23-not-as-nerdy-as-i-thought/</link><pubDate>Sat, 23 Apr 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-04-23-not-as-nerdy-as-i-thought/</guid><description>&lt;!-- raw HTML omitted --></description></item><item><title>Bugtrackers rock</title><link>https://golder.org/posts/2005-04-22-bugtrackers-rock/</link><pubDate>Fri, 22 Apr 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-04-22-bugtrackers-rock/</guid><description>&lt;p>So I installed &lt;a href="http://www.mantisbt.org/">Mantis&lt;/a> bug tracking software for my main client, at their request as they&amp;rsquo;d seen one of their other developers using it, and they preferred it to the Bugzilla install I&amp;rsquo;d set up for them previously. I&amp;rsquo;m not bothered what system I use, as long as it serves it&amp;rsquo;s purpose and isn&amp;rsquo;t impossible to use. Mantis seems to fit the bill nicely here, and the bonus is that it&amp;rsquo;s PHP, so my client sees it as &amp;rsquo;easily extendable, if we need to&amp;rsquo;. My client is wise.&lt;/p></description></item><item><title>Home sweet home</title><link>https://golder.org/posts/2005-04-11-home-sweet-home/</link><pubDate>Mon, 11 Apr 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-04-11-home-sweet-home/</guid><description>&lt;p>Finally got back home from Malaysia/Samui. Been away eight days. I hate travelling. I&amp;rsquo;ve had about three or four sessions where I&amp;rsquo;ve had access to an Internet connection. The shops in Malaysia and Samui are all cool, spangly ADSL lines. The office in Samui was a 128k ISDN line, which was still reasonable compared to my usual affair. But, only having small windows of time at each, and having to concentrate on as uploading as much paid work as I can and downloading as much stuff for offline work as I can. I&amp;rsquo;ve tried to let non-important stuff build up until I get back. I&amp;rsquo;m back now, but I&amp;rsquo;ll talk about now later, so first here&amp;rsquo;s what came before now&amp;hellip; ;)&lt;/p></description></item><item><title>Penang, Malaysia.</title><link>https://golder.org/posts/2005-04-03-penang-malaysia/</link><pubDate>Sun, 03 Apr 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-04-03-penang-malaysia/</guid><description>&lt;p>I haven&amp;rsquo;t done much of note recently in the GNOME world, due to complications in the real world, as you can probably read from my last few blog entries. I&amp;rsquo;ve just posted &lt;a href="http://www.golder.org/mailman/archives/ross-thailand/2004-April/thread.html">my monthly report&lt;/a> which should bring the story up-to-date.&lt;/p></description></item><item><title>The replacement visa</title><link>https://golder.org/posts/2005-03-29-the-replacement-visa/</link><pubDate>Tue, 29 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-29-the-replacement-visa/</guid><description>&lt;p>So last night I get on the train, and I&amp;rsquo;m shown to carriage five. As the train&amp;rsquo;s pulling away, I realise carriage five is full of upright seats, with Thai&amp;rsquo;s jammed into them like sardine cans, sleeping almost bolt upright with their heads on each other&amp;rsquo;s shoulders, in that way that only Asian people can! I turned around and headed into the sleeper carriage (number four!), and settled into an unoccupied bed assuming it was a ticket misprint or something. Not too long later, I get woken up and asked for my ticket. I show him the ticket and he points me back to the carriage with the seats. I argue that I bought a sleeper ticker, but he says the ticket isn&amp;rsquo;t a sleeper. So, I spent about ten minutes in an uncomfortable seat next contemplating sitting bolt upright for the next 8 hours until the train arrives at 6 a.m. the following morning before and then having to go take care of business with no sleep! I attracted the attention of the attendant and asked if I could upgrade. Two minutes and two hundred baht later, and I&amp;rsquo;m back sleeping in the same sleeper I had snuck into previously :)&lt;/p></description></item><item><title>More passport shenanigans</title><link>https://golder.org/posts/2005-03-26-more-passport-shenanigans/</link><pubDate>Sat, 26 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-26-more-passport-shenanigans/</guid><description>&lt;p>About 2 hours before I was going to catch the train to Bangkok, we (that is, Mee) realised that the Immigration office might be shut on Saturdays. A quick web search later, and it turns out that yes, most government offices are closed on Saturdays, so we quickly changed the ticket. The next available train is on Monday night, so I&amp;rsquo;ll get to the Immigration office on Tuesday morning. That&amp;rsquo;s another three days added to my overstay bill, but on the other hand, it&amp;rsquo;s another three days to get my paperwork together for the visa renewal application and get some more work done.&lt;/p></description></item><item><title>More passports and visas chasing</title><link>https://golder.org/posts/2005-03-24-more-passports-and-visas-chasing/</link><pubDate>Thu, 24 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-24-more-passports-and-visas-chasing/</guid><description>&lt;p>My new passport arrived on Tuesday afternoon. I need to get a replacement visa stamp so that I can exit Thailand (it looks like I&amp;rsquo;m on my first day&amp;rsquo;s overstay today). I was suffering from a nasty cold which mostly put me out of action on Tuesday and Wednesday. On Wednesday, I called the Bangkok Immigration to ask if I could get the replacement at my local immigration office, and he just said &amp;lsquo;I think so&amp;rsquo; and gave me the Dan Sing Khorn immigration office telephone number. I phoned them and they said, &amp;lsquo;Yeah, bring your passport - no problems&amp;rsquo;. So this morning we travelled the 70km to Dan Sing Khorn. I showed them the new passport, and they pulled out my old one - I&amp;rsquo;d obviously left it at Dan Sing Khorn before I reported it lost! Then, they said they can&amp;rsquo;t do it there and that I&amp;rsquo;ve got to Bangkok to get a replacement visa! Another tank of petrol and another day wasted. It&amp;rsquo;s like this all the time trying to keep on the right side of Thai law - just one wild goose chase after another.&lt;/p></description></item><item><title>GPE needs love</title><link>https://golder.org/posts/2005-03-21-gpe-needs-love/</link><pubDate>Mon, 21 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-21-gpe-needs-love/</guid><description>&lt;p>I rsync&amp;rsquo;ed a load of my day-to-day folders onto the flash card for my iPAQ H5450 the other day. A moment ago I was trying to show a diagram to a friend using the iPAQ.&lt;/p>
&lt;p>The first problem I encountered was that there isn&amp;rsquo;t a decent file manager. Everything is application-centric, instead of document-centric. I had to open a (/the) image viewer, gpe-gallery, and select a directory to view. Where&amp;rsquo;s the file manager?&lt;/p></description></item><item><title>Passport re-issue request submitted</title><link>https://golder.org/posts/2005-03-17-passport-re-issue-request-submitted/</link><pubDate>Thu, 17 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-17-passport-re-issue-request-submitted/</guid><description>&lt;p>I went up to Bangkok on the &amp;lsquo;sprinter&amp;rsquo; train (two air-conditioned carriages, express service etc) on Tuesday, leaving at 2:15pm arriving at around 8:30pm. I caught a taxi to Loong Pon&amp;rsquo;s flat and took a few beers round. Loong Wit was working on the computer, and it turns out he&amp;rsquo;s working through a book learning PHP. I spent a few hours trying to help him understand stuff, but I have difficulty explaining things in English, so I doubt my Thai explanations were much help!&lt;/p></description></item><item><title>Passport lost - visa about to expire</title><link>https://golder.org/posts/2005-03-14-passport-lost-visa-about-to-expire/</link><pubDate>Mon, 14 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-14-passport-lost-visa-about-to-expire/</guid><description>&lt;p>I had been happily plodding on until I noticed last week that my visa will expire at the end of this week (Friday), so I started to gather up everything I need to get my visa extended.&lt;/p>
&lt;p>First, my passport. I saw it on Friday, but today no sign of it. We hunted high and low, and ultimately had to call the British Embassy in Bangkok to report it missing. They say - come to Bangkok with two passport photos and a police report for the missing passport (obtained earlier for 10 baht) and they can usually turn a new one around in five days. I needed a new passport anyway, as there were only three months (and not many blank pages) left on it anyway. However, I&amp;rsquo;ve booked my train tickets and the earliest I can get to the Embassy is Wednesday morning, which means I won&amp;rsquo;t get my passport until the following week, but my visa expires on Friday. No problem, they say, just pay a few days &amp;lsquo;overstay&amp;rsquo; at 200baht a day and explain your circumstances. That, plus 4500baht for a new passport and about 1000baht in train and taxi fares to make the application. Trip total &lt;strong>5500baht&lt;/strong>.&lt;/p></description></item><item><title>Not a good day</title><link>https://golder.org/posts/2005-03-11-not-a-good-day/</link><pubDate>Fri, 11 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-11-not-a-good-day/</guid><description>&lt;p>It started off well, with me cutting the grass in the garden, and P&amp;rsquo;Chai coming round and helping until about 10am. At this point, it started getting hot, so I went in to check my e-mail and start my (computer) working day. On lifting the receiver, I get a polite message (in Thai) that I haven&amp;rsquo;t paid my bill. Also, Mee comes back from the post office, where they&amp;rsquo;ve been keeping our mail because they say they don&amp;rsquo;t know where our house is yet. It seems that I need to put up a big sign with our house number at the end of the drive. In the post, there&amp;rsquo;s a letter from the &amp;lsquo;Thailand Post&amp;rsquo; service, saying that I have a parcel awaiting collection in Prachuab Kirikhan (100kms north!).&lt;/p></description></item><item><title>As the wind blowed...</title><link>https://golder.org/posts/2005-03-05-as-the-wind-blowed/</link><pubDate>Sat, 05 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-05-as-the-wind-blowed/</guid><description>&lt;p>I was going to take Richard and Eva to the waterfall today, but the extreme heat of the last few days has culminated in a fairly ferocious, air-clearing rainstorm that lasted the night and left the track to the waterfull too treacherous. It&amp;rsquo;s now probably going to be cold and windy for a few days while a bit of bad weather passes through.&lt;/p>
&lt;p>Mee&amp;rsquo;s birthday tomorrow. Taking Richard and Eva down to the &amp;lsquo;pert tai&amp;rsquo; (literally translated - &amp;lsquo;car boot&amp;rsquo;!) Saturday market, hopefully find a decent present there. I&amp;rsquo;m crap at presents.&lt;/p></description></item><item><title>Whatever happened to...</title><link>https://golder.org/posts/2005-03-02-whatever-happened-to/</link><pubDate>Wed, 02 Mar 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-03-02-whatever-happened-to/</guid><description>&lt;p>&lt;a href="http://gtm.sourceforge.net/">GNOME Transfer Manager (gtm)&lt;/a>? I was just about to download the latest episode of LUGradio, and I thought, hang on - I&amp;rsquo;d rather galeon didn&amp;rsquo;t handle the download in case it bombs out and I have to go and try rescuing the half-downloaded file and resuming the transfer with a &amp;lsquo;wget -c&amp;rsquo; or something. Then I remembered using gtm a few years back. I haven&amp;rsquo;t used it since I switched my laptop from RedHat to Debian a few years ago.&lt;/p></description></item><item><title>Relapse into emacs for macro re-indulgence</title><link>https://golder.org/posts/2005-02-26-relapse-into-emacs-for-macro-re-indulgence/</link><pubDate>Sat, 26 Feb 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-02-26-relapse-into-emacs-for-macro-re-indulgence/</guid><description>&lt;p>I found myself faced with having to manually re-indent a couple of hundred lines worth of HTML, checking it while I went. As always, I fire up gedit to start doing it, but then I realise that this job would be so much easier if I could M-x C-( and define a sequence of keystrokes that performed a common operation, then C-u &lt;!-- raw HTML omitted --> C-x e to fire it off a load of times (or just keep doing C-x e). It didn&amp;rsquo;t take too long before I had to fire up emacs for about 30mins to get the job done. It would have taken me at least an hour doing the same thing by hand in gedit.&lt;/p></description></item><item><title>Ubuntu on an XBox</title><link>https://golder.org/posts/2005-02-23-ubuntu-on-an-xbox/</link><pubDate>Wed, 23 Feb 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-02-23-ubuntu-on-an-xbox/</guid><description>&lt;p>Yay! A few more packages left to upgrade, but it&amp;rsquo;s already starting to work&amp;hellip;&lt;/p>
&lt;!-- raw HTML omitted -->
&lt;p>On Monday, I got cut off by my ISP, but I managed to quickly settle my balance to get back on-line. Today the telecoms guys are working down the road, so I&amp;rsquo;ve been cut off since about 10am, shortly after I&amp;rsquo;d finished checking my mail. There&amp;rsquo;s a ladder up the pole about a kilometre down the road, the exchange is open sprouting several unattached wires and there&amp;rsquo;s not a soul in sight. It&amp;rsquo;s now mid-afternoon, and I&amp;rsquo;d really like to upload what I&amp;rsquo;ve done so far today, as my customers will be starting to wake up soon. It&amp;rsquo;s a national bank holiday, so there&amp;rsquo;s no point in calling the telephone company. If the line&amp;rsquo;s not back in 30 mins, my mate&amp;rsquo;s just about to try a new windsurf out at the beach, so I&amp;rsquo;ll go down and watch for a while.&lt;/p></description></item><item><title>Saving money, wasting time.</title><link>https://golder.org/posts/2005-02-21-saving-money-wasting-time/</link><pubDate>Mon, 21 Feb 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-02-21-saving-money-wasting-time/</guid><description>&lt;p>&lt;!-- raw HTML omitted -->#include &amp;lt;std_havent_blogged_for_a_while.h&amp;gt;&lt;!-- raw HTML omitted -->&lt;/p>
&lt;!-- raw HTML omitted -->
&lt;p>I managed to snatch a few hours over this weekend just gone to do some more GNOME sysadmin jobs.&lt;/p>
&lt;p>Probably the most interesting was upgrading MySQL on our database backend from v3.23 (stock RHEL3) with v4.1 (rebuilt RHEL4 RPM) to give the guys dealing with &lt;!-- raw HTML omitted --> a Unicode-capable database to work with. Let&amp;rsquo;s see what they make of it.&lt;/p></description></item><item><title>The day after valentines</title><link>https://golder.org/posts/2005-02-15-the-day-after-valentines/</link><pubDate>Tue, 15 Feb 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-02-15-the-day-after-valentines/</guid><description>&lt;p>Sitting in the garden with P&amp;rsquo;Chai, thinking too much. Thought of lots, discussed and done lots too, but still got lots left to do.&lt;/p></description></item><item><title>Sunday update</title><link>https://golder.org/posts/2005-02-06-sunday-update/</link><pubDate>Sun, 06 Feb 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-02-06-sunday-update/</guid><description>&lt;p>I suppose you can say the most productive thing I&amp;rsquo;ve done all day is make a release of &lt;a href="http://ftp.gnome.org/pub/GNOME/sources/gtranslator/1.1/">gtranslator-1.1.6&lt;/a> 🔗💀, using GNOME&amp;rsquo;s &amp;lsquo;install-module&amp;rsquo; script for the first time.&lt;/p>
&lt;p>In doing so, I made myself some rough notes, as I always forget how I made the last release. In fact, I forgot to tag the 1.1.5 release last time round, so I&amp;rsquo;ve just retrospectively tagged it as of the date I made the 1.1.5 tarball. Here are the notes I made, which I will now attempt to follow whenever making a release of gtranslator. If anyone with more experience has any tips, &lt;a href="mailto:ross@golder.org">send them on over&lt;/a>.&lt;/p></description></item><item><title>Another busy month</title><link>https://golder.org/posts/2005-01-01-another-busy-month/</link><pubDate>Sat, 01 Jan 2005 00:00:00 +0000</pubDate><guid>https://golder.org/posts/2005-01-01-another-busy-month/</guid><description>&lt;p>Another month ends. I&amp;rsquo;ve wasted a lot of time and money this month, but a lot of good has come of it. Most of it is written up in my &lt;a href="http://widow.golder.org/pipermail/ross-thailand/2005-January/000020.html">monthly report&lt;/a> 🔗💀.&lt;/p>
&lt;p>And I posted my usual &lt;a href="http://mail.gnome.org/archives/gnome-infrastructure/2005-January/msg00016.html">&amp;lsquo;gnome-sysadmin&amp;rsquo; monthly summary&lt;/a>.&lt;/p>
&lt;p>I&amp;rsquo;ve had someone express an interest in helping close down a few GNOME bugs and make a maintenance release from the stable branch, which is excellent. I hope some good comes of it, and it spurs me into handling the outstanding gtranslator maintenance issues that are rotting in my Inbox.&lt;/p></description></item></channel></rss>