<!doctype html><html lang=en dir=auto><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>Andrew Kember</title><meta name=keywords content="Blog,Kember,PaperMod,Hugo"><meta name=description content="Obfuscation is Easy"><meta name=author content="AK"><link rel=canonical href=https://blog.kember.net/><link crossorigin=anonymous href=/assets/css/stylesheet.min.c88963fe2d79462000fd0fb1b3737783c32855d340583e4523343f8735c787f0.css integrity="sha256-yIlj/i15RiAA/Q+xs3N3g8MoVdNAWD5FIzQ/hzXHh/A=" rel="preload stylesheet" as=style><link rel=icon href=https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg><link rel=icon type=image/png sizes=16x16 href=https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg><link rel=icon type=image/png sizes=32x32 href=https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg><link rel=apple-touch-icon href=https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg><link rel=mask-icon href=https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><meta name=generator content="Hugo 0.112.7"><link rel=alternate type=application/rss+xml href=https://blog.kember.net/index.xml><link rel=alternate type=application/json href=https://blog.kember.net/index.json><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--hljs-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><meta property="og:title" content="Andrew Kember"><meta property="og:description" content="Obfuscation is Easy"><meta property="og:type" content="website"><meta property="og:url" content="https://blog.kember.net/"><meta property="og:image" content="https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg"><meta property="og:site_name" content="Andrew Kember"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg"><meta name=twitter:title content="Andrew Kember"><meta name=twitter:description content="Obfuscation is Easy"><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","name":"Andrew Kember","url":"https://blog.kember.net/","description":"Obfuscation is Easy","thumbnailUrl":"https://blog.kember.net/static/images-header/ak-logo-2021-black-filled-optimised.svg","sameAs":["https://twitter.com/andrewkember","https://www.linkedin.com/in/andrewkember/","https://github.com/andrewkember/"]}</script></head><body class=list id=top><script>localStorage.getItem("pref-theme")==="dark"?document.body.classList.add("dark"):localStorage.getItem("pref-theme")==="light"?document.body.classList.remove("dark"):window.matchMedia("(prefers-color-scheme: dark)").matches&&document.body.classList.add("dark")</script><header class=header><nav class=nav><div class=logo><a href=https://blog.kember.net/ accesskey=h title="Andrew Kember (Alt + H)"><svg xmlns="http://www.w3.org/2000/svg" width="55" height="55" viewBox="0 0 202.02 202.02" style="vertical-align:middle"><g transform="translate(-3.65 -3.93)"><circle style="opacity:1;fill:none;fill-opacity:1;stroke:currentColor;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="104.66" cy="104.94" r="93.01"/></g><g style="display:inline;fill:currentColor;fill-opacity:1;stroke:none"><path d="m242.73 334.58 28.99-2.5-.77 48q-.19 4.8.2 8.45.38 3.26 1.15 5.76.76 2.5 2.5 2.5 1.53.0 2.49-1.93 1.15-2.1 1.73-4.6.76-2.88.96-6.72h8.25q.58 2.68.58 5.95.0 2.69-.58 6.53-.57 3.84-2.5 8.25-1.53 4.61-3.83 7.68-2.12 3.07-4.8 5-2.5 1.91-5.19 2.87t-5.18 1.54q-2.69.38-6.91-1.34-4.04-1.73-8.07-4.04-4.8-2.68-9.98-6.14-4.42 2.88-7.87 5.18-3.08 2.12-6.15 4.04-2.88 1.92-4.03 2.3-.96.38-4.42 1.34-3.45.96-8.44.77-5 0-11.14-2.3-6.14-2.11-12.29-8.07-6.33-6.14-9.02-13.24-2.69-7.3-3.65-13.44-.96-7.3.0-14.4.38-8.26 2.69-15.94 2.11-6.53 6.33-13.44 4.42-6.91 12.48-11.33 8.07-4.41 15.94-3.84 8.06.39 14.4 2.5 7.49 2.5 14.4 7.3zm-19.01 12.28q-5.57.0-9.4 6.15-3.85 6.14-3.85 18.24.0 12.48 3.84 19.2 3.84 6.72 9.41 6.72t9.8-6.72q4.22-6.72 4.22-19.2.0-12.1-4.23-18.24-4.22-6.15-9.79-6.15z" style="font-size:192px" transform="translate(-82.94 -145.69) scale(.6706)" aria-label="a"/><path d="M217.2 420.6h-42.63v-16.14q3.84.2 6.72-.57 2.5-.77 4.41-2.69 2.12-2.11 1.73-6.34v-19.39q.2-6.91.2-14.78.19-8.07.19-16.13.19-18.82.38-41.28l29-12.1v74.12q2.87.19 5.75-.2 2.5-.38 5-.96 2.49-.57 4.41-2.1 3.07-3.08 1.92-6.34-1.15-3.46-8.26-3.46l.77-11.14 43.2-.96q1.73 10.37.77 18.82-.38 3.65-1.54 7.1-.96 3.46-2.88 6.34t-4.99 4.8-7.3 2.3l29 40.13-38.6.96-19.39-23.23q-2.3-1.54-4.03-1.92-1.53-.38-2.69.38-1.15.77-1.15 3.84z" style="font-size:192px" transform="translate(-21.52 -145.16) scale(.6706)" aria-label="k"/></g></svg></a></div><ul id=menu><li><a href=https://blog.kember.net/about/ title=About><span>About</span></a></li><li><a href=https://blog.kember.net/commonplace/ title=Commonplace><span>Commonplace</span></a></li><li><a href=https://blog.kember.net/search/ title="Search (Alt + /)" accesskey=/><span>Search</span></a></li><span class=logo-switches>&nbsp;|
<button id=theme-toggle accesskey=t title="(Alt + T)"><svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg><svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></span></ul></nav></header><main class=main><article class="first-entry home-info"><header class=entry-header><h1>Andrew Kember</h1></header><section class=entry-content><p>Cloud technologist. Wily old man with excellent packing skills.</p></section><footer class=entry-footer><div class=social-icons><a href=https://twitter.com/andrewkember target=_blank rel="noopener noreferrer me" title=Twitter><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 3a10.9 10.9.0 01-3.14 1.53 4.48 4.48.0 00-7.86 3v1A10.66 10.66.0 013 4s-4 9 5 13a11.64 11.64.0 01-7 2c9 5 20 0 20-11.5a4.5 4.5.0 00-.08-.83A7.72 7.72.0 0023 3z"/></svg></a><a href=https://www.linkedin.com/in/andrewkember/ target=_blank rel="noopener noreferrer me" title=Linkedin><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg></a><a href=https://github.com/andrewkember/ target=_blank rel="noopener noreferrer me" title=Github><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg></a></div></footer></article><article class=post-entry><header class=entry-header><h2>GMail Cleanup</h2></header><section class=entry-content><p>Gmail has four tabs of email: Inbox, Social, Promotions and Updates. I’ve trained Gmail to put important messages in the Inbox, but Promotions and Updates are streams of ephemeral information that I don’t want to maintain. I glance at new messages there, and read what I want.
I’m writing a Google Apps Script to regularly archive those email streams.</p></section><footer class=entry-footer><span title='2021-05-16 19:00:00 +0000 UTC'>May 16, 2021</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to GMail Cleanup" href=https://blog.kember.net/posts/2021-05-gmail-cleanup/></a></article><article class=post-entry><header class=entry-header><h2>Pancakes (American-style)</h2></header><section class=entry-content><p>My wife, who’s an accomplished cook and baker, scribbled out a simple recipe to help me make pancakes.
I took that simple instruction and had fun turning it into this monster.</p></section><footer class=entry-footer><span title='2021-03-14 19:00:00 +0000 UTC'>March 14, 2021</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Pancakes (American-style)" href=https://blog.kember.net/posts/2021-03-pancakes/></a></article><article class=post-entry><header class=entry-header><h2>Raspberry Pi temperature monitor</h2></header><section class=entry-content><p>I want to monitor the temperature in all the rooms in my house.
Why? I like comfort and efficiency. If I know the temperature of each room in my house, with periodic measurements…</p></section><footer class=entry-footer><span title='2021-03-13 19:00:00 +0000 UTC'>March 13, 2021</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Raspberry Pi temperature monitor" href=https://blog.kember.net/posts/2021-03-pi-thing/></a></article><article class=post-entry><header class=entry-header><h2>Commonplace book</h2></header><section class=entry-content><p>A commonplace book is a scrapbook of wisdom.
I’ve been hunting around for this concept for a while. Journals are about past events and reflection…</p></section><footer class=entry-footer><span title='2021-03-07 19:00:00 +0000 UTC'>March 7, 2021</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Commonplace book" href=https://blog.kember.net/posts/2021-03-commonplace/></a></article><article class=post-entry><header class=entry-header><h2>Autonomy, mastery, purpose</h2></header><section class=entry-content><p>Motivating people - allowing team members’ intrinsic motivation to flourish - is about granting them…</p></section><footer class=entry-footer><span title='2021-03-04 19:00:00 +0000 UTC'>March 4, 2021</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Autonomy, mastery, purpose" href=https://blog.kember.net/posts/2021-03-autonomy/></a></article><article class=post-entry><header class=entry-header><h2>Star Wars Films UK Classifications</h2></header><section class=entry-content><p>One of my children is playing a Lego Star Wars games, but without having seen any of the films, she’s struggling with context. I had forgotten that the rating certificates were so low:
Title Rating Episode I: The Phantom Menace. Parental guide: Violent. Robots die too, but Binks does not. Episode II: Attack of the Clones. Parental guide: Violent. Lightsabers cauterize. Episode III: Revenge of the Sith. Parental guide: Violent. Death, fear and fried chicken....</p></section><footer class=entry-footer><span title='2015-05-06 19:28:08 +0000 UTC'>May 6, 2015</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Star Wars Films UK Classifications" href=https://blog.kember.net/posts/2015-05-star-wars-films-uk-classifications/></a></article><article class=post-entry><header class=entry-header><h2>Performance reviews at work - make them count</h2></header><section class=entry-content><p>I’ve had performance reviews every year for the last twelve years - it’s part of the job when you’re a full time employee. I’ve been fortunate in getting on well with all of my managers, but some reviews have been rather blah, blah, blah. They’re worst when I’m nervous, or overly optimistic. They’re least useful when my line manager is mildly, generally disapproving or provides vague platitudes. I’ve spent the last decade learning how to improve on that. Here’s what I’ve learnt.
...</p></section><footer class=entry-footer><span title='2014-04-29 19:28:08 +0000 UTC'>April 29, 2014</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Performance reviews at work - make them count" href=https://blog.kember.net/posts/2014-04-performance-reviews-at-work-make-them-count/></a></article><article class=post-entry><header class=entry-header><h2>Spin - Robert Charles Wilson</h2></header><section class=entry-content><p>Engaging and beautifully orchestrated. The plot turns are revealing rather than shocking. Throughout the story, there is a very pleasing linkage between earlier details and later events. Chekhov’s guns are each fired.</p></section><footer class=entry-footer><span title='2014-03-22 19:28:08 +0000 UTC'>March 22, 2014</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Spin - Robert Charles Wilson" href=https://blog.kember.net/posts/2014-03-spin/></a></article><article class=post-entry><header class=entry-header><h2>The Devil's Waters - David L. Robbins</h2></header><section class=entry-content><p>This is a fun, gripping special-ops military adventure. I liked the way Robbins told similar parts of the story from two characters’ perspectives, while still keeping the plot developing and the action going.</p></section><footer class=entry-footer><span title='2014-03-12 19:28:08 +0000 UTC'>March 12, 2014</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to The Devil's Waters - David L. Robbins" href=https://blog.kember.net/posts/2014-03-the-devils-waters/></a></article><article class=post-entry><header class=entry-header><h2>Boneshaker - Cherie Priest</h2></header><section class=entry-content><p>Boneshaker is an intriguing steampunk story with a strong female lead. Character development is full enough to fulfil the purpose of the narrative, without detracting from the pace of this adventure story. Use of steampunk technologies is carefully reined in, with no exciting props dropped in at the last minute to save the day.</p></section><footer class=entry-footer><span title='2013-09-07 19:28:08 +0000 UTC'>September 7, 2013</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Boneshaker - Cherie Priest" href=https://blog.kember.net/posts/2013-09-boneshaker/></a></article><article class=post-entry><header class=entry-header><h2>On The Extinguishing Of URLs</h2></header><section class=entry-content><p>In a dimly lit room that smelled of solder, I peered into a CRT monitor. The Internet was growing up, Textism was a cool blog, but Dean Allen was yet to publish his first F-bomb. Business websites were changing publishing technologies with reckless abandon, and the links the world made to their pages were becoming outdated.
...</p></section><footer class=entry-footer><span title='2013-08-25 19:28:08 +0000 UTC'>August 25, 2013</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to On The Extinguishing Of URLs" href=https://blog.kember.net/posts/2013-08-on-the-extinguishing-of-urls/></a></article><article class=post-entry><header class=entry-header><h2>Decorators: A neat way to modify functions</h2></header><section class=entry-content><p>In Python, decorators are a construction that help reduce boilerplate code, enhance the maintainability of our code and address the separation of concerns. A decorator is a statement just above the function it decorates. Here’s a simple example so you can understand what I mean:
...</p></section><footer class=entry-footer><span title='2012-04-03 19:28:08 +0000 UTC'>April 3, 2012</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Decorators: A neat way to modify functions" href=https://blog.kember.net/posts/2012-04-decorators-a-neat-way-to-modify-functions/></a></article><article class=post-entry><header class=entry-header><h2>Ubuntu home server: Notifications by email</h2></header><section class=entry-content><p>This walkthrough tells you how to provide an email service to daemons on a home server so that it can send emails to a server admin’s Gmail account.
Key: Actions look like this, results look like this and commands you enter on a terminal look like this. Replace [my_username] with your login on this server e.g. andrew. Replace [external_FQDN] with the domain name that you use to access your server from outside your local network....</p></section><footer class=entry-footer><span title='2012-03-16 19:28:08 +0000 UTC'>March 16, 2012</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Ubuntu home server: Notifications by email" href=https://blog.kember.net/posts/2012-03-ubuntu-home-server-notifications-by-email/></a></article><article class=post-entry><header class=entry-header><h2>Sansa clip volume problem</h2></header><section class=entry-content><p>I recently updated my Sandisk Sansa Clip firmware and found that the volume was dramatically reduced.
...</p></section><footer class=entry-footer><span title='2010-07-15 19:28:08 +0000 UTC'>July 15, 2010</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Sansa clip volume problem" href=https://blog.kember.net/posts/2010-07-sansa-clip-volume-problem/></a></article><article class=post-entry><header class=entry-header><h2>Removing Landscape advert from Ubuntu login</h2></header><section class=entry-content><p>To remove the text that says: Graph this data and manage this system at https://landscape.canonical.com/ while keeping the useful system information, edit the script that puts Landscape information into the message of the day (MOTD):
...</p></section><footer class=entry-footer><span title='2009-11-24 19:28:08 +0000 UTC'>November 24, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Removing Landscape advert from Ubuntu login" href=https://blog.kember.net/posts/2009-11-removing-landscape-advert-from-ubuntu-login/></a></article><article class=post-entry><header class=entry-header><h2>Can't run Crashplan desktop under Ubuntu</h2></header><section class=entry-content><p>I’ve installed Crashplan on my Ubuntu server (it installed its own JVM) and now I’m trying to start the Crashplan desktop client using X11 forwarding. I get:
...</p></section><footer class=entry-footer><span title='2009-11-09 19:28:08 +0000 UTC'>November 9, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Can't run Crashplan desktop under Ubuntu" href=https://blog.kember.net/posts/2009-11-can-t-run-crashplan-desktop-under-ubuntu/></a></article><article class=post-entry><header class=entry-header><h2>Batch file comments</h2></header><section class=entry-content><p>In Windows batch files, you can use a double-colon (::) as a comment. I’ve just spend a few hours trying to figure out why my batch file says, “The syntax of the command is incorrect.” when I run it. The answer? I’ve got a :: comment as the last statement after a group of IF statements. Obscure? Yes. Flaky? Certainly. Oh — hang on, it might be because I’ve got the :: before a for statement....</p></section><footer class=entry-footer><span title='2009-09-05 19:28:08 +0000 UTC'>September 5, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Batch file comments" href=https://blog.kember.net/posts/2009-09-batch-file-comments/></a></article><article class=post-entry><header class=entry-header><h2>Google Chrome OS for Non-Techies</h2></header><section class=entry-content><p>As a techie type, my ears pricked up when I heard Google announce their intention to release an operating system. I like noodling around with new software when I get the chance, but my main interest in Google’s Chrome OS is not for me. It’s for people for whom the phrase, “Open Explorer and go to your Documents folder” is filled with intrigue and mystery.
...</p></section><footer class=entry-footer><span title='2009-07-08 19:28:08 +0000 UTC'>July 8, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Google Chrome OS for Non-Techies" href=https://blog.kember.net/posts/2009-07-google-chrome-os-for-non-techies/></a></article><article class=post-entry><header class=entry-header><h2>Nokia developing phone that recharges itself without mains electricity</h2></header><section class=entry-content><p>Nokia developing phone that recharges itself without mains electricity
Radio waves. It charges itself with radio waves. Am I having my leg pulled?</p></section><footer class=entry-footer><span title='2009-06-17 19:28:08 +0000 UTC'>June 17, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Nokia developing phone that recharges itself without mains electricity" href=https://blog.kember.net/posts/2009-06-nokia-developing-phone-that-recharges-itself-without-mains-electricity/></a></article><article class=post-entry><header class=entry-header><h2>Find regular expressions</h2></header><section class=entry-content><p>“Why don’t my regular expressions work with the ‘find’ utility in Linux/Ubuntu/Unix/Cygwin/Posix-environment?”
Short answer: You need -regextype posix-extended
E.g. To find files with either of two file extensions, use: find . -regextype posix-extended -regex &amp;#39;.*\.(xsd|java)&amp;#39;
Want to know the differences between POSIX Extended Regular Expressions and basic ones? Read this excellent resource about regular expressions. Want to test your regular expressions, live, in the browser? Try Regexpal.
Similarly, use egrep instead of grep to enable extended regex functionality and use sed -r instead of sed....</p></section><footer class=entry-footer><span title='2009-04-06 19:28:08 +0000 UTC'>April 6, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Find regular expressions" href=https://blog.kember.net/posts/2009-04-find-regular-expressions/></a></article><article class=post-entry><header class=entry-header><h2>The problem with Truecrypt and Keepass</h2></header><section class=entry-content><p>…Is that there’s no back-door. If I forget the passwords, I’m stuck. I wouldn’t change them for the world – they’re both great pieces of software that I use lots. It’s just that my sieve-for-brain can’t remember the Access Codes. I end up with old Truecrypt volumes, file containers and Keepass databases lying all over the place. Still, they (clearly) don’t contain anything important, because I haven’t missed them.</p></section><footer class=entry-footer><span title='2009-03-17 19:28:08 +0000 UTC'>March 17, 2009</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to The problem with Truecrypt and Keepass" href=https://blog.kember.net/posts/2009-03-the-problem-with-truecrypt-and-keepass/></a></article><article class=post-entry><header class=entry-header><h2>Sterilising water for feeding babies - is boiling enough?</h2></header><section class=entry-content><p>Our thirteen-week-old daughter had a very slightly dicky tummy, which was enough to make us wonder what the cause might be. One of the first things we needed to rule out was dodgy water in her bottles.
...</p></section><footer class=entry-footer><span title='2008-08-01 19:28:08 +0000 UTC'>August 1, 2008</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Sterilising water for feeding babies - is boiling enough?" href=https://blog.kember.net/posts/2008-08-sterilising-water-for-feeding-babies-is-boiling-enough/></a></article><article class=post-entry><header class=entry-header><h2>Bash prompt</h2></header><section class=entry-content><p>I always forget how to make my bash prompt just the way I like it, so here it is for posterity. In ~/.bashrc:
...</p></section><footer class=entry-footer><span title='2008-07-29 19:28:08 +0000 UTC'>July 29, 2008</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Bash prompt" href=https://blog.kember.net/posts/2008-07-bash-prompt/></a></article><article class=post-entry><header class=entry-header><h2>REISUB - the gentle Linux restart</h2></header><section class=entry-content><p>According to Lifehacker a frozen Linux system that’s not responding to the Ctrl-Alt-Delete three-finger-salute can be restarted more safely than by pushing the power button, which is usually the next step.
...</p></section><footer class=entry-footer><span title='2008-04-23 19:28:08 +0000 UTC'>April 23, 2008</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to REISUB - the gentle Linux restart" href=https://blog.kember.net/posts/2008-04-reisub-the-gentle-linux-restart/></a></article><article class=post-entry><header class=entry-header><h2>Obscure python urllib2 proxy gotcha</h2></header><section class=entry-content><p>This is going to be very obscure, technical and humourless1, so unless you suspect your environment-set http proxy is messing with your python, you can stop reading now.
This is actually two problems, and three solutions.
Problem 1 My python script bombs out with:
File "c:\Python23\lib\urllib2.py", line 506, in proxy_open if '@' in host: TypeError: iterable argument required Solution 1 Your http_proxy environment variable must include http:// at the start....</p></section><footer class=entry-footer><span title='2007-11-21 19:28:08 +0000 UTC'>November 21, 2007</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Obscure python urllib2 proxy gotcha" href=https://blog.kember.net/posts/2007-11-obscure-python-urllib2-proxy-gotcha/></a></article><article class=post-entry><header class=entry-header><h2>Does Alcohol Really Boil Away In Cooking?</h2></header><section class=entry-content><p>“Don’t worry, there’s no alcohol in this red wine sauce — it’s cooked.”
Heard that before? It’s the accepted wisdom about hot food made with alcoholic drinks. However, all is not as it seems — the accepted wisdom is wrong.
In this article, it’s explained that baking or simmering for 15 minutes leaves 40% of the alcohol. 1 hour of cooking leaves 25% of the alcohol.
The raw taste of the alcohol very quickly fades when the food is heated, but a large amount of alcohol remains....</p></section><footer class=entry-footer><span title='2007-09-30 19:28:08 +0000 UTC'>September 30, 2007</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Does Alcohol Really Boil Away In Cooking?" href=https://blog.kember.net/posts/2007-09-does-alcohol-really-boil-away-in-cooking/></a></article><article class=post-entry><header class=entry-header><h2>Creating a self-signed SSL certificate</h2></header><section class=entry-content><p>There are some really long-winded ways of creating a self-signed SSL certificate for Apache out there on the Intarweb. Most I don’t understand well enough to implement, and the few that were simple enough to implement didn’t work.
...</p></section><footer class=entry-footer><span title='2007-09-12 19:28:08 +0000 UTC'>September 12, 2007</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Creating a self-signed SSL certificate" href=https://blog.kember.net/posts/2007-09-creating-a-self-signed-ssl-certificate/></a></article><article class=post-entry><header class=entry-header><h2>Never Smint your dog</h2></header><section class=entry-content><p>I’ve just been reading about Xylitol, the sweetener used in Smint, Orbit Complete and lots of other sweets and chewing gums.
...</p></section><footer class=entry-footer><span title='2007-05-31 19:28:08 +0000 UTC'>May 31, 2007</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Never Smint your dog" href=https://blog.kember.net/posts/2007-05-never-smint/></a></article><article class=post-entry><header class=entry-header><h2>How long should I keep my financial records?</h2></header><section class=entry-content><p>I’ve got stacks and stacks of statements at home, because I thought I had to keep them, for tax assessment purposes, for seven years. I’ve just done a little research, and found that I can recycle rather a lot of that pile.
...</p></section><footer class=entry-footer><span title='2006-06-04 19:28:08 +0000 UTC'>June 4, 2006</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to How long should I keep my financial records?" href=https://blog.kember.net/posts/2006-06-how-long-should-i-keep-my-financial-records/></a></article><article class=post-entry><header class=entry-header><h2>No smoke without... cigarettes?</h2></header><section class=entry-content><p>“Which aspect of cigarette smoking is bad?” Is it the addiction to nicotine, or is it the harmful chemicals that go along with that?</p></section><footer class=entry-footer><span title='2005-08-08 19:28:08 +0000 UTC'>August 8, 2005</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to No smoke without... cigarettes?" href=https://blog.kember.net/posts/2005-08-no-smoke-without-cigarettes/></a></article><article class=post-entry><header class=entry-header><h2>Baptised</h2></header><section class=entry-content><p>I shall be getting baptised this Sunday.
...</p></section><footer class=entry-footer><span title='2005-07-01 19:28:08 +0000 UTC'>July 1, 2005</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Baptised" href=https://blog.kember.net/posts/2005-07-baptised/></a></article><article class=post-entry><header class=entry-header><h2>Three Minute Silence</h2></header><section class=entry-content><p>Yesterday, most of the country paused for three minutes at twelve o’clock to remember the victims of the tsunami and earthquake disaster.
...</p></section><footer class=entry-footer><span title='2005-01-06 19:28:08 +0000 UTC'>January 6, 2005</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Three Minute Silence" href=https://blog.kember.net/posts/2005-01-three-minute-silence/></a></article><article class=post-entry><header class=entry-header><h2>Big plans</h2></header><section class=entry-content><p>The wonderful news of the last few weeks is that Lisa and I have got engaged!</p></section><footer class=entry-footer><span title='2003-04-18 19:28:08 +0000 UTC'>April 18, 2003</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Big plans" href=https://blog.kember.net/posts/2003-04-big-plans/></a></article><article class=post-entry><header class=entry-header><h2>Hair today</h2></header><section class=entry-content><p>I have the tune to “Happy Birthday” in my head today. So far, it’s not a problem, but I would like to replace it with something that doesn’t repeat quite so often. Jingle Bells perhaps.
...</p></section><footer class=entry-footer><span title='2003-03-13 19:28:08 +0000 UTC'>March 13, 2003</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Hair today" href=https://blog.kember.net/posts/2003-03-hair-today/></a></article><article class=post-entry><header class=entry-header><h2>And the beat goes on</h2></header><section class=entry-content><p>Back from Greece, had a great time despite the British weather.</p></section><footer class=entry-footer><span title='2003-03-10 19:28:08 +0000 UTC'>March 10, 2003</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to And the beat goes on" href=https://blog.kember.net/posts/2003-03-and-the-beat-goes-on/></a></article><article class=post-entry><header class=entry-header><h2>Mud</h2></header><section class=entry-content><p>While driving to work, it’s quite amusing to study the contents of passing lorries (extra points for livestock) and we’ve noticed a worrying trend. How can it possibly be economically viable to drive around a lorry full of mud?
...</p></section><footer class=entry-footer><span title='2003-02-27 19:00:00 +0000 UTC'>February 27, 2003</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Mud" href=https://blog.kember.net/posts/2003-02-mud/></a></article><article class=post-entry><header class=entry-header><h2>Diamond Geezers</h2></header><section class=entry-content><p>Hurrah! It’s nearly Christmas!</p></section><footer class=entry-footer><span title='2002-12-23 19:28:08 +0000 UTC'>December 23, 2002</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Diamond Geezers" href=https://blog.kember.net/posts/2002-12-diamond-geezers/></a></article><article class=post-entry><header class=entry-header><h2>Questioning</h2></header><section class=entry-content><p>Kalashnikov surfing
Axe axioms
Posterior politics
—Some people, eh?—</p></section><footer class=entry-footer><span title='2002-12-23 19:28:08 +0000 UTC'>December 23, 2002</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to Questioning" href=https://blog.kember.net/posts/2002-12-questioning/></a></article><article class=post-entry><header class=entry-header><h2>History in song</h2></header><section class=entry-content><p>In the shower: Dire Straits
I go checking out the reports
Digging up the dirt
You get to meet all sorts
In this line of work.
Treachery and treason
There’s always an excuse for it
And when I find the reason
I still can’t get used to it.
...</p></section><footer class=entry-footer><span title='2002-12-20 19:28:08 +0000 UTC'>December 20, 2002</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to History in song" href=https://blog.kember.net/posts/2002-12-history/></a></article><article class=post-entry><header class=entry-header><h2>And there was much rejoicing (Yay!)</h2></header><section class=entry-content><p>Meeting the deadline Buying the last present Eating Robin’s minstrels</p></section><footer class=entry-footer><span title='2002-12-19 19:28:08 +0000 UTC'>December 19, 2002</span>&nbsp;·&nbsp;AK</footer><a class=entry-link aria-label="post link to And there was much rejoicing (Yay!)" href=https://blog.kember.net/posts/2002-12-rejoicing/></a></article><footer class=page-footer><nav class=pagination><a class=next href=https://blog.kember.net/page/2/>Next Page »</a></nav></footer></main><footer class=footer><span>&copy; 2025 <a href=https://blog.kember.net/>Andrew Kember</a></span>
<span>&mdash; Obfuscation is Easy</span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentcolor"><path d="M12 6H0l6-6z"/></svg></a><script>let menu=document.getElementById("menu");menu&&(menu.scrollLeft=localStorage.getItem("menu-scroll-position"),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}),document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{document.body.className.includes("dark")?(document.body.classList.remove("dark"),localStorage.setItem("pref-theme","light")):(document.body.classList.add("dark"),localStorage.setItem("pref-theme","dark"))})</script></body></html>