<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-NZ"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://pmn.nz/feed.xml" rel="self" type="application/atom+xml" /><link href="https://pmn.nz/" rel="alternate" type="text/html" hreflang="en-NZ" /><updated>2026-07-28T11:44:19+00:00</updated><id>https://pmn.nz/feed.xml</id><title type="html">PMN</title><subtitle>Notes, books, experiments, and other useful nonsense.
</subtitle><entry><title type="html">How to Install the Latest Version of Python on the Raspberry Pi</title><link href="https://pmn.nz/blog/2021/06/02/How-to-install-the-latest-Python-on-the-Raspberry-Pi/" rel="alternate" type="text/html" title="How to Install the Latest Version of Python on the Raspberry Pi" /><published>2021-06-02T00:00:00+00:00</published><updated>2021-06-02T00:00:00+00:00</updated><id>https://pmn.nz/blog/2021/06/02/How%20to%20install%20the%20latest%20Python%20on%20the%20Raspberry%20Pi</id><content type="html" xml:base="https://pmn.nz/blog/2021/06/02/How-to-install-the-latest-Python-on-the-Raspberry-Pi/"><![CDATA[<p>I love tinkering with Raspberry Pis, but one annoying thing about <a href="https://www.raspberrypi.org/software/">Raspberry Pi OS</a>, previously called Raspbian, is that it does not always ship with the latest version of Python.</p>

<p><em>Archive note: This 2021 guide targets Python 3.9.5 and an older Raspberry Pi OS release. Package names and installation advice may have changed.</em></p>

<p>To install Python 3.9.5, we have to build it from source. Here are the steps I followed.</p>

<h2 id="build">Build</h2>
<p>To get started, open the terminal and install the dependencies:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt-get update

<span class="nb">sudo </span>apt-get <span class="nb">install</span> <span class="nt">-y</span> build-essential libbz2-dev libdb5.3-dev libexpat1-dev libffi-dev libgdbm-dev liblzma-dev libncurses5-dev libncursesw5-dev libreadline6-dev libsqlite3-dev libssl-dev tk-dev zlib1g-dev 
</code></pre></div></div>

<p>Now we download the latest version of Python using <em>wget</em>. At this time, the newest version is Python-3.9.5. You can check the listings from the ftp site <a href="https://www.python.org/ftp/python/">here</a>:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
</code></pre></div></div>

<p>Extract the files with <em>tar</em>:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tar </span>xf Python-3.9.5.tar.xz
</code></pre></div></div>

<p>Enter extracted directory and compile. Running 4 simultaneous jobs should be good for the Pi 3/4 with the <em>make</em> command:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd </span>Python-3.9.5
./configure <span class="nt">--prefix</span><span class="o">=</span>/usr/local/opt/python-3.9.5
make <span class="nt">-j</span> 4
</code></pre></div></div>
<h2 id="install">Install</h2>
<p>Now install with:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>make altinstall
</code></pre></div></div>

<p>You can now remove the files that you downloaded and unpacked:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ..
<span class="nb">sudo rm</span> <span class="nt">-r</span> Python-3.9.5
<span class="nb">rm </span>Python-3.9.5.tar.xz
</code></pre></div></div>

<p>Create an alias for your newly installed Python in your <em>.bashrc</em> file.
Open the <em>.bashrc</em> file with your chosen editor, vim, nano, etc. I’ll use nano in this example:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nano ~/.bashrc
</code></pre></div></div>
<p>Add the following at the end of the file:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">alias </span><span class="nv">python</span><span class="o">=</span>/usr/local/opt/python-3.9.5/bin/python3.9
</code></pre></div></div>

<h2 id="run">Run</h2>
<p>Restart your terminal or reload bash:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>. ~/.bashrc
</code></pre></div></div>

<p>Verify your Python version:</p>
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python <span class="nt">--version</span>
</code></pre></div></div>
<p>and you should get:</p>
<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>Python 3.9.5
</code></pre></div></div>
<p>That’s it! Now you should be ready to start building your next cool project with the latest version of Python on your Raspberry Pi.
Happy hacking :-)</p>]]></content><author><name></name></author><category term="productivity" /><summary type="html"><![CDATA[I love tinkering with Raspberry Pis, but one annoying thing about Raspberry Pi OS, previously called Raspbian, is that it does not always ship with the latest version of Python.]]></summary></entry><entry><title type="html">The Unreasonable Power of Webhooks</title><link href="https://pmn.nz/blog/2021/03/11/The-Unreasonable-Power-of-Webhooks/" rel="alternate" type="text/html" title="The Unreasonable Power of Webhooks" /><published>2021-03-11T00:00:00+00:00</published><updated>2021-03-11T00:00:00+00:00</updated><id>https://pmn.nz/blog/2021/03/11/The%20Unreasonable%20Power%20of%20Webhooks</id><content type="html" xml:base="https://pmn.nz/blog/2021/03/11/The-Unreasonable-Power-of-Webhooks/"><![CDATA[<p>Webhooks are powerful. By themselves, they are relatively simple but can be an integral part of very complex systems. The key to their power is the modularity of systems. A lot of services we use work together with other services to get the job done.</p>

<p>Say you have an online store. You may use one service for your storefront, another service for processing payments, another for generating invoices, accounting, reporting, tracking errors, support tickets, etc. Unless you use a service that does it all, you may need a simple way to connect these parts of your store. Webhooks can help with that.</p>

<p>At their core, webhooks are signals: callbacks made with an HTTP request. They announce an event or state from one system to one or more others. They are like the long axons in the brain that carry signals from one region to another. Although the signals may not contain much data, they can represent a lot of information and get a lot done.</p>

<p>What makes webhooks great is that they are relatively simple to implement and utilise instead of APIs or sockets. Webhooks are event-driven, which makes them useful for a lot of things, but not all.</p>

<h3 id="example-time">Example time</h3>
<p>Let’s say that every time someone places an order in your store, you want to update a dashboard that you’ve set up. 
Now, let’s say someone has just placed an order for $41.99 (so close!), and their invoice number is 01023. We’ll call the values Amount and Invoice.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Amount = $41.99
Invoice = 01023
Key = ultra-SeCrEtE-key
</code></pre></div></div>
<p>You’ll notice I added a ‘Key’ there. Using some key or token is one way of ensuring that the message originated from a source you trust.</p>

<p>The request sent from your storefront application to your dashboard app may look something like this, depending on how you chose to send it:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://yourdashboard.app/orders?Amount=$41.99&amp;Invoice=01023&amp;Key=ultra-SeCrEtE-key
</code></pre></div></div>
<p>And that’s it. Your dashboard is updated every time there is an order placed. The simplicity of the webhook makes it a great way to connect different services. The complexities of the services used are hidden behind the simple structure of the interaction between the services using webhooks.</p>]]></content><author><name></name></author><category term="productivity" /><summary type="html"><![CDATA[Webhooks are powerful. By themselves, they are relatively simple but can be an integral part of very complex systems. The key to their power is the modularity of systems. A lot of services we use work together with other services to get the job done.]]></summary></entry><entry><title type="html">I have no idea</title><link href="https://pmn.nz/blog/2019/09/12/I-have-no-idea/" rel="alternate" type="text/html" title="I have no idea" /><published>2019-09-12T00:00:00+00:00</published><updated>2019-09-12T00:00:00+00:00</updated><id>https://pmn.nz/blog/2019/09/12/I-have-no-idea</id><content type="html" xml:base="https://pmn.nz/blog/2019/09/12/I-have-no-idea/"><![CDATA[<p>This website doesn’t have any tracking or analytics set up. I have no idea who’s reading or where they are coming from. I think this is fine.</p>

<p>By focusing on the process of documenting content and communicating ideas, I get better at it and I’m intrinsically motivated to do more of it. I’ve gained, and continue to gain, a lot of value from the work that other people have put out there and I feel obligated to make some kind of contribution.</p>

<p>I recently finished <a href="/books/#ultra-learning" title="my thoughts on Ultra-learning book">Ultralearning</a>, and it fits brilliantly with my commitment to being a lifelong learner. I am definitely applying some of its techniques. Today, it is important to become good at whatever you do, not only for your own sake but also for the people directly or indirectly affected by your work.</p>]]></content><author><name></name></author><category term="productivity" /><summary type="html"><![CDATA[This website doesn’t have any tracking or analytics set up. I have no idea who’s reading or where they are coming from. I think this is fine.]]></summary></entry><entry><title type="html">Making small changes</title><link href="https://pmn.nz/blog/2019/08/18/Making-Small-Changes/" rel="alternate" type="text/html" title="Making small changes" /><published>2019-08-18T11:40:00+00:00</published><updated>2019-08-18T11:40:00+00:00</updated><id>https://pmn.nz/blog/2019/08/18/Making%20Small%20Changes</id><content type="html" xml:base="https://pmn.nz/blog/2019/08/18/Making-Small-Changes/"><![CDATA[<p>I’ve just finished reading James Clear’s book, <a href="https://jamesclear.com/atomic-habits">Atomic Habits</a>, and I found it quite <a href="/books/#atomic-habits" title="my thoughts on Atomic Habits">brilliant</a>.
One of its biggest lessons is the power of small changes and how they compound over time. I’m paraphrasing here:</p>
<blockquote>
  <p>You get what you repeat. Time will magnify it.</p>
</blockquote>

<p>I love this idea. It’s one more thing I’m going to be deliberate about in my workflow.</p>

<p>I wrote so many notes on this book, it almost felt like I was quoting every sentence! No matter, I will go through the notes and post my full review on <a href="https://saccader.com">Saccader</a>.</p>]]></content><author><name></name></author><category term="productivity" /><summary type="html"><![CDATA[I’ve just finished reading James Clear’s book, Atomic Habits, and I found it quite brilliant. One of its biggest lessons is the power of small changes and how they compound over time. I’m paraphrasing here: You get what you repeat. Time will magnify it.]]></summary></entry><entry><title type="html">Panashe’s Panache Panacea</title><link href="https://pmn.nz/blog/2019/08/04/Panashe's-panache-panacea/" rel="alternate" type="text/html" title="Panashe’s Panache Panacea" /><published>2019-08-04T11:40:00+00:00</published><updated>2019-08-04T11:40:00+00:00</updated><id>https://pmn.nz/blog/2019/08/04/Panashe&apos;s-panache-panacea</id><content type="html" xml:base="https://pmn.nz/blog/2019/08/04/Panashe&apos;s-panache-panacea/"><![CDATA[<p>Well, I’ve decided to spruce things up a bit.</p>

<h2 id="panashes-panache---panashes-panache-panacea">Panashe’s panache -&gt; Panashe’s Panache Panacea</h2>
<p>I’m really making this my space. As in a space that’s mine. So I’ve gone further down the rabbit hole and added another noun to the title. I’m not sure if or when this train will stop, but I’m too far gone now.</p>

<h2 id="fails">Fails</h2>
<p>As much as I like to share what’s worked and all things bright and beautiful, I think it’s important to share my <a href="/fails/">fails</a>. There are quite a few of them. I’ve linked them in the sidebar and I’ll keep updating the list as I go. It will continue to grow, no doubt.</p>

<h2 id="going-dark">Going dark</h2>
<p>I’ve also decided to throw in a new coat of paint on the site that’s slightly darker and easier on the eyes. Hopefully it looks better.</p>]]></content><author><name></name></author><category term="update" /><summary type="html"><![CDATA[Well, I’ve decided to spruce things up a bit.]]></summary></entry><entry><title type="html">Tools as extensions of the mind</title><link href="https://pmn.nz/blog/2018/04/24/Tools-as-extensions-of-the-mind/" rel="alternate" type="text/html" title="Tools as extensions of the mind" /><published>2018-04-24T01:00:00+00:00</published><updated>2018-04-24T01:00:00+00:00</updated><id>https://pmn.nz/blog/2018/04/24/Tools-as-extensions-of-the-mind</id><content type="html" xml:base="https://pmn.nz/blog/2018/04/24/Tools-as-extensions-of-the-mind/"><![CDATA[<p>Philosophers have long speculated that our minds are not just in our brains. They are embodied, which is to say that our bodies form part of our minds. Our bodies are not merely peripheral components for input and output. They do some processing too. They release chemicals and process signals, some of which are interpreted in the brain as complex feelings while others remain below the threshold of consciousness. Shockingly, <em>most</em> of the processes in our bodies fall below this threshold. Consciousness really is just the tip of the iceberg, if that.</p>

<p>Andy Clark, David Chalmers, and others take this idea further with the <a href="https://www.amazon.com/Supersizing-Mind-Embodiment-Cognitive-Philosophy-ebook/dp/B004MDLRQW/ref=mt_kindle?_encoding=UTF8&amp;me=">Extended Mind</a> theory. It says that objects in the external environment can also form part of the mind, and that tools can be considered part of our cognitive apparatus. This is fascinating, and it ties in nicely with some things I’ve read lately.</p>

<p>This idea is not new, and Clark and his collaborators acknowledge that. Richard Dawkins’ idea of the <a href="https://www.amazon.com/Extended-Phenotype-Oxford-Landmark-Science/dp/0198788916/ref=asap_bc?ie=UTF8">Extended Phenotype</a> comes to mind. Although it is different from the Extended Mind, it has a familiar ring to it. Dawkins explores the idea that genetic expression is not limited to animal bodies but extends to the things animals do and make in the environment. Think of beavers, their dams, and the effects those dams have. The dam is an extended genetic trait that alters the environment and is subject to natural selection, much like an organ attached to the animal. Genes most likely shape the beaver’s drive to build a dam. Or give one.</p>

<p>Back to minds. One study demonstrated that the <a href="https://www.journals.uchicago.edu/doi/10.1086/691462">mere presence of a mobile phone lowers cognitive capacity</a>, even when the phone is not in use. The Extended Mind offers one possible explanation: the brain treats the phone and its capabilities as part of its computational space. It knows roughly what the phone can do and would rather delegate those tasks while directing the steps needed to reach the desired outcome. Phones connect us to the internet, search engines, encyclopedias, calculators, GPS, and all sorts of apps that can outperform the brain at specific tasks with very little cognitive effort.</p>

<p>This made me think about the tools we use in daily life as parts of our minds, and whether seeing them that way would change which tools we choose and how we use them. These tools can give us superpowers, but they can also weaken some natural cognitive abilities. Like muscles and many other systems in the body, if you do not use an ability, you lose it, or its neurons are recruited for another job. It makes me think about <a href="https://en.wikipedia.org/wiki/Learned_helplessness">learned helplessness</a>, our reliance on tools, and the fact that <a href="https://fee.org/resources/i-pencil/">no one really knows how to make anything</a>. Of course, progress is built this way, with competencies stacked on other competencies.</p>

<p>I was not deliberate about the tools I used or how I used them. After considering this, I am starting to think more carefully about both.</p>]]></content><author><name></name></author><category term="mind" /><category term="development" /><summary type="html"><![CDATA[Philosophers have long speculated that our minds are not just in our brains. They are embodied, which is to say that our bodies form part of our minds. Our bodies are not merely peripheral components for input and output. They do some processing too. They release chemicals and process signals, some of which are interpreted in the brain as complex feelings while others remain below the threshold of consciousness. Shockingly, most of the processes in our bodies fall below this threshold. Consciousness really is just the tip of the iceberg, if that.]]></summary></entry><entry><title type="html">Welcome to Panashe’s panache!</title><link href="https://pmn.nz/blog/2017/06/01/welcome/" rel="alternate" type="text/html" title="Welcome to Panashe’s panache!" /><published>2017-06-01T02:35:14+00:00</published><updated>2017-06-01T02:35:14+00:00</updated><id>https://pmn.nz/blog/2017/06/01/welcome</id><content type="html" xml:base="https://pmn.nz/blog/2017/06/01/welcome/"><![CDATA[<p><em>eyes rolling</em> My name you see… Very well then, I’ll let myself out.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[eyes rolling My name you see… Very well then, I’ll let myself out.]]></summary></entry></feed>