<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet ALUG</title>
	<link rel="self" href="http://planet.alug.org.uk/atom.xml"/>
	<link href="http://planet.alug.org.uk/"/>
	<id>http://planet.alug.org.uk/atom.xml</id>
	<updated>2024-07-06T20:02:55+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title type="html">Sorting out backup internet #4: IPv6</title>
		<link href="https://www.earth.li/~noodles/blog/2024/06/backup-internet-ipv6.html"/>
		<id>https://www.earth.li/~noodles/blog/2024/06/backup-internet-ipv6.html</id>
		<updated>2024-06-27T18:38:00+00:00</updated>
		<content type="html">&lt;p&gt;The final piece of my &lt;a href=&quot;http://www.earth.li/~noodles/blog/2024/04/backup-internet-5g.html&quot;&gt;5G (well, 4G) based&lt;/a&gt; based backup internet connection I needed to sort out was IPv6. While Three do support IPv6 in their network they only seem to enable it for certain devices, and the MC7010 is not one of those devices, even though it also supports IPv6.&lt;/p&gt;

&lt;p&gt;I use v6 a lot - over 50% of my external traffic, &lt;a href=&quot;http://www.earth.li/~noodles/blog/2019/11/a-month-of-v6.html&quot;&gt;last time I looked&lt;/a&gt;. One suggested option was that I could drop the IPv6 Router Advertisements when the main external link went down, but  I have a number of internal services that are only presented on v6 addresses so I needed to ensure clients in the house continued to have access to those.&lt;/p&gt;

&lt;p&gt;As it happens I’ve used the &lt;a href=&quot;https://www.he.net/&quot;&gt;Hurricane Electric&lt;/a&gt; &lt;a href=&quot;https://tunnelbroker.net/&quot;&gt;IPv6 Tunnel Broker&lt;/a&gt; in the past, so my pass was re-instating that. The 5G link has a real external IPv4 address, and it’s possible to update the endpoint using a simple HTTP GET. I added the following to my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/dhcp/dhclient-exit-hooks.d/modem-interface-route&lt;/code&gt; where we are dealing with an interface IP change:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# Update IPv6 tunnel with Hurricane Electric
curl --interface $interface 'https://username:password@ipv4.tunnelbroker.net/nic/update?hostname=1234'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I needed some additional configuration to bring things up, so &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/network/interfaces&lt;/code&gt; got the following, configuring the 6in4 tunnel as well as the low preference default route, and source routing via the 5g table, similar to IPv4:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pre-up ip tunnel add he-ipv6 mode sit remote 216.66.80.26
pre-up ip link set he-ipv6 up
pre-up ip addr add 2001:db8:1234::2/64 dev he-ipv6
pre-up ip -6 rule add from 2001:db8:1234::/64 lookup 5g
pre-up ip -6 route add default dev he-ipv6 table 5g
pre-up ip -6 route add default dev he-ipv6 metric 1000
post-down ip tunnel del he-ipv6
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We need to deal with IPv4 changes in for the tunnel endpoint, so &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;modem-interface-route&lt;/code&gt; also got:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ip tunnel change he-ipv6 local $new_ip_address
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/nftables.conf&lt;/code&gt; had to be taught to accept the 6in4 packets from the tunnel in the input chain:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# Allow HE tunnel
iifname &quot;sfp.31&quot; ip protocol 41 ip saddr 216.66.80.26 accept
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Finally, I had to engage in something I never thought I’d deal with; IPv6 NAT. HE provide a /48, and my FTTP ISP provides me with a /56, so this meant I could do a nice stateless 1:1 mapping:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;table ip6 nat {
  chain postrouting {
    type nat hook postrouting priority 0

    oifname &quot;he-ipv6&quot; snat ip6 prefix to ip6 saddr map { 2001:db8:f00d::/56 : 2001:db8:666::/56 }
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This works. Mostly. The problem is that HE, not unreasonably, expect your IPv4 address to be pingable. And it turns out &lt;a href=&quot;https://www.three.co.uk/&quot;&gt;Three&lt;/a&gt; have some ranges that this works on, and some that it doesn’t. Which means it’s a bit hit and miss whether you can setup the tunnel.&lt;/p&gt;

&lt;p&gt;I spent a while trying to find an alternative free IPv6 tunnel provider with a UK endpoint. There’s less call for them these days, so I didn’t manage to find any that actually worked (or didn’t have a similar pingable requirement). I did consider whether I wanted to end up with routes via a VM, as I described in the &lt;a href=&quot;http://www.earth.li/~noodles/blog/2024/04/backup-internet-failover.html&quot;&gt;failover&lt;/a&gt; post, but looking at costings for VMs with providers who could actually give me an IPv6 range I decided the cost didn’t make it worthwhile; the VM cost ended up being more than the backup SIM is costing monthly.&lt;/p&gt;

&lt;p&gt;Finally, it turns out &lt;a href=&quot;https://en.wikipedia.org/wiki/Happy_Eyeballs&quot;&gt;happy eyeballs&lt;/a&gt; mostly means that when the 5G ends up on an IP that we can’t setup the IPv6 tunnel on, things still mostly work. Browser usage fails over quickly and it’s mostly my own SSH use that needs me to force IPv4. Purists will groan, but this turns out to be an acceptable trade-off for me, at present. Perhaps if I was seeing frequent failures the diverse routes approach to a VM would start to make sense, but for now I’m pretty happy with the configuration in terms of having a mostly automatic backup link take over when the main link goes down.&lt;/p&gt;</content>
		<author>
			<name>Jonathan McDowell</name>
			<uri>https://www.earth.li/~noodles/blog/</uri>
		</author>
		<source>
			<title type="html">Noodles' Emptiness</title>
			<subtitle type="html">Dude! Sweet!</subtitle>
			<link rel="self" href="https://www.earth.li/~noodles/blog/feed.xml"/>
			<id>https://www.earth.li/~noodles/blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Ross Anderson</title>
		<link href="https://baldric.net/2024/04/30/ross-anderson/"/>
		<id>https://baldric.net/?p=4348</id>
		<updated>2024-04-30T12:30:14+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;I have just discovered, shamefully late, that Ross Anderson died at his Cambridge home at the end of last month. He was only 67. Anderson was Professor of Security Engineering at the Cambridge University’s Department of Computer Science and Technology. He had worked at the University since the early 1990s.&lt;/p&gt;
&lt;p&gt;Professor Anderson was famously rabidly anti spook, but more justifiably famous for his work in privacy and particularly in those aspects of computer security (or wider technology) which could impact on personal privacy. &lt;/p&gt;
&lt;p&gt;I cannot pretend to have known Professor Anderson, but I had, and have, the greatest respect for his work. Anyone who can annoy certain parts of GCHQ as much as he did deserves commendation. Professor Anderson’s obituary can be found &lt;a href=&quot;https://www.lightbluetouchpaper.org/2024/03/29/rip-ross-anderson/&quot;&gt;here&lt;/a&gt;. There are also good tributes by &lt;a href=&quot;https://memex.naughtons.org/monday-1-april-2024/39303/&quot;&gt;John Naughton&lt;/a&gt; and &lt;a href=&quot;https://www.schneier.com/blog/archives/2024/03/ross-anderson.html&quot;&gt;Bruce Schneier&lt;/a&gt;. There are plenty of others on-line should you care to search. &lt;/p&gt;
&lt;p&gt;I am deeply sorry that I only found out about his passing from the latest “&lt;a href=&quot;https://www.feistyduck.com/newsletter/&quot;&gt;feisty duck&lt;/a&gt;” newsletter. My only excuse is that I don’t follow twitter, nor am I as active in following many of the security sources I used to read. One of the impacts of (long) retirement I fear.&lt;/p&gt;
&lt;p&gt;RIP Professor.    &lt;/p&gt;</content>
		<author>
			<name>Mick</name>
			<uri>https://baldric.net</uri>
		</author>
		<source>
			<title type="html">trivia</title>
			<subtitle type="html">just another voice on the net</subtitle>
			<link rel="self" href="https://baldric.net/feed/"/>
			<id>https://baldric.net</id>
		</source>
	</entry>

	<entry>
		<title type="html">Sorting out backup internet #3: failover</title>
		<link href="https://www.earth.li/~noodles/blog/2024/04/backup-internet-failover.html"/>
		<id>https://www.earth.li/~noodles/blog/2024/04/backup-internet-failover.html</id>
		<updated>2024-04-25T17:38:00+00:00</updated>
		<content type="html">&lt;p&gt;With &lt;a href=&quot;http://www.earth.li/~noodles/blog/2024/04/backup-internet-rdns.html&quot;&gt;local recursive DNS&lt;/a&gt; and a &lt;a href=&quot;http://www.earth.li/~noodles/blog/2024/04/backup-internet-5g.html&quot;&gt;5G modem&lt;/a&gt; in place the next thing was to work on some sort of automatic failover when the primary FTTP connection failed. My wife works from home too and I sometimes travel so I wanted to make sure things didn’t require me to be around to kick them into switch the link in use.&lt;/p&gt;

&lt;p&gt;First, let’s talk about what I didn’t do. One choice to try and ensure as seamless a failover as possible would be to get a VM somewhere out there. I’d then run &lt;a href=&quot;https://www.wireguard.com/&quot;&gt;Wireguard&lt;/a&gt; tunnels over both the FTTP + 5G links to the VM, and run some sort of routing protocol (RIP, OSPF?) over the links. Set preferences such that the FTTP is preferred, NAT v4 to the VM IP, and choose somewhere that gave me a v6 range I could just use directly.&lt;/p&gt;

&lt;p&gt;This has the advantage that I’m actively checking link quality to the outside work, rather than just to the next hop. It also means, if the failover detection is fast enough, that existing sessions stay up rather than needing re-established.&lt;/p&gt;

&lt;p&gt;The downsides are increased complexity, adding another point of potential failure (the VM + provider), the impact on connection quality (even with a decent endpoint it’s an extra hop and latency), and finally the increased cost involved.&lt;/p&gt;

&lt;p&gt;I can cope with having to reconnect my SSH sessions in the event of a failure, and I’d rather be sure I can make full use of the FTTP connection, so I didn’t go this route. I chose to rely on local link failure detection to provide the signal for failover, and a set of policy routing on top of that to make things a bit more seamless.&lt;/p&gt;

&lt;p&gt;Local link failure turns out to be fairly easy. My FTTP is a PPPoE configuration, so in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/ppp/peers/aquiss&lt;/code&gt; I have:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;lcp-echo-interval 1
lcp-echo-failure 5
lcp-echo-adaptive
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Which gives me a failover of ~ 5s if the link goes down.&lt;/p&gt;

&lt;p&gt;I’m operating the 5G modem in “bridge” rather than “router” mode, which means I get the actual IP from the 5G network via DHCP. The DHCP lease the modem hands out is under a minute, and in the event of a network failure it only hands out a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;192.168.254.x&lt;/code&gt; IP to talk to its web interface. As the 5G modem is the last resort path I choose not to do anything special with this, but the information is at least there if I need it.&lt;/p&gt;

&lt;p&gt;To allow both interfaces to be up and the FTTP to be preferred I’m simply using route metrics. For the PPP configuration that’s:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;defaultroute-metric 100
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and for the 5G modem I have:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;iface sfp.31 inet dhcp
    metric 1000
    vlan-raw-device sfp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;There’s a wrinkle in that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pppd&lt;/code&gt; will not replace an existing default route, so I’ve created &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/ppp/ip-up.d/default-route&lt;/code&gt; to ensure it’s added:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#!/bin/bash

[ &quot;$PPP_IFACE&quot; = &quot;pppoe-wan&quot; ] || exit 0

# Ensure we add a default route; pppd will not do so if we have
# a lower pref route out the 5G modem
ip route add default dev pppoe-wan metric 100 || true
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Additionally, in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/dhcp/dhclient.conf&lt;/code&gt; I’ve disabled asking for any server details (DNS, NTP, etc) - I have internal setups for the servers I want, and don’t want to be trying to select things over the 5G link by default.&lt;/p&gt;

&lt;p&gt;However, what I do want is to be able to access the 5G modem web interface and explicitly route some traffic out that link (e.g. so I can add it to my smokeping tests). For that I need some source based routing.&lt;/p&gt;

&lt;p&gt;First step, add a 5g table to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/iproute2/rt_tables&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;16  5g
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then I ended up with the following in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/dhcp/dhclient-exit-hooks.d/modem-interface-route&lt;/code&gt;, which is more complex than I’d like but seems to do what I want:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#!/bin/sh

case &quot;$reason&quot; in
    BOUND|RENEW|REBIND|REBOOT)
        # Check if we've actually changed IP address
        if [ -z &quot;$old_ip_address&quot; ] ||
           [ &quot;$old_ip_address&quot; != &quot;$new_ip_address&quot; ] ||
           [ &quot;$reason&quot; = &quot;BOUND&quot; ] || [ &quot;$reason&quot; = &quot;REBOOT&quot; ]; then
            if [ ! -z &quot;$old_ip_address&quot; ]; then
                ip rule del from $old_ip_address lookup 5g
            fi
            ip rule add from $new_ip_address lookup 5g

            ip route add default dev sfp.31 table 5g || true
            ip route add 192.168.254.1 dev sfp.31 2&amp;gt;/dev/null || true
        fi
    ;;

    EXPIRE)
        if [ ! -z &quot;$old_ip_address&quot; ]; then
            ip rule del from $old_ip_address lookup 5g
        fi
    ;;

    *)
    ;;
esac
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;What does all that aim to do? We want to ensure traffic directed to the 5G WAN address goes out the 5G modem, so I can SSH into it even when the main link is up. So we add a rule directing traffic from that IP to hit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;5g&lt;/code&gt; routing table, and a default route in that table which uses the 5G link. There’s no configuration for the FTTP connection in that table, so if the 5G link is down the traffic gets dropped, which is what we want. We also configure &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;192.168.254.1&lt;/code&gt; to go out the link to the modem, as that’s where the web interface lives.&lt;/p&gt;

&lt;p&gt;I also have a curl callout (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl --interface sfp.31 …&lt;/code&gt; to ensure it goes out the 5G link) after the routes are configured to set &lt;a href=&quot;https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns&quot;&gt;dynamic DNS&lt;/a&gt; with &lt;a href=&quot;https://www.mythic-beasts.com/&quot;&gt;Mythic Beasts&lt;/a&gt;, which helps with knowing where to connect back to. I seem to see IP address changes on the 5G link every couple of days at least.&lt;/p&gt;

&lt;p&gt;Additionally, I have an entry in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;interfaces&lt;/code&gt; configuration carving out the top set of the netblock my smokeping server is in:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;    up ip rule add from 192.0.2.224/27 lookup 5g
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;My smokeping &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/smokeping/config.d/Probes&lt;/code&gt; file then looks like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;*** Probes ***

+ FPing

binary = /usr/bin/fping

++ FPingNormal

++ FPing5G

sourceaddress = 192.0.2.225

+ FPing6

binary = /usr/bin/fping
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;which allows me to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;probe = FPing5G&lt;/code&gt; for targets to test them over the 5G link.&lt;/p&gt;

&lt;p&gt;That mostly covers the functionality I want for a backup link. There’s one piece that isn’t quite solved, however, IPv6, which can wait for another post.&lt;/p&gt;</content>
		<author>
			<name>Jonathan McDowell</name>
			<uri>https://www.earth.li/~noodles/blog/</uri>
		</author>
		<source>
			<title type="html">Noodles' Emptiness</title>
			<subtitle type="html">Dude! Sweet!</subtitle>
			<link rel="self" href="https://www.earth.li/~noodles/blog/feed.xml"/>
			<id>https://www.earth.li/~noodles/blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-gb">Increasing the Integrity of Software Supply Chains awarded IEEE ‘Best Paper’ award</title>
		<link href="https://chris-lamb.co.uk/posts/ieee-best-paper-award"/>
		<id>https://chris-lamb.co.uk/posts/ieee-best-paper-award</id>
		<updated>2024-01-22T17:11:39+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;https://www.computer.org/csdl/magazine/so&quot;&gt;IEEE Software&lt;/a&gt; recently announced that a paper that I &lt;a href=&quot;https://chris-lamb.co.uk/posts/reproducible-builds-increasing-the-integrity-of-software-supply-chains&quot;&gt;co-authored&lt;/a&gt; with &lt;a href=&quot;https://upsilon.cc/~zack/&quot;&gt;Dr. Stefano Zacchiroli&lt;/a&gt; has recently been &lt;a href=&quot;https://twitter.com/ieeesoftware/status/1736684911690436868&quot;&gt;awarded their ‘Best Paper’ award&lt;/a&gt;:&lt;/p&gt;
&lt;figure class=&quot;figure text-center d-block&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/2104.06020&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://lamby-www.s3.amazonaws.com/yadt/blog.Image/image/original/197.jpeg&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Titled &lt;a href=&quot;https://arxiv.org/abs/2104.06020&quot;&gt;&lt;em&gt;Reproducible Builds: Increasing the Integrity of Software Supply Chains&lt;/em&gt;&lt;/a&gt;, the abstract reads as follows:&lt;/p&gt;
&lt;aside style=&quot;float: right; padding-left: 20px; padding-bottom: 20px;&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/2104.06020&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://lamby-www.s3.amazonaws.com/yadt/blog.Image/image/thumbnail/193.jpeg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/aside&gt;
&lt;blockquote class=&quot;epigraph col-lg-5 offset-lg-3&quot;&gt;
&lt;p&gt;Although it is possible to increase confidence in Free and Open Source Software (FOSS) by reviewing its source code, trusting code is not the same as trusting its executable counterparts. These are typically built and distributed by third-party vendors with severe security consequences if their supply chains are compromised.&lt;/p&gt;
&lt;p&gt;In this paper, we present reproducible builds, an approach that can determine whether generated binaries correspond with their original source code. We first define the problem and then provide insight into the challenges of making real-world software build in a &quot;reproducible&quot; manner — that is, when every build generates bit-for-bit identical results. Through the experience of the &lt;a href=&quot;https://reproducible-builds.org/&quot;&gt;Reproducible Builds project&lt;/a&gt; making the &lt;a href=&quot;https://www.debian.org/&quot;&gt;Debian Linux distribution&lt;/a&gt; reproducible, we also describe the affinity between reproducibility and quality assurance (QA).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;According to Google Scholar, the paper has accumulated almost &lt;a href=&quot;https://scholar.google.com/scholar?cites=14012107044349986829&amp;amp;as_sdt=5,48&amp;amp;sciodt=0,48&amp;amp;hl=en&quot;&gt;40 citations&lt;/a&gt; since publication. The full text of the paper can be found in &lt;a href=&quot;https://arxiv.org/pdf/2104.06020&quot;&gt;PDF format&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Chris Lamb</name>
			<uri>https://chris-lamb.co.uk/blog/category/planet-alug</uri>
		</author>
		<source>
			<title type="html">lamby: Items or syndication on Planet ALUG.</title>
			<link rel="self" href="https://chris-lamb.co.uk/category/planet-alug/feed"/>
			<id>https://chris-lamb.co.uk/blog/category/planet-alug</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-gb">Favourites of 2023</title>
		<link href="https://chris-lamb.co.uk/posts/favourites-of-2023"/>
		<id>https://chris-lamb.co.uk/posts/favourites-of-2023</id>
		<updated>2023-12-31T16:59:43+00:00</updated>
		<content type="html">&lt;p&gt;This post should have marked the beginning of my yearly roundups of the favourite books and movies I read and watched in 2023.&lt;/p&gt;
&lt;p&gt;However, due to coming down with a nasty bout of flu recently and other sundry commitments, I wasn't able to undertake writing the necessary four or five blog posts… In lieu of this, however, I will simply present my (unordered and unadorned) highlights for now. Do get in touch if this (or any of my previous posts) have spurred you into picking something up yourself… &lt;/p&gt;
&lt;center&gt;&lt;p style=&quot;clear: both;&quot;&gt;§&lt;/p&gt;&lt;/center&gt;
&lt;h2&gt;Books&lt;/h2&gt;
&lt;figure class=&quot;figure text-center d-block&quot;&gt;&lt;a href=&quot;https://chris-lamb.co.uk/azn/B003K15EKM&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/B003K15EKM.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Peter Watts: &lt;a href=&quot;https://chris-lamb.co.uk/azn/B003K15EKM&quot;&gt;&lt;em&gt;Blindsight&lt;/em&gt;&lt;/a&gt; (2006)&lt;a href=&quot;https://chris-lamb.co.uk/azn/B016N55NZ2&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://i.imgur.com/8dLh4I4.jpeg&quot; /&gt;&lt;/a&gt;
Reymer Banham: &lt;a href=&quot;https://chris-lamb.co.uk/azn/B016N55NZ2&quot;&gt;&lt;em&gt;Los Angeles: The Architecture of Four Ecologies&lt;/em&gt;&lt;/a&gt; (2006)&lt;a href=&quot;https://chris-lamb.co.uk/azn/1250785758&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/1250785758.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Joanne McNeil: &lt;a href=&quot;https://chris-lamb.co.uk/azn/1250785758&quot;&gt;&lt;em&gt;Lurking: How a Person Became a User&lt;/em&gt;&lt;/a&gt; (2020)&lt;a href=&quot;https://chris-lamb.co.uk/azn/014118230X&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/014118230X.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
J. L. Carr: &lt;a href=&quot;https://chris-lamb.co.uk/azn/014118230X&quot;&gt;&lt;em&gt;A Month in the Country&lt;/em&gt;&lt;/a&gt; (1980)&lt;a href=&quot;https://chris-lamb.co.uk/azn/1399813889&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/1399813889.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Hilary Mantel: &lt;a href=&quot;https://chris-lamb.co.uk/azn/1399813889&quot;&gt;&lt;em&gt;A Memoir of My Former Self: A Life in Writing&lt;/em&gt;&lt;/a&gt; (2023)&lt;a href=&quot;https://chris-lamb.co.uk/azn/0552172898&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/0552172898.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Adam Higginbotham: &lt;a href=&quot;https://chris-lamb.co.uk/azn/0552172898&quot;&gt;&lt;em&gt;Midnight in Chernobyl&lt;/em&gt;&lt;/a&gt; (2019)&lt;a href=&quot;https://chris-lamb.co.uk/azn/009954203X&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/009954203X.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Tony Judt: &lt;a href=&quot;https://chris-lamb.co.uk/azn/009954203X&quot;&gt;&lt;em&gt;Postwar: A History of Europe Since 1945&lt;/em&gt;&lt;/a&gt; (2005)&lt;a href=&quot;https://chris-lamb.co.uk/azn/0099532336&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/0099532336.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Tony Judt: &lt;a href=&quot;https://chris-lamb.co.uk/azn/0099532336&quot;&gt;&lt;em&gt;Reappraisals: Reflections on the Forgotten Twentieth Century&lt;/em&gt;&lt;/a&gt; (2008)&lt;a href=&quot;https://chris-lamb.co.uk/azn/0861546156&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/0861546156.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Peter Apps: &lt;a href=&quot;https://chris-lamb.co.uk/azn/0861546156&quot;&gt;&lt;em&gt;Show Me the Bodies: How We Let Grenfell Happen&lt;/em&gt;&lt;/a&gt; (2021)&lt;a href=&quot;https://chris-lamb.co.uk/azn/0374531382&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/0374531382.01.LZ.jpg&quot; /&gt;&lt;/a&gt;
Joan Didion: &lt;a href=&quot;https://chris-lamb.co.uk/azn/0374531382&quot;&gt;&lt;em&gt;Slouching Towards Bethlehem&lt;/em&gt;&lt;/a&gt; (1968)&lt;a href=&quot;https://chris-lamb.co.uk/azn/0553813536&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;figure-img img-fluid rounded&quot; src=&quot;https://images-eu.ssl-images-amazon.com/images/P/0553813536.01.LZ.jpg&quot; /&gt;&lt;/a&gt;Erik Larson: &lt;a href=&quot;https://chris-lamb.co.uk/azn/0553813536&quot;&gt;&lt;em&gt;The Devil in the White City&lt;/em&gt;&lt;/a&gt; (2003)&lt;/figure&gt;
&lt;center&gt;&lt;p style=&quot;clear: both;&quot;&gt;§&lt;/p&gt;&lt;/center&gt;
&lt;h2&gt;Films&lt;/h2&gt;
&lt;h3&gt;Recent releases&lt;/h3&gt;
&lt;aside style=&quot;float: right; padding-left: 20px; padding-bottom: 20px;&quot;&gt;&lt;a href=&quot;https://letterboxd.com/film/the-blue-caftan/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//sOZtKalLj9ZmOxUVwJT7HMxClhk.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/the-eight-mountains/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//1oc4AwkfFkLsRQ96t1erFXzPUhU.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/evil-does-not-exist/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//z9UNOIQzAMf2RJKeCBjDdLFKisP.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/killers-of-the-flower-moon/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//dB6Krk806zeqd0YNp2ngQ9zXteH.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/monster-2023/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//uYsgrgeosOl9yzIAA0kqYOBm6hv.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/passages-2023/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//s1VdsH0XYVtF06vsZpZR1aWaX4z.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/poor-things-2023/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//kCGlIMHnOm8JPXq3rXM6c5wMxcT.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/the-tuba-thieves/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//sLihst1qPNuyGS16vtdBYhegjJ6.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/theater-camp-2023/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//2osbLk1MMt9qjXPKSB2hMcBUyrw.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/tar-2022/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//dRVAlaU0vbG6hMf2K45NSiIyoUe.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/aside&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/the-blue-caftan/&quot;&gt;&lt;em&gt;The Blue Caftan&lt;/em&gt;&lt;/a&gt; (Maryam Touzani, 2022)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/the-eight-mountains/&quot;&gt;&lt;em&gt;The Eight Mountains&lt;/em&gt;&lt;/a&gt; (Felix van Groeningen &amp;amp; Charlotte Vandermeersch, 2022)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/evil-does-not-exist/&quot;&gt;&lt;em&gt;Evil Does Not Exist&lt;/em&gt;&lt;/a&gt; (Ryusuke Hamaguchi, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/killers-of-the-flower-moon/&quot;&gt;&lt;em&gt;Killers of the Flower Moon&lt;/em&gt;&lt;/a&gt; (Martin Scorcese, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/monster-2023/&quot;&gt;&lt;em&gt;Monster&lt;/em&gt;&lt;/a&gt; (Hirokazu Kore-eda, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/passages-2023/&quot;&gt;&lt;em&gt;Passages&lt;/em&gt;&lt;/a&gt; (Ira Sachs, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/poor-things-2023/&quot;&gt;&lt;em&gt;Poor Things&lt;/em&gt;&lt;/a&gt; (Yorgos Lanthimos, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/the-tuba-thieves/&quot;&gt;&lt;em&gt;The Tuba Thieves&lt;/em&gt;&lt;/a&gt; (Alison O’Daniel, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/theater-camp-2023/&quot;&gt;&lt;em&gt;Theater Camp&lt;/em&gt;&lt;/a&gt; (Molly Gordon and Nick Lieberman, 2023)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/tar-2022/&quot;&gt;&lt;em&gt;TÁR&lt;/em&gt;&lt;/a&gt; (Todd Field, 2022)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unenjoyable experiences included Alejandro Gómez Monteverde's &lt;a href=&quot;https://letterboxd.com/lambyuk/film/sound-of-freedom/&quot;&gt;&lt;em&gt;Sound of Freedom&lt;/em&gt;&lt;/a&gt; (2023), Alex Garland's &lt;a href=&quot;https://letterboxd.com/lambyuk/film/men-2022/&quot;&gt;&lt;em&gt;Men&lt;/em&gt;&lt;/a&gt; (2022) and Steven Spielberg's &lt;a href=&quot;https://letterboxd.com/lambyuk/film/the-fabelmans/&quot;&gt;&lt;em&gt;The Fabelmans&lt;/em&gt;&lt;/a&gt; (2022).&lt;/p&gt;
&lt;p&gt;&lt;br style=&quot;clear: both;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Older releases&lt;/h3&gt;
&lt;p&gt;(&lt;em&gt;Films released before 2022, and not including rewatches from previous years.&lt;/em&gt;)&lt;/p&gt;
&lt;aside style=&quot;float: right; padding-left: 20px; padding-bottom: 20px;&quot;&gt;&lt;a href=&quot;https://letterboxd.com/film/brief-encounter/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//jC9EwLJcGhYMSQAHu2LxkKN5v7O.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/clouds-of-sils-maria/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//dtCZ31RlokpkAaKMr9jFCJjBngi.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/daisy-miller/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//tNchFArEWzP20lrQH0yH5Isf0jl.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/first-reformed/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//p2UylV0hPefEuWPFMo1r56vu2nb.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/forbidden-games-1952/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//nby91GNVXQAv1NmKvqlpEEdhcMQ.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/black-girl-1966/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//hYYAk9I9KkscSr8DC30KyDjzsVu.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/the-queen-of-spades/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//Aro69lxeXWZN0mKy5DYtFcfx2cX.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/the-river/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//rC1k4xkffb5sdQlktiP2TyiBxT2.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/topsy-turvy/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//qAH3gsnQV25NQ2GpO3b7nDcVtkM.jpg&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://letterboxd.com/film/le-trou/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://image.tmdb.org/t/p/w185//nsVjgNxWTkaFCMuBLhiLHkcoTnt.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/aside&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/brief-encounter/&quot;&gt;&lt;em&gt;Brief Encounter&lt;/em&gt;&lt;/a&gt; (David Lean, 1945)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/clouds-of-sils-maria/&quot;&gt;&lt;em&gt;Clouds of Sils Maria&lt;/em&gt;&lt;/a&gt; (Olivier Assayas, 2014)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/daisy-miller/&quot;&gt;&lt;em&gt;Daisy Miller&lt;/em&gt;&lt;/a&gt; (Peter Bogdanovich, 1974)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/first-reformed/&quot;&gt;&lt;em&gt;First Reformed&lt;/em&gt;&lt;/a&gt; (Paul Schrader, 2017)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/forbidden-games-1952/&quot;&gt;&lt;em&gt;Forbidden Games&lt;/em&gt;&lt;/a&gt; (René Clément, 1952)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/black-girl-1966/&quot;&gt;&lt;em&gt;La Noire de...&lt;/em&gt;&lt;/a&gt; (Ousmane Sembène, 1966)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/the-queen-of-spades/&quot;&gt;&lt;em&gt;The Queen of Spades&lt;/em&gt;&lt;/a&gt; (Thorold Dickinson, 1949)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/the-river/&quot;&gt;&lt;em&gt;The River&lt;/em&gt;&lt;/a&gt; (Jean Renoir, 1951)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/topsy-turvy/&quot;&gt;&lt;em&gt;Topsy-Turvy&lt;/em&gt;&lt;/a&gt; (Mike Leigh, 1999)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://letterboxd.com/film/le-trou/&quot;&gt;&lt;em&gt;Le Trou&lt;/em&gt;&lt;/a&gt; (Jacques Becker, 1960)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Distinctly unenjoyable watches included &lt;a href=&quot;https://letterboxd.com/film/oceans-eleven/&quot;&gt;&lt;em&gt;Ocean's Eleven&lt;/em&gt;&lt;/a&gt; (1960), &lt;a href=&quot;https://letterboxd.com/film/el-topo/&quot;&gt;&lt;em&gt;El Topo&lt;/em&gt;&lt;/a&gt; (1970), &lt;a href=&quot;https://letterboxd.com/film/leolo/&quot;&gt;&lt;em&gt;Léolo&lt;/em&gt;&lt;/a&gt; (1992), &lt;a href=&quot;https://letterboxd.com/film/hotel-mumbai/&quot;&gt;&lt;em&gt;Hotel Mumbai&lt;/em&gt;&lt;/a&gt; (2018), &lt;a href=&quot;https://letterboxd.com/film/bulworth/&quot;&gt;&lt;em&gt;Bulworth&lt;/em&gt;&lt;/a&gt; (1998) and and &lt;a href=&quot;https://letterboxd.com/film/the-big-red-one/&quot;&gt;&lt;em&gt;The Big Red One&lt;/em&gt;&lt;/a&gt; (1980).&lt;/p&gt;
&lt;p&gt;&lt;br style=&quot;clear: both;&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Chris Lamb</name>
			<uri>https://chris-lamb.co.uk/blog/category/planet-alug</uri>
		</author>
		<source>
			<title type="html">lamby: Items or syndication on Planet ALUG.</title>
			<link rel="self" href="https://chris-lamb.co.uk/category/planet-alug/feed"/>
			<id>https://chris-lamb.co.uk/blog/category/planet-alug</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">SIS troubles</title>
		<link href="https://baldric.net/2023/12/21/sis-troubles/"/>
		<id>https://baldric.net/?p=4337</id>
		<updated>2023-12-21T15:19:49+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;Yesterday’s i newspaper lead with a &lt;a href=&quot;https://inews.co.uk/news/mi6-security-alert-russian-flat-spy-hq-2815447&quot;&gt;report&lt;/a&gt; that SIS HQ at Vauxhall Cross could be overlooked from a flat in the new residential property built at St George Wharf. Said flat was reportedly purchased by Russians with links to a Soviet era property in Moscow which is roughly 300 metres away from the “Russian Intelligence chemical site” that developed Novichok.&lt;/p&gt;
&lt;p&gt;The i report went on to say that Alicia Kearns, the Chair of the Parliamentary Foreign Affairs Committee, told the newspaper, “It’s no surprise that hostile states are buying up properties for surveillance purposes – but it’s the Government’s job to stop them.”&lt;/p&gt;
&lt;p&gt;Let’s just hope that the Russians have never heard of &lt;a href=&quot;https://baldric.net/2023/01/16/mobile-insecurity/&quot;&gt;IMSI catchers&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Mick</name>
			<uri>https://baldric.net</uri>
		</author>
		<source>
			<title type="html">trivia</title>
			<subtitle type="html">just another voice on the net</subtitle>
			<link rel="self" href="https://baldric.net/feed/"/>
			<id>https://baldric.net</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Elva’s Birth</title>
		<link href="https://tola.me.uk/blog/2022/11/05/elvas-birth/"/>
		<id>https://tola.me.uk/blog/?p=1071</id>
		<updated>2022-11-05T14:53:28+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;div class=&quot;members-access-error&quot;&gt;Sorry, but you do not have permission to view this content.&lt;/div&gt;</content>
		<author>
			<name>tola</name>
			<uri>https://tola.me.uk/blog</uri>
		</author>
		<source>
			<title type="html">Ben Francis</title>
			<subtitle type="html">Musings of a hippygeek.</subtitle>
			<link rel="self" href="https://tola.me.uk/blog/feed/"/>
			<id>https://tola.me.uk/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Subplot and FOSDEM 2022 talk</title>
		<link href="http://blog.digital-scurf.org/posts/2022-fosdem/"/>
		<id>http://blog.digital-scurf.org/posts/2022-fosdem/</id>
		<updated>2022-02-26T22:22:15+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;As many of you may be aware, I work with &lt;a href=&quot;https://liw.fi/&quot;&gt;Lars Wirzenius&lt;/a&gt; on a project
we call &lt;a href=&quot;https://subplot.tech/&quot;&gt;Subplot&lt;/a&gt; which is a tool for writing documentation which helps
all stakeholders involved with a proejct to understand how the project meets
its requirements.&lt;/p&gt;

&lt;p&gt;At the start of February we had &lt;a href=&quot;https://fosdem.org/2022/&quot;&gt;FOSDEM&lt;/a&gt; which was once again online, and
I decided to give a talk in the &lt;a href=&quot;https://fosdem.org/2022/schedule/track/safety_and_open_source/&quot;&gt;Safety and open source&lt;/a&gt; devroom to
introduce the concepts of safety argumentation and to bring some attention
to how I feel that Subplot could be used in that arena. You can view the
talk on the FOSDEM website at some point in the future when they
manage to finish transcoding all the amazing talks from the weekend, or if
you are more impatient, on &lt;a href=&quot;https://www.youtube.com/watch?v=isCboOFy0CI&quot;&gt;Youtube&lt;/a&gt;, whichever you prefer.&lt;/p&gt;

&lt;p&gt;If, after watching the talk, or indeed just reading about Subplot on our website,
you are interested in learning more about Subplot, or talking with us about
how it might fit into your development flow, then you can find Lars and
myself in &lt;a href=&quot;https://matrix.to/#/#subplot:matrix.org&quot;&gt;the Subplot Matrix Room&lt;/a&gt; or else on any number of IRC networks
where I hang around as &lt;code&gt;kinnison&lt;/code&gt;.&lt;/p&gt;</content>
		<author>
			<name>Daniel Silverstone</name>
			<uri>http://blog.digital-scurf.org/</uri>
		</author>
		<source>
			<title type="html">Digital-Scurf Ramblings</title>
			<subtitle type="html">Digital-Scurf Ramblings</subtitle>
			<link rel="self" href="https://blog.digital-scurf.org/index.atom"/>
			<id>http://blog.digital-scurf.org/</id>
		</source>
	</entry>

	<entry>
		<title type="html">Subplot - First public alpha release</title>
		<link href="http://blog.digital-scurf.org/posts/subplot_first_public_alpha/"/>
		<id>http://blog.digital-scurf.org/posts/subplot_first_public_alpha/</id>
		<updated>2021-07-12T17:06:31+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;This weekend we (&lt;a href=&quot;https://blog.liw.fi/&quot;&gt;Lars&lt;/a&gt; and I) finished our &lt;a href=&quot;https://subplot.liw.fi/blog/2021/07/11/announcement/&quot;&gt;first public alpha release&lt;/a&gt;
of &lt;a href=&quot;https://subplot.liw.fi/&quot;&gt;Subplot&lt;/a&gt;. Subplot is a tool for helping you to document your acceptance
criteria for a project in such a way that you can also produce a programmatic
test suite for the verification criteria. We centre this around the concept
of writing a Markdown document about your project, with the option to write
Gherkin-like &lt;em&gt;given/when/then&lt;/em&gt; scenarios inside which detail the automated
verification of the acceptance criteria.&lt;/p&gt;

&lt;p&gt;This may sound very similar to &lt;a href=&quot;https://blog.digital-scurf.org/posts/yarn-architecture/&quot;&gt;Yarn&lt;/a&gt;, a similar concept which Lars, Richard,
and I came up with in 2013. Critically back then we were very 'software
engineer' focussed and so Yarn was a testing tool which happened to also produce
reasonable documentation outputs if you squinted sideways and tried not to think
too critically about them. Subplot on the other hand considers the documentation
output to be just as important, if not more important, than the test suite
output. Yarn was a tool which ran tests embedded in Markdown files, where
Subplot is a documentation tool capable of extracting tests from an acceptance
document for use in testing your project.&lt;/p&gt;

&lt;p&gt;The release we made is the first time we're actively asking other people to try
Subplot and see whether the concept is useful to them. Obviously we expect there
to be plenty of sharp corners and there's a good amount of functionality yet to
implement to make Subplot as useful as we want it to be, but if you find
yourself looking at a project and thinking &quot;How do I make sure this is
acceptable to the stakeholders without first teaching them how to read my unit
tests?&quot; then Subplot may be the tool for you.&lt;/p&gt;

&lt;p&gt;While Subplot can be used to produce test suites with functions written in Bash,
Python, or Rust, the only language we're supporting as first-class in this
release is Python. &lt;strong&gt;However&lt;/strong&gt; I am personally most interested in the Rust
opportunity as I see a lot of Rust programs very badly tested from the
perspective of 'acceptance' as there is a tendency in Rust projects to focus on
unit-type tests. If you are writing something in Rust and want to look at
producing some high level acceptance criteria and yet still test in Rust, then
please take a look at Subplot, particularly how we test &lt;a href=&quot;https://gitlab.com/subplot/subplot/-/tree/0.2.1/subplotlib&quot;&gt;subplotlib&lt;/a&gt; itself.&lt;/p&gt;

&lt;p&gt;Issues, feature requests, and perhaps most relevantly, code patches, gratefully
received. A desire to be actively involved in shaping the &lt;a href=&quot;https://gitlab.com/subplot/subplot/-/issues?label_name%5B%5D=goal%3A%3A2&quot;&gt;second goal&lt;/a&gt; of
Subplot even more so.&lt;/p&gt;</content>
		<author>
			<name>Daniel Silverstone</name>
			<uri>http://blog.digital-scurf.org/</uri>
		</author>
		<source>
			<title type="html">Digital-Scurf Ramblings</title>
			<subtitle type="html">Digital-Scurf Ramblings</subtitle>
			<link rel="self" href="https://blog.digital-scurf.org/index.atom"/>
			<id>http://blog.digital-scurf.org/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">A New Future for the WebThings IoT Platform</title>
		<link href="https://tola.me.uk/blog/2020/12/03/a-new-future-for-the-webthings-iot-platform/"/>
		<id>http://tola.me.uk/blog/?p=1016</id>
		<updated>2020-12-03T17:15:00+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;hr class=&quot;wp-block-separator&quot; /&gt;



&lt;p&gt;&lt;em&gt;Originally &lt;a href=&quot;https://medium.com/krellian/introducing-the-webthings-iot-platform-9fe4f97c0c72&quot;&gt;posted on Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;After four years of &lt;a href=&quot;https://iot.mozilla.org/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;incubation&lt;/a&gt; at &lt;a href=&quot;https://www.mozilla.org/en-GB/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Mozilla&lt;/a&gt;, &lt;a href=&quot;https://krellian.com/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Krellian&lt;/a&gt; is proud to become the new commercial sponsor of &lt;a href=&quot;https://webthings.io&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;WebThings&lt;/a&gt;, an open platform for monitoring and controlling devices over the web.&lt;/p&gt;



&lt;p&gt;Today we are announcing the release of &lt;a href=&quot;https://webthings.io/gateway/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;WebThings Gateway 1.0&lt;/a&gt; and setting out a vision for the future of the WebThings project.&lt;/p&gt;



&lt;h3&gt;WebThings&lt;/h3&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://cdn-images-1.medium.com/max/1600/1*cCddqvUn7QyYHfG7jC8mzg.png&quot; /&gt;&lt;/figure&gt;



&lt;p&gt;WebThings is an open source implementation of emerging &lt;a href=&quot;https://www.w3.org/WoT/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;W3C Web of Things&lt;/a&gt; standards and consists of three main components:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://webthings.io/gateway&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;WebThings Gateway&lt;/strong&gt;&lt;/a&gt; — a software distribution for smart home gateways which enables users to directly monitor and control their home over the web, without a middleman&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://webthings.io/framework&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;WebThings Framework&lt;/strong&gt;&lt;/a&gt; — a collection of re-usable software components to help developers build their own web things which directly expose the Web Thing Protocol&lt;/li&gt;&lt;li&gt;&lt;strong&gt;WebThings Cloud&lt;/strong&gt; — a collection of cloud services for securely deploying connected devices and remotely managing them over the internet&lt;/li&gt;&lt;/ul&gt;



&lt;h3&gt;Flying the Nest&lt;/h3&gt;



&lt;p&gt;Following a &lt;a href=&quot;https://blog.mozilla.org/blog/2020/08/11/changing-world-changing-mozilla/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;company restructuring&lt;/a&gt; in August, Mozilla was looking for a new home for the WebThings community to continue their work.&lt;/p&gt;



&lt;p&gt;Having co-founded the project whilst working at Mozilla, I joined discussions with two of my former colleagues &lt;a href=&quot;https://www.linkedin.com/in/mrstegeman/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Michael Stegeman&lt;/a&gt; and &lt;a href=&quot;https://www.disquisitioner.com/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;David Bryant&lt;/a&gt; about spinning out WebThings as an independent open source project. We worked with Mozilla on an agreement to transition the project to a new community-run home at &lt;a href=&quot;https://webthings.io&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;webthings.io&lt;/a&gt;, and have spent the last three months working together on that transition.&lt;/p&gt;



&lt;h3&gt;WebThings Gateway 1.0&lt;/h3&gt;



&lt;p&gt;Today marks the public release of &lt;a href=&quot;https://webthings.io/gateway&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;WebThings Gateway 1.0&lt;/a&gt; and the formal transition of the WebThings platform to its new home at &lt;a href=&quot;https://webthings.io&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;webthings.io&lt;/a&gt;. Going forward, Krellian will be sponsoring the new WebThings website and replacement cloud infrastructure, to continue to provide automatic software updates and a secure remote access service for WebThings gateways around the world.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://cdn-images-1.medium.com/max/1600/1*OttaSy_jcQlW0TZYOKMmdA.png&quot; /&gt;&lt;/figure&gt;



&lt;p&gt;You can read more about the 1.0 release and the transition of existing gateways to the new infrastructure on the &lt;a href=&quot;https://hacks.mozilla.org/2020/12/flying-the-nest-webthings-gateway-1-0&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Mozilla Hacks blog&lt;/a&gt;.&lt;/p&gt;



&lt;h3&gt;Krellian &amp;amp; WebThings&lt;/h3&gt;



&lt;p&gt;Krellian’s &lt;a href=&quot;https://krellian.com/about/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;mission&lt;/a&gt; is to “&lt;em&gt;extend the World Wide Web into physical spaces to make our built environment smarter, safer and more sustainable&lt;/em&gt;.” WebThings provides an ideal open source platform, built on web standards, to help achieve that mission.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://cdn-images-1.medium.com/max/1600/1*DMBthesZhbZDKdWuud0yGQ.png&quot; /&gt;&lt;/figure&gt;



&lt;p&gt;In the short term Krellian will be leveraging the WebThings Cloud remote access service as part of our new digital signage platform. In the longer term we plan to explore other enterprise use cases for the WebThings platform, to help make buildings smarter, safer and more sustainable.&lt;/p&gt;



&lt;figure class=&quot;wp-block-image&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://cdn-images-1.medium.com/max/1600/1*jwATmqWMLQuT-AzQ-9Qkxw.png&quot; /&gt;&lt;/figure&gt;



&lt;p&gt;These commercial applications of WebThings will help provide revenue streams to support the long term sustainability of the open source project and allow it to continue to develop and grow.&lt;/p&gt;



&lt;h3&gt;The WebThings Community&lt;/h3&gt;



&lt;p&gt;Krellian highly values the thriving community who have supported the WebThings project over the last four years. From hackers and makers to educators and hobbyists, the community have been pivotal in building, testing and promoting WebThings around the world.&lt;/p&gt;



&lt;p&gt;Amongst their achievements is the translation of WebThings Gateway into 34 spoken languages, the creation of over a hundred gateway add-ons and the building of countless DIY projects in a dozen different programming languages. Community members have contributed their time and effort to help build and promote WebThings and support other members in using it in thousands of private smart homes around the world.&lt;/p&gt;



&lt;p&gt;We intend to support the community to continue with their great work, and have put in place an open &lt;a href=&quot;https://github.com/WebThingsIO/wiki/wiki/Module-Ownership-System&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;governance structure&lt;/a&gt; to distribute decision making and foster leadership amongst the global WebThings community.&lt;/p&gt;



&lt;h3&gt;Future Roadmap&lt;/h3&gt;



&lt;p&gt;The following are some ideas about where to take the platform next, but we’d also very much like to hear from the community about what they would like to see from the project going forward.&lt;/p&gt;



&lt;h4&gt;W3C Compliance&lt;/h4&gt;



&lt;p&gt;WebThings has been developed in parallel with, and has contributed to, the standardisation of the &lt;a href=&quot;https://www.w3.org/WoT/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Web of Things&lt;/a&gt; at the W3C. Since the last release of WebThings Gateway in April, the &lt;a href=&quot;https://www.w3.org/TR/wot-thing-description/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;W3C Thing Description&lt;/a&gt; specification has reached “recommendation” status and is now an international standard.&lt;/p&gt;



&lt;p&gt;We’d like to work towards making WebThings compliant with this standard, as there are still a remaining number of &lt;a href=&quot;https://github.com/WebThingsIO/wiki/wiki/Mozilla-W3C-Differences&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;differences&lt;/a&gt; between the W3C and Mozilla specifications. In order to fill in the gaps between Mozilla’s &lt;a href=&quot;https://iot.mozilla.org/wot/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Web Thing API&lt;/a&gt; and the W3C’s Thing Description standard, we plan to continue to lead work on standardising the &lt;a href=&quot;https://www.w3.org/community/web-thing-protocol/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Web Thing Protocol&lt;/a&gt; as a concrete protocol for communicating with devices over the web.&lt;/p&gt;



&lt;h4&gt;Production Gateway OS&lt;/h4&gt;



&lt;p&gt;The main WebThings Gateway software image is currently built on top of the Raspbian Linux distribution. This served the project well for its initial target of DIY smart home users, using the popular Raspberry Pi single board computer.&lt;/p&gt;



&lt;p&gt;As the platform matures, we would like to explore a more production-quality IoT operating system like Ubuntu Core or Balena OS on which to base the WebThings Gateway distribution.&lt;/p&gt;



&lt;p&gt;This will have the following benefits:&lt;/p&gt;



&lt;ol&gt;&lt;li&gt;A smaller footprint, reducing the minimum system requirements for running the gateway&lt;/li&gt;&lt;li&gt;Enabling the targeting of a wider range of hardware for consumer and enterprise use cases&lt;/li&gt;&lt;li&gt;Better security, through containerisation and automatic software updates for the underlying operating system&lt;/li&gt;&lt;/ol&gt;



&lt;h4&gt;WebThings Controller&lt;/h4&gt;



&lt;p&gt;There was previously a &lt;a href=&quot;https://github.com/webthingsio/things-controller&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;project&lt;/a&gt; to build controller software for WebThings, to run on a controller device such as a smart speaker or smart display. The initial prototype was built on Android Things, but was discontinued when Google locked down the Android Things platform to specific OEMs and introduced restrictions on how it could be used.&lt;/p&gt;



&lt;p&gt;Krellian would like to explore new controller software built on our open source &lt;a href=&quot;https://github.com/krellian/kiosk&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Krellian Kiosk&lt;/a&gt; web runtime, which could allow for touch and voice input. This software would be designed so that it could either run on the same device as the gateway software, or on a separate controller device.&lt;/p&gt;



&lt;h4&gt;WebThings App&lt;/h4&gt;



&lt;p&gt;A native WebThings mobile app could act as a general purpose Web of Things client. This could potentially:&lt;/p&gt;



&lt;ol&gt;&lt;li&gt;Help to streamline the setup process of a WebThings Gateway&lt;/li&gt;&lt;li&gt;Act as a client for native web things which don’t need a gateway&lt;/li&gt;&lt;li&gt;Help with the standardisation process by providing a user friendly reference implementation of a Web of Things client&lt;/li&gt;&lt;/ol&gt;



&lt;h4&gt;WebThings Cloud&lt;/h4&gt;



&lt;p&gt;Finally, we would like to explore expanding the WebThings Cloud offering. This could include an online dashboard for monitoring and controlling devices across multiple premises, and cloud to cloud integrations with other IoT platforms and voice assistants.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator&quot; /&gt;



&lt;p&gt;We’re excited about this new chapter in the WebThings story, and look forward to working closely with the community on our &lt;a href=&quot;https://krellian.com/about/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;vision&lt;/a&gt; of &lt;em&gt;a connected world where technology is seamlessly woven into the spaces around us and improves the lives of those who use it&lt;/em&gt;.&lt;/p&gt;



&lt;p&gt;You can find out more about WebThings at its new home of &lt;a href=&quot;https://webthings.io&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;webthings.io&lt;/a&gt;, follow &lt;a href=&quot;https://twitter.com/WebThingsIO&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;@WebThingsIO&lt;/a&gt; on Twitter and sign up for the email &lt;a href=&quot;https://webthings.io/#newsletter&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;newsletter&lt;/a&gt; to keep up to date with all the latest news.&lt;/p&gt;</content>
		<author>
			<name>tola</name>
			<uri>https://tola.me.uk/blog</uri>
		</author>
		<source>
			<title type="html">Ben Francis</title>
			<subtitle type="html">Musings of a hippygeek.</subtitle>
			<link rel="self" href="https://tola.me.uk/blog/feed/"/>
			<id>https://tola.me.uk/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html">Maur - A minimal AUR helper</title>
		<link href="https://engledow.me/2019/11/13/maur/"/>
		<id>https://engledow.me/2019/11/13/maur/</id>
		<updated>2019-11-13T00:00:00+00:00</updated>
		<content type="html">&lt;p&gt;This post is about the &lt;a href=&quot;https://aur.archlinux.org/&quot;&gt;Arch User Repository&lt;/a&gt;. If you're not an &lt;a href=&quot;https://www.archlinux.org/&quot;&gt;Arch&lt;/a&gt; user, probably just move along ;)&lt;/p&gt;
&lt;p&gt;There are &lt;a href=&quot;https://aur.archlinux.org/packages/?O=0&amp;amp;K=aur+helper&quot;&gt;lots of AUR helpers&lt;/a&gt; in existence already but, in the best traditions of open source, none of them work exactly how I want an AUR helper to work, so I &lt;a href=&quot;https://xkcd.com/927/&quot;&gt;created a new one&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here it is: &lt;a href=&quot;https://github.com/stilvoid/maur&quot;&gt;https://github.com/stilvoid/maur&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;maur&lt;/code&gt; (pronounced like &quot;more&quot;) is tiny. At the time of writing, it's 49 lines of bash. It also has very few features.&lt;/p&gt;
&lt;p&gt;Here is the list of features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Help text when you type &lt;code&gt;maur --help&lt;/code&gt; or &lt;code&gt;maur -h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A list of packages in the AUR when you type &lt;code&gt;maur&lt;/code&gt; with no arguments&lt;/li&gt;
&lt;li&gt;Help you install a package when you type &lt;code&gt;maur &amp;lt;package name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &quot;help&quot; when installing a package is this, and nothing more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clone the package's AUR repository&lt;/li&gt;
&lt;li&gt;Open the &lt;code&gt;PKGBUILD&lt;/code&gt; in your default editor&lt;/li&gt;
&lt;li&gt;Ask if you want to continue installing&lt;/li&gt;
&lt;li&gt;If you do, run &lt;code&gt;makepkg -si&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you think &lt;code&gt;maur&lt;/code&gt; needs more features, use a different AUR helper.&lt;/p&gt;
&lt;p&gt;If you find bugs, please &lt;a href=&quot;https://github.com/stilvoid/maur/issues/new&quot;&gt;submit an issue&lt;/a&gt; or, even better, a &lt;a href=&quot;https://github.com/stilvoid/maur/compare&quot;&gt;pull request&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Example usage&lt;/h2&gt;
&lt;h3&gt;Searching the AUR&lt;/h3&gt;
&lt;p&gt;If you want to search for a package in the AUR, you can grep for it ;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;maur | grep maur&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Installing a package&lt;/h3&gt;
&lt;p&gt;If you want to install a package, for example &lt;a href=&quot;https://aur.archlinux.org/packages/yay&quot;&gt;yay&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;maur yay&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Upgrading a package&lt;/h3&gt;
&lt;p&gt;Upgrade a package is the same as installing one. This will upgrade &lt;code&gt;maur&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;maur maur&lt;/code&gt;&lt;/p&gt;</content>
		<author>
			<name>Steve Engledow</name>
			<uri>https://engledow.me/</uri>
		</author>
		<source>
			<title type="html">engledow.me</title>
			<subtitle type="html">All content © 2011-2024 Steve Engledow. All views expressed here are mine and don't reflect those of Amazon. The contents of this web site are available under the terms of the MIT licence.</subtitle>
			<link rel="self" href="http://engledow.me/feed.xml"/>
			<id>https://engledow.me/feed.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Using Git with AWS CodeCommit Across Multiple AWS Accounts</title>
		<link href="https://engledow.me/2019/02/12/using-git-with-aws/"/>
		<id>https://engledow.me/2019/02/12/using-git-with-aws/</id>
		<updated>2019-02-12T00:00:00+00:00</updated>
		<content type="html">&lt;p&gt;(Cross-posted from &lt;a href=&quot;https://aws.amazon.com/blogs/devops/&quot;&gt;the AWS DevOps blog&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I use &lt;a href=&quot;https://aws.amazon.com/codecommit/&quot;&gt;AWS CodeCommit&lt;/a&gt; to host all of my private Git repositories. My repositories are split across several AWS accounts for different purposes: personal projects, internal projects at work, and customer projects.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up.html&quot;&gt;CodeCommit documentation&lt;/a&gt; shows you how to configure and clone a repository from one place, but in this blog post I want to share how I manage my Git configuration across multiple AWS accounts.&lt;/p&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;First, I have &lt;a href=&quot;https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html&quot;&gt;profiles&lt;/a&gt; configured for each of my AWS environments. I connect to some of them using &lt;a href=&quot;https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys&quot;&gt;IAM user credentials&lt;/a&gt; and others by using &lt;a href=&quot;https://aws.amazon.com/blogs/security/how-to-use-a-single-iam-user-to-easily-access-all-your-accounts-by-using-the-aws-cli/&quot;&gt;cross-account roles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I intentionally do not have any credentials associated with the default profile. That way I must always be sure I have selected a profile before I run any AWS CLI commands.&lt;/p&gt;
&lt;p&gt;Here’s an anonymized copy of my &lt;code&gt;~/.aws/config&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[profile personal]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;region&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;eu-west-1&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;aws_access_key_id&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;AKIAIOSFODNN7EXAMPLE&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;aws_secret_access_key&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;[profile work]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;region&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;us-east-1&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;aws_access_key_id&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;AKIAIOSFODNN7EXAMPLE&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;aws_secret_access_key&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;[profile customer]&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;region&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;eu-west-2&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;source_profile&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;work&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;role_arn&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;arn:aws:iam::123456789012:role/CrossAccountPowerUser&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If I am doing some work in one of those accounts, I run &lt;code&gt;export AWS_PROFILE=work&lt;/code&gt; and use the AWS CLI as normal.&lt;/p&gt;
&lt;h2&gt;The problem&lt;/h2&gt;
&lt;p&gt;I use the &lt;a href=&quot;https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html&quot;&gt;Git credential helper&lt;/a&gt; so that the Git client works seamlessly with CodeCommit. However, because I use different profiles for different repositories, my use case is a little more complex than the average.&lt;/p&gt;
&lt;p&gt;In general, to use the credential helper, all you need to do is place the following options into your &lt;code&gt;~/.gitconfig&lt;/code&gt; file, like this:&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[credential]&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;helper&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;!aws codecommit credential-helper $@&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;UserHttpPath&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I could make this work across accounts by setting the appropriate value for &lt;code&gt;AWS_PROFILE&lt;/code&gt; before I use Git in a repository, but there is a much neater way to deal with this situation using a feature released in &lt;a href=&quot;https://blog.github.com/2017-05-10-git-2-13-has-been-released/&quot;&gt;Git version 2.13&lt;/a&gt;, &lt;a href=&quot;https://git-scm.com/docs/git-config#_includes&quot;&gt;conditional includes&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;A solution&lt;/h2&gt;
&lt;p&gt;First, I separate my work into different folders. My &lt;code&gt;~/code/&lt;/code&gt; directory looks like this:&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;go&quot;&gt;code&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;    personal&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;        repo1&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;        repo2&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;    work&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;        repo3&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;        repo4&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;    customer&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;        repo5&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;        repo6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Using this layout, each folder that is directly underneath the code folder has different requirements in terms of configuration for use with CodeCommit.&lt;/p&gt;
&lt;p&gt;Solving this has two parts; first, I create a &lt;code&gt;.gitconfig&lt;/code&gt; file in each of the three folder locations. The &lt;code&gt;.gitconfig&lt;/code&gt; files contain any customization (specifically, configuration for the credential helper) that I want in place while I work on projects in those folders.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[user]&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Use a custom email address&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;sengledo@amazon.co.uk&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;[credential]&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Note the use of the --profile switch&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;helper&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;!aws --profile work codecommit credential-helper $@&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;UseHttpPath&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I also make sure to specify the AWS CLI profile to use in the &lt;code&gt;.gitconfig&lt;/code&gt; file which means that, when I am working in the folder, I don’t need to set &lt;code&gt;AWS_PROFILE&lt;/code&gt; before I run &lt;code&gt;git push&lt;/code&gt;, etc.&lt;/p&gt;
&lt;p&gt;Secondly, to make use of these folder-level .gitconfig files, I need to reference them in my global Git configuration at &lt;code&gt;~/.gitconfig&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is done through the &lt;code&gt;includeIf&lt;/code&gt; section. For example:&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;[includeIf &quot;gitdir:~/code/personal/&quot;]&lt;/span&gt;
&lt;span class=&quot;w&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;~/code/personal/.gitconfig&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This example specifies that if I am working with a Git repository that is located anywhere under &lt;code&gt;~/code/personal/&lt;/code&gt;, Git should load additional configuration from &lt;code&gt;~/code/personal/.gitconfig&lt;/code&gt;. That additional file specifies the appropriate credential helper invocation with the corresponding AWS CLI profile selected as detailed earlier.&lt;/p&gt;
&lt;p&gt;The contents of the new file are treated as if they are inserted into the main &lt;code&gt;.gitconfig&lt;/code&gt; file at the location of the &lt;code&gt;includeIf&lt;/code&gt; section.  This means that the included configuration will only override any configuration specified &lt;em&gt;earlier&lt;/em&gt; in the config.&lt;/p&gt;</content>
		<author>
			<name>Steve Engledow</name>
			<uri>https://engledow.me/</uri>
		</author>
		<source>
			<title type="html">engledow.me</title>
			<subtitle type="html">All content © 2011-2024 Steve Engledow. All views expressed here are mine and don't reflect those of Amazon. The contents of this web site are available under the terms of the MIT licence.</subtitle>
			<link rel="self" href="http://engledow.me/feed.xml"/>
			<id>https://engledow.me/feed.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-gb">The Psion Gemini</title>
		<link href="https://www.sommitrealweird.co.uk/blog/2018/06/07/psion-gemini/"/>
		<id>https://www.sommitrealweird.co.uk/blog/2018/06/07/psion-gemini/</id>
		<updated>2018-06-07T13:04:22+00:00</updated>
		<content type="html">&lt;p&gt;So, I backed the Gemini and received my shiny new device just a few months after they said that it'd ship, not bad for an indiegogo project! Out of the box, I flashed it, using the non-approved linux flashing tool at that time, and failed to backup the parts that, err, I really didn't want blatted... So within hours I had a new phone that I, err, couldn't make calls on, which was marginally annoying. And the tech preview of Debian wasn't really worth it, as it was fairly much unusable (which was marginally upsetting, but hey) - after a few more hours / days of playing around I got the IMEI number back in to the Gemini and put back on the stock android image. I didn't at this point have working bluetooth or wifi, which was a bit of a pain too, turns out the mac addresses for those are also stored in the nvram (doh!), that's now mostly working through a bit of collaboration with another Gemini owner, my Gemini currently uses the mac addresses from his device... which I'll need to fix in the next month or so, else we'll have a mac address collision, probably.&lt;/p&gt;
&lt;p&gt;Overall, it's not a bad machine, the keyboard isn't quite as good as I was hoping for, the phone functionality is not bad once you're on a call, but not great until you're on a call, and I certainly wouldn't use it to replace the Samsung Galaxy S7 Edge that I currently use as my full time phone. It is however &lt;em&gt;really&lt;/em&gt; rather useful as a sysadmin tool when you don't want to be lugging a full laptop around with you, the keyboard is better than using the on screen keyboard on the phone, the ssh client is &quot;good enough&quot; to get to what I need, and the terminal font isn't bad. I look forward to seeing where it goes, I'm happy to have been an early backer, as I don't think I'd pay the current retail price for one.&lt;/p&gt;</content>
		<author>
			<name>Brett Parker</name>
			<email>iDunno@sommitrealweird.co.uk</email>
			<uri>https://www.sommitrealweird.co.uk/blog/</uri>
		</author>
		<source>
			<title type="html">The World of SommitRealWeird.</title>
			<subtitle type="html">Updates on The World of SommitRealWeird.</subtitle>
			<link rel="self" href="https://www.sommitrealweird.co.uk/feeds/blog/atom/"/>
			<id>https://www.sommitrealweird.co.uk/blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html">How hard can typing æ, ø and å be?</title>
		<link href="http://www.news.software.coop/how-hard-can-typing-ae-o-and-a-be/1598/"/>
		<id>http://www.news.software.coop/how-hard-can-typing-ae-o-and-a-be/1598/</id>
		<updated>2018-02-21T16:14:30+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://people.skolelinux.org/pere/blog/How_hard_can______and___be_.html&quot;&gt;Petter Reinholdtsen: How hard can æ, ø and å be?&lt;/a&gt; comments on the rubbish state of till printers and their mishandling of foreign characters.&lt;/p&gt;
&lt;p&gt;Last week, I was trying to type an email, on a tablet, in Dutch. The tablet was running something close to Android and I was using a Bluetooth keyboard, which seemed to be configured correctly for my location in England.&lt;/p&gt;
&lt;p&gt;Dutch doesn’t even have many accents. I wanted an e acute (é). If you use the on screen keyboard, this is actually pretty easy, just press and hold e and slide to choose the accented one… but holding e on a Bluetooth keyboard? eeeeeeeeeee!&lt;/p&gt;
&lt;p&gt;Some guides suggest Alt and e, then e. Apparently that works, but not on keyboards set to Great British… because, I guess, we don’t want any of that foreign muck since the Brexit vote, or something(!)&lt;/p&gt;
&lt;p&gt;Even once you figure out that madness and switch the keyboard back to international, which also enables alt i, u, n and so on to do other accents, I can’t find grave, check, breve or several other accents. I managed to send the emails in Dutch but I’d struggle with various other languages.&lt;/p&gt;
&lt;p&gt;Have I missed a trick or what are the Android developers thinking? Why isn’t there a Compose key by default? Is there any way to get one?&lt;/p&gt;</content>
		<author>
			<name>mjr</name>
			<uri>http://www.news.software.coop</uri>
		</author>
		<source>
			<title type="html">mjr – Software Cooperative News</title>
			<subtitle type="html">What software.coop is doing and contemplating</subtitle>
			<link rel="self" href="http://mjr.towers.org.uk/blog/all.rss"/>
			<id>http://www.news.software.coop</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-gb">Using the Mythic Beasts IPv4 -&amp;gt; IPv6 Proxy for Websites on a v6 only Pi and getting the right REMOTE_ADDR</title>
		<link href="https://www.sommitrealweird.co.uk/blog/2017/03/01/using-mythic-beasts-ipv4-ipv6-proxy-websites-v6-on/"/>
		<id>https://www.sommitrealweird.co.uk/blog/2017/03/01/using-mythic-beasts-ipv4-ipv6-proxy-websites-v6-on/</id>
		<updated>2017-03-01T18:35:16+00:00</updated>
		<content type="html">&lt;p&gt;So, more because I was intrigued than anything else, I've got a pi3 from &lt;a class=&quot;reference external&quot; href=&quot;https://www.mythic-beasts.com/&quot;&gt;Mythic Beasts&lt;/a&gt;, they're supplied with IPv6 only connectivity and the file storage is NFS over a private v4 network. The proxy will happily redirect requests to either http or https to the Pi, but this results (without turning on the Proxy Protocol) with getting remote addresses in your logs of the proxy servers, which is not entirely useful.&lt;/p&gt;
&lt;p&gt;I've cheated a bit, because the turning on of ProxyProtocol for the hostedpi.com addresses is currently not exposed to customers (it's on the list!), to do it without access to Mythic's backends use your own domainname (I've also got &lt;a class=&quot;reference external&quot; href=&quot;https://pi3.sommitrealweird.co.uk/&quot;&gt;https://pi3.sommitrealweird.co.uk/&lt;/a&gt; mapped to this Pi).&lt;/p&gt;
&lt;p&gt;So, first step first, we &lt;a class=&quot;reference external&quot; href=&quot;https://www.mythic-beasts.com/order/rpi&quot;&gt;get our RPi&lt;/a&gt; and we make sure that we can login to it via ssh (I'm nearly always on a v6 connection anyways, so this was a simple case of sshing to the v6 address of the Pi). I then installed haproxy and apache2 on the Pi and went about configuring them, with apache2 I changed it to listen to localhost only and on ports 8080 and 4443, I hadn't at this point enabled the ssl module so, really, the change for 4443 didn't kick in. Here's my &lt;tt class=&quot;docutils literal&quot;&gt;/etc/apache2/ports.conf&lt;/tt&gt; file:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen [::1]:8080

&amp;lt;IfModule ssl_module&amp;gt;
       Listen [::1]:4443
&amp;lt;/IfModule&amp;gt;

&amp;lt;IfModule mod_gnutls.c&amp;gt;
       Listen [::1]:4443
&amp;lt;/IfModule&amp;gt;

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
&lt;/pre&gt;
&lt;p&gt;I then edited &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;/etc/apache2/sites-available/000-default.conf&lt;/span&gt;&lt;/tt&gt; to change the VirtualHost line to [::1]:8080.&lt;/p&gt;
&lt;p&gt;So, with that in place, now we deploy haproxy infront of it, the basic &lt;tt class=&quot;docutils literal&quot;&gt;/etc/haproxy/haproxy.cfg&lt;/tt&gt; config is:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;global
       log /dev/log    local0
       log /dev/log    local1 notice
       chroot /var/lib/haproxy
       stats socket /run/haproxy/admin.sock mode 660 level admin
       stats timeout 30s
       user haproxy
       group haproxy
       daemon

       # Default SSL material locations
       ca-base /etc/ssl/certs
       crt-base /etc/ssl/private

       # Default ciphers to use on SSL-enabled listening sockets.
       # For more information, see ciphers(1SSL). This list is from:
       #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
       ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
       ssl-default-bind-options no-sslv3

defaults
       log     global
       mode    http
       option  httplog
       option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
       errorfile 400 /etc/haproxy/errors/400.http
       errorfile 403 /etc/haproxy/errors/403.http
       errorfile 408 /etc/haproxy/errors/408.http
       errorfile 500 /etc/haproxy/errors/500.http
       errorfile 502 /etc/haproxy/errors/502.http
       errorfile 503 /etc/haproxy/errors/503.http
       errorfile 504 /etc/haproxy/errors/504.http

frontend any_http
        option httplog
        option forwardfor

        acl is_from_proxy src 2a00:1098:0:82:1000:3b:1:1 2a00:1098:0:80:1000:3b:1:1
        tcp-request connection expect-proxy layer4 if is_from_proxy

        bind :::80
        default_backend any_http

backend any_http
        server apache2 ::1:8080
&lt;/pre&gt;
&lt;p&gt;Obviously after that you then do:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;systemctl restart apache2
systemctl restart haproxy
&lt;/pre&gt;
&lt;p&gt;Now you have a proxy protocol'd setup from the proxy servers, and you can still talk directly to the Pi over ipv6, you're not yet logging the right remote ips, but we're a step closer. Next enable mod_remoteip in apache2:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;a2enmod remoteip
&lt;/pre&gt;
&lt;p&gt;And add a file, &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;/etc/apache2/conf-available/remoteip-logformats.conf&lt;/span&gt;&lt;/tt&gt; containing:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;LogFormat &quot;%v:%p %a %l %u %t \&quot;%r\&quot; %&amp;gt;s %O \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot;&quot; remoteip_vhost_combined
&lt;/pre&gt;
&lt;p&gt;And edit the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;/etc/apache2/sites-available/000-default.conf&lt;/span&gt;&lt;/tt&gt; to change the &lt;tt class=&quot;docutils literal&quot;&gt;CustomLog&lt;/tt&gt; line to use &lt;tt class=&quot;docutils literal&quot;&gt;remoteip_vhost_combined&lt;/tt&gt; rather than &lt;tt class=&quot;docutils literal&quot;&gt;combined&lt;/tt&gt; as the &lt;tt class=&quot;docutils literal&quot;&gt;LogFormat&lt;/tt&gt; and add the relevant RemoteIP settings:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy ::1

CustomLog ${APACHE_LOG_DIR}/access.log remoteip_vhost_combined
&lt;/pre&gt;
&lt;p&gt;Now, enable the config and restart apache2:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;a2enconf remoteip-logformats
systemctl restart apache2
&lt;/pre&gt;
&lt;p&gt;Now you'll get the right remote ip in the logs (cool, huh!), and, better still, the environment that gets pushed through to cgi scripts/php/whatever is now also correct.&lt;/p&gt;
&lt;p&gt;So, you can now happily visit &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;http://www.&amp;lt;your-pi-name&amp;gt;.hostedpi.com/&lt;/span&gt;&lt;/tt&gt;, e.g. &lt;a class=&quot;reference external&quot; href=&quot;http://www.srwpi.hostedpi.com/&quot;&gt;http://www.srwpi.hostedpi.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next up, you'll want something like dehydrated - I grabbed the packaged version from debian's jessie-backports repository - so that you can make yourself some nice shiny SSL certificates (why wouldn't you, after all!), once you've got dehydrated installed, you'll probably want to tweak it a bit, I have some magic extra files that I use, I also suggest getting the dehydrated-apache2 package, which just makes it all much easier too.&lt;/p&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;/etc/dehydrated/conf.d/mail.sh&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;CONTACT_EMAIL=&quot;my@email.address&quot;
&lt;/pre&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;/etc/dehydrated/conf.d/domainconfig.sh&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;DOMAINS_D=&quot;/etc/dehydrated/domains.d&quot;
&lt;/pre&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;/etc/dehydrated/domains.d/srwpi.hostedpi.com&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;HOOK=&quot;/etc/dehydrated/hooks/srwpi&quot;
&lt;/pre&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;/etc/dehydrated/hooks/srwpi&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;#!/bin/sh
action=&quot;$1&quot;
domain=&quot;$2&quot;

case $action in
  deploy_cert)
    privkey=&quot;$3&quot;
    cert=&quot;$4&quot;
    fullchain=&quot;$5&quot;
    chain=&quot;$6&quot;
    cat &quot;$privkey&quot; &quot;$fullchain&quot; &amp;gt; /etc/ssl/private/srwpi.pem
    chmod 640 /etc/ssl/private/srwpi.pem
    ;;
  *)
    ;;
esac
&lt;/pre&gt;
&lt;p&gt;&lt;tt class=&quot;docutils literal&quot;&gt;/etc/dehydrated/hooks/srwpi&lt;/tt&gt; has the execute bit set (&lt;tt class=&quot;docutils literal&quot;&gt;chmod +x /etc/dehydrated/hooks/srwpi&lt;/tt&gt;), and is really only there so that the certificate can be used easily in haproxy.&lt;/p&gt;
&lt;p&gt;And finally the file &lt;tt class=&quot;docutils literal&quot;&gt;/etc/dehydrated/domains.txt&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;www.srwpi.hostedpi.com srwpi.hostedpi.com
&lt;/pre&gt;
&lt;p&gt;Obviously, use your own pi name in there, or better yet, one of your own domain names that you've mapped to the proxies.&lt;/p&gt;
&lt;p&gt;Run &lt;tt class=&quot;docutils literal&quot;&gt;dehydrated&lt;/tt&gt; in cron mode (it's noisy, but meh...):&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;dehydrated -c
&lt;/pre&gt;
&lt;p&gt;That s then generated you some shiny certificates (hopefully). For now, I'll just tell you how to do it through the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;/etc/apache2/sites-available/default-ssl.conf&lt;/span&gt;&lt;/tt&gt; file, just edit that file and change the &lt;tt class=&quot;docutils literal&quot;&gt;SSLCertificateFile&lt;/tt&gt; and &lt;tt class=&quot;docutils literal&quot;&gt;SSLCertificateKeyFile&lt;/tt&gt; to point to &lt;tt class=&quot;docutils literal&quot;&gt;/var/lib/dehydrated/certs/www.srwpi.hostedpi.com/fullchain.pem&lt;/tt&gt; and &lt;tt class=&quot;docutils literal&quot;&gt;/var/llib/dehydrated/certs/ww.srwpi.hostedpi.com/privkey.pem&lt;/tt&gt; files, do the edit for the &lt;tt class=&quot;docutils literal&quot;&gt;CustomLog&lt;/tt&gt; as you did for the other default site, and change the &lt;tt class=&quot;docutils literal&quot;&gt;VirtualHost&lt;/tt&gt; to be &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;[::1]:443&lt;/span&gt;&lt;/tt&gt; and enable the site:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;a2ensite default-ssl
a2enmod ssl
&lt;/pre&gt;
&lt;p&gt;And restart apache2:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;systemctl restart apache2
&lt;/pre&gt;
&lt;p&gt;Now time to add some bits to &lt;tt class=&quot;docutils literal&quot;&gt;haproxy.cfg&lt;/tt&gt;, usefully this is only a tiny tiny bit of extra config:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;frontend any_https
        option httplog
        option forwardfor

        acl is_from_proxy src 2a00:1098:0:82:1000:3b:1:1 2a00:1098:0:80:1000:3b:1:1
        tcp-request connection expect-proxy layer4 if is_from_proxy

        bind :::443 ssl crt /etc/ssl/private/srwpi.pem

        default_backend any_https

backend any_https
        server apache2 ::1:4443 ssl ca-file /etc/ssl/certs/ca-certificates.crt
&lt;/pre&gt;
&lt;p&gt;Restart haproxy:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;systemctl restart haproxy
&lt;/pre&gt;
&lt;p&gt;And we're all done! REMOTE_ADDR will appear as the correct remote address in the logs, and in the environment.&lt;/p&gt;</content>
		<author>
			<name>Brett Parker</name>
			<email>iDunno@sommitrealweird.co.uk</email>
			<uri>https://www.sommitrealweird.co.uk/blog/</uri>
		</author>
		<source>
			<title type="html">The World of SommitRealWeird.</title>
			<subtitle type="html">Updates on The World of SommitRealWeird.</subtitle>
			<link rel="self" href="https://www.sommitrealweird.co.uk/feeds/blog/atom/"/>
			<id>https://www.sommitrealweird.co.uk/blog/</id>
		</source>
	</entry>

	<entry>
		<title type="html">Rinse and repeat</title>
		<link href="http://www.news.software.coop/rinse-and-repeat/1593/"/>
		<id>http://www.news.software.coop/rinse-and-repeat/1593/</id>
		<updated>2016-10-18T04:28:23+00:00</updated>
		<content type="html">&lt;p&gt;Forgive me, reader, for I have sinned. It has been over a year since my last blog post. Life got busy. Paid work. &lt;a href=&quot;http://forum.cyclinguk.org/viewtopic.php?f=49&amp;amp;t=97373&quot;&gt;Another round of challenges managing my chronic illness.&lt;/a&gt; &lt;a href=&quot;http://www.klwnbug.co.uk/&quot;&gt;Cycle campaigning. Fun bike rides.&lt;/a&gt; Friends. Family. Travels. &lt;a href=&quot;http://social.mayfirst.org/mjray&quot;&gt;Other social media to stroke.&lt;/a&gt; I’m still reading some of the planets where this blog post should appear and commenting on some, so I’ve not felt completely cut off, but I am surprised how many people don’t allow comments on their blogs any more (or make it too difficult for me with reCaptcha and the like).&lt;/p&gt;
&lt;p&gt;The main motive for this post is to test some minor upgrades, though. Hi everyone. How’s it going with you? I’ll probably keep posting short updates in the future.&lt;/p&gt;
&lt;p&gt;Go in peace to love and serve the web. &lt;img alt=&quot;🙂&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/11/72x72/1f642.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>mjr</name>
			<uri>http://www.news.software.coop</uri>
		</author>
		<source>
			<title type="html">mjr – Software Cooperative News</title>
			<subtitle type="html">What software.coop is doing and contemplating</subtitle>
			<link rel="self" href="http://mjr.towers.org.uk/blog/all.rss"/>
			<id>http://www.news.software.coop</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">SSL / TLS</title>
		<link href="http://www.advogato.org/person/Chicago/diary.html?start=153"/>
		<id>http://jejt.wordpress.com/2014/07/10/ssl-tls/</id>
		<updated>2014-07-10T14:09:44+00:00</updated>
		<content type="html">&lt;p&gt;Is it annoying or not that everyone says SSL Certs and SSL when they really mean TLS?&lt;/p&gt;
&lt;p&gt;Does anyone actually mean SSL? Have there been any accidents through people confusing the two?&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/jejt.wordpress.com/103/&quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/jejt.wordpress.com/103/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://pixel.wp.com/b.gif?host=jejt.wordpress.com&amp;amp;blog=4416931&amp;amp;post=103&amp;amp;subd=jejt&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>James Taylor</name>
			<uri>http://www.advogato.org/person/Chicago/</uri>
		</author>
		<source>
			<title type="html">Advogato blog for Chicago</title>
			<subtitle type="html">Advogato blog for Chicago</subtitle>
			<link rel="self" href="http://www.advogato.org/person/Chicago/rss.xml"/>
			<id>http://www.advogato.org/person/Chicago/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Cloud Computing Deployments … Revisited.</title>
		<link href="http://www.advogato.org/person/Chicago/diary.html?start=152"/>
		<id>http://jejt.wordpress.com/2014/07/10/cloud-computing-deployments-revisited/</id>
		<updated>2014-07-10T14:09:44+00:00</updated>
		<content type="html">&lt;p&gt;So its been a few years since I’ve posted, because its been so much hard work, and we’ve been pushing really hard on some projects which I just can’t talk about – annoyingly. Anyways, March 20th , 2011 I talked about &lt;a href=&quot;http://jejt.wordpress.com/2011/03/20/continual-integration-development-and-the-cloud/&quot;&gt;Continual Integration and Continual Deployment and the Cloud&lt;/a&gt; and discussed two main methods – having what we now call ‘Gold Standards’ vs continually updating.&lt;/p&gt;
&lt;p&gt;The interesting thing is that as we’ve grown as a company, and as we’ve become more ‘Enterprise’, we’ve brought in more systems administrators and begun to really separate the deployments from the development. The other thing is we have separated our services out into multiple vertical strands, which have different roles. This means we have slightly different processes for Banking or Payment based modules then we do from marketing modules. We’re able to segregate operational and content from personally identifiable information – PII having much higher regulation on who can (and auditing of who does) access.&lt;/p&gt;
&lt;p&gt;Several other key things had to change: for instance, things like SSL keys of the servers shouldn’t be kept in the development repo. Now, of course not, I hear you yell, but its a very blurry line. For instance, should the Django configuration be kept in the repo? Well, yes, because that defines the modules and things like URLs. Should the nginx config be kept in the repo? Well, oh. if you keep *that* in then you would keep your SSL certs in…&lt;/p&gt;
&lt;p&gt;So the answer becomes having lots of repo’s. One repo per application (django wise), and one repo per deployment containing configurations. And then you start looking at build tools to bring, for a particular server or cluster of servers up and running.&lt;/p&gt;
&lt;p&gt;The process (for our more secure, audited services) is looking like a tool to bring an AMI up, get everything installed and configured, and then take a snapshot, and then a second tool that takes that AMI (and all the others needed) and builds the VPC inside of AWS. Its a step away from the continual deployment strategy, but it is mostly automated.&lt;/p&gt;&lt;br /&gt;&lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/jejt.wordpress.com/102/&quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/jejt.wordpress.com/102/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://pixel.wp.com/b.gif?host=jejt.wordpress.com&amp;amp;blog=4416931&amp;amp;post=102&amp;amp;subd=jejt&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</content>
		<author>
			<name>James Taylor</name>
			<uri>http://www.advogato.org/person/Chicago/</uri>
		</author>
		<source>
			<title type="html">Advogato blog for Chicago</title>
			<subtitle type="html">Advogato blog for Chicago</subtitle>
			<link rel="self" href="http://www.advogato.org/person/Chicago/rss.xml"/>
			<id>http://www.advogato.org/person/Chicago/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-GB">Beginning irc</title>
		<link href="https://www.linuxlore.co.uk/2014/06/12/beginning-irc/"/>
		<id>http://www.linuxlore.co.uk/?p=389</id>
		<updated>2014-06-12T16:27:45+00:00</updated>
		<content type="html" xml:lang="en-GB">&lt;p&gt;After some discussion last night at &lt;a href=&quot;http://phphants.co.uk/&quot; title=&quot;PHP Hants&quot;&gt;PHP Hants&lt;/a&gt; about the fact that &lt;a href=&quot;http://en.wikipedia.org/wiki/Internet_Relay_Chat&quot; title=&quot;Wikipedia definition&quot;&gt;irc&lt;/a&gt; is a great facilitator of support / discussion, but largely ignored because there is rarely enough information for a new user to get going I decided it may be worth putting together a howto type post so here goes…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is irc?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First of all, what on earth is it? I’m tempted to describe it as Twitter done right years before Twitter even existed, but I’m a geek and I’ve been using irc for years. It has a long heritage, but unlike the ubiquitous email it hasn’t made the transition into mainstream use. In terms of usage it has similarities to things like &lt;a href=&quot;https://twitter.com/&quot; title=&quot;Twitter&quot;&gt;Twitter&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Instant_messaging&quot; title=&quot;Instant Messaging&quot;&gt;Instant Messaging&lt;/a&gt;. Let’s take a quick look at this.&lt;/p&gt;
&lt;p&gt;Twitter allows you to broadcast messages, they get published and anyone who is subscribed to your feed can read what you say. Everything is pretty instant, and if somebody is watching the screen at the right time they can respond straight away. Instant Messaging on the other hand, is more of a direct conversation with a single person, or sometimes a group of people, but it too is pretty instantaneous – assuming, of course, that there’s someone reading what you’ve said. Both of these techonologies are pretty familiar to many. If you go to the appropriate website you are given the opportunity to sign up and either use a web based client or download one.&lt;/p&gt;
&lt;p&gt;It is much the same for irc in terms of usage, although conversations are grouped into channels which generally focus on a particular topic rather than being generally broadcast (Twitter) or more specifically directed (Instant Messaging). The downside is that in most cases you don’t get a web page with clear instructions of how to sign up, download a client and find where the best place is to join the conversation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Getting started&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are two things you need to get going with irc, a &lt;a href=&quot;http://en.wikipedia.org/wiki/Client_%28computing%29&quot; title=&quot;What is a client?&quot;&gt;client&lt;/a&gt; and somewhere to connect to. Let’s put that into a more familiar context.&lt;/p&gt;
&lt;p&gt;The client is what you use to connect with; this can be an application – so as an example Outlook or Thunderbird would be a mail client, or IE, Firefox, Chrome or Safari are examples of clients for web pages – or it can be a web page that does the same thing – so if you go to &lt;a href=&quot;https://twitter.com/&quot; title=&quot;Twitter&quot;&gt;twitter.com&lt;/a&gt; and login you are using the web page as your Twitter client. Somewhere to connect to can be compared to a web address, or if you’ve got close enough to the configuration of your email to see the details, your mail server address.&lt;/p&gt;
&lt;p&gt;Let’s start with the ‘&lt;em&gt;somewhere to connect to&lt;/em&gt;‘ bit. Freenode is one of the most popular irc servers, so let’s take a look. First we’ll see what we can find out from their website, &lt;a href=&quot;http://freenode.net/&quot; title=&quot;Freenode&quot;&gt;http://freenode.net/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2014/06/freenode.png?ssl=1&quot;&gt;&lt;img alt=&quot;freenode&quot; class=&quot;alignnone size-full wp-image-395&quot; height=&quot;489&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2014/06/freenode.png?resize=640%2C489&amp;amp;ssl=1&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There’s a lot of very daunting information there for somebody new to irc, so ignore most of it and follow the &lt;a href=&quot;https://webchat.freenode.net/&quot; title=&quot;Webchat&quot;&gt;Webchat&lt;/a&gt; link on the left.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2014/06/webchat.png?ssl=1&quot;&gt;&lt;img alt=&quot;webchat&quot; class=&quot;alignnone size-full wp-image-396&quot; height=&quot;489&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2014/06/webchat.png?resize=640%2C489&amp;amp;ssl=1&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That’s all very well and good, but what do we put in there? I guess the screenshot above gives a clue, but if you actually visit the page the entry boxes will be blank. Well first off there’s the &lt;em&gt;Nickname&lt;/em&gt;, this can be pretty much anything you like, no need to register it – stick to the basics of letters, numbers and some simple punctuation (if you want to), keep it short and so long as nobody else is already using it you should be fine; if it doesn’t work try another. &lt;em&gt;Channels&lt;/em&gt; is the awkward one, how do you know what channels there are? If you’re lucky you’re looking into this because you’ve been told there’s a channel there and hopefully you’ve been given the channel name. For now let’s just use the PHP Hants channel, so that would be &lt;em&gt;#phph&lt;/em&gt; in the Channels box. Now all you need to do is type in the captcha, ignore the tick boxes and click &lt;em&gt;Connect&lt;/em&gt; and you are on the irc channel and ready to chat. Down the right you’ll see a list of who else is there, and in the main window there will be a bit of introductory information (e.g. topic for the channel) and depending on how busy it is anything from nothing to a fast scrolling screen of text.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2014/06/phph.png?ssl=1&quot;&gt;&lt;img alt=&quot;phph&quot; class=&quot;alignnone size-full wp-image-397&quot; height=&quot;489&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2014/06/phph.png?resize=640%2C489&amp;amp;ssl=1&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you’ve miss typed there’s a chance you’ll end up in a channel specially created for you because it didn’t exist; don’t worry, just quit and try again (I’ll explain that process shortly).&lt;/p&gt;
&lt;p&gt;For now all you really need to worry about is typing in text an posting it, this is as simple as typing it into the entry box at the bottom of the page and pressing return. Be polite, be patient and you’ll be fine. There are plenty of commands that you can use to do things, but for now the only one you need to worry about is the one to leave, this is:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/quit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Type it in the entry box, press return and you’ve disconnected from the server. The next thing to look into is using a client program since this is far more flexible, but I’ll save that for another post.&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://www.linuxlore.co.uk/2014/06/12/beginning-irc/&quot;&gt;Beginning irc&lt;/a&gt; appeared first on &lt;a href=&quot;https://www.linuxlore.co.uk&quot;&gt;Linuxlore&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Paul Tansom</name>
			<uri>https://www.linuxlore.co.uk/</uri>
		</author>
		<source>
			<title type="html">Linuxlore</title>
			<subtitle type="html">Probably more than just Linux</subtitle>
			<link rel="self" href="https://www.linuxlore.co.uk/feed/"/>
			<id>https://www.linuxlore.co.uk/</id>
		</source>
	</entry>

	<entry>
		<title type="html">A year in Prog!</title>
		<link href="http://hexpek.blogspot.com/2014/01/a-year-in-prog.html"/>
		<id>tag:blogger.com,1999:blog-21771571.post-8129552223779859034</id>
		<updated>2014-01-01T19:56:00+00:00</updated>
		<content type="html">&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;It's New Year's Day 2014 and I'm reflecting on the music of past year.&lt;/b&gt;&lt;/h3&gt;
Album wise there were several okay...ish releases in the world of Progressive Rock. Steven Wilson's The Raven That Refused To Sing not the absolute masterpiece some have eulogised a solid effort though but it did contain some filler. Motorpsyco entertained with Still Life With Eggplant not as good as their previous album but again a solid effort. Magenta as ever didn't disappoint with The 27 Club, wishing Tina Booth a swift recovery from her ill health.&lt;br /&gt;
&lt;br /&gt;
The Three stand out albums in no particular order for me were Edison's Children's Final Breath Before November which almost made it as album of the year and Big Big Train with English Electric Full Power which combined last years Part One and this years Part Two with some extra goodies to make the whole greater than the sum of the parts. Also Adrian Jones of Nine Stones Close fame pulled one out of the bag with his side Project Jet Black Sea which was very different and a challenging listen, hard going at first but surprisingly very good. This man is one superb guitarist especially if you like emotion wrung out of the instrument like David Gilmore or Steve Rothery.&lt;br /&gt;
&lt;span id=&quot;goog_553658369&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_553658370&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieygyJfXUR9ipzJk30me6ZvPzrzoECCFn4FLQ5KU_upJ9lYTT0a2SizU2QyajTYxve2kaZEt6xfOmcS5yP_BPkUZ1dRejJHhowhzTpcWu9DOu2aRFCOBL5x4noxfjpkKQXSpt2/s1600/3D-Feast-visual-4_3274x300.jpg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieygyJfXUR9ipzJk30me6ZvPzrzoECCFn4FLQ5KU_upJ9lYTT0a2SizU2QyajTYxve2kaZEt6xfOmcS5yP_BPkUZ1dRejJHhowhzTpcWu9DOu2aRFCOBL5x4noxfjpkKQXSpt2/s1600/3D-Feast-visual-4_3274x300.jpg&quot; /&gt;&lt;/a&gt;The moniker of Album of the Year this year goes to Fish for the incredible Feast of Consequences. A real return to form and his best work since Raingods With Zippos. The packaging of the deluxe edition with a splendid book featuring the wonderful artwork of Mark Wilkinson was superb. A real treat with a very thought provoking suite about the first world war really hammed home the saying &quot;Lest we forget&quot;. A fine piece that needs to be heard every November 11th.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8NCktMorOtX1pl6hM7V0aeLqhaJFVp9CWg7Ed3UcgEWnvm3meB08zqCGvEwvpi8pTgeFltl79huLM1focnauDUl5k-bBp3ZKTbBT4Uxbx3IXt4Ix8mNC2C8iv-1bk2ybXRrbA/s1600/indexn2.jpg&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8NCktMorOtX1pl6hM7V0aeLqhaJFVp9CWg7Ed3UcgEWnvm3meB08zqCGvEwvpi8pTgeFltl79huLM1focnauDUl5k-bBp3ZKTbBT4Uxbx3IXt4Ix8mNC2C8iv-1bk2ybXRrbA/s320/indexn2.jpg&quot; width=&quot;207&quot; /&gt;&lt;/a&gt;Gig wise again Fish at the Junction in Cambridge was great. His voice may not be what it was in 1985 but he is the consummate performer, very at home on the stage. As a raconteur between songs he is as every bit as entertaining as he is singing songs themselves.&lt;br /&gt;
&lt;br /&gt;
The March Marillion Convention in Port Zealand, Holland where they performed their masterpiece Brave was very special as every performance of incredible album is. The Marillion Conventions are always special but Brave made this one even more special than it would normally be.&lt;br /&gt;
Gig of the year goes again to Marillion at Aylesbury Friars in November. I had waited thirty years and forty odd shows to see them perform Garden Party segued into Market Square Heroes that glorious night it came to pass, I'm am now one very happy Progger or should that be Proggie? Nevermind Viva Progressive Rock!</content>
		<author>
			<name>BigJohn (aka hexpek)</name>
			<email>noreply@blogger.com</email>
			<uri>http://hexpek.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">BigJohn's Weblog</title>
			<subtitle type="html">Hexpek IT - CallTheComputerGuy.co.uk</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/hexpek"/>
			<id>tag:blogger.com,1999:blog-21771571</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-GB">Scratch in a network environment</title>
		<link href="https://www.linuxlore.co.uk/2013/12/01/scratch-in-a-network-environment/"/>
		<id>http://www.linuxlore.co.uk/?p=371</id>
		<updated>2013-12-01T19:00:27+00:00</updated>
		<content type="html" xml:lang="en-GB">&lt;p&gt;I have been running a &lt;a href=&quot;http://codeclub.org.uk/&quot; title=&quot;Code Club&quot;&gt;Code Club&lt;/a&gt; at my local Primary School for a while now, and thought it was about time I put details of a few tweaks I’ve made to the default &lt;a href=&quot;http://scratch.mit.edu/&quot; title=&quot;Scratch&quot;&gt;Scratch&lt;/a&gt; install to make things easier. So here goes:&lt;/p&gt;
&lt;p&gt;With the default install of Scratch (on Windows) projects are saved to the C: drive. For a network environment, with pupils work stored on a network drive so they always have access whichever machine they sit at, this isn’t exactly helpful. It also isn’t ideal that they can explore the C: drive in spite of profile restrictions (although it isn’t the end of the world as there is little they can do from Scratch).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/save-orig.jpg&quot;&gt;&lt;img alt=&quot;save-orig&quot; class=&quot;alignnone size-medium wp-image-372&quot; height=&quot;232&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/save-orig-300x232.jpg?resize=300%2C232&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After a bit of time with Google I found the answer, and since it didn’t immediately leap out at me when I was searching I thought I’d post it here (perhaps my Google Fu was weak that day). It is actually quite simple, especially for the average Code Club volunteer I should imagine; just edit the scratch.ini file. This is, as would be expected, located in:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;C:\Program Files\Scratch\Scratch.ini&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Initially it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/ini-orig.jpg&quot;&gt;&lt;img alt=&quot;ini-orig&quot; class=&quot;alignnone size-medium wp-image-374&quot; height=&quot;300&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/ini-orig-192x300.jpg?resize=192%2C300&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pretty standard stuff, but unfortunately no comments to indicate what else you can do with it. As it happens you can add the following two lines (for example):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Home=U:&lt;br /&gt;
VisibleDrives=U:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To get this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/ini-new.jpg&quot;&gt;&lt;img alt=&quot;ini-new&quot; class=&quot;alignnone size-medium wp-image-375&quot; height=&quot;300&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/ini-new-193x300.jpg?resize=193%2C300&quot; width=&quot;193&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They do exactly what is says on the tin. If you click on the Home button in a file dialogue box then you only get the drive(s) specified. You can also put a full path in if you want to put the home directory further down the directory structure.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/save-new1.jpg&quot;&gt;&lt;img alt=&quot;save-new1&quot; class=&quot;alignnone size-medium wp-image-376&quot; height=&quot;232&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/save-new1-300x232.jpg?resize=300%2C232&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The VisibleDrives option restricts what you can see if you click on the Computer button in a file dialogue box. If you want to allow more visible drives then separate them with a comma.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/save-new2.jpg&quot;&gt;&lt;img alt=&quot;save-new2&quot; class=&quot;alignnone size-medium wp-image-377&quot; height=&quot;232&quot; src=&quot;https://i0.wp.com/www.linuxlore.co.uk/wp-content/uploads/2013/12/save-new2-300x232.jpg?resize=300%2C232&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can do the same with a Mac (for the home drive), just use the appropriate directory format (i.e. no drive letter and the opposite direction slash).&lt;/p&gt;
&lt;p&gt;There is more that you can do, so take a look at the Scratch documentation &lt;a href=&quot;http://info.scratch.mit.edu/Network_Installation&quot; title=&quot;Scratch Network Installation&quot;&gt;here&lt;/a&gt;. For example if you use a * in the directory path it is replaced by the name of the currently logged on user.&lt;/p&gt;
&lt;p&gt;Depending on your network environment it may be handy for your Code Club to put the extra resources on a shared network drive and open up an extra drive in the VisibleDrives. One I haven’t tried yet it is the proxy setting, which I hope will allow me to upload projects to the Scratch website. It goes something like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ProxyServer=[server name or IP address]&lt;br /&gt;
 ProxyPort=[port number]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The post &lt;a href=&quot;https://www.linuxlore.co.uk/2013/12/01/scratch-in-a-network-environment/&quot;&gt;Scratch in a network environment&lt;/a&gt; appeared first on &lt;a href=&quot;https://www.linuxlore.co.uk&quot;&gt;Linuxlore&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Paul Tansom</name>
			<uri>https://www.linuxlore.co.uk/</uri>
		</author>
		<source>
			<title type="html">Linuxlore</title>
			<subtitle type="html">Probably more than just Linux</subtitle>
			<link rel="self" href="https://www.linuxlore.co.uk/feed/"/>
			<id>https://www.linuxlore.co.uk/</id>
		</source>
	</entry>

	<entry>
		<title type="html">LinuxMint 14 Add Printer Issue</title>
		<link href="http://hexpek.blogspot.com/2013/01/linuxmint-14-add-printer-issue.html"/>
		<id>tag:blogger.com,1999:blog-21771571.post-4557890120531465742</id>
		<updated>2013-01-16T00:39:00+00:00</updated>
		<content type="html">&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;h2&gt;
 LinuxMint 14 Add Printer Issue&lt;/h2&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
 &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTHQM-US1Dxau7T6ivAGnT33zYzze8uFXFui5pUv-_daAkKnWBg5br2ZnhyphenhyphenOhyphenhyphenwtox8u6LdtsKKQNRndXVtrb2YVch1K01vQ2eAPFAHu-a4ZMcLC9BJnn7Hl5YXXG5fCDK37x-/s1600/Screenshot+from+2013-01-16+00%253A21%253A49.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTHQM-US1Dxau7T6ivAGnT33zYzze8uFXFui5pUv-_daAkKnWBg5br2ZnhyphenhyphenOhyphenhyphenwtox8u6LdtsKKQNRndXVtrb2YVch1K01vQ2eAPFAHu-a4ZMcLC9BJnn7Hl5YXXG5fCDK37x-/s320/Screenshot+from+2013-01-16+00%253A21%253A49.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px; text-align: justify; text-indent: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0px; text-align: justify; text-indent: 0px;&quot;&gt;
I wanted to print from my &lt;a href=&quot;http://www.linuxmint.com/&quot; target=&quot;_blank&quot;&gt;LinuxMint 14&lt;/a&gt; (Cinnamon) PC via a shared Windows printer on my network. Problem is it isn’t found by the printers dialog in system settings. I thought I’d done all the normal things to get samba to play nice like rearranging the name resolve order in /etc/samba/smb.conf to a more sane bcast host lmhosts wins. Having host and wins, neither of which I’m using first in the order cocks things up some what. Every time I tried to search for the printer in the system setting dialog it told me “FirewallD is not running. Network printer detection needs services mdns, ipp, ipp-client and samba-client enabled on firewall.” So much scratching of the head there then, because as far as I can tell there ain’t no daemon by that name available!&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px; text-align: justify; text-indent: 0px;&quot;&gt;
It turns out thanks to &lt;a href=&quot;http://pseudomorph.wordpress.com/2012/01/12/adding-a-printer-to-linux-mint-12-or-ubuntu-11-10-with-gnomeshell/&quot; target=&quot;_blank&quot;&gt;/pseudomorph&lt;/a&gt; this has been a bug since LinuxMint12 (based on Ubuntu 11.10). It’s due to that particular daemon (Windows people daemon pretty much = service) being Fedora specific and should have no place in a Debian/Ubuntu based distribution. Bugs of this nature really should be ironed out sooner.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px; text-align: justify; text-indent: 0px;&quot;&gt;
Anyway the simple fix is to use the more traditional approach using the older printer dialog which is accessed by inputting system-config-printer at the command line. Which works just fine so why the new (over a year old) printer config dialog that is inherently broken I ask myself.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin: 0px; text-align: justify; text-indent: 0px;&quot;&gt;
The CUPS web interface also works apparently  http://localhost:631/ in your favourite browser which should be there as long as CUPS is installed which it is in LinuxMint by default.&lt;br /&gt;
&lt;br /&gt;
So come on Minty people get your bug squashing boots on and stamp on this one please.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Update&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Bug &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/871985&quot; target=&quot;_blank&quot;&gt;#871985&lt;/a&gt; only affects Gnome3 so as long as its not affecting Unity that will be okay &lt;a href=&quot;http://www.canonical.com/&quot; target=&quot;_blank&quot;&gt;Canonical &lt;/a&gt;will it! &lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content>
		<author>
			<name>BigJohn (aka hexpek)</name>
			<email>noreply@blogger.com</email>
			<uri>http://hexpek.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">BigJohn's Weblog</title>
			<subtitle type="html">Hexpek IT - CallTheComputerGuy.co.uk</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/hexpek"/>
			<id>tag:blogger.com,1999:blog-21771571</id>
		</source>
	</entry>

	<entry>
		<title type="html">On Music</title>
		<link href="http://davidreynolds.me.uk/blog/on-music/"/>
		<id>http://davidreynolds.me.uk/blog/on-music</id>
		<updated>2012-08-20T15:33:00+00:00</updated>
		<content type="html">&lt;p&gt;Lately, (well I say lately, I think it’s been the same for a few years now) I have been finding that it is very rare that an album comes along that affects me in a way that music I heard 10 years ago seem to. That is not to say that I have not heard any music that I like in that time, it just doesn’t seem to mean as music that has been in my life for years. What I am trying to work out is if that is a reflection on the state of music, of how I experience music or just me.&lt;/p&gt;

&lt;h2&gt;Buying&lt;/h2&gt;

&lt;p&gt;Buying music was always quite an experience. I would spend weeks, months and sometimes longer saving up to buy some new music. Whether I knew exactly what I wanted or just wanted “something else by this artist” I would spend some time browsing the racks weighing up what was the best value for my money. In the days before the internet, if you wanted to research an artist’s back catalogue, you were generally out of luck unless you had access to books about the artists. This lead to the thrill of finding a hidden gem in the racks that you didn’t know existed or had only heard rumours about. The anticipation of listening to the new music would build even more because I would have to wait until I had travelleled home before I could listen to my new purchases.&lt;/p&gt;

&lt;p&gt;Nowadays, with the dizzying amount of music constantly pumped into our ears through the internet, radio, advertising and the plethora of styles and genres, it is difficult to sift through and find artists and music that really speak to you. Luckily, there are websites available to catalogue releases by artists so you are able to do thorough research and even preview your music before you purchase it. Of course the distribution methods have changed massively too. No longer do I have to wait until I can make it to a brick and mortar store to hand over my cash. I can now not only buy physical musical releases on CD or Vinyl online and have it delivered to my door, I can also buy digital music through iTunes, Amazon or Bandcamp or even stream the music straight to my ears through services like Spotify or Rdio. Whilst these online sales avenues are great for artists to be able to sell directly to their fans, I feel that some of the magic has been removed from the purchasing of music for me.&lt;/p&gt;

&lt;h2&gt;Listening&lt;/h2&gt;

&lt;p&gt;Listening to the music used to be an even greater event than purchasing it. After having spent the time saving up for the purchase, then the time carefully choosing the music to buy and getting it home, I would then sit myself down and listen to the music. I would immerse myself totally in the music and &lt;em&gt;only&lt;/em&gt; listen to it (I might read the liner notes if I hadn’t exhausted them on the way home). It is difficult to imagine doing one thing for 45+ minutes without the constant interruptions from smartphones, tablet computers, games consoles and televisions these days. I can’t rememeber the last time I listened to music on good speakers or headphones (generally I listen on crappy computers speakers or to compressed audio on my iPhone through crappy headphones) without reading Twitter, replying to emails or reading copiuous amounts of information about the artists on Wikipedia. This all serves to distract from the actual enjoyment of just listening to the music.&lt;/p&gt;

&lt;h2&gt;Experience&lt;/h2&gt;

&lt;p&gt;The actual act of writing this blog post has called into sharp focus the main reason why music doesn’t seem to affect me nowadays as much as it used to - because I don’t experience it in the same way. My life has changed, I have more resposibilities and less time to &lt;em&gt;just listen&lt;/em&gt; which makes the convenience and speed of buying digital music online much more appealing. You would think that this ‘instant music’ should be instantly satisfying but for some reason it doesn’t seem to work that way.&lt;/p&gt;

&lt;h2&gt;What changed?&lt;/h2&gt;

&lt;p&gt;I wonder if I am the only one experiencing this? My tastes in music have definitely changed a lot over the last few years, but I still find it hard to find music that I want to listen to again and again. I’m hoping I’m not alone in this, alternatively I’m hoping someone might read this and recommend some awesome music to me and cure this weird musical apathy I appear to me suffering from.&lt;/p&gt;</content>
		<author>
			<name>David Reynolds</name>
			<uri>http://davidreynolds.me.uk/</uri>
		</author>
		<source>
			<title type="html">David Reynolds</title>
			<link rel="self" href="https://www.davidreynolds.me.uk/atom.xml"/>
			<id>http://davidreynolds.me.uk/</id>
		</source>
	</entry>

	<entry>
		<title type="html">On Music</title>
		<link href="http://davidreynolds.me.uk/blog/2012/08/20/on-music/"/>
		<id>http://davidreynolds.me.uk/blog/2012/08/20/on-music</id>
		<updated>2012-08-20T15:33:00+00:00</updated>
		<content type="html">&lt;p&gt;Lately, (well I say lately, I think it’s been the same for a few years now) I have been finding that it is very rare that an album comes along that affects me in a way that music I heard 10 years ago seem to. That is not to say that I have not heard any music that I like in that time, it just doesn’t seem to mean as music that has been in my life for years. What I am trying to work out is if that is a reflection on the state of music, of how I experience music or just me.&lt;/p&gt;

&lt;h2&gt;Buying&lt;/h2&gt;

&lt;p&gt;Buying music was always quite an experience. I would spend weeks, months and sometimes longer saving up to buy some new music. Whether I knew exactly what I wanted or just wanted “something else by this artist” I would spend some time browsing the racks weighing up what was the best value for my money. In the days before the internet, if you wanted to research an artist’s back catalogue, you were generally out of luck unless you had access to books about the artists. This lead to the thrill of finding a hidden gem in the racks that you didn’t know existed or had only heard rumours about. The anticipation of listening to the new music would build even more because I would have to wait until I had travelleled home before I could listen to my new purchases.&lt;/p&gt;

&lt;p&gt;Nowadays, with the dizzying amount of music constantly pumped into our ears through the internet, radio, advertising and the plethora of styles and genres, it is difficult to sift through and find artists and music that really speak to you. Luckily, there are websites available to catalogue releases by artists so you are able to do thorough research and even preview your music before you purchase it. Of course the distribution methods have changed massively too. No longer do I have to wait until I can make it to a brick and mortar store to hand over my cash. I can now not only buy physical musical releases on CD or Vinyl online and have it delivered to my door, I can also buy digital music through iTunes, Amazon or Bandcamp or even stream the music straight to my ears through services like Spotify or Rdio. Whilst these online sales avenues are great for artists to be able to sell directly to their fans, I feel that some of the magic has been removed from the purchasing of music for me.&lt;/p&gt;

&lt;h2&gt;Listening&lt;/h2&gt;

&lt;p&gt;Listening to the music used to be an even greater event than purchasing it. After having spent the time saving up for the purchase, then the time carefully choosing the music to buy and getting it home, I would then sit myself down and listen to the music. I would immerse myself totally in the music and &lt;em&gt;only&lt;/em&gt; listen to it (I might read the liner notes if I hadn’t exhausted them on the way home). It is difficult to imagine doing one thing for 45+ minutes without the constant interruptions from smartphones, tablet computers, games consoles and televisions these days. I can’t rememeber the last time I listened to music on good speakers or headphones (generally I listen on crappy computers speakers or to compressed audio on my iPhone through crappy headphones) without reading Twitter, replying to emails or reading copiuous amounts of information about the artists on Wikipedia. This all serves to distract from the actual enjoyment of just listening to the music.&lt;/p&gt;

&lt;h2&gt;Experience&lt;/h2&gt;

&lt;p&gt;The actual act of writing this blog post has called into sharp focus the main reason why music doesn’t seem to affect me nowadays as much as it used to - because I don’t experience it in the same way. My life has changed, I have more resposibilities and less time to &lt;em&gt;just listen&lt;/em&gt; which makes the convenience and speed of buying digital music online much more appealing. You would think that this ‘instant music’ should be instantly satisfying but for some reason it doesn’t seem to work that way.&lt;/p&gt;

&lt;h2&gt;What changed?&lt;/h2&gt;

&lt;p&gt;I wonder if I am the only one experiencing this? My tastes in music have definitely changed a lot over the last few years, but I still find it hard to find music that I want to listen to again and again. I’m hoping I’m not alone in this, alternatively I’m hoping someone might read this and recommend some awesome music to me and cure this weird musical apathy I appear to me suffering from.&lt;/p&gt;</content>
		<author>
			<name>David Reynolds</name>
			<uri>http://davidreynolds.me.uk/</uri>
		</author>
		<source>
			<title type="html">David Reynolds</title>
			<link rel="self" href="http://davidreynolds.me.uk/atom.xml"/>
			<id>http://davidreynolds.me.uk/</id>
		</source>
	</entry>

	<entry>
		<title type="html">Black redstarts</title>
		<link href="http://sunflowerinrain.blogspot.com/2012/06/black-redstarts.html"/>
		<id>tag:blogger.com,1999:blog-6963830.post-4496186045634915526</id>
		<updated>2012-06-25T08:02:09+00:00</updated>
		<content type="html">It's difficult to use the terrace for a couple of weeks, because the black redstart family is in their summer residence at the top of a column under the roof. The chicks grow very fast, and the parents have to feed them frequently; when anyone goes out on the terrace they stop the feeding process and click shrill warnings to the chicks to stay still. I worry that if we disturb them too often or for too long the chicks will starve. &lt;br /&gt;&lt;br /&gt;Black redstarts are called rougequeue noir (black red-tail) in French, but here they are known as rossignol des murailles (nightingale of the outside walls). Pretty! &lt;br /&gt;&lt;br /&gt;The camera needs replacing, so there are no photos of Musatelier's rossignols des murailles, but you can see what they look like on http://fr.wikipedia.org/wiki/Rougequeue_noir.</content>
		<author>
			<name>sunflowerinrain</name>
			<email>noreply@blogger.com</email>
			<uri>http://sunflowerinrain.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Sunflower in rain</title>
			<subtitle type="html">Diary of a late-flowering Muso</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/6963830/posts/default?alt=atom"/>
			<id>tag:blogger.com,1999:blog-6963830</id>
		</source>
	</entry>

	<entry>
		<title type="html">Roundabout at Mirambeau</title>
		<link href="http://sunflowerinrain.blogspot.com/2012/06/roundabout-at-mirambeau.html"/>
		<id>tag:blogger.com,1999:blog-6963830.post-5689613254316563083</id>
		<updated>2012-06-16T12:06:21+00:00</updated>
		<content type="html">Roundabouts are taken seriously here in France. Not so much as traffic measures (though it has been known for people to be cautioned by the local gendarmes for not signalling when leaving a roundabout, and quite rightly too), but as places to ornament.&lt;br /&gt;
&lt;br /&gt;
A couple of years ago the roundabout at the edge of  Mirambeau had a make-over which included an ironwork arch and a carrelet (fishing hut on stilts). Now it has a miniature vineyard as well, and roses and other plants for which this area is known. &lt;br /&gt;
&lt;br /&gt;
Need a passenger to take photo!</content>
		<author>
			<name>sunflowerinrain</name>
			<email>noreply@blogger.com</email>
			<uri>http://sunflowerinrain.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Sunflower in rain</title>
			<subtitle type="html">Diary of a late-flowering Muso</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/6963830/posts/default?alt=atom"/>
			<id>tag:blogger.com,1999:blog-6963830</id>
		</source>
	</entry>

	<entry>
		<title type="html">Some new photos</title>
		<link href="http://ashleyhowes.blogspot.com/2006/09/some-new-photos.html"/>
		<id>tag:blogger.com,1999:blog-3537896.post-115736654495314578</id>
		<updated>2006-09-04T10:42:25+00:00</updated>
		<content type="html">Take a look at some &lt;a href=&quot;http://www.flickr.com/photos/57873292@N00/&quot; target=&quot;_blank&quot;&gt;new photos my father and I have taken&lt;/a&gt;.  We are experimenting with our new digital SLR with a variety of lenses.</content>
		<author>
			<name>Ashley</name>
			<email>noreply@blogger.com</email>
			<uri>http://ashleyhowes.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Ashley's Items of Interest</title>
			<subtitle type="html">Items that interest Ashley</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/3537896/posts/default?alt=atom"/>
			<id>tag:blogger.com,1999:blog-3537896</id>
		</source>
	</entry>

	<entry>
		<title type="html">A Collection of Comments</title>
		<link href="http://ashleyhowes.blogspot.com/2006/01/collection-of-comments.html"/>
		<id>tag:blogger.com,1999:blog-3537896.post-113854136169060601</id>
		<updated>2006-08-30T01:13:14+00:00</updated>
		<content type="html">This is a bit of fun.  &lt;a href=&quot;http://thedailywtf.com/forums/58140/ShowPost.aspx&quot; target=&quot;_blank&quot;&gt;A collection of comments found in code&lt;/a&gt;.  This is from &lt;a href=&quot;http://thedailywtf.com&quot; target=&quot;_blank&quot;&gt;The Daily WTF&lt;/a&gt;.</content>
		<author>
			<name>Ashley</name>
			<email>noreply@blogger.com</email>
			<uri>http://ashleyhowes.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Ashley's Items of Interest</title>
			<subtitle type="html">Items that interest Ashley</subtitle>
			<link rel="self" href="http://www.blogger.com/feeds/3537896/posts/default?alt=atom"/>
			<id>tag:blogger.com,1999:blog-3537896</id>
		</source>
	</entry>

</feed>
