<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Finnian Anderson</title>
    <link>https://finnian.io/</link>
    <description>Recent content on Finnian Anderson</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Wed, 11 Mar 2026 18:16:39 +1300</lastBuildDate><atom:link href="https://finnian.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Home Assistant waters my plants!</title>
      <link>https://finnian.io/blog/home-assistant-waters-my-plants/</link>
      <pubDate>Wed, 11 Mar 2026 18:16:39 +1300</pubDate>
      
      <guid>https://finnian.io/blog/home-assistant-waters-my-plants/</guid>
      <description>Some readers will know, but most will not, that I am a bit of a self-confessed foodie. I enjoy cooking, but especially so when others get enjoyment from it. Be it friends, family, or neighbours, and sometimes all three, I’m always up for putting something together.
Food isn’t what this post is about, but it’s the underlying motivation for much of the things I talk about, mingled with a healthy dose of nerdism.</description>
    </item>
    
    <item>
      <title>Integrating Facebook&#39;s new WYSIWYG editor &#39;Lexical&#39; with ActionText</title>
      <link>https://finnian.io/blog/lexical-integration-actiontext-rails/</link>
      <pubDate>Sat, 04 Mar 2023 20:26:39 +1300</pubDate>
      
      <guid>https://finnian.io/blog/lexical-integration-actiontext-rails/</guid>
      <description>I spent today getting Facebook&amp;rsquo;s new WYSIWYG editor &amp;ldquo;Lexical&amp;rdquo; working with Rails &amp;amp; ActionText. The process was fairly straightforward, but I ran into some issues along the way which I wanted to document.
First off, there&amp;rsquo;s a live demo here: https://lexical-actiontext-demo.onrender.com/
The demo uses bog-standard Rails with esbuild and simply swaps out the de-facto Trix editor for a Stimulus controller that sets up Lexical. There&amp;rsquo;s no toolbar, so you&amp;rsquo;ll need to use keyboard shortcuts (CMD+B, CMD+I etc) to get the formatting to work.</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://finnian.io/about/</link>
      <pubDate>Fri, 03 Mar 2023 20:40:14 +1300</pubDate>
      
      <guid>https://finnian.io/about/</guid>
      <description>What do I do? I am a keen sailor and software engineer with extensive experience, primarily with React Native and Ruby on Rails.
I currently work as a Software Engineer at The Lookout Way which keeps me busy with a beautiful Rails monolith.
I am dedicated to the projects I work on and love to work within passionate, motivated teams. If you&amp;rsquo;d like a hand with a project or just want to say hi, please get in touch.</description>
    </item>
    
    <item>
      <title>From Paperclip to Active Storage at scale</title>
      <link>https://finnian.io/blog/from-paperclip-to-active-storage-at-scale/</link>
      <pubDate>Sat, 26 Nov 2022 21:54:47 +0000</pubDate>
      
      <guid>https://finnian.io/blog/from-paperclip-to-active-storage-at-scale/</guid>
      <description>I was until recently working on a Ruby on Rails project as part of my day job, which used Paperclip for attaching files within the application. With Paperclip being deprecated in May 2018, it was high time we moved to an alternative.
Active Storage was added to Rails 5.2 in April 2018 and having used it in other projects, I was confident it was the right choice for us.
These articles really helped us out with the migration, read them a few times:</description>
    </item>
    
    <item>
      <title>Hotwire in the real world.</title>
      <link>https://finnian.io/blog/hotwire-in-the-real-world/</link>
      <pubDate>Wed, 15 Dec 2021 07:08:15 +0000</pubDate>
      
      <guid>https://finnian.io/blog/hotwire-in-the-real-world/</guid>
      <description>I&amp;rsquo;ve recently been working on a new project at work which utilises Rails and Hotwire.
There&amp;rsquo;s lots of articles out there about getting started with Hotwire in Rails but I couldn&amp;rsquo;t find much in the way of how to architect a Rails app in this way or how to run it in production, so this is a bit of a brain dump on how we&amp;rsquo;ve done things, what we learnt along the way, plus some things we don&amp;rsquo;t like.</description>
    </item>
    
    <item>
      <title>View Components, Storybook and Tailwind: The Holy Trinity?</title>
      <link>https://finnian.io/blog/view-components-storybook-tailwind-the-holy-trinity/</link>
      <pubDate>Sun, 29 Aug 2021 03:38:15 +0000</pubDate>
      
      <guid>https://finnian.io/blog/view-components-storybook-tailwind-the-holy-trinity/</guid>
      <description>In this post, I&amp;rsquo;m going to cover the use of some popular open-source technologies, that when combined together provide an extremely powerful developer experience. This will be orientated towards Rails, but it should be possible to swap out View Components with something else for your stack.
Introduction Before we get started, it may be useful to note that I&amp;rsquo;ve annotated the sections with their relevant commits in this project&amp;rsquo;s repository where applicable.</description>
    </item>
    
    <item>
      <title>What Happened to My Blog?</title>
      <link>https://finnian.io/blog/what-happened-to-my-blog/</link>
      <pubDate>Thu, 11 Mar 2021 15:21:16 +1300</pubDate>
      
      <guid>https://finnian.io/blog/what-happened-to-my-blog/</guid>
      <description>Yesterday (March 10th), the server which my old blog was hosted on got melted. Non, les données contenues dans les serveurs de SBG2 ne seront vraisemblablement pas récupérables.
Mais si vous utilisez le Backup FTP #OVH, vos sauvegardes sont dans un autre datacenter. (Les photos sont des pompiers) https://t.co/tRonks8qIw pic.twitter.com/EL5BcMjbc7
&amp;mdash; xgarreau (@xgarreau) March 10, 2021 To clarify, my VPS was being hosted in SBG1 which was right next door to the the building which caught fire (SBG1).</description>
    </item>
    
    <item>
      <title>Uploading files to S3 with React Native and Ruby on Rails</title>
      <link>https://finnian.io/blog/uploading-files-to-s3-react-native-ruby-on-rails/</link>
      <pubDate>Fri, 18 Sep 2020 23:34:02 +0000</pubDate>
      
      <guid>https://finnian.io/blog/uploading-files-to-s3-react-native-ruby-on-rails/</guid>
      <description>I&#39;ve recently been working on a top secret React Native project, powered by a Rails backend deployed to Heroku.
The app allows users to upload images/videos to our backend as part of one of the flows. Originally, I was using a multipart/form-data request to upload the data + files directly to our backend, which would then upload them to S3.
This approach has a couple of main disadvantages:
Heroku timeouts will abort the request if it takes longer than 30s (can happen if uploading lots of, or big files) it increases the load on your backend This post will be specifically talking about AWS S3 but GCP has a Signed URLs feature too.</description>
    </item>
    
    <item>
      <title>Building FleetReach - Introduction</title>
      <link>https://finnian.io/blog/building-fleetreach-introduction/</link>
      <pubDate>Sat, 25 Apr 2020 19:27:19 +0000</pubDate>
      
      <guid>https://finnian.io/blog/building-fleetreach-introduction/</guid>
      <description>Introduction This is the first post in a series that I plan on writing, which will cover the build and (hopefully!) launch of a project I&amp;rsquo;ve been working on lately – FleetReach.
The other day, I was working on a project when I suddenly realised I had absolutely zero interest in it; I was coding for the sake of coding. Now, there&amp;rsquo;s nothing inherently wrong with that, but I think one should have an interest in one&amp;rsquo;s own side projects.</description>
    </item>
    
    <item>
      <title>New Zealand update</title>
      <link>https://finnian.io/blog/new-zealand-update/</link>
      <pubDate>Tue, 21 May 2019 21:19:10 +0000</pubDate>
      
      <guid>https://finnian.io/blog/new-zealand-update/</guid>
      <description>It&amp;rsquo;s been a while since I blogged last, 238 days to be precise 😳
This post is going to be a bit different to my usual ones. I&amp;rsquo;m going to fill it with what I&amp;rsquo;ve been up to for the last 18 months or so, when I arrived in New Zealand.
Back at the end of November 2017, my family and I flew out of the UK, travelled for 24 hours and finally landed in Christchurch, New Zealand to start a new chapter of our lives.</description>
    </item>
    
    <item>
      <title>Invoking OpenFaaS serverless functions from Siri</title>
      <link>https://finnian.io/blog/invoking-openfaas-serverless-functions-from-siri/</link>
      <pubDate>Tue, 25 Sep 2018 10:00:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/invoking-openfaas-serverless-functions-from-siri/</guid>
      <description>With the advent of iOS 12, the Workflow app has been replaced with Shortcuts which is the new app for creating custom shortcuts. In iOS 12, they can also be triggered by custom phrases in Siri.
I wanted to see what Shortcuts is capable of doing so I challenged myself:
Create a shortcut which allows the user to select a function from an OpenFaaS instance and run it with custom input</description>
    </item>
    
    <item>
      <title>Deploying a Vue PWA to Now</title>
      <link>https://finnian.io/blog/deploying-a-vue-pwa-to-now/</link>
      <pubDate>Sat, 04 Aug 2018 23:11:48 +0000</pubDate>
      
      <guid>https://finnian.io/blog/deploying-a-vue-pwa-to-now/</guid>
      <description>There are lots of strange things in that title. Vue? PWA? Now? Let&amp;rsquo;s break it down.
tl;dr I made a PWA using the Star Wars API and it&amp;rsquo;s pretty quick: swapi.finnian.app
VueJS Vue is a relatively new front end JavaScript framework. To quote their documentation:
Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable.</description>
    </item>
    
    <item>
      <title>ColoriseBot: three months on</title>
      <link>https://finnian.io/blog/colorisebot-three-months-on/</link>
      <pubDate>Sun, 21 Jan 2018 21:55:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/colorisebot-three-months-on/</guid>
      <description>For DockerCon EU in Copenhagen back in October, Oli Callaghan and I developed a Twitter bot backed by OpenFaaS with help from Alex Ellis.
How it works Just tweet a black &amp;amp; white photo to @colorisebot!
What happened next? The bot was a great success during the conference but soon dropped off afterwards. Then, half way through November, Matthew Hughes wrote an article on The Next Web showing off ColoriseBot.</description>
    </item>
    
    <item>
      <title>Colourising Video with OpenFaaS Serverless Functions</title>
      <link>https://finnian.io/blog/colourising-video-with-openfaas-serverless-functions/</link>
      <pubDate>Fri, 20 Oct 2017 21:41:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/colourising-video-with-openfaas-serverless-functions/</guid>
      <description>Introduction In a previous post I talked about how to deploy serverless functions to an OpenFaaS cluster with ease. This post expands on this to show how we deployed a Machine Learning algorithm to colourise black &amp;amp; white videos using OpenFaaS. We presented the end result of this at DockerCon EU 2017 in the Community Theatre in Copenhagen.
In the beginning After DockerCon in April of this year, I spotted this post on Mashable with some really cool examples of colourised photos from World War Two.</description>
    </item>
    
    <item>
      <title>SSL with Docker Swarm, Let&#39;s Encrypt and Nginx</title>
      <link>https://finnian.io/blog/ssl-with-docker-swarm-lets-encrypt-and-nginx/</link>
      <pubDate>Thu, 27 Jul 2017 23:02:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/ssl-with-docker-swarm-lets-encrypt-and-nginx/</guid>
      <description>A couple of weeks ago, Let&amp;rsquo;s Encrypt announced that support for wildcard certificates was coming in Jan 2018 which got me and my devops friends very excited. Currently with LE, you have to specify all the domains (including www) you want to include in the certificate which is really annoying. With wildcard certificates, this limitation will be gone and you&amp;rsquo;ll be able to create one certificate for all the different subdomains.</description>
    </item>
    
    <item>
      <title>Rapid development with Node.js and Docker</title>
      <link>https://finnian.io/blog/rapid-development-with-node-js-and-docker/</link>
      <pubDate>Tue, 18 Jul 2017 07:19:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/rapid-development-with-node-js-and-docker/</guid>
      <description>I have quite a few Nodejs repos on GitHub and until now I&amp;rsquo;ve not migrated any of them to Docker because I didn&amp;rsquo;t really know how. The other day I had a ping on Twitter about the URL shortener I helped complete early this year, so I decided that now was the time to work out the best way to do it:
@developius didn&amp;#39;t you guys dockerize your URL shortener?</description>
    </item>
    
    <item>
      <title>Ship Serverless Functions to your Docker Swarm with OpenFaaS</title>
      <link>https://finnian.io/blog/ship-serverless-functions-to-your-docker-swarm-with-faas/</link>
      <pubDate>Mon, 01 May 2017 07:51:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/ship-serverless-functions-to-your-docker-swarm-with-faas/</guid>
      <description>Open Functions as a Service or OpenFaaS (lead by Alex Ellis) is a really neat way of implementing serverless functions with Docker. You can build out functions in any programming language and then deploy them to your existing Docker Swarm.
In this post we&amp;rsquo;ll look at an experimental CLI for making that even easier
Below is a quick example of how easy this is to do.
How it works This diagram gives an overview of how the OpenFaaS function package, the Docker image, and the faas-cli deploy command fit together.</description>
    </item>
    
    <item>
      <title>DockerCon 2017 - highlights &amp; experiences</title>
      <link>https://finnian.io/blog/dockercon-2017-highlights-and-experiences/</link>
      <pubDate>Fri, 21 Apr 2017 05:09:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/dockercon-2017-highlights-and-experiences/</guid>
      <description>So, DockerCon! It turns out that building cool stuff gets you places. Back in 2016, I built a Docker Swarm from 5 Raspberry Pis by following Captain Alex Ellis’ tutorial and then went on to create two different visualisations for the swarm to demonstrate real time load balancing. This was picked up by Alex who got in touch soon after with the amazing news that Docker wanted to invite me to DockerCon17 in Austin, TX!</description>
    </item>
    
    <item>
      <title>TweetDock at DockerCon</title>
      <link>https://finnian.io/blog/tweetdock-at-dockercon/</link>
      <pubDate>Tue, 18 Apr 2017 08:23:52 +0000</pubDate>
      
      <guid>https://finnian.io/blog/tweetdock-at-dockercon/</guid>
      <description>A couple of weeks before DockerCon 2017, Victor Coisne asked me whether I would like to create a demo for the DockerCon museum. Having built a hardware gauge with two dials already, it wasn’t going to be very hard to build another! This time, instead of showing load on a swarm, I hooked the dials up to the Twitter Search API to monitor the usage of #DockerCon on Twitter in real time.</description>
    </item>
    
    <item>
      <title>How and why I migrated from Wordpress to Ghost</title>
      <link>https://finnian.io/blog/how-and-why-i-migrated-from-wordpress-to-ghost/</link>
      <pubDate>Fri, 17 Feb 2017 10:31:33 +0000</pubDate>
      
      <guid>https://finnian.io/blog/how-and-why-i-migrated-from-wordpress-to-ghost/</guid>
      <description>To be honest, it wasn&amp;rsquo;t Wordpress that was the issue. Having all my content spread across the web wasn&amp;rsquo;t really working very well anymore so I decided to take the plunge and migrate fxapi.co.uk to finnian.io/blog. To start with, I thought I&amp;rsquo;d just move the entire site to it&amp;rsquo;s new home on my server but I ended up changing my mind entirely and started using Ghost.
Why? I love how hackable Ghost is - writing custom themes is such a breeze compared to Wordpress.</description>
    </item>
    
    <item>
      <title>My programming story... so far</title>
      <link>https://finnian.io/blog/my-programming-story-so-far/</link>
      <pubDate>Thu, 19 Jan 2017 22:06:14 +0000</pubDate>
      
      <guid>https://finnian.io/blog/my-programming-story-so-far/</guid>
      <description>Early days When I was 12, I was given a Raspberry Pi. For the first couple of days, it was really fun. After I had browsed the web for a while and played a bit of Minecraft, it sat in it&amp;rsquo;s box for a few months. I really had no idea what to do with it. That was until I discovered that I could build a website with it.
Wow, that was cool.</description>
    </item>
    
    <item>
      <title>How does my stuff work?</title>
      <link>https://finnian.io/blog/how-does-my-stuff-work/</link>
      <pubDate>Fri, 13 Jan 2017 03:58:44 +0000</pubDate>
      
      <guid>https://finnian.io/blog/how-does-my-stuff-work/</guid>
      <description>I have a bit of a complex set up with all my sites and services, mainly due to using a multitude of different tools and languages to deploy different things. Currently, I have one main OVH server which most of my stuff is hosted on, including different database engines, Node.js and PHP apps.
Static sites The first thing that traffic comes into contact with on my server is Nginx. It serves as an ultra lightweight traffic &amp;lsquo;handler&amp;rsquo;, whereupon it routes the incoming request to the appropriate location.</description>
    </item>
    
    <item>
      <title>Dockering with cardboard</title>
      <link>https://finnian.io/blog/dockering-with-carboard/</link>
      <pubDate>Tue, 22 Nov 2016 21:13:58 +0000</pubDate>
      
      <guid>https://finnian.io/blog/dockering-with-carboard/</guid>
      <description>Although the PiGlow visualisation of CPU usage was pretty, we reckoned we could go a couple of steps further and integrate a much more complete tangible solution - a hardware-driven load monitor dashboard.
Made of cardboard.
This was to be driven by two high torque servos (Ben had them lying around) which would rotate according to whichever performance indicator we chose. Servos are not, of course, very good pointers so with a trusty craft knife to the fore we re-purposed some Pi packaging into a cardboard user interface.</description>
    </item>
    
    <item>
      <title>Visualising Docker on Pi with PiGlow</title>
      <link>https://finnian.io/blog/visualising-dockerpi-with-piglow/</link>
      <pubDate>Sun, 20 Nov 2016 21:16:56 +0000</pubDate>
      
      <guid>https://finnian.io/blog/visualising-dockerpi-with-piglow/</guid>
      <description>In my last post I described how I set up a 5-strong Raspberry Pi Docker swarm. It wasn&amp;rsquo;t long before I realised I wanted some ambient way to see how they were performing which a) didn&amp;rsquo;t involve staring at a screen and b) would wind up the cat.
Luckily my friend Ben was round and he&amp;rsquo;s quite into tangible stuff so after rummaging in a few dusty boxes for inspiration we found a PiGlow and wondered if that would do the trick.</description>
    </item>
    
    <item>
      <title>Raspberry Pi Swarm</title>
      <link>https://finnian.io/blog/raspberry-pi-swarm/</link>
      <pubDate>Sat, 19 Nov 2016 00:39:53 +0000</pubDate>
      
      <guid>https://finnian.io/blog/raspberry-pi-swarm/</guid>
      <description>A couple of weeks ago, a friend of mine reminded me about Docker. Docker is a containerisation platform which allows you to deploy different systems very quickly and efficiently on the same host machine. Not only that, you can put several Docker hosts together in order to create a swarm. It&amp;rsquo;s like VMs, but cooler.
Having followed a fantastic tutorial by the Docker Captain, Alex Ellis, I had Docker running on one of my Pies in under an hour.</description>
    </item>
    
    <item>
      <title>Git directory server vulnerability</title>
      <link>https://finnian.io/blog/git-directory-server-vulnerability/</link>
      <pubDate>Thu, 25 Aug 2016 06:17:57 +0000</pubDate>
      
      <guid>https://finnian.io/blog/git-directory-server-vulnerability/</guid>
      <description>&lt;p&gt;Do you use git to manage your site and or server files? In my opinion, this is undoubtably a good way to run things but you need to make sure it&amp;rsquo;s secure. Just try going to &lt;a href=&#34;http://yoursite.com/.git/config&#34;&gt;yoursite.com/.git/config&lt;/a&gt;. If you haven&amp;rsquo;t secured your server properly, you will see the configuration file for your git repository. Not good, huh? Not only could an attacker reveal lots of information about your code base including where the upstream server is, I believe they could possibly get the entire source. This would allow the attacker to see exactly how the site works and be able to exploit it very easily.&lt;/p&gt;
&lt;p&gt;Now, the good news. It&amp;rsquo;s an easy fix!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Gold DoE Expedition</title>
      <link>https://finnian.io/blog/gold-doe-expedition/</link>
      <pubDate>Thu, 18 Aug 2016 09:57:44 +0000</pubDate>
      
      <guid>https://finnian.io/blog/gold-doe-expedition/</guid>
      <description>&lt;p&gt;I recently undertook the expedition phase of my Gold &lt;a href=&#34;http://www.dofe.org/&#34;&gt;Duke of Edinburgh&lt;/a&gt; in a Canadian open canoe. The team and I paddled from just outside Thetford all the way down to Cambridge on the River Thet, the Little Ouse, the Great Ouse and finally, the Cam.&lt;/p&gt;
&lt;p&gt;For the expedition, we needed to have an &amp;ldquo;aim&amp;rdquo;. This could be anything from photographing the team at checkpoints to measuring the water PH levels. My team opted to photograph wildlife along the way and due to this, I took along my Nikon Coolpix P610 because it featured GPS - something I thought would be useful when it came to showing where the photos were taken! The camera also had a &amp;ldquo;logging&amp;rdquo; mode which allowed logging of it&amp;rsquo;s location, speed and altitude, every &lt;code&gt;n&lt;/code&gt; number of seconds for &lt;code&gt;x&lt;/code&gt; amount of time. I set it to every 30s for 12 hours each morning before we left so that I could see our precise route.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Drones, Zeros and Cake</title>
      <link>https://finnian.io/blog/drones-zeros-and-cake/</link>
      <pubDate>Mon, 27 Jun 2016 22:37:52 +0000</pubDate>
      
      <guid>https://finnian.io/blog/drones-zeros-and-cake/</guid>
      <description>We all love drones. We all love cake. And we all love Raspberry Pi. What better way to spend an afternoon than to kick up at my mate Ben&amp;rsquo;s house, borrow his faster internet and combine all of those things.
We started the day by wrapping a Pi Zero and camera module in excessive amounts of electrical tape and sticking it to Ben&amp;rsquo;s 250-class racing drone. Sounds cool huh? Not only did it work amazingly well, it didn&amp;rsquo;t impact the performance of the quad at all.</description>
    </item>
    
    <item>
      <title>RStudio Server</title>
      <link>https://finnian.io/blog/rstudio-server/</link>
      <pubDate>Thu, 16 Jun 2016 23:43:20 +0000</pubDate>
      
      <guid>https://finnian.io/blog/rstudio-server/</guid>
      <description>&lt;p&gt;My father, &lt;a href=&#34;http://dataknut.io&#34; target=&#34;_blank&#34;&gt;Ben Anderson&lt;/a&gt; plays with numbers. As his Twitter bio says &amp;ldquo;big data, small data, open data, any data&amp;rdquo;. He works with &lt;a href=&#34;https://www.r-project.org/&#34; target=&#34;_blank&#34;&gt;R&lt;/a&gt; a lot and has been persuading me to take a look at it. I&amp;rsquo;ve held off until now because I&amp;rsquo;m all for analysing data in &lt;a href=&#34;https://finnian.io/blog/tag/real-time/&#34; target=&#34;_blank&#34;&gt;real time&lt;/a&gt; (primarily using delightful JS libraries such as &lt;a href=&#34;http://www.chartjs.org&#34; target=&#34;_blank&#34;&gt;Chart.js&lt;/a&gt; and &lt;a href=&#34;https://d3js.org&#34; target=&#34;_blank&#34;&gt;D3.js&lt;/a&gt;). As far as I understood it, R is geared towards static data analysis and because of that, is able to utilise the hardware it runs on to optimise computations. Dad has an SSD in his Mac which reduces the time to load data substantially, but he also makes use of the R package &lt;a href=&#34;https://github.com/Rdatatable/data.table/wiki&#34; target=&#34;_blank&#34;&gt;data.table&lt;/a&gt;. This library makes manipulation of data ridiculously fast as it stores it all in RAM.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Cyber Centurion competition at Bletchley Park</title>
      <link>https://finnian.io/blog/cyber-centurion-competition-at-bletchley-park/</link>
      <pubDate>Tue, 26 Apr 2016 05:30:25 +0000</pubDate>
      
      <guid>https://finnian.io/blog/cyber-centurion-competition-at-bletchley-park/</guid>
      <description>Today, the guys at SubjectRefresh and I competed in the Cyber Centurion Security Challenge at The National Museum of Computing at Bletchley Park.
The day started with an introduction by the organisers and a brief explanation of how the day was going to work. Then it was off to the marquee to get started securing the machines we were provided with. There were two Windows VMs (server 2008 and 8.1) and one Ubuntu 14.</description>
    </item>
    
    <item>
      <title>Announcing a brand new app - Healthy!</title>
      <link>https://finnian.io/blog/brand-new-app-healthy/</link>
      <pubDate>Tue, 01 Mar 2016 07:22:15 +0000</pubDate>
      
      <guid>https://finnian.io/blog/brand-new-app-healthy/</guid>
      <description>Note: Healthy was launched about 5 months ago but I&amp;rsquo;ve only just got around to writing this post.
On Nov 3, 2015, SubjectRefresh spent a day in London at the annual Open Data Institute Summit, where we gave two presentations on our Young Rewired State Festival of Code 2015 Refresh app.
We were also challenged to create an application using open data that gets people to eat healthier. We came up with Healthy, a calculator that tells you &amp;ldquo;the time to burn&amp;rdquo; of a particular food.</description>
    </item>
    
    <item>
      <title>A URL shortener written in ten minutes</title>
      <link>https://finnian.io/blog/a-url-shortener-written-in-ten-minutes/</link>
      <pubDate>Sat, 27 Feb 2016 22:43:15 +0000</pubDate>
      
      <guid>https://finnian.io/blog/a-url-shortener-written-in-ten-minutes/</guid>
      <description>Friday night, or more specifically, Friday February 26th 2016 at 19:45:57, I was having a group Skype call with Alexander Craggs, Miles Budden and Tom Emmerson when Alexander started complaining that all the URL shorteners out there were becoming too long. To clarify, URL shorteners were becoming bloated. He suddenly said, &amp;ldquo;Let&amp;rsquo;s make a URL shortener&amp;rdquo;. The situation escalated very rapidly and within 5 minutes, Miles had bought the domain subr.</description>
    </item>
    
    <item>
      <title>Refresh - a revision tool with a difference!</title>
      <link>https://finnian.io/blog/refresh/</link>
      <pubDate>Sun, 21 Feb 2016 07:21:14 +0000</pubDate>
      
      <guid>https://finnian.io/blog/refresh/</guid>
      <description>&lt;p&gt;During the &lt;a href=&#34;http://.yrs.io&#34; target=&#34;_blank&#34;&gt;YRS&lt;/a&gt; &lt;a href=&#34;http://www.yrs.io/festival&#34; target=&#34;_blank&#34;&gt;Festival of Code&lt;/a&gt; 2015, &amp;ldquo;&lt;a href=&#34;http://twitter.com/subjectrefresh&#34; target=&#34;_blank&#34;&gt;SubjectRefresh&lt;/a&gt;&amp;rdquo; and I created a revision app called Refresh. It&amp;rsquo;s built using Node.js and works by scraping the exam board website (currently only CIE) for the PDF for the syllabus the user has requested. The PDF is then converted to HTML using a PDF to HTML converter and is then shunted through Node&amp;rsquo;s &lt;a href=&#34;http://npmjs.com/package/cheerio&#34; target=&#34;_blank&#34;&gt;Cheerio&lt;/a&gt; library. We then find out where the relevant information in the HTML is and send that off to &lt;a href=&#34;https://www.textrazor.com&#34; target=&#34;_blank&#34;&gt;TextRazor&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Real time PHP applications</title>
      <link>https://finnian.io/blog/real-time-php-applications/</link>
      <pubDate>Tue, 02 Feb 2016 08:30:53 +0000</pubDate>
      
      <guid>https://finnian.io/blog/real-time-php-applications/</guid>
      <description>&lt;p&gt;I admit it, I&amp;rsquo;ve started writing all of my new projects in Node.js. Why? Because most of them are lightweight and I want them to be real time.&lt;/p&gt;
&lt;p&gt;PHP &lt;em&gt;can&lt;/em&gt; be a real pain when it comes to doing anything remotely real time. First off, it&amp;rsquo;s designed to execute as quickly as possible and send a response to the client, which is of course good. However, what is bad about that is that it doesn&amp;rsquo;t stay alive - it does its stuff and then dies. Node.js on the other hand runs in a single process, which stays running all the time. This is perfect for real time applications because you can fire off an event to Node.js and then (say, using &lt;a href=&#34;http://socket.io&#34; target=&#34;_blank&#34;&gt;Socket.io&lt;/a&gt;) update the client, instantly. To do this in PHP would be nigh on impossible, due to its &amp;rsquo;execute and die&amp;rsquo; style.&lt;/p&gt;
&lt;p&gt;Yes, Node.js is excellent if you want to take the plunge and jump right into JavaScript, but what if you don&amp;rsquo;t?&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Creating an OS X Installer</title>
      <link>https://finnian.io/blog/creating-an-os-x-installer/</link>
      <pubDate>Fri, 04 Sep 2015 03:47:17 +0000</pubDate>
      
      <guid>https://finnian.io/blog/creating-an-os-x-installer/</guid>
      <description>&lt;p&gt;I recently had to create an installer for an AppleScript app (I know but I couldn&amp;rsquo;t be bothered to learn Swift and the craziness of Xcode) and it drove me round the twist looking for a decent tutorial that I could understand so that I could create my installer.&lt;/p&gt;
&lt;p&gt;This post is primarily a reference for me but as it will need to be pretty basic for me to understand, maybe someone else will be able to follow it too.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The problems with not developing for mobile</title>
      <link>https://finnian.io/blog/the-problems-with-not-developing-for-mobile/</link>
      <pubDate>Tue, 25 Aug 2015 08:43:32 +0000</pubDate>
      
      <guid>https://finnian.io/blog/the-problems-with-not-developing-for-mobile/</guid>
      <description>&lt;p&gt;&lt;span style=&#34;font-weight:400;&#34;&gt;Mobile means a small device which therefore has a small screen. On these small screens, websites designed for larger devices can look unpleasing to the eye and are completely inappropriate for the device and by extension, the user.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;font-weight:400;&#34;&gt;Some websites have brilliant mobile versions of their sites, but some don’t. If you go to these websites that aren’t designed for mobile on your phone then you will probably find it difficult to use the site. This is a big problem as it deters users from using the site and therefore potential revenue will be lost!&lt;/span&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Post-Birthday Hack: Arduino GPS</title>
      <link>https://finnian.io/blog/post-birthday-hack-arduino-gps/</link>
      <pubDate>Tue, 14 Apr 2015 01:19:11 +0000</pubDate>
      
      <guid>https://finnian.io/blog/post-birthday-hack-arduino-gps/</guid>
      <description>For my birthday, Ben James gave me some geeky goodies including a uBlox NEO-6M GPS module.
As soon as I had a moment, I rigged it up to my Arduino and uploaded this sketch from ArduinoTronics.
The pin connection layout is this:
GPS RX -&amp;gt; Arduino digital 4 (D4)
GPS TX -&amp;gt; Arduino digital 3 (D3)
GPS GND -&amp;gt; Arduino GND
GPS VCC -&amp;gt; Arduino 5V
It took a while to get a fix (find a satellite) but after it had, I received this over the serial port!</description>
    </item>
    
    <item>
      <title>The Pi-Powered Hamster Hunter Part 4: Reflections</title>
      <link>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-4-reflections/</link>
      <pubDate>Fri, 03 Apr 2015 00:46:17 +0000</pubDate>
      
      <guid>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-4-reflections/</guid>
      <description>&lt;h1&gt;&lt;b&gt;Reflections&lt;/b&gt;&lt;/h1&gt;
At the end of our project our initial objectives had now been added to and matured through the development process.
&lt;h2&gt;&lt;b&gt;&lt;b&gt;Objectives at the start&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
The objective of this project was to build an all terrain vehicle which could be used for various applications and controlled from anywhere in the world. We wanted it to be operational in all circumstances, which meant being able to operate in low light/pitch dark conditions and being able to traverse all terrain. It was essential for the user to be able to see from the ReCoRVVA’s point of view in real time. We also wanted the ReCoRVVA to be able to sense when it was about to crash and automatically stop to avoid collisions.
&lt;h2&gt;&lt;b&gt;&lt;b&gt;Objectives at the end&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
The ReCoRVVA is controllable from anywhere in the world, the user can see in real time where they were driving and knows the environmental conditions they were operating in. The ReCoRVVA is able to automatically stop if it senses an obstacle.
&lt;p&gt;We have also shown that it can be adaptable to any circumstance and any user or their medium of control.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The Pi-Powered Hamster Hunter Part 3: Putting it all together</title>
      <link>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-3-putting-it-all-together/</link>
      <pubDate>Tue, 31 Mar 2015 00:32:36 +0000</pubDate>
      
      <guid>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-3-putting-it-all-together/</guid>
      <description>Assembling the components ![The final model](/blog/content/images/2017/01/14-1.jpg) The first prototypes we put together used an Arduino, and it was with these first prototypes that we had many problems with the motors.
The first thing we tried was to run each motor from one of the Arduino’s digital pins. They were 5v motors, and the digital pins on the Arduino supplied 5v each, so we assumed the motors would run. We wrote then uploaded a simple drive script to the Arduino.</description>
    </item>
    
    <item>
      <title>The Pi-Powered Hamster Hunter Part 2: Tech development</title>
      <link>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-2-tech-development/</link>
      <pubDate>Sat, 28 Mar 2015 01:38:19 +0000</pubDate>
      
      <guid>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-2-tech-development/</guid>
      <description>&lt;h1&gt;&lt;b&gt;Technical development&lt;/b&gt;&lt;/h1&gt;
&lt;h2&gt;Hardware&lt;/h2&gt;
&lt;h3&gt;Core controller&lt;/h3&gt;
This was to be the brains of the ReCoRVVA. Its task was to control all the peripherals on the ReCoRVVA, to manage all communications with the client and, by extension, the user. It needed to be capable of handling multiple tasks at once and be able to use multiple electrical inputs/outputs to control the physical aspects of the ReCoRVVA. It also needed to be customisable, so that we could quickly and easily change things, e.g. software or, if we had a accident, interchangeable controllers. It needed to be able to support the data inflows/outflows shown in figures 4 and 5.
&lt;ol&gt;
	&lt;li&gt;
&lt;h4&gt;Arduino&lt;/h4&gt;
The first option we explored was to use an Arduino (a programmable microcontroller with a number of inputs/outputs) to control the physical aspects of the ReCoRVVA, such as the motors, servos and ping sensor, but we eventually found ways to do all these through the  Raspberry Pi, and we found that the communication between the  Raspberry Pi and the Arduino, which was required, was far too unstable to be used.
&lt;p&gt;Despite the fact that it didn&amp;rsquo;t make it into the final model, it was a valuable tool for prototyping, developing and testing our ideas before applying them to the robot.&lt;/li&gt;
&lt;li&gt;&lt;/p&gt;
&lt;h4&gt;Raspberry Pi&lt;/h4&gt;
The  Raspberry Pi was always intended for handling the communication functions but after the testing of the Arduino described above, it was eventually used to control everything. A Pi is used as the server and drive computer on the robot, and if the robot is to be controlled by a wiimote or Xbox controller, another Pi is required as the client for those.&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    
    <item>
      <title>The Pi-Powered Hamster Hunter Part 1: The Beginning</title>
      <link>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-1-the-beginning/</link>
      <pubDate>Mon, 23 Mar 2015 22:59:00 +0000</pubDate>
      
      <guid>https://finnian.io/blog/the-pi-powered-hamster-hunter-part-1-the-beginning/</guid>
      <description>Last year, I and two of my friends, Ben James and Angus Ledesma, decided to create a Raspberry Pi powered robot for a Silver CREST project. I posted an overview of the project last July and have finally got around to converting the CREST report to a blog-friendly write-up!
Background The ReCoRVVA will help and assist people in many different ways; as the name suggests, it is designed to be used for many purposes.</description>
    </item>
    
    <item>
      <title>RAM Card Fun</title>
      <link>https://finnian.io/blog/ram-card-fun/</link>
      <pubDate>Wed, 25 Feb 2015 03:01:12 +0000</pubDate>
      
      <guid>https://finnian.io/blog/ram-card-fun/</guid>
      <description>My ageing hand-me-down MacBook (late 2007 - 1GB RAM) has been serving me well - it ended it&amp;rsquo;s OS X life in the Autumn of last year and has been running Linux Mint 17 ever since - we call it the MintBook. Linux has been a saviour. Making the shift was easy enough (having used GNU/Linux before - mainly in Raspberry Pis and web servers), the ease of software development has been greatly improved (bar Xcode of course!</description>
    </item>
    
    <item>
      <title>Twilio Python Programming</title>
      <link>https://finnian.io/blog/twilio-python-programming/</link>
      <pubDate>Thu, 05 Feb 2015 04:53:20 +0000</pubDate>
      
      <guid>https://finnian.io/blog/twilio-python-programming/</guid>
      <description>&lt;p&gt;Whilst coding in Cambridge with the &lt;a href=&#34;http://raspberrypi.org&#34; target=&#34;_blank&#34;&gt;Raspberry Pi Foundation&lt;/a&gt; for the &lt;a href=&#34;http://festical.yrs.io&#34; target=&#34;_blank&#34;&gt;YRS Festival of Code&lt;/a&gt;, I was lucky enough to be able to glean some knowledge from &lt;a href=&#34;http://phalt.co/&#34; target=&#34;_blank&#34;&gt;Paul Hallet&lt;/a&gt;, who introduced me to &lt;a href=&#34;http://flask.pocoo.org/&#34; target=&#34;_blank&#34;&gt;Flask&lt;/a&gt; &amp;amp; &lt;a href=&#34;http://twilio.com&#34; target=&#34;_blank&#34;&gt;Twilio&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;We take care of the messy telecom hardware and expose a globally available cloud API that developers can interact with to build intelligent and complex communications systems. As your app&#39;s usage scales up or down, Twilio automatically scales with you. You only pay for what you use - no contracts, no shenanigans.&lt;/blockquote&gt;
&lt;em&gt;from Twilio.com&lt;/em&gt;
My &lt;a href=&#34;http://www.raspberrypi.org/wp-content/uploads/2014/08/Screenshot-2014-08-11-20.35.13-500x394.png&#34; target=&#34;_blank&#34;&gt;team&lt;/a&gt; didn&#39;t actually use Twilio in the &lt;a href=&#34;http://hacks.youngrewiredstate.org/events/FOC2014/ace-your-place&#34; target=&#34;_blank&#34;&gt;project&lt;/a&gt;, however, it did stick in my mind...</description>
    </item>
    
    <item>
      <title>IoT GoPro</title>
      <link>https://finnian.io/blog/iot-gopro/</link>
      <pubDate>Tue, 27 Jan 2015 09:54:48 +0000</pubDate>
      
      <guid>https://finnian.io/blog/iot-gopro/</guid>
      <description>&lt;p&gt;I have a GoPro Hero 4 and love it. However, I was looking for something new to do with it. I thought about a drone maybe (too expensive), some kind of boat (too much at stake).
Then, the other day, I was gazing at a Raspberry Pi and my GoPro, trying to think of something. Then I realised I had everything I needed, right in the palm of my hand.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Arduino OLED display</title>
      <link>https://finnian.io/blog/arduino-oled-display/</link>
      <pubDate>Sun, 21 Sep 2014 06:09:17 +0000</pubDate>
      
      <guid>https://finnian.io/blog/arduino-oled-display/</guid>
      <description>Quite a while ago I saw a 0.96&amp;quot; OLED display for sale on Ebay for £4.45 and thought it sounded a good price. It arrived and I was quite busy at the time so it went into my modules drawer.
The other day I was tidying up and ordering my electronics and rediscovered it. So today I decided to see if I could get it to work with my Arduino Duemilanove.</description>
    </item>
    
    <item>
      <title>Kymera wand &#43; RPi = MAGIC</title>
      <link>https://finnian.io/blog/kymera-wand-rpi-magic/</link>
      <pubDate>Sat, 20 Sep 2014 02:19:09 +0000</pubDate>
      
      <guid>https://finnian.io/blog/kymera-wand-rpi-magic/</guid>
      <description>&lt;p&gt;Today I had some free time&amp;hellip; so I decided to use my favorite gadget for something.&lt;/p&gt;
&lt;p&gt;A fellow &lt;a href=&#34;http://engineercheer.wordpress.com&#34; target=&#34;_blank&#34;&gt;blogger&lt;/a&gt; mentioned to me that I should use a Pi and a Kymera wand to get the Pi to control things&amp;hellip; like magic.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Heating Control</title>
      <link>https://finnian.io/blog/heating-control/</link>
      <pubDate>Thu, 11 Sep 2014 10:11:04 +0000</pubDate>
      
      <guid>https://finnian.io/blog/heating-control/</guid>
      <description>&lt;p&gt;For my ongoing heating project I needed to be able to communicate with different nodes around the house. Wirelessly.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>ReCoRVVA  - a Pi powered hamster hunter!</title>
      <link>https://finnian.io/blog/recorvva/</link>
      <pubDate>Mon, 14 Jul 2014 21:00:38 +0000</pubDate>
      
      <guid>https://finnian.io/blog/recorvva/</guid>
      <description>&lt;p&gt;I know I haven&amp;rsquo;t written anything for a while, but I have been doing stuff! My latest project was one I have been doing with &lt;a href=&#34;http://engineercheer.wordpress.com&#34;&gt;Ben James&lt;/a&gt; (the hamster owner) and Angus Ledesma. It was a British Science Association &lt;a href=&#34;http://www.britishscienceassociation.org/crest&#34;&gt;CREST&lt;/a&gt; project and our idea was to build a shoe-box sized remotely controlled robot vehicle equipped with a range of sensors such as temperature, humidity, distance and a camera.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Email from Gmail</title>
      <link>https://finnian.io/blog/email-from-gmail/</link>
      <pubDate>Wed, 18 Jun 2014 21:54:47 +0000</pubDate>
      
      <guid>https://finnian.io/blog/email-from-gmail/</guid>
      <description>&lt;p&gt;I think it is extremely useful to let your little tub of yumminess into your email (Gmail) account. I thought you might find it interesting and useful aswell!&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
