<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[pesky robot]]></title><description><![CDATA[A. Technostic]]></description><link>http://blog.ibrium.org/</link><image><url>http://blog.ibrium.org/favicon.png</url><title>pesky robot</title><link>http://blog.ibrium.org/</link></image><generator>Ghost 2.20</generator><lastBuildDate>Sun, 21 Jun 2026 22:51:11 GMT</lastBuildDate><atom:link href="http://blog.ibrium.org/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Smoke on the Horizon]]></title><description><![CDATA[<p>This project began life way back before I discovered the Raspberry Pi with the <a href="http://www.picaxe.com/">PICAXE</a> microcontoller and the commonly used DS18B20 1-wire digital temperature thermometer (top-right). </p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.ibrium.org/content/images/2020/03/SensorRig_c1.png" class="kg-image"><figcaption>The completed sensor rig.</figcaption></figure><!--kg-card-end: image--><p>Fast forward to 2017 and I helped my daughter build an Air Quality School Science project using a Raspberry Pi</p>]]></description><link>http://blog.ibrium.org/smoke-on-the-horizon/</link><guid isPermaLink="false">5e227fd6337e0b0366821684</guid><category><![CDATA[Raspberry Pi]]></category><category><![CDATA[DynamoDB]]></category><category><![CDATA[Python]]></category><category><![CDATA[IoT]]></category><dc:creator><![CDATA[Pesky Robot]]></dc:creator><pubDate>Tue, 14 Apr 2020 02:07:00 GMT</pubDate><media:content url="http://blog.ibrium.org/content/images/2020/04/20200301_132325.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://blog.ibrium.org/content/images/2020/04/20200301_132325.jpg" alt="Smoke on the Horizon"><p>This project began life way back before I discovered the Raspberry Pi with the <a href="http://www.picaxe.com/">PICAXE</a> microcontoller and the commonly used DS18B20 1-wire digital temperature thermometer (top-right). </p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.ibrium.org/content/images/2020/03/SensorRig_c1.png" class="kg-image" alt="Smoke on the Horizon"><figcaption>The completed sensor rig.</figcaption></figure><!--kg-card-end: image--><p>Fast forward to 2017 and I helped my daughter build an Air Quality School Science project using a Raspberry Pi Zero.  </p><p>To do this, we added a couple of simple-to-use sensors, the <a href="https://www.sparkfun.com/products/9403">MQ7</a>, which measures carbon monoxide and the <a href="https://www.olimex.com/Products/Components/Sensors/Gas/SNS-MQ135/resources/SNS-MQ135.pdf">MQ135</a> Air Quality sensor.  To convert the data we used a <a href="https://www.adafruit.com/product/856">MCP3008</a> analog-to-digital converter (ADC) mounted on a breadboard.  There are plenty of examples around the web about how to do this but I found this <a href="https://www.instructables.com/id/Wiring-up-a-MCP3008-ADC-to-a-Raspberry-Pi-model-B-/">one</a> pretty helpful.</p><p>After the science fair, the project gathered dust for many months before I added the 16x2 LCD screen and created the python <a href="https://github.com/dev-git/PythonFiles/blob/master/main_sensor.py">code</a> to read the sensor data and display it on the screen.</p><p>Over the summer, I created a <a href="https://aws.amazon.com/dynamodb/">DynamoDB </a>table on Amazon Web Services and modified the code to send the sensor readings every couple of minutes.  DynamoDB is great for IoT projects and with the AWS Free Tier, there is no cost for the first 25GB.</p><p>Next I created a simple <a href="https://ibrium.net/sensorchart.html">web page</a> to display the results.  With everything now working, I mounted the completed circut and left it to capture and record data.</p><!--kg-card-begin: markdown--><p>Then over the New Year period, Australia was devasted by it's worst <a href="https://www.bbc.com/news/world-australia-50951043">bush fires</a> in years.  <img src="http://blog.ibrium.org/content/images/2020/04/eight_col_SKYTOWER.jpg" alt="Smoke on the Horizon" style="float:left; margin:1em; width:50%; height:50%;">  Within a couple of days, the smoke from the fires drifted across the Tasman sea, casting an eerie, orange haze over <a href="https://www.rnz.co.nz/news/national/406707/bushfire-smoke-hangs-over-north-island-again">Auckland</a> and parts of the North Island.<br>
<br>A few days later, I checked the graph and was suitably impressed to observe that with a Pi and a simple sensor, I was able to capture the spike in air pollution from the smoke.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.ibrium.org/content/images/2020/04/image-2.png" class="kg-image" alt="Smoke on the Horizon"><figcaption>Air Quality Graph - Early January 2020</figcaption></figure><!--kg-card-end: image--><p>With this project, I have explored different aspects and applications of the Raspberry Pi.  From sensor reading with the GPIO pins, to hooking up an LCD and intergrating with AWS DynamoDB for an IoT project.  I've learnt a lot along the way and I hope you've enjoyed the read.</p>]]></content:encoded></item><item><title><![CDATA[I Know What You Did Last Summer]]></title><description><![CDATA[<p>With May here and the longer winter evenings ahead I thought I'd make the time to review some fun tech stuff I did last summer.  I've got a spare <a href="https://www.raspberrypi.org/">Raspberry Pi</a> or two so I decided to put them to good use by constructing this simple server rack.  In this</p>]]></description><link>http://blog.ibrium.org/i-know-what-you-did-last-summer/</link><guid isPermaLink="false">5cc4f499d93098263f0bb892</guid><category><![CDATA[Raspberry Pi]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Ghost]]></category><dc:creator><![CDATA[Pesky Robot]]></dc:creator><pubDate>Sat, 04 May 2019 00:34:00 GMT</pubDate><media:content url="http://blog.ibrium.org/content/images/2019/05/Header.PNG" medium="image"/><content:encoded><![CDATA[<img src="http://blog.ibrium.org/content/images/2019/05/Header.PNG" alt="I Know What You Did Last Summer"><p>With May here and the longer winter evenings ahead I thought I'd make the time to review some fun tech stuff I did last summer.  I've got a spare <a href="https://www.raspberrypi.org/">Raspberry Pi</a> or two so I decided to put them to good use by constructing this simple server rack.  In this post, I'll give a quick overview of the hardware used and a breakdown of the different software applications installed. For more detailed instructions of how the software is configured, I've included links to some really helpful sites at the end of the post.</p><p>Let's start at the top.  This a <a href="https://www.raspberrypi.org/products/raspberry-pi-zero/">Raspberry Pi Zero</a>, running Raspbian Stretch OS.  The post you are reading and the entire blog site are hosted on this tiny computer.</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.ibrium.org/content/images/2019/05/image-1.png" class="kg-image" alt="I Know What You Did Last Summer"><figcaption>Raspberry Pi Zero</figcaption></figure><!--kg-card-end: image--><p>On the Pi Zero, I installed and configured the following software packages:</p><ul><li><strong>Ghost</strong> - a fully open source, adaptable platform for building and running a modern online publication</li><li><strong>Node.js</strong> - an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser</li><li><strong>Maria DB</strong> - one of the most popular database servers in the world</li><li><strong>NGINX </strong>- a free, open-source, high-performance HTTP server and reverse proxy</li><li><strong>Supervisor </strong>- a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.</li></ul><p></p><p>In the middle you'll find a <a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-a-plus/">Raspberry Pi 3 Model A+</a>, again running the Raspbian Stretch OS.  For some time now, I've wanted to take a closer look at <a href="https://www.docker.com/">Docker</a> so I was really pleased to discover it will happily run on the newer Raspberry Pis (ARMv7). Installing it was a piece of cake and once it was up and running I created and deployed a couple of simple .NET Core applications.</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.ibrium.org/content/images/2019/05/image-2.png" class="kg-image" alt="I Know What You Did Last Summer"><figcaption>Raspberry Pi 3 Model A+</figcaption></figure><!--kg-card-end: image--><p>On this Pi, I installed the following:</p><ul><li><strong>Docker - </strong>a tool designed to make it easier to create, deploy, and run applications by using containers</li><li><strong>ASP.NET Core / ASP.NET MVC</strong> / <strong>Entity Framework Core / Sqlite</strong>.</li></ul><p></p><p>And finally, at the bottom is a <a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b/">Raspberry Pi 3 Model B</a>, also running the Raspbian Stretch OS.</p><!--kg-card-begin: image--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://blog.ibrium.org/content/images/2019/05/RaspberryPi_1.png" class="kg-image" alt="I Know What You Did Last Summer"><figcaption>Raspberry Pi 3 Model B</figcaption></figure><!--kg-card-end: image--><p>This is a classic LAMP server that hosts my online <a href="https://ibrium.net/">store</a> using the following tools and applications:</p><ul><li><strong>OpenCart -</strong> an online store management system</li><li><strong>Apache - </strong>a<strong> </strong>free and open-source cross-platform web server software</li><li><strong>MySQL - </strong>an open-source relational database management system</li><li><strong>PHP - </strong>a general-purpose programming language originally designed for web development.</li></ul><p>So there you go, I hope you enjoyed the post.  I definitely had lots of fun learning a bunch of new stuff, working with some very cool software and configuring these fantastic low cost Raspberry Pis.</p><p>Thanks to the following sites and blogs: <a href="https://ghostpi.pro/install-and-run-ghost-on-a-raspberry-pi/">Ghostpi</a>, <a href="https://www.hanselman.com/blog/BuildingRunningAndTestingNETCoreAndASPNETCore21InDockerOnARaspberryPiARM32.aspx">Scott Hanselman</a>, <a href="https://blog.alexellis.io/save-and-boost-with-nginx/?r=ghostpi">Alex Ellis</a><strong>, </strong><a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b/">Raspberry Pi foundation</a>...</p><p>And just to make everything <a href="https://www.youtube.com/watch?v=rHdqWkV0XoM">awesome</a>, Lucy and Emmet helped too!</p>]]></content:encoded></item><item><title><![CDATA[Organising your content]]></title><description><![CDATA[Ghost has a flexible organisational taxonomy called tags which can be used to configure your site structure using dynamic routing.]]></description><link>http://blog.ibrium.org/organising-content/</link><guid isPermaLink="false">5cc04ef21b21c3716a839468</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Ghost]]></dc:creator><pubDate>Wed, 24 Apr 2019 11:56:32 GMT</pubDate><media:content url="https://static.ghost.org/v2.0.0/images/organising-your-content.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://static.ghost.org/v2.0.0/images/organising-your-content.jpg" alt="Organising your content"><p>Ghost has a flexible organisational taxonomy called<strong> tags</strong> which can be used to configure your site structure using <strong>dynamic routing</strong>. </p><h1 id="basic-tagging">Basic Tagging</h1><p>You can think of tags like Gmail labels. By tagging posts with one or more keyword, you can organise articles into buckets of related content.</p><p>When you create content for your publication you can assign tags to help differentiate between categories of content. </p><p>For example you may tag some content with  News and other content with Podcast, which would create two distinct categories of content listed on <code>/tag/news/</code> and <code>/tag/weather/</code>, respectively.</p><p>If you tag a post with both <code>News</code> <em>and</em> <code>Weather</code> - then it appears in both sections. Tag archives are like dedicated home-pages for each category of content that you have. They have their own pages, their own RSS feeds, and can support their own cover images and meta data.</p><h1 id="the-primary-tag">The primary tag</h1><p>Inside the Ghost editor, you can drag and drop tags into a specific order. The first tag in the list is always given the most importance, and some themes will only display the primary tag (the first tag in the list) by default. </p><blockquote><em><strong>News</strong>, Technology, Startup</em></blockquote><p>So you can add the most important tag which you want to show up in your theme, but also add related tags which are less important.</p><h1 id="private-tags">Private tags</h1><p>Sometimes you may want to assign a post a specific tag, but you don't necessarily want that tag appearing in the theme or creating an archive page. In Ghost, hashtags are private and can be used for special styling.</p><p>For example, if you sometimes publish posts with video content - you might want your theme to adapt and get rid of the sidebar for these posts, to give more space for an embedded video to fill the screen. In this case, you could use private tags to tell your theme what to do.</p><blockquote><em><strong>News</strong>, #video</em></blockquote><p>Here, the theme would assign the post publicly displayed tags of News - but it would also keep a private record of the post being tagged with #video. In your theme, you could then look for private tags conditionally and give them special formatting. </p><blockquote><em>You can find documentation for theme development techniques like this and many more over on Ghost's extensive <a href="https://docs.ghost.org/api/handlebars-themes/">theme documentation</a>.</em></blockquote><h1 id="dynamic-routing">Dynamic Routing</h1><p>Dynamic routing gives you the ultimate freedom to build a custom publication to suit your needs. Routes are rules that map URL patterns to your content and templates. </p><p>For example, you may not want content tagged with <code>News</code> to exist on: <code>example.com/tag/news</code>. Instead, you want it to exist on <code>example.com/news</code> . </p><p>In this case you can use dynamic routes to create customised collections of content on your site. It's also possible to use multiple templates in your theme to render each content type differently.</p><p>There are lots of use cases for dynamic routing with Ghost, here are a few common examples: </p><ul><li>Setting a custom home page with its own template</li><li>Having separate content hubs for blog and podcast, that render differently, and have custom RSS feeds to support two types of content</li><li>Creating a founders column as a unique view, by filtering content created by specific authors</li><li>Including dates in permalinks for your posts</li><li>Setting posts to have a URL relative to their primary tag like <code>example.com/europe/story-title/</code><br></li></ul><blockquote><em>Dynamic routing can be configured in Ghost using <a href="http://yaml.org/spec/1.2/spec.html" rel="noreferrer nofollow noopener">YAML</a> files. Read our dynamic routing <a href="https://docs.ghost.org/concepts/routing/">documentation</a> for further details.</em></blockquote><p>You can further customise your site using <a href="http://blog.ibrium.org/apps-integrations/">Apps &amp; Integrations</a>.</p>]]></content:encoded></item><item><title><![CDATA[Apps & integrations]]></title><description><![CDATA[There are three primary ways to work with third-party services in Ghost: using Zapier, editing your theme, or using the Ghost API.]]></description><link>http://blog.ibrium.org/apps-integrations/</link><guid isPermaLink="false">5cc04ef01b21c3716a839466</guid><category><![CDATA[Getting Started]]></category><dc:creator><![CDATA[Ghost]]></dc:creator><pubDate>Wed, 24 Apr 2019 11:56:31 GMT</pubDate><media:content url="https://static.ghost.org/v2.0.0/images/app-integrations.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://static.ghost.org/v2.0.0/images/app-integrations.jpg" alt="Apps & integrations"><p>There are three primary ways to work with third-party services in Ghost: using Zapier, editing your theme, or using the Ghost API.</p><h1 id="zapier">Zapier</h1><p>You can connect your Ghost site to over 1,000 external services using the official integration with <a href="https://zapier.com">Zapier</a>.</p><p>Zapier sets up automations with Triggers and Actions, which allows you to create and customise a wide range of connected applications.</p><blockquote><strong>Example</strong>: When someone new subscribes to a newsletter on a Ghost site (Trigger) then the contact information is automatically pushed into MailChimp (Action).</blockquote><p><strong>Here are the most popular Ghost&lt;&gt;Zapier automation templates:</strong> </p><!--kg-card-begin: markdown--><script src="https://zapier.com/apps/embed/widget.js?services=Ghost&container=true&limit=8"></script>
<!--kg-card-end: markdown--><h1 id="editing-your-theme">Editing your theme</h1><p>One of the biggest advantages of using Ghost over centralised platforms is that you have total control over the front end of your site. Either customise your existing theme, or create a new theme from scratch with our <a href="https://docs.ghost.org/api/handlebars-themes/">Theme SDK</a>. </p><p>You can integrate <em>any</em> front end code into a Ghost theme without restriction, and it will work just fine. No restrictions!</p><p><strong>Here are some common examples</strong>:</p><ul><li>Include comments on a Ghost blog with <a href="https://docs.ghost.org/integrations/disqus/">Disqus</a> or <a href="https://docs.ghost.org/integrations/discourse/">Discourse</a></li><li>Implement <a href="https://help.ghost.org/article/89-mathjax">MathJAX</a> with a little bit of JavaScript</li><li>Add syntax highlighting to your code snippets using <a href="https://prismjs.com/">Prism.js</a></li><li>Integrate any dynamic forms from <a href="https://www.google.com/forms/">Google</a> or <a href="https://www.typeform.com/">Typeform</a> to capture data</li><li>Just about anything which uses JavaScript, APIs and Markup.</li></ul><h1 id="using-the-public-api">Using the Public API</h1><p>Ghost itself is driven by a set of core APIs, and so you can access the Public Ghost JSON API from external webpages or applications in order to pull data and display it in other places.</p><blockquote>The Ghost API is <a href="https://docs.ghost.org/api/">thoroughly documented</a> and straightforward to work with for developers of almost any level. </blockquote><p>Alright, the last post in our welcome-series! If you're curious about creating your own Ghost theme from scratch, here are <a href="http://blog.ibrium.org/themes/">some more details</a> on how that works.</p>]]></content:encoded></item></channel></rss>