<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programming on Chris Ramsay</title><link>https://chrisramsay.co.uk/tag/programming/</link><description>Recent content in Programming on Chris Ramsay</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><copyright>© Chris Ramsay. Content CC BY-NC-SA 4.0 unless stated otherwise.</copyright><lastBuildDate>Sun, 01 Nov 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://chrisramsay.co.uk/tag/programming/index.xml" rel="self" type="application/rss+xml"/><item><title>My Hugo Publishing Process</title><link>https://chrisramsay.co.uk/posts/2026/11/hugo-publishing-process/</link><pubDate>Sun, 01 Nov 2026 12:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2026/11/hugo-publishing-process/</guid><description>After years on Pelican, this site now runs on Hugo. Writing a post is a Markdown file and a git push; GitHub Actions builds it and Cloudflare serves it, usually within a minute. Here&amp;rsquo;s how the whole pipeline fits together.</description></item><item><title>Pelican Blog Publishing Process Revisited</title><link>https://chrisramsay.co.uk/posts/2020/01/pelican-blog-publishing-process-revisited/</link><pubDate>Sun, 12 Jan 2020 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2020/01/pelican-blog-publishing-process-revisited/</guid><description>Regarding computer hardware I have had to hand in the last two years or so, things have been in flux, you might say. I have not had ready access to a proper non-work Linux desktop environment where I could happily run Docker and Python. This has meant that keeping my Pelican blog up to date…</description></item><item><title>Fun with the Sun and PyEphem</title><link>https://chrisramsay.co.uk/posts/2017/03/fun-with-the-sun-and-pyephem/</link><pubDate>Sun, 12 Mar 2017 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2017/03/fun-with-the-sun-and-pyephem/</guid><description>&lt;p&gt;In this article I have a play with &lt;a href="http://rhodesmill.org/pyephem/" target="_blank" rel="noreferrer"&gt;PyEphem&lt;/a&gt; and our local star, both as an opportunity to draw some pretty graphs and answer a few basic astronomy related questions, such as: what does the equation of time look like and is there a difference in the time it takes for the sun to set during the year.&lt;/p&gt;</description></item><item><title>Getting Bookmark Data from del.icio.us</title><link>https://chrisramsay.co.uk/posts/2017/02/getting-bookmark-data-from-delicious/</link><pubDate>Sun, 19 Feb 2017 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2017/02/getting-bookmark-data-from-delicious/</guid><description>Below is an outline for building a rough &amp;amp; ready script to get del.icio.us bookmark data - a script very much driven by necessity.</description></item><item><title>Show Source Plugin Update</title><link>https://chrisramsay.co.uk/posts/2016/12/show-source-plugin-update/</link><pubDate>Sat, 17 Dec 2016 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2016/12/show-source-plugin-update/</guid><description>I received some good news this week: my Show Source plugin, the one inspired by Sphinx, has had its pull request accepted into the getpelican/pelican-plugins repo. This means that the plugin becomes a part of the standard Pelican plugin canon.</description></item><item><title>Creating AWS Data Pipelines with Boto3 and JSON</title><link>https://chrisramsay.co.uk/posts/2016/11/creating-aws-data-pipelines-with-boto3-and-json/</link><pubDate>Wed, 16 Nov 2016 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2016/11/creating-aws-data-pipelines-with-boto3-and-json/</guid><description>I have been doing a little work with AWS data pipeline recently for undertaking ETL tasks at work. AWS data pipeline handles data driven workflows called pipelines. The data pipelines take care of scheduling, data depenedencies, data sources and destinations in a nicely managed workflow. My tasks take batch datasets from SQL databases, processing and…</description></item><item><title>The Show Source Pelican Plugin</title><link>https://chrisramsay.co.uk/posts/2016/11/the-show-source-pelican-plugin/</link><pubDate>Sun, 06 Nov 2016 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2016/11/the-show-source-pelican-plugin/</guid><description>I have always been a fan of the Sphinx Python documentation generator and it has, I think, a nice feature where you can check out the raw source of a generated piece of documentation - a Show Source link. I decided that developing a Pelican plugin to imitate that feature would be a great way…</description></item><item><title>Basic Notes on Pelican Plugin Architecture</title><link>https://chrisramsay.co.uk/posts/2016/11/basic-notes-on-pelican-plugin-architecture/</link><pubDate>Fri, 04 Nov 2016 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2016/11/basic-notes-on-pelican-plugin-architecture/</guid><description>I have always been a fan of the Sphinx Python documentation generator and it has, I think, a nice feature where you can check out the raw source of a generated piece of documentation - a Show Source link. I decided that developing a Pelican plugin to imitate that feature would be a great way…</description></item><item><title>Pelican Blogging with a Docker Container</title><link>https://chrisramsay.co.uk/posts/2015/12/pelican-blogging-with-a-docker-container/</link><pubDate>Wed, 02 Dec 2015 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2015/12/pelican-blogging-with-a-docker-container/</guid><description>It has been about a year since I started using a virtual server on the laptop to locally host my blogging efforts with Pelican. Up to now I have used a combination of Vagrant (with Virtualbox in the background) and a Puppet built CentOS VM. At work we are increasingly introducing the concept of containerised…</description></item><item><title>Getting Data from a Garmin FR610</title><link>https://chrisramsay.co.uk/posts/2015/02/getting-data-from-a-garmin-fr610/</link><pubDate>Thu, 05 Feb 2015 00:00:00 +0000</pubDate><guid>https://chrisramsay.co.uk/posts/2015/02/getting-data-from-a-garmin-fr610/</guid><description>Since getting a Garmin Forerunner 610 I have been largely satisfied with the various aspects of getting the data from the said watch on to the Internet. It is a multi stage process, each with risks and issues very much dependent on non functional qualities, such as network and USB resilience, usability and so on.…</description></item><item><title>Moving from Map My Run to Strava</title><link>https://chrisramsay.co.uk/posts/2014/10/moving-from-mapmyrun-to-strava/</link><pubDate>Sat, 11 Oct 2014 00:00:00 +0100</pubDate><guid>https://chrisramsay.co.uk/posts/2014/10/moving-from-mapmyrun-to-strava/</guid><description>I have been running a little while now and am always in the habit of taking my phone with me to get some monitoring in on my progress with the aid of GPS and so on. I have been using a really nice app called mapmyrun. It has given me months of good service and…</description></item><item><title>Titlecase: A Great Find</title><link>https://chrisramsay.co.uk/posts/2014/09/titlecase-a-great-find/</link><pubDate>Thu, 18 Sep 2014 00:00:00 +0100</pubDate><guid>https://chrisramsay.co.uk/posts/2014/09/titlecase-a-great-find/</guid><description>As a rather inexperienced writer, it is the little things I struggle with, as well as the big things you might add. I find that one of the most annoying is getting title case correct. There are a lot of style guides about which may or may not help; I find some of them cryptic…</description></item><item><title>Pylint and the Module hashlib has no md5 member Error</title><link>https://chrisramsay.co.uk/posts/2014/04/pylint-and-the-module-hashlib-has-no-md5-member-error/</link><pubDate>Sat, 26 Apr 2014 00:00:00 +0100</pubDate><guid>https://chrisramsay.co.uk/posts/2014/04/pylint-and-the-module-hashlib-has-no-md5-member-error/</guid><description>How to avoid PyLint&amp;rsquo;s Module &amp;lsquo;hashlib&amp;rsquo; has no &amp;lsquo;md5&amp;rsquo; member error when using hashlib&amp;rsquo;s md5() function in your code, and the consequences of doing so.</description></item></channel></rss>