<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" version="2.0">
<channel>
    <title>Nathaniel Read</title>
    <description>I'm Nathaniel Read, a full-stack software engineer at the BBC with experience developing scalable solutions for web, e-commerce, IoT, smart TV and more. In my spare time I build cool projects, I'm also a University of Hull Computer Science Graduate</description>
    <link>https://nathaniel.work/</link>
    <atom:link href="https://nathaniel.work/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 23 Aug 2025 08:49:22 +0000</pubDate>
    <lastBuildDate>Sat, 23 Aug 2025 08:49:22 +0000</lastBuildDate>
    <webfeeds:icon>https://nathaniel.work/images/icons/n-for-nathaniel.svg</webfeeds:icon>
    <webfeeds:logo>https://nathaniel.work/images/icons/nathaniel-long.svg</webfeeds:logo>
    <webfeeds:cover image="https://nathaniel.work/images/home.jpg" />
    <webfeeds:accentColor>2e9fff</webfeeds:accentColor>
    <webfeeds:related layout="card" target="browser"/>
    

    

      <item>
        <title>Looking back on my time at Sauce</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/sauce.png"/>
        
        <p>After interning at EKM in using C#, I was interested in exploring other tech stacks in addition to the .NET I’d worked in previously. Throughout my first couple of years at University, I’d seen some presentations from some of the team at Sauce about the different tech they’d been working with and ended up talking to them more at a careers event in University, wanting to find out a bit more about what they did.</p>

<p><img src="/images/posts/pictures/sauce/sauce.png" alt="Picture of Desk and a view from a window at C4DI out into the Humber" /></p>

<p>I was especially interested to learn more about the projects they were building with a serverless stack and was invited in for a chat with John and Matt where I was offered an internship with them. Over summer I got to know the tech stack, product and team and was made to feel really at home, with a snazzy office and FUFF (food fridays) each month to go and have lunch out with the company which was a great time to get to know people better.</p>

<p>After completing my summer 2019 internship, I was invited to stay on and work alongside my studies which was great, with 1.5 days in the office each week fitting in alongside my degree, giving me a bit of escape from University work and really useful work experience. I kept working part-time for Sauce up until I finished my degree and have been working with them full-time since.</p>

<p>I’ve worked across projects, the main one being helping to bring Ideal Heating’s new smart heating app vision to market, building and testing out features like schedule management, geolocation and smart home integration to build the best experience for users. It’s been great to see the product as it’s grown from mockups to a fully-functioning platform.</p>

<p><img src="/images/posts/pictures/sauce/halo.png" alt="Heating App Shown on Screen" /></p>

<h5 id="working-in-lockdown">Working in lockdown</h5>

<p>Sauce locked down just before the UK went into national lockdown back in Spring 2020, while I was still working on my final-year modules and dissertation. Some projects hit pause while the nation moved to work from home, but in Sauce all the projects adapted really quickly to working fully remotely, with demos, client meetings and stand-ups moving to video calls. Fortunately, even though I moved back across the Pennines, I was able to keep working from home.</p>

<p>I think the big fear many have with moving to fully remote working is losing the casual conversations that happen during the day where you get to know your team better. In my team, in addition to the normal sprint meetings and daily stand-ups, we had a call with everyone that we could drop in and out of throughout the day, from quick questions about how some logic works to chatting while we worked. This filled the gap left from having chats at desks and on the way to the AeroPress well.</p>

<p>In addition having a weekly quiz for the whole company has been a really good way to connect with people who I don’t work with everyday, with just about everything quizzed by this point - whether it’s remembering your GCSE Geography on how <a href="https://www.bbc.co.uk/bitesize/guides/z74g2sg/revision/1">drainage basins</a> work, or demonstrating your terrible knowledge of early 90s TV shows (big thanks to Mel for making them all!)</p>

<p><img src="/images/posts/pictures/sauce/quiz.png" alt="Quiz Certificate" /></p>

<h5 id="the-tech">The Tech</h5>

<p>I got to play with and learn lots of cool tech during my time at Sauce, from building applications using the Serverless Framework to using CircleCI to continuously test and deploy, which also ended up forming a core part of <a href="/fyp">my dissertation</a>.</p>

<p>From learning my way around the AWS console and using different services for the first time like DynamoDB for large scale data storage and GCP BigQuery for data warehousing, to configuring devices in IoT Core and alarms in CloudWatch to see when services might be experiencing issues.</p>

<p>It was also my first experience working with infrastructure as code, a better way of provisioning and managing services which is especially useful if working in different development and test environments, and making changes in environmental configuration easier to track and deploy. Overall I’ve learned a lot of new technology and had fun while doing it.</p>

<h5 id="tldr">TL;DR</h5>

<p>I’ve really enjoyed the last year and a half working at Sauce and have had nothing but great experiences. I’ve worked with awesome people on really interesting projects. As I move on to the next chapter of my working life, I’m excited for Sauce and the team as they continue to grow and expand even more.</p>
]]></description>
        <pubDate>Fri, 20 Nov 2020 17:30:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2020/11/20/thank-you-sauce</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2020/11/20/thank-you-sauce</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Reflecting on End of Semester 2 - Final Year</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/year3-semester2.png"/>
        
        <p>It’s been a few months since graduating from the University of Hull, moving to working full time at Sauce during the pandemic and making the most of getting outside when it was allowed between the lockdowns.</p>

<p>I still thought it was worth giving my take on the final semester modules from 2019-20, and hope they might be useful to anyone looking to choose their modules now, or who has questions about their final year project.</p>

<h5 id="computer-vision">Computer Vision</h5>

<p>Computer Vision was a challenging module, exploring both the theory behind it, looking at edge detection, feature descriptors, convolutional neural nets and also applying it all to create practical implementations in MATLAB.</p>

<p><img src="/images/posts/pictures/hull-y3s2-review/matlab.png" alt="Computer Vision" /></p>

<p>Using MATLAB was new for me, with the challenges of working out how to process images by designing a pipeline to detect and count starfish in a photoset. There were a variety of variants of the same image, with grain, noise and colour shifts applied and also starfish in different scenarios too.</p>

<p>To solve this challenge, different pipelines had to be built which would run based on the colour detected in the image, so all extreme colours were shifted to be more neutral before searching for regions in an image. In cases where grain was high on images, additional steps were needed, like using a median filter and eroding away unknown regions before drawing on bounding boxes to mark out the final image.</p>

<p>The module was really interesting and provided some cool theoretical understanding. In a world of self-driving cars, understanding how Tesla (and other manufacturers) do object detection is really cool.</p>

<p>Fair warning if you’re looking at taking the module; after completing my pipeline I had a distinct memory of never wanting to see a starfish ever again.</p>

<h5 id="distributed-systems">Distributed Systems</h5>

<p>Distributed Systems was an interesting module and looked at the challenges of building distributed applications covering everything including FaaS/PaaS/IaaS (all the as-a-services) and looking at their advantages and shortcomings.</p>

<p><img src="/images/posts/pictures/hull-y3s2-review/distro.png" alt="Distributed Systems" /></p>

<p>For the practical part of this module, we had to implement a specification to build out a distributed system in .NET Core 3, implementing both a client and server spec and ensuring it complied with the specification.</p>

<p><a href="//www.postman.com/automated-testing/">Postman’s Automated Test Suite</a> came in really useful for building out this application, allowing me to persist authentication tokens generated in a test run and use them in later tests and checking the compliance of my endpoints with the marking criteria.</p>

<h5 id="final-year-project-dissertation-">Final Year Project (Dissertation) 📚</h5>

<p>I developed a system to crowdsource enhanced merchant data using the serverless framework and AWS for my final year project. Enhanced Merchant data is where a merchant name like <code class="language-plaintext highlighter-rouge">POST OFFICE COUNTER LEEDS GBR</code> is converted to <code class="language-plaintext highlighter-rouge">Post Office</code> with a map and icon in your bank’s app.</p>

<p><img src="/images/posts/pictures/hull-y3s2-review/diss.png" alt="Dissertation" /></p>

<p>Currently banks like Monzo, Starling and Up allow users to contribute back their own suggestions and improvements just for themselves and don’t share this data with other banks. This means this data is often broken, wrong or completely missing, especially if overseas.</p>

<p>My solution looked to centralise this, by creating a platform that banks can connect to for accurate merchant data. You can read more about my final year project on the <a href="/fyp">project page here</a>.</p>

<h5 id="concluding">Concluding</h5>

<p>Coronavirus made the final semester a bit interesting, with the whole department having to move online in a matter of days. Assessments mostly moved over really well, and lecturers were available to message whenever we needed them. It wasn’t quite the end of University I pictured (especially with no graduation ceremony either!), but it worked the best it could given the circumstances.</p>

<p>I was incredibly proud to graduate from the University with a first-class degree and a grade average of 87.57%.</p>

<p><br /></p>

<hr />

<p><br /></p>

<p>You can view my previous semester recaps here:</p>

<ul>
  <li><a href="/life/2020/01/27/end-semester1-year3.html">Year 3 - Semester 1</a></li>
  <li><a href="/life/2019/07/30/end-semester2-year2.html">Year 2 - Semester 2</a></li>
  <li><a href="/life/2019/01/07/end-semester1-year2.html">Year 2 - Semester 1</a></li>
  <li><a href="/life/2018/05/16/this-semster.html">Year 1 - Semester 2</a></li>
</ul>
]]></description>
        <pubDate>Sat, 14 Nov 2020 17:30:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2020/11/14/end-semester2-year3</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2020/11/14/end-semester2-year3</guid>
        
        
        <category>life</category>
        
      </item>
    
    

    

      <item>
        <title>Winning at DigiFest Hackathon 2020</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/digifest20.png"/>
        
        <p>Last week I headed down with Dan, Alex and <a href="//harrygwinnell.co.uk">Harry</a> and went to the <a href="//jisc.ac.uk">JISC</a> DigiFest Hackathon at the ICC in Birmingham. After attending <a href="/digifest19">DigiFest</a> and <a href="/can19">CAN</a> last year and having a great time, we thought we’d go along again.</p>

<p>This year the teams were great too, with one group creating a game where you increase in <a href="//en.wikipedia.org/wiki/Experience_point">XP</a> for the better you do academically, two looked at chatbots (one for medical diagnosis and lecture feedback). Another looked at how holograms could work in the classroom.</p>

<p><img src="/images/posts/pictures/digifest20/group.png" alt="Image of Project" /></p>

<h5 id="what-we-set-out-to-do">What we set out to do</h5>

<p>This hackathon we set out to address how to give students formative feedback earlier. The idea turned out even more appropriate during the current <a href="//www.gov.uk/government/topical-events/coronavirus-covid-19-uk-government-response">COVID-19 pandemic</a>, as it means that students could get feedback at a distance from their lecturer automatically, and if built on, give automatic code-improvement suggestions to save lecturers further time.</p>

<p>Our primary motivation was to save lecturers time when marking assessments as if a tutor has to score and run 300 pieces of code individually; it takes significant time away from their daily teaching, researching or time spent producing lecture content. If all the outputs of a solution or API are tested, marking time can be spent instead on providing individual feedback on the overall solution produced.</p>

<h5 id="day-1-travel-and-meet">Day 1: Travel and Meet</h5>

<p>Alex and I caught the train down to Birmingham on Monday afternoon, and met Dan and Harry in Birmingham in the evening, checking into the hotel to talk about what we were going to build over the next two days, and how we’d realise our idea.</p>

<p>After a quick brainstorm, we headed over to <a href="http://www.indianbrewery.com/">The Indian Brewery</a> to meet all the other teams taking part in the hackathon, and the JISC team and apprentices we knew from the previous event. We got to have a chat with the other teams and a catch-up, while we enjoyed some excellent food at the brewery.</p>

<h5 id="day-2-code">Day 2: Code</h5>

<p>Up at 7 am and raring to go, we headed down for a quick breakfast, before heading over to the ICC for 8.30 to get ready to start the hackathon properly. The team split, with me working with Harry who wanted to get some more experience working in React.</p>

<p>Dan and Alex (our DevOps engineer) took the lead on building out the CI pipeline using .NET Core and Docker, building containers for the right type of assessment uploaded and building and exposing the correct ports for the assessment submitted.</p>

<p>The pressure ramped up as we got towards 4 pm when we were to head down to the main event hall at DigiFest to network with the other attendees at the event. We met some interesting people, saw some cool new products on the Microsoft stand, get some stickers from Amazon and network with some industry professionals.</p>

<p><img src="/images/posts/pictures/digifest20/brainstorm.png" alt="Image of Project" /></p>

<p>In the evening JISC took us out for wood-fired pizza at <a href="//ottowoodfired.com/">OTTO Pizza</a>, the meal was great and we pretty much filled the small restaurant with the team. We chatted some more with the hackathon attendees about how their projects were coming along, then headed back for an early night and ready for a busy final day.</p>

<h5 id="day-3-code-more-then-present">Day 3: Code more then present</h5>

<p>Up bright and early again, grabbing breakfast and heading over to the ICC, we knew we didn’t have much time to complete the product and make a presentation. I got on with finishing the front-end while Harry helped Dan and Alex with a weird bug with containers failing, which turned out to be OneDrive overwriting Docker build files.</p>

<p><img src="/images/posts/pictures/digifest20/hullteam.png" alt="Image of Project" /></p>

<p>As the clock ticked down, I got a final version of the presentation together, ready for Harry to present on stage and checked with the projection team that HDCP wouldn’t cause issues with the projector. The presentation went great, and it was great to see what the other teams had been working on too.</p>

<h5 id="the-end-product">The end product</h5>

<p>We won the award for the most market-ready end-product and were pleased with the project that we created, and thought it was an exciting proof-of-concept that could be taken further, and expanded on to help the education field.</p>

<p><img src="/images/projects/onegrade/banner.png" alt="Image of Project" /></p>

<p><a href="//jisc.ac.uk">JISC</a> very kindly covered our costs for the event - and a big thank you to Sue, Paul, Keith and the team for making it all possible. Thanks also to all the other teams in the competition, all the projects pitched were cool. Harry has also done a write up of this event, that you can read <a href="//harrygwinnell.co.uk/jisc-digifest-hackathon-2020/">here</a>.</p>

<h5 id="video">Video</h5>

<center>Here's a quick summary video of our time at the hackathon:</center>

<iframe width="560" height="400" src="https://www.youtube-nocookie.com/embed/mpWaUAHsnzU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

<p><br /></p>

<p><strong>You can read more about how the solution worked on the project page <a href="/projects/oneGrade?from=post">here</a>.</strong></p>
]]></description>
        <pubDate>Fri, 13 Mar 2020 19:25:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2020/03/13/winning-jisc-digifest</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2020/03/13/winning-jisc-digifest</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Hull is on it's way to be a Smart City</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/smartcity.png"/>
        
        <p>Just before Christmas, I went along to the first HullStack, a rebirth of CodePen (which I’ve written about on this blog <a href="/events/2019/01/16/codepen-jan.html">previously</a>), but now with a new name that’s wider than code, and covers the full industry from concept through to implementation.</p>

<p>This time, it was Adam from Hull City Council who was talking about Hull’s journey to become a smart city. It’s a bit of a late blog post write up, but it was a really interesting talk. It’s cool to see how a city approaches implementing a system on such a large scale.</p>

<p><img src="/images/posts/pictures/hull-smartcity/hullstack.png" alt="DESCRIBE" /></p>

<p>Smart Cities are often a buzzword that gets thrown around, much like blockchain, and they’re an area of vast growth. London, Manchester and Liverpool are exploring the path to being smart cities; however, in most areas, development is being led by developers and companies without a lot of buy-in from the local authorities.</p>

<p>Hull is attempting a very different approach and has created a vision to open up their 300 internal services by 2023, and leading smart development from inside the council, and taking the view that if something can be FOI’d, it should be available openly in the first place.</p>

<p>They’re attempting to open up all of Hull, and give developers and entrepreneurs the ability to solve, and create products from technical challenges around their own city.</p>

<p>A big problem that Hull has are bridges, there are 13 of them across the City, and it’s a pretty unique situation to have so many of them close together. At the moment there’s a &gt;24-hour notice period between informing the bridge when they need to open and when they open, the email currently just sits in the bridge operators inbox. These should be available in an API, so it can be consumed by mapping operators to smartly redirect traffic, or inform drivers if bridges are closed, or will be closed when they arrive there and so that blue-light services don’t get stuck at bridges too.</p>

<p>Buses are another big one, and I was reading about it a couple of days ago on GOV.UK <a href="//www.gov.uk/government/collections/bus-open-data-service">here</a>. Bus operators are required by December 2020 to provide live timetable data, and by January 2021 to provide live vehicle location and fare data to the Department for Transport. Hull is working with local bus providers to implement these SIRI (Service Interface for Real-Time Information) feeds early to bring live stop times to Hull’s interchange and increase the accuracy of the signage at all the stops across the area.</p>

<p><img src="/images/posts/pictures/hull-smartcity/community.png" alt="DESCRIBE" /></p>

<p>Around Hull there are 317 scoot loops, these provide data of how many cars drive through a junction in 5 minutes, their average speed, and the direction they’re travelling from and to. You can see how TGFM have a similar API <a href="//data.gov.uk/dataset/fe9b90a8-6ff3-4868-b7a7-55316705524c/gm-scoot-loops">here</a>. Opening this data showing where cars are going, and how many of them at certain times will help reduce that congestion as this data can highlight alternate quieter routes.</p>

<p>Mobile operators provide anonymised data that shows groups of mobile phones moving through the City, and it can give historical patterns for groups moving through. The data will allow the council to see where cycle paths don’t get used for instance, and to put in more infrastructure where people will use it the most. With this data open, it will mean that businesses can open in higher footfall areas, or areas can be improved to attract people back.</p>

<p>Next up CCTV, there are around 360 council-controlled CCTV cameras around the area, including traffic cameras, by using computer vision on these images to produce new statistics that weren’t previously available, like the most common routes for HGV travel. It could also show where buses get held for the longest in bus lane merges, and where road layouts don’t work. Parking has already opened up with live spaces data available <a href="//opendata.hullcc.gov.uk/tr/dataset/parking">here</a>, but they’re looking to create an enhanced mapping of the streets for self-driving cars.</p>

<p><img src="/images/posts/pictures/hull-smartcity/data-first.png" alt="DESCRIBE" /></p>

<p>Through combining all of these in their ‘CityOS’ platform in partnership with <a href="//www.connexin.co.uk/">Connexin</a>, they’re hoping to create a vast network of open data to allow developers to connect to their entire City with APIs.</p>

<p>Their approach to technical development is exciting, as the Hull tax-payer is at the end of the day, the one who will pay for this development. The council want local people to work with them to develop innovative solutions, which Hull can then help the creators tender to other areas like the 342 other UK councils, but securing Hull’s place as the pioneer of fully-connected cities.</p>

<p><a href="//connectedhull.net/blog/behind-scenes-connected-hull">LoRaWAN</a> is significant for Hull too, as they have the largest network in the UK with the City installing base stations, including on the Humber Bridge. The signal has a range of 16km and allows sensors to connect to the internet and into the CityOS platform. The sensors are currently used for <a href="//www.c4di.co.uk/news/connected-humber-monitair-air-quality-project">air quality detection</a>, and smart bins are being <a href="//www.publictechnology.net/articles/news/hull-trial-smart-bins">trialled</a> to provide real-time data on bin use, and save the council money meaning they only need to be emptied when they fill up.</p>

<p>It’s an amazing time of technical revolution to be about for, and I’m intrigued to see what comes next from the City. I’m also really interested for the open-data hackathon that they’re hoping to hold later in the Spring.</p>

<p>Thanks to <a href="//twitter.com/adamjennison">Adam Jennison</a> for presenting, and to Mark, <a href="//twitter.com/hullstack">HullStack</a> and C4DI for running the event!</p>
]]></description>
        <pubDate>Sun, 02 Feb 2020 11:45:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2020/02/02/hull-smart-city</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2020/02/02/hull-smart-city</guid>
        
        
        <category>events</category>
        
      </item>
    
    

      <item>
        <title>End of Semester One - Final Year</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/year3-semester1.png"/>
        
        <p>This is my <em>typically late</em> review of the past semester, it’s hit home now that this is the penultimate one of these that I’ll be writing, and the end of University is starting to feel real now - but the future is exciting.</p>

<p>The past semester has been incredibly busy and hasn’t stopped, but I’ve been up to some cool stuff along the way.</p>

<h5 id="data-mining-and-decision-systems-">Data Mining and Decision Systems 📖</h5>

<p>Data Mining was my favourite module of the semester and looked at what data mining is, how it works, and why it’s incredibly useful. As well as learning the fundamentals of how it works mathematically and how the tech has progressed to use deep neural networks from the simple neurons used historically, we applied the techniques to a real-world context in the coursework. Through Jupyter notebooks and using <a href="//pandas.pydata.org/">pandas</a> to clean the data and spot patterns, building different types of models using <a href="//scikit-learn.org/">scikit-learn</a>.</p>

<p><img src="/images/posts/pictures/hull-y3s1-review/data-mining.png" alt="Data Mining Header" /></p>

<p>We applied this to a medical context in the coursework using anonymised health data showing various cardiac events and whether they lead to a heart attack. The coursework had an interesting problem domain, as the justification of prediction methods wasn’t just focussed on what provided the highest accuracy metrics, you had to consider the potential of misdiagnoses and how this would affect people.</p>

<p>Overall, it was a lot of fun, and I’d recommend having an experiment with data mining notebooks. After exams, I’m planning to explore my student data record from the <a href="/projects/myEngagement">myEngagement</a> project and see what new information I can find and visualise after cleaning up the dataset.</p>

<h5 id="virtual-environments-">Virtual Environments 📺</h5>

<p>Virtual Environments was an interesting module as it looked at how 3D works behind the scenes. As someone not studying games modules, it gives an overview of how artificial worlds are created and made to be believable. It was also fascinating from a psychological perspective to understand how the brain fills-in gaps from what it sees that allow the creation of these experiences.</p>

<p><img src="/images/posts/pictures/hull-y3s1-review/virtual-environments.png" alt="Virtual Environments Header" /></p>

<p>For the coursework in the module we were tasked with conducting a scientific experiment to investigate how either VR and AR affect peoples understanding of their surrounding, in my group we used Microsoft HoloLens gaming, combined with CS:GO and used <a href="https://en.wikipedia.org/wiki/Stroop_effect">stroop tests</a> and found a correlation in reduced reaction time with users physically immersed in a game as opposed to playing it on a PC.</p>

<h5 id="final-year-project-">Final Year Project 📚</h5>

<p>The dissertation is coming along well, and I’ve just had my mid-project progress review to assess how far along with it I am. Currently, I’ve built my API with the serverless framework, and have it deployed in production on AWS, using CircleCI to run my build scripts.</p>

<p>SwiftUI turned out to be a cool challenge, with some strange and undocumented bugs along the way, but I’m fighting through them! Overall, as a way to develop apps, I’m liking SwiftUIs style. Just got the rest of this next semester to complete everything and write it up now though.</p>

<p>I’m looking forward to sharing more about how my project has developed, and what I’ve learned along the way after submission is all complete in April.</p>

<p><br /></p>

<p><em>You can view my previous semester reviews here: <a href="/life/2019/07/30/end-semester2-year2.html">Year 2 - Semester 2</a>, <a href="/life/2019/01/07/end-semester1-year2.html">Year 2 - Semester 1</a>, <a href="/life/2018/05/16/this-semster.html">Year 1 - Semester 2</a></em></p>
]]></description>
        <pubDate>Mon, 27 Jan 2020 14:05:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2020/01/27/end-semester1-year3</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2020/01/27/end-semester1-year3</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Designing Smarter Train Tickets at HackTrain VI</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hacktrain.png"/>
        
        <p>Trains, train delays, scary SOAP APIs, coffee and zero hours of sleep were just a few of the things that I experienced last weekend when I took part in my first ever HackTrain hackathon; it was three days of excitement, adventure, chaos and code.</p>

<p>So what is HackTrain? It’s a hackathon spent, unsurprisingly, on trains, with a focus on looking at how the rail network can be improved; with a cohort of 80, using teams of different backgrounds from across the globe to brainstorm and rapidly prototype new ideas and concepts. Now in its sixth iteration, our hackathon had a focus on ‘<em>putting passengers first</em>’, with all of the challenges having some emphasis on improving customer experience across the network.</p>

<h5 id="day-1-hello-london">Day 1: Hello London</h5>

<p>Up bright and early, I jumped on the train down to London for the hackathon’s grand opening at St Pancreas Hotel and met up with <a href="//harrygwinnell.co.uk">Harry</a>, a <a href="//hullcss.org?ref=nbp">#hullCSS</a> alumni and now Microsoft Engineer. The opening event was led by River, the hackathon founder and leader and Andrew, the Chief Executive of <a href="//en.wikipedia.org/wiki/Network_Rail">Network Rail</a>.</p>

<p>We had a host of speakers from the rail industry, each pitching us their challenge areas for the hackathon, with ideas including everything from reducing network delays to modelling digital twins and developing intelligent chatbots. We chose the latter solution and pitched it to the audience, trying to gain support for the idea and find our third member!</p>

<p>Everyone got an opportunity to pitch their implementation of an idea, and around 45 people did. After pitching finished, teams had to convince audience members to give you one of their three stickers, and collect the most stickers not to be eliminated! After surviving the brutal team elimination and with 26 surviving teams; we found Ava, our third member and back-end developer to complete our group.</p>

<p><a href="/images/posts/pictures/hacktrainvi/hello-london.png"><img src="/images/posts/pictures/hacktrainvi/hello-london.png" alt="HackTrain pass, a man with Thanos's hand guiding to the station and Harry coding" /></a></p>

<p>After team formation, we grabbed our travel wallet with the tickets we needed the weekend and followed Thanos (<em>see image for context</em>) across London to Waterloo, where we’d wait for our delayed train down to Plymouth. On the train we discussed our hackathon plan for the weekend, and when we eventually arrived, set up for the night in the Village Hotel, ordered some drinks and got to work planning our core infrastructure.</p>

<p>After planning how our services were going to work, we headed to bed as we knew it was the only sleep we’d be getting over the weekend.</p>

<p>Our project was decided to be a chatbot that will allow you to cancel and exchange tickets using natural language, as well as suggest alternate routes if your train is cancelled for you, or find you an alternative method of travel.</p>

<h5 id="day-2-home-of-computing-and-rail">Day 2: Home of Computing and Rail</h5>

<p>Up bright and early, we stacked up on our breakfast before the busy day ahead of us and headed to get our train over to Network Rail’s Basingstoke Campus, an operations and training centre. After going through a lengthy security process to get into the building, we saw their test-track and got to work in one of their meeting rooms.</p>

<p>We had a great lunch from the Taco Van at to power us through the afternoon. After a question and answer session and test-track demo from our Network Rail mentors, we headed on a coach over to Bletchley Park, determinedly programming through the motion sickness.</p>

<p><a href="/images/posts/pictures/hacktrainvi/tuk-in.png"><img src="/images/posts/pictures/hacktrainvi/tuk-in.png" alt="HackTrain pass, thanos and Harry coding" /></a></p>

<p>We grabbed our table at the National Museum of Computing and set up for the evening of code ahead, once again fed well by the fresh burgers served for tea, and with the wraps at midnight to keep us powering through the night.</p>

<p>As the night progressed, Harry continued working on his project, implementing Microsoft’s Bot Framework to understand and learn from interacting with users. Ava continued to wrangle the unusually configured SOAP API provided by SilverRail, as I continued to develop our rerouting tool and get it to find alternate walking, train and underground routes to get people to their destinations.</p>

<p>We headed to Dragons Den at 11pm to pitch our idea and progress to a panel of mentors to get their feedback so far, we got really positive impressions from them, spurring us on to keep working through the night. We hit a roadblock with API security implementation around midnight, and all worked together to find a solution and unblock development.</p>

<p><a href="/images/posts/pictures/hacktrainvi/team.png"><img src="/images/posts/pictures/hacktrainvi/team.png" alt="Harry, Nathaniel and Ava team photo" /></a></p>

<p>As the hackathon numbers dwindled, as more and more people headed to bed, we decided to plan our next steps. I became the scrum master, and we held our first standup at midnight and then every hour through the night. We found a room that nobody was sleeping in and discussed our progress so far, any blockers on our tasks and estimated how long their completion would take before we moved to implementation.</p>

<p>As the most significant part of the project, we divided up the work on our API conversion layer (from SOAP to JSON REST), and both Ava and I kept building the APIs as Harry consumed them and trained his bot on potential cases they may be used.</p>

<p>Throughout the night Harry would ask people to find the most awkward phrasing of a question they could, as we worked to train his bot on every edge case and get the highest answer confidence scores we could.</p>

<h5 id="day-3-code-faster-and-pitch">Day 3: Code Faster and Pitch</h5>

<p>As the sun started to come up, there was a pile of empty Red Bull cans on the table and a lot of commits. We’d successfully implemented ticket cancellation and were working on exchange. We had to head over to get the train to London, so we paused work and packed up.</p>

<p>Train delays weren’t going to stop us from finishing the app in time! When we heard that our train from Bletchley into London wasn’t running on time, we nabbed the first bench we could find at a station, jumped on to Harry’s hotspot and kept committing. As we headed over to Fujitsu’s Headquarters, I worked on the presentation for later in the day, as Harry polished off bot implementation and Ava worked on API changes.</p>

<p><a href="/images/posts/pictures/hacktrainvi/day3.png"><img src="/images/posts/pictures/hacktrainvi/day3.png" alt="Last Minute Coding" /></a></p>

<p>As soon as we got to Fujitsu’s headquarters, we were pulled to one side for our code review, the part of the hackathon where the sponsors check your code calls the APIs you say it does and that your implementation ticks all the boxes. We passed and impressed the judges, then heading to grab a quick lunch while Harry prepared his speech for the presentation.</p>

<p>Then came the big moment; we had to pitch in front of the audience. Harry had only four minutes to convince the judges on our project, and be selected to go through to the next round of the judging. We made it into the final six teams and had to be ready to present again, grabbing another Red Bull and biscuits between, we prepared for the final showdown.</p>

<p>After presenting again, and giving the audience a live demo of our platform in action, we got some great feedback from the judges and some really positive encouragement on it. Both the developers and the challenge setters from SilverRail were also impressed with the product that we created.</p>

<p>Overall it was an exciting weekend, and it was really cool to see what the other teams had been up to throughout the hackathon too, from modelling point clouds to helping passengers request assistance with web apps. I had a great time working with Harry and Ava and was really pleased with the end products we managed to produce in such a short amount of time.</p>

<p><br /></p>

<p>Harry also has a blog, it’s available <a href="//harrygwinnell.co.uk">here</a>.</p>

<p><strong>You can read more about how the solution worked on the project page <a href="/projects/oneRail?from=post">here</a>.</strong></p>
]]></description>
        <pubDate>Sun, 24 Nov 2019 21:45:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/11/24/hacktrain</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/11/24/hacktrain</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Let's make smart receipts</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/receiptify.png"/>
        
        <p>Over the weekend I wanted to get the fundamentals of Go, so thought that I’d make a new project to get hands-on with it. Through getting email receipts and scraping items from them, I can convert all my Wetherspoons and Trainline receipts into transaction data.</p>

<h5 id="building-it">Building it</h5>

<p>The application works by scraping emails over IMAP (the most popular email receiving protocol) and looking through their contents to find receipt items, quantities and costs and then converting it to Monzo’s formats and sending it to them over their receipt API.</p>

<p>It’s pretty nice to be able to get a better sense of where my money is going, and if Flux can expand to more merchants it’ll really change banking for the good. In the meantime, my solution makes it easy to look back through transactions at the two merchants and work out what I bought and when!</p>

<p><img src="/images/projects/recieptify/in-app.png" alt="In-app view" /></p>

<p>The API isn’t perfect though, and there are a few things that I’d change about it.</p>

<h5 id="a-receipt-api-wishlist">A Receipt API wishlist</h5>

<ul>
  <li>You should be able to fetch all receipts for a Monzo transaction, possibly through passing as a parameter like getting extra merchant information, as this would be useful to be able to show in client apps.</li>
  <li>You should be able to create receipts for the old Monzo Prepaid Card transactions, at the moment if you do it, it just gives you <code class="language-plaintext highlighter-rouge">403 Forbidden</code>.</li>
  <li>Developers should be able to add custom fields (i.e. Transaction ID/Reference, booking collection ID) and mandate what gets shown on the receipt, as the Spoons app makes sense being an online merchant, but you should still be able to say the address at the pub it was used in.</li>
</ul>

<p>Also, as an aside, Starling Bank should get a receipts API - I previously used them as my main current account, and it would be pretty useful to get that data matched up nicely too.</p>

<p><br /></p>

<p>I’ve written some more about how I implemented the application, you can read it here:</p>

<p><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/receiptify">receiptify on Projects Page</a></p>
]]></description>
        <pubDate>Wed, 21 Aug 2019 11:30:00 +0000</pubDate>
        <link>https://nathaniel.work/build/2019/08/21/smart-receipts</link>
        <guid isPermaLink="true">https://nathaniel.work/build/2019/08/21/smart-receipts</guid>
        
        
        <category>build</category>
        
      </item>
    
    

    

      <item>
        <title>Going to Monzo Show and Tell Manchester</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/monzo-event.png"/>
        
        <p>This week I went along to my first Monzo event, Show and Tell Manchester. I’ve been meaning to go along to a Monzo event for a while but haven’t had chance as I’ve either been at University or they’ve been in London; I’ve been following Monzo from a while from getting a Beta card in 2017 and writing a <a href="/comment/2017/12/31/monzo.html">blog post</a> about building on their API, I’ve always found their modern tech-stack and community-driven approach really cool. The event was held in <a href="//www.thefederation.coop/">The Federation</a> in Manchester, a pretty unassuming building from the outside but a modern co-working space inside.</p>

<p>I wasn’t sure what to expect, going from super quiet when I arrived to completely packed in a matter of minutes - it’s amazing how a <em>bank</em> of all institutions can grab so much attention from the mix of engineers, business people, managers and customers in the audience. After a bit of time to chat with other people in the audience as well as free pizza and beer (<em>always a good perk</em>), we got going and heard from the developers.</p>

<h5 id="billing-pots">Billing Pots</h5>

<p><a href="/images/posts/pictures/monzo-aug19/billpots.png"><img src="/images/posts/pictures/monzo-aug19/billpots.png" alt="Billing Pots" /></a></p>

<p>First up we heard from James, a backend engineer at Monzo who spoke about the latest development, based around the goal of getting more people to use their account as their main one which is billing pots and get paid early.</p>

<p>Billing pots were designed around the idea that people like to segment their money, so you can go on a night out and not spend every last penny! We heard about how their MVP model with constant evolution led to the current implementation (where the money is moved back into primary account just before the payment is taken at around 3 am). The community-driven aspect was really clear on this as their previous model of committed spending pots (pots for all direct debits) was seen as confusing, so with customer feedback, it could be refined before it even got released.</p>

<p>There were then questions about what classes as a bill, would a recurring payment (i.e. Netflix or Spotify) fall into those categories, and how could that be paid from a pot - but we’ll come back to that later.</p>

<p>It seems that now is a really interesting point at the bank’s history, as the assumptions made 4 years ago in the early code are starting to break, as users aren’t single entities with a couple of pots anymore with joint, business and investment accounts launching alongside. To be able to manage this, a clearer and simpler design system was needed for the app.</p>

<h5 id="new-navigation">New Navigation</h5>

<p><a href="/images/posts/pictures/monzo-aug19/app-design.png"><img src="/images/posts/pictures/monzo-aug19/app-design.png" alt="App Design" /></a></p>

<p>Kavi then came on to explain this process, talking about the new app design what went into building a new and simpler experience, that could be both easily understood by customers (around 2.5 million now) and easily added to by the growing development squads (15 product teams).</p>

<p>The current app was compared to the lego you can see in the picture of the above, with the features there but bolted on in an unordered way and the new design being is a way to give a better structure, to <em>make customers discover the things that make them love Monzo as fast as possible</em>.</p>

<p>The new tabs in the top bar are as part of a view to make the app the home of your financial life, where you can overview all of your bank accounts at a top-level by just swiping through (like a photo album) and then be able to work down granularly into the details of all your accounts (like a photo).</p>

<p>The first step in this is Amex, but over time it’s looking to be extended especially with the launch of open banking (see <a href="/comment/2016/11/21/why-banking-api-great.html">previous blog post here</a>) and the tabs are also going to be made the place to make you aware of new services that are available, instead of being shown as feed items.</p>

<h5 id="pots-with-cards">Pots, with cards?</h5>

<p><a href="/images/posts/pictures/monzo-aug19/monzo-tabs.png"><img src="/images/posts/pictures/monzo-aug19/monzo-tabs.png" alt="My Pots Mockup" /></a></p>

<p>James mentioned the possibility of paying for recurring payments using pots, but the current method for Direct Debits of automatically checking, then transferring the money from the pot into the balance not being good enough for this. MasterCard requires a response in less than 200ms to tell them whether the customer has sufficient balance before they reject on the bank’s behalf, not giving enough time for two lookups.</p>

<p>He mentioned that virtual cards could potentially be a solution to this, but that made me think how could that practically be implemented.</p>

<p>Based on the assumption that for virtual cards, MasterCard’s Digital Enablement Service (the thing that makes the card’s virtual numbers used in mobile wallets) asks the bank for an image of the card (which would make sense due to investor &amp; joint account cards showing differently but having the same BIN), a different image for the card can be generated based off pot colour and shown in the mobile wallet to allow the card to be shown separately and allowing only one card of each pot colour to stop getting mixed up.</p>

<p>You can see above a few mockups I made of how this could appear in-app (using their <a href="//github.com/monzo/">open UI kit on their GitHub</a>); apparently implementing this isn’t on their short term road-map, however I think it would be a great way to handle it, especially as it’ll both remove the race condition for balance lookup, and allow people to segment their spending more easily.</p>

<h5 id="wrapping-up">Wrapping up</h5>

<p>Thanks to the Monzo for running the event, especially Yen (Community Manager) and James and Kavi for speaking. It was interesting to hear how more about how Monzo does development. If there’s another event happening around you in future, I highly recommend going along to it!</p>
]]></description>
        <pubDate>Wed, 07 Aug 2019 10:30:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/08/07/monzo-meetup</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/08/07/monzo-meetup</guid>
        
        
        <category>events</category>
        
      </item>
    
    

      <item>
        <title>How to convert your resume to JSON</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/cv-banner.png"/>
        
        <p>CVs have long been (<em>for me anyway</em>) a long list of PDFs of <code class="language-plaintext highlighter-rouge">v1</code>. <code class="language-plaintext highlighter-rouge">v2-Final</code>, <code class="language-plaintext highlighter-rouge">v3</code> and so on, making it painful to work out which version is the latest and sift through to find the version I’m looking for.</p>

<p>Last year, I migrated my old iWork Pages based CV to JSON to get greater control of both versioning and design of my CV, as well as better compatibility, as Pages files don’t always play nice when converted.</p>

<p>I thought I’d share in this post some of the things I’ve learned along the way, so you don’t have to experience some of the confusing hurdles along the way that I did.</p>

<p><a href="/images/posts/pictures/cv/compare.png"><img src="/images/posts/pictures/cv/compare.png" alt="Old and New Comparison" /></a></p>

<h5 id="theres-a-standard-">There’s a standard! 📖</h5>

<p>The best place to start reading is the standard schema that’s documented <a href="https://jsonresume.org/schema/">here</a>, as it’s just JSON it’s easily expandable you can add categories and take them away to suit your needs. If you’re looking for some examples or inspiration for your design, there’s a load on the site to get you started (although I’d recommend at least tweaking and updating them to fit your brand).</p>

<h5 id="get-started-">Get Started ✅</h5>

<p>For building locally, I’d recommend getting started using the <a href="//github.com/jsonresume/jsonresume-theme-boilerplate">boilerplate theme</a> which gives you a super basic setup with partials preconfigured to allow you to build up easily. The theme uses handlebars to render the partials, meaning if you decide to add a new partial for a new section, you just need to append a <code class="language-plaintext highlighter-rouge">{{&gt; partialname }}</code> to resume.hbs.</p>

<p>To build your partials, it’s super nice too as it just uses handlebars conditionals (pretty similar to the ones used in liquid for Jekyll blogs), you can read more about them <a href="//handlebarsjs.com/">here</a> and see the example below:</p>

<figure class="highlight"><pre><code class="language-handlebars" data-lang="handlebars"><span class="k">{{#if</span> <span class="nv">website</span><span class="k">}}</span>

<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"website"</span><span class="nt">&gt;</span>
<span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"</span><span class="k">{{</span><span class="nv">website</span><span class="k">}}</span><span class="s">"</span><span class="nt">&gt;</span><span class="k">{{</span><span class="nv">website</span><span class="k">}}</span><span class="nt">&lt;/a&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="k">{{/if}}</span></code></pre></figure>

<p>You can then just add all your different sections, style it with CSS as you would a normal site (or SASS if you want to compile it). When you’re going along you can preview it live in the command line with <code class="language-plaintext highlighter-rouge">resume serve</code> and when you’re done, preview it in a browser and print it to PDF. I’ve found exporting by print to be the most effective way of exporting, as the built-in PDF export can be a bit flakey.</p>

<p>The boilerplate theme’s getting started guide on GitHub is pretty good, and if you’ve got NPM installed globally - it’s pretty much <code class="language-plaintext highlighter-rouge">sudo npm install -g resume-cli</code> and serve.</p>

<p><a href="/images/posts/pictures/cv/cv-json.png"><img src="/images/posts/pictures/cv/cv-json.png" alt="Image of CV" /></a></p>

<h5 id="git-on-it-">Git on it 🗂</h5>

<p>When you’re done (or as you’re going along), make sure you commit your CV to version control (whether GitHub, somewhere else or self-hosted).</p>

<p>Having every version stored in the repository history is great, as content revisions are only to the <code class="language-plaintext highlighter-rouge">resume.json</code> file, you can see exactly what changed in every update as you look back so you can see exactly what version you sent out.</p>

<h5 id="always-have-a-pdf-option-">Always have a PDF option 📄</h5>

<p>It’s pretty neat hosting your own resume as HTML, I agree. However, if you’re going to distribute it, you should always give an option for your users to download it. <em>Don’t</em> rely on the user printing from the web or saving as a PDF, as web browsers are so inconsistent it almost certainly won’t look as you thought it did when they export it. Control your brand and make sure your recipients see what you want them to!</p>
]]></description>
        <pubDate>Mon, 05 Aug 2019 14:30:00 +0000</pubDate>
        <link>https://nathaniel.work/build/2019/08/05/cv</link>
        <guid isPermaLink="true">https://nathaniel.work/build/2019/08/05/cv</guid>
        
        
        <category>build</category>
        
      </item>
    
    

      <item>
        <title>End of Semester Two (Year 2)</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/year2-semester2.png"/>
        
        <p>My very late review of the last semester! I’ve had slightly less ‘<em>building</em>’ this time around and more work on theoretical underpinnings, which has been interesting. Through projects in the courseworks, I implemented a TCP networking stack, wrote low-level efficient code in C++ and built some databases (the projects just don’t have cool names as normal!).</p>

<h5 id="networking-">Networking 🌎</h5>

<p><a href="/images/posts/pictures/hull-y2s2-review/location-hub.png"><img src="/images/posts/pictures/hull-y2s2-review/location-hub.png" alt="Networking Coursework Screenshot" /></a></p>

<p>The Networking coursework, Location Hub isn’t the same as <a href="/projects/LocationHub">last semester</a>, it does the same thing differently (and in C#, plus WPF). There was an essential part of understanding how RFC’s, specifications and protocols all work under the hood and important lessons in how to follow them. The networking coursework’s core part was building out the application and following the specification exactly. The application follows a spec to make raw HTTP requests to the <code class="language-plaintext highlighter-rouge">0.9</code>/<code class="language-plaintext highlighter-rouge">1.0</code>/<code class="language-plaintext highlighter-rouge">1.1</code> variants of the spec meaning that browsers can interact with it too, it was a really interesting task as it gave a lot greater understanding of how protocols are designed and function.</p>

<p>I was incredibly pleased as I scored 100% for the design and implementation of the coursework.</p>

<h5 id="transport-routing-">Transport Routing 🚌</h5>

<p><a href="/images/posts/pictures/hull-y2s2-review/transport-routing.png"><img src="/images/posts/pictures/hull-y2s2-review/transport-routing.png" alt="Transport Routing Coursework Screenshot" /></a></p>

<p>The coursework for advanced programming was my first experience using C++ for an application. It was a bit weird at first but learning how pointers, references and designing algorithms for performance was a really interesting exercise and encouraged creating thinking. The application had to find you the fastest route from A-B using a provided CSV of locations and another of links between those locations, storing this data in vectors linked together allowed me to find routes between and sort to find the fastest in the most efficient way.</p>

<p>I’m proud of this coursework, scoring 79/80 for code implementation, design and efficiency.</p>

<h5 id="databases-">Databases 📖</h5>

<p><a href="/images/posts/pictures/hull-y2s2-review/db.png"><img src="/images/posts/pictures/hull-y2s2-review/db.png" alt="Databases Coursework Screenshot" /></a></p>

<p>Databases was an interesting module revolved mostly around making sure you chose the right type of database for what you needed, the coursework was about structuring data, something I’ve already found useful in my final year project so far.</p>

<p>The coursework consisted of modelling a data-set, converting it to Boyce-Codd Normal Form and explaining through methods of how to do modelling, then writing SQL queries to migrate the data over - useful but not as hands-on as the others!</p>

<h5 id="summer-️">Summer ☀️</h5>

<p><img src="/images/posts/pictures/hull-y2s2-review/enzo.jpg" alt="Obligatory dog pic" /></p>

<p>For the first month and a bit of summer while I still had my accommodation, I worked with <a href="//sauce.dev">Sauce</a> as an intern on an IoT project, working with various technologies including React, React Native, the Serverless Framework and AWS, which is great as I’m working on building my Final Year Project with the framework. It was a lot of fun, the team were all great and I learned a lot!</p>

<p>Since then I’ve been on a holiday to Northumbria, see the obligatory bonus dog picture!</p>

<p>I’ve also made a start on my final year project, with data-modelling and design now well underway. I’m looking forward to sharing more about the project <a href="//twitter.com/meetnathaniel/status/1138546621686398977">I’ve chosen</a> and how it’s coming along. I’ve got a couple of other cool projects underway too, including one with SwiftUI which I’m planning to write about!</p>

<p><br /></p>

<p><em>You can view my previous semester reviews here: <a href="/life/2019/01/07/end-semester1-year2.html">Year 2 Semester 1</a>, <a href="/life/2018/05/16/this-semster.html">Year 1 Semester 2</a></em></p>
]]></description>
        <pubDate>Tue, 30 Jul 2019 14:05:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2019/07/30/end-semester2-year2</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2019/07/30/end-semester2-year2</guid>
        
        
        <category>life</category>
        
      </item>
    
    

    

    

    

      <item>
        <title>Are mobile networks ready to be disrupted?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/iphone-hello.jpg"/>
        
        <p>First fintech, now insurtech, regtech and everything else. Is mobiletech the next big up and coming industry as users want to understand their data and usage more, and can the Big-4 and their MVNOs (<a href="//en.wikipedia.org/wiki/List_of_United_Kingdom_mobile_virtual_network_operators">Mobile Virtual Network Operators</a>) fight back?</p>

<p><img src="/images/posts/pictures/zevvle/statement.png" alt="Zevvle App" /></p>

<p>Mobile Plans haven’t changed much in the last 10 years; sure the data you can get for your money has increased, or in some cases even decreased. Many providers have killed or price hiked their ‘<em>unlimited data</em>’ plans as consumers push them to the limit, but it’s leading people to question what do they actually pay their mobile network huge amounts of money for, and could it be done better.</p>

<p>I was introduced to Zevvle a couple of weeks ago, a new concept of a mobile network that’s built from the ground up by the people with features that people want from it and as a concept it really interested me, running on the highest coverage network in the UK (EE) as an MVNO but providing a completely different service.</p>

<p><img src="/images/posts/pictures/zevvle/app.png" alt="Zevvle App" />
With a summary screen that would feel at home in the Monzo app, you’re shown a breakdown of your usage in data, calls and messages grouped by day almost as if they were transactions, an instant breakdown available immediately isn’t available from any provider that I know of right now.</p>

<p>The summary screen would be really useful with their feature that really sets them apart from different providers; SIM sharing. This will allow you to have one plan and potentially 9 other SIMs on your account, allowing you to use your plan on a tablet or home IOT devices or even share your plan with your family (who hopefully don’t use as much data as you!)</p>

<p>If they could do something no other UK MVNO has done yet and deliver features like WiFi Calling and Visual Voicemail and eSIM support over time, they could have real potential to challenge the big players. With a good price, no contract lock-ins and a good app, I’d switch over when my contract ends to try them out. The industry really needs a challenger and one that delivers features that no other MVNO does.</p>

<p>The app went live today, and although the price isn’t yet competitive (£5/month + £5/GB), with economies of scale they’ll be able to match the low pricing of other providers. Although I don’t intend to move over right now, I thought it was a really cool thing to share as the more people who have their say in the network, the better it will be. They also have a community site <a href="//community.zevvle.com/">here</a>, a lot like Monzo do.</p>

<p>It seems there’s a waiting list that uses referrals to move up the queue (a bit like Monzo did with tickets in alpha), but if you want to see for yourself but you can register to learn more or join, you can use my ticket to <a href="//zevvle.com?rid=403RWU">learn more or register here</a>.</p>

<p>It’s always interesting to see what industry is next to be disrupted, and mobile networks seem a prime candidate.</p>
]]></description>
        <pubDate>Sun, 02 Jun 2019 10:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2019/06/02/mobile-disruption</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2019/06/02/mobile-disruption</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

    

      <item>
        <title>Building Lecture Analytics at JISC's CAN Hackathon</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/canconf.jpg"/>
        
        <p><img src="/images/posts/pictures/jisc-can-hackathon/brand-card.png" alt="App Logo" /></p>

<p>After our success at JISC’s DigiFest hackathon, this week, the team were invited back to Milton Keynes to work collaboratively with other groups. We also built a new product to help teaching staff to understand where students are engaging and why engagement could be dropping across lectures, by anonymously monitoring student faces in the lecture theatres to calculate student attentiveness and emotion.</p>

<p><img src="/images/posts/pictures/jisc-can-hackathon/app-layout.png" alt="App Design" /></p>

<p>This conference was about the Change Agents Network, a network of staff and students working in partnership to support curriculum enhancement and innovation across higher and further education globally. We decided to target our entry to this to create a product that would help staff to track if students were engaging with their lecture material, spot areas where attention dropped and get a better understanding of their audience.</p>

<p><img src="/images/posts/pictures/jisc-can-hackathon/standup.png" alt="Stand-up Meeting" /></p>

<h5 id="day-1-travel">Day 1: Travel</h5>

<p>We started the hackathon heading down to the Open University campus in Milton Keynes, checking in at the hotel and heading straight out to tea at a local Indian restaurant where we met the teams that would be participating, found out where they came from and where their interests in tech were. The meal was great, and we then headed back to the hotel to start planning the code, building out mockups in <a href="//www.figma.com">Figma</a> and delegating who was going to be doing what the following morning.</p>

<p>We also saw <em>Uber Eats</em> robots, and they’re super cool.</p>

<h5 id="day-2-code">Day 2: Code</h5>

<p>After heading down for breakfast, we headed out to to the event and start working, got our table and initialised the Git repository. We started with a stand-up where we told everyone what we were planning on building over the event and the technologies we planned to use to realise our ideas.</p>

<p><img src="/images/posts/pictures/jisc-can-hackathon/running.png" alt="Application running in demo" /></p>

<p>We started with the code implementation, <a href="//harrygwinnell.co.uk">Harry</a> architected Entity Framework to manage our users and data objects, Alex worked on pulling images from our client application, processing them and returning them to the database and Dan worked on processing data through the app, building data models and our login system.</p>

<p>I took responsibility for the frontend, using MVC to show users their teaching sessions, create graphs and diagrams to visualise sessions. By the end of day one, we were happy with how the project was going, and we had our skeleton design and data-processing working correctly. We headed off for our Gala dinner with the conference, after which all the team went back to do some late night coding in Harry’s room.
<img src="/images/posts/pictures/jisc-can-hackathon/food.png" alt="Food at Gala meal" /></p>

<h5 id="day-3-code-faster-then-pitch">Day 3: Code faster then pitch</h5>

<p><img src="/images/posts/pictures/jisc-can-hackathon/macbooks.jpg" alt="Pretty picture of a MacBook on a table" /></p>

<p>The clock was ticking on day three, only having 3 hours to perfect our application before we pitched it to the judging panel. I worked on data shown in the frontend, Harry and Alex cracked down on data processing errors and Dan fixed data models.</p>

<p>We finished with time to spare, headed out for lunch and then set up ready to present in a trade-floor style location in the University library. The pitch went down well, and there was a lot of interest in the product we made, especially the ethical considerations we had to stop data becoming identifiable, like only recording metadata not images of students and both staff and students alike thought it could be instrumental in their classrooms.</p>

<p>If we were to build this into a real product, we’d link the recordings to institution’s lecture recording software (i.e. Panopto) to allow playback of the session and let the teaching staff directly see where students disengage and reengage.</p>

<p><img src="/images/posts/pictures/jisc-can-hackathon/bletchley.png" alt="Picture of Bletchley Park" /></p>

<h5 id="end-product">End Product</h5>

<p>We were pleased with the end product that we created, and are planning to open-source it, if anyone wants to take it further. Very kindly, JISC covered our costs for the event - thank you to them for inviting us and giving us the opportunity to come back and work with new teams. You can read more about it on the <a href="/onetrack">projects page here</a>.</p>

<h5 id="detour">Detour</h5>

<p>At the end of the conference, we were about to head home when we wondered how far Bletchley Park was from Milton Keynes, it turned out to be an 8-minute drive, so we went, and visited the National Museum of Computing there.</p>

<p>We were 20 minutes from Bletchley Park itself closing but had an hour and a half at the museum. In the museum was everything from Colossus (the first large-scale computer) to the Apple II and is certainly worth a trip. Next year we hope to visit Bletchley Park itself as a #hullCSS day-trip.</p>

<h5 id="video">Video</h5>

<center>Here's a quick summary video of our time at the hackathon:</center>

<iframe width="560" height="400" src="https://www.youtube-nocookie.com/embed/OegZJTo8T2g" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>

<p><br /></p>

<p><em>Harry has also has a blog, which you visit <a href="//harrygwinnell.co.uk/">here</a>.</em></p>
]]></description>
        <pubDate>Fri, 31 May 2019 23:45:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/05/31/jisc-can-conference</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/05/31/jisc-can-conference</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Visualising what data Universities' hold</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts//banners/attend-banner.png"/>
        
        <p><a href="/images/preserve/myengagement/sessionview.png"><img src="/images/preserve/myengagement/sessionview.png" alt="Image of Project" /></a></p>

<p>Opening doors on campus, tapping into lectures, using eduroam and logging in to single sign-on all are logged so the University can work out if you’re going to lectures, but what does this data actually look like?</p>

<p>When I requested a list of lectures I was absent from this year from at University, I wasn’t expecting to get a 3500 row CSV back of all my activity at University. After I got over the sheer amount of data that I got, I decided it was time to do some visualisation on this data to get an understanding of it, breaking it down by categories, running analytics (like if there was correlation on any missed time-slots) and even the most commonly used University single sign-on resources.</p>

<p>I created a tool as a personal project that allows students to understand their own files and get their own page of tiles by uploading the file that their Student Hub will provide them of their own student record.</p>

<p>It’s a Node.JS Express application that takes uploaded CSVs and converts them to JSON objects, which are then processed and broken down by categories, analytics are performed before it’s passed back to express and shown in the front-end, with the original data file being deleted from the server immediately.</p>

<p>All the code is open-source and available on GitHub and I have a live instance that is deployed by Zeit Now’s Continuous Integration. Both the source code and the live instance are linked from the project page.</p>

<p><br /></p>

<p><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/myEngagement">myEngagement on Projects Page</a></p>

]]></description>
        <pubDate>Thu, 25 Apr 2019 18:00:00 +0000</pubDate>
        <link>https://nathaniel.work/build/2019/04/25/myengagement</link>
        <guid isPermaLink="true">https://nathaniel.work/build/2019/04/25/myengagement</guid>
        
        
        <category>build</category>
        
      </item>
    
    

    

      <item>
        <title>Going to FinTech North in Manchester</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/fintechnorth19.jpg"/>
        
        <p><img src="/images/posts/pictures/fintechnorth/panel.jpg" alt="Panel Discussion" /></p>

<p>Last week I attended FinTech North Manchester, an event about businesses, potentials of technology and rules around running FinTech businesses. It’s a really interesting area of technology, with huge potential for transformation so I thought I’d attend to learn more about the industry and where it’s going.</p>

<p><img src="/images/posts/pictures/fintechnorth/mojo.jpg" alt="Mojo Discussion" />
A variety of companies from the North spoke to us, including <a href="//mypinpad.com">MyPinPad</a> who delivered the first HSM (Hardware Security Module) as a service, to allow customers to process card transactions requiring PIN straight from within an app, without even needing a specialist PIN reader. This meant they only needed to insert a card into a device and enter their PIN on a phone instead of a reader, and gave us an overview the regulation changes and hurdles they had to go through to make it possible.</p>

<p><img src="/images/posts/pictures/fintechnorth/can-I-loan.jpg" alt="Banking Communications" /></p>

<p>We heard about the common issues with bringing modern technology to the banking industry, namely the plethora of antiquated and <em>creaky</em> old systems, where adding new systems could break it, and as a result, how convincing a bank to use your service is really difficult.</p>

<p><a href="//equiniti.com/uk/">Equinti</a>, then spoke about how they’re working with the growing expectations of consumers and how lending is changing to becoming more online based and streamlined, making it much easier for people to access when they need it.</p>

<p>There is also a potential for big players to become entrants to the fintech space, with global giants like Amazon being able to follow in the footsteps of Alibaba and their service Alipay, and with the huge amount of consumer data they already have, it would give them a significant advantage.</p>

<p><img src="/images/posts/pictures/fintechnorth/statement.png" alt="Banking Communications" /></p>

<p>We met startups next, including Arro - a bank and debit card solution that could work for homeless people too with the organisation performing street level validation of customers and potentially allowing people to back on their feet. Mutual Vision, an organisation showed us what was possible with cross-bank collaboration as a company jointly owned by building societies to develop a modern management system. We also met insurance disruptors who created a single policy system across insurers to make policies simpler to understand and reduce confusion about what was covered.</p>

<p>EY spoke about how they’ve transitioned to looking at banking from a user-centred design perspective and the organisational changes they’ve had to make to do this, and what users are expecting design wise. Banks are being forced to change from being a bulk of information shown in a statement sent in a letter once a month to living up to date information, as disruptors and challenger banks like Monzo, Starling, N26 and Atom all provide similar services but do it in a more personalised and interactable way.</p>

<p>In the closing panel we spoke about the future of transaction handling organisations like Visa and MasterCard and how they will survive when payments are moved to merchant straight to customer, but the overall consensus that especially with Visa and MasterCard’s work on tokenisation, that means that every transaction uses a unique card number to protect customers from both malicious parties and to ensure their privacy (more about how that works <a href="//usa.visa.com/visa-everywhere/security/tokenization-explained.html">here</a>).</p>

<p>The overarching message of the event was that consumers are expecting more from their financial providers, as they are now more engaged in their financial lives than they have ever been. As new legislation, like <a href="//en.wikipedia.org/wiki/Payment_Services_Directive">PSD2</a> comes into action, people will have more opportunities than ever before to get insight into their financial lives.  The biggest change expected in the next 5 years is going to be customer experience as open banking becomes global, with Australia adopting the practice from next year too.</p>

<p>It was a really interesting event, I met some really interesting people and it’s always great to see what local tech events are taking place.</p>
]]></description>
        <pubDate>Mon, 22 Apr 2019 17:30:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/04/22/fintechnorth</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/04/22/fintechnorth</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Winning JISC's DigiFest Hackathon</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/JISCDigifest.jpg"/>
        
        <p>Last week a team of members from <a href="//hullcss.org">#hullCSS</a> and I went to the <a href="//jisc.ac.uk">JISC</a> Digifest Hackathon at the ICC in Birmingham. If you don’t know about the organisation, chances are you’ve used their services as they provide the Janet Network and eduroam for the UK, as well are a non-profit providing solutions for the education sector.</p>

<p>Over two days we built an initial version of an ‘intelligent campus’ application which allows students to engage with student services, find out their schedules and be notified of changes by their institution more easily.</p>

<h5 id="our-motivation">Our Motivation</h5>

<p><img src="/images/posts/pictures/onecampus/app.png" alt="Current Apps" />
We were driven by the array of poor apps published by UK institutions, offering limited functionality with mostly web views. Hull’s current app also consists of a timetable which is only available when the days of the week you want are manually selected and correct week number in the term is ticked, providing an extremely poor UX.</p>

<p><img src="/images/posts/pictures/onecampus/app.jpeg" alt="Current Apps" /></p>

<p>Through the massive advances made in smartphone technology over the last few years, we realised we could harness native applications to provide access to PassKit and allow smart card use as well as simplifying the onboarding process for students to set up Eduroam, Mail Services and more automatically which would help reduce the number of calls to our IT Service Desk. We knew that iBeacons would also solve the problem of tapping-in to lectures, as they allow automatic detection of when a student enters a lecture theatre at the correct time so they can be signed in.</p>

<p>We realised that there’s a vast amount of fragmentation across Universities and that there are many different services requiring plastic cards, and with the University’s goal to eliminate single-use plastics on-site through <a href="//www.hull.ac.uk/myplasticpledge">plastic pledges</a>, we thought we could do this and eliminate plastic cards from over 16,000 students on campus.</p>

<h5 id="day-1-travel">Day 1: Travel</h5>

<p><img src="/images/posts/pictures/onecampus/day1.jpeg" alt="Current Apps" /></p>

<p>We spent Monday afternoon driving down to the ICC in Birmingham, checking in to our hotel, discussing our plans for design and making some wireframe mockups in Sketch to understand conceptually how our app was going to function before heading into the hackathon on the following day.</p>

<p>After our brainstorm, we headed down to <a href="http://www.indianbrewery.com/">The Indian Brewery</a> for a get-together with the other teams participating in the event (including another team from Hull!) We got to know the other teams, enjoyed some amazing food and then headed home for the night to be ready for an early start on Tuesday!</p>

<h5 id="day-2-code">Day 2: Code</h5>

<p><img src="/images/posts/pictures/onecampus/day2.jpg" alt="Current Apps" /></p>

<p>Starting bright and early and getting to the International Convention Centre (ICC) for 8.30 am, we split up our team, decided what we were working on for the day and got straight to work.</p>

<p>I worked on building wireframes, mapping out user journeys and designing our interface then moving to work on implementation in XCode later in the day when I’d designed all the interfaces. <a href="//harrygwinnell.co.uk">Harry</a> was our lead iOS Dev and worked on implementing my mockups and bringing them to life as they came in. Dan and Alex were working on building out our backend services, building login, timetable data, bus tracking and weather to connect up to the app.</p>

<p><img src="/images/posts/pictures/onecampus/ondisplay.jpeg" alt="Current Apps" /></p>

<p>The pressure ramped up as we got towards 5 pm, where we had to stop work for the day. We ended our first day of code with a functional app but no authentication and were then invited down the Digifest’s delegate meet-up, where we spent a couple of hours meeting interesting people from different organisations, seeing some cool robots and talking to JISC’s team as well as developers from <a href="//www.instructure.com/canvas">Canvas and Instructure</a> about interesting ways we could use their APIs.</p>

<p><img src="/images/posts/pictures/onecampus/team.jpeg" alt="Current Apps" /></p>

<p>In the evening JISC took us out for a wood-fired pizza at <a href="//ottowoodfired.com/">OTTO</a>, the meal was incredible and the venue was lovely, we pretty much filled the venue with hackathon participants. After tea, we headed back for a late night of doing some work with Dan and Alex building out a background-image grabbing service and me doing some mockups for the last day of work.</p>

<h5 id="day-3-code--present">Day 3: Code &amp; Present</h5>

<p><img src="/images/posts/pictures/onecampus/day3.jpeg" alt="Current Apps" /></p>

<p>Waking up bright and early on the final day of the hackathon, with a solid 5 hours of sleep we headed down for breakfast and then back to the ICC, where we knew we had very little time to complete our solution and make up a presentation. I got on implementing my mockups from the night before in Swift, while Harry worked on the Campus page and the presentation. Dan and Alex got the backend services into AWS and Harry configured log-in to work through the app against the server.</p>

<p>As the clock ticked down, as we got the final version of the presentation, I headed over to the projection artists to make sure our presentation ran properly and there were no issues with HDCP or Keynote. It was then time for our presentation (available to watch fully <a href="https://youtu.be/_yko0eKEcaE?t=795">here on YouTube</a>). There were some really interesting projects given by the other participants.</p>

<h5 id="end-product">End Product</h5>

<p>We could really see potential in the product that we created and were incredibly pleased with the end result of the hackathon. We’re continuing to build on our work as a side project and you can read more about it on the <a href="/onecampus">projects page here</a> or <a href="/contact">contact me</a> to learn more.</p>

<p>Very kindly, <a href="//jisc.ac.uk">JISC</a> covered our costs for the event - thank you to them for inviting us to the event and giving us the opportunity. It was really fun to bump into the other team from Hull too, and meet <a href="//www.ollyeagle.com/">Ollie</a> and <a href="//lukearran.com">Luke</a> to see their cool lecture engagement project. Thanks to all the other teams in the competition for keeping us on our toes, and the really cool end products you created. Harry has also done a write up of this event, that you can read <a href="//harrygwinnell.co.uk/jisc-digifest-hackathon-2019/">here</a>.</p>

<h5 id="video">Video</h5>

<center>Here's a quick summary video of our time at the hackathon:</center>

<iframe width="560" height="400" src="https://www.youtube-nocookie.com/embed/Xuqo_2HDzlc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
]]></description>
        <pubDate>Tue, 19 Mar 2019 10:00:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/03/19/winning-jisc-digifest</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/03/19/winning-jisc-digifest</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Joining Hull Makerspace</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/makerspace-hull.jpg"/>
        
        <p><img src="/images/posts/pictures/makerspace/join/front.jpg" alt="A view of the full Makerspace room" /></p>

<p>On Saturday I went along to the new Makerspace in Hull with fellow <a href="//hullcss.org">#hullCSS</a> members <a href="//harrygwinnell.co.uk">Harry</a> and <a href="//adamt3d.com">Adam</a> to see what was happening in the space, as I hadn’t been before - and they said it was really cool.</p>

<p>After doing an induction session, being reminded to stay away from sharp things and all the normal health and safety stuff, I was set loose on the space to build whatever I wanted.</p>

<p><img src="/images/posts/pictures/makerspace/join/sew.gif" alt="Gif of sewing machine in action" /></p>

<p>After three of us spent nearly an hour trying to suss the brand new digital embroidery machine, we finally managed to work out how to correctly thread the needle so it would work properly (the instructions were harder than we thought at first) and we got a design made up of the Makerspace logo, then sent it over serial to the machine. The embroidery machine was pretty cool, as you can see by the picture to the left, it showed the progress of what it was embroiding as it went along.</p>

<p><img src="/images/posts/pictures/makerspace/join/side.jpg" alt="A view of the storage area and electronics area at the Makerspace" /></p>

<p>As a community it’s a really nice idea, as it allows people to learn from others and implement the best practices of other people as well as having experts to help you use machines. I was able to help a guy who was just getting started with Arduino fix some debounce and variable errors in his code and get his circuit working, and it’s nice to think if I have issues too there’s a friendly group of other makers and devs around to get a second pair of eyes on an issue.</p>

<p>I’m looking forward to going back and making new things there, especially doing some 3D printing, CNC cutting and making some Vinyls for my laptop. With so many projects that I wanted to do but didn’t have the tools to, the space will allow me to make the crazy prototyping ideas I had a reality, which is awesome.</p>
]]></description>
        <pubDate>Tue, 05 Feb 2019 17:00:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/02/05/hull-makerspace</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/02/05/hull-makerspace</guid>
        
        
        <category>events</category>
        
      </item>
    
    

      <item>
        <title>Going to York Technology Conference</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/yorktechconf.jpg"/>
        
        <p><img src="/images/posts/pictures/yorktechconference19/intro.png" alt="York Tech Conference" /></p>

<p>This Wednesday I got the opportunity to go to York Technology Conference, after seeing it advertised on Twitter in Early November, I was really interested in a local tech conference, especially with York being so close. I went along with <a href="//adamt3d.com">Adam</a> representing #hullCSS and some other people from the University across different faculties.</p>

<h5 id="getting-started">Getting Started</h5>

<p>When we arrived, we were given our lanyards and personalised agendas for the day based off what we’d chosen the week before on a Google Form, and headed off to the introduction from the CEO of Netsells who introduced us to the apps they own and have built on including YourParkingSpace and RailGuard, speaking next about their goals for the future.</p>

<h5 id="becoming-a-millionaire-and-machine-learning-at-the-bbc">Becoming a Millionaire and Machine Learning at the BBC</h5>
<p><img src="/images/posts/pictures/yorktechconference19/network.jpg" alt="Robin Penbrooke" />
Daryll Mattocks gave us a talk on the essentials for running a digital startup and what to keep in mind when designing, planning, pivoting, pitching and funding a startup, as well as the importance of only building projects that are your actual passion.</p>

<p>Robin Penbrooke gave us a question of how hard is it to change the way an almost 100-year-old organisation functions, and the problems the BBC has overcome to try and change the technical direction of it.</p>

<p>The key focusses being on breaking through technical silos (stopping radio/TV being treated as separate entities), improving metadata on shows and tagging the ‘feeling’, who it’s aimed at to build a suggestion and insight system. It was really awesome, and if this type of system could be applied to an archive of BBC Redux and beyond, it would revolutionise VoD.</p>

<h5 id="fintech-and-blockchain">FinTech and Blockchain</h5>
<p><img src="/images/posts/pictures/yorktechconference19/planning.jpg" alt="Planning a blockchain startup" /></p>

<p>Next up Rob Bellingham from Netsells gave us an overview of FinTech, taking us through how the authorisation cycle for cards works and the magic that happens in under a second when a card gets approved for a payment and security checks are run in the background.</p>

<p>As someone who follows FinTech banks really closely, Rob gave us some cool but also scary insights about how data-informed decisions could use voice recognition, social media and IoT to inform whether loans, insurance or other services were offered to people. I also felt like I was a club member when he asked how many of us were Monzo users and half the room put their hands up.</p>

<p><img src="/images/posts/pictures/yorktechconference19/den.jpg" alt="Dragons Den" /></p>

<p>The blockchain task was especially good, as the Dragons Den pitch I did won us Amazon vouchers! We were tasked with thinking of an inventive way to apply blockchain to a real-world situation, bearing in mind the limitations of the technology as well as where it excels.</p>

<p>Steve and I came up with the idea based on Steve’s knowledge of housing issues in Africa where property fraud means that houses are being sold to multiple people and I realised this could be applied in an open land-registry system where ownership was shown transparently. This would mean changes in ownership were on the blockchain, so transaction history was shown to stop fraud and stop Government corruption as auditable records show when ownership has been changed, something that’s achieveable with blockchain despite it’s low transaction rate.</p>

<h5 id="bbc-ux-and-castles-in-the-sky">BBC UX and Castles in the Sky</h5>
<p><img src="/images/posts/pictures/yorktechconference19/slides.jpg" alt="Room of delegates" /></p>

<p>Next up, after lunch we went into a big lecture theatre to hear from the Mansha Manohar, a senior UX design researcher at the BBC who gave us an overview about the journey getting into doing professional UX design and asking the questions about designing what people need and how do we make sure we’re doing the right thing.</p>

<p>We learnt about how user testing is the most important part of the design process, and how by taking a prototype to the users early on you can find big problems really quickly, we also heard the advantages of agency vs employed work and the best ways to get exposed to the widest range of experiences.</p>

<p><img src="/images/posts/pictures/yorktechconference19/room.jpg" alt="Room of delegates" /></p>

<p>Ross Sleight from Somo then gave us an overview of designing ethical businesses, and the important areas psychologically of app development, with the importance of thinking twice before you design a product that addicts and has a negative effect on people’s lives. I think this attaches quite well to what Bethan spoke about at <a href="/events/2019/01/16/codepen-jan.html">CodePen January</a> about the importance of taking responsibility for what you design.</p>

<p>Tim Burnett spoke to us about the Cyber Threat landscape and what modern threats to our tech looks like, with the increase of nation-state attacks, ransomware and harder to stop attacks and the lack of enough people in the industry to actually deal with this threat. With an evolving threat landscape, we’ll have to rely more on AI as hacks become more covert and motives change, with state attacks focussing more on getting in and finding information covertly compared to the previous style of individual attackers shouting and telling-all about their hacks.</p>

<p>We had a panel debate next, where the audience voted online and we heard a discussion on the Apple/Google difference in privacy stance, self-driving cars and technology in the next 5 years.</p>

<h5 id="ibm-research">IBM Research</h5>
<p><img src="/images/posts/pictures/yorktechconference19/ibm.jpg" alt="IBM talk" /></p>

<p>The talks for the day wrapped with Helen Bowyer, an inventor at IBM Research giving us an overview of IBM’s areas of focus, including AI, blockchain counterfeit prevention and <a href="//www.research.ibm.com/5-in-5/lattice-cryptography/">lattice cryptography</a> - an incredibly complex and cool way to secure data. I also wasn’t aware that <a href="//nodered.org">Node-RED</a>, the system for linking together IoT devices was designed by IBM too.</p>

<h5 id="networking">Networking</h5>

<p>It was a great day out, and it was really interesting to find out about more of technologies I knew very little about before, like the potentials of Blockchain. I was also able to learn more about what really interested me like and questions I had wanted to answer but didn’t know who to ask, including the potentials for data processing with the archives at the BBC.</p>

<p>Thanks to the team at York Technology Conference for organising the event and Mark from <a href="//twitter.com/hullunicareers">Careers Service</a> for getting us there, and Netsells for the drinks after. I’m really excited about what’s coming up next year.</p>
]]></description>
        <pubDate>Sun, 03 Feb 2019 19:45:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/02/03/yorktechconference</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/02/03/yorktechconference</guid>
        
        
        <category>events</category>
        
      </item>
    
    

      <item>
        <title>CodePen January in Hull</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/codepen-jan19.jpg"/>
        
        <p>This week I attended CodePen in Hull again, the first one of the new year after the one where #hullCSS demonstrated SpaceApps at <a href="/events/2018/11/18/hull-of-a-week.html">last November</a>, this event we had three speakers with really different topics, Bethan who talked about ethics in tech, Sundeep who told us about SVGs and Steve who told us about some cool tech he found at Future Decoded.</p>

<p><img src="/images/posts/pictures/CodePen/Jan19/bethan.jpg" alt="Bethan Vincent Talking" /></p>

<h5 id="bethan">Bethan</h5>

<p><a href="//www.bethanvincent.com/">Bethan</a> talked about taking responsibility for change as a developer and the importance of owning your own actions, not relying on other people to make changes and taking initiative yourself as a developer to consider the impacts that your actions have on others.</p>

<p>It was a really interesting talk, and my description doesn’t really do it justice but it’s just a reminder that your actions, however small impact on other people both in your team, end users and beyond.</p>

<p><img src="/images/posts/pictures/CodePen/Jan19/lottie.gif" alt="Lottie Animation" /></p>

<h5 id="sundeep">Sundeep</h5>

<p><a href="//sundeeptoor.github.io/">Sundeep</a> gave us an overview of the best way to use SVGs as components in React and then showed us some really cool work from Airbnb, their tool <a href="https://airbnb.design/introducing-lottie/">Lottie</a>.</p>

<p>It’s an open source tool that converts After Effects animations to animated SVGs with JavaScript to allow them to render natively on different platforms which looks really awesome and can be seen in the animation in this post. Sundeep also gave us a run-through the best ways to optimise SVG’s for the web, it was a really interesting talk.</p>

<p><img src="/images/posts/pictures/CodePen/Jan19/futuredecode.jpg" alt="Future Decoded" /></p>

<h5 id="steve">Steve</h5>

<p><a href="https://twitter.com/stevebowman">Steve</a> gave us an overview of the talks that he went to at Microsoft’s Future Decoded this year, and went through some cool but scary stuff from Microsoft Labs like using Machine Learning with blood cells to be able to provide a list of every illness you’ve ever had - something that could save thousands of lives.</p>

<p>He also gave us an overview of the scale of modern data production with the potential for Smart Cities to produce 250PB of data every day, autonomous vehicles producing 5TB of data daily and every person producing an average of 1.5GB of files every day. The biggest problem we’re on the verge of is how do we save such a huge amount of data, as production rates exceed the capacity we can store?</p>

<p><img src="/images/posts/pictures/CodePen/Jan19/stickers.jpg" alt="Who can say no to cool stickers?" /></p>

<p>Of course, what’s a CodePen event without some super cool stickers and well-illustrated books! This time, I discovered <a href="//increment.com/">Increment Magazine</a> from Stripe, a really cool magazine with the same goals as CodePen events, to show what teams are doing well and good practices so other teams can learn from them and do even better themselves! The issue I got focusses on security practices.</p>

<p>I also got a Developer, JavaScript and a React sticker from <a href="//wesbos.com">Wes Bos’ collection</a> to add to the Surface sticker set!</p>

<p>Thanks again to <a href="//c4di.co.uk">C4DI</a> for hosting the event!</p>
]]></description>
        <pubDate>Wed, 16 Jan 2019 17:00:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2019/01/16/codepen-jan</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2019/01/16/codepen-jan</guid>
        
        
        <category>events</category>
        
      </item>
    
    

      <item>
        <title>End of Semester One (Year 2)</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/y2s2.png"/>
        
        <p>This is my slightly late review of last semester and what I’ve been up to! I’ve built numerous applications in projects for my course but we’ll get into that shortly; I’ve also had a lot of project management practice this semester, being in charge of delivering an agile group report as well as software.</p>

<h5 id="ultra-run">Ultra Run</h5>

<p><img src="/images/projects/ultrarun/parts.png" alt="Arduino Code" /></p>

<p>Ultra Run was my project for Electronics and Interfacing where we were tasked with building a timer with additional functionality using a NeoPixel 7-segment display to track a runner.</p>

<p>I added additional functionality using RFID and serial to track individual runners and show them in a desktop application, allowing the runners’ progress to be tracked centrally. Then returning a serial communication to the Arduino to give visual feedback the card has been accepted, due to the flaky nature of Arduino serial to ensure all scans are imported correctly.</p>

<p><br /><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/ultrarun">More about Ultra Run</a></p>

<h5 id="location-hub">Location Hub</h5>

<p><img src="/images/projects/locationhub/minicover.png" alt="Software Functions Image" /></p>

<p>Location Hub was my project for Information Systems and Web Technologies, where I had to build an app to show staff where in the University students are at any given time, presenting to users both their current location and where they’ve been over the past 24 hours.</p>

<p>Because of requirements for the assignment, this project had to be built with PHP and MSSQL as it’s underlying technologies. It was interesting to use these, although I’m not sure I’d use MSSQL in future projects as I prefer MySQL/SQLite.</p>

<p><br /><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/LocationHub">More about Location Hub</a></p>

<h5 id="fitness-hub">Fitness Hub</h5>

<p><img src="/images/projects/fitnesshub/hubfull.png" alt="Login" /></p>

<p>For Systems Analysis and Design, we were tasked with designing a system that could be used to manage members and bookings at the University of Hull’s new fitness facilities, migrating them from their current Excel spreadsheet based solution used since they opened this September.</p>

<p>The project was based mostly around ensuring that requirements were properly captured and ensuring that the Software Requirement Specification (SRS) document was detailed and correct to build a successful piece of software. It was an interesting project and we produced a C# WPF application.</p>

<p><br /><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/fitnesshub">More about Fitness Hub</a></p>
]]></description>
        <pubDate>Mon, 07 Jan 2019 23:27:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2019/01/07/end-semester1-year2</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2019/01/07/end-semester1-year2</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Building an MQTT connected Tardis</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts//banners/bluebox.jpg"/>
        
        <p><img src="/images/projects/bluebox/heading.jpg" alt="Tardis on a desk" />
After coming home from University last Christmas, I saw my childhood Tardis sat on my desk disused and thought, I’m a CS student - I can build something cool out of that. Using NeoPixels, an ESP8266 and MQTT, I did.</p>

<h5 id="tech-choices">Tech Choices</h5>
<p>The first thought was how was it going to work, batteries were out as it used to devour them three at a time, so USB power was the obvious choice due to its ubiquity (and who doesn’t have a drawer full of adaptors).</p>

<p>As for the module inside, initially planning to use a Raspberry Pi Zero as I’d used previously had experience scripting on it. But improperly turning off a Pi could corrupt it’s SD - as it’s a full-fledged Linux OS on an SD card. For this project, I needed something that I could flash and restart freely as well as use minimal power, so I chose the ESP8266. After playing with various languages for the chip, I settled on MicroPython as the most familiar to me (as I’ve worked with it on a <a href="//microbit.org">BBC micro:bit</a> before).</p>

<h5 id="getting-parts-and-building">Getting Parts and Building</h5>

<p><img src="/images/projects/bluebox/tardis-wiring/roof.jpg" alt="RGB LED" />
I picked up another Tardis from eBay for around £20, as I wanted to keep my one as a reference (just in case I couldn’t get it back together), an ESP8266 an RGB LED and an LED strip, when it arrived I started prototyping with my breadboard, building a working version with the RGB strip broken into 4 sections around the interior of the roof and the separate LED in the lamp.</p>

<p>I had a fully working prototype after cooking a few ESP8266’s, experiencing some horrible smells of electrics burning and learning some electrical lessons the hard way (<em>if only I had my electronics module a year earlier!</em>)</p>

<p><img src="/images/projects/bluebox/circuit-image-final.png" alt="Circuit Final" /></p>

<p>When I measured up to fit everything back in the Tardis though and reassemble, I realised that my cable loom would be too big to actually fit in the box and I started thinking about alternate ways to do this.</p>

<p>At a Hardware Meetup last Spring there was a lot of excitement around NeoPixels and after buying some and playing with them - they’re pretty cool and far better than my previous LED strip to light the inside as LEDs can be controlled individually meaning that they can be used for patterns.</p>

<p>I built the circuit instead as can be seen on the right, which allowed me to only need to run 5 cables up to the roof which was more easily done and meant I could more easily reassemble after.</p>

<h5 id="software-side">Software Side</h5>

<p>There’s more information about the firmware on the Projects page (and on GitHub), but the ESP8266 ran MicroPython and connected to a remote server using <a href="//mqtt.org/">MQTT</a> and fetching various commands from there allowing <code class="language-plaintext highlighter-rouge">notify50,50,50</code>, <code class="language-plaintext highlighter-rouge">lamp50,50,50</code>, <code class="language-plaintext highlighter-rouge">interior50,50,50</code> allowing notification lights, lamp flashes or interior colour changes based off the command and HEX colour value. I’m intending to implement this within Home Assistant to allow colour changing from Apple’s HomeKit and Alexa too.</p>

<h5 id="final-product">Final Product</h5>

<p>I’m really happy with what I made and the final product and the functionality that it has, and it’s a nice extra bit of Smart Home technology for me to light my room, as well as serve notifications in an eye-catching way. I’ve also learnt a lot of interesting background information on electronics which I found really helpful going into my electronics module this semester.</p>

<p><br /></p>

<center><br /><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/bluebox">More about BlueboxNotify on Projects Page</a><br /><br />



<i>P.S. I've saved the cross-dimensional travel functionality for Version 2.0!</i>

</center>
]]></description>
        <pubDate>Wed, 19 Dec 2018 15:00:00 +0000</pubDate>
        <link>https://nathaniel.work/build/2018/12/19/bluebox</link>
        <guid isPermaLink="true">https://nathaniel.work/build/2018/12/19/bluebox</guid>
        
        
        <category>build</category>
        
      </item>
    
    

    

    

    

    

      <item>
        <title>Design Meet Up Hull</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/pictures/designmeetup/postit.jpg"/>
        
        <p>Two weeks ago, I went along to the second Design Meetup in Hull City Centre designed to unite freelancers, local businesses and industry leaders to encourage good practices in design, share ideas and get together with likeminded creatives in the local area.</p>

<h5 id="our-speaker">Our Speaker</h5>
<p><img src="/images/posts/pictures/designmeetup/present.jpg" alt="Presentation" /></p>

<p>Our talk was led <a href="http://ottawaymedia.co.uk">Sophie Ottaway</a>, a user experience consultant who’s worked with different branches of Government and who told us about the principles that they use in design, what works well but also areas that could be improved.</p>

<p>We covered the perception of UX design and common misconceptions about what UX actually is, it’s not just a consideration of how a user interacts and then UI, it’s the full user journey and should start way before any kind of planning for the project, as it’s important to understand who your users are, what they <em>want</em> from you and how you can make this interaction as slick as possible.</p>

<p>This is used all through GDS, like <a href="'//www.gov.uk/service-manual/design/naming-your-service'">naming services verbs</a> to go from ‘<em>Renew your passport</em>’ instead of ‘<em>Fill out a passport LS01 form</em>’ to make the users interaction quicker and more frictionless.</p>

<p>Sophie told us about better ways to research too, and while companies can throw thousands of pounds at a market research company, if you’ve got the time you can often get better data and a more representative view by going out yourself and meeting people - and going out on <a href="//uxmag.com/articles/getting-guerrilla-with-it">guerilla research</a> to meet your users in person can both save money and get more useful information.</p>

<p>We wrapped the talk with an overview of the importance of metrics and how Google Analytics and <a href="'//www.hotjar.com/'">hotjar</a> can be especially important in designing products by seeing what users are drawn to most with heatmaps, and how if analysed properly data can help you make your service even better.</p>

<p>We were also reminded it’s  important to remember your service in context; with a real world example Sophie told us that to offer a rarely used service in Welsh, it would cost less to send an employee out in taxi accross the country to help the user complete the form each time they needed than rebuild it, without this early research the product could’ve been built when it’s neither needed or financially viable.</p>

<h5 id="getting-involved">Getting involved</h5>
<p><img src="/images/posts/pictures/designmeetup/postit.jpg" alt="It's not Agile without a wall of post its!" /></p>

<p>After a pizza and beer break, we formed into squads of 4 and were tasked with applying the principles that we learned in the session to a real life project and critical services, given the example of NHS 111 and how we’d transform it to a digital service for non-emergencies.</p>

<p>Of course, as an agile task there had to be post it notes involved! We split our board into categories looking at potential users, research, how to prototype and how to test and evaluate if we’ve been successful. It was a really good task that got us thinking and a hands on conclusion for the night, thanks to Sophie for presenting!</p>
]]></description>
        <pubDate>Mon, 03 Dec 2018 23:30:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2018/12/03/hull-design-meetup</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2018/12/03/hull-design-meetup</guid>
        
        
        <category>events</category>
        
      </item>
    
    

      <item>
        <title>Hull of a busy week - Technology events in the city</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/busyweek-hull-nologo.png"/>
        
        <p>This week has been really tech filled, with a CodePen event with a presentation of what we created as part of the NASA SpaceApps Challenge (<a href="/life/2018/10/29/winning-NASA-hackathon.html">see earlier post</a>), as well as taking part in a BJSS pair programming event at the University, filming a promotional video with a design agency, going to a hardware meetup and having a lecture from a Microsoft Intern who told us about working for the company. It’s been a really interesting week!</p>

<h5 id="codepen-hull">CodePen Hull</h5>

<p><img src="/images/posts/pictures/busyweek-hull/codepen.jpg" alt="Image of CodePen Hull" /></p>

<p>As #hullCSS we attended our first CodePen event down at C4DI on the Hull waterfront last Monday. CodePen was a really interesting event that definitely be going back to in future, the evening had five speakers each with their specialism where they gave their best practice advice and showed off their own cool projects to other developers.</p>

<p>We heard from Mike - a local developer who spoke to us about best practises and common downfalls of people writing concurrent applications.</p>

<p>Next was Amalia - a freelance developer who told us the issues she had trying to manage projects and tasks, not finding anything to fit her workflow and showed us the platform she wrote to track bills and show customers how far their project was in development.
Matt from Sauce then gave us an overview of the best ways to do state management in Redux (for React) which was really interesting as I’d used Redux previously in my internship this year.</p>

<p>Harry then gave the audience a demo of our SpaceApps Challenge entry and got some questions from the audience and some really positive interest about our project, which was great! Dave, a developer at The One Point then wrapped up the evening with some pretty interesting APIs for Microsoft products.</p>

<p>All in all it was a really good night, and the free pizza and beer made it even better!</p>

<h5 id="bjss-pair-programming">BJSS Pair Programming</h5>

<p><img src="/images/posts/pictures/busyweek-hull/bjss.jpg" alt="Image of BJSS" /></p>

<p>The BJSS Event on Tuesday took place at the University, where we had 5 teams competing to come up with the most creative solution to the problem of “<em>How can you convert a string of currency in word form to numbers</em>” and vice versa (acceptable entries would include both ‘<em>£21.33</em>’ and ‘<em>twenty one pounds and thirty three pence</em>’). There was a catch that solutions had to be made using test-driven development, so tests had to be written before we did any programming.</p>

<p>After spending a few minutes trying to remember the syntax for XUnit tests, we got going and made our outline tests and got a functional product going from currency to words and started on the tests to go the other way.</p>

<p>It was really interesting to get another perspective on development, and although a very extreme approach I saw the merit of having these very defined tests before we started programming; there was free pizza here too which was nice of them.</p>

<h5 id="promotional-video">Promotional Video</h5>

<p><img src="/images/posts/pictures/busyweek-hull/promovid.jpg" alt="Image of Promo Video Filming" /></p>

<p>On Wednesday and Thursday, I’d been asked if I wanted to take part in UPP’s (<em><a href="//www.upp-ltd.com/">University Partnership Programme’s</a></em>) promotional video to show the accommodation I live in to new prospective students, other properties they own and their shareholders.</p>

<p>It was a packed two days, where we spent Wednesday afternoon filming B-roll for the video of me and some of my flatmates touring the University and our accommodation blocks, and then in the evening I had an interview to ask about my experiences (something that was exciting and less scary than I anticipated).</p>

<p>On Thursday we spent the day doing promotional photos, including me stood in 25 different places around a washing machine and across campus. It was a really interesting couple of days and was great to get to meet and work with the team from <a href="//hatchedlondon.com">Hatched London</a> who co-ordinated the days.</p>

<h5 id="hardware-meetup">Hardware Meetup</h5>

<p><img src="/images/posts/pictures/busyweek-hull/hardware.jpg" alt="Image of Hardware Meetup Hull" /></p>

<p>After finishing on the photos on Thursday, I headed down to C4DI with some members of the <a href="//hullCSS.org">#hullCSS</a> exec (<a href="//harrygwinnell.co.uk">Harry</a> and <a href="//adamt3d.com">Adam</a>) for a PCB (printed circuit board) specialised Connected Humber Meetup.</p>

<p>Harry showed us some of the boards he’d designed for a multi-directional camera, we also met <a href="//www.nerdonic.com/products/exen/mini">Hayden</a> the creator of the world’s smallest Arduino compatible device.</p>

<p>Paul then showed us how to design our own printed circuit boards and the right software to do it and get them made up - it was really interesting and super cool how the circuit designs were validated if they were possible to make before sending them off across the UK or to China.</p>

<p>As it’s so incredibly cheap to do and with so much room for extension, it’s definitely going to be something I try in the future.</p>

<h5 id="microsoft-seminar">Microsoft Seminar</h5>

<p><img src="/images/posts/pictures/busyweek-hull/microsoft.jpg" alt="Image of Microsoft at Hull" /></p>

<p>On Friday, Kaan, a placement year student from the University of Hull who’s currently working at Microsoft came in to have a chat with us about what it’s like working at Microsoft, career opportunities and jobs at the company.</p>

<p>It was really interesting to find about the available schemes, but also as to how interconnected he felt as an intern being able to travel across the globe with the business and work with people at home, in the USA and in all of Microsoft’s satellite offices.</p>

<p>At the end Kaan challenged us with a <a href="https://kahoot.com/what-is-kahoot/">Kahoot</a> to find out whp took the most in from the presentation with prizes; when he mentioned prizes the stakes went up and we were in for an ultra-competitive 5 minutes. I ended up coming second in the quiz and still got a pretty nice tote bag and a nifty rollable water bottle <em>(see image to right)</em>.</p>

<p>Overall it’s been a really interesting week and I’ve learned a lot of cool stuff and met some really interesting people.</p>
]]></description>
        <pubDate>Sun, 18 Nov 2018 23:40:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2018/11/18/hull-of-a-week</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2018/11/18/hull-of-a-week</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Making an RSS Feed for CSBlogs</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts//banners/rss.png"/>
        
        <h5 id="what-is-csblogs">What is CSBlogs</h5>

<p><a href="//csblogs.com">CSBlogs.com</a> is a really useful Node.js web application serving the Computer Science blogging community,  built for and maintained by Computer Scientists and designed to let people to share their blogs with each other and encourage sharing projects and cool tech stuff within the community and beyond.</p>

<h5 id="what-have-you-made-and-why">What have you made and why?</h5>

<p><a href="/images/projects/csblogs-rss/csblogs-site.png"><img src="/images/projects/csblogs-rss/csblogs-site.png" alt="CSBlogs Site" /></a></p>

<p>I’ve wrote an application that parses the JSON feed that’s provided by their API and converts it to an RSS feed, I chose Node.JS to build on as I needed a flexible web based platform that’s lighter than something I could write in C# MVC, I wanted to keep on top of my JavaScript too and this gave me an opportunity.</p>

<p>It’s a work in progress, and I intend to add features like caching to it, it’s low traffic only being fetched by Zapier for the #hullCSS Discord and Feedly at the moment so it isn’t as necessary but as a long term strategy it’s certainly something I’m looking to implement.</p>

<h5 id="how-did-you-make-it-and-where-is-it">How did you make it and where is it?</h5>

<p>Good question! You can find out more about the creation of the project on it’s project page here:
<br />
<br />
<a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/csblogs">CSBlogs Feed on Projects Page</a></p>
]]></description>
        <pubDate>Sun, 11 Nov 2018 18:00:00 +0000</pubDate>
        <link>https://nathaniel.work/build/2018/11/11/csblogs</link>
        <guid isPermaLink="true">https://nathaniel.work/build/2018/11/11/csblogs</guid>
        
        
        <category>build</category>
        
      </item>
    
    

      <item>
        <title>HullPixelBots with Rob Miles</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hullpixel.png"/>
        
        <p><img src="/images/posts/pictures/pixelbot/room.jpeg" alt="Presenting" /></p>

<p>Yesterday Rob Miles, the creator of HullPixelBot, ex-lecturer at the University and now cool local tech person resident at the <a href="//C4DI.co.uk">C4DI</a> came to host a <a href="//hullCSS.org">#hullCSS</a> (Hull Computer Science Society) event and explain to us his work to make the robots - why he made them and how we could make our own robots.</p>

<p><img src="/images/posts/pictures/pixelbot/hpbot.gif" alt="HullPixelBot Lightbox" /></p>
<h5 id="why-hullpixelbot">Why HullPixelBot</h5>

<p>They’re designed to be an easy and cheap intro to robotics for anyone, whether you’ve never played with an Arduino before - and is a product of modern electronics really, that anyone can build something cool and expand upon the basic robot.</p>

<h5 id="operating-systems-and-communication">Operating Systems and Communication</h5>

<p>Rob spoke to us about MQTT and the advantages it has for IoT (Internet of Things) devices with its low overhead. I’ve played with MQTT before, both with <a href="/network/2016/04/16/getting-started-owntracks.html">OwnTracks</a> and currently over the web with <a href="/projects/2018/01/19/bluebox.html">blueboxNotify</a>, Rob told us his recommended way to hook IoT devices into Azure to control them with a serverless infrastructure, handy for anything from Robots to Rob’s suggestion of an annoying device with a light sensor that only buzzes when the lights are turn off - one that’s likely to get you into your housemates bad books!</p>

<p>In addition to the robots themselves, PixelBots can run their own operating system on the Arduino - we had a demo of hullOS which is pretty similar in syntax to Python, especially handy for people new to programming but for those already familiar with C/C++, you can just write code straight for the Arduino.</p>

<p><a href="/images/posts/pictures/pixelbot/robot-rumble.png"><img src="/images/posts/pictures/pixelbot/robot-rumble.png" alt="Presenting" /></a></p>

<p>We’re also hoping to get involved as #hullCSS with Rob’s upcoming <em>‘Robot Rumble’</em> - a micro hackathon where each team is given a HullPixelBot and a minute to write software for it and time to quickly test it before sending it down an obstacle course to see who gets the furthest - a really cool event, and technically cool too as the robots can be programmed remotely straight from Azure.</p>

<p>Rob had also made a really cool 3D printed NeoPixel lightbox that’s controlled by Arduino as you can see as a GIF on the right, something I now want to make too.</p>

<p><em>You can also read about this event on Rob’s own blog <a href="//www.robmiles.com/journal/2018/11/7/hull-pixelbots-and-the-wrong-kind-of-quotes">here</a>.</em></p>
]]></description>
        <pubDate>Sat, 10 Nov 2018 21:00:00 +0000</pubDate>
        <link>https://nathaniel.work/events/2018/11/10/hullpixelbots-hullcss</link>
        <guid isPermaLink="true">https://nathaniel.work/events/2018/11/10/hullpixelbots-hullcss</guid>
        
        
        <category>events</category>
        
      </item>
    
    

    

      <item>
        <title>Winning NASA's Space Challenge</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/nasa2018.jpg"/>
        
        <p><img src="/images/posts/pictures/NASAHack2018/screenshot.png" alt="App Design" /></p>

<p>Last weekend as <a href="//hullcss.org">hullCSS</a>, we went down to the C4DI on the waterfront at Hull to participate in the annual NASA Space Apps Challenge in the largest group in a hackathon we’ve taken part in as hullCSS before (and my first).</p>

<p>Arriving bright and early for a 9am kickoff on Saturday we got set up and ready to code, installing the seemingly infinite number of Visual Studio updates and fighting over the available plugs!</p>

<p><img src="/images/posts/pictures/NASAHack2018/group.jpg" alt="Team hullCSS working!" /></p>

<p>With the challenges we had over 20 to choose from, so we had to shortlist and shortlist again, with each of us naming a top five challenges that we thought we could develop the best solution for and eventually narrowing ourselves down to ‘<em>Do you know when the next rocket launch is</em>’. We looked around the internet to find out existing solutions that addressed this question and brainstormed how we could do what they do better.</p>

<p>We knew we needed something that was fun and engaging to use, which led to us choosing PlayCanvas to create a 3D earth visualisation to build on and display rocket launches as they were taking place on a map for the user.</p>

<p>Once we knew the project that we were building, I could take the lead on frontend development and branding, we chose .NET Core MVC as our platform to build off as the technology that the group were most comfortable with. For the brand design we wanted a bright futuristic look that stood out to the user.</p>

<p>As the project took shape throughout the day, our graphics specialist team (<a href="//harrygwinnell.co.uk">Harry</a> and <a href="//adamt3d.com">Adam</a>) made the world spin and fully interactable, the backend team (Dan and Alex) scraped data from the web, cleaned it up and stored it ready to pass over to the frontend (me)!</p>

<p>In the meantime I made the model, view and controller to show the data to users for each launch in a nice webview using blocks to display each type of content, display livestreams and available data (which varied based off when the launch was scheduled and the operator). At 7pm we had a break and swarmed in on the pizza. We wrapped up for the evening around 9.30pm but I met back with the team in the library to get the calendar functionality up and running but decided to call it a day at midnight to be ready for our 8am Sunday start.</p>

<p><img src="/images/posts/pictures/NASAHack2018/present.jpg" alt="Group presentations" /></p>

<p>We started Sunday with a large coffee and a proper breakfast at the cafe outside C4DI, holding a prioritisation meeting to discuss what we’d be up to today to get ready for judging at 3pm.</p>

<p>As 3pm drew closer we polished up the application and put the presentation together, adding VR to the application for fun and testing it with a VR headset (it was pretty cool!)</p>

<p><img src="/images/posts/pictures/NASAHack2018/teamwin.jpg" alt="Team hullCSS win!" /></p>

<p>Rob Miles and and outside judge watched through the presentations, and as judging began nerves were high as all the entries were really awesome. After everyone had presented the judges went off to deliberate and eventually they returned announcing we’d won as the overall winner.</p>

<p>We were delighted to be announce we were the overall winners as we were all proud of our end product, as I believe we created something both educational and fun. The project also brought us together as a closer team and we each learnt a new side of programming, I personally really enjoyed learning more about PlayCanvas, and it was a really good opportunity to get to grips with a new technology.</p>

<p>Thank you to C4DI for organising and making the event possible and to Tim Goodfellow for running the social media coverage of the event.
You can see our entry <a href="//2018.spaceappschallenge.org/challenges/can-you-build/when-next-rocket-launch/teams/hullcss/project">on the NASA website here</a>, C4DI’s coverage of the event <a href="http://www.c4di.co.uk/nasa">here</a> and the other members of hullCSS’ blog posts here from <a href="//harrygwinnell.co.uk/nasa-space-apps-challenge">Harry</a> and <a href="//adamt3d.com/2018/10/23/hullcss-local-winners-of-nasa-space-apps-challenge/">Adam</a>.</p>

<p><br /><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/projects/SpaceTrack">SpaceTrack on Projects Page</a><br /><br /></p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/-PqUOfSeLFs" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
]]></description>
        <pubDate>Mon, 29 Oct 2018 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2018/10/29/winning-NASA-hackathon</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2018/10/29/winning-NASA-hackathon</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Visiting Sky Leeds</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/pictures/SkyInsight/team.jpg"/>
        
        <p>I had a great visit last Thursday to the Sky Offices in Leeds for their Insight Day, a day based around finding out a bit more about working for Sky and the types of projects that their teams are working on.
<img src="/images/posts/pictures/SkyInsight/cafe.jpg" alt="Sky Leeds Cafe" /></p>

<p>Their offices are really cool, modern and sleek and it seemed like a great working space with a big cafe and a flow of different teams of people having meetings and moving between the three Sky buildings. The office culture too seemed really good, as we walked through the main entrance we were greeted with a board of suggested improvements that people had to make office life even better which showed us from the off the teams are really open to feedback.</p>

<p>We started the day being introduced to the team behind Sky’s Software Engineering Academy, and finding out what they were looking for in graduates as well as getting to meet their most recent grads who were able to tell us more about their personal experience of applying and the technology they work with on a daily basis; and given the opportunity to ask them some tough questions!</p>

<p><img src="/images/posts/pictures/SkyInsight/team.jpg" alt="My Sky Insight Day Team" /></p>

<p>The main part of our afternoon was spent on a coding project, with each of the tables being given a MacBook Pro between a team of 5 people and tasked with making ourselves into an agile team <em><a href="https://www.gov.uk/service-manual/agile-delivery/agile-tools-techniques#sprint-planning-meetings">(more on agile here)</a></em> by assigning a scrum master, product owner, developer and testers between ourselves and come up with an idea to make Sky Cinema a new phone app from a blank mobile bootstrap theme.</p>

<p>When we decided our roles the clocks started and we had three 30 minute sprints to develop ourselves a functional product. Our product owner mapped our user requirements to stories, while our scrum master ensured the stories stuck within our 30 minute available sprint time to protect the sprint. As the developer I was then responsible for writing the app (<em>to some pretty quick deadlines</em>) while the two testers used their phones and our other MacBook to ensure that our application performed well on different devices.</p>

<p><img src="/images/posts/pictures/SkyInsight/mocked-app.png" alt="Our Mocked Insight Day App" /></p>

<p>At the end of each of our 30 minute sprints we had a sprint review, allowing us to work out if our predictions on sprint effort were accurate and refine what was going into the next sprint and moving things around our <a href="https://www.gov.uk/service-manual/agile-delivery/agile-methodologies#kanban">kanban</a> whiteboard!</p>

<p>We were the only group to create a native (progressive) web app from our view, allowing the user to install our very lightweight app easily and hiding away native browser controls to increase engagement. We also used a splash screen to enforce a strong brand image as the user enters the app.</p>

<p>Overall it was a really useful and hands on day that I really enjoyed, it was really interesting to meet and work with other undergrads from different Universities too, and was fun to be thrown into a team to develop something with them; thanks to Sky for having us!</p>
]]></description>
        <pubDate>Mon, 15 Oct 2018 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2018/10/15/sky-open-day</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2018/10/15/sky-open-day</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Meeting industry and learning new technology this semester</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hulldevsandextra.png"/>
        
        <p>As well as my studies this semester, I’ve been to a HullDevs meetup to meet with a community of developers to Sensor City in Liverpool and a HullDevs event to meet local businesses.</p>

<h5 id="visiting-sensor-city-in-liverpool---march">Visiting Sensor City in Liverpool - March</h5>

<p><a href="//twitter.com/meetnathaniel/status/971525712179023874"><img src="/images/posts/pictures/sensorcity.jpg" alt="View of Liverpool City Region from Sensor City" class="circuitsmallimg" /></a></p>

<p>After seeing that the University of Liverpool’s Sensor City (a building to encourage the growth of Smart Cities) was having an open day where local student’s could go and look round and hear from local businesses about opportunities in the region in the future I was really interested, and travelled over from Hull for the day in March (during the industrial action) to find out what the businesses inside were doing.</p>

<p>It was a really interesting day and there were some really cool companies talking, an example being FMI Industries who use big data analysis and compare to an analysis of the driver’s current to assess whether they’re likely to fall asleep at the wheel and what risk they are at, to let the driver make informed decisions as to whether they should take a break or if they’re safe to drive. We heard from a range of companies including medical technology, health condition management using Kinect, and LCR 4.0 (Liverpool City Region) as to what technologies are being made available to local businesses like laboratories for board printing to improve collaboration and encourage more startups.</p>

<p>The event was really insightful and it was great to meet some local businesses and find out about more up and coming technology.</p>

<h5 id="hulldevs---april">HullDevs - April</h5>

<p><img src="/images/posts/pictures/elixr.jpg" alt="Elixr Slide - HullDevs" class="circuitsmallimg" /></p>

<p>After hearing that HullDevs was a great community of developers based in the area, I decided to go along to their April event to learn more about what happens there and what different developers are up to - it’s also really conveniently hosted in the University now.</p>

<p>It was a really interesting event, with two speakers covering two very different topics. The first talk, from <a href="https://twitter.com/pollingj">John</a> - the Director of Sauce based in C4DI (the home of software development in Hull) and was on “<i>Why Elixir / Phoenix Should Be Your Default Choice For Any Modern Web Development Project</i>”. It looks like a really good platform to build applications on because of both the incredible performance that it has and the way it scales so easily; it’s an really interesting technology and and it’ll be something I’ll be looking into learning more of over the summer. You can read more about Elixr and Phoenix <a href="http://phoenixframework.org/">here</a>.</p>

<p>The second talk was from Shahid, a freelance consultant who was talking about building new applications for the cloud using Kubernetes - a platform similar to Docker, with a really cool feature being allowing completely rolling updates to allow zero-downtime upgrading and patching.</p>

<p>I’d definitely recommend that anyone at the University who wants to learn about some other technologies that aren’t taught on the course, but are used in industry goes along to HullDevs, as it’s really interesting and you can learn about technology straight from industry professionals themselves.</p>

]]></description>
        <pubDate>Wed, 06 Jun 2018 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2018/06/06/extra-summer-semester</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2018/06/06/extra-summer-semester</guid>
        
        
        <category>life</category>
        
      </item>
    
    

    

      <item>
        <title>What have I been up to this Semester?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hullamb.jpg"/>
        
        <p>This semester I’ve studied three modules: Programming 2, Sustainable Computing and Software Engineering and Human Computer Interaction.</p>

<p><img src="/images/projects/snippits/snipnew.png" alt="Snippits Image" class="circuitsmallimg" />
In Programming 2, I’ve worked on creating a local management application for a hair salon in C# which allows customers and stylists to register (and are validated before) joining the company, book chairs on available days and book appointments in available slots too. The system manages appointments to ensure conflicts can’t happen, adjusting available appointments slots based off the length of previous appointments. <a href="/projects/2018/05/10/snippits.html">You can read more about this here.</a></p>

<p><img src="/images/projects/digitalcheckup/alldeliver.png" alt="Digital Checkup Image" class="circuitsmallimg" />
In Sustainable Computing, we were tasked with creating something interactive to promote a topic that we were interested in, after surveying friends, family and other non-computer scientist students we decided to focus on Cybersecurity and good online practices. For this I worked with a teammate to collaborate on a a node.js project using Git, the project used the HaveIBeenPwned API and How Secure is My Password to help people assess their online security. We also served them a certificate to print after they completed their training. <a href="/projects/2018/04/11/digitalcheckup.html">Want to know more about this on this project? Read here!</a></p>

<p>In Software Engineering and HCI, we learned about algorithmic efficiency and how do develop the most effective algorithm, and refine it over different iterations. We also worked on the human understanding of design to ensure that what we designed matched what the user actually wanted, and not what they’re told they want. We also covered design planning and how to effectively plan software development and the different models of development, building on the training that I did with QA on effective software design and testing <a href="/life/2018/02/04/joining-sits.html">in January</a>.</p>

<p>Working in the SIS Team, I’ve been testing the Clearing and Fees, Funds and Finance strands of development. I’ve been working since January testing independently from home through JIRA, but lately I’ve been working in the office allowing me to get more familiar with the team. You can read more about this in a post I’ve wrote <a href="/life/2018/05/14/working-in-sits.html">here</a>.</p>

<p>I’ve got a backlog of posts I’ve been working on, from visiting Sensor City in Liverpool in March to learn about Liverpool City Region 4.0 (LCR4.0) and the work they’ve been doing to make Liverpool a smart city, as well as meeting HullDevs to learn about the potentials for JavaScript which I’m hoping to get published after the end of exams next week!</p>
]]></description>
        <pubDate>Wed, 16 May 2018 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2018/05/16/this-semster</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2018/05/16/this-semster</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Working in the SIS Office</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hullcentral.jpeg"/>
        
        <p>Over the last few weeks I’ve been invited to work in the SIS office on the Fees, Funds and Finance integration for the SITS suite at the University of Hull.</p>

<p><img src="/images/posts/pictures/sis-nathanieldaniel.jpg" alt="" /></p>

<p>Before starting at the office, we met up for a Quiz Night with the team which was great, allowing me to put names to faces and meet different people before I came in. After previously working remotely with the team, this week it’s been great working with them more.</p>

<p>My work so far has focussed around Clearing and ensuring the system is ready to go live and includes all the Business Functionality for one of the University’s busiest admissions periods in late August. Clearing Enquiries as a system encompasses everything from managing calls and creating enquiries to following students through and converting enquirers to undergraduate students and managing them up until enrolment in September.
It has also included the Fees, Funds and Finance System which comes into service on the 31st July 2018 to manage all student incoming funds for tuition and accommodation payments from next year onwards. This is moving over from our legacy system, and will ensure our students get their bursaries, loan payments correctly and can make payments to the University efficiently.</p>

<p><img src="/images/posts/banners/hullcentral.jpeg" alt="" /></p>

<p>Working through user stories - which are what end users would do with the system, an example being <i>“as a Finance Administrator I would like to see all application deposit payments and sponsored applicants that are awaiting review, and be able to mark them as accepted once offline payment has been received or if a valid sponsor letter has been provided”</i>, I need to go through the story and test if the functionality works and gives the outcome that is expected so it’s ready to use for the end user.</p>

<p>If the tests pass and I get the expected outcome, I can mark the project as ready to be deployed (introduced to the Live environment) and assign it back to the product owner (person who takes responsibility for that part of the development) who ensures it is sent out. If the tests however fail, I document what errors have happened, how to reproduce and the development team correct them and return the project to me to retest.</p>

<p>It’s been great with the responsibility I’ve got in this role and it feels like I’m making a real difference to students with the work I do as I know everything I test is used for my own academic progression and management and as a student I see the other side of what I’m testing and experience as an end user. I’ve enjoyed working with the team in the office and it’s been especially beneficial to be able to communicate with people and discuss the intricacies of the system by just popping to speak to a developer or product owner at their desk.</p>

<p>As someone who focusses mostly on time developing software, it has been invaluable seeing development from the user’s perspective and it has helped me to develop my own software more intuitively and think more about the user’s experience moving through.</p>
]]></description>
        <pubDate>Mon, 14 May 2018 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2018/05/14/working-in-sits</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2018/05/14/working-in-sits</guid>
        
        
        <category>life</category>
        
      </item>
    
    

    

    

    

      <item>
        <title>Joining SIS at Hull</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hull.jpeg"/>
        
        <p>In December I interviewed and was a successful applicant to become a member of the SIS (Student Information System) Transition Software Tester Team at the University.</p>

<p>I joined the SIS team at Hull to gain industry experience working with delivering a large project which is evolving. I also wanted experience working in both testing and live environments and prepare me for working in the future, as well as adding to my studies with real world experience (as life doesn’t follow the textbook!)</p>

<p>Although software testing isn’t the field I want to go into after University, the agile methodology with everybody gaining an understanding of and the ability to do every role I find really useful, and think it gives team members a better understanding of their colleagues’ abilities. In addition to this getting a perspective from what a tester sees will allow me to become a better developer.</p>

<p><img src="/images/posts/pictures/sistester.jpg" alt="" />
Last Monday to Wednesday the team went on the <a href="//www.qa.com/training-courses/business-systems-development/testing-skills/bcs-foundation-certificate-in-software-testing-including-exam">BCS ISTQB Foundation Testing course</a> which was really interesting and covered the fundamentals of testing asking why should we test, how do we define the objectives of testing and the types of test we can do. I also achieved the qualification after passing the end exam.</p>

<p>We also discussed how every project is different and agile does not suit every project so each project needs an individual analysis and looking at how we can manage testing in a team.</p>

<p>Although the course was aimed to assist us in our overview of testing, I’ve found it really insightful overall in understanding how large a process creating or updating software is, which has widened my understanding of the software lifecycle.</p>

<p>This also has assisted with my <em>Software Engineering and HCI</em> module as we’re now going over in lectures some of the content we discussed in detail in the training.</p>

<p><a href="//sisprojectuniversityofhull.wordpress.com/2018/02/02/student-testers-join-our-team/">You can see more about what I did here (including a quote from yours truly)</a></p>
]]></description>
        <pubDate>Sun, 04 Feb 2018 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2018/02/04/joining-sits</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2018/02/04/joining-sits</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Banking on future technologies</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/monzo.svg"/>
        
        <p><em>Time for one last post of 2017! Happy New Year</em></p>

<p><img src="/images/posts/pictures/monzo-promo.png" alt="Monzo promo image" /></p>

<p>I joined <a href="https://monzo.com/">Monzo</a>, a challenger bank in September as a better way to manage my money when moving to University and to allow me to be able to track my spending to see where and when my money was going.</p>

<p>My initial money management plan for the first week was keeping a pile of receipts and just paying for everything using my Santander Student Account; this was foiled by the fact that as with all conventional banks, it takes 1-5 days for spending to actually appear in my account by which time I’ve already gone over-budget, as well as Sainsbury’s Locals not providing itemised receipts for my shopping (saving the planet but meaning I don’t know what I’ve bought when I look back).</p>

<p>At the start I was only really interested for the instant push notifications, and ability to make notes and add receipts for purchases on the prepaid MasterCard allowing me to see in a timeline where and when I’m spending money.
In the last month they’ve moved me over to a real Current Account with a MasterCard Debit; as a bank it’s almost perfect for me (it just needs Apple Pay, which is believed to the in the works).</p>

<h5 id="where-the-real-interest-comes-though-is-in-the-technology-that-sits-behind-the-bank">Where the real interest comes though is in the technology that sits behind the bank</h5>

<p>Where legacy banks really fail is their underlying architecture, with RBS’ outdated infrastructure causing their Santander deal to fall through and an outage over Christmas in 2012, and Lloyds HBOS implementation costing around <a href="http://www.computerweekly.com/news/2240212567/Big-banks-legacy-IT-systems-could-kill-them">£1.3bn</a> to join their two legacy systems, which are too expensive to replace.</p>

<p>Although these banks are trying to keep up with nice looking customer facing apps and revamped web interfaces, however the systems sat behind these interfaces date from the 90’s and earlier and struggle to keep up with the modern way banks are used with contactless and card for almost all payments which can be seen as <a href="https://www.theguardian.com/money/2016/may/23/cashless-britain-advances-contactless-debit-cards-thrive">less than half</a> of consumer payments were cash in 2015.</p>

<p>What attracted me to Monzo is their use of AWS and building their scalable platform on modern cloud-computing technologies, the same provider used by Netflix, Spotify, AirBnB and <a href="https://aws.amazon.com/solutions/case-studies/enterprise/">thousands</a> of other tech companies use. <strong>If your social media apps can update in an instant, why shouldn’t your bank balance be able to?</strong></p>

<p><a href="/images/posts/pictures/monzo-transact.png"><img src="/images/posts/pictures/monzo-transact.png" alt="My Monzo Interface Screenshot" /></a></p>

<p>They’re also ahead of the curve on an API for banking too, where under the <a href="https://www.paymentsuk.org.uk/policy/european-and-uk-developments/second-payment-services-directive-psd2">European Payment Service Directive (PSD2)</a> all banks are required to share data with the user and other companies if the user allows which is in the works and should be released for all legacy banks in 2019.</p>

<p>API access will revolutionise the way that we bank, with me challenging myself yesterday to write an app to access Monzo’s (Beta API) getting my JSON feeds of accounts transactions, and individual transaction information to give me an amazing amount of detail.</p>

<p><a href="https://github.com/itisNathaniel/Monzo-Flask/tree/master">My code is now on GitHub</a>, it has a Flask web interface and fetches all my transactions, sorting whether they’re purchases, incoming and outgoing payments and changing their colour depending on this as well as fetching the merchant’s icon if they have one and display it to the user.</p>

<p>There’s so many other things I can and want to implement on this though, like using <a href="https://www.mapbox.com/">MapBox</a> to plot all transactions on a map, and using something like <a href="http://www.chartjs.org/">ChartJS</a> track what types of shops money is being spent at.</p>

<p>Overall, it’s a really interesting technology (for me anyway) to have my hands on my own data and allow me to process it and use it as I want, instead of just having a list and a statement <a href="/images/posts/pictures/santander-transact.gif">as I do with my other banks</a> and will let me plan and work out my money so I’m not spending the next 3 years eating just pasta!</p>
]]></description>
        <pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/12/31/monzo</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/12/31/monzo</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Hello, again</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/hull.jpeg"/>
        
        <p>It’s been a while, 88 days to be exact <em>(that’s scary)</em>.</p>

<p>A lot has changed; namely the fact I’m now living across the country, after a stressful few August weeks I’m now studying Computer Science at the University of Hull, in the UK’s City of Culture 2017. It’s been a big move, and pretty weird to be honest, but exciting to discover somewhere new.</p>

<p><img src="/images/posts/pictures/me-staring-hull-history.jpg" alt="Driver Diagram" /></p>

<p>The course is pretty interesting, in semester one we’re studying Computer Systems (essentially how computers work), Quantitative Methods for Computing (Maths around computing) and Programming 1 (basic programming in C#).
Everything is just happening so fast on the course at the moment though; as every day blurs together and I’ve completed almost 40% of some of my modules already through assessments, scary!</p>

<p>I dived right in with WelcomeFest at Hull and had some pretty cool opportunities including seeing Scouting for Girls, the historic side of Hull and getting <a href="https://www.facebook.com/UniversityOfHull/videos/10155708646144322/">videoed writhing in a giant tube (0.30)</a>. Registration was a bit of an odd experience, with three identical lectures that didn’t really say much, and it took over a week to get my ID card so I could get in places, but after that it was more interesting!</p>

<p><img src="/images/posts/pictures/uoh-rabbits.jpg" alt="Rabbits everywhere" /></p>

<p>I’ve also tried to take part in as many things beyond the course as I could, like meeting with the BCS on my second week for an informal review, joining BCS, becoming a Course Rep, going to two talks on power stations (one of which was accidental) and becoming one of the founding members of our new BCS Student Chapter/Computer Science Society.</p>

<p>I’ve also got my first software development related job, becoming a Student Tester for Hull University on their new student information system, which I’m very excited for.</p>

<p>There are some more blog posts planned for here soon, but at the moment I’m always busy with something to do. I’m excited for what I’ve got to come.</p>

<p><em>We also have loads of rabbits around our accommodation, which is nice (see right) – we also have 2 cats, 3 squirrels and a fox, it’s like a (slightly underwhelming) nature reserve.</em></p>
]]></description>
        <pubDate>Sun, 12 Nov 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2017/11/12/reintro-uni</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2017/11/12/reintro-uni</guid>
        
        
        <category>life</category>
        
      </item>
    
    

    

      <item>
        <title>How does online location work?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/connectedmast.png"/>
        
        <h4 id="what-is-geolocation">What is geolocation</h4>

<p><img src="/images/posts/pictures/geo.png" alt="HBO Website, Geo-Blocked" /></p>

<p>Locating devices online can be done in a variety of ways, one of the most popular ways for this is by using IP address. <a href="https://www.iplocation.net/find-ip-address">You can check your own IP here</a> and get quite sinisterly close in some instances to your home address.</p>

<p>IP geolocation works by somebody looking up what your IP address is and comparing it to an official database of who holds which IPs, service providers who hold these IPs may give more accurate data of the physical location (or <a href="https://en.wikipedia.org/wiki/Telephone_exchange">exchange</a> that you’re linked to), at least for BT customers being as accurate as town.</p>

<p>You’ve probably seen something similar to the image to the left, as with online media rights they’re often sold on a per-country basis (why most new films on Netflix aren’t available in the UK whereas they may be in the US, as they’re sold off otherwise - often to Sky). Enforcing different versions of websites or blocking them altogether is done by your IP - through geolocation, which is how some people are able to circumvent it by using a VPN or proxy in another country (although this is usually against the terms and conditions).</p>

<h4 id="what-is-triangulation">What is triangulation</h4>
<p><img src="/images/posts/pictures/phone-location.png" alt="Triangulation of a phone by 3 masts " /></p>

<p>Triangulation is something you’ve probably seen in an action film, when trying to track someone down but it isn’t really as complicated as it seems. When phones are located using masts triangulation is used as it only requires a powered SIM, as opposed to the phone actively sending location.</p>

<p>Triangulation was succeded by <a href="https://en.wikipedia.org/wiki/Trilateration">triliteration</a> which is more accurate as it brings modelling into 3D and allows location to be narrowed down, but for this purpose triangulation is easier to explain.
Looking for the central point between the three masts a central area can be found in which the device is located, however if a provider’s masts are spread apart greatly it can mean that the potential area in which the phone is in is hundreds of metres, and not very useful.</p>

<h4 id="how-can-greater-accuracy-be-reached">How can greater accuracy be reached?</h4>

<p>WiFi Geolocation adds an extra layer to location information as by crowdsourcing or collecting the location of WiFi antennae, your location can be accurately worked out based off the names of the SSIDs and base stations around you, this means that location is improved indoor where GPS isn’t very useful due to being blocked by walls.</p>

<p>Collecting local wireless location information is done in a number of ways, by Google for example either by Google StreetView car which travels around both photographing the area and collecting hotspot names and by the Google Maps Android app storing the names of nearby base station names and reporting their location to Google, so they can be used in future for location.</p>

<p>Apple does the same with iPhones, collecting the names of nearby hotspots in the background and reporting their location to Apple. I remember in 2011 taking a photo on an iPod Touch away from home and wondering how it was tagged with location when I had no WiFi and later realising it was by through this location. It’s an extremely convenient way to get more detailed location as there are far more WiFi base stations to triangulate against than mobile masts.</p>

<h4 id="how-does-my-phone-do-it">How does my phone do it?</h4>

<p>The table below compares the advantages and disadvantages of each method of locating</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>IP</th>
      <th>GPS</th>
      <th>Triangulation</th>
      <th>WiFi</th>
      <th>Hybrid</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>+</td>
      <td>Works if ISPs provide locations</td>
      <td>Can be accurate to 30cm</td>
      <td>Good for accuracy if masts</td>
      <td>Useful if in urban area</td>
      <td>Best of all</td>
    </tr>
    <tr>
      <td>-</td>
      <td>Dynamic IPs make pointless</td>
      <td>Can be blocked by buildings</td>
      <td>Virtually useless if few masts</td>
      <td>Network names need to be re-recorded</td>
      <td>Still not 100% accurate</td>
    </tr>
  </tbody>
</table>

<p><br /></p>

<p>iOS and Android use hybrid systems to locate users through GPS, Triangulation or WiFi to work out where a user is, as each system has significant advantages. Without WiFi location, tracking within buildings would be next to useless.</p>

<p>This combination allows for location to be quickly established, like <a href="https://arstechnica.co.uk/gadgets/2016/07/google-android-emergency-location-service-999/">Google’s emergency GPS service</a> which allows for the emergency services to receive the most accurate location in an emergency.</p>

]]></description>
        <pubDate>Wed, 16 Aug 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/logistics/2017/08/16/wifi-geolocation</link>
        <guid isPermaLink="true">https://nathaniel.work/logistics/2017/08/16/wifi-geolocation</guid>
        
        
        <category>logistics</category>
        
      </item>
    
    

      <item>
        <title>What happens to old phone numbers?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/call-incoming.png"/>
        
        <p>An interesting question of logistics, is that of phone numbers and how they’re handled in the UK, how’re they managed and what problems does increased connectivity bring?</p>

<h4 id="context">Context</h4>

<p>In the UK SIM cards are not per region, all mobile numbers are in the form <code class="language-plaintext highlighter-rouge">07XXX XXXXXX</code>, whereas in North America they are per-area, in the UK whether you’re in England, Wales, Scotland or Northern Island your phone number will be of the same form.</p>

<p>When you get a new SIM card from a new phone company, either <em>pay as you go</em> or <em>pay monthly</em>, you’ll be allocated a new phone number or you’ll have the option to bring your old number if you have one. But if you choose a new number, what happens to the old one?</p>

<h4 id="the-number-shortage">The Number Shortage</h4>

<p><a href="https://en.wikipedia.org/wiki/Smart_meter#United_Kingdom">Smart Meters</a>, soon to be commonplace in the UK require a SIM card to connect over the Internet (a big problem with the Internet of Things (but that’s been discussed in a previous post), meaning that 27 million <a href="http://visual.ons.gov.uk/uk-perspectives-2016-housing-and-home-ownership-in-the-uk/">[ONS]</a> additional phone numbers will be needed just for Electricity and a further 27 million for Gas, meaning that 54 million additional phone numbers would be needed for these devices to connect to the internet. As a result, Ofcom are considering adding additional digits for these devices numbers to potentially free billions of additional numbers.</p>

<p>The shortage of phone numbers is added on to by the hoarding of inactive numbers by providers, where only 15.4% of O2’s 152.3 million numbers active and EE with only 20.6% of 133.6 million SIMs active. (<a href="http://www.mobilenewscwp.co.uk/2014/02/24/ofcom-takes-action-to-avoid-mobile-number-shortage-fears/">Source</a>)</p>

<h4 id="phone-number-deletion">Phone Number Deletion</h4>

<p>The actual management of numbers isn’t managed by Ofcom (the UK’s phone regulator, networks are only told to use numbers ‘<em>effectively and efficiently</em>’. As a result, how long until your phone number is deleted depends on your service provider, but your number being deleted only happens if you haven’t made a call, text or accessed the internet on your device within the following amounts of time:</p>

<h6 id="this-point-are-when-your-number-is-deleted-your-credit-is-usually-deleted-and-sim-card-cancelled-before-this-point-source">This point are when your number is deleted, your credit is usually deleted and SIM card cancelled before this point. <a href="http://kenstechtips.com/index.php/payg-inactivity-account-termination-and-credit-expiry#ASDA-Mobile">Source</a></h6>

<table>
  <thead>
    <tr>
      <th>EE</th>
      <th>O2</th>
      <th>Three</th>
      <th>Vodafone</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>180 days</td>
      <td>6 months</td>
      <td>6 months</td>
      <td>6 months</td>
    </tr>
  </tbody>
</table>

<h4 id="number-reallocation">Number Reallocation</h4>

<p>There are no real rules on reallocation of numbers either, the only law is that they are quarantined for 6 months, but variation from this can be seen in that my own old Vodafone number from 5 years ago is still disconnected and not reallocated.\</p>

<p>When the phone number stops being yours however, it waits in quarantine and then returns to the reallocation pool where it will either be returned to an inactivate SIM (as can be seen by tills in supermarkets) or a new person’s contract.</p>

<p>There are problems with reassigning numbers if people have had them previously even if they have been left disused for a year. Repeated nuisance calls or texts from people looking for the previous owner will only ring once but spam callers or <a href="https://forums.digitalspy.com/discussion/1190557/recycled-mobile-phone-numbers">even debt collectors</a> could try to contact for years to come.</p>

<h4 id="fringe-cases">Fringe Cases</h4>

<p>Phone numbers are provided in blocks of 100,000 to providers when they start to run out of numbers. You can be see the blocks each provider owns <a href="http://static.ofcom.org.uk/static/numbering/S7.xls">here</a> or you can reverse lookup your own <a href="https://portal.aql.com/telecoms/network_lookup.php?number=07821+884226&amp;nlSubmit=submit">here</a>. But if you have phone number with EE and then port it to O2, the number returns back to the original provider (O2) to be reallocated.</p>

<h4 id="overall">Overall</h4>

<p>Ofcom expects providers to responsibly manage their numbers responsibly and reallocate their existing numbers before asking for new ones. The rise of the Internet of Things devices through devices such as smart meters or even 4G equipped CCTV cameras are going to require a rethink of the number allocation system, and potentially giving these devices longer numbers or a different type of identifier.</p>

]]></description>
        <pubDate>Thu, 10 Aug 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/logistics/2017/08/10/phone-no</link>
        <guid isPermaLink="true">https://nathaniel.work/logistics/2017/08/10/phone-no</guid>
        
        
        <category>logistics</category>
        
      </item>
    
    

      <item>
        <title>How 'smart' are smart meters?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/smart-meter.png"/>
        
        <p>Smart Meters are proposed to be offered or installed in every UK home and business by 2020.</p>

<p>This post is based towards the technical challenges and consequences of smart meters as opposed to the generic advantages the providers give, looking at how they network and what happens to their data.</p>

<h4 id="generally-with-smart-meters">Generally with Smart Meters</h4>

<table>
  <thead>
    <tr>
      <th>Advantages</th>
      <th>Disadvantages</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>No manual readings needed</td>
      <td>Have security vulnerabilities</td>
    </tr>
    <tr>
      <td>Can get cheaper prices off peak</td>
      <td>Personal data safety</td>
    </tr>
    <tr>
      <td>Informs you of energy habits</td>
      <td>Readings have to be verified</td>
    </tr>
    <tr>
      <td>You know exactly what energy you use when</td>
      <td>Real world savings UK estimated 2%</td>
    </tr>
  </tbody>
</table>

<h4 id="data-collection">Data collection</h4>

<p>British Smart Meters communicate back to the <a href="https://www.smartdcc.co.uk/">Data Communications Company (DCC - a Capita subsidiary)</a> through SIM cards, the data is then transferred to individual energy companies.</p>

<p>I originally thought they would connect via a powerline networking back to the substation and network from there which would limit the potential for external interference as the attack vector is limited to either physical access to the smart meter or interception between the home and substation, but instead smart meters are opened up to an internet of things and a lot of potential vulnerabilities.</p>

<h4 id="is-it-actually-secure">Is it actually secure?</h4>

<p><img src="/images/posts/pictures/smart-meter-diagram.png" alt="Smart Meter Network Diagram" /></p>

<h6 id="diagram-from-ncscgovuk">Diagram from <a href="https://www.ncsc.gov.uk/articles/smart-security-behind-gb-smart-metering-system">ncsc.gov.uk</a></h6>

<p>The point in this network I would be most concerned about is the communications service which is exposed to the wider internet and at risk as a result.</p>

<p>However the NCSC have put in some pretty <a href="https://www.ncsc.gov.uk/articles/smart-security-behind-gb-smart-metering-system">neat</a> failsafes into their network with the following:</p>

<ul>
  <li>All smartmeters have unique authentication keys for each meter and message, reducing vulnerability at the smart meter’s side and making it very hard to reverse engineer</li>
  <li>Per role permissions, restricting who can do disconnects to only your supplier</li>
  <li>All meters have to be introduced and set up with a public/private key pair certified by the DCC’s own CA</li>
  <li>The active checking for a anomaly’s, i.e. if many service disconnect commands are send from an infiltrated supplier the commands will be ignored and the alarm raised</li>
  <li>Limiting the number of simultaneous connections, so not every household is connected at once</li>
</ul>

<p>Obviously, these don’t make the system impenetrable by any means, but an attacker would have to infiltrate both a provider and the DCC to be able to shut off even a few households.</p>

<h4 id="who-owns-the-data">Who owns the data</h4>

<p><a href="http://www.onzo.com/about-us/">Onzo</a> is one of the first companies to move in on this field of Big Data in the smartmeter industry, using customer data to create a personal profile and tailor ad or sales campaigns to customers. You have the right to opt-in or out of data sharing however with third parties by your energy supplier, likely by ringing the up or visiting their website.</p>

<p>For the moment data usage is very restricted, likely as an attempt to reduce the large stigma and backlash that they’ve received. You can choose how often daily to send readings, if your supply details can be used for marketing and if third parties can see them.</p>

<h4 id="where-they-dont-work">Where they don’t work</h4>

<p>Smart meters dependency on the mobile network, most mobile providers promise service covering 99% of the country on a coverage map, but travelling around you can see this really isn’t the case. Fitting smart meters in a semi-rural settlement or a home in a valley with no service will have no impact, as the meter will be unable to communicate with the service provider so manual readings will need to be taken.</p>

<p>The smart meter network was designed to accommodate provider changes, however at least for now there are incompatibility issues within the smart meter network, as some of the first 8 million smart meters are incompatible with other providers, meaning that potentially you would need a new meter or having to take manual readings to move to a new provider, to simply reprogramme all of these smart meters it will cost at least £500m.</p>
]]></description>
        <pubDate>Sat, 29 Jul 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/07/29/how-smart-smartmeters</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/07/29/how-smart-smartmeters</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Do our cars know too much?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/connecteddrive.png"/>
        
        <p>In the era of the Internet of Things, where even <a href="https://twitter.com/internetofshit/status/883263541934948352">fidget spinners</a> can connect to the internet, cars are obviously of huge potential to go online to improve driving ability, avoid congestion, share traffic data and deal with mechanical faults.</p>

<p>There are different ways your car could be connected to the internet; BMW, Audi/VW Group and most other car manufacturers now ship cars with so called smart features. iDrive (BMW) for instance can control comfort features (even remotely by preheating cars), alert emergency services in the event of a crash (by using onboard sensors), communicate with BMW if there’s a vehicle fault.</p>

<p>There have also apparently been cases where BMW have repaired mechanical failures remotely such as a broken sunroof by remotely operating their motors. Basic features of the vehicle can be features through an app like as preheating and flashing lights.
In addition to the things people have come to expect from cars, through map and media input and getting live  traffic (usually from from Google).</p>

<p>Tesla cars essentially have the display as the only way to interact with the car, potentially signalling the way all cars will turn when vehicle autonomy becomes commonplace, Tesla cars can also interact with smart home appliances too, in ways such as turning on the lights when you get home. The convenience potential for smart cars are huge</p>

<p>However in the other hand, this means cars are essentially just devices with SIM cards which interact with the internet and so are exposed if they have vulnerabilities. With <a href="http://www.csoonline.com/article/3165419/security/hacker-stackoverflowin-pwning-printers-forcing-rogue-botnet-warning-print-jobs.html">smart printers turning on you</a> after being infiltrated by their default credentials and due to most items running embedded Linux (usually through <a href="https://busybox.net/about.html">busybox</a>) a botnet can be created pretty quickly.</p>

<p>The stakes are much higher however for security in your car over your toaster however, with car manufacturers support being able to control, start, stop or change any aspect of the vehicle through backdoors, so can potential hackers. Whether you’re comfortable with this kind of access depends on if you trust every feature inside a car being overridable from outside.</p>

<p><strong>This video well demonstrates just how scary the potential is:</strong></p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/MK0SrxBC1xs?rel=0&amp;controls=0&amp;showinfo=0?modestbranding=0" frameborder="0" allowfullscreen=""></iframe>
<p><br /></p>

<p>The Internet of Things for cars brings huge potential for the future, but as to whether security will keep up with this as time passes is a different matter. As to whether manufacturers will patch vulnerabilities in their cars into the future is something I really doubt, as many cars from 20 and even 30+ year old cars are still on the roads today.</p>

<p>Will planned obsolescence be forced upon car drivers too, or will people have to choose between getting to work safely in a new car, or risking a journey in a hacked car that could be used to extort or injure them?</p>
]]></description>
        <pubDate>Thu, 20 Jul 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/07/20/cars-too-connected</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/07/20/cars-too-connected</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

    

    

    

    

    

    

      <item>
        <title>Why 'Fully Loaded' Kodi Sticks are a horrible idea</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/kodi.png"/>
        
        <p>Since last year, there has been a vast rise in the number of people buying ‘<em>fully loaded</em>’ sticks allowing them to access premium services including Netflix’s Original Series’, films still in cinemas and live Sky Sports streams.</p>

<p><strong>How does it work</strong></p>

<p>Kodi itself is not the system that provides pirated content, these are provided by the plugins which are installed atop of it. There are different types of plugins that serve content in different ways, from research the content is provided by:</p>

<ul>
  <li>Either scraping the web for film uploads and serving these or using specially uploaded videos hosted on unlisted sites (apparently this is how popular plugins Genesis and Mobdro’s content is provided)</li>
  <li>Receiving a service (then using PVR and live streaming to the web) such as appears to be done with Sky Sport and other Sky services, the Kodi box then buffers a stream through a protocol (such as an RTSP) and displays it.</li>
  <li>Downloading a torrent in real-time and playing it, while seeding it silently in the background; this would result in better quality with lower latency as you have all the advantages of P2P (but is most likely to send you to prison as you’re technically distributing copyright materials).</li>
</ul>

<p><strong>Are these a scam?</strong></p>

<p><img src="/images/posts/pictures/kodistick-ebay.png" alt="" /></p>

<p>In terms of price paid for these devices, they’re a pretty clear scam with a quick search on eBay for ‘<em>Loaded Kodi Stick</em>’ bringing up around 750 results. The devices sold are just normal smart TV sticks with a few apps sideloaded onto them (which are free off the internet anyway) and resold at a significant margin.</p>

<p>The image of the stick shown right was just the top result with an Amazon Firestick (RRP: £35) with Kodi sideloaded and plugins ‘Mobdro’, ‘Exodus’ and other repositories promising free HD TV and films as well as live sports from both BT and Sky.
So along with the content, the markup charged on these devices is also criminal!</p>

<p><strong>Honeypots and logs</strong></p>

<p>Chances are that the web server that you’re connecting to stream your theoretical films is logging the connection source IP and content accessed (and unless you’re using a VPN, that’s going to be your home IP they have). 
In the event of a file sharing website being seized by the authorities there will be around a days worth of logs (depending on the host’s retention policy) detailing IP addresses. On the other hand, connecting to a honeypot is also a possibility which would serve you a copy of the media you want while recording your IP, in this instance it’s a matter of not if, but when your ISP contacts you about copyright activity.
Streaming such files is likely not worth the potential trouble.</p>

<p><strong>Am I going to prison?</strong></p>

<p>As to whether you’re going to end up in a cell for watching <a href="https://www.netflix.com/gb/title/80025678">The Crown</a> from your Kodi stick is a different matter.
It’s really dependant on the plugins you’re using, with those that silently seed programmes in the background being far more likely to get you a warning letter from your ISP.</p>

<p>The police have so far come after several people in the UK for the <a href="https://torrentfreak.com/uk-police-arrest-man-for-selling-pirate-kodi-devices-161221/">distribution of these Kodi devices</a> but are aiming to shut down the distribution at the source as opposed to stopping individual users; obviously it’s still inadvisable to stream in such ways though.</p>

<p><strong>Conclusion</strong></p>

<p>Kodi is not <a href="https://kodi.tv/the-piracy-box-sellers-and-youtube-promoters-are-killing-kodi/">enjoying this recent influx of users</a> with their identity being tarnished by association with these brands, and support forums filled with questions about non-functional plugins and broken links.</p>

<p>As to the ethics of piracy, it’s an interesting problem and not an issue with the demand for media. An overwhelming majority of people are willing to pay for content but just can’t access it at a reasonable price.</p>

<p>I wouldn’t advise going out and buying one of these streaming boxes as support from these ‘<em>vendors</em>’ is pretty lacking, you’re living your life in a legal grey area and chances are your ISP won’t hesitate to give up your information to a copyright owner who comes calling about piracy from your IP address.</p>
]]></description>
        <pubDate>Fri, 27 Jan 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/01/27/kodisticks-horrible-idea</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/01/27/kodisticks-horrible-idea</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>'MIS'ery, education IT should be open</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/mis.jpg"/>
        
        <p>MIS’ (or Management Information Systems) are arguably the most important part of any school (whether primary or secondary) or colleges. In both my primary and secondary school/college Capita’s SIMS (School Information Management System) has been the MIS of choice and is used in 83% of schools in the UK. This is, plain and simple a monopoly.</p>

<p>The 2010 Report by the IoE said that the marketplace was uncompetitive, dominated by a lone supplier that’s increasing in cost, violating both EU and UK laws on procurement and without an open and using a platform without an open or shared data format.</p>

<p>Capita SIMS became a monopoly when local authorities purchased it all the schools they ran, acting as their initial MIS and have stuck with the system since then as it’s easier to remain with the same platform. I’ve only had real experiences with the Lancashire Education Authority, who run SIMS although I believe there are also similar problems in other LEAs.</p>

<p>Over the years, SIMS has expanded its tentacles from just core utilities like pupil management to everything from parent online access to dinner money management, all at pretty hefty additional costs. Inside the walled garden there is little space for third-party developers and plugin makers, with official API access requiring you to be a <em>Capita Partner</em>, something that costs several thousand pounds.</p>

<p>The rather descriptive phrasing of an EduGeek user calling SIMS a <a href="http://www.edugeek.net/forums/mis-systems/152101-mis.html#post1303938">“<em>massive sea anchor of a product</em>”</a> due to its low initial cost for LA schools to be drawn in but with high priced plug-ins on top.</p>

<p>It stalls advancement of technology in education too by locking teachers to Windows due to the programme’s codebase being written in Micrsoft’s .NET framework and using Microsoft SQL server for a backend.
There are obviously some hacks to make this work on other platforms such as macOS and Linux, including delivering them as Citrix hosted apps for staff or wrapping them with <a href="https://www.winehq.org/">Wine</a> (however this would cause nightmares for support); but platforms aren’t the core problem, the problem is the software in the first place.</p>

<p>SIMS has some problems in itself, being an unreliable beast with all sorts of issues being had with its database having to be mapped as a network drive in Windows and Microsoft SQL server sitting beneath it, at the very least the whole programme needs a bottom up rewrite.</p>

<p><strong>The question is, is now the time for some government intervention?</strong></p>

<p>If private companies such as Capita have shown that they can’t write a functional programme or keep up with the times, surely GDS or the DfE could build up something:</p>

<ul>
  <li>That has a nice GUI, doesn’t need to be something fancy but just functional</li>
  <li>Easy accessible reporting strategies and statistics clearly available to staff</li>
  <li>Free for all (or very cheap) and open source</li>
  <li>Make all key parts of a modern education system core parts of the system, handling student info, timetabling, achievement, behaviour management, dinner money and parent tracking</li>
  <li>Build for the future, build a web based frontend system (wrap it in Electron maybe)</li>
  <li>Don’t lock out the developers, publish an API and add plugin functionality for the system meaning if people have great ideas for expandability they can use them.</li>
</ul>

<p>A system like this with core functionality baked in, made open source and developed by the Government could easily save schools thousands of pounds with SIMS Learning Gateway (web access for parents) alone costing ≈£9k for installation and another £1k a year in maintenance.
This new system wouldn’t lock out the vendors like Capita either, as they could make additional functionalities through plugins or provide support services for the system.</p>

<p>A serious reform is needed of MIS’ post the 2010 Becta report, and not much seems to have changed yet.</p>

<p>Another issue with just creating a new system though is that itself could become a monopoly, maybe an open standard for education would be better and allow schools to move between different MIS’.</p>
]]></description>
        <pubDate>Wed, 25 Jan 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/01/25/education-MIS</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/01/25/education-MIS</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>My Software Toolkit</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/launchpad.jpg"/>
        
        <p>Here is a list of the more uncommon Mac Apps that I like, and are an important part of my everyday lives. Beyond the obvious ones like browser (I use Chrome, by the way), I thought that it would be interesting to share what my software choices are and why. This page now lives at <a href="/toolkit">/toolkit</a> and I’ll update it over time.</p>

<p><br /><a class="btn inpost" style="background: #404040; color: #ffffff !important;" href="/toolkit">Take a look</a><br /><br /></p>

<p>If you have any nifty apps or utilities to recommend, feel free to tweet or email them to me.</p>
]]></description>
        <pubDate>Mon, 23 Jan 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/01/23/softwaretoolkit</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/01/23/softwaretoolkit</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

    

    

    

    

    

    

    

    

      <item>
        <title>Why I run this blog on Jekyll</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>I launched this blog after buying the domain <code class="language-plaintext highlighter-rouge">na.thaniel.uk</code> to replace my social media site, and decided that I needed a blog to discuss my projects and ideas for technology.</p>

<p>I shopped around the different blogging platforms, looking at the usual free offerings in Wordpress.com, Blogger, Medium and Ghost (the new platform on the street, at the time). Initially I launched the site in early January 2016 hosted on Tumblr, as it allowed me the different theming options I wanted, however returning posts in certain taxonomies was limited and I soon learnt that the platform wasn’t flexible enough to build the site that I really wanted.</p>

<p>Then I discovered GitHub pages, after seeing repositories using it for their own websites I decided that it could be perfect for the use case that I have. After downloading Jekyll and getting it running; I realised it was awesome. Taking the default theme and heavily modifying it, I ended up with my first version of this blog.</p>

<p><a href="/images/posts/pictures/revisions.png"><img src="/images/posts/pictures/revisions.png" style="height: 500px; float: none !important;" class="centerpostimg" /></a></p>

<p>All my posts were already written in Markdown, on Tumblr already, after I read about it being the choice of markup used for GOV.UK, Daring Fireball and other sites, as more convenient way to write, writing in one way using markings like <code class="language-plaintext highlighter-rouge">**Hello**</code> for bold and then defining the CSS for this everywhere, saving the overhead of having to do <code class="language-plaintext highlighter-rouge">&lt;span class="head-post-bold"&gt;Hello&lt;/span&gt;</code> each time. All my posts ported across fine to the new platform with only some minor tweaks being needed.</p>

<p><br /></p>

<p>I discovered many other benefits to using Jekyll on GitHub Pages though that have kept me using it, including</p>

<ul>
  <li>No more having to mess around configuring a database, maintaining a database or restoring a database when it inevitably breaks</li>
  <li>More interesting as there are few GitHub compatible to fall back on, challenging me to be more creating when making things work and learning how to use Jinja2 for querying posts</li>
  <li>The workflow is easy, just open a new markdown document, fill in some front matter, write the post and push to GitHub, job done.</li>
  <li>None of the bloat or worrying about hacking I would have with a free-standing Wordpress instance, at the end this whole site is just a set of HTML, CSS and MD files sat behind 2FA through GitHub.</li>
  <li>It’s free, and free to use with a custom domain too which is awesome</li>
  <li>SSL is easy to set up with CloudFlare which is really handy too.s</li>
</ul>

<p><strong>I’d recommend GitHub pages as a blogging platform replacement for those who like to keep control of their site’s design and functionality and are technically inclined; it’s also a lot of fun to work with.</strong></p>
]]></description>
        <pubDate>Thu, 12 Jan 2017 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2017/01/12/why-jekyll</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2017/01/12/why-jekyll</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

    

    

      <item>
        <title>The UK's unified banking API is coming, and it will be great</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>The UK government has given support for the creation of a universal API to allow access to UK bank account data, in a move to increase competition between banks, but also to allow innovation in the finance industry to give customers a clearer understanding of their savings.</p>

<p>The OBWG (Open Bank Working Group) established by the UK Government to find ways to improve interaction with banks in the UK, they proposed that “bank data…should be made open data” which encompasses products that they offer, to increase consumer choice. “Open APIs should be built using customer data” which would mean that apps like ‘Mint’ or ‘You Need A Budget’ would be able to use data straight from accounts about spending to break down where you can save money, which would allow for smarter spending.</p>

<p>APIs are great, and can allow developers to integrate as can be seen by how they’re being rolled out across government (<a href="https://data.gov.uk">data.gov.uk</a>). It’s important that these would be opt-in (obviously) and provided as an extension to online banking.</p>

<p>The hardest part about implementing this, I imagine, will be the legacy systems that banks use (especially as RBS’ system alone has caused them a major meltdown and prevented two break up attempts) and creating an interface between the legacy banking systems and modern mobile apps, reducing the costs to the banks (although the old systems really ought to be rebuilt or upgraded) but this works in the interim.</p>

<p><img src="/images/posts/pictures/obp-system-link.png" /></p>

<p>An official API will be unquestionably more secure than current systems used by data providers such as Yodlee and Finicity that actually log in using your credentials and screen-scrape data from your account (logging in with your credentials, loading web pages copying the web pages source and stripping financial data out), mainly the issue with this is that most banks will not protect you in the case of them having a security breach and your money being taken, as you authorised them to use your account. Despite me being sure that scrapers have good security practices, I’m certainly not risking my accounts being emptied overnight.</p>

<p>When it’s released with initial debut meant to be early 2017, with a fully fledged product including consumer and business data being available by 2017 developers will be able to build some amazing applications upon this interface. Consumers will also get better deals on their accounts with the API allowing developers to see all accounts types that banks offer and offer the best to their customers (potentially a automatic MoneySavingExpert like system, returning the best account type for an individual based off their own spending habits).</p>
]]></description>
        <pubDate>Mon, 21 Nov 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/11/21/why-banking-api-great</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/11/21/why-banking-api-great</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Digital by Default is how government should be done</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>The Government Digital Service didn’t just make a website, they redesigned the way user interacted with Government through user journey maps, reducing unnecessary bureaucracy and “Transforming the relationship between citizen and state” as Matt Hancock (Cabinet Office) said. By removing the need for 320 separate government websites and merging them into one different domain they saved £3.5 billion in overall costs to the taxpayer since 2012. This set an example worldwide with the UK winning the best E-Government website and the UK’s open source codebase being implemented by GOVT.NZ and the US Digital Service.</p>

<p>The removal of the need to go to the Post Office to renew your tax disk or send off for, fill in and send back a pack of forms to renew your passport is really great. Government agencies such as the DVSA have really embraced the opportunity to go digital first with services allowing you to hire cars by proving your driving licence online and checking a vehicle’s history for free before you buy it just with the registration and manufacturer. Previously the DVSA had contracted out all of their work to Fujitsu for 15 years and after moving back in they’ve reworked all their customer-facing services in a more efficient way, showing that in house development really does work better.</p>

<p>The latest project that the GDS are working on is register creation, creating lists that other government platforms can be based upon and allowing services to share data in one system as opposed to hundreds of different ones around government such as open registers (such as open electoral), closed registers (such as land registry) and private ones (such as organ donor status). The process of researching, testing and then going back to the drawing board is all described on the <a href="https://gds.blog.gov.uk">blog</a> and it’s great to see that process.</p>

<p>Unfortunately, not all of the government agrees that GDS is doing a good job, and would much rather it would be put back to the way it was before. The old head of GDS Stephen Foreshew-Cain was replaced by Kevin Cunningham (who wrote of £1.5 billion on the Universal Credit IT programme failure). According to inside rumours there was a  <a href="http://www.itpro.co.uk/government-it-strategy/27025/gds-names-new-chief-in-whitehall-civil-war">‘minor coup’</a> over summer and now there is a stand off between the DWP and HMRC who were amid their own transformation projects at the start of GDS and would like to see the agencies go back that way, which is a worry.</p>

<p>If GDS were to be dismantled, I think we’d see a return to the old ways of Government IT, contracted out for hundreds of millions of pounds more than the contracts are actually worth and providing less of a return on investment, it will also oust people at the service currently working in a more effective way that users actually like. I’ve followed the GDS block for the last three years and it’s been intriguing to see how they move from concept to production with care at each step, even moving to write <a href="https://www.gov.uk/service-manual/user-centred-design/how-users-read.html">‘plain English’</a> to increase accessibility (even in HMRC to make the system actually understandable to the average reader) which are realistically not going to be developments you get when contracting to the lowest bidder.</p>

<p><a href="http://transformation.blog.nhs.uk/">The NHS</a> are starting their own programme with a £4bn redevelopment programme following on and using GDS’ prototype system, the pushback they will likely face going digital by default across the entire of a disconnected health service is likely going to be huge though.</p>
]]></description>
        <pubDate>Sat, 12 Nov 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/11/12/GDS-lead-by-example</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/11/12/GDS-lead-by-example</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Have a continuity plan</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>From working at the Library, I’ve learned a lot of things, helping people from all walks of life with more different queries than I could count. Unfortunately, something that has affected a surprising large group of people I’ve met are death of a loved one and wanting access to their data.</p>

<p>Modern systems are designed to be secure which can be double edged blade. They’re designed to protect people from being impersonated through multi-factor authentication (something you know, have or are) although they have weak points such as the <a href="http://www.howtogeek.com/212219/here%E2%80%99s-how-an-attacker-can-bypass-your-two-factor-authentication/">swap-sim method</a> but this enhanced security can end up locking out loved ones if the worst happens.</p>

<p>The most common situation I have had is with Windows laptops (mix of 7-10) where family have passed and people want to see their photos or files from their laptop which is sorted easily with Hirens (if legacy BIOS) or the sticky keys command prompt method (if UEFI boot), the problem here is that if people have BitLocker or FileVault enabled I can’t help them (which is on the other hand great for stopping thieves), with <a href="https://support.google.com/accounts/troubleshooter/6357590?hl=en">Google having a process to request access</a> but if it’s an Apple device you’re out of luck as they <a href="http://www.bbc.co.uk/news/technology-26448158">don’t unlock devices</a> for security reasons. I’ve had several people with iPads which are activation locked by the deceased’s Apple ID so cannot be used again nor purchases be accessed (making the device a very expensive paperweight).</p>

<p>On the other side of this, devices becoming harder to break into is good as if your device falls into the wrong hands it’s safe, and you’re protected from being forced to hand over data if your device has been seized (or copied at a border).</p>

<p>If you have important files on your devices (sentimental or otherwise), record your passwords somewhere for in case the worse happens. If you use a password manager (like 1Password, LastPass or KeyPass) the easiest way to protect yourself from disaster is to <a href="https://productivityist.com/1password-emergency-kit-3/">create yourself an emergency kit</a> and lock it away in a safe or filing cabinet which can be accessed if something was to happen to you. Be proactive in these situations, don’t leave it to others to be reactive.</p>
]]></description>
        <pubDate>Sat, 05 Nov 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/11/05/library-passwords</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/11/05/library-passwords</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Nightmares from upgrading Ubuntu 14.04 to 16.04 LTS</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>This week in my half term; I decided that it would be a good idea to update my home server (an Intel NUC) from Ubuntu 14.04 to 16.04 LTS but the update wasn’t as straightforward as I had hoped (it never is!)</p>

<p>To update I thought I’d use SSH, but after receiving warnings in the terminal that if the session dropped it would cancel my update I decided to use RDP (through xRDP) instead. This started off great and the update was running well, until my session dropped and was lost by the RDP server (I couldn’t find it in the logs to reconnect to). I then was unable to get back in and SSH connected after a good 20 minutes of waiting. It seemed that the update had halted but DPKG was still locked, this command <code class="language-plaintext highlighter-rouge">sudo rm /var/lib/apt/lists/lock</code> removed the lock (thanks AskUbuntu). I attempted to resume the install using <code class="language-plaintext highlighter-rouge">sudo apt-dist upgrade</code> which I had used previously but was told I was already up to date on 16.04.</p>

<p>After another few questions on StackOverflow I found <code class="language-plaintext highlighter-rouge">apt-get update</code>,<code class="language-plaintext highlighter-rouge">apt-get -f install</code>,<code class="language-plaintext highlighter-rouge">apt full-upgrade</code> should return me to a working system, in total they took about a day to run, but eventually got going again.</p>

<p>The first thing that wasn’t working when I got back in were my network services which had all stopped, I got Apache, Plex, and the others running again before noticing that my NAS drive mounting had failed with <code class="language-plaintext highlighter-rouge">mount.nfs: an incorrect mount option was specified</code>, it was previously:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>192.168.1.3:/volume1/photos /home/serviceusr/Desktop/photos nfs ,username=serviceusr,password=passwordhere,_netdev,rw,hard,intr,nolock
</code></pre></div></div>

<p>but after following some tips I got it working again using:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>192.168.1.3:/volume1/photos /home/serviceusr/Desktop/photos sec=sys,intr,rw,vers=3,timeo=11,auto,async,bg 0 0
</code></pre></div></div>

<p>Docker also didn’t work after updating, I had to re-add its repository (disabled in the update) and install it again, the best guide for this is <a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04">here</a>. Previously I had run all my containers by using <code class="language-plaintext highlighter-rouge">--restart=always</code> on a container but this didn’t survive the update, instead I added them into my /etc/rc.local file for the future, like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker run -p 8443:8443 -p 8080:8080 -p 8081:8081 -v /var/unifi:/var/lib/unifi  -d jacobalberty/unifi:latest
</code></pre></div></div>

<p>I also decided that I wanted a better backup system, as Syncthing on my Synology just wasn’t cutting it (running out of memory and restarting and stopping every 15 minutes) so I mounted the folder containing the users home folders with fstab on my server and then ran:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
sudo echo "deb http://apt.syncthing.net/ syncthing release" | sudo tee /etc/apt/sources.list.d/syncthing.list
sudo apt-get install syncthing
</code></pre></div></div>

<p>Then had to run these, replace user with the account you want on the server:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl enable syncthing@$USER.service 
sudo systemctl start syncthing@$USER.service
</code></pre></div></div>

<p>This failed for me, and it took me ages to work it out with some vague errors, turned out I didn’t own the directory or executable, so run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo chmod 777 -R /usr/bin/syncthing
sudo chmod 777 -R /home/USER/.config/syncthing/
</code></pre></div></div>

<p>The web interface should then be available on server:8484, the SSL certificates should be changed (if you don’t like security errors), they are <code class="language-plaintext highlighter-rouge">/home/USER/.config/syncthing/https-cert.pem</code> and <code class="language-plaintext highlighter-rouge">home/USER/.config/syncthing/https-key.pem</code>, I just symlinked them to my apache directory (easier to change my wildcard when it expires that way).</p>

<p>And that’s me up to present, hopefully this helped you if you received the same errors!</p>
]]></description>
        <pubDate>Sat, 22 Oct 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/network/2016/10/22/ubuntu-horrors</link>
        <guid isPermaLink="true">https://nathaniel.work/network/2016/10/22/ubuntu-horrors</guid>
        
        
        <category>network</category>
        
      </item>
    
    

      <item>
        <title>Grav is awesome!</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>I have recently moved my home internal website from OctoberCMS to Grav, a cool new CMS without a database.</p>

<p>Both also have clean backends, but I fancied a change in CMS and it seemed like the best option. OctoberCMS is nice but I like the native ability to write markdown in Grav, its cleaner layout and how it’s far easier to install (I had many database issues the first time I installed October), twig templates are also great and something that I’m used to from Flask and allow me to create pages far more quickly, but are not something I need regularly as the site is pretty static. I didn’t add any plugins beyond the basic ones either (OctoberCMS had more plugins, but most were paid-only), but didn’t need them for this site.</p>

<p>Writing pages manually is great too, as it’s pretty much the same as Jekyll (used for this site) with the configuration options at the top of each file. The only disadvantages that I can see of Grav at the moment is you can’t get too complex with it as there isn’t a database, but the ability to back up the entire site by simply copy and pasting the folder is awesome (and great for Git versioning too).</p>

<p>Obviously web design varies, and both allow full customisation on how your site looks, but for reference (left and right are old and new respectively):</p>

<p><img src="/images/posts/pictures/readncompare.png" />
<br /><br /></p>
]]></description>
        <pubDate>Sat, 15 Oct 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/10/15/flat-cms-awesome</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/10/15/flat-cms-awesome</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Lessons learned from running Cat6</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>From about 2008, we’ve used Comtrend Powerline Adaptors (due to them being shipped free with BT Vision). I’ve never really been a fan of them as if something spontaneously stops working, you can bet they’re the problem. With us getting the new UniFi APs and ceiling mounting them, running cables to each we thought it would be the best time to run cables to the rest of the house too.</p>

<p>Dropping cables was as more of a pain than I thought it would be (old house, solid walls, joists running against us) but so far I’ve managed to connect up the key rooms. Advice I’d give though from this is to get a cable access pole kit (£10 as a Aldi specialbuy woo), they’re invaluable in finding concealed blockages and navigating down walls, also run more cables than you think as with HDMI over Cat6 available you may use cables for other purposes.</p>

<p>I terminated all of my cables in the loft into a 16 port patch panel and with a faceplates in the house, but I’m not done yet as I’d like to future-proof the whole house by putting drops in every room where future devices could potentially go.</p>

<p>My patch panel positioning still has something to be desired (and I need to find a way to mount my Ubiquiti POE injectors) but apart from that it’s awesome to have a network that isn’t horribly sluggish!</p>
]]></description>
        <pubDate>Sat, 08 Oct 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/network/2016/10/08/running-cat6</link>
        <guid isPermaLink="true">https://nathaniel.work/network/2016/10/08/running-cat6</guid>
        
        
        <category>network</category>
        
      </item>
    
    

      <item>
        <title>The 'Smart Wallet' is still a fantasy</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>Passbook was released with iOS 6 in 2012, promising to be a more convenient way to store vouchers, loyalty cards, coupons and event tickets. With the release of the iPhone 6 in 2014, Apple Pay came too (first to the US, then UK and other select countries) and introduced a new way to pay. In the UK, NFC has been a standard in the UK since 2007 with merchants rolling out support at differing speeds.</p>

<p>Apple’s launch of Apple Pay in the UK in July 2015 was something I thought was going to be truly market changing, but it wasn’t. That was due to two reasons; lack of supporting banks and the facts that wallets (or purses) aren’t just home to credit and debit cards, they also home a ton of loyalty cards (usually a Booths card if you’re northern and like free coffee), ID and membership cards.</p>

<p><img src="/images/posts/pictures/applewallet.png" alt="image" /></p>

<h4 id="loyalty">Loyalty</h4>

<p>There isn’t a loyalty card platform either, with Apple introducing <a href="https://techcrunch.com/2015/11/05/walgreens-becomes-first-retailer-to-integrate-its-loyalty-program-with-apple-pay/">loyalty</a> in 2015, it wasn’t really adopted widely which is likely because of how much of a pain it is for merchants to introduce them. If you make a digital reward card for iOS, you’re also going to have to make one for your Android customers too, which is just an inconvenience.</p>

<p>I think that if there was an open standard in place for id cards, like the .pkpass files used previously for passbook barcodes and flights, it would mean that more stores would be more likely to implement this for their own loyalty systems, currently passbook’s standard is proprietary and requires a developer account to sign the pass (although this makes Apple some money, it’s likely prohibitive to some stores).</p>

<p>A format that could have a loyalty number passed over NFC, requested by the POS machine would be ideal. So in addition to the card info being passed the loyalty number could also be given. This could be provided from a file that contains store info could be in a similar format to the one below, and could work on any platform:</p>

<table>
  <thead>
    <tr>
      <th>Store loyalty card</th>
      <th> </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Store name</td>
      <td>Booths</td>
    </tr>
    <tr>
      <td>Store logo</td>
      <td>Store logo image</td>
    </tr>
    <tr>
      <td>Store header image</td>
      <td>Large image of side of card</td>
    </tr>
    <tr>
      <td>Customer name</td>
      <td>John Smith</td>
    </tr>
    <tr>
      <td>Background</td>
      <td>#444C3F</td>
    </tr>
    <tr>
      <td>Foreground</td>
      <td>#FFFFFF</td>
    </tr>
    <tr>
      <td>Loyalty number</td>
      <td>003602</td>
    </tr>
    <tr>
      <td>URL of customer system</td>
      <td>siteurl/loyalty/003602</td>
    </tr>
  </tbody>
</table>

<p><br /></p>

<p>The system could then respond at the url a response with the number of points, which could be then displayed in app. The problem is with this, it’s unlikely to be ever implemented by Apple or Google as they have far too much interest in retaining userbase, an easily movable wallet would break that ecosystem.</p>

<div class="tweetcontained" style="float: right; width:70% !important; max-width:250px;">
<blockquote class="twitter-tweet" data-lang="en-gb"><p lang="en" dir="ltr">So here&#39;s a little prototype of something we&#39;re working on <a href="https://twitter.com/hashtag/drivinglicence?src=hash">#drivinglicence</a> <a href="https://t.co/a5eItrdiNI">pic.twitter.com/a5eItrdiNI</a></p>&mdash; Oliver Morley (@omorley1) <a href="https://twitter.com/omorley1/status/731110689939587072">13 May 2016</a></blockquote>
<script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>

<h4 id="identity">Identity</h4>

<p>Realistically, we are not going to lose a wallet any time soon, especially for those who look under 25 as they’re likely to be ID’d whether going to a club or just buying alcohol from the supermarket. In May this year, the DVLA’s CEO posted the tweet on the right, showing the future of an ID which would be much better. Most people born in at least the last 20 years carry a phone constantly so being able to carry the driving licence would be incredibly useful.</p>

<p>The flip side of this issue is that it would be incredibly easy to commit fraud so it would require another system like the one above, with a one time use code where a number is displayed beneath the ID (and in QR form) and can be queried by pasting into a government service which would return the information shown on the card with an image (this could then be implemented within an app for bouncers and the police and allow data to be validated).</p>

<p>The one-time use code changing would prevent those who look up from returning to the ID after validating and would stop fake IDs being produced with the same value, if accepted instead of plastic ID too this would entirely prevent fake ID as you can’t spoof a gov.uk domain and valid HTTPS certificate (well, not without significant difficulty, changing their local DNS and becoming a trusted intermediate CA).</p>

<h4 id="membership-cards">Membership cards</h4>

<p>Membership cards and access cards are also struggling to get with the times. They could do with a system like the one I mentioned for a supermarket but use the devices build in NFC card to pass the loyalty number, replacing the current magnetic strip system used at many gym clubs for cards. Allowing membership cards to use NFC could also work for work ID systems which would be more secure than just possessing a card as it requires the fingerprint.</p>

<table>
  <thead>
    <tr>
      <th>Membership card</th>
      <th> </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Membership name</td>
      <td>Gym Limited</td>
    </tr>
    <tr>
      <td>Membership logo</td>
      <td>Membership logo image</td>
    </tr>
    <tr>
      <td>Membership header image</td>
      <td>Large image of side of card</td>
    </tr>
    <tr>
      <td>Customer name</td>
      <td>John Smith</td>
    </tr>
    <tr>
      <td>Background</td>
      <td>#FEFEFE</td>
    </tr>
    <tr>
      <td>Foreground</td>
      <td>#B30098</td>
    </tr>
    <tr>
      <td>Loyalty number</td>
      <td>00354322</td>
    </tr>
    <tr>
      <td>URL of customer system</td>
      <td>siteurl/member/00354322</td>
    </tr>
  </tbody>
</table>

<p><br /></p>

<h4 id="concluding">Concluding</h4>

<p>Overall, I think that virtual wallets still have a lot more potential for the future than what they’ve shown so far and I’m excited for that, however I’m a strong believer that open is better when it comes to standards and if technology companies would just share there would be far better offerings for the community.</p>
]]></description>
        <pubDate>Thu, 22 Sep 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/09/22/my-wallet-isnt-smart</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/09/22/my-wallet-isnt-smart</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Is AI a threat to mankind?</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/policyprov.png"/>
        
        <p>Yesterday, I visited the University of Liverpool University (Heseltine Institute) Policy Provocations seminar on Artificial Intelligence to aid my extended, currently with the working title ‘<em>Artificial Intelligence: Friend or Foe?</em>’.</p>

<p>I found out about the seminar and decided it would be a great way to widen my knowledge of the area, and to get some further opinions on the technology’s ethics. It was chaired by Dr Roger Phillips (BBC Merseyside) and the panellists were Professor Simon Maskell (Liverpool engineering/computer science), Joanna Bryson (Bath University Natural Intelligence) and Sir Robin Saxby (ARM holdings).</p>

<p>They debated whether they were excited or scared by the future of AI, talking about logical and emotional intelligence, can they solve prejudices and do we trust the machines themselves, are the risks actually covered (why does society mistrust).</p>

<p>I got some great notes and it was a really interesting evening!</p>

<div style="text-align:center;" id="body_frameplayer">
<i>Seminar full video - External Video Player from liv.ac.uk </i><br />
<iframe width="70%" height="300px" src="https://stream.liv.ac.uk/s/7gdqe6pn" scrolling="no" frameborder="0" style="margin: 0 auto; max-width: 500px;" id="object"></iframe></div>
]]></description>
        <pubDate>Thu, 22 Sep 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/09/22/could-ai-threaten-mankind</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/09/22/could-ai-threaten-mankind</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Home is not the enterprise</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>Recently when I set up my UniFi UAP access points, I exchanged my old WPA2-Personal network for WPA2-Enterprise thinking that it would be simpler for my family and more secure.</p>

<p><img src="/images/posts/pictures/wpa2.png" alt="" /></p>

<p>However, I quickly hit some unfortunate snags that have led me to revert the network back to WPA2-Personal; firstly how lacking consumer devices are was my main issue with devices like Chromecasts and game consoles not supporting the standard, but that was fine as I could just set up another SSID for these devices with a long and random password.</p>

<p>However when I configured the RADIUS server on my Synology NAS to be used for it and moved everybody across we hit the issue that the authentication would hang for roughly 30 seconds every time the device roamed or left and returned to the house.</p>

<p>I couldn’t find a better LDAP/RADIUS server that works on Linux with a good web interface (if you know one please let me know). However I’d rather not spin up and have the overhead of a VM of Windows with Active Directory. I have learnt that although a technology may be easy to implement and work for myself, I have to design the best system for all of the users which is near enough zero-management and works relatively well unattended.</p>
]]></description>
        <pubDate>Mon, 29 Aug 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/network/2016/08/29/home-not-enterprise</link>
        <guid isPermaLink="true">https://nathaniel.work/network/2016/08/29/home-not-enterprise</guid>
        
        
        <category>network</category>
        
      </item>
    
    

      <item>
        <title>Where virtualization shines - observing YHA</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/assets/images/default-card.png"/>
        
        <p>Last week I was on residential at a YHA hostel in the lakes, volunteering to help out with tasks and improve their facilities, it was a great trip and a break from the internet (as the hostel didn’t have WiFi available).</p>

<p><img src="/images/posts/pictures/yhacounter.jpg" alt="" /></p>

<p>However; despite not having networking access for the public or staff, the POS desktop was still somehow connected to the internet, with what appeared to be GuestCentrix running, a contactless payment machine and access to email.</p>

<p>It appeared when logged in there was windows-inception with the local machine’s Windows 7 taskbar sat below the Windows 10 taskbar, showing that it was somehow connected, the blue status bar at the top gave away it was Microsoft’s remote desktop.</p>

<p>This move has also been done by the Australian YHA (<a href="http://www.computerworld.com/article/2488651/data-center/how-yha-australia-reduced-costs-through-virtual-desktop-infrastructure.html">documented here</a>) and for businesses like the YHA it’s a great idea due to the many of their properties being located off the beaten track and not reached by FTTC schemes (the nearby pub’s wifi stats: download - 0.5Mbps, upload: 0.11Mbps, ping - 167ms), if all the PCs were set up individually it would’ve taken days to download Windows 10 for example.</p>

<p>Another advantage is keeping corporate software up to date, when the programmes used are updated they only need to be changed in one place as opposed to having to update them in their 200+ locations across England and Wales, as well as from a security perspective if you get theft of computers the data is secure as it isn’t on the device (assuming that the RDP session isn’t left unlocked of course) and customer data gets an extra layer of protection.</p>

<p>There are many situations where just using RDP is a bit of crap idea, like when my school previously used it for all computers (even where students were using graphically intensive programmes and watching videos) which it just couldn’t handle; but in the YHAs situation for just reservation applications and basic searches it is the perfect technology.</p>
]]></description>
        <pubDate>Mon, 29 Aug 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/08/29/where-virtualisation-shines</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/08/29/where-virtualisation-shines</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>Unifi-ing my home network</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/unifi-uap-banner.jpg"/>
        
        <p>After using a TP-Link AP for four years as a range extender for a BT Home Hub, I decided enough was enough. After two years, I decided to make the swap to DD-WRT which made the situation more bearable, despite there not being a compatible build for it.</p>

<p><img src="/images/posts/banners/unifi-uap-banner.jpg" alt="" /></p>

<p>I took a leap in the dark and flashed it with the firmware for a similar access point by TP-Link, I got myself an almost zero-handoff functionality by making it spoof the BT router’s MAC address but it still needed a script to reboot it weekly, which would stop most of the random drop outs. It served us well though, and brought us up to March.</p>

<p>In March, we spotted some UAPs on eBay, stripped out of offices at great price, so we bought two and set them up at opposite ends of the house, the actual adoption process confused me at first but I got the hang eventually.</p>

<p>After getting the controller up and running in a docker container; managing the APs with the controller and setting up the network SSIDs, everything was working great.</p>

<p>I decided to try WPA2-Enterprise, using my Synology NAS as my RADIUS server which didn’t work great with random drop-outs but when I switched back to WPA2 personal after a month everything was running smoothly again. These APs are pretty powerful and handle the handful of clients we have with ease.</p>

<p><img src="/images/posts/pictures/unifiglance.png" alt="" /></p>

<p>Where Ubiquiti excels even more though is their controller software which is miles ahead of anything else I’ve seen, allowing everything to be controlled through a single UI and also having a mobile app. I can see if an AP has dropped, client data usage and signal strength as well as a glance-able view of my network.</p>

<p>I’m yet to found any real downside of using the Ubiquiti Access Points, beside their lack of 802.11AC but really we’re not really reaching the speeds of Wireless N (no FTTP yet) and the area around our house isn’t particularly congested on the channels.</p>

<p>I’d certainly recommend the APs as once they’re set up, they pretty much manage themselves.</p>

<blockquote>
  <p><strong>If you’re confused setting up the UniFi AP this too, download the Unifi-Discover app from their website.</strong> <br />
Reset your Unifi using the pinhole on the back and connect it to your network
It should appear in the discover app, press ‘Manage’ and inform it of your Unifi Controller (running live on a Raspberry Pi, if you want it to be always on) <br />
Use its IP and port (usually 8880 or 8081) as http://example.com:8880/inform.</p>
</blockquote>
]]></description>
        <pubDate>Sun, 31 Jul 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/network/2016/07/31/unifi-network</link>
        <guid isPermaLink="true">https://nathaniel.work/network/2016/07/31/unifi-network</guid>
        
        
        <category>network</category>
        
      </item>
    
    

      <item>
        <title>Programming Day with Harry &amp; Nightmares with Ruby</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/programmeharry.jpg"/>
        
        <p>I recently met up with <a href="//github.com/harryb0905">Harry (<em>@harryb0905</em>)</a> and we spent the day experimenting with a BlinkStick and a BBC Micro:Bit, which was pretty cool.</p>

<p>We tried to get Jekyll installed on Harry’s laptop, which caused a bit of a hassle as it turns out when installing Ruby through Homebrew we didn’t account for the fact that MacOS itself runs a version of Ruby. After ages of fighting frantically with the error below (first dealing with the fact that OSX 10.11 brought System Integrity Protection), we realised we could solve it by installing RVM (Ruby Version Manager).</p>

<figure class="highlight"><pre><code class="language-xml" data-lang="xml">Harrys-MacBook:Harry-Site HarryBaines\$ jekyll -v
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in`require'
from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.2.0/lib/jekyll/plugin_manager.rb:34:in `require_from_bundler' from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.2.0/exe/jekyll:9:in`<span class="nt">&lt;top</span> <span class="err">(required)</span><span class="nt">&gt;</span>'
from /usr/local/bin/jekyll:23:in `load' from /usr/local/bin/jekyll:23:in`<span class="nt">&lt;main&gt;</span>'</code></pre></figure>

<p>But once you install RVM, everything becomes plain sailing we discovered <code class="language-plaintext highlighter-rouge">sudo curl -L https://get.rvm.io | bash -s stable --ruby</code> then <code class="language-plaintext highlighter-rouge">gem install jekyll</code> and you’re done.</p>

<hr />

<p><br /></p>

<h4 id="blinkstick-script">Blinkstick script</h4>

<p>I’ve had a BlinkStick for a while, but hadn’t really purposed it but together, inspired by the BlinkStick documentation we wrote a script which authenticates with Gmail, then checks every 30 seconds to see if there’s any unread mail, if there is the LED will flash red three times. The script we created is below:</p>

<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">myaccount</span><span class="p">.</span><span class="n">google</span><span class="p">.</span><span class="n">com</span><span class="o">/</span><span class="n">security</span><span class="c1">#activityimport urllib
</span><span class="kn">import</span> <span class="nn">feedparser</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">from</span> <span class="nn">blinkstick</span> <span class="kn">import</span> <span class="n">blinkstick</span>

<span class="n">username</span> <span class="o">=</span> <span class="s">"example@gmail.com"</span>
<span class="n">password</span> <span class="o">=</span> <span class="s">"gmailpassword"</span>

\<span class="n">_URL</span> <span class="o">=</span> <span class="s">"https://mail.google.com/gmail/feed/atom"</span>
<span class="n">bstick</span> <span class="o">=</span> <span class="n">blinkstick</span><span class="p">.</span><span class="n">find_first</span><span class="p">()</span>
<span class="n">greenCol</span> <span class="o">=</span> <span class="s">"#0AFC12"</span>

<span class="k">class</span> <span class="nc">my_opener</span><span class="p">(</span><span class="n">urllib</span><span class="p">.</span><span class="n">FancyURLopener</span><span class="p">):</span>

       <span class="k">def</span> <span class="nf">get_user_passwd</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">host</span><span class="p">,</span><span class="n">realm</span><span class="p">,</span><span class="n">clear_cache</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
              <span class="k">return</span> <span class="p">(</span><span class="n">username</span><span class="p">,</span><span class="n">password</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">auth</span><span class="p">():</span>
<span class="s">'''The method to do HTTPBasicAuthentication'''</span>
<span class="n">opener</span> <span class="o">=</span> <span class="n">my_opener</span><span class="p">()</span>
<span class="n">f</span> <span class="o">=</span> <span class="n">opener</span><span class="p">.</span><span class="nb">open</span><span class="p">(</span>\<span class="n">_URL</span><span class="p">)</span>
<span class="n">feed</span> <span class="o">=</span> <span class="n">f</span><span class="p">.</span><span class="n">read</span><span class="p">()</span>
<span class="k">return</span> <span class="n">feed</span>

<span class="k">def</span> <span class="nf">readmail</span><span class="p">(</span><span class="n">feed</span><span class="p">):</span>
<span class="s">'''Parse the Atom feed and print a summary'''</span>
<span class="n">atom</span> <span class="o">=</span> <span class="n">feedparser</span><span class="p">.</span><span class="n">parse</span><span class="p">(</span><span class="n">feed</span><span class="p">)</span>
<span class="n">record</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">atom</span><span class="p">.</span><span class="n">entries</span><span class="p">)</span>

       <span class="k">print</span><span class="p">(</span><span class="s">""</span><span class="p">)</span>
       <span class="k">print</span><span class="p">(</span><span class="n">atom</span><span class="p">.</span><span class="n">feed</span><span class="p">.</span><span class="n">title</span><span class="p">)</span>
       <span class="k">print</span><span class="p">(</span><span class="s">"You have %s new mails"</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">atom</span><span class="p">.</span><span class="n">entries</span><span class="p">))</span>


       <span class="k">if</span> <span class="n">bstick</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">atom</span><span class="p">.</span><span class="n">entries</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
              <span class="n">bstick</span><span class="p">.</span><span class="n">morph</span><span class="p">(</span><span class="nb">hex</span><span class="o">=</span><span class="n">greenCol</span><span class="p">)</span>

       <span class="k">return</span> <span class="n">record</span>

<span class="k">if</span> <span class="o">**</span><span class="n">name</span><span class="o">**</span> <span class="o">==</span> <span class="s">"**main**"</span><span class="p">:</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="n">f</span> <span class="o">=</span> <span class="n">auth</span><span class="p">()</span>
<span class="n">valOld</span> <span class="o">=</span> <span class="n">readmail</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>

              <span class="n">starttime</span> <span class="o">=</span> <span class="n">time</span><span class="p">.</span><span class="n">time</span><span class="p">()</span>
              <span class="n">time</span><span class="p">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">5.0</span> <span class="o">-</span> <span class="p">((</span><span class="n">time</span><span class="p">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">starttime</span><span class="p">)</span> <span class="o">%</span> <span class="mf">5.0</span><span class="p">))</span>

              <span class="n">valNew</span> <span class="o">=</span> <span class="n">readmail</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>

              <span class="k">if</span> <span class="n">valOld</span> <span class="o">==</span> <span class="n">valNew</span><span class="p">:</span>
                     <span class="k">pass</span>
              <span class="k">else</span><span class="p">:</span>
                     <span class="n">bstick</span><span class="p">.</span><span class="n">pulse</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">"green"</span><span class="p">,</span> <span class="n">repeats</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
                                  <span class="n">duration</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
                     <span class="n">bstick</span><span class="p">.</span><span class="n">morph</span><span class="p">(</span><span class="nb">hex</span><span class="o">=</span><span class="n">greenCol</span><span class="p">)</span>








              <span class="n">starttime</span> <span class="o">=</span> <span class="n">time</span><span class="p">.</span><span class="n">time</span><span class="p">()</span>
              <span class="n">time</span><span class="p">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">5.0</span> <span class="o">-</span> <span class="p">((</span><span class="n">time</span><span class="p">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">starttime</span><span class="p">)</span> <span class="o">%</span> <span class="mf">5.0</span><span class="p">))</span>
              <span class="n">f</span> <span class="o">=</span> <span class="n">auth</span><span class="p">()</span>
              <span class="n">readmail</span><span class="p">(</span><span class="n">f</span><span class="p">)</span></code></pre></figure>

]]></description>
        <pubDate>Thu, 28 Jul 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2016/07/28/programming-day-w-harry</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2016/07/28/programming-day-w-harry</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Why I use 1Password</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/1password.jpg"/>
        
        <p>I first started with 1Password back in 2013, moving to it from a physical password book which was stuffed with scribblings on different notepad paper with credentials on and shoved into the book.
<img src="/images/posts/pictures/1passwordandbook.JPG" alt="" /></p>

<p>I discovered the app on Reddit, if I recall being highly recommended, so I downloaded it for the £12.99 it was at the time (a hefty sum) but unquestionably worth it.</p>

<p>You can see to the my phone, old iPod Touch and the book I used to use, a reduction in bulk and an increase in portability. At the time I moved, I still used Windows so kept my passwords by my side, ready to key in manually.</p>

<p>Today, I’m storing 500-ish items in my vault, a mix of logins, notes, IDs and more, and most importantly, I feel safe about it. Despite the app being closed source, their openness and availability to explain individual aspects of the software is unrivalled. There are fully open alternatives available such as Keypass but honestly, I trust AgileBits more as their software is updated almost daily (through the beta programmes) and the apps are made by them, not ported to different OS’ by shady third parties.</p>

<p><img src="/images/posts/pictures/1password-generate.png" alt="" /></p>

<p>1Password has protected me from Heartbleed through its watchtower feature, alerting me which passwords needed to be changed, so I could simply go to the website, randomly generating a new password and saving it in 1Password. It moves the duty of remebering these away from me, I only have to remember the 1Password for my vault (although this should still be changed regularly).</p>

<p>I can only talk about AgileBits in the highest regard, in the times I’ve spoken to them, they’ve responded within hours and found a quick resolution.</p>

<p>There has however been some negative press about 1Password, in November 2015 with their old 1PasswordAnywhere format not encrypting metadata, which was a bit of a worry. This is as it meant the domains and titles of sites stored were not encrypted. However within hours there was a solution available, and the AgileBits support staff were on hand on Reddit and other social networks to let people know how to migrate if they wanted to do so before its officially patched.</p>

<p>One company controlling everything in this respect works really well, as if a fundamental flaw was found in the keypass file format (for instance) it would take weeks, months or more for all the developers of different keypass apps to update to the new format (assuming that all the apps were still supported); this co-ordination I feel really gives the edge.</p>

<p>Alternatively, I could’ve chosen LastPass instead, but their recent absorption by LogMeIn doesn’t fill me with hope for their future. I also don’t like using their cloud infrastructure to handle my syncing, I’d much rather WiFi or file-sync myself.</p>
]]></description>
        <pubDate>Wed, 27 Jul 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/comment/2016/07/27/why-1password</link>
        <guid isPermaLink="true">https://nathaniel.work/comment/2016/07/27/why-1password</guid>
        
        
        <category>comment</category>
        
      </item>
    
    

      <item>
        <title>DofE Gold Award</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/dofe-map-banner.png"/>
        
        <p>I recently undertook my DofE gold with my Sixth Form.  My final expedition was 4 days walking the Yorkshire Dales and the walk was challenging, but certainly worth it!</p>

<p>Here’s a video of how it went, edited by <a href="//productions.shuck.org.uk">Shuck Productions</a> and the intro made by myself (in After Effects):</p>

<center><iframe src="https://drive.google.com/a/northfolk.co.uk/file/d/0Bz3YsAm1E_TtU1pTLWZ1Vmo1Y2s/preview" width="60%" style="border:none; min-height: 400px; min-width:400px;" allowfullscreen="allowfullscreen"></iframe></center>
]]></description>
        <pubDate>Mon, 25 Jul 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/life/2016/07/25/dofe-gold</link>
        <guid isPermaLink="true">https://nathaniel.work/life/2016/07/25/dofe-gold</guid>
        
        
        <category>life</category>
        
      </item>
    
    

      <item>
        <title>Getting Started with OwnTracks</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.workposts/pictures/owntracks.png"/>
        
        <p><em>This is a guide of home to get started with OwnTracks in Docker on Ubuntu 14.04</em></p>

<p>When I started with OwnTracks I had some trouble with the <a href="http://owntracks.org/booklet/clients/recorder/">booklet</a> as I found parts of it a tad disjointed and was a bit mixed up as there were some missing steps to get going. So here’s a quick guide to get OwnTracks installed and get going with it.</p>

<p>I’d advise you use Docker for it as it’s simpler to get started with and can easily be updated (also it contains a MQTT broker so it’s a bit less hassle).</p>

<ul>
  <li>Install Docker if you haven’t already</li>
  <li>Get the Docker repo <code class="language-plaintext highlighter-rouge">docker pull owntracks/recorderd</code></li>
  <li>By default OwnTracks will make itself some self-signed SSL certs, if you have your own Certificate Authority just sign yourself one for the domain your using, if not you can quickly create one using <a href="https://sourceforge.net/projects/xca/">XCA</a> here (using this guide) or use the default provided ones if you’re so inclined.</li>
  <li>Start the docker container using the command below, but changing the following; replace <code class="language-plaintext highlighter-rouge">/var/owntracks</code> and <code class="language-plaintext highlighter-rouge">/var/owntracks/log</code> with the data directory you want (create it first using mkdir) but for this walkthrough I’ll assume you use <code class="language-plaintext highlighter-rouge">/var/owntracks</code>. Replace <code class="language-plaintext highlighter-rouge">mydomain.uk</code> with your own domain, change <code class="language-plaintext highlighter-rouge">192.168.1.11</code> to your server’s network IP</li>
</ul>
<figure class="highlight"><pre><code class="language-xml" data-lang="xml">docker run \
-v /var/owntracks:/owntracks \ 
-v /var/owntracks/log:/tmp 
-p 1883:1883 -p 8883:8883 -p 8083:8083 \
-e MQTTHOSTNAME="mydomain.uk" 
-e IPLIST="192.168.1.11" 
-e HOSTLIST="mydomain.uk" \
owntracks/recorderd  </code></pre></figure>

<ul>
  <li>
    <p>When the container starts your data directory should populate, now kill the container using CTRL + C on the keyboard</p>
  </li>
  <li>
    <p>Create yourself some users by editing the <code class="language-plaintext highlighter-rouge">/var/owntracks/mosquitto/mosquitto.acl</code> file like this:</p>
  </li>
</ul>

<figure class="highlight"><pre><code class="language-xml" data-lang="xml">  # This affects all clients.
  attern write $SYS/broker/connection/%c/state
  pattern owntracks/%u/#
      	
  user recorder
  topic read owntracks/#
  #the above line says that owntracks is allowed to view all locations to save them
      	
  user nathaniel
  topic owntracks/nathaniel/+ 
  # the line above say that Nathaniel can only edit own locations
  topic read owntracks/+/+
  # the line above say that Nathaniel can view everyone's locations
      	
  user phil
  topic owntracks/phil/+
  # the line above says that Phil can only post and view his own locations
  # he can't see anyone elses locations
  </code></pre></figure>

<ul>
  <li>Next edit mosquitto.conf</li>
</ul>

<figure class="highlight"><pre><code class="language-xml" data-lang="xml">  
# add the password file and access control list (acl) links like this
password_file /owntracks/mosquitto/mosquitto.passwd
acl_file /owntracks/mosquitto/mosquitto.acl
    		
listener 1883
listener 8883
    		
# add your CA cert, web cert and private key here 
cafile /owntracks/cert3/ca.crt
certfile /owntracks/cert3/mosquitto.crt
keyfile /owntracks/cert3/mosquitto.key
    		
require_certificate false</code></pre></figure>

<ul>
  <li>
    <p>Next you need to get your users some passwords so they can actually post their location and so owntracks recorder can actually save the location so spin up the container again using the line from before then in another terminal window SSH’d in, run <code class="language-plaintext highlighter-rouge">docker ps</code> and copy the container ID</p>
  </li>
  <li>Now run <code class="language-plaintext highlighter-rouge">sudo docker exec -t -i container-ID-here bash</code></li>
  <li>
    <p>You’re inside the docker container, run <code class="language-plaintext highlighter-rouge">mosquitto_passwd /owntracks/mosquitto/mosquitto.passwd nathaniel</code> (replace nathaniel with your user’s name) and enter your new password twice, now do this for all the users you want don’t forget creating a password for ‘recorder’, then exit by typing <code class="language-plaintext highlighter-rouge">exit</code> and hitting enter.</p>
  </li>
  <li>
    <p>Now you should be ready to go, run <code class="language-plaintext highlighter-rouge">sudo nano /owntracks/mosquitto/mosquitto.passwd</code> and check your password hashes are there</p>
  </li>
  <li>You’re now ready to roll, so run the command below but this time you’re adding the user ‘recorder’ and the password you created for it so owntracks can record now,</li>
</ul>

<figure class="highlight"><pre><code class="language-xml" data-lang="xml">docker run \
-v /var/owntracks:/owntracks \ 
-v /var/owntracks/log:/tmp 
-p 1883:1883 -p 8883:8883 -p 8083:8083 \
-e MQTTHOSTNAME="mydomain.uk" 
-e IPLIST="192.168.1.11" 
-e HOSTLIST="mydomain.uk" \
-e OTR_USER='recorder' -e OTR_PASS='password' \
owntracks/recorderd  </code></pre></figure>

<ul>
  <li>
    <p>Navigate to http://yourIP:8083 and you should see the OwnTracks interface</p>
  </li>
  <li>
    <p>Install the OwnTracks root CA cert you created on your phone and fill out all the fields in the app like the screenshot and your phone should connect and your phone will populate the location (and it will appear in the web version).</p>
  </li>
</ul>

<p><img src="http://i.imgur.com/kmhC63j.png" alt="OwnTracks iOS app" /></p>

<ul>
  <li>
    <p>Forward port 8883 through your router, if you have Dynamic DNS you can just use yourdomain:8883 to continue posting even when you’re out and about.</p>
  </li>
  <li>
    <p>If everything is working well, kill the container and set it to always restart (as shown below) so it will restart after reboots and the docker process being restarted.</p>
  </li>
</ul>

<figure class="highlight"><pre><code class="language-xml" data-lang="xml">docker run \
-v /var/owntracks:/owntracks \ 
-v /var/owntracks/log:/tmp 
-p 1883:1883 -p 8883:8883 -p 8083:8083 \
-e MQTTHOSTNAME="mydomain.uk" 
-e IPLIST="192.168.1.11" 
-e HOSTLIST="mydomain.uk" \
-e OTR_USER='recorder' -e OTR_PASS='password' \
--restart='always' owntracks/recorderd  </code></pre></figure>

<ul>
  <li>Make yourself a brew</li>
</ul>
]]></description>
        <pubDate>Sat, 16 Apr 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/network/2016/04/16/getting-started-owntracks</link>
        <guid isPermaLink="true">https://nathaniel.work/network/2016/04/16/getting-started-owntracks</guid>
        
        
        <category>network</category>
        
      </item>
    
    

      <item>
        <title>NAS and NUC</title>
        <webfeeds:analytics id="UA-39228941-3" engine="GoogleAnalytics"/>
        <description>
        <![CDATA[
         <img src="https://nathaniel.work/images/posts/banners/nas-banner.JPG"/>
        
        <h3 id="establishing-a-decent-network-infrastructure">Establishing a decent network infrastructure</h3>
<p><img src="/images/posts/pictures/nas-nuc.jpg" alt="image" /></p>

<p>I started 2015 with nothing but a WD Passport 1TB drive connected to a BT Home Hub to serve our network, with its dreadfully slow read and write speeds, taking a good 30 seconds for a photo to display once selected.</p>

<p>I intended to move my home folder over to that drive too so I could have some kind of backup for my files, but backing up the 950GB of files I’ve amassed over the years to that drive didn’t seem a fun task. I also wanted a media streamer to rid us the need of having DVDs scattered around the house in different cabinets, as I had recently convinced my family to get a Google Chromecast for each room with a TV; so we needed a high quality way of streaming to them as well as allowing us to remotely play the media when we’re out or away through PLEX.</p>

<p>For this, I decided more hardware was needed; so I started comparison of the best NAS’ and media streamers and nearly chose the Synology DS214Play (as it does both in one) but decided to go with the Synology DS214 and an Intel NUC as the ‘Play’ model supposedly was unable to transcode (convert for devices) PLEX well as its dedicated GPU was only optimised for DS Video (Synology’s own video solution). However, the compatibility with USB tuner cards of Synology’s media player means in the future I will replace our existing BT Vision box with this to record in HD with availability in every room (playback through Plex) whenever I’m able to get an aerial cable down to there.</p>

<p>I ordered the hardware for the end of August, so I just had time to set it up before returning to school, I first installed the WD Red 3TBs and set up the NAS with shares for family members and establishing it as the DCHP and DNS server replacing BT’s default hard-coded DNS entries on the Home Hub with my internal domain and forwarding other requests to 8.8.8.8 (<em>priorities, right</em>). I also configured LDAP so I can later join my Mac to the directory server and sync my home folder to it (at the moment I’m just using Synology’s ‘DS Cloud’ app to back up my folders) and VPN (which was far more inconvenient than I ever imagined it could be, but we’ll save that for another post).</p>

<p>With the NUC, I installed a Western Digital 500gb HDD and booted from an Ubuntu USB drive, after installing and configuring Plex, Apache and numerous other services I was back to the start reinstalling Ubuntu due to a GRUB bootloader issue that prevented Ubuntu started.</p>

<p>I created shares on the NAS that were network accessible such as one for films and TV, photos, home videos as well as home folders for each of the users. Then I enabled NFS sharing on the NAS and gave permissions to the NUC for the films, home videos and backup folder (don’t want to lose my config again!). Another useful addition was plugging my BlinkStick into the NUC and using a Python script to change the LEDs colour depending on the CPU usage (green 0-49%, amber 50-99%, red 100%) which is especially useful to see when Plex is doing resource-intensive transcoding.</p>

<p>And that brings us nearly up to date. I’ll save the rest of the interesting and quirky set up tales for next time.</p>
]]></description>
        <pubDate>Thu, 14 Jan 2016 00:00:00 +0000</pubDate>
        <link>https://nathaniel.work/network/2016/01/14/nas-and-nuc</link>
        <guid isPermaLink="true">https://nathaniel.work/network/2016/01/14/nas-and-nuc</guid>
        
        
        <category>network</category>
        
      </item>
    
    
  </channel>
</rss>
