<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>MikeMJHarris' Blog</title>
    <link>https://blog.mikemjharris.com/</link>
    <description>Tech, some creative bits and other thoughts</description>
    <generator>MikeMJHarris' custom generator</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 20 Feb 2026 12:20:46 GMT</lastBuildDate>
    <atom:link href="https://blog.mikemjharris.com/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Return Of The (Big) Mac</title>
      <link>https://blog.mikemjharris.com/posts/return-of-the-big-mac</link>
      <pubDate>1 Feb 2026</pubDate>
      <guid>return-of-the-big-mac</guid>
      <description>&lt;!-- meta-data title: Return Of The (Big) Mac --&gt;
&lt;!-- meta-data searchtitle: return-of-the-big-mac --&gt;
&lt;!-- meta-data date: 1 Feb 2026 --&gt;
&lt;!-- meta-data intro: Going back to a big laptop - and this time of the Apple variety --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data tags:  --&gt;
&lt;!-- meta-data twitterimage:  https://blog.mikemjharris.com/images/big-and-small-laptops.jpg --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;
&lt;p&gt;
After 8 years of using ever decreasing in size, non Apple laptops I've now returned to a big Mac! From a tiny, 10 inch Windows laptop to a massive 16inch slab of Apple silicon.&lt;/p&gt;&lt;p&gt; Getting back into the Mac eco system was pretty smooth - a week or two of retraining the muscle memory and then back to working as smoothly as ever.  In fact even smoother - for all my success with non Mac's it's been quite a joy to come back: everything just works. The camera is good, the microphone is good, it looks good and above all - the battery life is amazing.&lt;/p&gt;&lt;p&gt;It's a huge slab of a laptop compared to my teeny one but doesn't need all the extras I needed to lug around to last a full day.

&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Big Mac, Small Laptop" src="/images/big-and-small-laptops.jpg" /&gt;
  &lt;figcaption&gt;New big mac, vs teeny tiny computer&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Teeny tiny windows laptops&lt;/h4&gt;
&lt;p&gt;
Previously I've written about my &lt;a href="https://blog.mikemjharris.com/posts/teeny-tiny-powerful-computer" target="_blank"&gt;teeny tiny powerful computer&lt;/a&gt;. A 10 inch laptop that was super portable. However most days I'd pack up a spare screen, keyboard, battery pack, charger etc..  Hey - it was super portable if needed it to be - but most of the time I didn't need its teeny tininess.&lt;/p&gt;&lt;p&gt; In my dreams I'd imagined hiking across hills and pausing to update a PR, running down a remote beach and stopping to add a blog post, swimming across a lake and then drying off to fix a bug.  In reality I was based at home or a short trip from a well equiped co working space.
&lt;/p&gt;

&lt;h4&gt;Return of the Mac&lt;/h4&gt;
&lt;p&gt;  I didn't go full in on the 16incher - that would have been too much - I eased in slowly with a delightful 14 inch Mac. On joining a growing startup in April 2025  and they gave everyone a super souped up Apple laptop.  This was my first shift from 8 years of Linux, Windows and &lt;a href="https://blog.mikemjharris.com/posts/my-attempts-at-wsl-part-2"&gt; WSL&lt;/a&gt;. But in that time I've kept updating my working setup, learning new shortcuts, trying new software so another update wasn't a big shock.  Switching to a Mac was pretty smooth - and to be fair, in almost every situation the Mac hardware or software just worked slightly smoother and more professionally.  
&lt;/p&gt;
&lt;h4&gt;Size&lt;/h4&gt;
&lt;p&gt;
A second job in 2025 heralded a new piece of kit.  A smaller tech company so I inherited the laptop of the person I was taking over from.  This was the biggest laptop I've ever used professionally.  Like getting a new TV it felt huge to start - but after a short period you get used to it and anything else smaller becomes almost unusable.  I'm not hiking great distances - a few times a week I walk the 20mins to london fields.  The bigger laptop means no extra screen, no extra camera.  I do take an extra keyboard as I put the laptop on a stand.  The best thing of all has been the amazing battery life:  A day of calls I still need a charger but for most days I can get by with just the overnight charge
&lt;/p&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;
The shift back to Apple has been great - learnt a huge amount from being on Windows and Linux but it's just happy making being back with a Mac. 
&lt;/p&gt;
&lt;p&gt;
 Size? well - the 16 inch took a little while to get used to. I think ~14 inch would be my ideal. My setup and workflow means I'm happy without too much screen real estate. I do have an eye on an even smaller 8inch PC and a VR headset but that's a post for another day. For now - the Mac is back - and it's big!
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>2025 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2025-retro</link>
      <pubDate>1 Jan 2026</pubDate>
      <guid>2025-retro</guid>
      <description>&lt;!-- meta-data title: 2025 Retro --&gt;
&lt;!-- meta-data searchtitle: 2025-retro --&gt;
&lt;!-- meta-data date: 01/01/2026  --&gt;
&lt;!-- meta-data intro: Many, many things happening --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;p&gt;
 This year was roughly split in thirds - paternity leave, a new job for 6 months and then another new job in the last bit of the year.  Lots of other life happening alongside with time taken up supporting the generation above and below more than has needed to in previous years.  Through into that major building work at home and surprised I even have time for this blog post!
&lt;/p&gt;

&lt;p&gt;
  The one blog post I did write highlighted how things like, say, changing careers or having a baby unsurprisingly meant less time for much else. This year have started two jobs - it always takes a bit of extra stress and energy starting out somewhere - am a big believer in putting a lot of time and effort in at the start and making good on those first impressions.  Doing that twice in a year and also going through a quite intense job interview was a lot - plus throw in family/life things.  Fortunately all the hard work seems to have paid off - v happy with the role I've ended up in - it's just right for where I am in life at the moment.  Family things are settling down and while our house is missing some walls building work is in full flow. 
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;div class="table-container"&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;2025&lt;/th&gt;
      &lt;th&gt;2024&lt;/th&gt;
      &lt;th&gt;2023&lt;/th&gt;
      &lt;th&gt;2022&lt;/th&gt;
      &lt;th&gt;2021&lt;/th&gt;
      &lt;th&gt;2020&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        14 
      &lt;/td&gt;
      &lt;td&gt;
        21
      &lt;/td&gt;
      &lt;td&gt;
        20
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        31
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
       39 
      &lt;/td&gt;
      &lt;td&gt;
       193
      &lt;/td&gt;
      &lt;td&gt;
       1,830
      &lt;/td&gt;
      &lt;td&gt;
        455
      &lt;/td&gt;
      &lt;td&gt;
        1,082
      &lt;/td&gt;
      &lt;td&gt;
        1,796
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
         2 
      &lt;/td&gt;
      &lt;td&gt;
        25
      &lt;/td&gt;
      &lt;td&gt;
        105
      &lt;/td&gt;
      &lt;td&gt;
        138
      &lt;/td&gt;
      &lt;td&gt;
        124
      &lt;/td&gt;
      &lt;td&gt;
        67
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
        40 
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
      119
      &lt;/td&gt;
      &lt;td&gt;
       75
      &lt;/td&gt;
      &lt;td&gt;
        62
      &lt;/td&gt;
      &lt;td&gt;
        97
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        1 
      &lt;/td&gt;
      &lt;td&gt;
        4
      &lt;/td&gt;
      &lt;td&gt;
        3
      &lt;/td&gt;
      &lt;td&gt;
        2
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Cycled
      &lt;/td&gt;
      &lt;td&gt;
        0 
      &lt;/td&gt;
      &lt;td&gt;
       45
      &lt;/td&gt;
      &lt;td&gt;
       395
      &lt;/td&gt;
      &lt;td&gt;
       166
      &lt;/td&gt;
      &lt;td&gt;
        3,385
      &lt;/td&gt;
      &lt;td&gt;
        498
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;

&lt;h4&gt;Story in the Stats&lt;/h4&gt;
&lt;p&gt;
 Not much to add - all the above meant not much time for things.  Also lugging a little human around is surprisingly tough and ended up with various tweaks and pains.  Happy to have kept the yoga up - aware not much cardio and can feel the lack of fitness both in shortness in breath and round the belly.
&lt;/p&gt;

&lt;h4&gt;Books and art and stuff&lt;/h4&gt;
&lt;p&gt;
 Favourite books this year -  Toast by Nigel Slater, All Fours Miranda July.  Art stuff - hanging out in Florence.
&lt;/p&gt;

&lt;h4&gt;Resolutions&lt;/h4&gt;
&lt;p&gt;
 The new job provides much more flexibility and am in a co working space right by London Fields - aim to get to the lido there a couple of times a week.  Previous years have been there regularly and know how happy it makes me - making time in amongst everything else (while continuing the yoga) would be a successful year.
&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;
 Big year - more things happened this year than have done in multiple previous years. Feel in a good spot and if everything continues on this track and I get to do a bit more swimming then will be a great 2026.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Changing careers is like running 1000 miles (YMMV)</title>
      <link>https://blog.mikemjharris.com/posts/changing-career-is-like-running-1000-miles</link>
      <pubDate>25 Apr 2025</pubDate>
      <guid>changing-career-is-like-running-1000-miles</guid>
      <description>&lt;!-- meta-data title: Changing careers is like running 1000 miles (YMMV)--&gt;
&lt;!-- meta-data searchtitle: changing-career-is-like-running-1000-miles --&gt;
&lt;!-- meta-data date:  25 April 2025 --&gt;
&lt;!-- meta-data intro: Any big change in life requires effort - but how much is needed to shift careers or have a baby  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/run-equivalent.png --&gt;

&lt;style&gt;
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
      margin: 0;
      padding: 0;
      display: flex;
      justify-content: center;
    }
    .chart-container {
      display: flex;
      flex-direction: column;
      align-items: center;
      padding: 1rem;
      width: 100%;
      max-width: 900px;
    }
    .chart-wrapper {
      border: 1px solid #e2e8f0;
      border-radius: 0.25rem;
      padding: 1rem;
      background-color: white;
      width: 100%;
      box-sizing: border-box;
    }
    #chart {
      width: 100%;
      height: auto;
    }
    /* Add styles for the y-axis to prevent text overlap */
    .y-axis text, .x-axis text {
      font-size: 12px;
    }
    /* Legend styles */
    .legend-item {
      display: inline-block;
      margin-right: 20px;
      align-items: center;
    }
    .legend-container {
      padding-top: 20px;
      text-align: center;
    }
    /* Responsive styles for small screens */
    @media (max-width: 600px) {
      .chart-wrapper {
        padding: 0.5rem;
      }
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;p&gt;
  Some things in life take up a lot of time and effort - for example changing career or having a baby.   It’s over ten years now since I changed careers and I know it took a lot of work and dedication - but how reliable are my memories - can I quantify what the impact was? Fortunately I can - it’s equivalent to running 1000 miles (&lt;a href="https://dictionary.cambridge.org/dictionary/english/ymmvYMMV" target="_blank"&gt;YMMV&lt;/a&gt;).
  &lt;div class="chart-container"&gt;

    &lt;h2&gt;Running Activity Over Years&lt;/h2&gt;
    &lt;div class="chart-wrapper"&gt;
      &lt;div id="chart"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;h2&gt;1000 Miles&lt;/h2&gt;
  &lt;p&gt;
  The chart shows how much running I did each year - as I got older, wiser and slightly more achy I added in lots of yoga and swimming. I have a rough conversion based on time it takes to do an activity to produce a Run Equivalent metric each year. The graph is pretty clear:  either side of my career change in 2014 I was roughly doing 2200km. In 2014 that dropped to around 500km.  So roughly 1000 miles (miles here instead of KM so I can amusingly use YMMV) - Your mileage may vary - if you run your mileage will likely literally vary. However you may not run but if you have an intense new thing in your life it will likely mean doing less of something else.&lt;/p&gt;

  &lt;h2&gt;Not just exercise&lt;/h2&gt;
  &lt;p&gt;While I track exercise the career change didn’t just impact that - it was an intense period with a unique opporunity to make the most of a coding bootcamp, events and an engaged cohort.  The learning, networking and socialising swallowed up not just the running but lots of my personal and social life. This was all worth it - I needed a new career, a new job and to accelerate as fast as possible to pay the bills. I liken it to accelerating in a car - you drop a gear, raise the revs and accelerate as quickly as possible. Once up to speed you settle down into a more maintainable way of life.  And that is what came to pass - there was still plenty of hard work and graft but there was also space to get back to friends, family and fitness.&lt;/p&gt;

  &lt;h2&gt;
Other things that take up time.
  &lt;/h2&gt;
  &lt;p&gt;
  Post 2016 the graph has a lot more ups and downs - a big running event in 2019, a pandemic from 2020 onwards, an older body needing more yoga and less running, a bad back impacting total running in 2022.  The run equivalent levels though were pretty high still - until 2024. The arrival of a baby takes a lot of time - and the numbers suggest roughly as much as an intense career change and around that magic 1000 miles.  You can’t really accelerate a baby's progress - it just takes up a lot of time. Working hard is imperative as babies cost money so it’s the sport that gives (although replaced by plenty of activity - more crawling on the floor, pushing buggies, lifting a wriggling little body).  Hopefully some balance settles in although I have a feeling I’ve seen my all time highs of yearly run equivalent KMs. Arugably that was a little excessive - also the replacement is more than worth it.&lt;/p&gt;

  &lt;h2&gt;Summary&lt;/h2&gt;
      &lt;p&gt;So the clear and probably obvious message is - a big life change will take up time. In my case a new career and a baby both were equivalent to running 1000 miles. As always - your mileage will figuratively and literally - vary.&lt;/p&gt;



  &lt;script&gt;
    document.addEventListener('DOMContentLoaded', function() {
      // Create a responsive chart that resizes with the window
      function createChart() {
        // Clear previous chart if exists
        d3.select("#chart").selectAll("*").remove();
        
        // Parse the data
        const data = [
          { year: 2012, kmRun: 1639, runEquivalent: 2109 },
          { year: 2013, kmRun: 1633, runEquivalent: 2453 },
          { year: 2014, kmRun: 391, runEquivalent: 451 },
          { year: 2015, kmRun: 1389, runEquivalent: 2640 },
          { year: 2016, kmRun: 1145, runEquivalent: 2359 },
          { year: 2017, kmRun: 1083, runEquivalent: 2009 },
          { year: 2018, kmRun: 1642, runEquivalent: 2702 },
          { year: 2019, kmRun: 2472, runEquivalent: 3442},
          { year: 2020, kmRun: 1796, runEquivalent: 3250},
          { year: 2021, kmRun: 1082, runEquivalent: 3338},
          { year: 2022, kmRun: 455, runEquivalent: 1945 },
          { year: 2023, kmRun: 1830, runEquivalent: 3664 },
          { year: 2024, kmRun: 193, runEquivalent: 811},
        ];
        
        // Get container width for responsive sizing
        const containerWidth = document.getElementById('chart').clientWidth;
        const containerHeight = Math.min(Math.max(containerWidth * 0.6, 300), 500); // Maintain aspect ratio with min/max height
        
        // Set dimensions based on container size
        const margin = {
          top: 40,
          right: 30, // Reduced right margin
          bottom: 100, // Increased bottom margin for legend
          left: containerWidth &lt; 500 ? 60 : 80 // Adjust left margin based on screen size
        };
        
        const width = containerWidth;
        const height = containerHeight;
        const innerWidth = width - margin.left - margin.right;
        const innerHeight = height - margin.top - margin.bottom;
        
        // Create SVG element with viewBox for responsiveness
        const svg = d3.select("#chart")
          .append("svg")
          .attr("width", width)
          .attr("height", height)
          .attr("viewBox", `0 0 ${width} ${height}`)
          .attr("preserveAspectRatio", "xMidYMid meet");
        
        // Create chart group
        const g = svg.append("g")
          .attr("transform", `translate(${margin.left},${margin.top})`);
        
        // Create scales - use band scale for x to ensure one tick per year
        const xScale = d3.scaleBand()
          .domain(data.map(d =&gt; d.year))
          .range([0, innerWidth])
          .padding(0.1);
        
        // Create y scale for both metrics
        const yScale = d3.scaleLinear()
          .domain([0, d3.max(data, d =&gt; Math.max(d.kmRun, d.runEquivalent))])
          .range([innerHeight, 0])
          .nice();
        
        // Create line generators
        const lineRun = d3.line()
          .x(d =&gt; xScale(d.year) + xScale.bandwidth() / 2)
          .y(d =&gt; yScale(d.kmRun))
          .curve(d3.curveMonotoneX);
        
        const lineEquivalent = d3.line()
          .x(d =&gt; xScale(d.year) + xScale.bandwidth() / 2)
          .y(d =&gt; yScale(d.runEquivalent))
          .curve(d3.curveMonotoneX);
        
        // Add X axis with exactly one tick per year
        const xAxis = g.append("g")
          .attr("class", "axis x-axis")
          .attr("transform", `translate(0,${innerHeight})`)
          .call(
    d3.axisBottom(xScale)
      .tickFormat((d) =&gt; {
        // If d is already a year number (like 2024)
        const yearStr = d.toString();
        // Get the last two digits of the year
        const shortYear = "'" + yearStr.slice(-2);
        // On small screens, only show alternate years
        return containerWidth &lt; 500 ? 
          (d % 2 === 0 ? shortYear : '') : 
          yearStr;
      })
  );
        
        // Adjust font size for small screens
        if (containerWidth &lt; 500) {
          xAxis.selectAll("text")
            .style("font-size", "10px");
        }
        
        // X axis label
        g.append("text")
          .attr("x", innerWidth / 2)
          .attr("y", innerHeight + 40)
          .attr("text-anchor", "middle")
          .attr("fill", "black")
          .style("font-size", containerWidth &lt; 500 ? "12px" : "14px")
          .style("font-weight", "bold")
          .text("Year");
        
        // Add Y axis
        const yAxis = g.append("g")
          .attr("class", "axis y-axis")
          .call(d3.axisLeft(yScale)
            .tickFormat(d =&gt; d.toLocaleString())
            .tickSize(-5)
            .ticks(containerWidth &lt; 500 ? 5 : 10)
          );
        
        // Adjust font size for small screens
        if (containerWidth &lt; 500) {
          yAxis.selectAll("text")
            .style("font-size", "10px");
        }
        
        // Y axis label
        g.append("text")
          .attr("transform", "rotate(-90)")
          .attr("x", -innerHeight / 2)
          .attr("y", containerWidth &lt; 500 ? -40 : -50)
          .attr("text-anchor", "middle")
          .attr("fill", "black")
          .style("font-size", containerWidth &lt; 500 ? "12px" : "14px")
          .style("font-weight", "bold")
          .text("Kilometers");
        
        // Add vertical grid lines for each year
        g.selectAll(".grid-line")
          .data(data)
          .enter()
          .append("line")
          .attr("class", "grid-line")
          .attr("x1", d =&gt; xScale(d.year) + xScale.bandwidth() / 2)
          .attr("x2", d =&gt; xScale(d.year) + xScale.bandwidth() / 2)
          .attr("y1", 0)
          .attr("y2", innerHeight)
          .attr("stroke", "#e0e0e0")
          .attr("stroke-width", 1);
        
        // Add horizontal grid lines
        yScale.ticks(containerWidth &lt; 500 ? 5 : 10).forEach(tick =&gt; {
          g.append("line")
            .attr("class", "grid-line-horizontal")
            .attr("x1", 0)
            .attr("x2", innerWidth)
            .attr("y1", yScale(tick))
            .attr("y2", yScale(tick))
            .attr("stroke", "#e0e0e0")
            .attr("stroke-width", 1);
        });
        
        // Add lines
        g.append("path")
          .datum(data)
          .attr("fill", "none")
          .attr("stroke", "#ff6b6b")
          .attr("stroke-width", 3)
          .attr("d", lineRun);
        
        g.append("path")
          .datum(data)
          .attr("fill", "none")
          .attr("stroke", "#4361ee")
          .attr("stroke-width", 3)
          .attr("d", lineEquivalent);
        
        // Add points
        g.selectAll(".point-running")
          .data(data)
          .enter()
          .append("circle")
          .attr("class", "point-running")
          .attr("cx", d =&gt; xScale(d.year) + xScale.bandwidth() / 2)
          .attr("cy", d =&gt; yScale(d.kmRun))
          .attr("r", containerWidth &lt; 500 ? 3 : 5)
          .attr("fill", "#ff6b6b");
        
        g.selectAll(".point-equivalent")
          .data(data)
          .enter()
          .append("circle")
          .attr("class", "point-equivalent")
          .attr("cx", d =&gt; xScale(d.year) + xScale.bandwidth() / 2)
          .attr("cy", d =&gt; yScale(d.runEquivalent))
          .attr("r", containerWidth &lt; 500 ? 3 : 5)
          .attr("fill", "#4361ee");
        
        // Conditional rendering of data labels based on screen size
        if (containerWidth &gt;= 400) {
          // Add labels for data points
          data.forEach(d =&gt; {
            // KM Run labels
            g.append("text")
              .attr("x", xScale(d.year) + xScale.bandwidth() / 2)
              .attr("y", yScale(d.kmRun) - 10)
              .attr("text-anchor", "middle")
              .attr("fill", "#ff6b6b")
              .style("font-size", containerWidth &lt; 500 ? "8px" : "10px")
              .style("font-weight", "bold")
              .text(d.kmRun);
            
            // Run Equivalent labels
            g.append("text")
              .attr("x", xScale(d.year) + xScale.bandwidth() / 2)
              .attr("y", yScale(d.runEquivalent) - 10)
              .attr("text-anchor", "middle")
              .attr("fill", "#4361ee")
              .style("font-size", containerWidth &lt; 500 ? "8px" : "10px")
              .style("font-weight", "bold")
              .text(d.runEquivalent);
          });
        }
        
        // Add in-chart labels if there's enough space
        if (containerWidth &gt;= 600) {
          // For Actual Running - add at 2016 position
          g.append("text")
            .attr("x", xScale(2016) + xScale.bandwidth() / 2)
            .attr("y", yScale(data.find(d =&gt; d.year === 2016).kmRun) + 25)
            .attr("text-anchor", "middle")
            .attr("fill", "#ff6b6b")
            .style("font-size", "12px")
            .style("font-weight", "bold")
            .text("Actual Running")
            .attr("stroke", "white")
            .attr("stroke-width", 5)
            .attr("paint-order", "stroke")
            .lower();
          
          // For Run Equivalent - add at 2015 position
          g.append("text")
            .attr("x", xScale(2015) + xScale.bandwidth() / 2)
            .attr("y", yScale(data.find(d =&gt; d.year === 2015).runEquivalent) - 25)
            .attr("text-anchor", "middle")
            .attr("fill", "#4361ee")
            .style("font-size", "12px")
            .style("font-weight", "bold")
            .text("Run Equivalent")
            .attr("stroke", "white")
            .attr("stroke-width", 5)
            .attr("paint-order", "stroke")
            .lower();
        }
          
        // Add improved bottom legend
        const legendContainer = g.append("g")
          .attr("class", "legend")
          .attr("transform", `translate(0, ${innerHeight + 55})`);
        
        const legendItems = [
          { label: "Actual Running (km)", color: "#ff6b6b" },
          { label: "Run Equivalent (km)", color: "#4361ee" }
        ];
        
        // Calculate spacing based on container width
        const legendSpacing = containerWidth &lt; 500 ? 
          0:  // For small screens - center each item
          innerWidth / 2.8;   // For larger screens - more spacing

        
        
        // Line size and text positioning
        const lineWidth = 30;
        const lineHeight = 3;
        const textOffsetY = 5;
        
        legendItems.forEach((item, i) =&gt; {
          const height = containerWidth &lt; 500 &amp;&amp; i === 0 ? lineHeight + 10 : lineHeight;
          
          const legendGroup = legendContainer.append("g")
            .attr("transform", `translate(${i * legendSpacing}, ${height})`);
         
          // Add colored line
          legendGroup.append("line")
            .attr("x1", 0)
            .attr("y1", height)
            .attr("x2", lineWidth)
            .attr("y2", height)
            .attr("stroke", item.color)
            .attr("stroke-width", lineHeight);
          
          // Add circle for the data points
          legendGroup.append("circle")
            .attr("cx", lineWidth / 2)
            .attr("cy", height )
            .attr("r", 4)
            .attr("fill", item.color);
          
          // Add text label
          legendGroup.append("text")
            .attr("x", lineWidth + 10)
            .attr("y", height)
            .attr("fill", "black")
            .style("font-size", containerWidth &lt; 500 ? "11px" : "13px")
            .style("font-weight", containerWidth &lt; 500 ? "normal" : "bold")
            .text(item.label);
        });
        
        // Adjust legend positioning based on container width
        if (containerWidth &lt; 500) {
          // Center the legend for small screens
          const legendWidth = innerWidth;
          legendContainer.attr("transform", `translate(${(innerWidth - legendWidth) / 2}, ${innerHeight + 50})`);
        } else {
          // Center the legend for larger screens
          legendContainer.attr("transform", `translate(${innerWidth / 6}, ${innerHeight + 60})`);
        }
      }
      
      // Initial chart creation
      createChart();
      
      // Redraw chart on window resize
      window.addEventListener('resize', function() {
        // Debounce the resize event
        clearTimeout(window.resizeTimer);
        window.resizeTimer = setTimeout(function() {
          createChart();
        }, 250);
      });
    });
  &lt;/script&gt;
</description>
    </item>
    <item>
      <title>2024 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2024-retro</link>
      <pubDate>23 Jan 2025</pubDate>
      <guid>2024-retro</guid>
      <description>&lt;!-- meta-data title: 2024 Retro --&gt;
&lt;!-- meta-data searchtitle: 2024-retro --&gt;
&lt;!-- meta-data date: 23 Jan 2025 --&gt;
&lt;!-- meta-data intro: 2024: The reason for the terrible numbers --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/2024-yea-in-numbers.png  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;
&lt;p&gt;
What a terrible year according to the numbers.  OK roughly the same number of books read and blog posts written but oooh - look at the exercise.  I've run more KM than that in two weeks before - and looks like I've hardly looked at the pool. Yoga - an essential the recent few years - dropped significantly. 
&lt;/p&gt;

&lt;p&gt;
  Nope - not a terrible injury or illness.  Had a baby - swapped out jogging for trips with the pushchair, yoga for squatting on the floor playing with toys.  Wouldn't change it for the world - wonderful, tiring, rewarding, frustrating, enlightening and so much more all in one.  
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;div class="table-container"&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;2024&lt;/th&gt;
      &lt;th&gt;2023&lt;/th&gt;
      &lt;th&gt;2022&lt;/th&gt;
      &lt;th&gt;2021&lt;/th&gt;
      &lt;th&gt;2020&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        21
      &lt;/td&gt;
      &lt;td&gt;
        20
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        31
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
       193 
      &lt;/td&gt;
      &lt;td&gt;
       1,830 
      &lt;/td&gt;
      &lt;td&gt;
        455
      &lt;/td&gt;
      &lt;td&gt;
        1,082
      &lt;/td&gt;
      &lt;td&gt;
        1,796
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        25 
      &lt;/td&gt;
      &lt;td&gt;
        105 
      &lt;/td&gt;
      &lt;td&gt;
        138
      &lt;/td&gt;
      &lt;td&gt;
        124
      &lt;/td&gt;
      &lt;td&gt;
        67
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
        48 
      &lt;/td&gt;
      &lt;td&gt;
      119 
      &lt;/td&gt;
      &lt;td&gt;
       75
      &lt;/td&gt;
      &lt;td&gt;
        62
      &lt;/td&gt;
      &lt;td&gt;
        97
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        4
      &lt;/td&gt;
      &lt;td&gt;
        3
      &lt;/td&gt;
      &lt;td&gt;
        2
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Cycled
      &lt;/td&gt;
      &lt;td&gt;
       45 
      &lt;/td&gt;
      &lt;td&gt;
       395 
      &lt;/td&gt;
      &lt;td&gt;
       166
      &lt;/td&gt;
      &lt;td&gt;
        3,385
      &lt;/td&gt;
      &lt;td&gt;
        498
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;Not much more to add really not least because I've just started parental leave and the baby is likely to wake any moment so no time! A year like no other - some mourning for the old life but the joy of the new far outweighs that.  As an older parent some guilt of switching groups but delight at meeting new friends - knowing that life melds, flows and adapts.&lt;/p&gt;
&lt;p&gt;For the next year let's see.  Am doing a lot of non trackable movement and exercise with caring for a baby . The main aim for this year is to try out the running buggy. I also have a new job with a couple of days near Victoria so will likely add back in a running commute - plus make sure that new role goes well. Would love to get back in the pool - hopefully some sessions for me but also to introduce the next generation to the joys of water.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tech Tips - Chrome profiles</title>
      <link>https://blog.mikemjharris.com/posts/tech-tips-chrome-profiles</link>
      <pubDate>21 Oct 2024</pubDate>
      <guid>tech-tips-chrome-profiles</guid>
      <description>&lt;!-- meta-data title: Tech Tips - Chrome profiles --&gt;
&lt;!-- meta-data searchtitle: tech-tips-chrome-profiles --&gt;
&lt;!-- meta-data date: 21 Oct 2024 --&gt;
&lt;!-- meta-data intro: Separating work and leisure online --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data tags: tech-tips --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/images/chrome-profiles.png --&gt;

&lt;p&gt;
  Tech tip but this one's for everyone! I rely heavily on the Google chrome profile feature. It helps keep my personal and professional activities separate and is incredibly useful for tech testing. It's a great way to prevent having to log in out and of different accounts multiple times. 
&lt;/p&gt;
&lt;figure&gt;
    &lt;img src="/images/chrome-profiles.png" alt="Work profile" /&gt;
  &lt;figcaption&gt;Chrome profiles&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Keeping work and pleasure separate but available&lt;/h4&gt;
&lt;p&gt;
  We're on computers all the time: sometimes during the work day I need to do some personal browsing, sometimes in the evenings I need to do a few work tasks. Prior to using profiles I had work bookmarks on my home computer, personal browsing on my work laptop. I've left jobs and lost history or saved passwords. But with profiles no more.
&lt;/p&gt;
&lt;p&gt;
  Google profiles are sandboxed environments with separate browsing history, bookmarks, passwords and extensions.
&lt;/p&gt;
&lt;figure&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/profile-work.png" alt="Work profile" /&gt;
    &lt;img src="/images/profile-personal.png" alt="Personal profile" /&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;Different colours for my work and personal profiles&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Fantastic for freelancers&lt;/h4&gt;
&lt;p&gt;
A great example of how this can be useful is for a freelancer with multiple clients. Each of those clients probably has, say, a Google Analytics account, a Figma account, a Notion account etc. By using a separate profile for each client you can be logged into a different Figma account in each profile - one can just switch windows instead of logging in and out in the same context. &lt;/p&gt;


&lt;p&gt;Passwords are kept separate and if you want to have a sense of what work you've done for each client and well you'll have separate browsing histories in each profile.&lt;/p&gt;
&lt;/p&gt;
&lt;h4&gt;For everyone - Keeping work and personal separate&lt;/h4&gt;
&lt;p&gt;
  You don't need to be a freelancer though - I have a work Google account and a personal one and keep separate profiles for each. If I move jobs I keep all my personal settings and passwords. You don't even need a Google work account - you can still set up a profile just for browsing even if your team uses another provider such as Microsoft.
&lt;/p&gt;
&lt;h4&gt;Guest profiles - making tech testing easy&lt;/h4&gt;
&lt;p&gt;
  Your google account has a profile and it goes with you wherever you go.  In addition you can create a guest profile just on your device  - I use this in lots of situations but mainly as a way to test the features I build at work.  Often I need to be logged in as multiple users at once.  Or I'm using a tool like OneSignal and want to test how notification permissions work for a new user. Plenty of other use cases where for a short period you want a separate browsing experience but don't lose your history like you do in incognito mode.

&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;
  Lots of reasons to keep your internet activities isolated. Profiles allow your work and personal use to be separated. They also superpower web application testing. I have multiple profiles and have learned to associate the different colors with the different accounts - meaning switching windows to the correct one is a breeze and something I do multiple times a day.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Teeny Tiny Powerful Computer</title>
      <link>https://blog.mikemjharris.com/posts/teeny-tiny-powerful-computer</link>
      <pubDate>7 Jul 2024</pubDate>
      <guid>teeny-tiny-powerful-computer</guid>
      <description>&lt;!-- meta-data title: Teeny Tiny Powerful Computer --&gt;
&lt;!-- meta-data searchtitle: teeny-tiny-powerful-computer --&gt;
&lt;!-- meta-data date: 7 Jul 2024 --&gt;
&lt;!-- meta-data intro: A 10 inch laptop that works equally well as my main daily workhorse and for galavanting around town --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data tags:  --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/computer-barbican.jpg --&gt;
&lt;p&gt;
The last few years I've been on a vague quest to find a super tiny but powerful computer. Finally I've found a 10inch laptop that is powerful enough to work as my main laptop plus doubles up as a fun, portable device.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Teeny tiny computer at the barbican" src="/images/computer-barbican.jpg" /&gt;
  &lt;figcaption&gt;Tiny computer - Barbican Center for scale&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Replacing a Dell XPS 13&lt;/h4&gt;
&lt;p&gt;
My last few computers have been Dell XPS 13s. Along the way I tried using a &lt;a href="https://blog.mikemjharris.com/posts/coding-with-a-chromebook"&gt;Chromebook&lt;/a&gt; hooked up to the cloud and a failed attempt at coding on a &lt;a href="https://blog.mikemjharris.com/posts/my-attempts-at-wsl"&gt;Surface Go&lt;/a&gt;. I'd come to the conclusion that I'd always be stuck with a 13 inch laptop - but then I found in the depths of the internet the &lt;a href="https://www.aliexpress.com/item/4000903896868.html"&gt;One-Netbook 5&lt;/a&gt; - Intel I7, 32Gb RAM and 10 inch screen - but was it any good? Short answer - yes! It's my day to day laptop now. My job is writing code and it's more than up to the task - it even sped up build times on my work project by a factor of 3 from my previous decent specced Dell.
&lt;/p&gt;
&lt;p&gt; 
Not only did I have the speed but I had amazing portability - see the pictures for how easily the laptop fits on a train and in comparison with a 13inch Mac. It looks and feels like a leatherbound journal. 
&lt;/p&gt;
&lt;figure&gt;
  &lt;div class="half"&gt;
    &lt;img alt="Teeny computer on a train" src="/images/computer-train.jpg" /&gt;
    &lt;img alt="Teeny computer with a mac 13" src="/images/computer-comparison.jpg" /&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;Teeny Tiny computer on a train and a comparison vs a 13 inch Mac&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Downsides&lt;/h4&gt;
&lt;p&gt;
Compared to the Dell - none really.  But both the Dell and the teeny tiny computer both have poor (or indeed no!) camera and relatively poor battery life.  I got a super portable Opal tadpole camera and a battery pack (see pics). Both of these I would use anyway with another windows laptop and provide enhanced quality and power.  
&lt;/p&gt;
&lt;figure&gt;
  &lt;div class="half"&gt;
    &lt;img alt="Teeny tiny computer in a shed" src="/images/computer-shed.jpg" /&gt;
    &lt;img alt="Teeny tiny computer in a in a cafe" src="/images/computer-cafe.jpg" /&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;Teeny Tiny computer in a shed and a cafe&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h4&gt;Upsides&lt;/h4&gt;
&lt;p&gt;
The main upside is the size. For a large chunk of the day though it's hooked up to a wide screen, separate keyboard and camera.  But when I'm out and about it gets thrown in a small shoulder bag and I'm off.  It looks super fancy and while my enjoyment of it is the main thing I've also appreciated the multiple complimentary comments. 
&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt; 
The downsides of the camera and battery are a minor inconvenience and am hoping a future version with the new Copilot PCs will fix those issues.  If you like small laptops like I do then it's brilliant.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tech Tips - Ctrl R</title>
      <link>https://blog.mikemjharris.com/posts/tips-ctrl-r</link>
      <pubDate>7 Apr 2024</pubDate>
      <guid>tips-ctrl-r</guid>
      <description>&lt;!-- meta-data title: Tech Tips - Ctrl R --&gt;
&lt;!-- meta-data searchtitle: tips-ctrl-r --&gt;
&lt;!-- meta-data date: 07 Apr 2024 --&gt;
&lt;!-- meta-data intro: Terminal memory --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data tags: tech-tips --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/ctrl-r.png --&gt;
&lt;p&gt;
   Techy tech tip - this one for those of your who need to use the terminal.  The key combo - `Ctrl-r` (of Cmd-r` for mac users) is super handy in helping you find and reuse commands you've used previously - whether that's a regular, often used one or helping you recall some distant memory of a one of sequence. 
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Ctrl r in action" src="/images/ctrl-r.png" /&gt;
  &lt;figcaption&gt;`Ctrl-r` in action - a few characters and the option to choose from the past&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Quick way to get an old commands&lt;/h4&gt;
&lt;p&gt;
  Using the terminal can be super powerful but also tricky.  There's no clearly labelled button to click - just an empty line and a cursor.  It's up to you to remember or find out what to type.
&lt;/p&gt;
&lt;p&gt;
Fortunately a lot of the commands are the same and repeated.  In case you don't have a letter perfect memory or are bored of typing then `Ctrl-r`  helps out.  It shows you all the previous commands you've used and filters them as you type - all you have to do is remember a few letters.
&lt;p&gt;

&lt;h4&gt;Why not alias&lt;/h4&gt;
&lt;p&gt;
Aliases are super helpful - you assign a few letters to a command. I find that I use `Ctrl-r` instead of aliases. You don't have to remember a specific couple of letters, you can quickly find similar commands (say git pull, git pull --rebase, git stash &amp;&amp; git pull) without having to save and remember different shortcuts.  Finally you still see and interact with the actual command rather than a custom to you shortcut - also helpful when pairing where your partner wont have the same aliases as you.
&lt;/p&gt;
&lt;p&gt;
As with most things a personal preference - aliases do a great job. Sometime thought it's that half remembered command you ran ages ago that you need though and that's where `Ctrl-r` comes into it's own. A combo of the two will likely be the sweet spot.
&lt;/p&gt;
&lt;h4&gt;Super charge with fzf&lt;/h4&gt;
&lt;p&gt;
The native `Ctrl-r` works OK but it gets a turbo charge when used with &lt;a href="https://github.com/junegunn/fzf" target="_blank"&gt;fzf - command line fuzzy finder&lt;/a&gt;.  Instead of the standard 'one result' you can see a longer history and can navigate with vim bindings.
&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;
 Most developers need to use the terminal and in most cases wont have a memory that will store enough shortcuts or commands.  Using `Ctrl-r` makes it much easier to reuse commands - whether a standard git command or that super complex sed/grep chain you spent ages creating. It's all there a few key strokes away.
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>Tech Tips - Plus sign in an email</title>
      <link>https://blog.mikemjharris.com/posts/tips-plus-sign-in-email</link>
      <pubDate>25 Jan 2024</pubDate>
      <guid>tips-plus-sign-in-email</guid>
      <description>&lt;!-- meta-data title: Tech Tips - Plus sign in an email --&gt;
&lt;!-- meta-data searchtitle: tips-plus-sign-in-email --&gt;
&lt;!-- meta-data date: 25 Jan 2024 --&gt;
&lt;!-- meta-data intro: Multiple emails on the same account --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data tags: tech-tips --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/images/copyq-screenshot.png --&gt;
&lt;p&gt;
  Using a plus sign in an email is a useful tip to know.  It helps me manage accounts I use on the internet and is also incredibly useful for my day job.
&lt;/p&gt;

&lt;h4&gt;Plus sign in email&lt;/h4&gt;
&lt;p&gt;
  Say I have an email at example.com.  
  &lt;pre&gt;&lt;code class="language-javascript"&gt;mike@example.com&lt;/code&gt;&lt;/pre&gt;

  Now alll of these emails are all valid emails and will end up in the same inbox.

  &lt;pre&gt;&lt;code class="language-markdown"&gt;mike+spam@example.com
mike+bt@example.com
mike+testuser@example.com&lt;/code&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;h3&gt;Three reasons why this is useful&lt;/h3&gt;

&lt;h4&gt;Filter out spam&lt;/h4&gt;
&lt;p&gt;
  You want that 10% discount but aren't that interested in the newsletter. You need a one off email to sign in to that fun game service. You know you'll get some spam. By using the first example email you can have a filter set on your inbox so that those emails to that address never hit your main inbox. If your email gets sold any new emails will also be filtered out keeping your focus on the important emails.
&lt;/p&gt;


&lt;h4&gt;Specific emails for companies&lt;/h4&gt;

&lt;p&gt;
You may want to have specific emails for certain companies.  This could help with security (not using the same email everywhere) or help you group emails together.  The example here uses 'bt' but you could use something like 'bills' or 'household'.
&lt;/p&gt;

&lt;h4&gt;Testing&lt;/h4&gt;
&lt;p&gt;
 At work I need to do regular testing - this also involves getting emails.  By using the plus sign I can create multiple users and still get the email flows.  There also isn't the risk of using a domain not in my control and ending up with test or live emails going to the wrong person.
&lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;
  Three examples of how the plus sign in the email can be useful and I am sure you can imagine plenty more. It enables labelling of the emails when you sign up to something helping preemptively keeping your inbox clean. 
&lt;/p&gt;
&lt;p&gt;
Overall the final testing example is the one I use all the time but the plus sign comes in useful many times.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>2023 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2023-retro</link>
      <pubDate>3 Jan 2024</pubDate>
      <guid>2023-retro</guid>
      <description>&lt;!-- meta-data title: 2023 Retro --&gt;
&lt;!-- meta-data searchtitle: 2023-retro --&gt;
&lt;!-- meta-data date: 3 Jan 2024 --&gt;
&lt;!-- meta-data intro: 2023: Steady with plenty of yoga and running --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/sissinghurst-small.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;
&lt;p&gt;
2023 was generally pretty steady with a few bumps along the way. Took on a road marathon for the first time in six years and generally looked after myself after a bad back in 2022. Got into a more sustainable way of working in my second year at &lt;a href="https://flown.com"&gt;FLOWN&lt;/a&gt;. 
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;div class="table-container"&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;2023&lt;/th&gt;
      &lt;th&gt;2022&lt;/th&gt;
      &lt;th&gt;2021&lt;/th&gt;
      &lt;th&gt;2020&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        20
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        31
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
       1,830 
      &lt;/td&gt;
      &lt;td&gt;
        455
      &lt;/td&gt;
      &lt;td&gt;
        1,082
      &lt;/td&gt;
      &lt;td&gt;
        1,796
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        105 
      &lt;/td&gt;
      &lt;td&gt;
        138
      &lt;/td&gt;
      &lt;td&gt;
        124
      &lt;/td&gt;
      &lt;td&gt;
        67
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
      119 
      &lt;/td&gt;
      &lt;td&gt;
       75
      &lt;/td&gt;
      &lt;td&gt;
        62
      &lt;/td&gt;
      &lt;td&gt;
        97
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        3
      &lt;/td&gt;
      &lt;td&gt;
        2
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Cycled
      &lt;/td&gt;
      &lt;td&gt;
       395 
      &lt;/td&gt;
      &lt;td&gt;
       166
      &lt;/td&gt;
      &lt;td&gt;
        3,385
      &lt;/td&gt;
      &lt;td&gt;
        498
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h4&gt;Story in the Stats&lt;/h4&gt;
&lt;p&gt;
Yoga and running took center stage this year.  After last years bad back one of &lt;a href="https://blog.mikemjharris.com/posts/2022-retro.html"&gt;my 2022 resolutions&lt;/a&gt; was to continue to physically look after myself.  During the day that meant more movement and not getting stuck at the desk. When time allowed yoga kept everything nicely oiled and strong.  When dips in attendance did occur I got back into the swing quicker than usual - nudged by the memory of sore backs and some tightness and aches that arrived if I didn't practice. To help keep things fresh I switched to a new studio, BLOK, keep and tried out some new classes such as calisthenics.
&lt;/p&gt;
&lt;p&gt; 
When I started the year in good health I decided to take on another road marathon - my first since 2017. I'd filled in the in between years with trail running - generally taking it much more chilled.  This year though I wanted to statement run to test myself - the last few years have seen pandemics, me turning 40 and lots of pain with a back in 2022. Hammering away round a road marathon felt like a nice vanity goal. All the yoga meant I was strong enough to to put in really good mileage over the year with some super charged sessions at the track with Run Dusty and Track East. I'd originally signed up to a spring marathon but life got in the way so I stormed round the streets of Valencia in December hitting my target of running sub 3h.
&lt;/p&gt;

&lt;p&gt; 
Elsewhere swimming and cycling took a back seat with the focus on that running goal and keeping flexible. On the swim front completed the same 5k event in Formentera as last year. In the past I've usually fitted in swimming with going to an office - this year has been mainly remote and has been harder to fit in as a result.
&lt;/p&gt;
&lt;h4&gt;Books and art and stuff&lt;/h4&gt;
&lt;p&gt;Much fewer books read this year although the number slightly skewed by the size of some of the novels that I tackled. The book/travel combo this year was Marseilles and the epic 'Count of Monte Cristo'.  A fabulous fast book although lost some of it's edge near the end. Also travelled to Paris and read Banine's Parisian Days - which was pretty good although not as good as her previous novel 'A Day in the Caucus' which was up there for my favourite of the year. Laura Cumming's Thunderclap (she also featured in last year's faves) and Deborah Levy's Swimming Home round out the top books of the year.&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Calanques in Marseilles" src="/images/calanques-small.jpg" /&gt;
  &lt;figcaption&gt;Calanques national park outside Marseilles.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
On the art front got to visit &lt;a href="https://www.instagram.com/p/CqbKTXbI6ge/"&gt;Cezanne's studio&lt;/a&gt; and hike around &lt;a href="https://www.instagram.com/p/CqhqE2fIlaF/"&gt;Saint Victoire&lt;/a&gt; - nicely syncing with the Cezanne exhibition at the Tate.  On the same trip to saw the &lt;a href="https://www.instagram.com/p/Cqds3l_ISav/"&gt;Van Gogh museum &lt;/a&gt; in Arles and an immersive exhibition of &lt;a href="https://www.instagram.com/p/Cp7CzwIoUhs/"&gt;Paul Klee&lt;/a&gt; and Marc Chagall in Paris.
&lt;/p&gt;
&lt;p&gt;Another immersive - David Hockney at the Lightbox in London - was my highlight for the year .  As well as the full wall experience of his art there was also some history, photos and throughout his voice narrating. His art is fantastic in a big space but this direct input by the artist into the exhibition added that extra bit of delight that was missing from the Paris shows. I saw the Hockney twice - once on a busy Saturday with &lt;a href="https://www.instagram.com/p/CrWa0E6o7i7/"&gt;kids everywhere&lt;/a&gt; and a second visit on a very &lt;a href="https://www.instagram.com/p/Cu6S9dLopwB/"&gt;quiet evening&lt;/a&gt;. Completely different experiences and the show held it's own in both situations.  Fantastic to be part of a lively crowd enjoying the art as a shared experience but also a delight for a more meditative evening contemplating a life of art.&lt;/p&gt;

&lt;h4&gt;Resolutions - past&lt;/h4&gt;
&lt;p&gt;
One key resolution was to travel by train for trips less than 1000km. I managed this until the end of the year when I flew out to Basel.  Earlier in the year had managed a trip skiing and to the South of France via train.  The train trip took longer but was a different way of traveling and, combined with remote work allowed me a few days in Paris with friends, an amazing day in Geneva for my birthday, into the mountains to ski, then back down to Marseilles for ten days.  Cost was approximately the same as flying and was much more enjoyable.  
&lt;/p&gt;
&lt;p&gt;
Summer saw a big trip through the UK - seeing some family and friends but also dropping in at some beautiful heritage sites.  One of the highlights was cycling round Kent and ending up at Sissinghurst.  Stunning gardens even if it was late in the year - one to revisit in the spring.
&lt;/p&gt; 
&lt;figure&gt;
  &lt;img alt="sissinghurst" src="/images/sissinghurst-small.jpg" /&gt;
  &lt;figcaption&gt;Sissinghurst&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt; 
In December a trip to Basel had originally been planned as a train trip but in the busy end of the year time got tight so flying came into it's own.  A few days with a very close friend and my god children felt worth the flight especially as had limited flying for the rest of the year.  
&lt;/p&gt;
&lt;h4&gt;Resolutions - future&lt;/h4&gt;
&lt;p&gt;
Keep up the yoga.  Won't tackle a marathon this year but want to keep the running ticking along. Will try and stick to the flying rule this year. The main new(ish) resolution is to invest some more time in calisthenics classes and to devote more time to my free standing handstand. Handstands was a &lt;a hef="/posts/2018-new-years-resolutions.html"&gt;resolution in 2018&lt;/a&gt; and is generally in the back of my mind.  I've slowly improved with snatches of practice in the gym or post swimming but want to devote more time to it this year - especially as there are proper sessions at BLOK.
&lt;/p&gt;
&lt;p&gt;
Outside the main areas I talk about in these retros potentially have some big life changes this year so will see how that impacts things.  Lots of uncertainty so keeping end of year targets fluid - anticipate all of the stats to be a bit lower than this year but will still rely on all those activities for some structure and familiarity.

&lt;/p&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;Steady year - some bumps along the way but the good habits, running, yoga, reading, helped keep me on top of any uncertainty.  Highlights include a fantastic run in Valencia and the train trip across Europe in the Spring.  Work has gone well - all be it with the usual ups and downs of an early stage startup.  More of the same next year with an open mind to tackle some expected disruptions and uncertainty.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tech Tips - Clipboard manager</title>
      <link>https://blog.mikemjharris.com/posts/tips-clipboard-manager</link>
      <pubDate>26 Nov 2023</pubDate>
      <guid>tips-clipboard-manager</guid>
      <description>&lt;!-- meta-data title: Tech Tips - Clipboard manager --&gt;
&lt;!-- meta-data searchtitle: tips-clipboard-manager --&gt;
&lt;!-- meta-data date: 26 Nov 2023 --&gt;
&lt;!-- meta-data intro: Everything you copy saved --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data tags: tech-tips --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/copyq-screenshot.png --&gt;
&lt;p&gt;
  One of the best tools I started using was a clipboard manager.  So many times I was frustrated that I'd copied, say, a cell in excel. I needed to paste it over the top of something else - but need the contents of that destination cell elsewhere. Either I needed to think well ahead of my actions or go through a laborious manual process of pasting somewhere else first.  I often thought - there should be an easier way.  There is! A clipboard manager and you can copy away to your hearts content without the worry of losing what you've copied.
&lt;/p&gt;

&lt;figure&gt;
  &lt;img alt="Copy Q screenshot" src="/images/copyq-screenshot.png" /&gt;
  &lt;figcaption&gt;CopyQ window showing copied text and images&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;What to use&lt;/h4&gt;
&lt;p&gt;
I've got used to using &lt;a href="https://hluk.github.io/CopyQ/"&gt;CopyQ&lt;/a&gt;.  It works smoothly and most importantly I've got the shortcuts memorized.  
&lt;/p&gt;
&lt;p&gt;
There's plenty of others out there - search your favourite app store.  Windows has a native one built in now too. 
&lt;/p&gt;

&lt;h4&gt;What can it copy!&lt;/h4&gt;

&lt;p&gt; 
Everything!  In writing this blog post I copied the CopyQ url but didn't need to paste it until I needed it. Once I got to the paragraph above I ctrl-shift-h 'd  , a quick filter and there it was.
&lt;/p&gt;
&lt;p&gt;
This blog needed a pic at some point - so I took a screenshot of the CopyQ pop up window.  It's still sat there - shortly I'll save it, copy it over to this project and use it in this article. But no rush - it's safe in my clipboard manager.


&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;
  It's a simple tool that I use multiple times an hour. Find one, use one and save the all the frustration when lose the thing you just copied.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tech Tips</title>
      <link>https://blog.mikemjharris.com/posts/tech-tips</link>
      <pubDate>25 Oct 2023</pubDate>
      <guid>tech-tips</guid>
      <description>&lt;!-- meta-data title: Tech Tips --&gt;
&lt;!-- meta-data searchtitle: tech-tips --&gt;
&lt;!-- meta-data date: 25 Oct 2023  --&gt;
&lt;!-- meta-data intro: Some tech tips to help make everything go a bit quicker and smoother --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;p&gt;
 There's loads of tips and tricks out there. Here's some of the ones I find particularly useful when using my computer - most of them everyone will find valuable and there are a few that I imagine only developers will care about.
&lt;/p&gt;
&lt;h4&gt;When to try something new&lt;/h4&gt;
&lt;p&gt;
There's a balance - from one extreme of constantly looking for the new shiny thing to getting stuck in your ways and wallowing in inefficeint habits.&lt;/p&gt;

&lt;p&gt; I value a good, efficient habit and like to push myself to improve a process that seems inefficient - then make that new way of working a habit and rely on that.  With tech and learning new things I like to have a good idea of the problem I'm solving - there's always a bit of room for play and trying new things but I put the most effort and focus when I know there's a big payoff.
&lt;/p&gt;
&lt;p&gt;
Most of these tips have stuck in my mind because they have significantly improved the speed or ease with which I work.  Pretty much all of them give me a little burst of joy as I remember the pain I've avoided from learning the new tricks.
&lt;/p&gt;
&lt;h4&gt;The tips&lt;/h4&gt;
&lt;p&gt;
  This page is the intro - and by publishing it hopefully will make me feel at least a bit accountable to follow up with the actual posts. I'll add the tips to the list below as I write them so you / I can see them all in one place. Watch this space!
&lt;/p&gt;


&lt;h4&gt;Tips&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="./tips-clipboard-manager"&gt;Clipboard manager&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="./tips-plus-sign-in-email"&gt;Plus sign in eamil&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="./tips-ctrl-r"&gt;Ctrl - r&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Upcoming - Google workspaces&lt;/li&gt;
  &lt;li&gt;Upcoming - fc&lt;/li&gt;
  &lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Work with me</title>
      <link>https://blog.mikemjharris.com/posts/work-with-me</link>
      <pubDate>31 Jan 2023</pubDate>
      <guid>work-with-me</guid>
      <description>&lt;!-- meta-data title: Work with me --&gt;
&lt;!-- meta-data searchtitle: work-with-me  --&gt;
&lt;!-- meta-data date: 31 Jan 2023 --&gt;
&lt;!-- meta-data intro: Filming myself for our YouTube channel --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/work-with-me.png --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  At &lt;a href="https://flown.com"&gt;FLOWN&lt;/a&gt;, the start-up I'm working at, we provide a range of live and on demand sessions and tools to help people work more effectively. Our premium on demand '&lt;a href="https://flown.com/portholes"&gt;portholes&lt;/a&gt;' are beautifully shot and staged. At the other end of the scale (and something we offer for free on our &lt;a href="https://www.youtube.com/@flown_space"&gt;YouTube channel&lt;/a&gt;) is a range of videos the team have shot of themselves working.  Here's my 25min video:
&lt;/p&gt;
&lt;div class="videoWrapper"&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/iHGioPHj3tk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h4&gt;Why do this?&lt;/h4&gt;
&lt;p&gt;
  Why film myself?  Why provide this for others?  We touch on this in the &lt;a href="https://flown.com/science-behind-flown"&gt;science behind FLOWN&lt;/a&gt; blog post and others have written about effects such as how &lt;a href="https://www.refinery29.com/en-us/body-doubling-productivity-adhd-wfhhttps://www.refinery29.com/en-us/body-doubling-productivity-adhd-wfh"&gt;body doubling can boost productivity&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
  In short - seeing others work helps put you in the mood.
&lt;/p&gt;

&lt;h4&gt;Setting the scene&lt;/h4&gt;
&lt;p&gt;
  Obviously filming yourself and putting your surroundings onto a public channel needs a little prep. Fortunately there were already flowers in the living room but I did dig out the mobile sculpture which usually lives in a cupboard as it gets knocked over regularly. Quick tidy up, arrange the table, put the nice cushion in view and off we go!
&lt;/p&gt;
&lt;h4&gt;Working&lt;/h4&gt;
&lt;p&gt;
  Our usual deep work sessions (flocks) are live with others working alongside you.  I found a very similar feeling when filming myself. The intention of working solidly for 25mins (the pomodoro time) and having an 'observer' really helped keep my focus.  I looked a bit grump and serious to start but soon got into the flow - the time flew by and while this was a staged video I got a bunch of work done.
  &lt;/p&gt;

&lt;h4&gt;Working with me&lt;/h4&gt;
&lt;p&gt;So pop along and 'work with me' and let me know how it went.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>2022 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2022-retro</link>
      <pubDate>2 Jan 2023</pubDate>
      <guid>2022-retro</guid>
      <description>&lt;!-- meta-data title: 2022 Retro --&gt;
&lt;!-- meta-data searchtitle: 2022-retro --&gt;
&lt;!-- meta-data date: 2 Jan 2023 --&gt;
&lt;!-- meta-data intro: 2022: Wilderness, remote work and a bad back --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/retro-2022/norway.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;
&lt;p&gt;
  2022 offered all the delights of a more open world - a craving for expanded horizons, wilderness and to experience remote work without being stuck at home. These were all sampled and enjoyed with the only cloud being a bad back colouring the experiences.
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;2022&lt;/th&gt;
      &lt;th&gt;2021&lt;/th&gt;
      &lt;th&gt;2020&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        31
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
        455
      &lt;/td&gt;
      &lt;td&gt;
        1,082
      &lt;/td&gt;
      &lt;td&gt;
        1,796
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        138
      &lt;/td&gt;
      &lt;td&gt;
        124
      &lt;/td&gt;
      &lt;td&gt;
        67
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
       75
      &lt;/td&gt;
      &lt;td&gt;
        62
      &lt;/td&gt;
      &lt;td&gt;
        97
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        2
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Cycled
      &lt;/td&gt;
      &lt;td&gt;
       166
      &lt;/td&gt;
      &lt;td&gt;
        3,385
      &lt;/td&gt;
      &lt;td&gt;
        498
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Story in the Stats&lt;/h4&gt;
&lt;p&gt;
  The start of the year was very intense with a new senior role at an early &lt;a href="https://flown.com"&gt;stage startup&lt;/a&gt; and a hard deadline to hit.  Extended hours at a desk potentially caused a bad back which in turn brought on sciatica - weeks of pain, not being able to sit down or exercise.
&lt;/p&gt;
&lt;p&gt;This became the main factor in the stats for the year.  The first few months completely out of action - only slowly being able to swim and then yoga - both of which were key to my recovery and hence the relatively high stats. Almost no cycling for the year and only some running in the last few months.
&lt;/p&gt;

&lt;p&gt;
  Here we are at the end of the year - the bad back and sciatica healed but still a slight physical and mental scratchiness linger.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Sweden Wild camping" src="/images/retro-2022/sweden-camping.jpg" /&gt;
  &lt;figcaption&gt;Kayaking and wild camping in Sweden&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Wilderness&lt;/h4&gt;
&lt;p&gt;
  The craving of something wild and remote after the last few years led to a trip for a 5k swim event in Formentera, a long weekend kayaking and wild camping in Sweden plus a two week trip to the Norwegian arctic circle including a  week as crew on a boat round the Lofoton islands.
&lt;/p&gt;
&lt;figure&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/retro-2022/formentera-swim.jpg" alt="Formentera swim" /&gt;
    &lt;img src="/images/retro-2022/norway-boat.jpg" alt="Norway boat" /&gt; &lt;/div&gt;
  &lt;figcaption&gt;Trips to Formentera for a long swim and a sailing trip in the Norwegian arctic circle&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Remote work&lt;/h4&gt;
&lt;p&gt;
 One of the goals for changing careers to be in tech was to one day work remotely.  Last year was work from home - this year was the chance to properly remote work.  The original dream ten years ago was to be tapping away on a laptop on a beach. The reality this year has been staying with friends and family across the UK and Europe (Cornwall, Spain, Germany, Switzerland). It's been a joy being able to share in others lives on extended visits while still being able to work and not breaking the bank on accommodation.
&lt;/p&gt;

&lt;figure&gt;&#xD;
  &lt;div class="half"&gt;&#xD;
    &lt;img src="/images/retro-2022/parker-shed-tate.jpg" alt="Exploded Shed" /&gt;&#xD;
    &lt;img src="/images/retro-2022/desk-plants.jpg" alt="" /&gt; &lt;/div&gt;&#xD;
  &lt;figcaption&gt;Cornelia Parker's exploded shed in the Tate. My (unexploded shed) with sore back friendly standing desk and new seedlings. With so much else happening this year gardening took a back seat after this promising start&lt;/figcaption&gt;&#xD;
&lt;/figure&gt;&#xD;
&lt;h4&gt;Books and art and stuff&lt;/h4&gt;
&lt;p&gt;
 When travelling I love to read books by authors based in those countries - Per Peterson's Out Stealing Horses and Jo Nesbø's The Snowman both helped set the mood for the Norway trip and were both excellent. Other favourite reads included Laura Cumming's Vanishing Man and 41 False Starts by Janet Malcom.  Recurring themes included Las Meninas and early 20th Century households.This year the break down was &lt;a href="https://books.mikemjharris.com/"&gt;17 female authors vs 13 male&lt;/a&gt; - 10% ethnically contrasting voices.
&lt;/p&gt;
&lt;p&gt;Art and theatre - &lt;a href="http://instagram.com/mikemjharris"&gt;loads of trips this year&lt;/a&gt; - but the main highlight was the discovery of the Tate private view pass.  With a busy world being able to visit galleries in midweek evenings was a treat. Even better was getting to go on these trips with friends - a key area of socialising this year - especially important whilst not having an office.
&lt;/p&gt;
&lt;p&gt;
  With life more open I managed a repeat visit to Cornwall with the London literary salon.  That brought together all the strands of the year into a few days - remote work, family, art, reading and some wilderness.  Wrote more about it in one of the only two blog posts of this year (bad back and busy work meant little appetite for more time at the keyboard):  &lt;a href="https://blog.mikemjharris.com/posts/the-waves-to-the-lighthouse"&gt;Riding the waves to the lighthouse&lt;/a&gt;.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="St Ives" src="/images/the-waves/artists-window-wide-small.jpg" /&gt;
  &lt;figcaption&gt;View of the sea in St Ives&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Resolutions&lt;/h4&gt;
&lt;p&gt;
  Bad back related - try and remember to do all the things I already know about to prevent having a recurrence next year - work hard but regular breaks, lots of stretching, consistent yoga, balance of rest and activity.  All of that has happened in the second half of the year and I feel much better for it.
&lt;/p&gt;
&lt;p&gt;
  Climate related I want to do better at taking the train for travels to Europe - many of the 2022 trips I started looking at train options but left it too late when time and costs meant flying was too attractive an option. Aim is to use rail for anything on mainland Europe that is less than 1000km away.
&lt;/p&gt;
&lt;p&gt; The break from running also meant I had a new found love and energy for it at the end of the year.  Hoping to carry that into the new year and get back to entering a few events.  My mum's signed us up to a 100km weekend trail run/walk/camp to celebrate her 70th so that's something to aim for.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Norway " src="/images/retro-2022/norway.jpg" /&gt;
  &lt;figcaption&gt;Hiking in Norway&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;
  The pain and discomfort of a bad back coloured the year.  While looming large in the mind doing this reflection has helped remember that plenty of other things happened and to appreciate the healing since then.
&lt;/p&gt;
&lt;p&gt;
  The wilderness and remote work have helped balance out the last few years of restrictions. The new job has been hectic and a steep learning curve but have grown into it and am relishing the challenge of where we can get to in 2023.
&lt;/p&gt;
&lt;p&gt;So a 2023 of rail travel, movement, stretching and hopefully some more wilderness. Hope you have a good one!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Riding The Waves To The Lighthouse</title>
      <link>https://blog.mikemjharris.com/posts/the-waves-to-the-lighthouse</link>
      <pubDate>9 Oct 2022</pubDate>
      <guid>the-waves-to-the-lighthouse</guid>
      <description>&lt;!-- meta-data title: Riding The Waves To The Lighthouse --&gt;
&lt;!-- meta-data searchtitle: the-waves-to-the-lighthouse --&gt;
&lt;!-- meta-data date:  09 Oct 2022 --&gt;
&lt;!-- meta-data intro: Reading and studying Virginia Woolf in St Ives --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: throughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/the-waves/artists-window-wide-small.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  In the distance the lighthouse flashes out a message in the grey dawn light. Waves lap steadily on the beach. On the sand a group of us huddle round the light of a torch, words from a book are read out - "The sun has not risen yet. The sea is indistinguishable from the sky.."  Ninety years after those words were first published we look up to see if we can make out the horizon.
&lt;/p&gt;
&lt;figure&gt;
    &lt;img src="/images/the-waves/sunrise-lamp-small.jpg" /&gt;
    &lt;figcaption&gt;
      "...as if the arm of a woman...had raised a lamp" Sunrise from St Ives
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
  The beach is in St Ives and I'm here with the &lt;a href="https://www.litsalon.co.uk/"&gt;London Literary Salon&lt;/a&gt; for my second trip to study and discuss Virginia Woolf. The author was based here in the summers of the early part of her life and the sea and local imagery wash through her writing. The location means we can bask in the themes of the books. Back in &lt;a href="https://blog.mikemjharris.com/posts/2018-retro"&gt;2018&lt;/a&gt; we took a boat To the Lighthouse. In 2022 our meeting takes place in a beautiful artists studio overlooking The Waves break on the beach. Inside our conversation rises and falls, crashing over ideas, spraying thoughts and conversation among us.
&lt;/p&gt;
&lt;h4&gt;The London Literary Salon&lt;/h4&gt;
&lt;p&gt;
  In 2018 I met &lt;a href="https://twitter.com/TEBrothers"&gt;Toby Brothers&lt;/a&gt; - founder of the salon - on a swimming holiday. The Salon runs studies of a range of books - weekly sessions spanning weeks and months. This felt too much commitment but I loved the idea of a trip away to focus on a book so joined a special travel study.
&lt;/p&gt;
&lt;figure&gt;
    &lt;img src="/images/the-waves/artists-window-wide-small.jpg" /&gt;
    &lt;figcaption&gt;
      View of the waves from the artists studio where most of our discussions took place.
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;
  A burst of early pandemic energy saw me sign up to one of the first remote salon's to study Ulysses but the tidal waves of zoom meetings meant that intention soon got stranded. The 2018 trip had been so good that this year I jumped on the opportunity to join again.
&lt;/p&gt;
&lt;p&gt;
 Both trips have consisted of a group of around twelve, overwhelmingly female and generally older than me. Most are regular salon attendees and some had already studied The Waves before. Everyone brought a different perspective, experience and knowledge. This trip Toby shared facilitation with Sarah -  we had the freedom and flexibility to explore knowing that a few nudges in the form of questions and thoughts would help guide the flow of conversation along smoothly to the end of the book.
&lt;/p&gt;
&lt;p&gt;
  I love being in a group, especially over a couple of days to see how people's energy ebbs and flows, how the group dynamic shifts and changes, energy levels rise and falls.  It's a unique experience having the space to chew over ideas and disappear down interesting avenues without a set agenda or goal. Much of my life is taking a leading roll in meetings - this  was a chance for me to be able to relax into the flow, listen to the swell of ideas rolling around, the experiences and perspectives of the group adding direction to the flow of thoughts. drops of my ideas added to the stream along the way.
&lt;/p&gt;
&lt;figure&gt;
    &lt;img src="/images/the-waves/porthmeor-beach-small.jpg" /&gt;

    &lt;figcaption&gt;
      Porthmeor beach and waves - our artist studio for the study on the left
    &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h4&gt;Beyond the books&lt;/h4&gt;
&lt;p&gt;
  While the study was the main focus of our few days there was plenty of time for other opportunities organised by Toby and Sarah. I signed up to all the extras - from sunrise swims, a trip to the &lt;a targe="_blank" href="https://www.instagram.com/p/CjWIs1OoH_6/"&gt;Barbarra Hepworth&lt;/a&gt; museum (plus a talk on similarities and differences to Woolf) and a riotous trip to the &lt;a targe="_blank" href="https://www.instagram.com/p/CjZ41bRIryO/"&gt;Minack Theatre&lt;/a&gt; to see a parody of Pride and Prejudice (much needed after a morning swimming in emotional murky waters at the study). There were organised dinners in the evenings and pasties on the harbour. &lt;/p&gt;

&lt;p&gt;With all these extras the days were full - and exhausting.  During the final sessions my energy waned and I found it harder to focus. One of the topic of the Waves is that we can't do everything in life - you have to choose a path and I was happy to have enjoyed riding the waves of entertainment.&lt;/p&gt;
&lt;/p&gt;
&lt;h4&gt;Post salon&lt;/h4&gt;
&lt;p&gt;
  I'd learnt from the first trip how tiring and involved the few days could be - this time with the benefit of working from home (I felt my two trips spanning a global disaster reflected the structure of To the Lighthouse) allowed me to arrive in Cornwall a few days before and spend time with my Grandma.  &lt;/p&gt;

&lt;p&gt;At the end of the study, after enjoying swimming in everyone's company, thoughts and ideas I planned to stay down in St Ives for some time alone.  Friday morning we had our final session - covering the last chapter of the book that I'd struggled with and only skimmed before the trip.  Then I took myself off for some space and art at &lt;a targe="_blank" href="https://www.instagram.com/p/CjadSyFI6P9/"&gt;Tremenheere sculpture gardens&lt;/a&gt; then wandered along to the Jubilee pool - escaping the waves and The Waves in an art deco lido where I could let mind and body relax floating in the sheltered geothermal waters.
&lt;/p&gt;
&lt;figure&gt;
    &lt;img src="/images/the-waves/jubilee-pool-small.jpg" /&gt;
    &lt;figcaption&gt;
      Penzance Jubilee pool - away from The Waves
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Hike&lt;/h4&gt;
&lt;p&gt;
  The final treat I'd saved up for myself was a long hike from St Ives to Zennor - I'd attempted it in 2018 but hadn't allowed myself enough time so was excited to have a full day to myself to walk along the cliffs. The sea crashed into the rocks as I went. Ideas and discussion from the week swirled and rolled through my mind.  &lt;/p&gt;

&lt;p&gt;In the end the hike took &lt;a href="https://www.strava.com/activities/7932249587"&gt;me even further&lt;/a&gt;- to Gurnard's head and a delicious pub lunch.  My mind was prepared to go further too and I paddled through the final chapter of the book again. After, a steady walk back to St Ives as the "darkness rolled its waves along grassy rides and over the wrinkled skin of the turf"
&lt;/p&gt;
&lt;figure&gt;
    &lt;img src="/images/the-waves/hike-to-zennor-small.jpg" /&gt;
    &lt;figcaption&gt;
      Views of the waves on the coastal path from St Ives to Zennor
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  A full week. A wave of thoughts and ideas.  An amazing group, the chance to listen and share. The opportunity to read, re-read, hear others and (one of my favourite parts) to read out loud. A tough, ambiguous and challenging book - often more ideas and questions than answers.  Even amongst us we couldn't quite pin down what happened -  the ideas as fluid as water.
&lt;/p&gt;
&lt;p&gt;
  A huge thank you to Toby and Sarah for organising and facilitating such an amazing few days.  Thank you to all the attendees - for the warm welcome, for sharing ideas and your experiences.

&lt;/p&gt;
&lt;p&gt;A superb study with art, swims, hikes, people and time alone.  The Waves suggest that life is a series of agonies and ecstasies. This week I was fortunate to enjoy riding a wave of ecstasy.
&lt;/p&gt;


&lt;p&gt;&lt;/p&gt;
&lt;h4&gt;Post Script&lt;/h4&gt;
&lt;p&gt;
  And finally an apology for the relentless wave metaphors crashing through this piece. Not quite the subtle imagery of Woolf but it's helped me enjoy this writing process. So maybe not an apology more a recognition of a bit of fun.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Part 2 - My attempt(s) at using Linux on Windows</title>
      <link>https://blog.mikemjharris.com/posts/my-attempts-at-wsl-part-2</link>
      <pubDate>15 Jul 2022</pubDate>
      <guid>my-attempts-at-wsl-part-2</guid>
      <description>&lt;!-- meta-data title: Part 2 - My attempt(s) at using Linux on Windows --&gt;
&lt;!-- meta-data searchtitle: my-attempts-at-wsl-part-2 --&gt;
&lt;!-- meta-data date: 15 Jul 2022 --&gt;
&lt;!-- meta-data intro: How's my experiment with Linux on Windows going six months in? --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/windows-terminal-wsl.png  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Last year I started experimenting with Linux on Windows (WSL)  and wrote about it in &lt;a href="https://blog.mikemjharris.com/posts/my-attempts-at-wsl"&gt;this post&lt;/a&gt;. Back then I'd just set up the environment, used it for small side projects and was going to see if it could work as my main dev environment. As promised here's the report of how I got on.
&lt;/p&gt;

&lt;h4&gt;WSL FTW&lt;/h4&gt;
&lt;p&gt;
  TLDR - this is now my main dev environment! I've been doing all my work on it day in day out, have switched over to booting from Windows and haven't loaded up my native Linux environment for months.&lt;/p&gt;

&lt;p&gt;It's been fairly smooth sailing. As always with any computer environment there's things to setup and deal with although was pleasantly suprised that there weren't more issues when compared to, say, Mac or Linux.
&lt;/p&gt;

&lt;h4&gt;Windows Apps, Linux Terminal&lt;/h4&gt;
&lt;p&gt;
  For normal Windows experience and command line Linux everything just worked.  Very few issues that I hadn't experienced with normal Linux.  Things just worked and had the benefit of Windows apps.
&lt;/p&gt;
&lt;h4&gt;Linux Apps&lt;/h4&gt;
&lt;p&gt;
  Initially I didn't think I'd need to setup Linux apps.  That was until I tried to run end to end tests with cypress.  These need access to, among other things, Chrome.  After a bunch of searching found these two articles (&lt;a href="https://wilcovanes.ch/articles/setting-up-the-cypress-gui-in-wsl2-ubuntu-for-windows-10/"&gt;article 1&lt;/a&gt; , &lt;a href="https://stackoverflow.com/questions/62641553/setup-cypress-on-wsl-ubuntu-for-windows-10"&gt;stack overflow&lt;/a&gt;).  Following those instructions I also added this &lt;a href="https://github.com/mikemjharris/config/commit/eb299ecc43afa1f53393f1ad47b79963ec40c1a1"&gt;commit&lt;/a&gt; to my config files.
&lt;/p&gt;
&lt;p&gt;
  This update also meant I had access to Linux apps - although for the majority (all?) of what I do Windows apps have been more than enough.
&lt;/p&gt;
&lt;h4&gt;Coding in Windows&lt;/h4&gt;
&lt;figure&gt;
    &lt;figcaption&gt;
      Windows Terminal - with Options to run Powershell, Ubuntu or Azure shell.
    &lt;/figcaption&gt;
    &lt;img src="/images/windows-terminal-wsl.png" /&gt;
&lt;/figure&gt;
&lt;p&gt;
  I thought with the tightly integrated terminal apps I thought I'd end up doing some powershell/windows coding.  I haven't touched it. Maybe one day!
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
I'm reporting back - it's a success!  WSL works as a day to day dev environment for me.  Very few issues, love the stability of the apps from Windows but delighted to be on the command line with Linux.
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>2021 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2021-retro</link>
      <pubDate>31 Dec 2021</pubDate>
      <guid>2021-retro</guid>
      <description>&lt;!-- meta-data title: 2021 Retro --&gt;
&lt;!-- meta-data searchtitle: 2021-retro --&gt;
&lt;!-- meta-data date: 31 Dec 2021 --&gt;
&lt;!-- meta-data intro: My 2021: Crikey - what a year! --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/bikepacking-small.jpg  --&gt;
&lt;p&gt;
  Well crikey - what a year! In &lt;a href="https://blog.mikemjharris.com/posts/2020-retro"&gt;last year's retro&lt;/a&gt; I reckoned we'd have more of the same pandemic life but I think we all hoped for the vaccine saviour narrative. As that seemed to unfold and life opened up the breath we'd all been holding for 2020 started to be released. Lots of life opening up - but that space also allowed the pent up  stress and tension to flow. Certainly in my friend circle the second half of year seemed to have more than the usual bumps - a year and a half of issues squeezed into a few months. On top of it all a weariness and lack of energy.
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;2021&lt;/th&gt;
      &lt;th&gt;2020&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        31
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
        1,082
      &lt;/td&gt;
      &lt;td&gt;
        1,796
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        124
      &lt;/td&gt;
      &lt;td&gt;
        67
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
        62
      &lt;/td&gt;
      &lt;td&gt;
        97
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Cycled
      &lt;/td&gt;
      &lt;td&gt;
        3,385
      &lt;/td&gt;
      &lt;td&gt;
        498
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
      &lt;td&gt;
        0
      &lt;/td&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Stats&lt;/h4&gt;
&lt;p&gt;
  How does that play out in the statt? Numbers wise kinda like 2017/16 but with a few more books read. And what's that last one?  Cycling?  Never tracked that properly - what's that all about?
&lt;/p&gt;
&lt;p&gt;The number that most reflects my year is the KM run.  We started off with monotonous lock down - the running was steady - half my yearly total in the first three months. But I struggled with a lack of yoga.  I went on an &lt;a href="https://www.strava.com/activities/4990521902" target="_blank"&gt;excessively long run&lt;/a&gt; to prove I'm still young on my 40th birthday. Obviously that half injured me but I'd signed up for an ultra. It was the first thing open post lockdown and the lure of life returning meant I ran round most of it with a friend and &lt;a href="https://www.strava.com/activities/51424576222"&gt;limped the final 10k.&lt;/a&gt; And that probably is the best metaphor for the year - desperate to get out and do everything - but overdoing it. Loving it all, but taking on too much. Still I made it to the end of the run and I made it to the end of the year - with what might be a  grimace, or it might even be a smile!
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Hurtwood 50k run vineyard" src="/images/hurtwood-small.jpg" /&gt;
  &lt;figcaption&gt;View from the vineyard - Hurtwood 50k&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Cycling&lt;/h4&gt;
&lt;p&gt;
  So cycling was probably the big revelation this year.  Early in the year I wrote about &lt;a href="https://blog.mikemjharris.com/posts/pedalling-through-a-pandemic"&gt;pedalling through a pandemic&lt;/a&gt; about the online Zwift league I'd raced in over the winter. As hoped this translated to real world cycling - lots of rides with the neighbour opposite, other friends and colleagues. A highlight was a 100km &lt;a href="https://www.strava.com/activities/5344132556"&gt;tour of the peak district&lt;/a&gt; - again early days of life opening up and this went much better than my running ultra! Amazing views and a novelty to have a trip away with friends - salve for the body and soul.
&lt;/p&gt;
&lt;p&gt;
  On top of normal cycling I also had a go at bikepacking - a number of online friends or acquaintances seem to have done something similar. As with many people I had a craving to do something different and also get out into nature.  Strapping a bunch of bags to you and pedalling off into the distance was certainly an excellent way to spend time. Slowly got into it and hoping that the investigative work this year will mean some longer trips in the futures.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Tour of the peak and bikepacking by a loch&lt;/figcaption&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/tour-of-the-peak-small.jpg" alt="Tour of the peak" /&gt;
    &lt;img src="/images/bikepacking-small.jpg" alt="Bikepacking" /&gt; &lt;/div&gt;
&lt;/figure&gt;
&lt;h4&gt;New years resolutions&lt;/h4&gt;
&lt;p&gt;
  Given the uncertainty last year the only resolution I half mentioned was doing more creative writing.  I did a bit - doing a few of the excellent &lt;a href="https://write-and-shine.com/"&gt;write and shine&lt;/a&gt; sessions. Much of the year was laying down the foundations though - following the right people, buying the books, eyeing up a new hobby working out how to fit it into life. More of this to come over the next few years I hope.
&lt;/p&gt;
&lt;p&gt;
  Last year setting big goals was foolish - but in the back of my mind I was turning 40. As a middle class, middle aged man one of the recognised ways to celebrate a big milestone is to do an excessive sporting event. Certainly that's how I &lt;a href="https://30thmarathonmadness.blogspot.com/" target="_blank"&gt;celebrated my 30th&lt;/a&gt;. At the end of last year I signed up for my first half Ironman and hoped that it would go ahead and I'd be in shape. Covid played ball and despite my running injuries I made it round. Tick that midlife crisis box.
&lt;/p&gt;

&lt;figure&gt;
  &lt;img alt="Ironman finish" src="/images/ironman-small.jpg" /&gt;
  &lt;figcaption&gt;Finishing the Weymouth half Ironman&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Swimming and yoga&lt;/h4&gt;
&lt;p&gt;
  Not much to say here - swimming - some cold water/open water at the start of the year - but as pools opened stuck with them.  Holidays happened and a much needed trip abroad with the excellent &lt;a href="https://www.swimtrek.com/"&gt;Swim Trek&lt;/a&gt; folks.&lt;/p&gt;
&lt;p&gt;
  Yoga studios opened and being in the warm snug embrace of the &lt;a href="https://hotpodyoga.com/"&gt;hot pod yoga studio&lt;/a&gt; was a massive boost.
&lt;/p&gt;
&lt;/p&gt;
&lt;h4&gt;Books and art and stuff&lt;/h4&gt;
&lt;p&gt;
  Fewer books - but hey I was out there injuring myself on life! &lt;a href="https://books.mikemjharris.com/"&gt;19 female authors vs 12 male&lt;/a&gt; - 35% ethnically contrasting voices. Best books? Olivia Laing's - Funny Weather - Art in an Emergency, Ted Chiang's Exhalation,  Anuk Arudpragasam's A Passage North. Other notable mentions - had lots of fun with The Salt Path and Francis Bacon's biography was an ample replacement for missing his postponed exhibition.
&lt;/p&gt;
&lt;p&gt;
  Art?  Paula Rego's exhibition at the Tate a clear winner. David Hockney's Arrival of Spring though was a perfect tonic for the year - simple easy but joyful. Loads more culture filled the year some plays, shows, life. Was it good?  Or just good to be out?
&lt;/p&gt;

&lt;h4&gt;Life&lt;/h4&gt;
&lt;p&gt;
  So much more happening in the world - lots of people going through a tough time especially later on in the year.  Felt like two years of the usual bumps in the road compressed into the autumn season. With it everyone weary, tired and not being able to be as supportive as usual. Many phone calls (when they finally happened!) started with both sides apologising for absence, lack of messages, general tiredness.
&lt;/p&gt;
&lt;h4&gt;Mentoring&lt;/h4&gt;
&lt;p&gt;
  One of the best things I did last year was mentoring. Late in 2020 I was approached roughly at the same time by four different friends/connections and as a result started 2021 with four mentees. The pandemic meant there was plenty of time and we'd all got used to hoping on a call. As life opened up two of the mentees dropped off - although believe they found the sessions useful. The other two continue to be part of my monthly routine. I've learnt a huge amount in the process - I love chatting to people, learning how they see the world and how they are navigating their careers. I believe (and have been told!) that my mentoring has been beneficial to them.  I've listened, offered a space to discuss issues and given my thoughts and stories when needed. It's very different from being a manager (although with many overlapping skills) - being distant but close is a unique position and am really happy that I have helped folks out and also grown and learnt myself.
&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  Well another year!  Ups and downs, highs and lows - running fast then dealing with injury and over excitement. Who knows what the new year brings.  For me the usual mix of hobbies with even more creative writing. Hopefully some more bikepacking, perhaps some travel. This year though a bit steadier, a bit slower, a bit more thoughtful. Let's see how it all goes.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>My attempt(s) at using Linux on Windows</title>
      <link>https://blog.mikemjharris.com/posts/my-attempts-at-wsl</link>
      <pubDate>10 Dec 2021</pubDate>
      <guid>my-attempts-at-wsl</guid>
      <description>&lt;!-- meta-data title: My attempt(s) at using Linux on Windows --&gt;
&lt;!-- meta-data searchtitle: my-attempts-at-wsl --&gt;
&lt;!-- meta-data date: 10 Dec 2021 --&gt;
&lt;!-- meta-data intro: Experimenting with Windows Subsystem for Linux (WSL) --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/windows-terminal-wsl.png  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Microsoft are increasingly trying to make their products and tools appeal to a wider range of developers.  Recently they released &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/about"&gt;WSL&lt;/a&gt; - Windows Subsystem for Linux. This allows users to run a Linux like environment on Windows with little overhead. But how does it work in practice?  What's it like to setup and how does it compare to a native Linux environment?
&lt;/p&gt;

&lt;h4&gt;A brief history of my computers&lt;/h4&gt;
&lt;p&gt;
  How useful or interested you may find WSL will probably depend on what computers you are used to. For the first ten years of my working life (~2002 - 2013) I worked in finance and worked only with Windows - (primarily for Excel). With much horror I had to switch to Apple when changing careers to coding in 2014 - obviously I then fell in love with Macs and couldn't imagine anything else. In my first weeks at the Royal Academy of Arts in 2017 an unfortunate incident with an automatic tap and an open laptop bag meant I ruined my smart new computer - there was a spare Dell laptop so with the help of a team member (who was a Linux user) I setup Ubuntu and have been a dedicated desktop Linux user since.
&lt;/p&gt;

&lt;figure&gt;
    &lt;figcaption&gt;
      Pic from previous post about coding with a chromebook - showing 2013 Mac Air and the chromebook
    &lt;/figcaption&gt;
    &lt;img src="/images/asus-flip-comparison.jpg" /&gt;
&lt;/figure&gt;
&lt;p&gt;
  My home laptops have followed a similar curve - for the majority of the last few years I've mainly been using a Macbook Air I got myself in 2013. I've had a few other gadgets: I've written in the past about &lt;a href="posts/coding-with-a-chromebook"&gt;coding on a chrome book&lt;/a&gt;;  last year I got a MS Surface Go.
&lt;/p&gt;
&lt;p&gt;
  I was due an upgrade on the old home Mac Air. At work I've been very happy with Dell XPS 13 developer edition with Ubuntu already setup. The refurbished Dell store however had an excellent deal on a Windows laptop - saving money (and saving the world?) I chose that and decided to set it up as a dual boot with Linux as well as using it as an opportunity to give WSL a proper go.
&lt;/p&gt;
&lt;p&gt;
&lt;h4&gt;First go at WSL - 2020&lt;/h4&gt;
&lt;p&gt;
  As mentioned in 2020 I got a Surface Go. It's small and while not super powerful it has lots more beef that my chromebook.  I wanted to try WSL on it so that I could have something to either code on locally or act as a dumb terminal to &lt;a href="https://blog.mikemjharris.com/posts/computing-in-the-cloud"&gt;code in the cloud&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;WSL was in its first version then and there were definitely a few issues - I can't remember all the details but here's the rough notes I made at the time about the problems I encountered:  long/complex setup, fonts, icons, cursor spacing, gpg can't connect to agent, need to install apt repo, docker.&lt;/p&gt;
&lt;p&gt;There were enough issues that my enthusiasm waned and the Surface Go ended up permanently attached to my exercise bike as a window into the &lt;a href="https://blog.mikemjharris.com/posts/pedaling-through-a-pandemic"&gt;virtual Zwift world&lt;/a&gt;.
&lt;/p&gt;
&lt;h4&gt;Second go at WSL - 2021&lt;/h4&gt;
&lt;p&gt;
  In late 2021 I got my new laptop. First I setup dual boot, then ran my &lt;a href="https://github.com/mikemjharris/config"&gt;install scripts&lt;/a&gt; and fairly quickly I had my familiar Linux environment running - everything as I like it and no real issues.
&lt;/p&gt;
&lt;p&gt;
  Then I tried out Windows - WSL 2 had come out with the promise of quicker setup and better features.  Initially though it didn't seem that much had changed since my first attempt - there were quite a few hoops to jump through: running Powershell commands, updating various settings and even a BIOS change.
&lt;/p&gt;
&lt;p&gt;
 Eventually I had Ubuntu 20 running in a window. The main difference to my first attempt was the amount of blog posts/stackoverflow answers to help one along.
&lt;/p&gt;
&lt;h4&gt;Familiar environment&lt;/h4&gt;
&lt;p&gt;
  With Ubuntu running I ran the install scripts I'd just been using on the dual boot. Most things ran but was a bit disappointed to see that again some of the issues from WSL 1 were still present: problems with fonts/cursor/icons. I tried to fix some of these with limited success, moved onto other issues but then a day or two later found the solution. Switching from the default Windows Console Host to the new &lt;a href="https://devblogs.microsoft.com/commandline/introducing-windows-terminal/"&gt;Windows Terminal&lt;/a&gt; meant that looks wise things were pretty much the same as on my native Linux setup!
&lt;/p&gt;
&lt;h4&gt;WSL and the Windows environment&lt;/h4&gt;
&lt;p&gt;
  Most of my time is spent in the terminal. Things now looked similar to my dual boot Linux environment but a few key features were missing. The main one was integration with the system clipboard - something I use a lot in the terminal either editing code or piping data around.  Quite a bit of investigation and learning how WSL is setup within the Windows environment meant resulted in these two commits in my config repo which solved my &lt;a href="https://github.com/mikemjharris/config/commit/a34db2270379e023117e5f51c4802b3e51531075"&gt;vim&lt;/a&gt; and &lt;a href="https://github.com/mikemjharris/config/commit/0633878eb00e20ab9d9c496a4fecf2c474ed8e1b"&gt;terminal&lt;/a&gt; issues.
  &lt;/p&gt;


&lt;figure&gt;
    &lt;figcaption&gt;
      Windows Terminal - with Options to run Powershell, Ubuntu or Azure shell.
    &lt;/figcaption&gt;
    &lt;img src="/images/windows-terminal-wsl.png" /&gt;
&lt;/figure&gt;


&lt;h4&gt;The power of Linux and Windows&lt;/h4&gt;
&lt;p&gt;In delving into these issues I started really appreciating the benefits of WSL. You can invoke windows commands in WSL and Linux commands in Powershell. They can run together in the fantastic Windows Terminal along with things such as Azure Shell or even other Linux versions. I had what felt like a proper first class Linux build but could rely on the quality of Windows for things like sound (an area that can be complicated with Linux) and also the ability to run Windows programs and potentially enticing me to dabble with a Windows coding environment. There seemed to be the best of both worlds available to me with lots of overlap.
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  At a number of points in the process I almost gave up on WSL - I had a perfectly good working Linux envoronment on the other half of the hard drive. Why was I going through this pain for something I thought would be inferior?
&lt;/p&gt;
&lt;p&gt;I'm glad I persisted - am really enjoying the setup. I've mainly been using it for a few small projects but will aim to stick with it for a few months and report back on how I get on as a main dev machine.
&lt;/p&gt;
&lt;p&gt;
  How you get on may depend on what you are used to using - I think any Linux or Windows users will see a lot of benefits from WSL. If you use Microsoft's VSCode then I'd anticipate you'd have much fewer issues getting things setup. If you are a dedicated Mac user then the hassle may not be worth it. Interestd to hear if anyone is using it as their main work dev environment and any cool features or setups you've found useful.
  &lt;/P.

</description>
    </item>
    <item>
      <title>MY FIRST CLICKY CLACKY KEYBOARD</title>
      <link>https://blog.mikemjharris.com/posts/my-first-clicky-clacky-keyboard</link>
      <pubDate>18 Jun 2021</pubDate>
      <guid>my-first-clicky-clacky-keyboard</guid>
      <description>&lt;!-- meta-data title: MY FIRST CLICKY CLACKY KEYBOARD--&gt;
&lt;!-- meta-data searchtitle:  my-first-clicky-clacky-keyboard --&gt;
&lt;!-- meta-data date:  18 June 2021 --&gt;
&lt;!-- meta-data intro: I CAN'T TYPE LOUDLY IN THE OFFICE BUT I CAN TELL YOU LOUDLY ONLINE THAT I HAVE A LOUD MECHANICAL KEYBOARD --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/mechanical-keyboard.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Clicky, clacky mechanical keyboard. I have one. I'M TYPING ON IT NOW! Can you hear the clicky clackiness of it?  CAN YOU? CAN YOU?!?!?! Why now, why a mechanical keyboard and is it any good? Who knows and who cares as long as I can TYPE REALLY LOUDLY.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/mechanical-keyboard.jpg" alt="The Keyboard" /&gt;
  &lt;figcaption&gt;The keyboard&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Hesitant&lt;/h3&gt;
&lt;p&gt;
 There were so many reasons not to get a mechanical keyboard. I mean firstly the noise - how could I inflict that on my co workers.  Then the reputation - the stereotype clicky clacky keyboard user wasn't the person I aspired to be. Finally, ruining my experience on a laptop - I thought I might love a new keyboard too much and never be able to tap out letters again on my spongy computer keys.
&lt;/p&gt;

&lt;h3&gt;What changed&lt;/h3&gt;
  &lt;p&gt;
    The noise?  No - still noisy but pandemic world working from home meant no one to disturb.  Maybe even the clicky clackiness would fill the empty conversational void.  Just me, talking to my keyboard. Oh the joy!
  &lt;/p&gt;
  &lt;p&gt;
    The stereotype?  Well - there's so many people reclaiming the identity of the typical mechanical keyboard user. Stereotypes maybe aren't the reality. I could try and own a keyboard and not change my personality at the same time.
  &lt;/p&gt;
  &lt;p&gt;
    The laptop experience?  Still freaked out I'll never be able to type on a laptop ever again.
  &lt;/p&gt;
&lt;h3&gt;The Keyboard&lt;/h3&gt;
  &lt;p&gt;
    Did a bit of googling and lackadaisical researching - then on a quiet dull day I needed the sweet dopamine rush of buying something. &lt;a href="https://www.banggood.com/AKKO-3068-SP-Ocean-Star-68-Keys-Mechanical-Gaming-Keyboard-Cherry-Switch-Side-Printed-USB-2_0-Type-C-Wired-Gaming-Keyboard-p-1571192.html"&gt;This keyboard appeared in a search&lt;/a&gt;. It looked super cool, wasn't too much. Click, click, click and it was on it's way.
  &lt;/p&gt;

&lt;p&gt;
  It arrived, plugged in, pushed some keys and letters popped up on screen.  Excellent.  It's definitely clicky clacky. The typing experience? Excellent.  More travel with the keys, satisfying, enjoyable.  Wrists need to warm up to some heavy typing but once going my fingers were doing a very good Riverdance impression.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/mechanical-keyboard-square.jpg" alt="Part of my mechanical keyboard" /&gt;
  &lt;figcaption&gt;Angled view of my keyboard&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;The Keyboard - The Layout&lt;/h3&gt;
&lt;p&gt;
  Went for one of the 60 - 65% keyboards as they most matched a laptop keyboard layout  - I've written before about &lt;a href="https://blog.mikemjharris.com/posts/me-and-my-keyboard"&gt;enjoying my fingers flying across the keys&lt;/a&gt; so wanted to keep the experience very similar to what I'm used to (and don't want to lose).  I'd just be gaining all the extra travel and clicky clackiness.
&lt;/p&gt;

&lt;p&gt;
  The layout is pretty good but a few keys a bit different or missing from what I'm used to.  This meant I disappeared down a rabbit hole of tech to remap keys, ensure the remapping updated whenever the keyboard plugged in or the laptop went to sleep.  Am sure it should be easier but look at &lt;a href="https://github.com/mikemjharris/config/tree/master/conf/keyboard"&gt;all the ridiculousness I had to code.&lt;/a&gt; to get things how I wanted.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/keyboard-in-shed.jpg" alt="Keyboard at home in shed" /&gt;
  &lt;figcaption&gt;Keyboard at home - where it will stay&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
  Love the keyboard but not so much that I don't still enjoy the laptop.  It's loud and clicky and not sure if I can take it to the office and inflict it on people. I'll complain about the faff of key remaping but really that was pretty fun. &lt;/p&gt;

&lt;p&gt;The keyboard is a bit of plastic you push at and letters appear.  But that's what I do most of the day, all year round - and if that experience is a bit better then I'm a bit happier.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Plodding Through A Pandemic</title>
      <link>https://blog.mikemjharris.com/posts/plodding-through-a-pandemic</link>
      <pubDate>16 May 2021</pubDate>
      <guid>plodding-through-a-pandemic</guid>
      <description>&lt;!-- meta-data title: Plodding Through A Pandemic --&gt;
&lt;!-- meta-data searchtitle:  plodding-through-a-pandemic --&gt;
&lt;!-- meta-data date: 16 May 2021 --&gt;
&lt;!-- meta-data intro: New Horizons, missed events and running round in circles. --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/2020-folder/2020-empty-hackney-marshes-small.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Tent pegs of routine - carefully cultivated over the years to provide a shape to life's canvas - ripped up. The flysheet of existence flapping in the roaring winds of Covid and lockdown. Battling to try and anchor life I grasped for a trusty habit, a rusty, cherished skewer, a bedrock of stability - running. With the pandemic clouds roiling throughout 2020 and 2021 I put one foot in front of each other - a familiar process, plodding along through a pandemic, plodding on through life.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Hackney marshes" src="/images/2020-folder/2020-empty-hackney-marshes-small.jpg"&gt;
  &lt;figcaption&gt;Regular running spot - Hackney Marshes&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;New Horizons&lt;/h3&gt;
&lt;p&gt;
  With reduced boundaries getting outside was a joy.   Running provided new views; a change of scene; a glimpse of nature; a tour of plague ridden, deserted London; a chance to see friends.
&lt;/p&gt;
&lt;p&gt;
  As futile or non logical it may of been - keeping fit and feeling the roaring of breath through ones lungs due to exercise felt like standing up, however Canutian, against the oncoming tide of a disease that affected the respiratory system.
&lt;/p&gt;
&lt;h3&gt;Changes&lt;/h3&gt;
&lt;p&gt;
  Today marks another cancelled Hackney half, an event our running group - Techrunners - have done every year.  Other events which provide joy, purpose and structure have been missed - from the weekly park runs to major events such as the London marathon.
&lt;/p&gt;
&lt;p&gt;
  The social side has been missing but the lack of going anywhere has been different too.  Every run was from home, stretching the elastic band as far as possible then twanging back home again.
&lt;/p&gt;
&lt;h3&gt;Plodding Round&lt;/h3&gt;
&lt;p&gt;
  This graphic shows the reduced horizons - 2019 meant regular commutes into town, trips west, south of the river, off to the glorious hills and trails of Epping forest.  2020 meant laps of the marshes, laps of the Olympic park, laps of the Olympic stadium, laps of the marshes, laps of the park, the stadium.  Those red blobs on the 2020 graph reflecting the endless circuits and circles: going somewhere but nowhere.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/run-route.gif" alt="running routes in london 2019/2020" /&gt;
  &lt;figcaption&gt;London running routes 2019/2020&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
  There have been many habits and strategies to help with the past year - previously I've written about &lt;a href="https://blog.mikemjharris.com/posts/paddling-through-a-pandemic"&gt;Paddling Through a Pandemic&lt;/a&gt; and &lt;a href="https://blog.mikemjharris.com/posts/pedaling-through-a-pandemic"&gt;Pedaling Through a Pandemic&lt;/a&gt; but running has been key not just this year but for many years.
&lt;/p&gt;
&lt;p&gt;It'll be there through the rest of this pandemic and through whatever life weather is to come.
&lt;/p&gt;
&lt;p&gt;
  Sometimes I know why I run.  Often I don't.  But plod on I will.
&lt;/p&gt;



</description>
    </item>
    <item>
      <title>Pedaling Through A Pandemic</title>
      <link>https://blog.mikemjharris.com/posts/pedaling-through-a-pandemic</link>
      <pubDate>9 Mar 2021</pubDate>
      <guid>pedaling-through-a-pandemic</guid>
      <description>&lt;!-- meta-data title: Pedaling Through A Pandemic --&gt;
&lt;!-- meta-data searchtitle:  pedaling-through-a-pandemic --&gt;
&lt;!-- meta-data date: 09 Mar 2021 --&gt;
&lt;!-- meta-data intro: Online cycle racing - a weekly highlight of my winter lockdown --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/bike/zwift-ttt-2.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Glancing out of the shed window I see the light layer of snow on the ground, sparkling despite the darkness of the evening. A voice in my ear brings my focus back to the screen in front of me. "Ok - coming off in 10 seconds. 5..4..3.."  It's my turn at the front - I grasp the handlbars firmly, pump my legs and pedal harder.  My cycling avatar on screen surges forward. "Ok!" I say into my headset "I'll take the next minute". Sweat dripping over my eyes I spin faster on the stationary bike, settling in for 60 seconds of effort.
&lt;/p&gt;
&lt;p&gt;It's a Tuesday night and I'm taking part in a weekly online cycle race - an activity new to me but one that has provided light through through the dark winter lockdown.

&lt;h3&gt;Cycling nowhere&lt;/h3&gt;
&lt;p&gt;
  Back in March 2020 at the start of the pandemic a friend who runs a cycle studio was renting out his stationary bikes - with restrictions imminent I jumped at the opportunity.  Over the next few weeks I discovered the online virtual world of &lt;a href="https://www.zwift.com/uk"&gt;Zwift&lt;/a&gt;. Free rides through cities and fantasy worlds, one off racing events and meetups with friends from across the world. &lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Wattbike in a shed&lt;/figcaption&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/bike/bike-shed.jpg" alt="Watt bike" /&gt;
    &lt;img src="/images/bike/bike-side-view.jpg" alt="Side view of a watt bike" /&gt;
  &lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;
  With the summer, warm weather and reduced restrictions the lure of the real world meant I only managed the odd ride.  Most of my exercise time was spent running or &lt;a href="https://blog.mikemjharris.com/posts/paddling-through-a-pandemic.html"&gt;paddling through a pandemic&lt;/a&gt;. The main cycling I did was just to pootle about town and avoid public transport.
&lt;/p&gt;
&lt;h3&gt;Dark cold nights of winter&lt;/h3&gt;
&lt;p&gt;
  With winter coming, dark nights and more restrictions the indoor bike really came into its own. Even then I struggled to motivate myself to ride regularly - until I got a call from my friend who had rented me the bike:  Would I like to join their team and race as part of an online weekly league? Excited to try something new and to have a commitment outside of work I signed up. Tuesdays I would  be part of the Southampton Tri Club B team racing in the C category of the &lt;a href="https://www.wtrl.racing/about.php"&gt;WTRL racing league&lt;/a&gt; - all of which meant absolutely nothing to me.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;A race on Zwift - including fancy matching kit and a dinosaur&lt;/figcaption&gt;
  &lt;img src="/images/bike/zwift-desert-view.jpg" alt="Mike on a bike" /&gt;
&lt;/figure&gt;

&lt;h3&gt;Free for all&lt;/h3&gt;
&lt;p&gt;
  The league consisted of two types of events.  The first event I joined for was a free for all race where everyone was in a mass start. There was plenty of tech to setup from signing up to new websites, linking those to Zwift and setting up discord so I could chat to the rest of the team. The first race was tough and exhilarating but rewarding. It was fun to have an event to look forward to and some new people to chat to.  The ride itself was a learning experience: how to race in a pack, dealing with being dropped and working with complete strangers.
&lt;/p&gt;
&lt;h3&gt;Team Time Trial&lt;/h3&gt;
&lt;p&gt;
 A week later I joined for a Team Time Trial event. Here teams of up to six riders set off every 30s.  The overall time of the team is based on the fourth person over the line so everyone has to work together to get the best overall time. There is an excellent physics engine in Zwift - when sat close behind other riders the power needed to keep up is about 20% less.  Within the group everyone takes a turn at the front to put in an extra effort, they then roll off and take a break in the pack until it's their turn again.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Team time trial on Zwift with Southampton Tri Club&lt;/figcaption&gt;
  &lt;img src="/images/bike/zwift-ttt-2.jpg" alt="Team time trail on zwift" /&gt;
&lt;/figure&gt;
&lt;p&gt;
  It sounds reasonably straight forward but there was so much more to it - the setup means that you can have a range of different abilities and everyone takes different amounts of time at the front.  Lots of talking, comparing energy levels and making sure everyone stuck together.  Hills would cause the group to break up and more experienced riders would drop back to haul the stragglers back into the fold.  When dropping off the front and through the group you needed to put a burst of energy in before you disappeared off the back. As the B team we tried as much as possible to keep all our riders together - while we wanted to be competitive this was also a fun event for the whole team.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Team time trial on Zwift with Southampton Tri Club - going underwater!&lt;/figcaption&gt;
  &lt;img src="/images/bike/zwift-ttt-3.jpg" alt="Team time trail on zwift" /&gt; &lt;/figure&gt;
&lt;h3&gt;The Team&lt;/h3&gt;
&lt;p&gt;
  Tuesday evenings became a highlight of my week and I also joined in on Thursday team time trials - these are big events with around 900 teams taking part with events ranging from 40 minutes to just over an hour.   The make up of the team changed each week and there was always a different dynamic - some weeks we rotated at the front like clockwork, some weeks we had a plan, others times we made it up as we went. I got a feel for how others cycled and enjoyed recognising familiar names and voices in the group as well as welcoming newcomers.  In the new year a new season started and we'd progressed up a division. Celebration!
&lt;/p&gt;
&lt;p&gt;
  A huge thank you to the Southampton Tri club and especially Rob and Marius (and others) who do all the organising and messaging. Signing up to an event while sat on the sofa on a Sunday is easy and then on Tuesday you're committed so the motivational hurdle to get changed and riding is low - the team are relying on you to turn up!
&lt;figure&gt;
  &lt;figcaption&gt;Evening time trial on the bike in the shed&lt;/figcaption&gt;
  &lt;img src="/images/bike/late-night-cycle.jpg" alt="Late night cycle in the shed" /&gt;
&lt;/figure&gt;

&lt;h3&gt;The real world&lt;/h3&gt;
&lt;p&gt;
  About ten years ago I tried to get into cycling but found it never quite stuck - being in central London meant dealing with lots of traffic and when I did get out to cycle with friends my fitness and endurance wasn't up to scratch so struggled to enjoy the rides.
&lt;/p&gt;
&lt;p&gt;
  Inspired by the indoor cycling I've decided to give it another go, bought a road bike and been for a few rides. It's fantastic to be out on the road with the wind in your hair and your senses stimulated.  The restrictions mean that the roads are generally quieter but you still have to watch out for traffic, pedestrians, red lights.  It is real life though and not sat sweating in a shed looking at a screen!
&lt;/p&gt;
&lt;figure&gt;
    &lt;figcaption&gt;Real life - me with a real bike in the real world in the real countryside
    &lt;/figcaption&gt;
    &lt;img src="/images/bike/bike-in-real-life.jpg" alt="Mike on a bike in the countryside" /&gt;
&lt;/figure&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
  The indoor cycling has been a welcome extra hobby for most of the year but in the winter lockdown it's become one of the highlights of the week.  With lighter, warmer days I'm enjoying rides in the real world as a way to further stretch my horizons. Fortunately I don't have to choose between the two and can do both depending on the circumstances.
&lt;/p&gt;
&lt;p&gt;
  The next few weeks will see me pedalling through the tail end (hopefully!) of the pandemic and perhaps into a new passion. Let's see how it fits into life as other things become possible as restrictions lift and the vaccines flow. Perhaps I'll even get to cycle with some of the Southampton Tri club in real life!
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Books Balanced</title>
      <link>https://blog.mikemjharris.com/posts/books-balanced</link>
      <pubDate>26 Jan 2021</pubDate>
      <guid>books-balanced</guid>
      <description>&lt;!-- meta-data title: Books Balanced --&gt;
&lt;!-- meta-data searchtitle: books-balanced --&gt;
&lt;!-- meta-data date: 26 Jan 2021  --&gt;
&lt;!-- meta-data intro: Finally found gender balance in my reading habits --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/books-square.jpg  --&gt;
&lt;p&gt;
  Books balanced! I've now recorded reading as many women as men. In 2011 I started tracking the books I'd read.  In 2016 I wrote about being an &lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist"&gt;accidental sexist&lt;/a&gt; and in 2018 I wrote about &lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist"&gt;book balance&lt;/a&gt;. It's taken a long time to correct the bias in what I've read but finally the books have balanced!

&lt;/p&gt;
&lt;h4&gt;The Numbers&lt;/h4&gt;
&lt;table&gt;
    &lt;thead&gt;
      &lt;tr&gt; &lt;th&gt;&lt;/th&gt; &lt;th colspan="4"&gt;Books by:&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Year&lt;/th&gt; &lt;th&gt;All&lt;/th&gt;&lt;th&gt;Female authors&lt;/th&gt; &lt;th&gt;Male authors&lt;/th&gt; &lt;th&gt;Non Binary authors&lt;/th&gt;&lt;/tr&gt; &lt;/thead&gt;
    &lt;tbody&gt;&lt;tr style="font-weight: bold"&gt;&lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt;&lt;td&gt;223&lt;/td&gt;&lt;td&gt;111&lt;/td&gt;&lt;td&gt;110&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2021&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2020&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2019&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2018&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2017&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2016&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2015&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2014&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2013&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2012&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2011&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p&gt;A list of these numbers and all the books I've read can be found in my &lt;a href="https://books.mikemjharris.com/"&gt;book project&lt;/a&gt;
&lt;h4&gt;Thoughts&lt;/h4&gt;
&lt;p&gt;
  Whilst I tried to update my reading habits in 2015 I soon reverted to type - in 2016 reading more male authors again. Only continued efforts since then have managed to bring back the numbers to now being equal.
&lt;/p&gt;
&lt;p&gt;
  Even then this is only 'equal' in the books I have noted down.  Who knows what the real score would be if I went back further and added up all the books I've ever read. I'm sure the male narrative is still dominant in my true history of reading.
&lt;/p&gt;
&lt;p&gt;
  Was it a chore?  Not at all - one of the many reasons I read is to explore new worlds and see things differently.  Reading not only a diverse range of stories but a diverse group of voices has kept me entertained and happy.  There have been some amazing books and some terrible ones along the way regardless of the gender of the author. The range and variety of the highs has been life enhancingly excellent.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>2020 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2020-retro</link>
      <pubDate>3 Jan 2021</pubDate>
      <guid>2020-retro</guid>
      <description>&lt;!-- meta-data title: 2020 Retro --&gt;
&lt;!-- meta-data searchtitle: 2020-retro --&gt;
&lt;!-- meta-data date: 3 Jan 2021 --&gt;
&lt;!-- meta-data intro: My 2020: Yoga, new job and dealing with a pandemic --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/yoga_2.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;
&lt;p&gt;
  How was 2020? Looking at the numbers pretty much inline with my predictions from &lt;a href="./2019-retro"&gt;last year&lt;/a&gt;.  Reading way more books than predicted was the only stat suggesting the past twelve months was in any way unusual. This year we've all had to learn the story behind a multitude of stats - so what was the real narrative behind my figures from 2020?
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;2020&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
        1,796
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        67
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
        97
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Change - Planned and Unplanned&lt;/h4&gt;
&lt;p&gt;
  At the end of 2019 I left my job at the Royal Academy of Arts, went to Bali to complete my yoga teacher training and on my return in February started a &lt;a href="./working-at-wonderbly"&gt;new job at Wonderbly&lt;/a&gt;. A couple of weeks of settling into a new routine and then the pandemic struck.
&lt;/p&gt;
&lt;p&gt;
  Like everyone else since then I've been trying to deal with what the pandemic. How to cope with enforced change?  The wonderful, messy complexity of life criss-crossed with blunt new rules and restrictions.  The balance of dealing with a pandemic and the diverse and varied ways we all live.  The stresses, hardships, lost opportunities and health risks. The balance between the individual, community and the State.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Deserted horseguards paradae" src="/images/2020-folder/2020-empty-horseguards-parade-small.jpg" /&gt;
  &lt;figcaption&gt;Deserted horse guards parade taken on one of my runs in first lockdown&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
  By a mixture of luck and privilege, plus some planning and hard work I objectively had a less bad year than many. But still things were tough. The whole range of emotions from relief, guilt, exhaustion, happiness, stress and yes moments of joy too. Plans upended, life unbalanced.
&lt;/p&gt;
&lt;p&gt;
  Lots of things led to a less stressful year than others: A home setup with space and a garden; no kids; young enough (I turn 40 next year) to mainly be concerned with others health; old enough to have some stability, savings and experience. &lt;/p&gt;

&lt;p&gt;The biggest life saviour was a job and salary - the cherry on top was a company that cared for our well being and was incredibly supportive. That job security was more valuable than any amount of yoga, swimming and reading that I could cram into my schedule.&lt;/p&gt;
&lt;/p&gt;
&lt;h4&gt;Contrast to the Past&lt;/h4&gt;
&lt;p&gt;
  There was a stark contrast to the friends and colleagues  I left behind at the RA who had to deal with reduced pay packets and uncertainty all year. While the news everywhere was horrible my connection to that world made the pain stab deeper.
&lt;/p&gt;
&lt;p&gt;
  The events this year also triggered memories of 2007 when I lost my job and with it my American visa - having to move back to the UK. Seeing others go through similar circumstances again made my heart ache.&lt;/p&gt;

&lt;p&gt;The world is messy and while some will grow and flourish out of adversity there will be many who will struggle for years.&lt;/p&gt;

&lt;h4&gt;Dealing with change&lt;/h4&gt;
&lt;p&gt;
  Losing my job thirteen years ago had a big impact of my life: it sparked ideas of changing career - it took six years planning and now six years in a new industry to feel fully embedded and settled. In the nine months I was unemployed in 2007 I picked up yoga, reignited my love for running and started noting my activities in a spreadsheet. That sporting diary persists today and is where the stats in this article are still recorded.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Hackney marshes" src="/images/2020-folder/2020-empty-hackney-marshes-small.jpg" /&gt;
  &lt;figcaption&gt;Regular running spot - Hackney Marshes&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Lockdown&lt;/h4&gt;
&lt;p&gt;
  Yoga in Jan, new job in Feb and then lockdown. A brief panic thinking I would be unemployed and then settling down to remote work and trying to find balance in an uncertain world: between looking after yourself and others, how much news to read, judging others while trying to understand all the complexities of everyone's situation. Throughout the year trying to work out what was safe given government guidlines, ones own fears and whatever could be gleaned from the web.
&lt;/p&gt;
&lt;p&gt;
  My core hobbies were a great foundation to help me survive the year. I try not to be a slave to the stats and to have space for other things in life. Keeping a diary helps me manage routine through uncertainty and allows me to reflect and respond to the ebbs and flows in my mood through the year.
&lt;/p&gt;
&lt;h4&gt;Yoga&lt;/h4&gt;
&lt;p&gt;
  My post &lt;a href="./all-yoga.html"&gt;all the yoga with All Yoga&lt;/a&gt; details the amazing month I spent in Bali completing my 200h teacher training. February brought about new routines - I got to try out a &lt;a href="https://stretch-london.com/"&gt;new studio&lt;/a&gt; as well as visit my &lt;a href="https://hotpodyoga.com/"&gt;long time regulars&lt;/a&gt;.  Six weeks later though and all change as lockdown hit. I struggled with online live classes but soon discovered &lt;a href="https://www.youtube.com/user/yogawithadriene"&gt;yoga with Adrienne&lt;/a&gt;. A daily morning practice through the dull monotomy of April which collapsed in mid May - I couldn't face it any more and took a big break until August when studios opened.  As usual when I stopped I got a running injury so was so happy to get back into the flow. In the second half of the year I got better at self practice alongside studio trips when they were open.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Hackney marses" src="/images/yoga_2.jpg" /&gt;
  &lt;figcaption&gt;My yoga cohort on the teacher training in Bali&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
  As predicted I did more yoga in 2020 but given about forty sessions were in January less than could be expected. The stats don't tell the whole story as I only count sessions over 45 mins which excluded the majority of lockdown sessions.
&lt;/p&gt;
&lt;p&gt;
  The year reinforced two things: Firstly don't take breaks as it means getting an injury. Secondly I love being told what to do.  The teacher training was to give me the ability to lead my own session. In a normal week I put lots of energy into managing people and this year there was a bigger demand on me to help support the team. After a busy day I just want someone else to tell me what to do for an hour. Next year hopefully more of the same but a more regular home practice.
&lt;/p&gt;

&lt;h4&gt;Running&lt;/h4&gt;
&lt;p&gt;
  2019 was a huge year for running and as expected I ran less this year.  One of the aims for the year was to inject a bit of speed and try and qualify for the London Marathon which didn't happen due to cancelled events.&lt;/p&gt;

&lt;p&gt;
  Back from Bali I swapped social runs with Techrunners for track and hill sessions with Advent Runners.  In mid March I took part in the Surrey half marathon and flew round.  The speed work combined with a strong core honed through hours of yoga resulted in one of the best races I've done - the first half felt so calm and easy despite rocketing along as part of the 1h 25min pace group. 5k from the end dropped the hammer and powered off for a storming last quater of the race. Painful by the end but an almost perfect &lt;a href="https://www.strava.com/activities/3164940083"&gt;negative split run&lt;/a&gt; and best half marathon time for a while.
&lt;/p&gt;
&lt;p&gt;
  Lockdown hit, races were cancelled and running became a lifeline to the outside world.  April and May I ran with a relentless consistency knocking out a steady 50k each week.  As the parks became fuller the center of town became more attractive - a unique experience to run through a deserted central London. Through the year instead of trips abroad there were jogs to see &lt;a href="https://twitter.com/MikeMJHarris/status/1253716942818607109"&gt;previous offices&lt;/a&gt;,  &lt;a href="https://twitter.com/MikeMJHarris/status/1326148321950494720"&gt;artworks&lt;/a&gt;, and &lt;a href="https://twitter.com/MikeMJHarris/status/1330119613087162372"&gt;Christmas lights&lt;/a&gt;.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Trail run registration" src="/images/2020-folder/2020-trail-run-start-small.jpg" /&gt;
  &lt;figcaption&gt;Start of the Fox ultra run&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
  From mid summer trail races were allowed to go ahead - I signed up to loads of events with the expectation some would be cancelled. Missed out on a couple in November but managed to complete a couple of 20+km &lt;a href="https://www.maverick-race.com/races/"&gt;Maverick runs&lt;/a&gt;, the 43km Fox run and a 50km event down in Bournemouth with a group of friends. Amazing work by the organisers to put these on - thank you!
&lt;/p&gt;
&lt;p&gt;
  Running gives me lots of things but one I value the most is the stress relief and the time to think.  This year that has been especially important.  Whatever restrictions come in next year running will always be there to provide a break, the chance to lug your body through the world, through nature and to burn away some of the worries and cares of the day.
&lt;/p&gt;

&lt;h4&gt;Swimming&lt;/h4&gt;
&lt;p&gt;
  Swimming was on and off again through the year - I wrote in much more detail about it in my post, &lt;a href="./paddling-through-a-pandemic.html"&gt;paddling through a pandemic&lt;/a&gt;.  It's a fantastic balance to the other sports I do and the floating serenity it brings to life is priceless.  So many swimming highlights but fresh in my mind was a Christmas Day swim in a chilly West Reservoir.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Christmas swim" src="/images/2020-folder/2020-christmas-swim-small.jpg" /&gt;
  &lt;figcaption&gt;Christmas day swim at the West Reservoir&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4&gt;Book reading&lt;/h4&gt;
&lt;p&gt;
  Epic year for book reading - with so much staring at a screen during work hours I was looking for respite during the rest of the day.  Books came to the rescue. &lt;a href="https://pagesofhackney.co.uk/"&gt;Pages of Hackney&lt;/a&gt; was my saviour providing not just books but friendly chats too!
&lt;/p&gt;
&lt;p&gt;
  You can see a list of all the books and stats in &lt;a href="https://books.mikemjharris.com/"&gt;my books project&lt;/a&gt;. Mainly fiction with the odd biography thrown in. I read more than twice as many female authors as male and one by a trans author. In response to the BLM protests I analysed my reading habits in the post &lt;a href="./accidental-racist" &gt;accidental racist&lt;/a&gt;. Overall this year 30% of the books I've read have been from ethnically contrasting voices.
&lt;/p&gt;
&lt;p&gt;
  Favourite books?  The Ali Smith Seasonal Quartet is an amazing mix of current politics, art, coupled with the magical. Fantastic writing - very much of the moment including the coronavirus. &lt;/p&gt;
&lt;p&gt; There were so many other aventures - visits to a kaleidoscope of lives and places - happy to share the books that took me there if you are interested.
&lt;/p&gt;
&lt;h4&gt;Blogging and side projects&lt;/h4&gt;
&lt;p&gt;
  A couple of tech blog posts and side projects at the start of the year including my first attempt at &lt;a href="https://blog.mikemjharris.com/posts/star-wars-twitter-timeline"&gt;recording a coding session&lt;/a&gt;. Soon online fatigue hit and the need to be away from the computer. Blog posts in the second of the year were around anything but tech!
&lt;/p&gt;
&lt;p&gt;
  No talks this year but a &lt;a href="./digital-works-podcast"&gt;podcast I'd recorded&lt;/a&gt; got released.  I was part of two panels with General Assembly aimed at those looking to get into tech - one in February in the offices and one on Zoom. Lots of people contemplating careers changes and was happy to have follow up questions and help people make decisions on their future. &lt;/p&gt;
&lt;p&gt;
  One aim for this year was to mentor again - the pandemic meant I didn't do anything to make that happen.  Fortunately near the end of the year two different friends approached me to mentor people on their team.  Have done a couple of sessions with each mentee which have gone well so far and the aim is to continue into the new year.
&lt;/p&gt;

&lt;/p&gt;
&lt;h4&gt;The Art World&lt;/h4&gt;
&lt;p&gt;
  The last few years being at the RA I've been to a huge amount of exhibitions and was curious if that was just a new habit or something related to the job.  I was looking forward to going back to the RA and getting friends there to sneak me into the latest exhibitions - in March I popped by to see the &lt;a href="https://twitter.com/MikeMJHarris/status/1235912967138484224"&gt;Picasso&lt;/a&gt; exhibition.  Since then galleries have been opening and shutting - devastated for the impact the uncertainty has had on my friends and old colleagues across the whole sector.
&lt;/p&gt;
&lt;p&gt;
 Visited galleries when they were open with trips to the RA for &lt;a href="https://twitter.com/MikeMJHarris/status/1296902912648589312"&gt;Gaugin, Spillaert&lt;/a&gt; and the &lt;a href="https://twitter.com/MikeMJHarris/status/1316313835263926273"&gt;Summer/Winter exhibition&lt;/a&gt;. There was a fantastic day out to the Tate and Southbank to see &lt;a href="https://twitter.com/MikeMJHarris/status/1290009555049406465"&gt;Among The Trees and Warhol&lt;/a&gt; and a trip to the Garden Museum to see &lt;a href="https://twitter.com/MikeMJHarris/status/1317758032336531457"&gt;Derek Jarman's hut&lt;/a&gt;. Managed to also venture outside of London with a couple of trips to &lt;a href="https://twitter.com/MikeMJHarris/status/1320634703104352257"&gt;Hauser and Wirth&lt;/a&gt; and a visit to the Turner Contemporary to see &lt;a href="https://twitter.com/MikeMJHarris/status/1301941408501297154"&gt;Art and Resistance in the American south&lt;/a&gt;.  As with everything else there were cancelled plans and trips -  have already littered next year's calendar with hopeful bookings - let's see what's possible while managing the pandmic.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Oudolf gardens" src="/images/2020-folder/2020-hauser-wirth-small.jpg" /&gt;
  &lt;figcaption&gt;Oudolf Garden at Hauser and Wirth&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
  Even when the world was locked down there was plenty going on - statues were getting pulled down across the world but here in London some were going up - from &lt;a href="https://twitter.com/MikeMJHarris/status/1297465424217542656"&gt;Thomas J Price's statue of a black woman&lt;/a&gt; to a &lt;a href="https://twitter.com/MikeMJHarris/status/1326148321950494720"&gt;shiny cloud of controversy&lt;/a&gt;. It was also amazing to see friends producing art from &lt;a href="https://twitter.com/MikeMJHarris/status/1294601794035879936"&gt;curating east London billboards&lt;/a&gt;, crafting pottery and a whole range of other creative pursuits. Worth the stress of furlough?  Absolutely not - but shows that universal basic income could create a way for talented people to make life around us better.
&lt;/p&gt;
&lt;p&gt;
  Cultural highlights of the year? Among the trees was a close contender but had two standalone favourites.  First Far Away - a play by Caryl Chruchill.  It was on at the Donmar Theatre and is a short but incredibly powerful play. It's an old piece but felt incredible relevant and prescient of what was to come in 2020.  Huge power and emotions generated from a small cast and set. My other favourite was the &lt;a href="https://twitter.com/MikeMJHarris/status/1337441411650777092"&gt;Emin/Munch&lt;/a&gt; exhibition at the RA.  There was pain and anger but also a huge bubbling up of life and vitality. Framed against this year it seemed to sum up the swirling complexity, joy and pain of life.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img alt="Tracy Emin" src="/images/2020-folder/2020-emin.jpg" /&gt;
  &lt;figcaption&gt;Excellent Tracy Emin exhibition at the RA&lt;/figcaption&gt;
&lt;/figure&gt;


&lt;h4&gt;What else?&lt;/h4&gt;
 &lt;p&gt;
   What else for the year? Switched from Radio 2 to Radio 6, less Spotify but started enjoying YouTube especially &lt;a href="https://twitter.com/MikeMJHarris/status/1310899841426427907"&gt;epic socially distant sets&lt;/a&gt;. Not much TV as had enough of screens - Last Dance the best thing I did watch. Social Media really came into it's own this year - discovered Instagram stories and loved catching up with what my yoga cohort was doing. Twitter is the messy everything of life and all the more valuable for it - highlights have been discovering new groups (hi copywriting twitter!) and sharing swimming pics. Most of my close friends though were a call or Whatsapp away or available for tinnies in the park. There was an increased joy &lt;a href="https://twitter.com/MikeMJHarris/status/1211263421183905792"&gt;from gardening&lt;/a&gt;. Rented an exercise bike from a friend and joined the Zwift revolution.  &lt;/p&gt;
 &lt;p&gt;So many other small parts of life that gave joy and structure to a year where big events were curtailed. Thanks to everyone who messaged, called or sent, shared thoughts and recommendations and generally helped bring some light to the year.
 &lt;/p&gt;
&lt;figure&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/2020-folder/2020-cat-on-table-small.jpg" alt="cat on table" /&gt;
    &lt;img src="/images/2020-folder/2020-cat-shed-small.jpg" alt="yoga" /&gt;
  &lt;/div&gt;
  &lt;figcaption&gt;View of my shed inside/out where large parts of the year were spent- plus a view of the garden.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;
 &lt;p&gt;
   Usually shop local but even more so this year, cancelled Amazon Prime, cashless makes sense but ensured I took money out each month to give to the local homeless. Donated more money this year than for a long time.  Volunteered as a vaccine administrator but wasn't needed. Tried to balance energy for talking to friends and family with time for myself. Tried to manage the news, have empathy for everything and everyone but being overwhelmed and feeling helpless too. A new job and managing people took up lots of energy - thankful for the support and welcome I was given and proud of the support we've been able to give to the team.
 &lt;/p&gt;

 &lt;p&gt;Love being around people and enjoy being on my own but never too much of either. Remote work went well but enjoyed the days in the office when allowed. The rest of life away from a pandemic continued - so many areas such as BLM, climate change and a myriad of other imbalances in life to keep abreast of.
 &lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  What a year - thankful for the stability of a job, friends and family around and  many other small joys. A tough and exhausting year. One with huge demands on us which we were all in together but often further apart than ever.
&lt;/p&gt;
&lt;p&gt;
  This post is part of making sense of it all, mainly a post for me but the commitment to publish something pushing me to think, reflect and process much of what has happened. There are many other reasons to write - a distraction, a reminder of what we could do, because I like writing.
  &lt;/p&gt;
&lt;p&gt;
  Next year?  It feels like large parts of 2021 will be equally impacted as we have this year. No targets beyond continuing to deal with the pandemic. I'd expect numbers similar to this year but the threat of infection and resultant tiredness, long covid or even death could all put a dent into any plans.  The one resolution I'd like to pursue is to do more writing - specifically creative writing. &lt;/p&gt;
&lt;p&gt;Whatever happens this year shows that even with reduced horizons many things are possible. My heart goes out to everyone struggling and hope we can all have a better 2021.
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>Digital Works Podcast</title>
      <link>https://blog.mikemjharris.com/posts/digital-works-podcast</link>
      <pubDate>18 Dec 2020</pubDate>
      <guid>digital-works-podcast</guid>
      <description>&lt;!-- meta-data title: Digital Works Podcast --&gt;
&lt;!-- meta-data searchtitle: digital-works-podcast --&gt;
&lt;!-- meta-data date: 18 Dec 2020 --&gt;
&lt;!-- meta-data intro: Chatting to Substrakt about technology and art --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data tags: talk --&gt;
&lt;p&gt;
   At the end of 2019 I recorded the inaugural episode of Substrakt's &lt;a href="https://substrakt.com/digital-works/"&gt;Digital Works Podcast&lt;/a&gt; series and it was released in February 2020. &lt;a href="substrakt"&gt;Substrakt&lt;/a&gt; is an arts focused digital agency and the interview was run by Ash, the managing director.
&lt;/p&gt;
&lt;audio controls&gt;
  &lt;source src="/media/episode-001-mike-harris.mp3" type="audio/mpeg"&gt;
  Your browser does not support the audio element.
&lt;/audio&gt;

&lt;h3&gt;Why me?&lt;/h3&gt;
&lt;p&gt;
  There's lots of fantastic people in the art world so why me?  I was on a long list of people they wanted to get onto the podcast and as I was leaving the Royal Academy of Arts at the end of 2019 time was short so by necessity I was the first recording. Ash felt my experience as a relative newcomer/outsider to the arts world would be interesting. He also shared a list of who else they planned to interview - was happy to be part of a range of voices from a variety of institutions.
&lt;/p&gt;
&lt;h3&gt;Recording logistics&lt;/h3&gt;
 &lt;p&gt;
    Ash had all the kit for the podcast we just needed a space.  Manged to bag a hard to get meeting room at the RA, we struggled to attach the kit to the curved edges of the desk and half way through one of the microphones wasn't recording properly. If I recall correctly we huddled together around one microphone, our long lanky legs knocking together under the table. Not a situation suited to today's socially distanced new world!
 &lt;/p&gt;
 &lt;h3&gt;The Recording&lt;/h3&gt;
&lt;p&gt;
  My first podcast - it's that weird balance between a casual chat and a prepared talk.  Love giving talks and work hard to get the pace and delivery right but a casual chat is different - had to ensure I didn't speak too quick and to try and cover all the key points despite the more rambling nature of the medium. Overall I think it worked out well - in particular I wanted to get across that whatever the RA has achieved digitally it's been because of the strength of the team and the support from some key people. I stand by most of what I said although anything recorded in 2019 and released in early 2020 looks a little dated given the current covid concerns.  Let's see if my prediction that I'll be back in the arts sector in ten years time comes true.
&lt;/p&gt;
&lt;h3&gt;Thanks&lt;/h3&gt;
&lt;p&gt;
  Huge thanks first to the team at the RA who have delivered some amazing projects and gave me something to talk about.  Secondly thanks to Substrakt for putting together this collection of podcasts and in addition the work they have done with the RA. Finally a huge thanks to Ash - from my start in the sector he has been incredibly friendly and generous with his time.  We didn't think Substrakt would work with us as we had a tech team but glad we got to work on the &lt;a href="https://youngartists.royalacademy.org.uk/"&gt;Young Artists Summer Show&lt;/a&gt; together.  Ash has been a fantastic friend too and have enjoyed catching up at all the art events as well as sharing our love and frustrations with running.
&lt;/p&gt;

&lt;p&gt;
  Hope you enjoy the podcast and happy to answer any questions or thoughts you might have about it.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Working at Wonderbly</title>
      <link>https://blog.mikemjharris.com/posts/working-at-wonderbly</link>
      <pubDate>29 Nov 2020</pubDate>
      <guid>working-at-wonderbly</guid>
      <description>&lt;!-- meta-data title: Working at Wonderbly --&gt;
&lt;!-- meta-data searchtitle:  working-at-wonderbly --&gt;
&lt;!-- meta-data date: 29 November 2020 --&gt;
&lt;!-- meta-data intro: A look back on two years at the RA and why I've changed jobs --&gt; &lt;!-- meta-data author: Mike Harris  --&gt; &lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/wonderbly-sign-small.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  After two glorious years at the Royal Academy of Arts I changed jobs to work for Wonderbly. Writing about career change is both a nice memento of my thoughts at the time, why I wanted to move and helps me process thoughts and feeling about what is often a significant life event. Previous posts detailed changes including from &lt;a href="https://blog.mikemjharris.com/posts/changing-jobs"&gt;from Mammal to MOO&lt;/a&gt;, &lt;a href="https://blog.mikemjharris.com/posts/new-job-new-infrastructure"&gt;internally at MOO&lt;/a&gt; and finally &lt;a href="https://blog.mikemjharris.com/posts/working-at-the-ra"&gt;from MOO to the RA&lt;/a&gt;. My Wonderbly life stared in February 2020 - I would of written earlier but life and a pandemic kept me busy.
&lt;/p&gt;

&lt;img src="/images/wonderbly-sign-small.jpg" alt="" /&gt;

&lt;h3&gt;Two years at the RA&lt;/h3&gt;
&lt;p&gt;
Looking back at &lt;a href="https://blog.mikemjharris.com/posts/working-at-the-ra"&gt;the reasons for moving to the RA&lt;/a&gt; I got everything I wanted out of the job and so much more.  Professionally I progressed: my coding and understanding of technical architecture improved. Being a manager in charge of a small team was also a huge learning curve.  Personally I grew: being part of the RA and the museum world was wonderful - there were so many interesting people to meet and fantastic shows to see. Everyone was incredibly welcoming and I learnt a huge amount art and the museum sector.
&lt;/p&gt;
&lt;p&gt;
  The main project I was involved in while at the RA was the introduction of a new ticketing, membership and CRM system. We kicked off procurement in my first week there and spent the next two years working with teams across the whole of the organisation to update both the technology and the day to day processes. There was huge support for the project and I was incredibly lucky to work with a brilliant set of people. Plenty of challenges along the way but we had good fun and were really happy to help deliver such a major change to how the RA is setup.
&lt;/p&gt;
&lt;p&gt;
  There were many other projects including improving the &lt;a href="https://se.royalacademy.org.uk/"&gt;Summer Exhibition explorer&lt;/a&gt; (where we roughly doubled online sales each year), partnering with &lt;a href="https://substrakt.com/" target="_blank"&gt;Substrakt&lt;/a&gt; on the &lt;a href="https://youngartists.royalacademy.org.uk/"&gt;Young Artists Summer Exhibition&lt;/a&gt;, launching an internal tool to manage artworks lent to us as well as upkeep and maintenance of our main website and blog.
&lt;/p&gt;
&lt;h3&gt;More than just a job&lt;/h3&gt;
&lt;img src="/images/ra-courtyard.jpg" alt="" /&gt;
&lt;p&gt;
  Working at the RA was so much more than delivering on all the team's projects.  Obviously they were the priority but in the two years I also got to embrace the art world - something that I never thought I'd get paid to do. Getting to mix and work with all the teams and people at the RA was a unique experience - from the front of house staff, through to marketing, the exhibitions team, the RA schools, archive, the library and the executive team. Such an amazing set of people who were all very generous with their time and knowledge.
 &lt;/p&gt;
 &lt;p&gt;
  Some of the highlights away from the work include moving into refurbished building with new gallery spaces and areas, celebrating the RA's 250th anniversary, visiting all the exhibitions, wandering round deserted galleries prior to starting work for the day, amazing Christmas parties, celeb spotting at the Summer Exhibition preview parties and two amazing trips to the yearly Tessitura conference in the US where I got to mix with people from arts organisations from across the world.
&lt;/p&gt;
&lt;h3&gt;Why Move?&lt;/h3&gt;
&lt;p&gt;
  That all sounds wonderful so why move? In my mind the role was always for a couple of years and I was always clear to my boss about this. I wanted to deliver the key project, make the most of all the opportunities on offer and then move on.  I learnt a huge amount being in charge of the tech team at the RA but wanted to be in a bigger team with more senior people around to help me progress.  Other factors also came into play - from being able to earn more money outside the arts, finding an office closer to my east London home and also a new challenge. The arts world is magical especially when you are new to it - leaving after two years kept it that way.
&lt;/p&gt;
&lt;h3&gt;New Job&lt;/h3&gt;
  &lt;p&gt;
    As we finished the major project at the RA I was approached by a recruiter on LinkedIn about a role at Wonderbly. I knew quite a bit about them having gone to a talk from Asi the founder back in 2013 as well as knowing a few of the people who worked there through other tech events around the same time. Everything slotted into place - a couple of interviews, an offer and I had a job closer to home, more money and also a product I cared about.  Wonderbly make beautiful personalised books - I love books, love the products the company makes and helping children fall in love with reading is a great reason to get up and go to work each day. There was a fun, caring feel about the company and which felt similar to the atmosphere at MOO - a place I really enjoyed working at.
  &lt;/p&gt;

  &lt;p&gt;
    All that was left was to say good bye to the RA - enjoying celebratory drinks, some lovely leaving messages and one final glorious RA Christmas party.  I'd negotiated a month off (thank you Wonderbly!) so was off to Bali to complete &lt;a href="https://blog.mikemjharris.com/posts/all-yoga.htm"&gt;my yoga teacher training&lt;/a&gt;.

  &lt;h3&gt;Starting a new job in 2020&lt;/h3&gt;
&lt;figure&gt;
  &lt;img src="/images/wonderbly-books-small.jpg" alt="" /&gt;
  &lt;figcaption&gt;Display of some of our books on display at the office.&lt;/figcaption&gt;
&lt;/figure&gt;
  &lt;p&gt;
    There was a great welcome from the team when I joined - all the simple but essential things that you need on day one - computer ready to go, welcome pack explaining how life at Wonderbly works, where toilets are, where the meeting rooms are, what to expect during a week. Plus the team cooked a welcome breakfast for me.  Everyone was incredibly helpful, friendly and supportive.  One of the attractions of working at a place like Wonderbly is that it's not just tech people - there's the artists, storytellers, product team both physical and digital and many more. Another bonus is being able to show the books to your parents so they can have a rough idea of what you actually do.&lt;/p&gt;

&lt;p&gt;Changing job is a huge upheaval and every time I've done it there's a few panicky moments in the first few weeks/months as you learn how a new company works, get to grips with the system and also try and set your own processes and ways of doing things. The warm welcome and great on boarding helped with this upheaval - there's always a few moments where you miss the routine and people from somewhere you've worked a while - but time and effort and you can build up new relationships and habits.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Starter kit and me in a spaceship&lt;/figcaption&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/wonderbly-starter-kit-small.jpg" alt="" /&gt;
    &lt;img src="/images/wonderbly-spaceship-small.jpg" alt="" /&gt;
  &lt;/div&gt;
&lt;/figure&gt;
  &lt;p&gt;
    The tech team at Wonderbly is split into two teams - those who look after the development of the books and my team who deal with the e-commerce website and fulfillment.  The RA website generated roughly the same revenue as the Wonderbly website but at Wonderbly this is pretty much the only source of revenue so there is a lot of pressure to make sure everything is working! Our team looks after the user facing website (built with Node and React) and our backend e-commerce system (Ruby on Rails) and we help out with a number of systems including how books are sent to and fulfilled by the printers.
  &lt;/p&gt;

  &lt;p&gt;
    My time is split between managing the two developers and one QA on my team (all of whom mainly focus on the website codebase) and being the main developer on the backend systems (with help from the VP of engineering and CTO).  I enjoy the split between hands on coding and managing - my priority is always to make sure the team is supported and 1-1s are the most important part of the week. Being the main engineer on the backend system is quite daunting - at MOO there were multiple teams to manage what our small set of developers do.  All of this is a big responsibility but just the sort of challenge I was looking for.
  &lt;/p&gt;
  &lt;h3&gt;Covid&lt;/h3&gt;
  &lt;p&gt;
    Obviously 2020 isn't a normal year. Covid news was beginning to seep into the UK conciousness as I started the role. I was fortunate to build up some relationships face to face in February and then lockdown.  This was still in my probation period so was a little nervous but I was given lots of reassurances that my job was OK. After a few weeks it looked like as an online company our sales figures wouldn't be too disrupted and we could get on with making remote work happen as well as possible&lt;/p&gt;
  &lt;/p&gt;
  &lt;p&gt;
As with any new process time and effort has to go into making remote work go smoothly - as a team and a company there was lots of shared ideas and thoughts and we set some expectations on what would work best for everyone.  We wanted to make the most of the new flexibility so encouraged everyone to work how they wanted outside of the usual weekly structure of meetings.  There was also the recognition that this was no normal remote work - it was a pandemic and unplanned and there were extra stresses on everyone - from child care, lack of home working setup through to stresses about the world.
&lt;/p&gt;
&lt;p&gt;
  Overall it's gone well - with the team we reworked expectations (dealing with the pandemic the priority) shared how how we were taking breaks whether for daily walks of shopping trips. Feedback has been good and despite the stresses of the year we've still been able to deliver large chunks of what we had planned.  While in a pandemic (and often at other times in life!) work can seem trivial it is a key part of people's stability and mental health - not only providing a pay check but a sense of purpose. There's a great buzz when things click and you are part of a team who who aren't too stressed, have fun yet still get that sense of achievement of working together on a task.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/wonderbly-office-small.jpg" alt="" /&gt;
  &lt;figcaption&gt;Layout of the office&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;
  As lockdowns have eased went for 1-1s in the park with the team and then had odd days in the office.  Remote has worked well but most fully remote companies still stress the importance of some face to face time at some point.  It hasn't been all smooth sailing - we had a crunch in August.  We'd been overoptimistic in the number of books with new features we were trying to deliver as well as taking on some chunky technical refactoring. We think being in the office the crunch would of been more obvious - it highlighted that we needed to be clearer and more direct with remote messaging especially when things aren't working as we don't have the in person physical cues. Fortunately that was the only big issue in the year and we have learnt from it and improved.


  &lt;h3&gt;Conclusion&lt;/h3&gt;
  &lt;p&gt;Have really enjoyed Wonderbly so far - the usual bumps and uncertainties that you get with any new job and Covid has certainly had a big impact but I enjoy the people I work with and the broader Wonderbly team.  My tech skills are improving and I've learnt a lot about how a children's book gets created. There's been good feedback in terms of how the team is working, the projects we've delivered and I was very proud to win a 'kind' award that gets voted for by the whole company. Wonderbly is full of ideas - sometimes too many and I have had to learn to say no more. The company has adapted to Covid and the stresses of lockdown while at the same time finding time to discuss and share thoughts on others key topics such as BLM and politics across the world. &lt;/p&gt;

  &lt;p&gt;All good so far and excited to see how both myself and the company grow next year. Lots of opportunities, exciting project and some great people to work with.
   &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Paddling Through A Pandemic</title>
      <link>https://blog.mikemjharris.com/posts/paddling-through-a-pandemic</link>
      <pubDate>11 Oct 2020</pubDate>
      <guid>paddling-through-a-pandemic</guid>
      <description>&lt;!-- meta-data title: Paddling Through A Pandemic --&gt;
&lt;!-- meta-data searchtitle:  paddling-through-a-pandemic --&gt;
&lt;!-- meta-data date: 11 October 2020 --&gt;
&lt;!-- meta-data intro: How the many swimming venues in London helped me navigate through the pandemic so far. --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/west-reservoir-small.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  One of the last 'normal' things I did at the start of the year was to go swimming in London fields Lido on the 19th March.  That week there had already been a raft of announcements - parts of life closing down and vulnerable people shielding.  That morning the lady on reception said they would be aiming to stay open. By the end of the week they were shut. Horizons shrunk to our homes, activities curtailed, lockdown started.
&lt;/p&gt;
&lt;p&gt;
  The next time I went swimming was the 5th June - since then it has been one of the joys of the summer and has helped mind and body get reaccustomed to a wider post lockdown world with loosening limits. Here's my story of paddling through a pandemic.
&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/west-reservoir-small.jpg" alt="West reservoir evening" /&gt;
  &lt;figcaption&gt;Evening view of West Reservoir&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Lockdown&lt;/h3&gt;
&lt;p&gt;
  The initial fear and uncertainty at the end of March gave way to a regular, monotonous routine in April jarringly punctuated by the horrific news. I was incredibly fortunate and privileged to have a fairly easy and stable lockdown. By May I was craving something new - I took a week off work and on a cycle through town saw swimmers in the Serpentine - but they'd been overwhelmed and had already stopped new members signing up.&lt;/p&gt;
&lt;p&gt;
  So swimming was a possibility!  I kept my eyes peeled to see if any other venues were opening - particularly for news from the wonderful swim twitter community. In early June Sally posted one of her brilliant Postcards From the Pool about swimming in a new venue in the Isle of Dogs. Excited I looked into it, replied to Sally's tweet and found out we'd both be there at the same time.  It was so exciting to have an activity booked, to go somewhere new and to have plans catch up with a friend!

  &lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Thanks for sharing! Inspired me and have my first swim of since pre lockdown booked there tomorrow. 🙌&lt;/p&gt;&amp;mdash; Mike Harris (@MikeMJHarris) &lt;a href="https://twitter.com/MikeMJHarris/status/1268068018669551618?ref_src=twsrc%5Etfw"&gt;June 3, 2020&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;h3&gt;Millwall Docks&lt;/h3&gt;
  &lt;p&gt;
    There was huge demand and and spaces were at a premium - I managed to get a slot at 10am on Thursday 6th June. Up early, bag packed I cycled along the network of canals that link where I live to the Isle of Dogs. It was a workday but one of the benefits of the pandemic has been more flexible working.  At 9.30 I took my morning standup call on the edge of a murky Thames, shortly after I was stood on the side of the docks frantically waving at Sally who I'd just spotted across the car park.  We became twitter pals a while ago and had met in person at the Lido. That morning at the docks it was amazing to see a friend's face in real life and not on a zoom call!
  &lt;/p&gt;
&lt;img src="/images/docks-swim-small.jpg" alt="Milwall docks open water swim" /&gt;
&lt;p&gt;
  What a joy to be back in the water! For the next thirty minutes I thrashed around, no rhythm, no feel for the water, zig zagging about, mind buzzing, water splashing. An absolutely terrible swim but the most amazing one at the same time.  Afterwards I had the tough task of shaking some warmth back into my hands and trying to wipe the joyful smile off my face. What a treat.
&lt;/p&gt;

&lt;p&gt;
  A week later I jogged the 10k to the docks, swam then got a take away coffee and sat with Sally and a group of her swimming friends. Another post lockdown first, meeting up with a group: a fizz of anxiety, all sat apart but big smiles and lots of swimming and life chat.
&lt;/p&gt;


&lt;h3&gt;West Reservoir&lt;/h3&gt;
&lt;p&gt;
  News that West Reservoir was opening rippled out across the swim community - I got a mid week slot on Thursday 18th June.  That morning I cycled through the deserted streets of Stoke Newington, excited to be at a venue I'd visited occasionally before. There was an excited line of socially distanced people outside - How does it work? Where do you change? I went last week! It's my first time. Whats the temperature like?  How was your lockdown? It's so good to be out! How was furlough? Work? Home schooling?  Isolation?  At least we have the water now!
&lt;/p&gt;
&lt;img src="/images/west-reservoir-swim-small.jpg" alt="West Reservoir" /&gt;
&lt;p&gt;
  Then we were in, a quick briefing, a spacious quay to change in the sun, a polite queue and then into the water.  There are no straight edges here - the round reservoir and skewy circular route helped free the mind.  The short paddle out, sharp dog leg left at the tictac, a glance as you crossed over homecoming paddlers and you were out!  Kayaks keeping watch around the course, grey water to immerse your head in and block out the world around you for 40 marvelous minutes.  Dripping as you returned to shore, dropping off your tow buoy and drying yourself off in the sun. Glorious.
&lt;/p&gt;

&lt;p&gt;West Reservoir became my regular - there were slots all day long and it was moments from home. The flexibility of work meant I didn't need to compete for the busy morning and late afternoon slots - often turning up for a quick dip after lunch, enjoying some sun and then back to the keyboard revitalised.  Met up with friends from a swimming holiday a previous year: we swam, sat in Clissold park and enjoyed pizza and beer.  I met another twitter friend for the first time IRL there (Hi Charlotte!) and of course I spotted Sally. Seeing the morning sun, swimming in evening dusk, bathing in weekend sun.  West Reservoir - my happy place.
&lt;/p&gt;


&lt;h3&gt;Olympic Park&lt;/h3&gt;
&lt;img src="/images/olympic-pool-swim-small.jpg" alt="Olympic Pool Stratford" /&gt;
&lt;p&gt;
  So far open air seemed safer in a pandemic world but by the end of August the infection numbers were lower and the right measures in place for pools to open. The Olympic pool in Stratford is even closer than West Reservoir. They've done a brilliant job with the Olympic park and the pool is one of the highlights - the Zaha Hadid designed whales tongue is a stunning building.  I booked a slot, cycled over, got confused by the one way system inside but made it into the pool.  After months of open water swimming the pool felt strange - the freedom and random directions were replaced with linear, regular lengths. More contained but smoother, focused, rhythmic. A good change, another new experience.
&lt;/p&gt;

&lt;h3&gt;London Fields Lido&lt;/h3&gt;
&lt;p&gt;The Lido had been open for a while too but slots were at a premium - whereas the Olympic pool was bookable on the day the Lido required advanced planning. Finally got my chance and in the last week in August.,&lt;/p&gt;

&lt;p&gt;When I moved to the area a few years ago I fell back in love with swimming by visiting the Lido. I took swimming lessons and made visits here part of my routine. During summers I'd be there a couple of mornings a week. I'd arrive early, have a swim and then sit and read a book in the sun trap to the side with a coffee and croissant before heading off to work. I'd been so looking forward to more of the same this summer but I hadn't been since that last normal day back in March.
&lt;/p&gt;
&lt;img src="/images/london-fields-lido-swim-small.jpg" alt="London Fields Lido" /&gt;
&lt;p&gt;
  It was weird being back, areas roped off, no lingering after but the pool was the same: the all year round heated water, the trees and sky still cheering you on. And then I spotted a regular, and another.  I caught up with the lovely elderly couple who have the same favourite spot by the side of the pool.  We've been chatting and reading books together for years - so happy they had a safe lockdown.
&lt;/p&gt;
&lt;p&gt;
  It was great to be back.  A touch of melancholy at a missed summer and a reminder of the pandemic and all the disruption it's caused.
&lt;/p&gt;


&lt;h3&gt;Thankful and Thinking About The Future&lt;/h3&gt;
&lt;p&gt;
   The days are getting shorter, leaves are changing colour and there's a chill not just in the air but in the water too.  The news too is changing - the warm denial of summer has given way to the cooling reality of a second wave.  The short days and temperature will mean I'll mainly be visiting the Lido or Olympic pool with maybe the occasional quick open water dip. Further restrictions may curtail activities even more and who knows if I'll stay healthy.
  &lt;/p&gt;
  &lt;p&gt;
    There will be some reflective time feeling sad that the summer is over but the seasons change and life moves on.  Open water swimming will give way to other activities, to lazing on the sofa with a book, out running on the trails, enjoying something different. There will still be fresh winters evenings at the Lido for my swim fix.
  &lt;/p&gt;

  &lt;p&gt;
    Incredibly grateful and thankful that I've been able to enjoy a glorious summer of swimming. It's helped me physically and mentally over the last few months. There was a reason to go out again, a place to be with other people and share an experience with. Navigating the open water also helped me navigate through the stresses of the pandemic so far.
    &lt;/p&gt;

&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;h3&gt;Appendix&lt;/h3&gt;
&lt;h3&gt;Thanks&lt;/h3&gt;
&lt;p&gt;
  Huge thank you to all the venues who have been incredibly welcoming and friendly whilst at the same time implementing all the necessary procedures.  They've all felt very safe.  Everyone visiting respected each others space and there seemed a general sense of happiness and a moment to forget the world around. &lt;/p&gt;
&lt;p&gt;Thank you to &lt;a href="https://twitter.com/sallygoble"&gt;Sally&lt;/a&gt; for sharing her joy of swimming and allowing me to join in with her swimming group. Has been lovely catching up!&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href="https://twitter.com/charlotte_gggg"&gt;Charlotte&lt;/a&gt; who also posted inspirational pics which encouraged me to visit more regularly as well as answering my many questions!  We got to meet up in real life at West Reservoir - great to meet you and thanks for the book loan! From my experience in the summer open water swimming is a mainly White activity. Charlotte helps out with &lt;a href="https://www.swimdemcrew.co.uk/"&gt;Swim Dem Crew&lt;/a&gt; who try and make swimming more inclusive.&lt;/p&gt;

&lt;p&gt;There were many others who shared their experiences swimming through the pandemic - too many to mention but a quick thank you to &lt;a href="https://twitter.com/FullyThoughtOut"&gt;Sophie&lt;/a&gt; who way back in April shared thoughts on where to take illicit dips in canals and rivers.
&lt;/p&gt;
&lt;p&gt;
  If you are looking to brighten up your twitter feed with swimming related content then the accounts already mentioned are worth following.  For even more swimming focussed posts then &lt;a href="https://twitter.com/StIvesMermaid"&gt;St Ives Mermaid&lt;/a&gt;, &lt;a href="https://twitter.com/ellachloeswims"&gt;Ella Foote&lt;/a&gt; and &lt;a href="https://twitter.com/vagabondbaker"&gt;Rachel&lt;/a&gt; are worth a look. The &lt;a href="https://twitter.com/BrinyBeautiful"&gt;The Beautiful Briny&lt;/a&gt; post wonderful sea related art works - maybe of interest to those who enjoy the view but aren't interested in swimming! &lt;a href="https://twitter.com/LoveYourLido"&gt;Love Your Lido&lt;/a&gt; post stunning pics from lidos all over the country. Finally the London based locations: &lt;a href="https://twitter.com/WestReservoir"&gt;West Reservoir&lt;/a&gt; and &lt;a href="https://twitter.com/LDNFieldsLido"&gt;London Fields Lido&lt;/a&gt; who post regular updates including the exciting news that West Reservoir is open for chilly winter open water sessions!
&lt;/p&gt;
&lt;p&gt; Finally a thank you to work for being so flexible - they've treated us with respect: trusting us to manage our routine and timings. Being able to swim during the day and not have to compete for the popular morning and evening slots has been fantastic.
&lt;/p&gt;
&lt;h3&gt;Other locations&lt;/h3&gt;
&lt;p&gt;
  I've focussed on my regular swims in London for most of this piece - mainly as an attempt to keep the post from getting too long.  I've been incredibly fortunate to get out of town and enjoy swims in other parts of the country too. If you're still reading this deep into the appendix then you must be interested!!
&lt;/p&gt;
&lt;h3&gt;Dorking Quarry&lt;/h3&gt;
 &lt;img src="/images/dorking-swim-small.jpg" alt="Dorking Quarry Swim" /&gt;
&lt;p&gt;
  My mum had been open water swimming too and she took me to her favourite spot in Dorking in August. After mostly being in London getting out of town was super refreshing as was swimming in a new location.  Perhaps the most picturesque of them all? The months of concern for parents safety was washed away by being able to share some time splashing around outside.
&lt;/p&gt;
&lt;h3&gt;Margate&lt;/h3&gt;
&lt;img src="/images/margate-swim-small.jpg" alt="Margate Tidal Pool" /&gt;
&lt;p&gt;
&lt;p&gt;In early September took the short trip out to Margate - lots of the Hackney tech crowd have either moved there or visit regularly so got to catch up with some friends.  Brilliant break and refreshing to enjoy the sea air.  Every morning got up and enjoyed the large stretches of sand at low tide and got to swim in the tidal pool. Waking up to that every day would be the dream!
&lt;/p&gt;

&lt;h3&gt;Cornwall&lt;/h3&gt;
&lt;img src="/images/cornwall-talland-small.jpg" alt="Margate Tidal Pool" /&gt;
&lt;p&gt;
  Most of my childhood holidays were spent down in Cornwall visiting Grandparents. It's where I first got comfortable in the water spending the endless summer days splashing in the sea.  In October I went down to pay a visit to my Grandma and went swimming in the local beach - Talland. The water was a reasonable 14 degrees and managed 2 x 25min swims without a wetsuit!  I'm not that good with the cold  - from experience I know that I need the right warm kit after and a hot drink soon after and I'll be OK.  Lovely tingling warming sensation.
&lt;/p&gt;
&lt;p&gt;And that's it!  You made it to the end - both London swims and others around the country! I hope that you found some way of being able to deal with the pandemic. It might go on for a while so here's hoping we all can find some happiness amongst the gloom.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Accidental Racist</title>
      <link>https://blog.mikemjharris.com/posts/accidental-racist</link>
      <pubDate>31 Aug 2020</pubDate>
      <guid>accidental-racist</guid>
      <description>&lt;!-- meta-data title: Accidental Racist --&gt;
&lt;!-- meta-data searchtitle:  accidental-racist --&gt;
&lt;!-- meta-data date: 31 August 2020 --&gt;
&lt;!-- meta-data intro: Taking a look at what my reading habits say about me and the world around --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;

&lt;p&gt;
Books - glorious, wonderful, mind changing, world creating, reality reflecting-distorting-enhancing books. But what do the books I read say about me? In a previous post, &lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist"&gt;accidental sexist&lt;/a&gt;, I wrote about how the gender split of the authors I've read showed that I wasn't as progressive or equal minded as I thought. The number of male authors I read far outstripped female ones.  Since then I've improved that ratio but what other societal imbalances does my reading list reflect? Given the recent Black Lives Matter protests I wanted to do a similar analysis and see if I was an accidental racist too.
&lt;/p&gt;

&lt;h3&gt;Labeling the authors I read&lt;/h3&gt;
&lt;p&gt;
  Labels can empower, unite and create solidarity but can also be misleading and restrictive. I’m categorising authors to help improve the variety of books I read, to allow me to experience the world through different eyes. Some authors I imagine just want to be labelled as authors, others may be happier to be seen as a voice for their community. In trying to improve my outlook I appreciate that I’m sat here with my white male privilege handing out labels to those who may not want to be categorised. My aim is to help understand and improve my habits rather than to specifically bracket an author.  In the analysis below I've provided my best guess for the percentage of BAME authors I've read each year - I'd be interested if others analysis the list of authors would come up with the same figures?
&lt;/p&gt;
&lt;h3&gt;BAME - a flawed but understood label&lt;/h3&gt;
&lt;p&gt;
  In analysing my reading habits I considered a range of categories such as BAME, BME, Alternative Views, Ethnic Minority, Racially Distinct, Ethnically Contrasting etc. After lots of thoughts, reading articles and chatting to friends I've decided use the term BAME - I appreciate while it may have its flaws and may not be fully representative of how people identify it is a commonly used term and most people understand what it represents. I don’t feel qualified to try and claim a new phrase or to use a term that I may not fully understand. BAME while not perfect fulfills the aims of this post in allowing me to analyse my reading habits.
&lt;/p&gt;
&lt;h3&gt;Why read&lt;/h3&gt;
&lt;p&gt;
There are so many reasons I read - for fun, to learn about me or the world around, to live love and dream a different reality or fantasy. Reading a more diverse set of authors is about my education and learning about their lived experiences but it is equally about enjoying new works, new books and discovering new talent. I mainly consume fiction and while fiction can often shine a sharp light on the realities around us often the aims are hidden and wrapped up. I’ve begun to take on books that are specifically aimed as a dialogue and analysis of the world around. Think of the difference between Beloved by Toni Morrison and Between the World and Me by Ta-Nehisi Coates.
  &lt;/p&gt;
  &lt;p&gt;
    You can see a full list of the books I've read at my &lt;a href="https://books.mikemjharris.com"&gt;books project&lt;/a&gt;. The chart below is taken from that project and shows the Gender split and the number of BAME the authors I’ve read since 2011.
  &lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;th colspan="3"&gt;Gender&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;th colspan="2"&gt;BAME&lt;/th&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;ALL&lt;/th&gt;&lt;th&gt;F&lt;/th&gt;&lt;th&gt;M&lt;/th&gt;&lt;th&gt;NB&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;(nos)&lt;/th&gt;&lt;th&gt;(%)&lt;/th&gt;&lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;&lt;td&gt;2020&lt;/td&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;29%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2019&lt;/td&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;31%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2018&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;12%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2017&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;22%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2016&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;30%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2015&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;15%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2014&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2013&lt;/td&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;11%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2012&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;2011&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0%&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;All&lt;/td&gt;&lt;td&gt;196&lt;/td&gt;&lt;td&gt;90&lt;/td&gt;&lt;td&gt;105&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;17%&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Accidental Racist - The Stats&lt;/h3&gt;
&lt;p&gt;
Back in 2011 and 2012 I rediscovered reading and wanted to catch up on some modern classics - particularly the Great American Novel. As a result my reading habits were dominated by white men. Since then the balance of female to male authors has improved - the last four years I've read roughly double the amount of female authors as male (and a couple of books by authors who are non binary/trans). During this same period of time I have also read more books by authors with a BAME background. In making myself think about gender inequality it also made me think about other forms of inequality and has improved the breadth of my reading in all directions.
&lt;/p&gt;
&lt;h3&gt;Systemic issues&lt;/h3&gt;
&lt;p&gt;
  We are impacted by the world around us - the system labelled Roth, Updike and Bellow as the authors to read. Since then I've changed and I think that the system has also changed a little - there are more lists, recommendations and support for underrepresented author. But these are small improvements and there is a lot more to do. It can still be so easy to be influenced by subconscious bias that has been built up over many years.
&lt;/p&gt;
&lt;h3&gt;Time and focus&lt;/h3&gt;
  &lt;p&gt;
2015 was the first year I read more female authors than male. I focussed on changing my habits, congratulated myself and felt I'd solved that problem. Sorted! The next year I read four times as many male authors as female - with effort I'd overcome systemic issues but they were still around. Without that focus I fell back into being influenced by the environment around me, reverting to familiar habits.
  &lt;/p&gt;
  &lt;p&gt;
    Change takes revolution, evolution and persistence. It also takes time to balance out inequality - since 2016 I've read many more female authors - often twice as many male authors. Despite that, since 2011 I've still read more male authors and can only imagine that the imbalance would be even worse if I had documented my earlier reading habits. Fixing imbalance doesn't happen overnight.
  &lt;/p&gt;
  &lt;p&gt;
     In a similar way the Black Lives Matter protests are very visible and for a short time we’re all conscious of the issues. For me thinking, drafting and writing this post has helped keep those issues at the front of my mind the past few weeks. Whenever I finish a book and add it to my reading list I'll fill in the details around if they’re an ethnically contrasting voice. I hope this process will keep wider issues surrounding race high up in my consciousness in the years ahead. Wishing to be better is great but finding new habits and processes to support that change can help make those wishes real and lasting.
  &lt;/p&gt;

&lt;h3&gt;Enjoying the process&lt;/h3&gt;
&lt;p&gt;
 My favourite books that I've read over the past years have come from authors all across the ethnic spectrum (as have the books I've not liked!). I've loved the range of books although it's hard to describe the connection you get with some of the best books. The ones I engage and get enthralled with the most are often the toughest. Fiction can be exciting, fun, enthralling and still teach you about the world.  You can learn and be wiser whilst still enjoying the process at the same time - it doesn't have to be a chore. There's always a contrasting book that can change your spirits if things get too real or tough.
&lt;/p&gt;
&lt;h3&gt;The future&lt;/h3&gt;
&lt;p&gt;
What's the right number of BAME authored books to read? In the UK roughly 15% of the population is BAME whilst in Hackney (where I live and work) it's around 50%. I am aiming to read at least 25% a year. The other 75% isn't just white British and American men. It's a mix of all genders from across Europe, South America and beyond. Let's see how I do - so far only three of the last ten years hit that target.
&lt;/p&gt;

&lt;p&gt;
  Within a diverse set of voices there can be common themes. Books by James Baldwin, Toni Morrison, Jame Douglass and Ta-Nehisi Coates all tell very familiar and overlapping stories. The repetition and reinforcement is powerful but I also feel that I now have lots of knowledge of the story of slavery in America but am blind to the story of race in the UK.

&lt;p&gt;
I'm conscious that getting to the end of the year and having a bunch of nice stats to show off is just a starting point - numbers can only reflect a small part of reality - it's up to me to look beyond the numbers and find the right mix of voices and stories.
&lt;/p&gt;
&lt;h3&gt;Travelling mind and body&lt;/h3&gt;
&lt;p&gt;
 The range of authors has also expanded the more I've travelled. When visiting new countries I try to read books set in, or written by authors from those countries. Trips to countries including Pakistan, Vietnam and Japan have helped expand both my mind and view on the world. I've enjoyed the books and got more out of my travels. If the future holds less travel then I hope my mind can still visit new places.
&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
  Unsurprisingly, as a white man living in a systemically racist country my reading habits weren't balanced. The good news is that thinking about any sort of inequality (in this case gender) helped me be more conscious about all forms of inequality. While focusing on reading female authors I've also focussed on reading and listening to ethnically contrasting voices. Now by also tracking and thinking about the race of the authors I read will help keep my reading habits broad. The aim is also to keep these issues front of mind. It's up to me to take that and ensure I also address other aspects of my life - how I interact with the world and those around me open my eyes to inequality and the differences of the lived experiences of others.
&lt;/p&gt;
&lt;h3&gt;Thanks&lt;/h3&gt;
&lt;p&gt;I get my book recommendations from a wide range of sources. A big thank you to friends who've recommended books, Niljana Roy for her excellent newspaper column and &lt;a href="https://pagesofhackney.co.uk/"&gt;Pages bookshop&lt;/a&gt; in Hackney who regularly promote and celebrate a wide breadth of authors, supply me the majority of my books and are always free for a good chat!
&lt;/p&gt;
&lt;p&gt;Thank you to Candice who works with me, proof read this and has been lending me books - I've loved getting to know Trinidad through the literature she has lent me - thank you!
&lt;/p&gt;
&lt;p&gt;
  Finally the biggest thanks to &lt;a href="https://iamharoon.co/"&gt;Haroon&lt;/a&gt;. We met a number of years ago at a running club and I have been following him on social media ever since.  He has a blog, writes poetry and also uses his platform to talk about many topics including racial inequality.  He was a huge help as a proof reader in both improving my writing and also helping me analyse and interrogate some of the ideas in the earlier drafts of this post. Thank you.
  &lt;p&gt;
    &lt;h3&gt;Appendix&lt;/h3&gt;
    &lt;p&gt;
      If you're interested you can see the previous drafts for this post - see the &lt;a href="https://github.com/mikemjharris/blog/pull/10/commits"&gt;commit history&lt;/a&gt; on github. You can also have an idea of the time and process that I take when writing a post.
    &lt;/p&gt;
</description>
    </item>
    <item>
      <title>All the yoga with All Yoga</title>
      <link>https://blog.mikemjharris.com/posts/all-yoga</link>
      <pubDate>9 Jun 2020</pubDate>
      <guid>all-yoga</guid>
      <description>&lt;!-- meta-data title: All the yoga with All Yoga--&gt;
&lt;!-- meta-data searchtitle:  all-yoga --&gt;
&lt;!-- meta-data date: 9 June 2020 --&gt;
&lt;!-- meta-data intro: 200h yoga teacher training in Bali --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage:  https://blog.mikemjharris.com/images/yoga_4.jpg --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  In January 2020 I spent a month in Bali attending a 200h yoga teacher training course with &lt;a href="https://www.allyogatraining.com/"&gt;All Yoga&lt;/a&gt;. It was a fantastic, magical time. This blog post is mainly a memento for me.  Perhaps other aspiring students will find it useful if they are looking into further training.
  &lt;p&gt;
&lt;p&gt;
  Here's a pic of the wonderful people I got to spend a month with on a remote island - but what was my history with yoga, how did I choose this course and how was my month in paradise?
&lt;/p&gt;

&lt;img src="/images/yoga_2.jpg" alt="The yoga crew on the beach" /&gt;

&lt;h3&gt;My Yoga History&lt;/h3&gt;
&lt;p&gt;
  I first tried yoga back in 2007: I had time on my hands after losing my job and was frustrated with numerous running injuries. Since then it's been part of my life - sometimes a joy to do, sometimes a chore.  There have been many benefits including allowing me to run freely again. Generally I've practiced in a studio, as part of a group and led by a teacher - I've also mainly focussed on the physical side.
&lt;/p&gt;
&lt;p&gt;
  Some of the many reasons for taking on a teacher training course included wanting to be stronger and more flexible, being able to put together and practice my own session and to get more of an understanding of the history and more spiritual parts of yoga.
&lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/images/yoga_6.jpg" alt="" /&gt;
  &lt;figcaption&gt;Playing around in the evening after a full day of teacher training&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Choosing a yoga teacher training &lt;/h3&gt;
&lt;p&gt;
  Doing a teacher training has been on my mind for a while - I almost did one between jobs in 2016 but lacking time for a full course I spent a week or two in Chiang Mai, Thailand attending a few sessions. The atmosphere was amazing and the jungle was great but I love the sea and felt that was missing.
&lt;/p&gt;
&lt;p&gt;
  My yoga teachers in London were great in suggesting a number of places with one of my &lt;a href="https://www.lilawhiting.com/"&gt;favourite teachers&lt;/a&gt;suggesting Radiantly Alive in Ubud, Bali.
&lt;/p&gt;
&lt;p&gt;
  In the end I was quite restricted in terms of dates - I had negotiated the whole of January off between jobs . After extensive googling I found out about All Yoga. &lt;a href="https://www.global-gallivanting.com/my-experience-at-all-yoga-teacher-training-in-bali/"&gt;This blog post by a previous attendee&lt;/a&gt; was incredibly helpful - Anna is an excellent writer and that post is pretty much identical to my experience! It sounded great, I got the sea, an amazing location and the dates fitted perfectly.
&lt;/p&gt;
&lt;h3&gt;Instagram Spying&lt;/h3&gt;
&lt;p&gt;
  All Yoga is very active on &lt;a href="https://www.instagram.com/allyogatraining/"&gt;Instagram&lt;/a&gt; and I started following them plus some of the teachers and students. Turns out most of my future classmates were doing the same.  You're never 100% sure what you are getting when you sign up to something but being able to remotely be part of another classes journey showed the reality of the course - exhilarating, life changing but hard work!
&lt;/p&gt;

&lt;h3&gt;Ten Days in Ubud&lt;/h3&gt;
  &lt;p&gt;
    At the end of 2019 I finished my previous job, enjoyed Christmas at home then headed to Ubud to meet up with a couple of friends. There were ten days before the training started and this allowed me to see in the New Year, get over jet lag and explore the yoga options.
  &lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/yoga_barn.jpg" alt="yoga" /&gt;
  &lt;figcaption&gt;Yoga barn in Ubud&lt;/figcaption&gt;
&lt;/figure&gt;
  &lt;p&gt;
    Ten years previously I'd visited Ubud and since then it has got much bigger and more crowded.  I attended a couple of sessions at Radiantly Alive which were brilliant but I was glad I wasn't staying in town for the month. The best class was a morning Kundalini class at Yoga Barn - my friend Elena persuaded me to join and it was my first full on chanting experience.
  &lt;/p&gt;
  &lt;p&gt;
    The time in Ubud was great preparation for the 200h training - I acclimatised to the heat and diet as well as finding my yoga feet. Happy and bronzed I was ready for the next step - a boat out to the remote island of Nusa Lembongan off the East coast of Bali.
  &lt;/p&gt;

  &lt;h3&gt;YTT on Nusa Lembongan&lt;/h3&gt;
  &lt;p&gt;
    Arriving on the beach was quite surreal:  there was the yoga shala just as I'd seen in Anna's blog and in hundred's of Instagram posts! Almost directly behind it was the wonderful homestay that would be my base for the month.
  &lt;/p&gt;
  &lt;p&gt;
    The next day we arrived at the shala and started to get to know each other.  There was an initial yoga session, marking our mats and a bunch of games to help us learn each others names and backgrounds.  In total we were about 20 people - I was one of the oldest and the only man. I was made to feel super welcome especially by the teachers who came over and told me that they were so grateful that I was there as they found some masculine presence helped balance the energy of the group.
  &lt;/p&gt;
&lt;figure&gt;
  &lt;img src="/images/yoga_7.jpg" alt="yoga" /&gt;
  &lt;figcaption&gt;View of the volcano along the beach from the shala&lt;/figcaption&gt;
&lt;/figure&gt;

  &lt;p&gt; We settled into our rhythm - 7.30am start then 90 mins of learning meditation, breathing and cleansing rituals.  Following that a mega two (!!) hour yoga practice followed by a couple of hours for lunch.  The afternoon would kick off with a two hour lecture on all aspects of yoga.  A short break with snacks on the beach followed by a one hour workshop and then a final one hour yoga session.
  &lt;/p&gt;
  &lt;p&gt;
    We kept to this schedule with small tweaks and changes throughout the course with only one day off a week.  I'd had visions of having lots of time to read, contemplate life and explore.  In reality when we finished up for the day we were exhausted.  There was the opportunity for further practice - but after a few attempts at some trickier poses the sea beckoned.  A quick dip, take part in a few Instagram photo shoots, shower, then out for dinner with the group before collapsing into bed.
  &lt;/p&gt;

  &lt;h3&gt;The Eight Limbs of Yoga&lt;/h3&gt;
  &lt;p&gt;
   In London I'm so used to mainly focussing on yoga poses but this course covered all the eight limbs of yoga. These range from guidelines on how you interact with others, how to live a good life, cleansing practices, meditation as well as the physical asanas. Lots of this was new to me and I tried to keep an open mind to all these new elements.  So much to take in but plenty of fun including belly rolling, buzzing like bees and taking wild stabs at pronouncing Sanskrit. There were also contemplative and serious moments including a very powerful 24h of silence.
  &lt;/p&gt;
  &lt;p&gt;
    This is an Ashtanga course which focuses on a set routine which is practiced in the same way all round the world. We also got to experience a whole range of different types of yoga from powerful rocket yoga through to blissful yin yoga.
  &lt;/p&gt;
  &lt;p&gt;There were also sessions ranging from learning about anatomy through to how to teach classes, setup your own studio and protecting your physical and mental well being.
  &lt;/p&gt;

&lt;figure&gt;
  &lt;img src="/images/yoga_1.jpg" alt="yoga" /&gt;
  &lt;figcaption&gt;Breathing exercises&lt;/figcaption&gt;
&lt;/figure&gt;

  &lt;p&gt;
  A highlight for me was the week we had afternoon lectures from a philosophy teacher.  Dr Ganesh  was a mesmerising presence and brought with him a lifetime of experience as well as an interesting history, including being a professional Indian footballer.  He took us through the history and philosophy of yoga and discussed in more detail the cleansing rituals and mediations we'd been practicing.  This was all new to me and absolutely fascinating.
  &lt;/p&gt;
&lt;h3&gt;Challenges&lt;/h3&gt;
  &lt;p&gt;
    So far it all sounds so amazing but there were challenging parts.  The physical practice is tough and you had to know when to back off and not push through pain or sore muscles - there were some injuries. You expect to be more flexible but that takes time and often muscles would be tighter than at the start of the month! There were no seats - sitting on the floor takes some getting used to. It was hot and sweaty. The food was great but Bali belly affected some.  It's a remote island which meant lots of insects, animals and jelly fish. &lt;/p&gt;
  &lt;p&gt;
    It was also challenging approaching new topics or dealing with past issues.  The course surfaced lots of emotions and feelings - challenging but also rewarding.&lt;/p&gt;
  &lt;/p&gt;
&lt;h3&gt;Teachers&lt;/h3&gt;
&lt;p&gt;
  The course was incredibly well run. A huge thank you to the wonderful teachers who managed to combined humour, grace and knowledge to help us all progress as well as have fun along the way.  &lt;a href="https://www.instagram.com/marcelayogini/"&gt;Marcela&lt;/a&gt; filled the shala with her elegance, flowing limbs and authority. &lt;a href="https://www.instagram.com/liveyogini/"&gt;Camilla&lt;/a&gt; was a beautiful, joyful angel with the most amazing experiences who was happy maneuver me into a bridge with as many props as possible. My birthday buddy &lt;a href="https://www.instagram.com/khlolxx/"&gt;Kholisma&lt;/a&gt; was a wonderful model, amazing teacher and blessed with a beautiful voice. Her singing accompanied by Joel's guitar playing was stunning. Finally &lt;a href="https://www.instagram.com/joeltrom/"&gt;Joel&lt;/a&gt; - was so good for me to have another yang energy in the group who also had broad shoulders and tight hips - he was an inspiration and I'm still jealous of his glistening abs. Thank you teachers and the whole All Yoga crew for a fun, challenging and rewarding course.
&lt;/p&gt;

&lt;figure&gt;
  &lt;figcaption&gt;My lovely teachers.  Me and my golden oldies crew (plus one young one)&lt;/figcaption&gt;
  &lt;div class="half"&gt;
    &lt;img src="/images/yoga_3.jpg" alt="yoga" /&gt;
    &lt;img src="/images/yoga_5.jpg" alt="yoga" /&gt;
  &lt;/div&gt;
&lt;/figure&gt;
&lt;h3&gt;Students&lt;/h3&gt;
&lt;p&gt;
  The group was amazing - we formed a fantastic bond during hours of sweating, bending, overcoming physical and mental blocks, eating together, swimming, chatting and sharing our space, our lives and our thoughts. Everyone was an inspiration and joy to be around: the morning belly wiggling; catching an eye across the room and giggling; those who flew into handstands, or twisted them selves in knots; the dancers, ice  skaters, fitness instructors, pole dancers, those who drove desks and those who were in between things; the golden oldies; the wise thoughts and book recommendations; the ridiculous lion's breath; stunning Instagram poses; walking in silence and looking at the stars on the beach; late night swims; the challenges people had overcome to be there and the challenges and new experiences they conquered; those traveling outside their country for the first time; public speaking; better sleeping; the switching from fear and worry to glowing joy, the increased self belief. &lt;/p&gt;
&lt;p&gt;
  Thank you to everyone for making me feel so happy and welcome.
&lt;/p&gt;
&lt;/p&gt;

&lt;h3&gt;Everything Else&lt;/h3&gt;
&lt;p&gt;
  Energy ebbed and flowed, the group found it's rhythm.  We had amazing lunches out on the beach. One day off a week to either laze around or jump on mopeds and explore the island.  We made friends with the people running the restaurants, played with kids on the beach but only found the luxury ice cream place near the end of our stay.  We had one on one sessions with the teachers to get the most of our time.  Afternoon tea break was a welcome pause in the days proceedings - the best breaks were when we had freshly made pancakes.  There was the graduation party, the graduation ceremony, 108 sun salutations and sitting in a big sweaty hug chanting OM. &lt;/p&gt;

&lt;p&gt;
  So many experiences well out of my comfort zone, so different from every day life and such wonderful moments.  My hope was to carry some of that fantasy world back to normal life.  Because the rest of 2020 was set to be just normal right...&lt;/p&gt;
&lt;/p&gt;


&lt;figure&gt;
  &lt;img src="/images/yoga_4.jpg" alt="yoga" /&gt;
  &lt;figcaption&gt;Graduation&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;Post Course&lt;/h3&gt;
&lt;p&gt;
  Back to London with stronger arms, tight legs, bronzed skin and a more spiritual outlook and into a new job.  After a week or two I went to a yoga class - the first one was all over the place - where was my shala, my crew, my teachers?  But soon was back in the flow - my body was leaner, stronger, fitter.  I could focus more. Work was going well, my yoga was great. We had a close small group of Europeans from the course who had got on fantastically well and were planning on meeting up. I wasn't planning on teaching as the course was mainly to improve my practice and knowledge - but my friend Elena (who I was in Ubud with) persuaded me to teach yoga on her &lt;a href="https://jelenabubon.com/"&gt;fitness retreat&lt;/a&gt;. And then corona virus.
&lt;/p&gt;
&lt;p&gt;
  The virus has hit everyone. The retreat I was going to teach got cancelled. Yoga has been a big help and have been able to self practice during lock down.  It's been great connecting with our group on Instagram or messaging for support.&lt;/p&gt;
&lt;p&gt;
It's been tougher for our small group that formed a close connection - our plans to meet up and cement our relationship in the real world were cancelled. We'd been messaging a lot when first back but the virus put us all under stress - we were all dealing with personal situations and the different phases of lock down. I can't wait for this to be over and for us to reconnect properly - I think the intensity of how we bonded has weirdly made it even harder to connect now as there is so much pressure. &lt;/p&gt;
&lt;p&gt;Such special bonds forged in a fantasy world in January and I hope we can overcome the obstacles and the harsh world reality 2020 has thrown at us and meet up.&lt;/p&gt;
&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;
  It was a brilliant month in Bali. I got everything I wanted out of it - stronger, slightly more flexible, happier.  I was open to learning more about the spiritual side and it surprised me how much I enjoyed and engaged with that aspect of yoga practice. The teachers made the whole experience special and they have given me a solid base for my own practice and the confidence and skills to go out and teach.&lt;/p&gt;
&lt;p&gt;I want to say than you to All Yoga, my teachers and to all my fellow classmates who made that month so special.  Love seeing you all online and hope to meet some of you soon.  Such stunning memories and experiences. Namaste.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Star Wars Twitter Timeline</title>
      <link>https://blog.mikemjharris.com/posts/star-wars-twitter-timeline</link>
      <pubDate>3 May 2020</pubDate>
      <guid>star-wars-twitter-timeline</guid>
      <description>&lt;!-- meta-data title: Star Wars Twitter Timeline --&gt;
&lt;!-- meta-data searchtitle:  star-wars-twitter-timeline --&gt;
&lt;!-- meta-data date: 03 May 2020 --&gt;
&lt;!-- meta-data intro: Updating an old project and videoing myself in the process --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/starwars-timeline-video-pic.png  --&gt;
&lt;!-- meta-data twittercard: player --&gt;
&lt;!-- meta-data twitterplayer: https://www.youtube.com/embed/5Tw7AbWcONU --&gt;

&lt;p&gt;
  My favourite &lt;a href="https://star-wars-timeline.mikemjharris.com/"&gt;side project&lt;/a&gt; is one I built about six years ago as part of a hackathon at the end of the intensive coding bootcamp that I did at General Assembly. It takes your twitter timeline and displays it as the opening credits for Star Wars (&lt;a href="https://star-wars-timeline.mikemjharris.com/starwars_twitter/mikemjharris"&gt;here's a link to my transformed timeline&lt;/a&gt;). I decided to film myself as I added social media preview tags to the project and along the way reminded me how it works and upgrading all the outdated dependencies.
&lt;/p&gt;
&lt;div class="videoWrapper"&gt;
&lt;img src="/images/starwars-timeline-video-pic.png" /&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/5Tw7AbWcONU?start=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h3&gt;Videoing my coding&lt;/h3&gt;
&lt;p&gt;
  Why video my code? Lots of reasons - both for my own benefit and others. I wanted to observe how I coded , wanted to see if I could talk, type and think at the same time with the pressure of being recorded. I've learnt a huge amount from pairing and sharing tips with people I've worked and wanted to pass on some of what I've picked up. Hopefully someone finds it useful although I'm sure some will just be upset that I work in a different way to them!
&lt;/p&gt;

&lt;h3&gt;Aim of the project&lt;/h3&gt;
&lt;p&gt;
  The project hadn't been touched for about five years.  I wanted to add in meta data to allow a nice twitter preview when you shared the project. I wrote about that area in more detail in &lt;a href="https://blog.mikemjharris.com/posts/twitter-card"&gt;this post&lt;/a&gt; when I added similar functionality to this blog.
&lt;/p&gt;
&lt;p&gt;
   As well as updating the functionality I decided to upgrade dependencies - the project is old and lives on my server as a docker image built five years ago so wasn't even sure I'd be able to rebuild it in it's current state.
&lt;/p&gt;

&lt;h3&gt;One take - with some preparation&lt;/h3&gt;
&lt;p&gt;
  This was a project fitted around life and work so I didn't want to spend ages trying to get the perfect take.  I'd had a play around with the project so had a rough idea of what I wanted to do and had also researched and played around with &lt;a href="https://obsproject.com/"&gt;OBS screen recording software&lt;/a&gt; and &lt;a href="https://github.com/wavexx/screenkey"&gt;screenkey&lt;/a&gt; which shows key typed on the screen. During my daily runs, where I usually do most of my thinking, I rehearsed the things I wanted to share and talk about.
&lt;/p&gt;
&lt;p&gt;
  About ten days after my initial play around I decided to go for it - was a Friday after work and sat down and took everything in one take.  Worked out really well - as you'd expect there's a few mistakes, the odd mumbled word or unfinished thought but overall I felt it was fairly clear to follow along.  It took about an hour which I appreciate is quite long for a video - I think If I do this again I'd break out some of the tips I wanted to share into small pieces.
&lt;/p&gt;
&lt;h3&gt;Keyboard&lt;/h3&gt;
&lt;p&gt;
  The way I interact with the computer has evolved over the past few years.  Now pretty much everything is terminal based with little to no mouse usage and similar movement and instruction commands everywhere (in the video I believe I only touch my mouse twice).  I love the way my environment is setup - the smoothness and speed with which I can interact with programs and applications has a bigger impact on the amount of focus I can put into coding than my external environment.  There's a buzz and a brain spark when things just work especially when you've put the time and effort into analysing and improving the methods, tools and config you use.&lt;/p&gt;
&lt;p&gt;Two years ago I wrote about my setup in &lt;a href="https://blog.mikemjharris.com/posts/me-and-my-keyboard"&gt;this post&lt;/a&gt; and how much I enjoyed it - as with progress in most areas I look back and think about how clunky and inefficient some of that setup was.  I hope to look back at this post with a similar amount of cringing in a few years time!
&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
  For my first videod coding experience it went well - felt similar to pairing and my fingers definitely were a bit fatter than when coding normally.  Vocalising my thought process was good but quite tiring - was pretty wiped out at the end. I built the things I wanted, felt I shared some information that was useful and overall enjoyed the experience.  Would love to have any thoughts or feedback.
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>Instagram Twitter Preview</title>
      <link>https://blog.mikemjharris.com/posts/instagram-twitter-preview</link>
      <pubDate>25 Apr 2020</pubDate>
      <guid>instagram-twitter-preview</guid>
      <description>&lt;!-- meta-data title: Instagram Twitter Preview --&gt;
&lt;!-- meta-data searchtitle:  instagram-twitter-preview --&gt;
&lt;!-- meta-data date: 25 April 2020 --&gt;
&lt;!-- meta-data intro: Website I built to allow a preview of Instagram pictures on twitter --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/insta-share-twitter-preview.png  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;&lt;b&gt;Edit:  Since this post instagram have updated security and the ability for remote servers to scrape data (perfectly reasonably!) so this post is now outdated and doesn't work.  It was fun to build but probably needs redoing using the proper API)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
  I've occasionally wanted to share an Instagram link on twitter and it looks all sad and dull being just a link and no image or description. I built &lt;a href="https://instagram.mikemjharris.com"&gt;this website&lt;/a&gt; which takes a standard Instagram link and provides a link you can share in twitter with a full preview.  No logging in or authentication, just a copy, paste, copy, paste.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Sad Instagram share with no preview&lt;/figcaption&gt;
  &lt;img src="/images/insta-share.png" alt="Instagram link shared to twitter" /&gt;
&lt;/figure&gt;
&lt;h3&gt;Twitter Cards&lt;/h3&gt;
&lt;p&gt;
  In a &lt;a href="https://blog.mikemjharris.com/posts/twitter-card"&gt;previous post&lt;/a&gt; I wrote about how I added the relevant meta data to this blog so that you can see a nice preview image when you share a post on twitter. Check that our for more info on twitter preview data.
&lt;/p&gt;
&lt;h3&gt;Open Graph Tags&lt;/h3&gt;
&lt;p&gt;
  Instagram posts have open tag data - this is very similar to twitter cards and means that when you share the post to Facebook or anything that uses the open graph protocol you can see a preview image and description.
&lt;/p&gt;
&lt;h3&gt;Proxy server&lt;/h3&gt;
&lt;p&gt;
  To make the open graph data available in the same format as twitter cards I setup a proxy server.  When the twitter bot requests the page from my server it gets the meta data including the links to the image on Instagram and the description.  When a user clicks on the link on twitter it takes them direct to the Instagram page.
&lt;/p&gt;
&lt;p&gt;

&lt;figure&gt;
  &lt;figcaption&gt;This pic is the same link I've shared in the first pic but via the proxy server. What a lovely preview!&lt;/figcaption&gt;
&lt;img src="/images/insta-share-twitter.png" alt="Instagram Share link shared to twitter" /&gt;
&lt;/figure&gt;
&lt;h3&gt;How to use it&lt;/h3&gt;
&lt;p&gt;
  Go to the &lt;a href="https://instagram.mikemjharris.com"&gt;Instagram twitter preview site&lt;/a&gt; to check it out. &lt;/p&gt;
&lt;p&gt;You copy a post from Instagram:  click the three dots to the top right of a post and select copy link or if you are on the web open an image and copy the URL. Paste that link in the box, click the button and it converts it to shareable URL.  What it does is convert a URL that looks like &lt;a href="https://www.instagram.com/p/B_XtJ0cnOM0/"&gt;https://www.instagram.com/p/B_XtJ0cnOM0/&lt;/a&gt; to &lt;a href="https://instagram.mikemjharris.com/p/B_XtJ0cnOM0/"&gt;https://instagram.mikemjharris.com/p/B_XtJ0cnOM0/&lt;/a&gt; (which if you click on the link takes you back to Instagram).
&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
You can take a look at the code &lt;a href="https://github.com/mikemjharris/insta-preview"&gt;here&lt;/a&gt;. It's a bit of fun so imagine will break some situations but it works well enough that I can share any public post from Instagram on twitter. I know you can post to both accounts at once but sometimes I want to share a pic from a previous post of from someone else.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Five Years Blogging</title>
      <link>https://blog.mikemjharris.com/posts/five-years-blogging</link>
      <pubDate>29 Mar 2020</pubDate>
      <guid>five-years-blogging</guid>
      <description>&lt;!-- meta-data title: Five Years Blogging --&gt;
&lt;!-- meta-data searchtitle: five-years-blogging  --&gt;
&lt;!-- meta-data date: 29 Mar 2020 --&gt;
&lt;!-- meta-data intro: A reflection on how this blog project has progressed --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;

&lt;p&gt;
  Five years ago I published the first post in this blog. Since then I've worked at four companies and been involved in multiple code bases.  This project has been a constant throughout - not just as a place to write words but as my own site to maintain and develop. This, my 46th post, is a reflection on what I've got out of the blog, how it has changed over the years and a look at some of the topics I've covered.
&lt;/p&gt;

&lt;h4&gt;Five years blogging&lt;/h4&gt;
&lt;p&gt;
  The first few posts back in 2015 were about &lt;a href="https://blog.mikemjharris.com/posts/why-blog"&gt;why I wanted to blog&lt;/a&gt; and the &lt;a href="https://blog.mikemjharris.com/posts/building-a-blog"&gt;setup of the project&lt;/a&gt;. I felt that blogging was a a good thing to do, that I could use it to inform others and also learn things myself. One of my main concerns was that, like many new blogs, it would fizzle out after one or two posts.  But here we are five years later!  Have I enjoyed writing?  Have I got anything from the project and would I do anything different?
&lt;/p&gt;

&lt;h4&gt;Having a blog has been a good thing&lt;/h4&gt;
&lt;p&gt;
  Writing and maintaining a blog takes time and effort but it has been a fantastic project and I have got so much out of it. It's been a great way to document and diarise some of the technical areas I've covered over the years helping me track my progression. I've used it to share my thoughts on career changes which helps me understand what I want out of a job. Thses posts have been useful to look back on when I've been considering my next move. This blog has also been a useful project when applying for a job as a portfolio piece. It's been a place to reference talks I've done and side projects I've built. It's been great to have a place where I can write, experiment and share thoughts.
&lt;/p&gt;
&lt;h4&gt;The Tech&lt;/h4&gt;
  &lt;p&gt;
    The structure of the blog is my own creation - it's built with a number of &lt;a href="https://blog.mikemjharris.com/posts/blog-recipe"&gt;packages and tools&lt;/a&gt; including node, express, handlebars and jQuery to provide an isomorphic server side rendered &lt;a href="https://blog.mikemjharris.com/posts/building-a-pwa"&gt;progressive web app&lt;/a&gt;. The deployment process is my own &lt;a href="https://blog.mikemjharris.com/posts/deploying-this-blog"&gt;CI/CD pipeline&lt;/a&gt;. It's been fun having my own project to maintain and update over the years. I'm the main user (and reader!) of the project and I get to enjoy building things for myself.  It doesn't matter too much if it breaks - it doesn't make any money, isn't essential to anyone so there is no pressure on me apart from the wish to keep it looking good and creating features that I want. &lt;/p&gt;

&lt;h4&gt;Tone of voice&lt;/h4&gt;
&lt;p&gt;
  There were lots of different visions of how the content of the  blog would turn out - ranging from a creative, grandiose, polymathic masterpiece through to a place for the odd note.  The first few posts I put much quite a lot of work into and the language was more creative and expressive.  When I turned to more technical pieces I found that that tone didn't fit so well and also took more energy to get right. Instead I focused on a more stripped down and clear voice - mainly trying hard to trim, cut and slim down whatever I wrote. More recently I've tried to add a bit more color to the way I write, especially for non tech related topics.

&lt;h4&gt;Content&lt;/h4&gt;
&lt;p&gt;
Most of the content has been tech related, even the &lt;a href="https://blog.mikemjharris.com/category"&gt;thought section&lt;/a&gt;. However posts have covered other areas including &lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist"&gt;my reading habits&lt;/a&gt;, &lt;a href="https://blog.mikemjharris.com/posts/2019-retro"&gt;end of year reviews&lt;/a&gt; and &lt;a href="https://blog.mikemjharris.com/posts/summer-of-architecture"&gt;art and architecture&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;How do I come up with topics?  Often I want to learn more about a piece of technology so I'll use it to build a side project or expand the blog and then write a post about it. Reflecting back on what I've built is both satisfying and a learning experience in itself.&lt;/p&gt;

&lt;p&gt;Away from tech, things such as career changes or end of year retros are obvious content choices.  Apart from that I enjoy reading and have found using the blog to reflect on what I read has had a positive influence on the books I consume.  An initial literary related post has spawned a number of others as well as a &lt;a href="https://blog.mikemjharris.com/posts/books-project-pt2"&gt;side project&lt;/a&gt;.
 &lt;/p&gt;

&lt;h4&gt;How I write&lt;/h4&gt;
&lt;p&gt;
    One of my hobbies is running and I usually average at least five hours a week out on my own jogging. That's a big chunk of time and I generally listen to music and let my mind wander. Five hours a week of uninterrupted time (apart from crossing roads and trying not to fall into canals) gives you lots of space to think.  During runs I digest stuff that's been happened personally or professionally, plan for 1-1s, dream of the future, try not to think about how tired my legs are and also draft blogs posts in my head.

&lt;p&gt;
  Out on the streets I can let my mind wander, think about a broad outline of a post, rewrite, rethink, restructure, redo. Over a few weeks I can slowly let an idea wash around in my head, percolate, prod it a few times, push it, shape it and gently work out what I want to say.  Then I usually sit down and write out out a few paragraphs just to have something on the page.  I'll usually leave it a few days, run around some more, come back to it and try and finish it off in one or two more sessions.
&lt;/p&gt;

&lt;p&gt;
  Trying to balance quality vs speed of delivery is always an interesting problem - I care that it's a decent piece but as the content isn't that important I prioritise delivery. Some pieces come easier, some harder.
&lt;/p&gt;

&lt;h4&gt;The Future&lt;/h4&gt;

&lt;p&gt;
  I've enjoyed writing, building and maintaining a blog. It's been fun and has helped me learn new things as well as providing me a place where I can write. It takes time and effort but with my current life situation writing a post roughly every month is fairly easy to fit in.&lt;/p&gt;
&lt;p&gt;
  Given the current self isolation with coronavirus I anticipate writing more posts - when we can travel and see friends and the world again I wont mind having a break from the screen and writing!
&lt;/p&gt;
&lt;p&gt;
  Let's see where we are in five years - I'm guessing getting close to 100 posts. Having said that I will only keep writing if I continue to enjoy it and can fit it in.
&lt;/p&gt;



</description>
    </item>
    <item>
      <title>2019 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2019-retro</link>
      <pubDate>31 Dec 2019</pubDate>
      <guid>2019-retro</guid>
      <description>&lt;!-- meta-data title: 2019 Retro --&gt;
&lt;!-- meta-data searchtitle: 2019-retro --&gt;
&lt;!-- meta-data date: 31 Dec 2019 --&gt;
&lt;!-- meta-data intro: A look back at the year that was 2019 --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;p&gt;
  How was my 2019?  Life is way more complex and wonderful than a set of five metrics but in tracking a few things I get a pretty good idea how my year has gone.
&lt;/p&gt;

&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Activity&lt;/th&gt;
      &lt;th&gt;2019&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        39
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
        2,472
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        50
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
        72
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        8
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
  Pretty good year overall - roughly same number of books read, loads more running and yoga but less swimming and fewer blog posts. More isn't always a good thing - that amount of jogging seems a bit obsessive - was it a healthy amount or was I running away from problems? Here's how I interpreted the numbers (with the advantage of knowing how life wrapped itself amongst these stats tempered by the fuzzy goggles of self awareness).
&lt;/p&gt;

&lt;h4&gt;Running more doesn't necessarily mean a good year of running&lt;/h4&gt;
&lt;p&gt;
  This year I ran 50% more than the previous year which was in itself a record year. The main reason was signing up to my first ever ultra (106km round the Isle of Wight) with a couple of friends. Training consisted of lots of low intensity sessions which I fitted in by mainly running a few more legs of the commute. The benefit of this was that my social life wasn't particularly impacted.
&lt;/p&gt;
&lt;p&gt;
   The ultra went really well and have loved the trail running community. Big thanks to my parents who still run themselves and come and support me at events. Ran two more 50k ultras as well as using the London marathon as part of my training and racing in the Hackney half with techrunners. Over the summer I reduced my commitment with Techrunners - being the main person responsible for organising the weekly runs is quite tough over a long time and I needed a breather. Thanks to those who've helped out with making sure the runs still happen.
&lt;/p&gt;
&lt;p&gt;
 Next year I have a shorter commute so expect to do less running. Main aim is to run a London qualifying time at the Milton Keynes Marathon and then fit in a few trail runs.
&lt;/p&gt;

&lt;figure&gt;
  &lt;figcaption&gt;Pic of running IOW with friends:&lt;/figcaption&gt;
  &lt;img alt="Pic of running IOW with friends" src="/images/iow-small.png" /&gt;
&lt;/figure&gt;
&lt;h4&gt;Swimming&lt;/h4&gt;
&lt;p&gt;
  No Swim Trek holiday this year which translated into the least amount of swimming for a few years.
 Did manage to complete the Looe island swim in Cornwall - was a special event for me as it's where my Grandma lives and where we played in the sea as kids. Next year planning on the same one and looking at some other longer distance events.
&lt;/p&gt;
&lt;h4&gt;Yoga&lt;/h4&gt;
&lt;p&gt;
  After experimenting with yoga self practice a previous year I'm back in the swing of classes - mainly at Hot Pod Yoga in Hackney. Made sure I had time to do the yoga to balance the extra running.
&lt;/p&gt;

&lt;p&gt;
  This January I have a month off and am going to be completing my 200 hour yoga teacher training in Bali.  Super excited as has been a goal of mine to do for a while now and luckily managed to organise time off between jobs to finally get to do it.  Expect next years yoga numbers to be through the roof!
&lt;/p&gt;

&lt;h4&gt;Book reading&lt;/h4&gt;
&lt;p&gt;
  Roughly the same number of books read as the previous year. Continued to ensure I read a balanced set of authors. This year number of books written by females was 26, males 12 and also (knowingly) read my first book by a non binary author. Highlights?  So many but probably Kintu, Mrs Palfrey and the Claremont, Pulp, Beloved, Winter, Half a Yellow Sun and An American Lyric. &lt;a href="https://books.mikemjharris.com"&gt;Here's the full list of books I read this year&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Blogging and side projects&lt;/h4&gt;
&lt;p&gt;
  Fewer blog posts this year and a few minor side projects including adding &lt;a href="posts/adding-an-rss-feed"&gt;features to this blog&lt;/a&gt;, finishing off the &lt;a href="posts/books-project-pt2"&gt;books project&lt;/a&gt;, setting up &lt;a href="https://blog.mikemjharris.com/posts/automated-lighthouse"&gt;automated lighthouse analysis&lt;/a&gt; and tidying up and adding all the &lt;a href="https://blog.mikemjharris.com/posts/infrastructure-update"&gt;infrastructure config&lt;/a&gt; around my personal projects to GitHub.
&lt;/p&gt;
&lt;h4&gt;The Art World&lt;/h4&gt;
&lt;p&gt;
  In last year's &lt;a href="posts/2018-retro"&gt;retro&lt;/a&gt; I outlined how working in the arts had a huge impact on me. This year has been even more pronounced as I've tried to make the most of the opportunities of working at the RA. I've visited a huge amount of exhibitions - the benefit of free entry (which an RA staff pass gives you) is that I don't feel obliged to stay in an exhibition I don't enjoy. For example looked around Van Gogh and Britain, didn't engage with it so decided to pop into Frank Bowling's exhibition instead. That was magnificent and one of my top exhibitions for the year. Others in that list would include the Antony Gormley at the RA and Lee Herring at Tate Liverpool.
&lt;/p&gt;
&lt;p&gt;
  If you're interested in pics both of exhibitions and behind the scenes checkout my &lt;a href="https://view-from-the-ra.mikemjharris.com/"&gt;View From The RA&lt;/a&gt; project.
&lt;/p&gt;
&lt;figure&gt;
  &lt;figcaption&gt;Frank Bowling - Tate Britain:&lt;/figcaption&gt;
  &lt;img style="max-width: 350px" alt="Pic of running IOW with friends" src="/images/frank-bowling-small.png" /&gt;
&lt;/figure&gt;
&lt;p&gt;
  The arts community has been fantastic - being supportive, friendly and welcoming whether at conferences, on twitter or at social events.  Met lots of people who helped introduce me to or took me along to cultural events - thank you everyone! Did quite a few theatre trips and favourite play of the year (and maybe the best play I've ever seen?!) was Fairview at the Young Vic.
&lt;/p&gt;
&lt;p&gt;
  Two years in the arts has been brilliant: I've developed professionally (learnt lots about managing and tech) but also personally - both in being immersed in art and the confidence it's given me to learn more, read more and experience new things. On the flip side I've helped deliver a big project for the RA on time and within budget, helped keep the day to day going and also really enjoyed helping my team progress and develop. &lt;/p&gt;
&lt;p&gt;Fortunately my new job at Wonderbly (creators of personalised children's books) will still be creatively based. Looking forward to having new influences and learning new things while still keep up the theatre and gallery trips!
&lt;/p&gt;
&lt;h4&gt;Other stuff - TV, Movies, podcasts and other recommendations&lt;/h4&gt;
&lt;p&gt;
  With all the above there isn't much time for other things.  Really enjoyed the three TV shows I watched this year: Fleabag, State of the Union and Have I Got News For You. Film wise enjoyed Pedro Almodovar's Pain and Glory and also the Elton John biopic. Each week I listen religiously to Saturday Review - it's been my arts companion for the last two years.
&lt;/p&gt;
&lt;h4&gt;Grateful&lt;/h4&gt;
&lt;p&gt;
  Have been very lucky that there have been no major life events this year, my health has been good as has that of those around me. Through a combination of hard work, privilege and luck am in a fairly settled state. It hasn't always been that way and am sure wont be in the future so am grateful for and enjoying the current situation. I do some mentoring and advice (mainly for people learning to code and career changing). For anyone looking for a mentor I'll have spare capacity from March onwards - feel free to drop me a message if you're interested to learn more about how that might work.

&lt;/p&gt;
&lt;h4&gt;Review&lt;/h4&gt;
&lt;p&gt;
  Overall an excellent year - there was a good balance between tech, exercise and art. There has been a lot of running but the amount feels healthy and hasn't dominated or negatively impacted other areas of my like. There's more than just these stats and am grateful for friends and family who I get to hang out with and share and discuss the more nitty gritty parts of life as well as have a good time! This balance has taken multiple years and lots of effort and will continue to be a work in progress as I, life and the world around change.
&lt;/p&gt;
&lt;h4&gt;Appendix - Resolutions&lt;/h4&gt;
&lt;p&gt;
  Generally I try not to set hard number targets for resolutions - prefer to set broad goals and reassess as time goes by (usually during all those runs!). Targets for next year will resolve around entering certain running/swimming  events, qualifying for London and completing my yoga teacher training. There are a few chunky books on my shelf I want to tackle so expect to read fewer books.
&lt;/p&gt;
&lt;p&gt;The big change and focus for the next year is starting a new job. Will miss the RA but very excited by the role at Wonderbly. There's an upfront mental cost when starting a new job so plan to not do any side projects or much blogging for the first part of the year until some of the new challenges become more routine. Interested to see how the new position and the change in routine  will impact other parts of my life.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Adding an RSS feed</title>
      <link>https://blog.mikemjharris.com/posts/adding-an-rss-feed</link>
      <pubDate>17 Nov 2019</pubDate>
      <guid>adding-an-rss-feed</guid>
      <description>&lt;!-- meta-data title: Adding an RSS feed --&gt;
&lt;!-- meta-data searchtitle: adding-an-rss-feed --&gt;
&lt;!-- meta-data date: 17 Nov 2019 --&gt;
&lt;!-- meta-data intro: Providing the content of my blog via a standard RSS feed --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/rss-xml.png --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  A number of people who I respect on twitter are quite vocal that blogs should have an RSS feed. I'm excited to announce, that as of this week, my blog too has an &lt;a href="https://blog.mikemjharris.com/rss.xm"&gt;RSS feed&lt;/a&gt;! But what is an RSS feed, why do I need one and how did I add it to this project?
&lt;/p&gt;
&lt;h4&gt;What is RSS?&lt;/h4&gt;
 &lt;p&gt;
   RSS allows users to have one central place to read all their favourite blogs. It stands for Really Simple Syndication and is a standard, XML based way of exposing your blog content so that it can be read in a third party RSS app.
 &lt;/p&gt;
 &lt;p&gt;
  The benefit for a blogger is there's more chance that someone will discover and then regularly read what you write.  One downside is that if you rely on advertising or care about data on how many people read your blog then providing all the content in the RSS feed means that users may not travel to your site.  Neither of these matter to me so more than happy to provide a feed.
 &lt;/p&gt;
 &lt;p&gt;
   These two twitter posts below (both Sara and Stu, among others, regularly post about RSS) show the demand is out there and what consumers are looking for. The threads/conversations on both tweets are also worth a read.
 &lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;If you have a blog: please provide an RSS feed if you can.&lt;br&gt;&lt;br&gt;If you provide an RSS feed: please provide the whole post to read (in the RSS reader) not just a short excerpt.&lt;br&gt;&lt;br&gt;If you write but don’t have a blog: please start one, provide an RSS feed, and keep sharing what you love!&lt;/p&gt;&amp;mdash; Sara Soueidan (@SaraSoueidan) &lt;a href="https://twitter.com/SaraSoueidan/status/1061577409340809216?ref_src=twsrc%5Etfw"&gt;November 11, 2018&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Hey, I love your personal blog … &lt;br&gt;&lt;br&gt;but &lt;br&gt;&lt;br&gt;I&amp;#39;d _really_ love it if you had RSS so I never miss an article (chances are I&amp;#39;ll click through to your site from my RSS reader)&lt;br&gt;&lt;br&gt;and &lt;br&gt;&lt;br&gt;I&amp;#39;d be ecstatic if I didn&amp;#39;t have to go into dev tools to find it&lt;/p&gt;&amp;mdash; Stu Robson is @DSLConf 🕶 (@StuRobson) &lt;a href="https://twitter.com/StuRobson/status/1152132017905111041?ref_src=twsrc%5Etfw"&gt;July 19, 2019&lt;/a&gt;&lt;/blockquote&gt;&lt;/script&gt;
&lt;h4&gt;Deciding on the features to add&lt;/h4&gt;
&lt;p&gt;
  These two tweets described what I needed to build pretty succinctly:  create an RSS feed, provide the whole post in the feed and make sure there is a link to the feed on my blog.
 &lt;/p&gt;

 &lt;h4&gt;Adding an RSS feed&lt;/h4&gt;
 &lt;p&gt;
   Most blogging platforms either have RSS feed capability built in or available as a plugin.  My blog is a beautiful handcrafted piece of code (or cobbled together bunch of JS libraries depending on your outlook) and as such adding an RSS feed was a manual process.  Fortunately I already provide a list of all the posts in the blog as JSON. Creating an RSS feed meant mapping those fields to the required ones (I took Sara's feed as a blueprint), adding in some header content and converting it to XML. For that process I used &lt;a href="https://www.npmjs.com/package/xml2js"&gt;XML2JS&lt;/a&gt;. I made sure the entire post was provided in the feed and there was a link to it in the main menu on my blog.
 &lt;/p&gt;
 &lt;p&gt;
   You can see the relevant piece of code &lt;a href="https://github.com/mikemjharris/blog/blob/49faff7947f729416b71f3e9436e0d7c1c630e77/server/routes/main.js#L60-L92"&gt;on GitHub&lt;/a&gt;, here's pic of the feed and you can also see the feed in action &lt;a href="https://blog.mikemjharris.com/rss.xml"&gt;here&lt;/a&gt;
 &lt;/p&gt;

&lt;img src="/images/rss-xml.png" alt="Screenshot of xml feed" /&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
   I find Twitter to be a very useful tool to discover how people are using various technologies.  The tweets above prompted me to add an RSS feed and they also outlined all the functionality I needed to include. Doing this has been on my to-do list for a while - mainly because I thought it was going to be a bigger piece of work. Turned out to be quicker and more straightforward than I'd anticipated.
&lt;/p&gt;
&lt;p&gt;
  Pleased to have got the functionality added. Would love to hear from you if you do subscribe to the feed and any feedback on how the posts appear in your reader would be appreciated.
&lt;/p&gt;
&lt;h4&gt;Update&lt;/h4&gt;
&lt;p&gt;
   After sharing this post on twitter I got some additional feedback - as suggested by Mario I've added in a link tag in the header of the document.
&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;That takes me back to when the internet was good :)&lt;br&gt;&lt;br&gt;BTW you may want to add autodiscovery, so feed readers can automatically find the RSS feed. Just add a link as described e.g. here &lt;a href="https://t.co/Q1yXLiF5JA"&gt;https://t.co/Q1yXLiF5JA&lt;/a&gt;&lt;/p&gt;&amp;mdash; マリオ (@mario) &lt;a href="https://twitter.com/mario/status/1196393525585358850?ref_src=twsrc%5Etfw"&gt;November 18, 2019&lt;/a&gt;&lt;/blockquote&gt;
</description>
    </item>
    <item>
      <title>Summer of Architecture</title>
      <link>https://blog.mikemjharris.com/posts/summer-of-architecture</link>
      <pubDate>9 Oct 2019</pubDate>
      <guid>summer-of-architecture</guid>
      <description>&lt;!-- meta-data title: Summer of Architecture --&gt;
&lt;!-- meta-data searchtitle:  summer-of-architecture --&gt;
&lt;!-- meta-data date: 09 October 2019 --&gt;
&lt;!-- meta-data intro: From Bauhaus to Robie House --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/flw_robie_house_small.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Sometimes by design, or chance, or some beautiful combination of both, a topic threads itself through various parts of your life for a short period of time.  This summer it was architecture - through a work trip to Chicago and a holiday to Germany I got to experience some iconic buildings on two continents often with similar themes or indeed the same architect.
&lt;/p&gt;

&lt;h3&gt;Skyscrapers of Chicago&lt;/h3&gt;
&lt;p&gt;
  The windy city is where the first skyscrapers was built and is renown for it's architecture and architects.  When I asked on twitter for recommendations the &lt;a href="http://www.architecture.org/" &gt;Chicago Architecture Centre&lt;/a&gt; came up regularly mainly because it's a top attraction but also because they are a client of Tessitura (an arts ticketing and CRM system) who were organising the conference we had travelled for.
&lt;/p&gt;
&lt;img src="/images/chicago_skyline_small.jpg" alt="Chicago city skyline" /&gt;
&lt;p&gt;
  Whilst the visit to Chicago was work based we were lucky to have a few days before and after the conference to explore. Took the river boat tour organised by the Chicago Architecture Centre through the city where you can see a whole range buildings and skyscrapers. The city was altered dramatically by the great fire of 1871. Impressive feats of engineering followed such as reversing the flow of the river and also the amazing forward planning of  Daniel Burnham.
&lt;/p&gt;

&lt;p&gt;
  The Architecture Centre is housed in an impressive Mies Van der Rohe skyscraper.  Mies' career started in Germany where he was famously director of the Bauhaus in the early 30s - which leads me on to my second trip of the summer.
&lt;/p&gt;
&lt;h3&gt;100 years of Bauhaus&lt;/h3&gt;
&lt;p&gt;
  This year was the celebration of 100 years since the creation of the Bauhaus.  There are a number of exhibitions, refurbished houses and events happening throughout Germany to mark the anniversary and I decided to spend some of my summer holiday traveling through the key areas. This included visiting Weimar to visit a &lt;a href="https://www.klassik-stiftung.de/en/bauhaus-museum-weimar/"&gt;new museum&lt;/a&gt;, eating at the &lt;a href="https://www.bauhaus-dessau.de/en/architecture/bauhaus-buildings-in-dessau/kornhaus.html"&gt;Kornhaus restaurant&lt;/a&gt; and visiting the &lt;a href="https://www.bauhaus-dessau.de/en/architecture/bauhaus-buildings-in-dessau/masters-houses.html"&gt;Masters' houses&lt;/a&gt; - made famous by Lucia Moholy's photos. The highlight was staying in one of the student rooms in the refurbished Bauhaus building in Dessau.
&lt;/p&gt;

&lt;img src="/images/bauhaus_dessau_small.jpg" alt="Bauhaus dessau" /&gt;
&lt;p&gt;
This iconic building was built to Bauhaus designs when the school move from Weimar in the 1920s. The structure was even more impressive that I'd imagined with clean, clear lines everywhere, a beautiful flow to the layout and a sense of peace. The student rooms were fitted with furniture from the school and each had an iconic curved balcony.
&lt;/p&gt;

&lt;p&gt;
Away from the Bauhaus there was so much more architecture - from the stunning rebuilding of Dresden through to the more classical buildings in Weimar.  One house that was unexpectedly impressive - the &lt;a href="https://www.klassik-stiftung.de/en/haus-hohe-pappeln/" &gt;Haus Hohe Pappeln&lt;/a&gt; in Weimar.  This was build in 1907 and was a complete work of art which the architect, Van de Velde, designed from the inside out with an eye to function.  He also chose the colours and designed the interior decoration. The look and feel reminded me again of Chicago and the work of another famous architect...

&lt;h3&gt;Frank Lloyd Wright&lt;/h3&gt;

&lt;p&gt;
  In Chicago at the turn of the 19th Century Frank Lloyd Wright was starting to make a name for himself.  During our trip we took the chance to look round his house and studio and the world famous Robie house (see pic). Stunning.  Again there was the focus on design, function, how a person felt as they moved through the house, how the light worked and where children could play.
&lt;/p&gt;
&lt;img src="/images/flw_robie_house_small.jpg" alt="Frank Lloyd Wright's Robie House" /&gt;

&lt;h3&gt;Looking further&lt;/h3&gt;
  &lt;p&gt;
    Historical discriminations mean that major accomplishments are by often by white men - for example the ones referenced in this post. The world is changing and opportunities are open to a wider demographic. &lt;a href="http://www.architecture.org/news/historic-chicago/4-women-architects-in-chicago-history-you-should-know/" &gt;This article&lt;/a&gt; lists some of the key female Chicago architects. Also in the past women (and others) achievements weren't recognised.  &lt;a href="https://www.royalacademy.org.uk/event/lucia-moholy-nagy-and-the-image-of-architecture-photography-Talk" target="_blank"&gt;This talk&lt;/a&gt; at the RA was ncredibly interesting about the photos of Lucia Moholy and their impact on the Bauhaus story.
    &lt;/a&gt;

&lt;h3&gt;Summer of Architecture and beyond&lt;/h3&gt;

&lt;p&gt;
  This is a small taster of some of the sights of the summer. I learnt a whole lot about architecture, design and so much more - and it was so interesting to have many common threads weaving through both trips.  Happy to share thoughts and ideas and provide what tips where I can - just drop me a message.  See below for some books and articles that I found helpful.
&lt;/p&gt;
&lt;p&gt;
The more you learn the more you understand how much more there is to learn.  On the wishlist I want to visit Frank Lloyd Wright's &lt;a href="https://fallingwater.org"&gt;Falling Water&lt;/a&gt;, visit Tel Aviv again with an eye on the &lt;a href="https://www.dezeen.com/2016/08/24/10-tel-aviv-best-examples-bauhaus-residential-architecture/"&gt;Bauhaus designed buildings&lt;/a&gt; and also learn more about famous non white male architects.  Even on that front I'm lucky - getting to swim regularly in the swimming pool Zaha Hadid designed for the London Olympics.
&lt;/p&gt;
&lt;h3&gt;Appendix - Reading Material&lt;/h3&gt;
&lt;ul class="article"&gt;
  &lt;li&gt;&lt;a href="https://twitter.com/MillyBurroughs"&gt;Milly Burroughs&lt;/a&gt; article about &lt;a href="https://thespaces.com/where-to-experience-the-bauhaus-in-2019/"&gt;Where to experience the Bauhaus in 2019&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Article that went out in the RA magazine about &lt;a href="https://www.royalacademy.org.uk/article/travel-on-the-bauhaus-trail-anniversary-new-museum" &gt;Traveling the Bauhaus trail&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.waterstones.com/book/loving-frank/nancy-horan/9780340919446"&gt;Loving Frank&lt;/a&gt; : semi-fictional book based on Frank Lloyd Wright's second marriage&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.goodreads.com/book/show/7015291-the-bauhaus-group"&gt;Bauhaus Group&lt;/a&gt; : stories of six masters of the Bauhaus - including Mies Van der Rohe&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>TLCC Talks 2019</title>
      <link>https://blog.mikemjharris.com/posts/tlcc-talk-2019</link>
      <pubDate>2 Sept 2019</pubDate>
      <guid>tlcc-talk-2019</guid>
      <description>&lt;!-- meta-data title: TLCC Talks 2019 --&gt;
&lt;!-- meta-data searchtitle: tlcc-talk-2019 --&gt;
&lt;!-- meta-data date: 2 Sep 2019 --&gt;
&lt;!-- meta-data intro: Discussing the RA's ticketing website  at TLCC as part of a panel --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data tags: talk --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com//images/tlcc-panel.png  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  In August 2019 I was part of a panel at the Tessitura Community Community conference.  Here's a write up of the context, the preparation and the talk itself.
&lt;/p&gt;

&lt;h4&gt;Tessi... what?&lt;/h4&gt;
&lt;p&gt;
  For those not in the arts world &lt;a href="https://www.tessituranetwork.com/" target="_blank"&gt;Tessitura&lt;/a&gt; is a  "Unified system to run your arts and culture organization".  They have over 600 institutions all over the world using their system which manages everything from ticketing, CRM, finance, analytics and so much more. They are a not for profit and organise a large US based conference each year called Tessitura Learning and Community Conference (TLCC). This year was the biggest ever, with almost 2000 attendees. I'd had a proposal accepted and was set to be part of a presentation discussing the different ways organisations have adapted the Tessitura white label ticketing site. Our team has done a fantastic job iterating and improving our ticket purchase flow and this was a great forum to show off their hard work.
&lt;/p&gt;
&lt;h4&gt;Community&lt;/h4&gt;
&lt;p&gt;
  One of the best parts of Tessitura is getting to mix with a wide variety of other organisations. I was doing a ten minute slot in an hour talk alongside four others. The preparation for the presentation was mainly organised by community members. As a group we had our first online discussion at the end of May.  We outlined the topics we wanted to cover and how our session would work. We had a follow up run through at the start of July and sent in our presentations by mid July. A huge thanks to  Sydney Peloquin (Austin Theatre) Lilly Pipkin (Ballet Austin) and Luke McKenzie (Perot Museum) for helping corral, prod and generally make sure we had everything we needed and were on time! Here's a pic of the full panel line up:
&lt;/p&gt;

&lt;img src="/images/tlcc-panel.png" alt="Panelists for tlcc talk" /&gt;
&lt;h4&gt;Preparation&lt;/h4&gt;
&lt;p&gt;
  In a couple of previous posts (&lt;a href="https://blog.mikemjharris.com/posts/burlesque-presentation"&gt;burlesque presentation&lt;/a&gt; and &lt;a href="https://blog.mikemjharris.com/posts/tools-and-tips-for-presenting"&gt;tools and tips for presentation&lt;/a&gt;) I've discussed how I structure, prepare and deliver a talk.  Those posts are a few years old but I still broadly follow my own advice.
&lt;/p&gt;
&lt;p&gt;
Getting slides sorted far in front of the presentation was a big relief. However I often practice the talk as I build the slides - mentally I felt I was done so left practicing the talk quite late. Fortunately it's an area I've discussed extensively so was pretty comfortable with the message and the key points I wanted to make.
&lt;/p&gt;

&lt;h4&gt;On the day prep&lt;/h4&gt;

&lt;p&gt;The conference was four days and our talk was the first talk on the developer track after the main opening keynote.  Earlier in the day I'd made sure I'd found the room where we'd be presenting (the conference centre was huuuge) and stood on the stand so I could visualise how the talk would go. Then I could enjoy the keynote knowing I was all prepped. Post opening presentations I headed off promptly, met the other presenters in the flesh for the first time and made myself comfortable on my chair on stage.
&lt;/p&gt;
&lt;h4&gt;Talk&lt;/h4&gt;
&lt;p&gt;
  My talk was the second from last so I could sit back and enjoy the others talks.  We'd done a prep run through a few weeks earlier but a few things had changed and everyone was much more polished. Unfortunately the speakers couldn't see the screen showing the slides to the audience which made it a bit harder to follow along. Lost attention for some of the talks as I was familiar with the material and wanted to briefly go over the key parts for my section in my head.
&lt;/p&gt;
&lt;p&gt;
  Really enjoyed doing my part - always a bit tough presenting from someone else's computer but that went smoothly.  The room itself was quite short but very wide so had to make a big effort to try and talk to both sides to include everyone. Very happy with my delivery and pace - can always speak slower but overall I felt I spoke clearly and got all the main points across as I wanted.  Got the sense that at least a chunk of the audience were engaged and following along.
&lt;/p&gt;
&lt;h4&gt;Feedback&lt;/h4&gt;
&lt;p&gt;
  There was only a short time available for questions at the end and with a broad range of topics covered there wasn't anything focused on my section.  There were a few people who came up immediately after with a few thoughts. The benefits of a four day conference and talking at the beginning meant there was plenty more time to bump into people. Over the next few days got to have a bunch of interesting chats over some of the topics I'd discussed. Also got some good feedback on the talk and some tips.
&lt;/p&gt;

&lt;p&gt;You can view the slides from the presentation &lt;a href="https://blog.mikemjharris.com/assets/TLCC_28thJuly_InnovatingTnew_MikeHarris.pdf" target="_blank"&gt;here&lt;/a&gt;. Apologies they don't have any notes but the jist should still be clear.
&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  Really enjoyed the whole process - great to be part of a community driven talk prep.  Was the earliest I'd got my slides prepared for a talk ever.  Just need to remember next time, especially if it's a longer or trickier talk, that I need to still practice post handing in slides.  Mainly really happy to show off lots of the hard work the team has put in to building a fantastic ticketing site!
&lt;/p&gt;



</description>
    </item>
    <item>
      <title>Adding tags and talks</title>
      <link>https://blog.mikemjharris.com/posts/adding-tags-and-talks</link>
      <pubDate>21 Jul 2019</pubDate>
      <guid>adding-tags-and-talks</guid>
      <description>&lt;!-- meta-data title: Adding tags and talks --&gt;
&lt;!-- meta-data searchtitle: adding-tags-and-talks  --&gt;
&lt;!-- meta-data date: 21 July 2019 --&gt;
&lt;!-- meta-data intro: New functionality for my blog --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;

&lt;p&gt;
  My blog needed updating - I wanted to split out all posts that referenced talks I've done. To do so I decided to add tags to posts - initially this project only supported having a category for each post. Being a side project it was up to me to add this.
&lt;/p&gt;

&lt;h4&gt;Page meta data&lt;/h4&gt;
&lt;p&gt;
   Each post in the blog has a bunch of meta data fields that are parsed and converted into page attributes. For example the meta data for this page consists of the following:
  &lt;/p&gt;
   &lt;pre&gt;&lt;code class="language-html"&gt;
      &amp;lt;!-- meta-data title: Adding tags and talks --&amp;gt;
      &amp;lt;!-- meta-data searchtitle: adding-tags-and-talks  --&amp;gt;
      &amp;lt;!-- meta-data date: 21 July 2019 --&amp;gt;
      &amp;lt;!-- meta-data intro: New functionality for my blog --&amp;gt;
      &amp;lt;!-- meta-data author: Mike Harris  --&amp;gt;
      &amp;lt;!-- meta-data category: tech --&amp;gt;
    &lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;
      It was built to be extendable so to add tags was initially a case of including the following line:

    &lt;/p&gt;
      &lt;pre&gt;&lt;code class="language-html"&gt;
        &amp;lt;!-- meta-data tags: talk, code --&amp;gt;
    &lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;
      The main different here is that the values are an array.  For all the other fields they are key value pairs so there were a few other changes to make.
    &lt;/p&gt;

&lt;h4&gt;Viewing the code&lt;/h4&gt;

&lt;p&gt;
  All the code changes can be seen in full in this PR on &lt;a href="https://github.com/mikemjharris/blog/pull/4/files" target="_blank"&gt;github&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Parsing tags&lt;/h4&gt;

&lt;p&gt;
  The server reads all the files in the content folder, it then parses each page using a regex pattern to convert the meta field attributes to values.  In this case I added an if statement that checks if it's the 'tags' field and if so convert the value into an array by splitting on commas.
&lt;/p&gt;

&lt;h4&gt;Filtering by tags&lt;/h4&gt;
&lt;p&gt;
  This blog uses handlebars as the templating engine. For the categories functionality I wrote a `compares` function to check if a post matched the category.  As tags are arrays this time we needed an `includes` function.
&lt;/p&gt;
&lt;h4&gt;Adding and viewing the tags&lt;/h4&gt;
&lt;p&gt;
  Once the core functionality was done I needed to go back and update previous posts to include relevant tags.  My main initial need was to be able to collect all the talks I've done. In the future I will add a more dynamic tags page where you can see all the tags and select the ones you want but for now I've built a fixed template for posts tagged as talks. There's a new link on the main menu and you can see the result of all the work &lt;a href="https://blog.mikemjharris.com/talks"&gt;on the talks page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;

&lt;p&gt;
  Adding new functionality was fairly quick and smooth.  Given this is a four year old side project happy to get what I wanted with minimal effort.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Visualising the virtual dom</title>
      <link>https://blog.mikemjharris.com/posts/visualising-the-virtual-dom</link>
      <pubDate>13 May 2019</pubDate>
      <guid>visualising-the-virtual-dom</guid>
      <description>&lt;!-- meta-data title: Visualising the virtual dom --&gt;
&lt;!-- meta-data searchtitle: visualising-the-virtual-dom  --&gt;
&lt;!-- meta-data date: 13 May 2019 --&gt;
&lt;!-- meta-data intro: A visual example of diffing the virtual dom --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;

&lt;p&gt;
	In my recent books project I noticed a strange effect when playing with the filters - the smooth rainbow effect on the books sometimes worked well and sometimes was inconsistent. What was going on? It turns out this was a neat visual example of what React is doing when using the virutal dom to work out how to re-render components.
&lt;/p&gt;

&lt;div class="videoWrapper"&gt;
	&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/6ayxw6SybTM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4&gt;Each key should have a unique key prop&lt;/h4&gt;
&lt;p&gt;
  When using React you'll eventually come accross the error message 'Each key should have a unique "key" prop'. A bit of researching and you discover this is used by React to diff the virtual DOM and work out if it needs to re-render the component.  That all makes sense but visually your app looks ok with the error message. Adding in a key gets rid of the error message and you assume that React is doing it's magic and everything is faster and smoother but you can't see any change.  That's fine - lots of computer science isn't visual or visible - you need to look at other metrics to measure the real benefits. But sometimes it would be nice to see a visual example of what is actually happening.
&lt;/p&gt;
&lt;h4&gt;Rainbow colors in my books project&lt;/h4&gt;
&lt;p&gt;
   Recently I built &lt;a href="https://books.mikemjharris.com/" target="_blank"&gt;a project&lt;/a&gt; using React to list all the books I've read. While playing around with the filters I noticed that normally there was a smooth rainbow effect.  Changing the filters removed some books and there were disonnects in the color of the remaining adjoining books.  However, playing with the filters sometimes resulted in a smooth rainbow effect. Checkout the video to see this in action.
&lt;/p&gt;
&lt;h4&gt;Choosing the right key&lt;/h4&gt;
&lt;p&gt;
  In the project I chose the key for each book to be the title (hopefully unique!). This seems a reasonable choice - if as the filters change that book is in the results then it doesn't need updating.

   &lt;pre&gt;&lt;code class="language-javascript"&gt;filteredBooks.map((book,i) =&gt;
		&amp;lt;Book
			book={book}
			key={book.title}
			col={i}
		/&amp;gt;)&lt;/code&gt;&lt;/pre&gt;

		&lt;p&gt; The Book is a styled component. It takes in the color prop and creates a different background&lt;/p&gt;
   &lt;pre&gt;&lt;code class="language-css"&gt;background: hsla(${props =&gt; props.col}, 60%, 60%,1);&lt;/code&gt;&lt;/pre&gt;
		&lt;p&gt;The result of this is a lovely, smooth, rainbow effect - the change in index rotates through the color circle&lt;/p&gt;

&lt;h4&gt;Style not linked to the key&lt;/h4&gt;
&lt;p&gt;
	The look of a book on the page is reliant on its index.  However, if a book is shown in two consecutive filtered lists, React uses the title (which is the key) not the index to work out if it needs to re-render the component. So as we go from a list of all books to books only written by, say, female writers we go from a smooth rainbow effect to a more random look. The books by men are filtered out and the books by women retain their colour.  If we now switch to a filter which is all men we go back to a smooth rainbow effect.  All of the books needed to be re-rendered so we get a smooth rainbow again. Jumping between filters sometimes re-renders books so their colour reflects their index and sometimes their look carries over.
&lt;/p&gt;
&lt;h4&gt;What's the right thing to do?&lt;/h4&gt;
&lt;p&gt;
	This is a fun side project and I quite like the inconsistency. But what if this was something more important? Maybe a list of purchase options where the look needed to be correct?  By using styled components we have coupled some of our styles into how the component is rendered. To ensure we get the right look we should use some combination of index and title in the key - although this might end up resulting in slower render times as all items in the list would be re-rendered.
&lt;/p&gt;
&lt;p&gt; Another option is to solve the issues using vanilla CSS. Using SASS we can pump out a long list of nth-child selectors and create a rainbow effect that is completely decoupled from the rendering of the React components
&lt;/p&gt;
&lt;p&gt;What's right?  Well depends on what you're building.  Styled components are very popular at the moment but take note that as with any new technology they can introduce new areas you need to think about. For me, in this non essential side project, I'm just happy to have a fun, visual way to help me understand what is going on under the surface.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Automated Lighthouse</title>
      <link>https://blog.mikemjharris.com/posts/automated-lighthouse</link>
      <pubDate>7 Apr 2019</pubDate>
      <guid>automated-lighthouse</guid>
      <description>&lt;!-- meta-data title: Automated Lighthouse --&gt;
&lt;!-- meta-data searchtitle: automated-lighthouse --&gt;
&lt;!-- meta-data date: 07 Apr 2019 --&gt;
&lt;!-- meta-data intro: Tracking the performance, quality, and correctness of my sites --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/lighthouse-stats-crop.png --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
  Google provides an excellent tool called Lighthouse that can be used "for improving the quality of web pages". Usually I manually generate a report on an ad hoc basis but wanted to run  automate the process.
&lt;/p&gt;

&lt;h4&gt;What is Lighthouse&lt;/h4&gt;
&lt;p&gt;
  Lighthouse "audits for performance, accessibility, progressive web apps, and more".  You can access the tool by opening up Chrome Dev Tools and selecting the audit panel (&lt;a href="https://developers.google.com/web/tools/lighthouse/" target="_blank"&gt;docs&lt;/a&gt;). On running an audit you get scores across a number of areas - there's an example for this blog in the pic below&lt;/p&gt;


&lt;img src="/images/lighthouse-stats.png" alt="image of lighthouse dashboard" /&gt;

&lt;h4&gt;The Stats&lt;/h4&gt;

&lt;p&gt;
  The major areas are Performance, Accessibility, Best Practices and SEO with an additional marker for how whether the site classifies as a Progressive Web App. Pleased to report my blog is in the green for all the metrics. It was doing pretty well before but I knew I was writing this blog post so made a few tweaks.
&lt;/p&gt;

&lt;h4&gt;Automating via the CLI&lt;/h4&gt;
&lt;p&gt;
 Life's too busy to remember to run ad hoc reports so I wanted to automate the process. Lighthouse has a CLI which allows yous to run the tests from the command line (&lt;a href="https://github.com/GoogleChrome/lighthouse" target="_blank"&gt;docs&lt;/a&gt;). There are plenty of options including running the tests headless (i.e. without a visible browser) which means that one can run it on a remote server.
&lt;/p&gt;
&lt;h4&gt;Wrestling with docker&lt;/h4&gt;
&lt;p&gt;
  All my services on my remote server run in docker containers. There were a couple of images available on docker hub: &lt;a href="https://hub.docker.com/r/justinribeiro/lighthouse/" target="_blank"&gt;Justin Ribeiro's&lt;/a&gt; and &lt;a href="https://hub.docker.com/r/femtopixel/google-lighthouse/" taget="_blank"&gt;FemToPixels's&lt;/a&gt;. For both I had a number of issues getting chrome to run and to get a working report.  After a bunch of investigation and trial and error I ended up with &lt;a href="https://github.com/mikemjharris/dockerfiles/blob/master/lighthouse/Dockerfile" target="_blank"&gt;my own dockerfile&lt;/a&gt; - largely based on Justin's with a few tweaks and a working set of commands. If there's interest I can write up in more detail some of the issues I had.
&lt;/p&gt;
&lt;h4&gt;Automation&lt;/h4&gt;
&lt;p&gt;
  The setup involved a couple of cron jobs (&lt;a href="https://github.com/mikemjharris/infrastructure/blob/eb6348c43bc9ea2ca7019242bf47dff310c8ee27/crontab/crontab-jobs.txt" target="_blank"&gt;setup &lt;/a&gt; from my infra repo) to run HTML and JSON reports for this blog and my main WWW site every morning. The folder is symlinked to my main website director so all the reports are accessible online. &lt;/p&gt;
&lt;p&gt;
  You can see the latest for the blog at &lt;a href="https://www.mikemjharris.com/lighthouse/blog/" target="_blank"&gt;www.mikemjharris.com/lighthouse/blog/&lt;/a&gt; and for my main website at &lt;a href="https://www.mikemjharris.com/lighthouse/website/" target="_blank"&gt;www.mikemjharris.com/lighthouse/website/&lt;/a&gt; and there's a full history &lt;a href="https://www.mikemjharris.com/lighthouse/" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  Getting Lighthouse to run was fairly straightforward due to the excellent docs.  The main time sink was getting docker to run properly. Now the reports are generated automatically I can easily access them without having to be at the desktop and manually running the report. If this was an important business critical site I could setup alerts around when the metrics change - for my own personal projects I prefer a bit of peace and quiet over worrying too much about the state of my projects.
&lt;/p&gt;
&lt;p&gt;You can use Lighthouse on any website - note this blog is a small personal project so easy to tweak and ensure it scores highly. Bigger businesses have more to worry about - all the sites I've worked on professionally have much lower scores.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Infrastructure Update</title>
      <link>https://blog.mikemjharris.com/posts/infrastructure-update</link>
      <pubDate>16 Feb 2019</pubDate>
      <guid>infrastructure-update</guid>
      <description>&lt;!-- meta-data title: Infrastructure Update --&gt;
&lt;!-- meta-data date: 16 Feb 2019  --&gt;
&lt;!-- meta-data searchtitle: infrastructure-update --&gt;
&lt;!-- meta-data intro: Moving my personal project infrastructure into source control --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  Since 2015 most of my side projects have been hosted on a Digital Ocean droplet - back then I wrote about the setup in this &lt;a href="https://blog.mikemjharris.com/posts/deploying-this-blog" target="_blank"&gt;post&lt;/a&gt;. Over the past few years it's broadly the same bar adding new projects and adding some functionality. The main difference is that at the start it was a bunch of scripts and config on a server and now it is now a bunch of scripts and config in source control! That means I have a backup, can track my changes and the code is now public.
&lt;/p&gt;

&lt;h4&gt;Infrastructure Repo&lt;/h4&gt;
&lt;p&gt;
 You can see all my infrastructure scripts and config on &lt;a href="https://github.com/mikemjharris/infrastructure" target="_blank"&gt;GitHub&lt;/a&gt;. It's still a bit ad hoc and is the result of organic growth over time.  Often it has been easier to copy a script and find and replace a word rather than setup a more generic solution. There are three main parts to the repo as it currently stands:
&lt;/p&gt;

&lt;h4&gt;1 Routing&lt;/h4&gt;
&lt;p&gt;
  Most of my apps run in docker containers on different ports. I have various CNAMES pointing to the digital ocean droplet and Nginx directs traffic to the relevant container. This used to be one big messy bit of config as part of the &lt;i&gt;nginx.conf&lt;/i&gt; file that had evolved over time.  Recently I refactored this to be multiple conf files that are symlinked to the sites-enabled folder which nginx references.
&lt;/p&gt;

&lt;h4&gt;2 Scripts&lt;/h4&gt;
&lt;p&gt;
  In the deployment folder there are 'build' and 'version' scripts. These pull from git and build a docker image and run it as a container - often including version data that is consumed by my &lt;a href="https://blog.mikemjharris.com/posts/dashboard" target="_blank"&gt;dashboard project&lt;/a&gt;. The setup is pretty much the same for each with the only differences being the name and the port.  For the future this could be setup with one script and a config file which would make it marginally quicker to add new projects.
&lt;/p&gt;

&lt;p&gt;
  The other main script is the webhook server. This is a simple python http server that listens for webhooks from GitHub which it uses to trigger builds (for more info see this &lt;a href="https://blog.mikemjharris.com/posts/deploying-this-blog" target="_blank"&gt;post&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;There's a few other test scripts and experiments there too which aren't used.&lt;/p&gt;

&lt;h4&gt;3 Crontab&lt;/h4&gt;
&lt;p&gt;
  The final section is a text file with the cron jobs I run.  This includes restarting all the docker containers and the webhook server on a reboot.  Also it includes a nightly job which scrapes images as part of my &lt;a href="https://view-from-the-ra.mikemjharris.com" target="_blank"&gt;view from the RA &lt;/a&gt; project.
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  It's a relief to have all the config setup in source control.  There was always a worry that I'd have to start all over again or break the setup and not be able to revert the changes. Am happy that what was some experimental playing around four years ago still works. It could all be made more extendable and performant either in it's current guise or by utilising tools such as Ansible and Terraform.  For now it all works and for a non essential side project that is good enough for me.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Books Project - Part 2</title>
      <link>https://blog.mikemjharris.com/posts/books-project-pt2</link>
      <pubDate>10 Feb 2019</pubDate>
      <guid>books-project-pt2</guid>
      <description>&lt;!-- meta-data title: Books Project - Part 2 --&gt;
&lt;!-- meta-data date: 10 Feb 2019  --&gt;
&lt;!-- meta-data searchtitle: books-project-pt2 --&gt;
&lt;!-- meta-data intro: Frontend work on my books project --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
A few months ago I started a side project to showcase the books I've been reading. &lt;a href="https://blog.mikemjharris.com/posts/books-project-pt1" target="_blank"&gt;Books Project Part 1&lt;/a&gt; outlines the process where I setup a backend to pull data from google sheets and expose that via a GraphQL endpoint.
&lt;/p&gt;
&lt;p&gt;
In this second part I'll describe the second half of the project where I setup the front end. You can see the final project at &lt;a href="https://books.mikemjharris.com/"&gt;books.mikemjharris.com&lt;/a&gt; and the code for it is on &lt;a href="https://github.com/mikemjharris/books" target="_blank"&gt;GitHub&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Vue vs React&lt;/h4&gt;

&lt;p&gt;
In part 1 I suggested I'd try out Vue to build the front end.  In the meantime I experimented with that framework while building out my &lt;a href="https://blog.mikemjharris.com/posts/dashboard" target="_blank"&gt;dashboard&lt;/a&gt; project. Whilst I've worked with React at work for around three years none of my personal projects have utilised it. In my side projects I can have a bit more fun and try out new things even with a familiar framework and in this case opted to use React.
&lt;/p&gt;

&lt;h4&gt;Styled Components&lt;/h4&gt;
&lt;p&gt;
Another bit of tech that I wanted to experiment with  is &lt;a href="https://www.styled-components.com/" target="_blank"&gt;styled components&lt;/a&gt;. Really enjoyed the playing with them in this project - they're still CSS and you still need to know how that works but you can manage your styles a bit differently. Creating the colourful rainbow effect for the book layout worked out really easy to implement using a bit of JS with CSS.
&lt;/p&gt;


&lt;h4&gt;Stats and filtering&lt;/h4&gt;
&lt;p&gt;
  Additional functionality I wanted was to be able to filter by year and gender  and also some stats over time. For both I setup a filter helper file where the same function is used for both purposes. This isn't that efficient but for the data set I have there isn't a noticeable performance issue.  In future the filter helper code could be shared with the backend and the stats compiled and cached there to improve frontend speed.
&lt;/p&gt;

&lt;h4&gt;Respecting the web&lt;/h4&gt;
&lt;p&gt;
  When using filters I want the whole page to reflect the current state of the data - if I share the URL I want the recipient to be able to see the same data. To achieve this I added filter params and added the previous view to the page history so you get a smooth web experience as you'd expect.
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
Having a two part series helped push me to write another post and to have something to build. The actual project allowed me to showcase some of my React knowledge. Styled components worked really well and weren't that different from writing normal CSS.  The finished project does everything I wanted it to - pretty happy with the look and feel - apologies if the rainbow effect is a bit too much - it did allow me to play with more dynamic styles wich was one of my aims.
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>2018 Retro</title>
      <link>https://blog.mikemjharris.com/posts/2018-retro</link>
      <pubDate>31 Dec 2018</pubDate>
      <guid>2018-retro</guid>
      <description>&lt;!-- meta-data title: 2018 Retro --&gt;
&lt;!-- meta-data searchtitle: 2018-retro --&gt;
&lt;!-- meta-data date: 31 Dec 2018 --&gt;
&lt;!-- meta-data intro: A look back at the year that was 2018 --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;

&lt;p&gt;
Life throws lots at you at both the personal or macro level (such as global political changes or terminal illnesses for friends). These one has little control over. In this post I wanted to focus on some of the areas of my life I felt I &lt;b&gt;did&lt;/b&gt; have an impact on the outcome. While learning and analysing mistakes is important I think it is equally valuable to celebrate and enjoy life when things work out - and I definitely err on the side of celebration here.
&lt;/p&gt;


&lt;h4&gt;Year in numbers&lt;/h4&gt;
&lt;p&gt;
 I monitor and track a few easily measurable parts of my life. It's interesting to see how my habits and focus changes over the years. Mainly I track books I've read and the exercise I do - I feel they are often an indicator of how well or busy other parts of life are.  These are the stats for this year:
&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Activity&lt;/th&gt;
      &lt;th&gt;2018&lt;/th&gt;
      &lt;th&gt;2017&lt;/th&gt;
      &lt;th&gt;2016&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Books Read
      &lt;/td&gt;
      &lt;td&gt;
        34
      &lt;/td&gt;
      &lt;td&gt;
        18
      &lt;/td&gt;
      &lt;td&gt;
        10
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Run
      &lt;/td&gt;
      &lt;td&gt;
        1,642
      &lt;/td&gt;
      &lt;td&gt;
        1,083
      &lt;/td&gt;
      &lt;td&gt;
        1,145
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        KM Swam
      &lt;/td&gt;
      &lt;td&gt;
        116
      &lt;/td&gt;
      &lt;td&gt;
        125
      &lt;/td&gt;
      &lt;td&gt;
        123
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Yoga Sessions
      &lt;/td&gt;
      &lt;td&gt;
        48
      &lt;/td&gt;
      &lt;td&gt;
        30
      &lt;/td&gt;
      &lt;td&gt;
        60
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
        Blog Posts
      &lt;/td&gt;
      &lt;td&gt;
        14
      &lt;/td&gt;
      &lt;td&gt;
        7
      &lt;/td&gt;
      &lt;td&gt;
        5
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Looking at those it looks like a pretty stellar year - read almost double the number of books as last year (which was pretty much a record year) ran 50% more than each of the previous two years (and the most I've ever run by a few KM) and written the most blog posts. But what's the story behind the numbers? What's the one secret trick to reading more in a year?
&lt;/p&gt;

&lt;h4&gt;The biggest impact on my year... Working in the arts&lt;/h4&gt;
&lt;p&gt;
  At the end of 2017 I joined the Royal Academy of Arts and for numerous reasons this has impacted huge areas of my life. Some of the impact is for mundane reasons - I now have a longer commute which has contributed to both running and reading more.  Others are more inspirational - working in the arts is an amazing environment and I've been inspired to learn more about arts and culture than at any other point in my life.  It's given me the urge to read and understand more, the confidence to expose myself to new experiences and has broken down mental barriers.
&lt;/p&gt;

&lt;h4&gt;Running more doesn't necessarily mean a good year of running&lt;/h4&gt;
  &lt;p&gt;
  This year I ran the most that I've ever run! Previous best was 1,639km in 2012. So it must of been a great year of running?  Well - not so much. The year started off well but an achillies tendon from overdoing the running in March meant I was injured for the London Marathon. In May I was still recovering and posted my worst half marathon time at the Hackney Half (we run that each year with our &lt;a href="https://www.facebook.com/groups/techrunnersldn/" target="_blank"&gt;techrunners&lt;/a&gt; group). A large chunk of running has been jogging home.  My current job is the furthest west I've ever been and for the first time in 16 years I'm having to deal with the tube. Running is a good alternative! Injuries are sorted and I hope the solid groundwork will pay off next year - I'm attempting my first ultra - 100k round the Isle of Wight in the Spring!
  &lt;/p&gt;
  &lt;h4&gt;I like getting told what to do&lt;/h4&gt;
  &lt;p&gt;
  Yoga and swimming take up the rest of my exercise time. The highlight on the swimming was a swim trek holiday for the second year in a row. The trip this year was to the Montenegrin fjords and the group swam about 4k a day in beautiful scenery.&lt;/p&gt;&lt;p&gt;  Yoga I attempted to do self practice at the start of the year. After 11 years of regular practice I thought I'd be OK.  It was a disaster - I struggled to do anything more than the odd token session and I didn't improve in my technique.  I've gone back to paying for sessions and am much happier being told what to do by an expert. It was a good experiment and will think if I could of done anything differently to make it more of a success if I try it again. On the upside I've progressed on my goal of achieving a handstand - I attended a number of workshops and had a 1-1 session. See &lt;a href="https://twitter.com/MikeMJHarris/status/1078716758159228928" target="_blank"&gt;this twitter post&lt;/a&gt; for a taster.
  &lt;/p&gt;

&lt;h4&gt;Book reading&lt;/h4&gt;
&lt;p&gt;
This year I've almost doubled the amount of books I've read.  There's lots of reasons behind this but I think the main one is having a commute on a tube.  It's not very long but it means I get started with a book quickly.  On top of this I'm more settled in my career and also inspired by the environment around me. &lt;/p&gt;&lt;p&gt;In this blog I've written a number of times about having a more balanced reading list - this year has helped correct the overall balance over the years as 21 of the 34 books I read were by women.  Another big change from previous years is that I read something other than fiction!  The job has influenced that with lots of my books about artists or periods of art. My favourite book of the year was Walking Through Walls by Marina Abramovic and you can access the full list at &lt;a href="https://books.mikemjharris.com/" target="_blank"&gt;books.mikemjharris.com&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Blogging and side projects&lt;/h4&gt;
&lt;p&gt;
This year I've written the most blog posts. Again the new job is a factor of this - we're a small team and there aren't the same opportunities to discuss ideas as you get with a team of ~90 which we had at MOO.  I enjoy trying new things and find the process of writing blog posts a way to get the ideas sorted in my head as well as a focus to finish off side projects.&lt;/p&gt;&lt;p&gt;  On the side project front the most fun one was &lt;a href="https://view-from-the-ra.mikemjharris.com/" target="_blank"&gt;a view from the RA&lt;/a&gt; - again related to the job - I get so many opportunities to take amazing pics from beautiful spaces and this collects the ones from the RA. &lt;/p&gt;&lt;p&gt;Other side projects allowed me to tackle a bunch of interesting tech from GraphQL, Serverless, and Vuejs. Favourite blog post and side project combined: I most enjoyed purchasing, setting up and coding on my chromebook which I wrote about &lt;a href="https://blog.mikemjharris.com/posts/coding-with-a-chromebook" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;h4&gt;The year in a weekend&lt;/h4&gt;
&lt;p&gt;
Being in the arts has inspired me to learn and do new things. Working in an area I never thought I would and doing a good job of it (according to the feedback I've had so far) does wonders for your confidence and for trying things that I've had a mental block on. One of those is reading in a group and analysing a books content and meaning - I've generally read for myself and not wanted to join a book club.  This year through a random meeting on holiday I ended up joining the &lt;a href="http://www.litsalon.co.uk/" target="_blank"&gt;London literary salon&lt;/a&gt; on a weekend trip to St Ives to discuss Virginia Woolf's 'To The Lighthouse'.  This weekend brought together a whole bunch of my year - I got to hike, run and then swim in the sea.  St Ives has been a base for many artists over the years and I visited the Tate and the Barbara Hepworth museum. Virginia herself was closely connected to the visual arts world with a friendship with Roger Fry and her sister Vanessa Bell attending the RA. It was a fantastic group of people and I loved delving into more depth into the book.  The whole weekend was a joy and summed up my year - sport, art, reading, new people and new opportunities. Plus I took my chromebook along for a bit of tech on the train ride.
&lt;/p&gt;

&lt;h4&gt;Year Summary&lt;/h4&gt;
&lt;p&gt;
A glorious year in terms of books, exercise and writing blogs/doing side projects.  I haven't touched on work topics - I have plenty of other outlets for professional related feedback - either at work, with my network of with my mentor and mentee.  The topics covered in this post aren't the entirety of life but they are telling metrics for me and ones that I have some impact on. Deeper and existential angst I prefer to save for professional therapy.&lt;/p&gt;
&lt;p&gt;
Overall I feel the fittest for a while. Mentally I feel stretched in a huge range of directions and this has been an intellectual Annus Mirablis. Let's see how 2019 goes!
&lt;/p&gt;
&lt;h4&gt;Appendix - Resolutions&lt;/h4&gt;
&lt;p&gt;
I did &lt;a href="https://blog.mikemjharris.com/posts/2018-resolutions" target="_blank"&gt;write&lt;/a&gt; some new years resolutions at the start of the year, succeeded to a certain degree in all of them.  However I found that they didn't feel like a significant part of the year - I set myself a whole range of goals from daily, weekly to multi year and have lots of ways of managing and progressing along those.  It was fun to write the New Years resolutions, I'll probably set some this year but wont write about them as they don't feel any more special than the rest of life.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Dashboard</title>
      <link>https://blog.mikemjharris.com/posts/dashboard</link>
      <pubDate>23 Nov 2018</pubDate>
      <guid>dashboard</guid>
      <description>&lt;!-- meta-data title: Dashboard --&gt;
&lt;!-- meta-data searchtitle: dashboard  --&gt;
&lt;!-- meta-data date: 23 Nov 2018 --&gt;
&lt;!-- meta-data intro: Monitoring the status of my personal projects --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  With a number of personal projects up and running in different places I wanted a dashboard where I could see the current status of my different sites as well as some info around what was deployed and when.  In building my own dashboard I got to try out some new tech - some serverless technology on the infrastructure side and Vue Js framework and CSS grid on the front end.
&lt;/p&gt;


&lt;h3&gt;Version.json&lt;/h3&gt;
&lt;p&gt;
For each of my projects there's a script that adds build data to a version.json file in the public folder. &lt;a href="https://github.com/mikemjharris/infrastructure/blob/master/deployment/version-blog.sh" target="_blank"&gt;Here's the script&lt;/a&gt; that builds that data for this blog and here's an example of what the &lt;a href="https://blog.mikemjharris.com/version.json" target="_blank"&gt;version.json&lt;/a&gt; looks like:
&lt;/p&gt;
&lt;div class="code"&gt;
  {&lt;br /&gt;
  &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp"commit": "1afcfb6d6fb110597eb220c6d8f0ca6da087bf89",&lt;br /&gt;
  &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp"branch": "master",&lt;br /&gt;
  &amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp"deploy_date": "2018-10-23_20-06-59"&lt;br /&gt;
  }
&lt;/div&gt;
&lt;h3&gt;Lovely Lambda&lt;/h3&gt;
&lt;p&gt;
For the dashboard I needed to needed to work out how I'd collect that data. I wanted to learn a bit more about some of the serverless technology available. I opted to use an AWS lambda function to call off to all my projects and get the data. Javascript is my go to language and is supported by lambda.  Initially I setup a local node project that returned the relevant info by making a series of calls to the various projects. Now how to run that in the cloud? AWS docs are very wide ranging and once you find the relevant part very helpful.  For lambda I followed &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/get-started-create-function.html"&gt;these docs&lt;/a&gt; which along with a helpful and informative UI I was able to import my code as a lambda function.
&lt;/p&gt;
&lt;h3&gt;Serverless server&lt;/h3&gt;
&lt;p&gt;
With the lambda function set up I wanted to be able to trigger it and access the data.  The plan was to have an endpoint where I could call to get the data and expose it on the front of my project.  This setup feels very much like what you use a server to do - but how to do the same using serverless?  AWS provide an API Gateway which acts like a normal API - there's an endpoint you can call, this in turn triggers your lambda function and returns the data. All the functionality of an always listening server but only triggered on demand. Again I used a combo of &lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-lambda-non-proxy-integration.html" target="_blank"&gt;AWS docs&lt;/a&gt; and the UI to get an API Gateway setup with the lambda function. Here's the &lt;a href="https://sasptp6a7h.execute-api.eu-west-1.amazonaws.com/default/nodeServerStatus" target="_blank"&gt;resulting endpoint&lt;/a&gt; returning the status of my various projects.
&lt;/p&gt;

&lt;h3&gt;Vue and CSS grid&lt;/h3&gt;
&lt;p&gt;
To display the data on the front end I decided to use &lt;a href="https://vuejs.org/" target="_blank"&gt;VueJs&lt;/a&gt;  and use css grid for the layout. Both of which were new to me! The Vue docs were super helpful and for this fairly basic app I ended up with this &lt;a href="https://github.com/mikemjharris/dashboard/blob/4e0ebecd779e78b084df73850355283fd4ad3748/src/index.js#L1-L21"&gt;js code&lt;/a&gt; and this &lt;a href="https://github.com/mikemjharris/dashboard/blob/4e0ebecd779e78b084df73850355283fd4ad3748/server/views/index.html#L21-L32" target="_blank"&gt;html template&lt;/a&gt;.  CSS Tricks is my usual go to for instructions on latest CSS properties - here's their instructions on how to &lt;a href="https://css-tricks.com/snippets/css/complete-guide-grid/"&gt;use CSS grid&lt;/a&gt;.

&lt;p&gt;
In keeping with the rest of the project I decided to host the front end on amazon - creating a website enabled s3 bucket. For the project url to look like one of my projects I setup a proxy for the s3 bucket in the nginx server I use for my main website - &lt;a href="https://github.com/mikemjharris/infrastructure/blob/732cb11d56d5c5ba56b5ad5e8b9130d538064494/nginx-setup/nginx.conf#L64-L81" target="_blank"&gt;here's the config&lt;/a&gt; for that.
&lt;/p&gt;

&lt;h3&gt;Deployment&lt;/h3&gt;
&lt;p&gt;
  There are various abstractions for deploying serverless code - however I wanted to try out using standard AWS cli. For the lambda function this requires zipping up the folder with the code in it and using the cli to upload to the cloud.  Similarly for the front end - I used webpack to package up the code and used the s3 cli to sync to the bucket.
&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Checkout the &lt;a href="https://www.mikemjharris.com/dashboard"&gt;final dashboard here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
I got to try out some new tech, learnt a whole bunch of new things and got exactly what I wanted - a site with the status of my projects.  &lt;/p&gt;

&lt;p&gt;
This post has been fairly minimal description of the steps I took. I found the docs for each of the projects pretty comprehensive and didn't feel I needed to add anything - I've linked to all the relevant sections but happy to help out if you are looking to do something similar and need any tips on how to piece together the pieces.
&lt;/p&gt;
&lt;p&gt;
  The combo of the API gateway and lambda to be an excellent replacement for a server.  Speed of response isn't necessary for this project - I'll probably be the only one checking it and don't mind waiting a few milliseconds for startup. I appreciate that keeping lambda's warm is a challenge but not one I needed to address here - something to dig into in the future!
&lt;/p&gt;






</description>
    </item>
    <item>
      <title>More Book Balance</title>
      <link>https://blog.mikemjharris.com/posts/more-book-balance</link>
      <pubDate>23 Oct 2018</pubDate>
      <guid>more-book-balance</guid>
      <description>&lt;!-- meta-data title: More Book Balance --&gt;
&lt;!-- meta-data searchtitle: more-book-balance  --&gt;
&lt;!-- meta-data date: 23 Oct 2018 --&gt;
&lt;!-- meta-data intro: New books for my reading list --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;p&gt;
  In this post I want to highlight a new Guardian article that has provided me with new reading material. In previous posts I've written about how a similar article had altered the books I read (&lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist"&gt;Accidental Sexist&lt;/a&gt; and &lt;a href="https://blog.mikemjharris.com/posts/book-balance"&gt;Book Balance&lt;/a&gt;). This follows on the theme of trying to read authors from more diverse backgrounds.
&lt;/p&gt;

&lt;h4&gt;Still relevant&lt;/h4&gt;
&lt;p&gt;
With the #MeToo movement this look at imbalance in the world of literature is as relevant as ever.  Checkout this excellent Guardian article &lt;a href="https://www.theguardian.com/world/2018/oct/02/how-to-be-good-man-me-too-month-reading-feminist-classics"&gt;How to be a Good Man&lt;/a&gt;. This sentence, I feel, sums up what the author was looking to do:
&lt;/p&gt;

&lt;p class="quote"&gt;I wanted to to sit down and read about women’s experiences, to stay silent for a while, and hopefully learn something.
&lt;/p&gt;

&lt;p&gt;
  The irony that the article is written by a man isn't lost on me however it has provided a list of 13 books - only one of which I've read.
&lt;/p&gt;

&lt;h4&gt;Book project&lt;/h4&gt;
&lt;p&gt;
  I'm building an webapp to list out the books I've read which I wrote about that in this post &lt;a href="book-project-pt1"&gt;Book Project - Part 1&lt;/a&gt;. You can see the project at &lt;a href="https://books.mikemjharris.com"&gt;books.mikemjharris.com&lt;/a&gt;
&lt;p&gt;

&lt;h4&gt;Tips&lt;/h4&gt;
&lt;p&gt;
Would love your tips on non white authors to read.  Am aware that I've written mostly about reading more female authors but I am trying to cast my net wider.  Recent issues such as having &lt;a href="https://www.theguardian.com/books/2017/feb/16/all-white-carnegie-medal-longlist-anger-childrens-authors-philip-pullman"&gt;all white nominees&lt;/a&gt; for the Carnegie medal longlist have encouraged me to research and read more BAME authors too. Recommendations please!
&lt;/a&gt;
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>Books Project - Part 1</title>
      <link>https://blog.mikemjharris.com/posts/books-project-pt1</link>
      <pubDate>16 Sept 2018</pubDate>
      <guid>books-project-pt1</guid>
      <description>&lt;!-- meta-data title: Books Project - Part 1 --&gt;
&lt;!-- meta-data date: 16 Sep 2018  --&gt;
&lt;!-- meta-data searchtitle: books-project-pt1 --&gt;
&lt;!-- meta-data intro: Experimenting with GraphQL to list the books I've read. --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
In 2011 I started using a kindle and loved it's ease and portability.  The quality and quantity of my reading increased but I missed being able to glance at shelf of titles and recall the pleasure of reading them. I started noting down the books I read in Google sheets and have always wanted to build a little project around that data. I use side projects as a chance to learn new technologies and pick up new skills - in this case I wanted to try out GraphQL. The final project can be found &lt;a href="https://books.mikemjharris.com" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Me, Reading and this Blog&lt;/h4&gt;
&lt;p&gt;
  The list of books in Google sheets has been incredibly useful not only in helping me remember what I've read but also to help me analyse and expand the range of literature I consume. In a couple of previous posts in this blog I've written in more detail about what I've been trying to achieve: &lt;a href="https://blog.mikemjharris.com/posts/book-balance" target="_blank"&gt;book balance&lt;/a&gt; and &lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist" target="_blank"&gt;accidental sexist&lt;/a&gt;. I wanted to be able to use this project to make public not only the list of books but this breakdown of the authors and more.
&lt;/p&gt;

&lt;h4&gt;Books Project&lt;/h4&gt;
&lt;p&gt;
  The first part of ths project was to work out how to get the data from Google sheets into a server and expose that via an API.  From there I could use the data to build out a little site showing the books I've read and any interesting analytics. I've heard a whole bunch about GraphQL via blogs and twitter - and especially Henrik Jorteg.  Tweets such as the following suggested I could get started with a familiar data set and server setup and have a little go at using GrapQL.
&lt;/p&gt;

&lt;blockquote class="twitter-tweet" data-lang="en"&gt;&lt;p lang="en" dir="ltr"&gt;It&amp;#39;s surprising how many think you need Relay or a graph-like data structure to benefit from GraphQL.&lt;br&gt;&lt;br&gt;As a first step you
   can just go through your app and replace JSON fetches for GraphQL fetches with zero new libraries.&lt;br&gt;&lt;br&gt;At least you&amp;#39;ll only be fetching what you actually use.&lt;/p&gt;&amp;mdash; Henrik Joreteg (@HenrikJor
   eteg) &lt;a href="https://twitter.com/HenrikJoreteg/status/1010144585018834944?ref_src=twsrc%5Etfw"&gt;June 22, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;h4&gt;What is GraphQL?&lt;/h4&gt;
&lt;p&gt;
  My take on &lt;a href="https://GraphQL.org/" target="_blank"&gt;GraphQL&lt;/a&gt; - it allows you to determine on the front end of your app what data you want. It reduces the amount of backend work and means you can have efficient calls for the right amount of data.  There will be a couple of examples at the end of this using the book project I've setup.
&lt;/p&gt;

&lt;h4&gt;Using GraphQL&lt;/h4&gt;
&lt;p&gt;
 To start I forked my node based &lt;a href="https://github.com/mikemjharris/seed-project" target="_blank"&gt;seed project&lt;/a&gt; and following the instructions  on the &lt;a href="https://GraphQL.org/"&gt;GraphQL&lt;/a&gt; page I produced an &lt;a href="https://github.com/mikemjharris/books/commit/ffd3b05047d3441d6c3c7070d560810c1fc5a10c" target="_blank"&gt;initial test&lt;/a&gt; setup. The next step was to get the data from google sheets and setup a more suitable schema.

&lt;h4&gt;Getting data from Google Sheets&lt;/h4&gt;
&lt;p&gt;
 Google sheets help run my life! From holidays, expenses through to over 11 years of exercise data they are a great, easy to use and accessible tool.  I still wanted to use sheets to update my books but just wanted to be able to get that data out into an app.  From sheets the File -&gt; Publish To The Web option fitted into what I wanted. I made a consolidate page available to the public in CSV form which you can see &lt;a href="https://docs.Google.com/spreadsheets/d/e/2PACX-1vSnuIE5i7X7VhTsbCcyQtLJeBkFpBiF1CMvRtv9Ze8NOMdnFXQZC1JHE40qGo83rkhsAw6CQVhZvqRW/pub?gid=50513809&amp;single=true&amp;output=csv" target="_blank"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;h4&gt;Plugging it all together&lt;/h4&gt;
&lt;p&gt;
 In my app I called off to google sheets, ran the CSV through a converter to JSON and update the GraphQL schema to reflect a few additional data fields. You can see the results at the GraphQL endpoint on the &lt;a href="https://books.mikemjharris.com/GraphQL?query=%7B%0A%20%20books%20%7B%0A%20%20%20%20title%0A%20%20%20%20author%0A%20%20%20%20gender%0A%20%20%20%20year%0A%20%20%20%20month%0A%20%20%7D%0A%7D" target="_blank"&gt;live app here&lt;/a&gt;.  Click the button that looks like a play button and you'll get back the full list of books!
&lt;/p&gt;

&lt;p&gt;
In this example you get back all the fields but you can update the query to only return the data you actually want.  For example in the previous posts in this blog I've been looking at the gender of the authors I've read (currently only male and female but the field is a string as I'm looking for recommendations of non binary authors if you can help). A query for that would look &lt;a href="https://books.mikemjharris.com/GraphQL?query=%7B%0A%20%20books%20%7B%0A%20%20%20%20gender%0A%20%20%7D%0A%7D" target="_blank"&gt;like this&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
Things worked as I wanted! Book data available for a node server to pick up, transform into JSON and expose via a GraphQL endpoint.  A fairly straightforward set of data to dip my toes into the GraphQL landscape and give me the confidence to experiment in a more complex scenario. You can see the final project at &lt;a href="https://books.mikemjharris.com/"&gt;https://books.mikemjharris.com/&lt;/a&gt; and the code for it is on &lt;a href="https://github.com/mikemjharris/books" target="_blank"&gt;github&lt;/a&gt; - watch out for a second part to this blog where I build out a better front end. Hoping to use that opportunity to try out Vue. Let's see how it goes.
&lt;/p&gt;

&lt;h4&gt;Update - 10th Feb 2019&lt;/h4&gt;
&lt;p&gt;
  Published second part of this post &lt;a href="https://blog.mikemjharris.com/posts/books-project-pt2" target="_blank"&gt;Books Project Part 2&lt;/a&gt;. The final front end if finished now so links to the main project reflect the finished work.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Twitter Cards</title>
      <link>https://blog.mikemjharris.com/posts/twitter-card</link>
      <pubDate>14 Sept 2018</pubDate>
      <guid>twitter-card</guid>
      <description>&lt;!-- meta-data title: Twitter Cards --&gt;
&lt;!-- meta-data date: 14 Sep 2018  --&gt;
&lt;!-- meta-data searchtitle: twitter-card --&gt;
&lt;!-- meta-data intro: Improving how a post is shared on social media --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  When I've shared posts from this blog on twitter in the past the experience is pretty bare with just a url showing up. I've been meaning to improve the how this works and finally got round to what was a fairly small tweak.
&lt;/p&gt;

&lt;h4&gt;Twitter cards&lt;/h4&gt;
&lt;p&gt;
By providing some meta data on your page twitter can pull out some info and create a better looking post. Twitter creates a 'twitter card' with a title, summary and an image. All this info is on the page - I followed the instructions &lt;a href="https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/abouts-cards.html" target="_blank"&gt;provided by twitter&lt;/a&gt; and added the relevant meta data.
&lt;/p&gt;

&lt;p&gt;
  Twitter often caches urls and their meta data so any previously shared urls might not pick up the updates.  There is a &lt;a href="https://cards-dev.twitter.com/validator" tartget="_blank"&gt;validator&lt;/a&gt; you can use to check the setup.  Here's a screenshot of my last post in the validator.  Looks much smarter and more trustworthy to click on!
&lt;/p&gt;

&lt;img src="/images/twitter-card-preview.png" /&gt;
</description>
    </item>
    <item>
      <title>AWS to Azure</title>
      <link>https://blog.mikemjharris.com/posts/aws-to-azure</link>
      <pubDate>20 Aug 2018</pubDate>
      <guid>aws-to-azure</guid>
      <description>&lt;!-- meta-data title: AWS to Azure --&gt;
&lt;!-- meta-data searchtitle:  aws-to-azure --&gt;
&lt;!-- meta-data date: 20 Aug 2018  --&gt;
&lt;!-- meta-data intro: Taking a look at Microsoft's cloud offering --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;

&lt;p&gt;
Some of my recent posts have looked at how I've switched to using &lt;a href="https://blog.mikemjharris.com/posts/coding-with-a-chromebook" target="_blank"&gt;a chromebook&lt;/a&gt; linked up to a &lt;a href="https://blog.mikemjharris.com/posts/computing-in-the-cloud" target="_blank"&gt;remote dev environment&lt;/a&gt;. For that setup I was using Amazon's cloud service (AWS). I wanted to try out Microsoft's cloud platform so decided to see how quickly I could get the same setup running on Azure.
&lt;/p&gt;

&lt;h4&gt;Why AWS in the first place?&lt;/h4&gt;
&lt;p&gt;
AWS is the platform used at the last two places I've worked and is one of the most popular systems for running code in the cloud. Using it provided me with a familiar environment while I tried out new things as well as allowing me to strengthen my skills in an in demand area.
&lt;/p&gt;

&lt;h4&gt;Why switch to Azure?&lt;/h4&gt;
&lt;p&gt;
Curiosity! To try something new, to widen my skills, to test myself. I've been working in the Amazon eco system and wanted to see how different Azure would be. Microsoft seem to be doing a great job of expanding their footprint in the developer space and am hearing of more and more organistations using or thinking of switching to Azure. How would I personally find such a switch?
&lt;/p&gt;

&lt;h4&gt;Result&lt;/h4&gt;
&lt;p&gt; 
Success!  Everything went pretty smoothly.  From signing up to a MS account I was up and running with everything setup within 30mins.  The vast majority is similar to AWS even if the terminology isn't all the same and the GUI is dramatically different. I followed &lt;a href="https://docs.microsoft.com/en-us/azure/virtual-machines/linux/quick-create-portal" target="_blank"&gt;this tutorial&lt;/a&gt; combined with the usual dollop of googling on the side and a bit of trial and error. All my &lt;a href="https://github.com/mikemjharris/config" targe="_blank"&gt;setup scripts&lt;/a&gt; ran smoothly - probably unsurprisingly as hopefully an Ubuntu VM is the same anywhere!
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
Azure isn't that much different from AWS! Using Azure was different and a step outside the comfort zone. It feels like lots of work has gone into a smooth user experience and once I'd got my head round the new terminology found it a much better interface. TBH I should really be doing all of this using terraform and not clicking on buttons ... guess that's the next side project to add to the list.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Coding with a Chromebook</title>
      <link>https://blog.mikemjharris.com/posts/coding-with-a-chromebook</link>
      <pubDate>29 Jul 2018</pubDate>
      <guid>coding-with-a-chromebook</guid>
      <description>&lt;!-- meta-data title: Coding with a Chromebook --&gt;
&lt;!-- meta-data searchtitle:  coding-with-a-chromebook --&gt;
&lt;!-- meta-data date: 29 Jul 2018 --&gt;
&lt;!-- meta-data intro: Day to day coding with a small, cheap, lightweight chromebook --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
Chromebooks are small, light and cheap.  I wanted to see if they would be up to the challenge of becoming my day to day computer. Here's my Asus flip I've been experimenting on pictured at a conference. Would it be up to the task?
&lt;/p&gt;
&lt;img src="/images/chromebook-in-action.jpg" /&gt;
&lt;h3&gt;What I want for my personal computer&lt;/h3&gt;

&lt;p&gt;
I'm often out and about round town or travelling and wanted a computer that was easy to carry and not too expensive. Chromebooks fitted under these criteria - after a bunch of research I decided to try out the &lt;a href="https://www.amazon.co.uk/ASUS-C101PA-FS002-10-1-inch-Touchscreen-Chromebook/dp/B073R9CXM2/ref=sr_1_4?ie=UTF8&amp;qid=1532376208&amp;sr=8-4&amp;keywords=asus+flip" target="_blank"&gt;11 inch Asus chromebook flip&lt;/a&gt;. It cost a fraction of the price of a mac but still looks good. It comes with chrome OS which gives a seamless web experience. My task was to see if it would be possible to use it to code on.
&lt;/p&gt;
&lt;h3&gt;Cloud to the rescue&lt;/h3&gt;
&lt;p&gt;
In a &lt;a href="https://blog.mikemjharris.com/posts/computing-in-the-cloud" target="_blank"&gt;previous post&lt;/a&gt; I wrote about how I had started using AWS EC2 to code on. All I needed was a way of linking up my chromebook to one of those instances to harness as much computer power as possible. You can use a web based browser such as Amazon's cloud 9 - however I find that quite different from the way I work day to day. In that previous post I'd used mosh to connect to the server and work over the command line.  There is a Mosh application on chrome OS and within a short time I had a command line interface to the cloud.  I was in business!
&lt;/p&gt;
&lt;h3&gt;Working offline&lt;/h3&gt;
&lt;p&gt;
While chromebooks are meant to be used online most of the time there is plenty of offline functionality.  Google docs has an offline capacity. But what happens if I wanted to code offline? &lt;a href="https://github.com/dnschneid/crouton" target="_blank"&gt;Crouton&lt;/a&gt; to the rescue!  - this allows you to run linux in parallel with chrome OS. An afternoon of going through the docs and I was up and running code locally.  For any serious programming the chromebooks is underpowered but for most of my side projects or for running unit tests on larger projects it works fine. In fact I'm sat at the airport right now writing this post.
&lt;/p&gt;
&lt;h3&gt;Crouton the saviour&lt;/h3&gt;
&lt;p&gt;
Indeed with crouton I had a proper CLI - I found the mosh application wasn't as smooth as I wanted (slightly clunky interface for multiple hosts / keys) so transferred to using ssh from crouton to access the cloud.  A word of warning crouton is unsecure locally - read the docs for more info. One other downside is you can't run docker. In the future the &lt;a href="https://chromeunboxed.com/news/linux-apps-crostini-enabled-on-more-chromebooks" target="_blank"&gt;crostini project&lt;/a&gt; will allow Linux apps to be run from chrome OS which should solve these issues. Will try it out what I can.
&lt;/p&gt;

&lt;h3&gt;What about apple?&lt;/h3&gt;
&lt;p&gt;
I love my 13inch air and have enjoyed macbook pros and macbooks.  But all of them have felt heavy and I find that all of them are a struggle to type on an economy table on an aeroplane. In addition I am concious they are expensive - while I don't want to lose anything a chromebook is a less desirable piece of gear to pinch and cheaper to replace. I thought about an 11 inch air but wanted to try a different ecosystem at a lower price.
&lt;p&gt;
As a size comparison here's a pic of chromebook vs 13inch air along with large and small books. With a discrete over the shoulder bag I can snugly fit chromebook plus a real book with ease and get about town with no issues.
&lt;/p&gt;
&lt;img src="/images/asus-flip-comparison.jpg" /&gt;

&lt;h3&gt;Chromebook convert&lt;/h3&gt;
&lt;p&gt;
I've switched to my chromebook for any of my personal projects - whether that's sitting on the sofa, around town or travelling. I'm a heavy google user and enjoy the way everything integrates smoothly. There are plenty of chrome apps available too. In addition a light external battery pack (which you can see in the first pic of this piece) means that I can go multiple days use without having to find a power outlet.
&lt;/p&gt;
&lt;p&gt;
There is a learning curve - slightly different keyboard layout and shortcuts and a bit of work if you want to setup crouton - but once up and running it's a great experience browsing the web and a viable tool to code.  Overall a successful experiment!
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Book Balance</title>
      <link>https://blog.mikemjharris.com/posts/book-balance</link>
      <pubDate>13 Jul 2018</pubDate>
      <guid>book-balance</guid>
      <description>&lt;!-- meta-data title: Book Balance--&gt;
&lt;!-- meta-data searchtitle:  book-balance --&gt;
&lt;!-- meta-data date: 13 Jul 2018  --&gt;
&lt;!-- meta-data intro: A look back at the types of books I've been reading --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;


&lt;p&gt;
Books. Amazing, beautiful, bewildering books. I love reading. In a &lt;a href="https://blog.mikemjharris.com/posts/accidental-sexist"&gt;previous post&lt;/a&gt; I wrote about the unconscious unbalance in the gender of the authors of the books I've read in the past. Here is an update of the variety of books I've been reading since that previous post in 2016.

&lt;h4&gt;Book balance&lt;/h4&gt;
  &lt;table&gt; 
    &lt;thead&gt; 
      &lt;tr&gt; &lt;th&gt;&lt;/th&gt; &lt;th colspan="2"&gt;Books by:&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Year&lt;/th&gt; &lt;th&gt;Male authors&lt;/th&gt; &lt;th&gt;Female authors&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt;  
    &lt;tbody&gt; 
      &lt;tr&gt; 
        &lt;td&gt;2015&lt;/td&gt; 
        &lt;td&gt;5&lt;/td&gt; 
        &lt;td&gt;6&lt;/td&gt; 
      &lt;/tr&gt; 
      &lt;tr&gt; 
        &lt;td&gt;2016&lt;/td&gt; 
        &lt;td&gt;8&lt;/td&gt; 
        &lt;td&gt;2&lt;/td&gt; 
      &lt;/tr&gt;
      &lt;tr&gt; 
        &lt;td&gt;2017&lt;/td&gt; 
        &lt;td&gt;6&lt;/td&gt; 
        &lt;td&gt;12&lt;/td&gt; 
      &lt;/tr&gt;
      &lt;tr&gt; 
        &lt;td&gt;2018*&lt;/td&gt; 
        &lt;td&gt;7&lt;/td&gt; 
        &lt;td&gt;12&lt;/td&gt; 
      &lt;/tr&gt;
    &lt;/tbody&gt; 
    &lt;tfoot&gt;*Year so far&lt;/tfoot&gt;
  &lt;/table&gt;
&lt;p&gt; 
  It's becoming second nature now to have a more balanced book consumption. Having a kindle really helps - I make sure that whenever I come across a good book recommendation, and especially when that recommendation is written by a non white male author, I order it straight away so I always have something to hand when I finish a novel.  
&lt;/p&gt;

&lt;h4&gt;Beyond gender&lt;/h4&gt;
&lt;p&gt; 
  While my initial focus on gender was a response to a guardian article I've also been making sure I get as wide a range of experiences as possible. That's meant reading more books by people of colour, also a wider geographical range and also those who write about or identify on different gender or sexual spectrum.
  &lt;/a&gt;
  &lt;h4&gt;Recommendations&lt;/h4&gt;
  &lt;p&gt; There are good tips everywhere - these can be a bit overwhelming.  Sources I've relied upon include the FT weekend arts section, my Hackney book club, friends and social media. There's a whole range of everything on twitter and here's an example of the positive side:
  &lt;/p&gt;
  
  &lt;blockquote class="twitter-tweet" data-lang="en"&gt;&lt;p lang="en" dir="ltr"&gt;I&amp;#39;ve only been reading books by women of color this year, and I&amp;#39;ve read so many powerful and beautifully written books. Here are a few favorites from this year so far, in no particular order 📖:&lt;/p&gt;&amp;mdash; Adrienne Domingus (@a_domingus) &lt;a href="https://twitter.com/a_domingus/status/1000775194322001927?ref_src=twsrc%5Etfw"&gt;May 27, 2018&lt;/a&gt;&lt;/blockquote&gt;
  &lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;h4&gt;Reading more&lt;/h4&gt;
&lt;p&gt;
  As you might of noticed from the table at the start of this post I'm on track to read almost double the number of books from previous years.  I'm more settled in my career and have more head space to read. My commute has also changed - on average I gain about 1h of reading time over a week from previous years. It's felt a natural change and I'm sure the number will rise and fall as life changes over the next few years. I read for the joy of reading.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Computing in the Cloud</title>
      <link>https://blog.mikemjharris.com/posts/computing-in-the-cloud</link>
      <pubDate>17 Jun 2018</pubDate>
      <guid>computing-in-the-cloud</guid>
      <description>&lt;!-- meta-data title: Computing in the Cloud --&gt;
&lt;!-- meta-data searchtitle:  computing-in-the-cloud --&gt;
&lt;!-- meta-data date: 17 Jun 2018 --&gt;
&lt;!-- meta-data intro: Coding day to day via a remote connection to the cloud.--&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
 An unfortunate water incident rendered my work laptop useless. While waiting for a new one I reverted to my trusty 2013 Macbook Air only to find it not up to the job of running the range of services required for day to day coding. I decided to experiment with setting up my dev environment in the cloud and see if working over a remote connection provided a feasable alternative. Here's how I got on and the various new bits of tech I discovered along the way.
&lt;/p&gt;


&lt;h3&gt;Setting up in the cloud&lt;/h3&gt;
&lt;p&gt;
	My personal site is hosted on Digital Ocean and I've dealt with servers on AWS for work so the cloud isn't new to me. As a learning experience I opted to use AWS as I haven't had to set up infrastructure from scratch in that environment. The AWS docs are pretty comprehensive and I was soon able to ssh on to a running EC2 instance that I'd setup from the online console.
&lt;/p&gt;

&lt;h3&gt;Dev environment&lt;/h3&gt;
&lt;p&gt;
  Usually I work locally on a Mac and as such all my setup scripts utilise the brew package manager. I'd opted for an Ubuntu box so manually went through the various dependencies in my script and installed the equivallent debian package using apt.  I took notes and converted these into a linux based setup script so I coulda automatically repeat the process in the future. &lt;a href="https://github.com/mikemjharris/config/blob/master/bin/install-linux.sh" target="_blank"&gt;You can checkout it out on github&lt;/a&gt;. Other config such as tmux and vim dot files worked from the off - all of which are in that same repo.
&lt;h3&gt;Laggy ssh&lt;/h3&gt;
&lt;p&gt;
	Once setup I could start coding - I generally code in the terminal so just having to ssh connection to the server is all I need. There are web based ides such as Amazon's cloud 9 if you prefer. Using ssh is ok but any slowness or interruption in the connection caused input to be laggy - fine if you're just doing a few things remotely but annoying if you're trying to code for an extended period of time.  On the recommendation of a friend at our weekly techrunners group I tried out &lt;a href="
https://mosh.org/" target="_blank"&gt;mosh&lt;/a&gt;. This uses UDP to communicate and has a whole bunch of awesome features including being able to reconnect automatically and optomistic UI.  Once using mosh I couldn't tell any difference between my local terminal and the remote. I even experimented on a 3g phone connection and it worked seamlessly!  It was so smooth I had to update the look of my remote terminal so I knew I was working in the cloud.
&lt;p&gt;

&lt;h3&gt;Saving Money with AWS lambda&lt;/h3&gt;
&lt;p&gt;
	Cloud computers aren't free. An m4.xlarge - 4cpus/16gb ram costs $170 a month. I work hard but I don't work 24h a day.  In AWS if you stop an instance you don't get charged - I calculated 8hrs of coding a day would end up costing ~$50. In addition I am often in meetings or 1-1s so anticiapted it would be even less than that.  I installed the aws cli and made sure I shut down the box whenver I was going to be away from my desk. At the end of the day though it can be easy to forget as the lure of heading home beckons. To make ensure the instance was stopped I followed &lt;a href="https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/" target="_blank"&gt;this tutuorial&lt;/a&gt; and set up an AWS lambda function to flick the off switch at 5.45pm and 11pm. The first encourages me to make sure I leave work on time, the second if I've needed to do some evening work forces me to shut down and head to bed.
&lt;/p&gt;
&lt;p&gt;
	Here's my usage over the first month of working in the cloud. It also allows me to see how much coding I am doing vs other responsibilities. The usuage for a month cost me around $25 for 100h.
&lt;/p&gt;
&lt;img src="/images/aws-usage.png" /&gt;

&lt;h3&gt;Automating setup&lt;/h3&gt;
&lt;p&gt;
	Turning the dev environment off regularly meant turning it on regularly and getting up to speed.  Starting an ec2 box takes around a minute. Then it's a case of getting my dev environemt up to running. I've written about my setup and keyboard skills &lt;a href="https://blog.mikemjharris.com/posts/me-and-my-keyboard" target="_blank"&gt;in this post&lt;/a&gt; and &lt;a href="https://github.com/mikemjharris/config/blob/master/conf/tmux/ra-full-session"&gt;have config&lt;/a&gt; which automatically sets up a tmux session with multiple windows and panes running vim, mysql console and all the services I need. This takes around 30s. So from a standing start I'm up and productive in less than 2 mins - enought time to grab a tea or re-read the jira ticket I'm working on.
&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
	While I'm happy deploying code on the cloud, I wasn't sure that coding remotely would be a seamless experience. Using the excellent mosh and harnessing the power of AWS I had a super powerful setup that I can run from anywhere whilst limiting costs through AWS lambda functions. There are other benefits such as being able to share 'local' work with anyone and being able to log on to the same environment from any computer which I'll touch on in a future post. The tools I use day to day were well suited to the shift to remote coding. I've learnt a whole load more about AWS and enjoyed the challenge of trying to solve the issue of a waterlogged laptop that had been entirely my own fault.
&lt;/p&gt;

&lt;div class="appendix"&gt;
&lt;h3&gt;Appendix&lt;/h3&gt;
&lt;p&gt;
	This was a quick run through - there are number of details I haven't mentioned along the way such as setting static ips, security groups and opening up certain ports.  If you are attempting to implement the same you will find the AWS docs combined with some light googling will get you there - happy to answer any queries if you're stuck. A big thanks to various people over the past few years who I've discussed remote coding in the cloud with and whose tips helped make my progress smoother.
 &lt;/p&gt;
&lt;/div&gt;
</description>
    </item>
    <item>
      <title>View From The RA</title>
      <link>https://blog.mikemjharris.com/posts/view-from-the-ra</link>
      <pubDate>23 May 2018</pubDate>
      <guid>view-from-the-ra</guid>
      <description>&lt;!-- meta-data title: View From The RA --&gt;
&lt;!-- meta-data searchtitle:  view-from-the-ra --&gt;
&lt;!-- meta-data date: 23 May 2018 --&gt;
&lt;!-- meta-data intro: An app to showoff pics of the Royal Academy of Arts --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  Moving to work at the Royal Academy took me away from east London and it's mix of modern offices and tech companies to an organisation in west London celebrating it's 250th anniversary.  I wanted to experience a new environment and I have in so many ways!  Of particular note is the beautiful building and the artwork displayed inside. To keep a momento and to share with others I started taking regular pictures and sharing them to Instagram.  I was frustrated that you couldn't filter by both a user and a hashtag so built an app, &lt;a href="https://view-from-the-ra.mikemjharris.com"&gt;View From The RA&lt;/a&gt; so that you can view just the pictures of the RA that I share. 
&lt;/p&gt;


&lt;p data-height="352" data-theme-id="0" data-slug-hash="EEzzpx" data-default-tab="result" data-user="mikemjharris" data-embed-version="2" data-pen-title="SVG Animated Heart Mask" class="codepen"&gt;See the Pen &lt;a href="https://codepen.io/mikemjharris/pen/EEzzpx/"&gt;SVG Animated Heart Mask&lt;/a&gt; by Mike Harris (&lt;a href="https://codepen.io/mikemjharris"&gt;@mikemjharris&lt;/a&gt;) on &lt;a href="https://codepen.io"&gt;CodePen&lt;/a&gt;.&lt;/p&gt;
&lt;script async src="https://static.codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;


&lt;p&gt;
  For me, spending time on side projects has two benefits.  Firstly I get to build some functionality that I want.  Second I get play around with some new tech. For a while I wanted to try out SVG masks - as I often do I make some sketches with code in codepen to try and learn what I'm doing and flesh out some ideas before starting on a full on app. You can see one of my test cases above - I took a previous SVG animation and layered it over an image from the RA with pretty cool results.  In the end for a whole page of images I went for something more subtly but it was fun to try a few things out although I was pretty happy with the opening image mask and animation.
&lt;/p&gt;

&lt;h3&gt;Updating a Seed project&lt;/h3&gt;

&lt;p&gt;
In setting up the app I went back to a seed project that I've used in the past as a basis for projects.  It's a bit outdated (last commits Aug 2015!) so I took the change to change some of how it's setup. The tech world has change quite a bit in the past two years.. You can see the &lt;a href="https://github.com/mikemjharris/seed-project/compare/6705a53a4a739986120f5721b29642510dd27221...8dfde22e673ebd4e0ea9d3492b024c04c7fb1018" target="_blank"&gt;chagnes on github&lt;/a&gt; but here's a quick summary:
  &lt;ul&gt;
     &lt;li&gt;Update node 9&lt;/li&gt;
     &lt;li&gt;Remove outdated package tools - i.e. bower&lt;/li&gt;
     &lt;li&gt;Convert build process to webpack from gulp&lt;/li&gt;
     &lt;li&gt;Add build and run scripts in package.json&lt;/li&gt;
     &lt;li&gt;Use ejs templating instead of jade&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/p&gt;

 &lt;h3&gt;Try out Pupeteer&lt;/h3&gt;
 &lt;p&gt;
  Google recently lauched &lt;a href="https://github.com/GoogleChrome/puppeteer" target="_blank"&gt;Pupeteer&lt;/a&gt; which provide a headless chrome experience along the lines of PhantomJS. I wanted to try it out and this project was the perfect test case.  Instagram is limiting their API so I went down the route of scraping their site for my data - this method shouldn't really be used but in this case I'm only fetching my own public data for a side project. The experience was fantastic - stable, easy to install with fantastic docs.  &lt;a href="https://github.com/mikemjharris/view-from-the-ra/blob/master/scrapper.js"&gt;This script&lt;/a&gt; runs nightly - it calls my page on instagram, saves the global variable which has the inital page data and list of images.  Headless chrome then simulates scrolling down the page and the script captures the responses of the calls to the api.  This data is all combined as an array of images and inserted as a JSON object into MongoDB to be used on the next view of the page.
 &lt;/p&gt;

 &lt;h3&gt;Deployment&lt;/h3&gt;
 &lt;p&gt;
 I've written before about my &lt;a target="_blank" href="https://blog.mikemjharris.com/posts/deploying-this-blog"&gt;home built ci / deployment tooling&lt;/a&gt;. I love the benefits of previous efforts to automate processes - now the structure was there it's a fairly straight forward procdure to get the app up on my digital ocean droplet and auto deploying when I push to git. It's not new but it is very satisfying. 
 &lt;/p&gt;


 &lt;h3&gt;The app&lt;/h3&gt;
 &lt;p&gt;
  The app itself is fairly standard - a bunch of images on a page.  The RA itself - both the building and the works of art - are really the star.  You can still just head to instagram and probably get a better experience but your viewings might be interupted by other more mundane pictures that I post
 &lt;/p&gt;
 
 &lt;h3&gt;Other new environments&lt;/h3&gt;

&lt;p&gt;
  I've written and documented the physical environment I've been exposed to at the RA. However the working environment is very different - the arts world has it's own diversity issues but in some ways it is better than in tech and finance.  It's been interesting and educational to work in an environment where the majority of employees identify as female. However building an app where I post pictures of the members of the meetings I attend isn't as appropriate as images of art.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Me and My Keyboard</title>
      <link>https://blog.mikemjharris.com/posts/me-and-my-keyboard</link>
      <pubDate>7 May 2018</pubDate>
      <guid>me-and-my-keyboard</guid>
      <description>&lt;!-- meta-data title: Me and My Keyboard --&gt;
&lt;!-- meta-data searchtitle: me-and-my-keyboard --&gt;
&lt;!-- meta-data date: 7 May 2018 --&gt;
&lt;!-- meta-data intro: How I learnt to let my fingers fly --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data twitterimage: https://blog.mikemjharris.com/images/keyboard_pink_keys.jpg  --&gt;
&lt;!-- meta-data twittercard: summary_large_image --&gt;

&lt;p&gt;
This is an unashamed, self congratulatory ode to how much I love my keyboard skills. My hands dance over the keys, words streaming from their tips, dev tools opening after a magic combo of fingers flicks, tabs switching, panes resizing, lines jumped, macros run.
&lt;/p&gt;
&lt;p&gt;
It wasn’t always this way. There’s no big secret in getting better - it’s taken time, effort and conscious practice.  This is a reminder to myself that these things don’t happen overnight.  Here’s quick journey of me and my keyboard, stopping off at all the places where I’ve worked along the way.
&lt;/p&gt;
&lt;img src="/images/keyboard_black_keys.jpg" alt="keyboard with stikcers over most of the keys"/&gt;

&lt;h4&gt;The seed of inspiration&lt;/h4&gt;
&lt;p&gt;
My first job was in finance and being able to navigate an excel spreadsheet quickly  was essential - so much so that part of the onboarding exams they took away our mouse forcing us to learn keyboard shortcuts.  Ten years in finance and the shortcuts became second nature. But there was a catch - I was still tapping away with a couple of fingers not touch typing.
&lt;/p&gt;
&lt;h4&gt;Consciously deciding to get better&lt;/h4&gt;
&lt;p&gt;
In 2011 I’d decided my future lay in coding.  Learning to code was obviously key but I also thought that if I was to spend a large chunk of my life wielding a keyboard I should try and make sure I could use it as quickly and effectively as possible.
&lt;/p&gt;
&lt;p&gt;
Learning touch typing is a lot of repetition and practice and you can fit it into short chunks of the day. This was ideal and during coffee/lunch breaks I got to finesse my skills.
&lt;/p&gt;
&lt;p&gt;
I’d also been researching coding and learnt about VIM.  This seemed to tick all the boxes in how I wanted to operate - purely focused on using the keyboard with sophisticated key strokes to help make the terminal dance.  I was hooked.  I started learning Vim. It’s hard.
&lt;/p&gt;
&lt;h4&gt;I’m a coder!&lt;/h4&gt;
&lt;p&gt;
2014 I headed off to general assembly to become a  full time coder. My touch typing was ok.  I could navigate around in a single document in vim. I was going to rule the world.  At GA we used sublime text - this was awesome in terms of managing multiple files with a whole bunch of awesome features (multiple cursors swoon…) I continued to code using sublime for the next year but I still thought Vim might be somewhere in my future so I installed a vim plugin for sublime - in insert mode you get all the sublime goodness but hit the magic escape button and you can dance the dance of Vim, hoping from word to line to paragraph with ease.
&lt;/p&gt;
&lt;h4&gt;New Job, New IDE&lt;/h4&gt;
&lt;p&gt;
2015 and I was off to MOO.  A big job at a big startup and a new big IDE to learn.  We were coding part of the time in Java and PHP and needed a more powerful tool - step in Intellij. A bit more cumbersome than sublime but it worked welland to my delight it came with a Vim plugin too.  Hurrah. My touch typing had stalled a bit so I put stickers on my keyboard to hide the keys.  You think you don’t look at your keyboard but you do. Try a few stickers (i’ve got some spare) it really challenges you although makes pairing hard...
&lt;/p&gt;
&lt;img src="/images/keyboard_pink_keys.jpg" alt="keyboard with stikcers over most of the keys"/&gt;
&lt;p&gt;
At MOO I was introduced to sshing onto servers and running code there.  When on a remote server or when coding javascript/css locally I tried to use Vim.  However I was struggling with navigating around - i’d read a blog post once saying it was ‘cheating’ to install plugins so I was trying to do without.  Luckily there were a bunch of Vim users at MOO and a slack channel to share thoughts.  The assured me plugins were the way forward and after a bunch of tips and advice I installed Ctrl P and NerdTree among others and I was off - this suddenly made it a tool I could viably use.
&lt;/p&gt;
&lt;h4&gt;Practice and Vim Golf&lt;/h4&gt;
&lt;p&gt;
I pushed myself to learn more, devouring blog posts, playing vim golf,  updating my vimrc file, asking others for tips and help and trying things out. Leaving MOO and starting at the Royal Academy I left behind Java and PHP - onto Ruby and Javascript. Most of the team there were using Vim so I decided this would be my main day to day tool - I slotted in as if I was an experienced pro - all the purposeful practice had paid off.
&lt;/p&gt;
&lt;p&gt;
Six months on and I continue to grow and learn.  For most basic functionality I reckon I’m as quick if not quicker than other tools.  However it’s the power functions that are a treat - complex, concatenated regexs updating multiple buffers is now commonplace.  Writing quick macros means tedious tasks become simple, each one saving me previous time.  I can either be more productive or finish early. In a future post i'll be talking about how I've moved my dev environment to the cloud - I don't think I could of done that as effectively if I my keyboard skills weren't up to scratch.
&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
I want to code and I want my thoughts and understanding to be the limiting factor, not my interaction with the keyboard. Do you need to touch type or learn vim?  No not at all - many coders I know don't but for me it was worth it.
&lt;/p&gt;
&lt;p&gt;
It gives me a thrill when I learn a new shortcut or feature.  I know I’m going to get better but for now I want to sit back and bask in a seven year slog that has turned out just the way I wanted it to.
&lt;/p&gt;



&lt;h4&gt;Appendix&lt;/h4&gt;
&lt;p&gt;Some links to helpful tools&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.typingstudy.com/games/falling_words"&gt;Online touch typing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.typingtest.com/"&gt;Online touch typing test&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://vimgolf.com/"&gt;Vim golf&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/mikemjharris/config/blob/master/conf/.vimrc"&gt;My Current vimrc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Museums Showoff</title>
      <link>https://blog.mikemjharris.com/posts/museums-showoff</link>
      <pubDate>3 Apr 2018</pubDate>
      <guid>museums-showoff</guid>
      <description>&lt;!-- meta-data title: Museums Showoff --&gt;
&lt;!-- meta-data searchtitle: museums-showoff --&gt;
&lt;!-- meta-data date: 3 Apr 2018 --&gt;
&lt;!-- meta-data intro: Talk about being a tech lead at museums cabaret type event --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data tags: talk --&gt;

&lt;p&gt;
The past few months I've been throwing myself into the art world - it's very different from the tech world!  In January, I attended &lt;a hre="http://museumsshowoff.org/" target="_blank"&gt;Museums Showoff&lt;/a&gt; as a member of the audience. The event is billed as an open mic for everyone who works in and loves museums. It's hosted in the basement of a bar and has a bawdy, loud cabaret feel to it and &lt;a href="https://twitter.com/NaomiPaxton" target=_blank"&gt;an awesome compere&lt;/a&gt;. It was a super entertaining evening with a multitude of fun and interesting talks from across the museum world. &lt;a href="https://twitter.com/RachelSouhami"&gt;Rachel&lt;/a&gt;, the main organiser, is always looking for fresh blood - as soon as I followed Museums Showoff on twitter I got an invite to talk at the March event.

&lt;/p&gt;
&lt;blockquote class="twitter-tweet" data-lang="en"&gt;&lt;p lang="en" dir="ltr"&gt;&lt;a href="https://twitter.com/MikeMJHarris?ref_src=twsrc%5Etfw"&gt;@MikeMJHarris&lt;/a&gt; Hello Mike, and thanks for following. Tech lead &lt;a href="https://twitter.com/royalacademy?ref_src=twsrc%5Etfw"&gt;@royalacademy&lt;/a&gt; sounds a really interesting role… and not something that’s ever been talked about at our gigs! Would you like to do a set for us sometime?&lt;/p&gt;&amp;mdash; Museums Showoff (@MuseumsShowoff) &lt;a href="https://twitter.com/MuseumsShowoff/status/950806364850458630?ref_src=twsrc%5Etfw"&gt;January 9, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;


&lt;h4&gt;Sign me up!&lt;/h4&gt;
&lt;p&gt;
Of course I said yes!  I enjoy giving talks and have found it an effective way to engage and meet people in the tech world. This was my chnace to do the same in the museums world.  Now I just had to prepare a nine minute talk about what it was like being a tech lead at the Royal Academy of Arts...
&lt;/p&gt;
&lt;h4&gt;The talk&lt;/h4&gt;
&lt;p&gt;
Me at the event in March:
&lt;/p&gt;
&lt;img src="/images/museums-showoff-talk.png" alt="me looking pretty awesome on stage with red phoenix sign behind"/&gt;
&lt;p&gt;
This was different from any other talk I've given before.  The focus was on fun and entertainment and if people learn things along the way that's a bonus. From my short time in the museums world I've found that most organistations often rely on external agencies.  I wanted to highlight the benefit of having an internal tech team: they know the organistaion, can move quickly and can iterate, improve and evolve over time. I also wanted to explain that tech, despite being all around us, can be more complex than you'd think. Oh, and I also needed to be funny...
&lt;/p&gt;
&lt;h4&gt;Showometer 2.0&lt;/h4&gt;
&lt;p&gt;
When I'd attended the event previously I'd noticed that the countdown clock on stage was version 2.0.  I thought this would be a great relatable analogy as to how tech can get complex.  Why was something that on the surface seemed so simple - a clock that counts down - be on version 2.0?
&lt;/p&gt;

&lt;h4&gt;The event&lt;/h4&gt;
&lt;p&gt;
As with most of my talks I did it without notes.  As with all the other talks I made sure &lt;a href="https://blog.mikemjharris.com/posts/talks-oct-2017"&gt;I practiced lots and lots&lt;/a&gt;. The more I practice the more natural and off the cuff it seems.  The event was a blast - I had a bunch of RA friends along cheering me on.  There were a bunch of super fun talks and a raucous audience. My section went really well.  The Showometer 2.0 analogy seemed to hit home with lots of laughs at the time and people referencing it after. Got to engage in person and on twitter with a diverse range of people working in jobs that a few months ago I never really understood or knew existed.  Mission accomplished!
&lt;p&gt;
&lt;h4&gt;Thanks&lt;/h4&gt;
&lt;p&gt;
Would highly recommend it as an event if you are interested in the world of museums. Thanks to Rachel for having me and putting on such an excellent event.  Thanks to all the other speakers - too many to mention but you can see the set list on the&lt;a hre="http://museumsshowoff.org/" target="_blank"&gt;Museums Showoff website&lt;/a&gt;
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Working at the RA</title>
      <link>https://blog.mikemjharris.com/posts/working-at-the-ra</link>
      <pubDate>28 Jan 2018</pubDate>
      <guid>working-at-the-ra</guid>
      <description>&lt;!-- meta-data title: Working at the RA --&gt;
&lt;!-- meta-data searchtitle: working-at-the-ra  --&gt;
&lt;!-- meta-data date: 28 Jan 2018 --&gt;
&lt;!-- meta-data intro: Why I moved to the RA and how the first couple of months have gone --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;

&lt;p&gt;
  At the end of 2017 I moved on from MOO after just over two years to start a new job at the Royal Academy of Arts. Two months into that job I wanted to write a bit about some of the reasons for changing and how the new job has measured up so far. Working at an awesome building as shown in the picture is definitely a small part of it!
&lt;/p&gt;

&lt;img src="/images/ra-courtyard.jpg" alt="courtyard at the RA" /&gt;
&lt;h4&gt;Two years at MOO&lt;/h4&gt;

&lt;p&gt; 
  The past two years at MOO were fantastic. For a start the environment and people was warm, friendly and supportive. Secondly I got to work on some super interesting projects, learnt a huge amount and improved way more than I thought I would.  There was lots of change along the way with MOO growing rapidly and a huge shift in the architecture of its tech (most notably moving from self hosted servers to AWS). I was lucky to have good managers who pushed and challenged me and rewarded me with promotions and more money along the way.
&lt;/p&gt;

&lt;h4&gt;Why change?&lt;/h4&gt;

&lt;p&gt;
  The opportunities in the tech world are huge - one of the reasons for changing careers to be a developer was so that I could work in sectors that were way beyond my skill set when I worked in finance. MOO was one of those and I learnt a huge amount about both physical and digital design as well as about how a startup grows. In addition I learnt way more about business cards than is normal. In joining the RA I get to learn about the arts world, meet a whole range of new people and expose myself to completely new experiences. 
&lt;/p&gt;
&lt;p&gt;
  While the RA has a big pull the job also had to measure up. Tech jobs in the arts world don't come up that often and this one was almost a perfect fit - challenges in running a team, overseeing the full tech stack, getting to code as well as being part of bigger decisions and planning. Getting to architect solutions as well as helping grow and develop a team was just what I was looking for. 
&lt;/p&gt;
&lt;p&gt;
This seemed like a perfect next step in the career path.  MOO helped me develop massively as a software engineer. This new role offered the ability to try on a number of different hats while still being able to code. 
&lt;/p&gt;


&lt;h4&gt;The first few months&lt;/h4&gt;
&lt;p&gt;
  The stars all aligned and the timing of my arrival at the end of November couldn't of been planned better. A year long procurement process for a replacement ticketing, membership and CRM solution was coming to a head - I quickly got up to speed and was able to contribute in the climax of that project.  The team was delivering a project for digitising our online collection and I was around to witness the delivery of that project. There are plenty of social events around Christmas and I threw myself into them - bonding with the team and meeting people from across the organistion.  The fancy dress on show for the RA Christmas party was a highlight of my first few weeks!
&lt;/p&gt;

&lt;p&gt;
In January we all moved back to the Royal Academy buildings - most of the staff had spent the previous two years in temporary offices in Blackfriars and were excited to be back 'home'. Building work is still progressing and our team had a couple of weeks working in the General Assembly room (pictured) and are now housed in one of the galleries for a month or two until our offices are finished.  While disruptive it's been an awesome opportunity to work right in the heart of the RA - coming to work in the mornings through the main courtyard is breath taking.  You also get a real sense of the visitors - the first weeks of the year were quiet in between exhibitions but as of the past week the RA has been teeming with friends and press for the kick off of Charles I. The public will be in next week and I can't wait to see how the atmosphere changes again.
&lt;p&gt;

&lt;img src="/images/ra-ga-room.jpg" alt="general assembly room at the RA" /&gt;

&lt;p&gt;
  On the work side it's been a good mix of new and familiar with challenges in learning all about a new architecture structure. Lots of new ways of doing things to pick up and learn in the short term and work out how to iterate and improve upon in the long term. For a 250 year old organisation our team if run very much like a startup.  The team have been very welcoming and I feel I have already helped improve and guide them on a number of areas - am sure there will be bumps and problems along the way but that's half the fun of life. Lots to do but so far it's been going well.
&lt;p&gt;





</description>
    </item>
    <item>
      <title>2018 New Year Resolutions</title>
      <link>https://blog.mikemjharris.com/posts/2018-resolutions</link>
      <pubDate>1 Jan 2018</pubDate>
      <guid>2018-resolutions</guid>
      <description>&lt;!-- meta-data title: 2018 New Year Resolutions --&gt;
&lt;!-- meta-data searchtitle: 2018-resolutions  --&gt;
&lt;!-- meta-data date: 01 Jan 2018 --&gt;
&lt;!-- meta-data intro: Plans for 2018 --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;

&lt;p&gt;
  This year I decided I'd set some New Year's resolutions. All three resolutions are things I haven't done before, are independent and have clear metrics of success. 
&lt;/p&gt;

&lt;h4&gt;2018 New Years Resolutions&lt;/h4&gt;

&lt;ul class="with-bullets"&gt;
 &lt;li&gt;Perform an unsupported handstand&lt;/li&gt;
 &lt;li&gt;Dry January&lt;/li&gt;
 &lt;li&gt;Visit all of the Royal Academy's exhibitions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Perform a free standing handstand&lt;/h4&gt;
&lt;p&gt;
As part of my regular yoga practice I've done handstands but always with support.  I've always wanted to do a free standing one and I hope this year I'll achieve it.  I have an idea of how to get there - mainly lengthening my hamstrings and doing lots of practice. On top of that I will probably need some help - I've got contact details to get private tuition as well as a studio that focuses on balancing. For inspiration I've been following &lt;a href="https://www.facebook.com/ZoeJonesHandbalancer/" target="_blank"&gt;Zoe Jones - Handbalancer on Facebook&lt;/a&gt;. Inversions here I come!
&lt;/p&gt;
&lt;h4&gt;Dry January&lt;/h4&gt;
&lt;p&gt;
  Being part of 'Dry January' has always felt a bit cliched and has never appealed. As I've failed to go for any significant period without booze in the past year I'm hoping being part of a 'movement' will provide me with the social support and understanding to go for a month without. I definitely drink too much and would love to see how I feel after 30 days. Cheers to that resolution!
&lt;/p&gt;

&lt;h4&gt;Go to all the Royal Academy's exhibitions&lt;/h4&gt;
&lt;p&gt;
 At the end of 2017 I changed jobs and started work at the Royal Academy. There were many reasons for changing jobs - mainly it was a fantastic opportunity with a challenging mix of technical skills and management. In addition to that I also wanted to learn more more about art and going to all of the exhibitions seems like a great way to go about this. The team's offices are part of the RA and we get free entry to all the exhibitions so no excuses. As part of my monthly planning I'll make sure I have the opportunity to explore the galleries.  Watch this space for how I do and what I learn. If you'd like to pop by and catch up and see what's on feel free to drop me a message.
&lt;/p&gt;

&lt;h4&gt;Achieving Other life goals&lt;/h4&gt;
&lt;p&gt;
As mentioned at the beginning these resolutions are clear, independent and self contained.  They are also nothing to do with my professional life or with my health and fitness. Both of those areas are too important to only reassess and set resolutions at the end of the year.  For both fitness and my career I have a range of goals and targets ranging from new skills or processes I want to learn in the next few weeks through to long term targets I'm aiming for. Generally I assess how I'm doing and readjust my aims on long walks - I make an effort to take a regular long, leisurely stroll to work and think about life, the universe and everything. Sometimes my mind whirls away on an annoying situation, or on a talk if I have one coming up and occasionally it sorts out what I need to be doing next in life. 
&lt;/p&gt;
  
&lt;p&gt;
  My new work is the furthest commute I'll of ever had in London - I'm hoping I can find the energy and time to make the 2h walk across town at least once a month and make sure I get valuable thinking time as well as seeing the sights. 
&lt;/p&gt;
&lt;p&gt;
 Here's hoping we all keep our resolutions!  Good luck with whatever you've committed to in 2018.
&lt;/p&gt;






</description>
    </item>
    <item>
      <title>Printing a Sideproject</title>
      <link>https://blog.mikemjharris.com/posts/printing-a-sideproject</link>
      <pubDate>20 Nov 2017</pubDate>
      <guid>printing-a-sideproject</guid>
      <description>&lt;!-- meta-data title: Printing a Sideproject --&gt;
&lt;!-- meta-data searchtitle: printing-a-sideproject  --&gt;
&lt;!-- meta-data date: 20 Nov 2017 --&gt;
&lt;!-- meta-data intro: Turning a digital creation into physical product --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;

&lt;p&gt;
It's great fun building visually interesting digital sideprojects however nothing quite beats a physical product. Recently I combined the two by taking advantage of being able to utilise one of the staff benefits of working at &lt;a href="https://www.moo.com/" target="_blank"&gt;MOO&lt;/a&gt;, free printing, to turn a digital creation into printed posters. 
&lt;/p&gt;

&lt;h4&gt;Pictures of finished product&lt;/h4&gt;
&lt;p&gt;
  Here are the finished printed posters on show!  This year has been about stepping away from the keyboard and doing more projects in the real world - the wall and slightly wonky switch in the below picture are part of this year's big project - my shed.  The posters add a touch of colour and brightness to the space.
&lt;p&gt;

&lt;img src="/images/digital-project-printed-resize.jpg" alt="posters of coulered squares with triangles in them on a shelf" /&gt;

&lt;p&gt; 
  Selection of posters fresh off the MOO press.
&lt;/p&gt;

&lt;img src="/images/all-digital-project-printed.jpg" alt="posters of coulered squares with triangles in them on a shelf" /&gt;

&lt;h4&gt;Source side project&lt;/h4&gt;

&lt;p&gt;
  The sideproject that was used to create these posters is called &lt;a href="https://www.mikemjharris.com/experiments/geometric-generator.html" target="_blank"&gt;Geometric Genrator&lt;/a&gt;. Back in April 2015 I was playing around with how to use javascript to drag and drop in the browser.  Also I wanted to create something visually interesting. At the time a number of projects (e.g. the hero image on Unicornhunt.io) were using shapes with different shades to create fantastic looking images and backdrops. Using this as inspiration I built a random pattern generator that took a base colour and then displayed a number of square split into triangles with different shades of the base colour. The control panel allows you to set the colour and size of squares and then to highlight an area and download as an image. 
&lt;/p&gt;

&lt;h4&gt;Printing&lt;/h4&gt;
&lt;p&gt;
  For the printing I took a number of different square sizes and base colours and used MOO's printfinity to produce 50 posters of different designs.  We get free printing at MOO so was happy that it was low risk in terms of personal cost - fortunately everything came out as I wanted first time! Fun to turn digital into physical and was a cheap and easy way to decorate my shed with my own creations. It made me happy :).
&lt;/p&gt;




</description>
    </item>
    <item>
      <title>Talks Oct 2017 - PWAs &amp; React</title>
      <link>https://blog.mikemjharris.com/posts/talks-oct-2017</link>
      <pubDate>16 Nov 2017</pubDate>
      <guid>talks-oct-2017</guid>
      <description>&lt;!-- meta-data title: Talks Oct 2017 - PWAs &amp; React --&gt;
&lt;!-- meta-data searchtitle: talks-oct-2017 --&gt;
&lt;!-- meta-data date: 16 Nov 2017 --&gt;
&lt;!-- meta-data intro: A couple of talks I did at meetups--&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data tags: talk --&gt;

&lt;p&gt;
  October 2017 was busy - I presented at two different meetups with two completely different talks. There was the usual stress related in preparing for a talk, the buzz of doing it and the relief after when they were all finished. In this post there are videos to the talks, links to related articles and a few words on how I got and prepped for the talks.
&lt;/p&gt;

&lt;h4&gt;People, Processes and ADRs&lt;/h4&gt;
&lt;p&gt;
A month of so back I saw a request for talks at the &lt;a href="https://meetup.react.london/" target="_blank"&gt;REACT meetup&lt;/a&gt;.  I've only been once as it's super hard to get tickets so thought this would be a way to guarantee entry.  I messaged the organisers with some broad ideas about a talk and after a short back and forth had to come up with a title. The topics for the talk had been washing around in my head for a while but having to make a quick decision was really helpful.  The meetup is at the Facebook offices and the AV setup there was fantastic. The talk went well and got good feedback especially on the last topic of ADRs.  What are those I hear you cry?  Well, checkout the video here:
&lt;/p&gt;

&lt;div class="videoWrapper"&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/ZMvGrzRnV0U" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;
  In the talk I reference various people and their talks - links to those presentations here:
  &lt;ul class="with-bullets"&gt;
    &lt;li&gt;&lt;a href="http://blog.geekmanager.co.uk/2017/11/05/creating-space-to-be-awesome-at-scotlandphp2017/" target="_blank"&gt;Meri's talk at scotland php - Creating Space to be Awesome&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.mindtheproduct.com/2017/10/great-design-for-great-digital-products-jane-austin/" target="_blank"&gt;Jane's talk at mind the product - Great design for Great Digital Products&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://skillsmatter.com/skillscasts/11082-applying-user-research-in-technical-teams#video" target="_blank"&gt;Talk by vairous MOOsters - Applying User Research In Technical Teams&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;h4&gt;There's a progressive web app for that&lt;/h4&gt;
&lt;p&gt;Talk I did at &lt;a href="https://www.meetup.com/The-JS-Roundabout/" target="_blank"&gt;JS Roundabout&lt;/a&gt;.  I'd breifly discussed presenting a while back but didn't have a talk to mind. It was only until recently when I built a small side project and presented it internally at MOO that I actually got back to the organisers (my friend Sam) about speaking.  It was very serendipidous as they needed a speaker for their next event in a couple of days.  I rushed around tidying things up and making them fit with the topic. The event was at skyskanner's awesome new offices, there was a good crowd and really enjoyed the atmosphere.  Here's the talk:
&lt;/p&gt;

&lt;div class="videoWrapper"&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/JyxMwatpFHk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
 Accompanying previous blog post about &lt;a href="https://blog.mikemjharris.com/posts/building-a-pwa"&gt;building a pwa&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;Prepping a talk&lt;/h4&gt;
&lt;p&gt;
  Both talks came about through friends and conncetions as well as being on various lists and, most importantly, putting myself forward for them.  If you're thinking about doing a talk go for it - you need to put yourself forward though - these things don't just happen.
&lt;/p&gt;
&lt;p&gt;
  My preparation for these talks (and almost all others I do) consists of writing nothing down initially but playing with ideas in my head. I live about 1h 20min walk from work - when prepping for a talk I make sure I have enough time in the mornings to walk in. Being outside and wandering through London really helps me think and allows me to flesh out the idea for the talk, whilst occasionally practicing it out loud as I go. Once i've got the start and first few sections sorted I'll put those down on some slides and repeat the process. Practice is important and I practice lots. Also I find that as I've started the talk in my head it's easier to talk on the day without notes and to sound more natural.  Also I practice. Again and again. And again. And again. It's really weird but I've found the more I practice the better the talk goes and the happier I am before during and after.
&lt;/p&gt;
&lt;p&gt;
  Was happy with both talks - people are giving up their evenings to come and hear what I have to say but also to be entertained.  I make sure there are some lightheard neutral jokes as well as some interesting ideas and topics.  Got some great discussions with attendees after at both events.
&lt;/p&gt;
&lt;p&gt;
  If you're thinking about doing a talk more than happy to offer tips and advice.  You can find &lt;a href="https://blog.mikemjharris.com/contact"&gt;contact details here&lt;/a&gt;

</description>
    </item>
    <item>
      <title>Building a PWA</title>
      <link>https://blog.mikemjharris.com/posts/building-a-pwa</link>
      <pubDate>1 Oct 2017</pubDate>
      <guid>building-a-pwa</guid>
      <description>&lt;!-- meta-data title: Building a PWA--&gt;
&lt;!-- meta-data searchtitle: building-a-pwa  --&gt;
&lt;!-- meta-data date: 01 Oct 2017 --&gt;
&lt;!-- meta-data intro: Turning this blog into a progressive web app --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;

&lt;p&gt;
  Imagine having an app on your home screen that looked the same as the one next to it, behaved in the same way but was better in almost every way?  An app that was multiple times smaller and easier to upgrade? An app that felt the same but only had to be built once to work on any platform? An app that could be available without jumping through endless hoops to get into a 'store'? An app that could be installed in one easy step from a webpage?  An app built using open web standards? That is a PWA.  
&lt;/p&gt;
&lt;p&gt; 
  This post is an ashamed love in for PWAs and about how, in only a few hours, I converted an existing website to a full blown progressive web app.  For a more balanced and rigourous view of what PWA's are Henrik Joreteg wrote  &lt;a href="https://joreteg.com/blog/betting-on-the-web" target="_blank"&gt;this excellent article&lt;/a&gt;.  
&lt;/p&gt;

&lt;h4&gt;PWA - quick, easy and beautiful&lt;/h4&gt;
&lt;p&gt;
  I've thought about making a native app for years but the barriers to entry - new languages, tools and form filling - has always put me off.  After reading a couple of articles I decided to try to convert this blog to a PWA.
&lt;/p&gt;
&lt;p&gt;
  Some of the great things that I was excited about were some of the UI improvements and accessibility. Instead of the app store you get a button that pops up which allows users to add the app to their home page with one click.  The ability to set a theme - in chrome this means the navigation bar fits the colour of your app. Once installed on your home page the url navigation bar goes away completely and your theme is used to colour the top of your app. In addition you get a funky looking opening screen. 
&lt;/p&gt;  
&lt;h4&gt;PWA's work offline&lt;/h4&gt;
&lt;p&gt; 
  The UI and interface is all well and good but the killer feature of the PWA (over normal websites) is the ability to work offline.  The service worker is responsible for this and sits between you and the network and allows your PWA to act like a native app.  The entirity of this blog can now be read offline!  Go on - try it out - turn off your internet and navigate around. Magic!
&lt;/p&gt;
&lt;h4&gt;How did I do it?&lt;/h4&gt;
&lt;p&gt;
  By standing on the shoulder's of others, a bit of determination and lots of googling.  Mainly I followed the steps &lt;a href="https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/" target="_blank"&gt;in this article&lt;/a&gt;. With any project I find if you have something you care about building it helps. I had a single page app ready and raring to be PWA'd - this blog. A single page app already has much of the structure to make a good PWA and only needs a few additional parts: A manifest.json which has some config about the theme and name of your app.  A few settings in the head of your html to reference the manifest.json and to set other config such as the theme colour.  The final bit is to add some logic so the app knows what to store offline. This belongs in the service-worker.js - to get a simple PWA working you can take the example in the tutorial, dump it into your app and update the list of files to cached to reflect the parts of your app to cache.  

  &lt;p&gt;
    You can see all that work for this blog in &lt;a href="https://github.com/mikemjharris/blog/compare/fc4de1b0184919d0a741df57827df72bc5d41bb7...26d1c9fa2994113f5e55112733457a5537d1503d" target="_blank"&gt;these commits&lt;/a&gt;.  
&lt;/p&gt;
&lt;h4&gt;Gotchas&lt;/h4&gt;
&lt;p&gt; 
  Caching is hard. Got trapped a few times by having multiple windows open or not allowing the service worker to refresh. By design the app works offline - was a little suprised when I moved on to another project but found the previous app still on localhost:8000.  You need https to get your app to work.  I'd been meaning to https my site (there's no user info on it so has been parked in the non urgent pile) and this forced me to do it.
&lt;/p&gt;
&lt;p&gt;
  This is a fairly simple PWA with no user data - caching sensitive info is not ideal.  This is a simple implementation but service workers are incredibly powerful and can cope with more complex situations but care is needed. I also don't think I've grokked the different caching strategies so will be testing if things update properly on new releases.  Pretty much guaranteed they wont but happy enough where I've got to given it's a few hours in my spare time on a side project.
&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt; 
  After wanting to create a native app for a while I was excited to port an old project to a PWA with minimal hassle.  I learnt lots along the way and as always went down some dead ends. Though I was exposed to some new ideas and apis the core work, flow and technologies were what I deal with day in day out.
&lt;/p&gt;


&lt;h4&gt;Futher reading&lt;/h4&gt;
&lt;p&gt; 
  If you do want to read more about building an app for the app store &lt;a href=":https://neave.blog/illusions-of-the-app-store-e250dcd51c2b" target="_blank"&gt;checkout Paul's article. &lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
  Posted some screenshots on twitter - they should still be viewable &lt;a href="https://twitter.com/MikeMJHarris/status/914206777180327936" target="_blank"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Mentioned https ing my site.  I followed &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04" target="_blank"&gt;these instructions using certbot&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  If you don't care that much about the browser but do get involved with CDN caching, cloudfront are implementing the service worker spec on the edge - &lt;a href="https://blog.cloudflare.com/introducing-cloudflare-workers/" target="_blank"&gt;this article explains in more detail&lt;/a&gt;.
&lt;/p&gt;




</description>
    </item>
    <item>
      <title>Personalised Art</title>
      <link>https://blog.mikemjharris.com/posts/personalised-art</link>
      <pubDate>28 Aug 2017</pubDate>
      <guid>personalised-art</guid>
      <description>&lt;!-- meta-data title: Personalised Art  --&gt;
&lt;!-- meta-data date:  28 August 2017  --&gt;
&lt;!-- meta-data searchtitle: personalised-art  --&gt;
&lt;!-- meta-data intro: Top tips for commisioning art --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;

&lt;p&gt;
  A friend posted some pictures on twitter of an artistic impression of her playing computer games. I loved it, wanted something similar and a month later I was the proud owner of a piece of art depicting me sat on a deckchair with my computer.  The awesome banner you can see below is courtesy of the talented &lt;a href="https://twitter.com/stephoodle" target="_blank"&gt;Steph&lt;/a&gt;.
&lt;/p&gt;
&lt;img src="/images/deck_chair_banner.png" alt="artists impression of me in a deckchair" /&gt;

&lt;p&gt;
  This is a post to show off that work as well as to share a few tips for anyone commissioning work - whether that be something as obviously creative as a piece of art through to something more functional such as a website. Having been on both sides of the client / creator divide I wanted to give some pointers that I think help make the whole process go smoothly as well as maximising the chance that you get what you want.  
&lt;/p&gt;

&lt;h2&gt;Three top tips for commissioning creative work&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;- Do your research&lt;/li&gt;
  &lt;li&gt;- Communicate clearly&lt;/li&gt;
  &lt;li&gt;- Be a good person (aka Don't be an asshole)&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Do your research&lt;/h3&gt;
&lt;p&gt;
To get the best results for most things in life, do some research. In this case I'd already seen my friend &lt;a href="https://twitter.com/angelsk" target="_blank"&gt;Jo's&lt;/a&gt; commissioned piece of art.  I asked her where she had got it done and was soon browsing &lt;a href="http://stephoodle.tumblr.com/" target="_blank"&gt;Steph's tumblr page&lt;/a&gt;. Using that as inspiration I took some time to think through a top level outline of what i want.
&lt;/p&gt;
&lt;p&gt;
 The design isn't the only consideration - time and money are bother important.  There was no rush in time from my end but it is worth having an idea of your timeline.  Then the big one - money.  In this case I was well prepared - having been in the web design business I have a reasonably good idea of what work like this should cost. As a point of reference &lt;a href="https://twitter.com/stephoodle/status/894857824790093825" target="_blank"&gt;here is a link to Steph's prices &lt;/a&gt;. More on this in the "don't be an asshole" section.
&lt;/p&gt;

 &lt;h3&gt;Communicate clearly&lt;/h3&gt;
 &lt;p&gt;
  Having an idea of what you want is the first step - you are employing an expert and they will know the questions to ask to information they need to do their work and get you the best results. Trust them. I messaged Steph with an outline of what I wanted referencing pieces I liked from her portfolio. She came back with a few requests, asking for a photo (see appendix), some details about my ideas and  that she required payment upfront. Paypal sprang into action and I transferred the money immediately. 
 &lt;/p&gt;
&lt;p&gt;
When the first draft came back we talked about the uses for it and Steph optimised the image for my twitter banner and provided some other resolutions. Clear, easy communication both ways and the whole process went smooth and I got an excellent piece of work created.
&lt;/p&gt;

 &lt;h3&gt;Don't be an Asshole&lt;/h3&gt;
 &lt;p&gt;
This is a given really for anything in life, but the inner asshole often seems to come out when people are dealing with creative people and processes. This can be a wide range of reasons from not understanding the work needed through to not respecting the value of it; not appreciating the time and effort over the years to learn skills; not realising that this is someone's job - not just a bit of fun on the side. Exposure isn't money so don't offer exposure. Do your research beforehand and have an idea of what you might be expected to pay. If the quote is way above your reach then that's fine - no none is forcing you to  pay it - just politely and respectively decline. Sure you can negotiate a bit if you want but what is the price of creativity?  Creative people make the world a better and more beautiful place - why chisel away and try and save a few quid?  
 &lt;/p&gt;

 &lt;p&gt;
  Remember it's another person at the end of the keyboard.  You are employing them to do a job for you because you value it. Respect them and their process.
 &lt;/p&gt;
 
 &lt;p&gt;
  Finally accept that you are taking a risk and the finished product might not be 100% what you wanted.  Understand that something creative isn't churning out Ikea furniture from the assembly line. Trust that the artist probably knows more than you on what goes together. If you aren't happy, be polite, go back with specific requests and work together to make it better. You probably didn't follow the above steps fully. If you still don't get something perfect then smile, and move on.  Life is a big wonderful ball of mess and things sometimes just don't work out. Don't ask for your money back. 
 &lt;/p&gt;

 &lt;h3&gt;Result&lt;/h3&gt;
 &lt;p&gt;
   Hope those tips help. Am sure there other things to consider but I reckon if you stick to those three tips you'll be alright.  I was thrilled with my final piece.  It's on my twitter profile and business cards. I enjoyed the process and hope that I was a good customer. Thanks Steph. 
 &lt;/p&gt;



&lt;h2&gt;Appendix&lt;/h2&gt;

&lt;h3&gt;Original Photo&lt;/h3&gt;
&lt;p&gt;
&lt;img class="thumbnail" src="/images/mike-trimmed-deckchair.png" alt="original pic of me in a deckchair" /&gt;
Here's the original pic I sent in. For various reasons we have a number of deckchairs at work (for Wimbledon we had our own homage to Murray mound with deckchairs and fake grass setup in front of large screens showing the tennis). Got a friendly co worker to snap a pic of me hard at work.
&lt;/p&gt;


&lt;h3&gt;Business cards&lt;/h3&gt;
&lt;p&gt;
&lt;img class="thumbnail" src="/images/mike-biz-cards-small.jpg" alt="biz cars with image of mike in a deckchair" /&gt;
One of the advantages of working at MOO is the perk of being able to print whatever you want for free.  It means I get to experiment more freely with designs and patterns. Here you can see the excellent results of the image on our thick luxe card with pink trim round the edges.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>New Job, New Infrastructure</title>
      <link>https://blog.mikemjharris.com/posts/new-job-new-infrastructure</link>
      <pubDate>6 Aug 2017</pubDate>
      <guid>new-job-new-infrastructure</guid>
      <description>&lt;!-- meta-data title: New Job, New Infrastructure --&gt;
&lt;!-- meta-data date: 6 August 2017  --&gt;
&lt;!-- meta-data searchtitle: new-job-new-infrastructure  --&gt;
&lt;!-- meta-data intro: What i've been up to the last few months --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;

&lt;p&gt;
  It has been a quiet few months on the blog front - that's been down to three things: New job (internally at MOO), new infrastructure (we moved to the cloud) and life (hey it's not all about tech - went on some holidays, took some time out - don't need to explain that to you).  I did want to update some of the new stuff I'm getting to work with during office hours and how that impacts what I work on in my spare time. 
&lt;/p&gt;

&lt;h4&gt;New Job&lt;/h4&gt;
&lt;p&gt;
After 18 months in the Browse team at MOO I moved to the Money team. In the Browse team we were looking after the shop window of MOO where you look at the range of products.  The two main deliverables we worked on was a new Java based CMS (Magnolia) and a front end redesign (where we build a shared style guide, implemented more complex design updates and used tools including jQuery and React.). Some of the big challenges were making an easy to use system for our editors to update content and making fast, highly cachable pages that deliver a responsive smooth experience. The Money team is very different with the focus on the account and checkout flow of the website.  The cool new product is a react/redux based single page app talking to java services in the backend. In addition there's a whole bunch of legacy php and java services to maintain and improve. It's been a  big shift and the opportunity to work with a range of new tech.
&lt;/p&gt;

&lt;h4&gt;New Infrastructure&lt;/h4&gt;
&lt;p&gt;
The other big change at work has been a move to the infamous cloud.  The platform operations team has had a huge amount of work to do over the past six months to make our infrastructure fully represented by reusable code using terraform and ansible.  I really enjoy the dev ops part of software engineering and it's been great to help out and work with that team.  There was a firm deadline and we were asked to work two Sunday's in a row.  I'm against any company that expects you to work long weekends and evening as the norm.  Occasionally doing so, especially when it is an interesting project, is just part of being in a good relationship with your employer. In addition we have been well looked after with time of in lieu and compensated with food and drinks. Plus there's the usual week to week freedoms and flexibility. We get looked after so happy to help out in return.
&lt;/p&gt;

&lt;h4&gt;Work Life Balance&lt;/h4&gt;
&lt;p&gt;
I'm generally reasonably good at balancing out work and life.  I try and listen to my body and balance it against demands at work and my own schedule. The work we do is super interesting and even outside of work I do tech related stuff like work on side projects or write this blog.  Moving to a new job I have high expectations of myself to perform at work. Getting to work with new tech is super interesting and a great experience.  When there are real world problems you learn much more than building another hello world app. With both the new job and the move to the cloud the skills I've been learning at work have matched up with areas of my own personal development.  As such time I'd of spent learning new tech in my spare time I have used to expand my knowledge of the new tools and frameworks used in the office. Not only do I learn more but I've been able to relax more during the day feeling that I'm delivering above and beyond what is expected.
&lt;/p&gt;

&lt;p&gt;
That explains the lack of blog posts for a while. Life is settling down now and after some busy months at work I made sure I took some time to invest in my fitness and also took some time off.  The wheel keeps on moving and now I'm back to a more balance place where I get to work hard at the office and play around more with my own projects in my spare time.  I've got a couple of posts I'd like to write over the next couple of months - firstly about commissioning a personalised piece of art for my twitter banner and the second about using MOO to print out images from an online personal project to help decorate my shed. Let's see if the ebb and flow of life makes those a reality. 
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Burlesque presentation</title>
      <link>https://blog.mikemjharris.com/posts/burlesque-presentation</link>
      <pubDate>14 Apr 2017</pubDate>
      <guid>burlesque-presentation</guid>
      <description>&lt;!-- meta-data title: Burlesque presentation --&gt;
&lt;!-- meta-data searchtitle: burlesque-presentation  --&gt;
&lt;!-- meta-data date: 14 Apr 2017 --&gt;
&lt;!-- meta-data intro: Couple of tips to help improve your presentation --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;p&gt;
  Presentations are hard but like pretty much any new skill sticking to a few simple rules can really improve what you deliver. This article gives you just two tips - limit your bullet points to max 3 per slide and make them appear as you go.  There you are - you're done!  Go forth and present beautifully! (but read to the end to find out why the provocative title)
&lt;p&gt;
  These two tips correct mistakes that are often made by new presenters. Seasoned pros also make them but once you have mastered a skill you can break the rules - although do keep these ones in mind. They will help the audience be more engaged with what you are delivering. Previously I also wrote about &lt;a href="https://blog.mikemjharris.com/posts/tools-and-tips-for-presenting"&gt;a few practical ways of improving your presentation&lt;/a&gt; which goes hand in hand with this article.
&lt;/p&gt;


&lt;h4&gt;1.  Max three bullet points per page&lt;/h4&gt;

&lt;p&gt;
  Three is often thought of as a special kind of number - Google the power of three for a whole range of good theories, business cases and cod psychology.  In a presentation the main reason to only have three bullet points is the fact that humans get distracted easily and have bad memories.  Three points on a slide is about all that someone can easily remember. Whatever your argument, having up to three key points rather than endless lists is going to be more powerful.
&lt;/p&gt;
&lt;p&gt;
  In addition  people are bad at listening and will try and do anything else instead of listen properly.  If you put up ten bullet points the audience will generally go ahead and read all your points and not listen to you. Their focus will be disturbed, they will have missed what you said and although they may have read the bullet points they might of missed the key information of what you are trying to deliver. If you need all the bullet points, group them up with similar themes and spread over a couple of slides, each with a specific focus.
&lt;/p&gt;
&lt;h4&gt;2. Have your bullet points appear as you mention them&lt;/h4&gt;
&lt;p&gt; 
  In a similar vein, while you may have three bullet points on a slide there might be a train of thought or argument leading you on from one to the next.  Having them up all on the screen immediately spoils any element of surprise and wont allow your audience to follow your argument as they will probably be reading ahead, guess where you are going and switch off for the more subtler points you deliver by voice.  Even if your bullet points are independent the audience will still read ahead and as mentioned in tip 1, their focus will slip.  Ideally though your points will build on each other. You tell a story with your voice and the bullet point appears as or after you make your point as a reminder for the audience of what you said.
&lt;/p&gt;
&lt;h4&gt;Burlesque Presentation&lt;/h4&gt;
&lt;p&gt;
  Think of your presentation as a burlesque show - less is more, and only reveal one item at a time.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tools and Tips for presenting</title>
      <link>https://blog.mikemjharris.com/posts/tools-and-tips-for-presenting</link>
      <pubDate>13 Feb 2017</pubDate>
      <guid>tools-and-tips-for-presenting</guid>
      <description>&lt;!-- meta-data title: Tools and Tips for presenting --&gt;
&lt;!-- meta-data searchtitle: tools-and-tips-for-presenting  --&gt;
&lt;!-- meta-data date: 13 Feb 2017 --&gt;
&lt;!-- meta-data intro: Tips and tech for live demo's and talks --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;p&gt;
  All developers at some point will do a live demo of their work, whether that's to the person next to them, in a team meeting or in a more formal context. Setting up your computer and environment will make the session go much smoother and allow you to focus on delivering your message. These are a few tools and tips that I have found help.
&lt;/p&gt;

&lt;h4&gt;Don't let your computer fall asleep&lt;/h4&gt;
&lt;p&gt;
  Computers are great.  Leave them unattended for a while and they will go into sleep mode saving you battery. Amazing for the world, terrible in the middle of a presentation where you might lose the link to your display or have to try and type your password while flustered in front of a room full of people.
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt;Solution:&lt;/b&gt; Change the sleep settings on your computer before the talk. An even easier solution is installing an app which allows you to quickly toggle your sleep settings.  I use &lt;a href="http://lightheadsw.com/caffeine/"&gt;caffeine for Mac&lt;/a&gt;. This installs a small coffee cup icon in your top toolbar.  Click this and caffeine is activated and your computer wont go into sleep mode.A quick click after the presentation and you are back to normal functionality.
&lt;/p&gt;

&lt;h4&gt;Set your editor with a light colour theme&lt;/h4&gt;
&lt;p&gt;
  Many developers like to setup their text editors with a dark background and lighter text.  While great for local work it is incredibly hard to see on a big screen. Work out where you can change your colour scheme for your text editor and before a big presentation update this. The same goes for screen shots in slides. In sublime I find `iPlastic` is a good theme for presenting.
&lt;/p&gt;

&lt;h4&gt;Tools for screen management&lt;/h4&gt;
&lt;p&gt;
  There are a number of options for presenting - mirroring is great as you can navigate while looking at your own screen. However, in many cases presenters will extend their display so they can see their notes or copy off practice code. Using a mouse is great when you are working at your desk but trying to control a cursor on a far away monitor at a difficult angle is incredibly hard. Learning keyboard shortcuts minimizes the amount of errors. Most developers know the `CMD + Tab` short cut to switch between apps but there are other shortcuts and tools for managing window size and position.  When live coding I will often want to switch between and editor, a terminal and a browser window.  Sometime I will want these to be full screen or split screen and I also want the ability to quickly move an application to my laptop.  Debugging code is sometimes easier when it is straight in front of you. 
&lt;p&gt;

&lt;p&gt;
  &lt;b&gt;Solution&lt;/b&gt; I use &lt;a href="http://www.irradiatedsoftware.com/sizeup/"&gt;size up&lt;/a&gt;  It allows you to quickly maximise a window - move it and resize it to any half or quarter of the screen and quickly shift it between monitors.  It's not only a great presentation tool but incredibly useful if you have one or more external monitors in your daily developer life.  It's relatively inexpensive and worth every penny.
&lt;/p&gt;

&lt;h4&gt;Preparation&lt;/h4&gt;
&lt;p&gt;
  Preparation always helps. This is not a tool but a tip. While you may have amazing computer foo at your desk, trying to control a mouse on a monitor over your right shoulder is a tough ask.  Practice before hand, learn any shortcuts and tricks and practice and practice and practice. Try and practice where you will be presenting. Practice with a monitor over your right shoulder, practice with a mouse that scrolls the wrong way, practice with a friend in front of you, practice taking a glass of water, practice and take a video of yourself practicing and learn from that and practice again. And then practice again.  
&lt;/p&gt;

&lt;p&gt;
  Good luck!  Have  fun and enjoy the experience knowing that you have a solid setup and can focus on showing off your knowledge and skills.  
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Terminal config</title>
      <link>https://blog.mikemjharris.com/posts/terminal-config</link>
      <pubDate>13 Dec 2016</pubDate>
      <guid>terminal-config</guid>
      <description>&lt;!-- meta-data title: Terminal config--&gt;
&lt;!-- meta-data searchtitle: terminal-config  --&gt;
&lt;!-- meta-data date: 13 Dec 2016 --&gt;
&lt;!-- meta-data intro: Making working life easier --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech --&gt;
&lt;p&gt;
  It's been on my todo list for  a long time but I finally got round to putting some of the command line config into a repo.  The tipping point came because we got given a whole bunch of remote servers at work to build and run tooling and experiments on.  It was only when working in an uncustomised environment that I realised how much configuration I had setup and how much it improved my day to day work flow.
&lt;/p&gt;

&lt;h4&gt;Easy to setup config&lt;/h4&gt;
&lt;p&gt;
  &lt;a href="https://github.com/mikemjharris/config"&gt;My config is up on github&lt;/a&gt; and is installable from the command line using curl. Simple and easy to get up and running anywhere.
&lt;/p&gt;

&lt;h4&gt;What is configured.&lt;/h4&gt;

&lt;p&gt; 
  The main change for me over the past year has been to operate increasingly in vim (having used vim bindings in Intellij and Sublime for a while). Vim is especially handy to get to grips with when dealing with remote servers. Vim out of the box is good but getting it to work even better takes  
&lt;/p&gt;

&lt;p&gt;
  The other tool that I have been using is tmux.  Initially the main benefit of tmux was that I could run a process from inside a tmux session so that when I closed the ssh session to the box the process would remain running.  From starting off using it as a necessity I have started using it in my day to day workflow to allow me to have multiple tabs open in one screen and to have set projects or folders always open together.  I find it especially useful in that when I log onto a box there are clearly labeled sessions with the appropriate file and folders open that I usually tweak so find it easy to get back in the flow of a project.
&lt;/p&gt;

&lt;h4&gt;Aliasing&lt;/h4&gt;
&lt;p&gt;
  Finally command line aliases speed up my day today work.  The three I use most are &lt;code&gt;hg&lt;/code&gt;.  This stands for &lt;code&gt;history | grep&lt;/code&gt;  which gives me a nudge on when I have used something previously.  The other two go hand in hand: &lt;code&gt;gb&lt;/code&gt; and &lt;code&gt;gcb&lt;/code&gt;.  The first &lt;a href="https://github.com/mikemjharris/config/blob/master/bin/latest-branches.sh"&gt; runs a script&lt;/a&gt; that lists all the local branches in a current repo in the order they were last checked out.  This is a huge help - I am often swapping between a number of branches when working on stories, code reviewing others code as well as running release processes.  I can remember what I was working on but can't remember the exact branch name.  Listing the top 15 in order allows me to easily spot the one I was working on. There is a number alongside the list of branches and I can run &lt;code&gt;gcb $number&lt;/code&gt; to checkout that branch! Super userful and helpful and helps speed up my development process.
&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;
  Having a centralised config has been super helpful.  For my main setup instead of running the install command I symlink to the appropriate file so that I always update the central repo whenever I add some config.  On my todo list is an easy way for other boxes to automatically check for updates and pull in the changes.  Having a roughly unified experience wherever I am has been a huge help. I'll be looking to add more config and other applications to the repo.  The other area I want to tackle is the tech and applications I install on a new laptop (brew, ruby, node etc.) Watch this space...</description>
    </item>
    <item>
      <title>Accidental Sexist</title>
      <link>https://blog.mikemjharris.com/posts/accidental-sexist</link>
      <pubDate>12 Oct 2016</pubDate>
      <guid>accidental-sexist</guid>
      <description>&lt;!-- meta-data title: Accidental Sexist --&gt;
&lt;!-- meta-data searchtitle:  accidental-sexist --&gt;
&lt;!-- meta-data date: 12 Oct 2016  --&gt;
&lt;!-- meta-data intro: How what we read influences us --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;


&lt;h4&gt;Empathetic reading..&lt;/h4&gt;
&lt;p&gt; 
  I've always loved reading - I love being wrapped up in another world and experiencing something away from everyday life.  I felt that by reading broadly I had a wide and varied view on the world and that this helped in my views and attitude to others.  I was an educated modern man. I'd walked in others shoes and understood their thoughts and day to day struggles.
&lt;/p&gt;

&lt;p&gt; 
  A couple of years ago I read a guardian article titled &lt;a href="https://www.theguardian.com/commentisfree/2015/may/18/you-might-not-think-youre-a-sexist-until-you-take-a-look-at-your-bookshelf"&gt;'You might not think you're a sexist until you take a look at your bookshelf'&lt;/a&gt;. In summary the article talked about how most people's bookshelves are dominated by male authors. One key quote I thought summarized the issue: &lt;span class="quote"&gt;when your worldview is solely shaped by men, you are missing out.&lt;/span&gt;
&lt;/p&gt;


&lt;h4&gt;Accidental sexist&lt;/h4&gt;
&lt;p&gt;
  I scoffed at the article - congratulating myself on how broad my reading literary tastes were. Luckily I keep a record of everything I read so I could even prove to myself that I wasn't an &lt;span class="quote"&gt;accidental sexist&lt;/span&gt;
&lt;/p&gt;

&lt;h4&gt;Accidental sexist&lt;/h4&gt;
    &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;&lt;/th&gt; &lt;th colspan="2"&gt;Books by:&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Year&lt;/th&gt; &lt;th&gt;Male authors&lt;/th&gt; &lt;th&gt;Female authors&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;2011&lt;/td&gt; &lt;td&gt;7&lt;/td&gt; &lt;td&gt;0&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;2012&lt;/td&gt; &lt;td&gt;15&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;2013&lt;/td&gt; &lt;td&gt;16&lt;/td&gt; &lt;td&gt;3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;2014&lt;/td&gt; &lt;td&gt;13&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;


&lt;p&gt;
  Soooo.. turns out I was a sexist reader.  There may be reasons why this was the case but non of them really matter. The situation was that my reading material was completely unbalanced.  If those were the stats for headcount at a company or a meetup I'd be outraged. 
&lt;/p&gt;

&lt;p&gt;
  In addition I was also a little shocked about my lack of self awareness. If I could be far off in that perception of my reading habits then what about everything else?  That thinking takes you to the void - and while I like giving the void a little wink and a smile occasionally let's just stick with how I dealt with my literary inbalance.
&lt;/p&gt;

  &lt;h4&gt;Improving&lt;/h4&gt;
  &lt;p&gt;
    So I took a conscious effort from when I read the article in May 2015 to read more female authors. It was great - I read some fantastic books. Some a little heavy and about four in a row with a suicide at their denouement but I enjoyed reading as much as I had in the previous years. Hopefully I was getting a view of the world from a female point of view. I wasn't &lt;span class="quote"&gt;missing out.&lt;/span&gt;
  &lt;/p&gt;


  &lt;h4&gt;Diets and Exercise&lt;/h4&gt;
  &lt;p&gt;
    Fantastic - I'd sorted myself out!  But like many resolutions I fell out of the habit. I sat down a few weeks ago to look at what I'd read in 2016 and was a little disturbed to find that I had read one female author and six male. There were reasons for the books I'd chosen but I realised I needed to keep at it, to stick to a balanced reading diet, to a meaningful mental workout to keep an even view on the world. &lt;/p&gt;

    &lt;p&gt;
      This post it a little note to myself that I need to stick at it. And not just male and female but books from all walks of like.  I'm thankful that years ago I started recording what I read and I'm happy that I actually went and checked after reading the article. Hopefully my view on how to treat others wont be sabotaged by an ineffective reading list
  &lt;/p&gt;


  &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;&lt;/th&gt; &lt;th colspan="2"&gt;Books by:&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Year&lt;/th&gt; &lt;th&gt;Male authors&lt;/th&gt; &lt;th&gt;Female authors&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt;  &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;2015&lt;/td&gt; &lt;td&gt;5&lt;/td&gt; &lt;td&gt;6&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;2016&lt;/td&gt; &lt;td&gt;6&lt;/td&gt; &lt;td&gt;2&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;

  &lt;br&gt;
</description>
    </item>
    <item>
      <title>Magnolia Promo Video</title>
      <link>https://blog.mikemjharris.com/posts/promo-video</link>
      <pubDate>20 Sept 2016</pubDate>
      <guid>promo-video</guid>
      <description>&lt;!-- meta-data title: Magnolia Promo Video--&gt;
&lt;!-- meta-data searchtitle: promo-video  --&gt;
&lt;!-- meta-data date: 20 Sep 2016 --&gt;
&lt;!-- meta-data intro: Getting filmed for the day  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts --&gt;
&lt;!-- meta-data tags: talk --&gt;

&lt;p&gt;
  After our talk at the &lt;a href="https://blog.mikemjharris.com/posts/magnolia-conference"&gt;Magnolia conference&lt;/a&gt; we were contacted at MOO about appearing in a video for the Magnolia website. We have been very happy with the product and were happy to help - hopefully they will be even quicker to respond to bugs and feature requests :).  We have also just moved offices and this was an ideal opportunity to show those off.
&lt;/p&gt;

&lt;div class="videoWrapper"&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/f7vYgJE7uO8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4&gt;What was it like&lt;/h4&gt;
&lt;p&gt;
  It was good fun having a cameraman in the office for a day. You aren't always aware of the effort and time that goes into other peoples jobs and it was intriguing to be part of someone else's work.
&lt;/p&gt;

&lt;h4&gt;Speaking&lt;/h4&gt;
&lt;p&gt;
  Personally being in front of a camera is very different to being on stage.  Words and thoughts definitely got lost somewhere between brain and mouth.  Fortunately there were enough good parts to get into the video.  The other speakers were excellent! Thanks to everyone who was involved.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Magnolia Conference</title>
      <link>https://blog.mikemjharris.com/posts/magnolia-conference</link>
      <pubDate>15 Jul 2016</pubDate>
      <guid>magnolia-conference</guid>
      <description>&lt;!-- meta-data title: Magnolia Conference --&gt;
&lt;!-- meta-data searchtitle: magnolia-conference  --&gt;
&lt;!-- meta-data date: 15 July 2016 --&gt;
&lt;!-- meta-data intro: Building a Java based CMS  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;
&lt;!-- meta-data tags: talk --&gt;

&lt;p&gt;
  At MOO we have spent the past year building out a new CMS.  In June this year I spoke about some our journey, some of the challenges we faced and how we integrated Magnolia into our systems.  Check out the YouTube video below - feel free to drop me messages about any of the content.
&lt;/p&gt;

&lt;div class="videoWrapper"&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/X3QvJUOpm5k" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h4&gt;Personal Review&lt;/h4&gt;
&lt;p&gt;
  For my talk I was pleased with how it went and that I was well prepared.  For future talks the things I would improve would be to speak slower and to add in some humour. Overall I enjoyed the experience and had some good questions after the talk and some good follow up email conversations.
&lt;/p&gt;

&lt;h4&gt;The Conference&lt;/h4&gt;
&lt;p&gt;
  The overall conference was interesting with a great balance of speakers and mini breakout sessions. Attendees included the full spectrum of developers along with sales and business people. A really interesting couple of days and I would highly recommend it if you use Magnolia or are thinking of using it.
&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Transparency</title>
      <link>https://blog.mikemjharris.com/posts/transparency</link>
      <pubDate>10 Apr 2016</pubDate>
      <guid>transparency</guid>
      <description>&lt;!-- meta-data title: Transparency  --&gt;
&lt;!-- meta-data date: 10 Apr 2016  --&gt;
&lt;!-- meta-data searchtitle: transparency  --&gt;
&lt;!-- meta-data intro: Seeing my procrastination  --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  Good news is life is great: work is going well, I've been traveling and getting fit again. I've run a marathon, been to Japan for the first time and learnt a whole load of new technologies. What I haven't done is blog...
&lt;/p&gt;

&lt;h4&gt;Seeing my procrastination&lt;/h4&gt;

&lt;p&gt;
  When I started this blog I wrote in the  &lt;a href="http://blog.mikemjharris.com/posts/why-blog"&gt;first post&lt;/a&gt; that it is hard to continue blogging.  With a change in job I've definitely found it harder and a busier personal life hasn't helped.  The odd evening I've thought of writing a post and procrastinated. I did do one draft - and the beauty of doing a blog where the content is files on github rather than on databases you can see my thoughts and rough drafts.  This post is an apology for not writing and but I did think about it and git history is proof!
&lt;/p&gt;

&lt;h4&gt;Danger of git history&lt;/h4&gt;

&lt;p&gt;
  When writing code you aren't expected to write great code first time. It is often terrible. The more you understand the problem and the more you refactor the code gets better. Yes, you are judged on your git history but some refactoring should always happen.  Words are different. People can easily get upset by words (although some people do get pretty worked up by code...) I hope I am not writing anything controversial but the way I write first drafts are often an all over the place stream on conscience. I then rewrite it again and again. I'm conscious that the git history will show stuff that I didn't want to publish.  Hopefully anyone spending the time to read the git history and my draft blogs will understand this. 
&lt;/p&gt;

&lt;h4&gt;An apology&lt;/h4&gt;
&lt;p&gt;
  If you are reading this because you looked at my history, got upset and messaged me and I responded by sending you this post:  present me apologises for future/past me . Hey - it's just words.  Some of my code is much more upsetting 
&lt;/p&gt;


&lt;h4&gt;Plans&lt;/h4&gt;
&lt;p&gt;
  Just so it's here in the open, and once you write stuff down you're much more likely to do it!  In the next few months I'd like to write a bit about chosing the right tools - we use jquery at work and it does everything that we need - front end frameworks are great but pick the tool that works for you.  I want to write a bit about coding in Java after a year of pure javascript. I also want to put some of the content of my monthly talks at General Assembly into one or maybe two posts. I'll also be speaking at a conference in July about Magnolia the CMS we are currently implementing at MOO - and will write a small post about that. Fingers crossed in a few months I have a few posts out there, or at least a few draft branchs on github that I can point at and say that I definitely thought about blogging.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Changing jobs</title>
      <link>https://blog.mikemjharris.com/posts/changing-jobs</link>
      <pubDate>24 Dec 2015</pubDate>
      <guid>changing-jobs</guid>
      <description>&lt;!-- meta-data title: Changing jobs  --&gt;
&lt;!-- meta-data searchtitle: changing-jobs  --&gt;
&lt;!-- meta-data date: 24 Dec 2015 --&gt;
&lt;!-- meta-data intro: I changed jobs!  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts  --&gt;


&lt;p&gt;
  After around one year at &lt;a target="_blank" href="http://mammal.io"&gt;mammal&lt;/a&gt; I decided I wanted to work in a larger company. At a small startup you have a whole range of problems to solve and exposure to the full stack. I'd learnt a huge amount but I wanted to have exposure to a more established company with a large number of users, significant revenue and employees with a wider range of skills.
&lt;/p&gt;

&lt;h4&gt;MOO&lt;/h4&gt;
&lt;p&gt;
  I'm pleased to say that I recently started a job at &lt;a target="_blank" href="http://www.moo.com"&gt;MOO&lt;/a&gt;. They are a successful company with a focus on design and a large creative team. The tech teams are split into small crews with a mixture of developers, designers, qa and project managers.  Each team is responsible for a specific area and it feels like working in a smaller startup with all the benefits of a larger company. The creative side of the company was a big draw and I've really enjoyed working closely with experience designers and the creative team during my first couple of months.
&lt;/p&gt;

&lt;h4&gt;Advice&lt;/h4&gt;
&lt;p&gt;
  These are just some top level tips - every case is different but these are the couple of things that helped me find somewhere new to work.
&lt;/p&gt;
&lt;p&gt;
  You spend most of your waking life at your job.  As such it is worth putting in the time and effort to find what is right for you. There are lots of jobs around in the tech world but they may not be the right fit.  Do lots of research and ask people for advice. When approaching a company make sure you know what they do and have looked at their website. It's a small thing but I got a couple of interviews based solely on the fact that I had written a personalised email with a comment about their website. The little details often make a difference.
&lt;/p&gt;
&lt;h4&gt;Ask me anything!&lt;/h4&gt;
&lt;p&gt;
  I previously wrote &lt;a target="_blank" href="http://mikemjharris.tumblr.com/"&gt;a blog about moving into the tech world&lt;/a&gt;. I still get plenty of questions related to those posts from people looking to get into the tech world or looking to change jobs and careers. One of key areas that differentiates the tech world is the support and help that everyone gives each other.  Many people have helped me over the years giving me advice and help and I am always more than happy to help out anyone who approaches me. If you are reading this and want to ask me anything - whether it's about my experiences in a small startup for the past year, how to look for a job, what it's like in a new company or what life is like in London - feel free to get in touch. hello@mikemjharris.com. I will try and respond and either help or point you in the right direction.
&lt;/p&gt;



</description>
    </item>
    <item>
      <title>Flexbox</title>
      <link>https://blog.mikemjharris.com/posts/flexbox</link>
      <pubDate>18 Oct 2015</pubDate>
      <guid>flexbox</guid>
      <description>&lt;!-- meta-data title: Flexbox  --&gt;
&lt;!-- meta-data searchtitle:   flexbox --&gt;
&lt;!-- meta-data date: 18 Oct 2015 --&gt;
&lt;!-- meta-data intro: Playing with flexbox --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  I've been meaning to write about flexbox for a while. I used it to produce most of the layout of this blog and the more projects I use it with the more I enjoy using it. It solves a whole range of problems that used to be very hard, hacky or impossible to fix. 
&lt;/p&gt;

&lt;p&gt;
  I meant to produce a whole range of examples but the past two months have been taken up with changing jobs and travelling! For now take my word for it and a whole host of people on &lt;a href="https://twitter.com/search?q=flexbox&amp;src=typd" target="_blank"&gt;twitter&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  I would suggest having this &lt;a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/" target="_blank"&gt;css tricks guide to flexbox open&lt;/a&gt;. For about six months this was my most visited website and I know that many others have found it essential.
&lt;/p&gt;

&lt;p&gt;
  One quick example: When showing something off the best place is for it to be right in the middle of the view.  This is a real pain without flexbox - with flexbox it means adding the following rules to the body (or container element).
&lt;/p&gt;

&lt;p&gt;
  &lt;code&gt;
    display: flex;&lt;br&gt;
    align-items: center;&lt;br&gt;
    justify-content: center;&lt;br&gt;
  &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
   I use this for most of my experiments in codepen. See the embedded pen below for an example.
&lt;/p&gt;

&lt;p data-height="268" data-theme-id="0" data-slug-hash="XmzYMQ" data-default-tab="result" data-user="mikemjharris" class='codepen'&gt;
    See the Pen &lt;a href='http://codepen.io/mikemjharris/pen/XmzYMQ/'&gt;Standard pen setup&lt;/a&gt; by Mike Harris (&lt;a href='http://codepen.io/mikemjharris'&gt;@mikemjharris&lt;/a&gt;) on &lt;a href='http://codepen.io'&gt;CodePen&lt;/a&gt;.
&lt;/p&gt;
&lt;script async src="//assets.codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;


</description>
    </item>
    <item>
      <title>Blogimations</title>
      <link>https://blog.mikemjharris.com/posts/blogimations</link>
      <pubDate>31 Aug 2015</pubDate>
      <guid>blogimations</guid>
      <description>&lt;!-- meta-data title: Blogimations  --&gt;
&lt;!-- meta-data searchtitle:   blogimations --&gt;
&lt;!-- meta-data date: 31 Aug 2015 --&gt;
&lt;!-- meta-data intro: A look into some of the animations used in this blog  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  I love building stuff on &lt;a href="http://codepen.io/mikemjharris" target="_blank"&gt;codepen&lt;/a&gt;. Easily shareable projects and an excellent online editor with all your favourite HTML and CSS pre-processors built in. Most important has been the community - lots of encouragement as well as tips from a delightful bunch of developers and designers.
&lt;/p&gt;

&lt;p&gt;
  Codepen is a great place to experiment but I often question how these proofs of concept would fit into the real world (by which I mean a production website...)
&lt;/p&gt;

&lt;p&gt;
  When building this blog I wanted to unleash some of my experiments and see how they could add to the enjoyment and usability of a project. I also wanted to have fun! This post is a broad review of the techniques and technologies involved as well as example pens.
&lt;/p&gt;

&lt;h4&gt;Technologies&lt;/h4&gt;
&lt;p&gt;
  On this website I've shied away from using libraries to build the animation and relied instead upon standard CSS transition and animations as well as SVG and SMIL. I've found that libraries make things easier and better supported across browsers however I often don't learn as much about how the actual animations work. This project is mainly for myself and as well as the tech community who will generally be using a modern browser. As such I've preferred to learn more and sacrifice some performance/looks on older browsers.
&lt;/p&gt;

&lt;h4&gt;Techniques&lt;/h4&gt;
&lt;p&gt;
  Almost any post that I have read on animation usually refers to the &lt;a href="https://en.wikipedia.org/wiki/12_basic_principles_of_animation" target="_blank"&gt;Disney twelve basic principles of animation&lt;/a&gt;. If you are into animation you will be sick of reading about it. If you aren't then it is worth a look over - one of those lists that you wouldn't come up with yourself but when you read it seems so obvious.
&lt;/p&gt;

&lt;h4&gt;CSS animations&lt;/h4&gt;
&lt;p&gt;
  For the menu and post showing the animations are all done with CSS animations and transitions and are triggered by adding and removing classes with Javascript.  While I am more than happy to use javascript for animation (I wrote a JS based &lt;a href="http://snowman.mikemjharris.com" target="_blank"&gt;snowman shooting game&lt;/a&gt;) I find that if you are just changing CSS attributes then that should be done with CSS.  JS for action, CSS for display.
&lt;/p&gt;
&lt;p&gt;
  The springy menu on the left (on desktop) is a big, bouncy animation to show that the site is lively and fun.  I've stripped out the main animation and put it into a codepen.  While I could point you in the direction of the relevant code on &lt;a href="https://github.com/mikemjharris/blog" target="_blank"&gt;github&lt;/a&gt; this would mean looking at several different files.  If you wanted to play with it you would have to set up the environment.  With codepen you can see the relevant parts all in one place and can tweak and fiddle to your hearts content.
&lt;p&gt;
&lt;p data-height="268" data-theme-id="0" data-slug-hash="LVjmYe" data-default-tab="result" data-user="mikemjharris" class='codepen'&gt;See the Pen &lt;a href='http://codepen.io/mikemjharris/pen/LVjmYe/'&gt;Bouncy Menu animation&lt;/a&gt; by Mike Harris (&lt;a href='http://codepen.io/mikemjharris'&gt;@mikemjharris&lt;/a&gt;) on &lt;a href='http://codepen.io'&gt;CodePen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
  A quick reivew of the other animations involved with the menu system include a prime as you hover over a menu item, an explosion to the right as the menu item is catapulted left.  There is a little wibbly wobbly recoil. The right hand pane explodes with the new menu item.
&lt;/p&gt;

&lt;h4&gt;SVG Animations&lt;/h4&gt;
&lt;p&gt;
  This year I have lots of fun with SVG animations - I find them incredibly interesting and fun! My most popular codepen is the twitter animated follow button (shown below). I kindly borrowed the twitter logo and then animated it along a path with some 'followers' in tow. The word 'follow' is clipped from view and slowly shown.  This was done a while ago and I now wince at some of the long winded hacks I employed and the repetition of code. Makes me feel happy that I'm constantly learning and improving! In future a smattering of 'use' and a couple of frozen fill modes would provide a much neater solution.
&lt;/p&gt;
  &lt;p data-height="268" data-theme-id="0" data-slug-hash="yyEwVR" data-default-tab="result" data-user="mikemjharris" class='codepen'&gt;See the Pen &lt;a href='http://codepen.io/mikemjharris/pen/yyEwVR/'&gt;Animated Twitter Follow Button&lt;/a&gt; by Mike Harris (&lt;a href='http://codepen.io/mikemjharris'&gt;@mikemjharris&lt;/a&gt;) on &lt;a href='http://codepen.io'&gt;CodePen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;
  The twitter share button was done around the same time and has similar bits of painful code.
&lt;/p&gt;
&lt;p data-height="268" data-theme-id="0" data-slug-hash="RPMrGG" data-default-tab="result" data-user="mikemjharris" class='codepen'&gt;See the Pen &lt;a href='http://codepen.io/mikemjharris/pen/RPMrGG/'&gt;Twitter Share Animation.&lt;/a&gt; by Mike Harris (&lt;a href='http://codepen.io/mikemjharris'&gt;@mikemjharris&lt;/a&gt;) on &lt;a href='http://codepen.io'&gt;CodePen&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
  That was a brief overview of the animation techniques used in this blog - mainly CSS and SVG. Lots of fun making it and I think it adds energy to the whole project. Animation can be a a super powerful tool to improve the users understanding and interaction with a web page.  It can also be a huge distraction if used too much or in the wrong places. In this project I preferred to err on the side of excess - a different project may require a more nuanced approach.
&lt;/p&gt;
&lt;p&gt;
  My plan over the next months is to improve not only my knowledge of how to make web animations but to learn more about how they can complement and be integrated in to sites.
 &lt;/p&gt;

&lt;!-- TODO for now this runs when the page loads - ideally we want to include this in the layout part so it is loaded initially and then need to trigger the section that loads the pen on the page --&gt;
&lt;script async src="//assets.codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;

</description>
    </item>
    <item>
      <title>Templating on client and server</title>
      <link>https://blog.mikemjharris.com/posts/templating-on-the-client-and-server</link>
      <pubDate>21 Jul 2015</pubDate>
      <guid>templating-on-the-client-and-server</guid>
      <description>&lt;!-- meta-data title: Templating on client and server  --&gt;
&lt;!-- meta-data date: 21 Jul 2015  --&gt;
&lt;!-- meta-data searchtitle: templating-on-the-client-and-server  --&gt;
&lt;!-- meta-data intro: Templating on client and server --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  Back in the good old days when you asked for a web page you got a web-page. But then you wanted another page and you got another whole web page.
&lt;/p&gt;

&lt;p&gt;
  Then all these wonderful javascript frameworks came along and you could skip from page to page without a care in the world, just waiting for a small chunk of data to come back.
&lt;/p&gt;

&lt;p&gt;
  This was fine - if I click on a link I expect something to happen - a little spinner while something loads seems logical.  But when I load a page, and the outline is there and then a spinner whirls away - that seems wrong.  There was one step in requesting the page - surely I should just get the whole page!  Especially when the layout moves and you thought you'd clicked on a button but in reality had accidentally liked a photo of your great aunt.
&lt;/p&gt;
&lt;h4&gt;Handlebars&lt;/h4&gt;
&lt;p&gt;
  When building this blog project I wanted the speed of updating pages using scripting behind the scenes but wanted that first request to return the whole page.  I decided to try out &lt;a href="http://handlebarsjs.com/"&gt;handlebars&lt;/a&gt; as I had heard good things and from what I could see it fitted what I wanted to do.  If you've ever used a templating language then it is fairly easy to pick up. Handlebars is very minimal so lots of the functionality you would find as standard elsewhere you have to build yourself.
&lt;/p&gt;
&lt;p&gt;
  As the name suggests, handlebars.js is javascript based and you can use it on the server and the client. This was perfect for what I wanted - when a page was requested from the server handlebars would create the markup for the page there and send it all down in the initial request. In subsequent page requests handlebars on the client deals with updating the relevant part of the page.
&lt;/p&gt;
&lt;p&gt;
  The other benefit of this is that if for some reason javascript isn’t running on the client then a normal http request will be made and the user will still see the page in all its glory.
&lt;/p&gt;
&lt;p&gt;
  You can take a look at the project on github - the key part with sharing the templates between the server can be found in &lt;a href="https://github.com/mikemjharris/blog/blob/master/server/server.js#L53" title="github"&gt;this section of code&lt;/a&gt;


&lt;/p&gt;
&lt;p&gt;
  There we are - templating that means that you get the power of a javascript powered web app with the better user experience of an old school webpage. Thank you handlebars.
&lt;/p&gt;




</description>
    </item>
    <item>
      <title>SVG Toggle Hack</title>
      <link>https://blog.mikemjharris.com/posts/svg-toggle-hack</link>
      <pubDate>4 Jun 2015</pubDate>
      <guid>svg-toggle-hack</guid>
      <description>&lt;!-- meta-data title: SVG Toggle Hack  --&gt;
&lt;!-- meta-data searchtitle: svg-toggle-hack  --&gt;
&lt;!-- meta-data date: 4 June 2015 --&gt;
&lt;!-- meta-data intro: Toggling SVG animation without libraries or scripting  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;


&lt;p&gt;Aren't SVG buttons awesome? You click, you see a great animation and everyone has a warm, fuzzy, happy feel.  One thing has been bugging me - toggling. An SVG animation can be started by a click event just by adding an atrribute to the SVG itself. To toggle an animation (say a 'like' button) you either have to rely on fancy css tranisitons or some scripting plus maybe a library (many thanks to &lt;a href="http://codepen.io/SaraSoueidan/"&gt;@sarahsouheiden&lt;/a&gt; for the tip to try out &lt;a href="http://greensock.com/"&gt;greensock&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;After much playing around I managed to hack my way to a button that toggles without the need for any scripting. Here is a breakdown of the thought process (nicely sanitised without the dead-ends and stupid mistakes along the way). &lt;/p&gt;

&lt;h2 id="start-with-an-svg-animation-you-want-to-toggle"&gt;Start with an SVG animation you want to toggle&lt;/h2&gt;

&lt;p&gt;For this article the starting point is a plus button that turns into a tick. The pen below shows the starting point, the end point and a looping animation between the two states.  The button consists of a &lt;code&gt;circle&lt;/code&gt; element with two &lt;code&gt;path&lt;/code&gt; elements. The animation moves the paths into a single point in the centre and then out into a cross or a tick.&lt;/p&gt;

&lt;div&gt;&lt;iframe id="cp_embed_65eaa9c17a77197629bc3c2fdfe6417f" src="//codepen.io/mikemjharris/embed/65eaa9c17a77197629bc3c2fdfe6417f?height=268&amp;amp;theme-id=0&amp;amp;slug-hash=65eaa9c17a77197629bc3c2fdfe6417f&amp;amp;default-tab=result&amp;amp;user=mikemjharris" scrolling="no" frameborder="0" height="268" allowtransparency="true" allowfullscreen="true" class="cp_embed_iframe undefined" style="width: 100%; overflow: hidden;"&gt;&lt;/iframe&gt;&lt;/div&gt;



&lt;h2 id="starting-an-animation-on-click"&gt;Starting an animation on click&lt;/h2&gt;

&lt;p&gt;In the pen below the circle in the middle is what we want to animate. For now we have two circles on either side which will be used to control the central animation. Triggering an animation on a click can be done by adding following attribute:  &lt;/p&gt;

&lt;p&gt;
  &lt;code&gt;begin="click"&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;This triggers an animation on the element it is attached to. An animation on a different element can be triggered at the same time. The circle on the left (labelled start) has an animation that for now doesn't do anything, that begins on a click and has an id.&lt;/p&gt;

&lt;p&gt;
  &lt;code&gt;id="startAnimation"&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;For the centre circle the looping seen in the first pen is split up into a forward and reverse animation .  We begin the forward animation &lt;em&gt;at the same time as the startAnimation&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;
  &lt;code&gt;begin="startAnimation.begin"&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;We do exactely the same for the reverse circle.  Set up an animation that doesn't do anything, give it an id and start the reverse animation for the centre circle when it is clicked.&lt;/p&gt;

&lt;p&gt;Check  out the pen below - click on the start circle, then on the reverse and watch the central animation toggle.&lt;/p&gt;

&lt;div&gt;&lt;iframe id="cp_embed_919e19f06a493c4eb6402c4bb52847c7" src="//codepen.io/mikemjharris/embed/919e19f06a493c4eb6402c4bb52847c7?height=268&amp;amp;theme-id=0&amp;amp;slug-hash=919e19f06a493c4eb6402c4bb52847c7&amp;amp;default-tab=result&amp;amp;user=mikemjharris" scrolling="no" frameborder="0" height="268" allowtransparency="true" allowfullscreen="true" class="cp_embed_iframe undefined" style="width: 100%; overflow: hidden;"&gt;&lt;/iframe&gt;&lt;/div&gt;



&lt;h2 id="stopping-the-forward-animation-being-repeated"&gt;Stopping the forward animation being repeated&lt;/h2&gt;

&lt;p&gt;Great! We pretty much have a toggling animation.  However, if you click on the left circle twice in a row then we get the same forward animation.  Also (you may be ahead of me here and have got to this already!) we do not want two circles either side but layer them on top of the button. How do we ensure that the correct circle is clicked on?&lt;/p&gt;

&lt;p&gt;The solution here is to make those animations within the start and reverse circles do something. In this case we want the circle clicked on to disappear by changing the radius to 0.&lt;/p&gt;

&lt;p&gt;For the other circle we want to set the inital radius as 0 so you can't click it. Just as we did for the main animation we will trigger an animation that changes its radius from 0 to 100 when the other button is clicked.&lt;/p&gt;

&lt;p&gt;We will then do exactly the same but in reverse for the reverse part of the toggle. Hopefully the pen below will make things a bit clearer. Have a play clicking on the start and stop buttons and watch them shrink and grow.&lt;/p&gt;

&lt;div&gt;&lt;iframe id="cp_embed_1814a0ee2862870aebca43b0c9b2eec9" src="//codepen.io/mikemjharris/embed/1814a0ee2862870aebca43b0c9b2eec9?height=268&amp;amp;theme-id=0&amp;amp;slug-hash=1814a0ee2862870aebca43b0c9b2eec9&amp;amp;default-tab=result&amp;amp;user=mikemjharris" scrolling="no" frameborder="0" height="268" allowtransparency="true" allowfullscreen="true" class="cp_embed_iframe undefined" style="width: 100%; overflow: hidden;"&gt;&lt;/iframe&gt;&lt;/div&gt;



&lt;h2 id="bringing-it-all-together"&gt;Bringing it all together&lt;/h2&gt;

&lt;p&gt;The final step is to bring it all together - literally!  Instead of the control circles being either side we put them on top of the centre element. The order is important here - the controls should be last so that they are on top of the pile and will register the click event. &lt;/p&gt;

&lt;p&gt;As amazing as those control circles are, we don't want them hiding our animation. By setting &lt;code&gt;fill-opacity="0"&lt;/code&gt; they will be hidden from view. &lt;/p&gt;

&lt;p&gt;With SVG (or CSS) animations the general rule of thumb is whatever speed you think is ok, the actual speed should be faster. The controls should shrink in size almost instantly. &lt;code&gt;dur=0.01s&lt;/code&gt; seems pretty quick to me.  The other animations have also been given a bit of a nudge.&lt;/p&gt;

&lt;p&gt;The final tweak was to add an extra animation on the button circle that shrinks the radius slightly so it looks like it is being clicked. Check out the finished pen - toggle away to your hearts content! &lt;/p&gt;

&lt;div&gt;&lt;iframe id="cp_embed_11e2a013511a3ad19245ad563000be80" src="//codepen.io/mikemjharris/embed/11e2a013511a3ad19245ad563000be80?height=268&amp;amp;theme-id=0&amp;amp;slug-hash=11e2a013511a3ad19245ad563000be80&amp;amp;default-tab=result&amp;amp;user=mikemjharris" scrolling="no" frameborder="0" height="268" allowtransparency="true" allowfullscreen="true" class="cp_embed_iframe undefined" style="width: 100%; overflow: hidden;"&gt;&lt;/iframe&gt;&lt;/div&gt;



&lt;hr&gt;

&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Great we have a working toggle button.  We can amend the reverse animation so that the untoggle maybe does something slightly different.  By chaining together as many of these animations we can have multi state options. In the real world a library such as &lt;a href="http://greensock.com/"&gt;greensock&lt;/a&gt; will have more power and flexibility but this hack provides a fun and interesting way of toggling an SVG animation as well as learning more about how SVG animations work.&lt;/p&gt;

&lt;h2 id="issues"&gt;Issues&lt;/h2&gt;

&lt;p&gt;This works great here but what issues could there be in the real world?  The two that I can think of are:&lt;/p&gt;

&lt;p&gt;You can only have one id on a page. If this element is repeated then when you click on the first element on the page the id of that animation will trigger all the svg elements!  A solution would be dynamically creating the ids on the SVG (I had a play with $index in an angular repeator and it didn't work for me). Alternatively does anyone know if you can namespace the ids in an SVG so they don't interfere with each other?&lt;/p&gt;
&lt;p&gt;The second issue is that you can't set the initial state - it is always a cross. Some scripting could be used or the whole structure could be recreated but with a different starting point.&lt;/p&gt;

&lt;p&gt;Any other issues that spring to mind?&lt;/p&gt;

&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;

&lt;p&gt;I've loved playing with SVG over the past few months. What has made it especially enjoyable is the codepen community. Special thanks to &lt;a href="http://codepen.io/AmeliaBR/"&gt;@AmeliaBR&lt;/a&gt;,  &lt;a href="http://codepen.io/SaraSoueidan/"&gt;@sarahsouheiden&lt;/a&gt; and &lt;a href="http://codepen.io/chriscoyier/"&gt;@chriscoyier&lt;/a&gt; for tips and comments along the way.&lt;/p&gt;

&lt;p&gt;I struggled to find any articles or pens that solved the toggle issue like this but that doesn't mean they don't exisit. If you have a similar, different and probably much better solution it would be great to hear from you.&lt;/p&gt;



</description>
    </item>
    <item>
      <title>Deploying this blog</title>
      <link>https://blog.mikemjharris.com/posts/deploying-this-blog</link>
      <pubDate>4 May 2015</pubDate>
      <guid>deploying-this-blog</guid>
      <description>&lt;!-- meta-data title: Deploying this blog  --&gt;
&lt;!-- meta-data searchtitle: deploying-this-blog  --&gt;
&lt;!-- meta-data date: 04 May 2015 --&gt;
&lt;!-- meta-data intro: Building a continuous integration solution with containers  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
  It’s awesome building digital products, but once you have got something amazing whirring away on your laptop, how do you share it with the world?  For many developers Heroku has been a saviour taking away much of the pain of getting a web app up and running on the internet.
&lt;/p&gt;

&lt;p&gt;
  Part of this project, &lt;a href="http://blog.mikemjharris.com/posts/building-a-blog"&gt;where I build and write about a blog app&lt;/a&gt;, I wanted to push myself to learn new skills - one of these was how to deploy your own app on your own server.  Hopefully I would develop a quick and easy solution and wean myself off Heroku - or at the very least increase my appreciation of the solution they provide.
&lt;/p&gt;

&lt;p&gt;
  A quick spoiler - I did manage to build a fast, continuous integrated, deployment solution. Now whenever I push code to master my project is deployed to my server within a minute.  This piece is just a few of the thoughts and decisions I made along the way. I'm saving a full blown technical walkthrough for a rainy day.
&lt;/p&gt;

&lt;h4&gt;Docker&lt;/h4&gt;
&lt;p&gt;
  Heroku uses its own container system to launch apps. At work we use Docker to containerise our apps. So I decided to use Docker for my project - having a few experts close at hand to ask questions of is invaluable.
&lt;/p&gt;

&lt;h4&gt;One dependency to rule them all&lt;/h4&gt;
&lt;p&gt;
  With Docker you build an image of your app using layers and then run it in a container. The great thing about this is that the only dependency you need on your server is Docker. No fussing around getting a remote system set up with all the different tools you need to run your app. Just one dependency to bring them all and in the container run them.
&lt;/p&gt;

&lt;h4&gt;Docker registry&lt;/h4&gt;
&lt;p&gt;
  There is an initial investment in setting up a Dockerfile for you project which details how your app image is built. This blog is a node app with a number of gulp tasks for compiling various assets and it was relatively easy to find example Dockerfiles out in the wild (&lt;a target="_blank" href="https://github.com/mikemjharris/blog/blob/master/Dockerfile" class="show-link"&gt;you can see mine on Github&lt;/a&gt;). Once set up you can build and run your container locally, push this up to the Docker registry and pull it down on your server (much as you would code with Github). Another great feature of containers is that they act the same whether they are run locally or remotely so you have no surprises when you deploy.
&lt;/p&gt;

&lt;h4&gt;Automation&lt;/h4&gt;
&lt;p&gt;
  This solution worked great but I was locally building, pushing to the online repository and then SSH-ing into my server to pull the image and get it whirring away in the cloud.  The tech world is all about automation so how to streamline this process?
&lt;/p&gt;

&lt;h4&gt;Webhooks&lt;/h4&gt;
&lt;p&gt;
  Github sends out a webhook when code is changed on a branch. The Docker registry can respond to webhooks and build an image from your latest code. It in turn can post a webhook. I needed to listen for this on my server. I built a small server using the python simple server which comes bundled with most versions on linux (I didn't want any more dependencies other than Docker). On receiving the nod from the registry it would trigger a bash script which pulled down the image and started the ignition. Boom - up and running! Post to master and then deployed!
&lt;/p&gt;

&lt;h4&gt;Sloooooow&lt;/h4&gt;
&lt;p&gt;
  Ouch - eight minutes to deploy? That’s rubbish.  Manually I could deploy in just over a minute - what was going wrong?  The layers that make up a Docker image are cached locally. When you change something in your app very few of the layers are affected (you don’t normally change the core of your app from node to, say, rails every few mins) so the build is super quick.  The hold up in my deployment I believe was that the Docker registry was building from scratch every time. Boo.
&lt;/p&gt;

&lt;h4&gt;Fassssst&lt;/h4&gt;
&lt;p&gt;
  I decided to skip the Docker registry step and removed it from the webhook chain.  My webhook from github went straight to my server where a bash script pulled the latest code from GitHub, built the image and fired it up.  Boom!  Deployment in less than a minute and all triggered as soon as I deployed to master!
&lt;/p&gt;

&lt;h4&gt;Smooth, speedy, continuous integration system&lt;/h4&gt;
&lt;p&gt;
  The smoothness, speed and simplicity of the eventual solution was much better than I could of expected.  What started out as an experiment has now become the core method of deployment for all my personal projects.  I have four node apps and one static site all using the same method and am looking to port across some of my rails apps currently lurking around on Heroku.  The latest code on master is the same as that running on my server and I don’t have to worry about deployment at all. If my server goes down I can get a new one up and running quickly. If Github goes down I can bypass it and go via the Docker registry. A robust and fast solution.
&lt;/p&gt;

&lt;div class="break"&gt;&lt;/div&gt;

&lt;h4&gt;Confession&lt;/h4&gt;
&lt;p&gt;
  This was a quick run down on how I got to the final solution - it emits two key things - firstly the nitty gritty of the technical detail.  This post also fails to describe the dead ends, the stupid mistakes, the head banging, the pain and perseverance that are ever present and necessary when trying something new. Rest assured that there was plenty of all of that - if you are trying to implement any of the above don’t worry if things go wrong. If you need a nudge in the right direction feel free to drop me a message.
&lt;/p&gt;

&lt;h4&gt;Appendix&lt;/h4&gt;
&lt;p&gt;
&lt;p&gt;
  I used Digital Ocean for my online server - friends had used it and I had some discount vouchers knocking around.  It was quick and easy to get a droplet with Docker installed up and running cheaply.
&lt;/p&gt;
&lt;p&gt;
  There were a few other technical hurdles. Running a couple of apps on the same server required using Nginx to route requests to the appropriate container as well as listen out for the webhooks.  There was also some fun as I played around with cronjobs and trying to daemonising my python server.
&lt;/p&gt;


</description>
    </item>
    <item>
      <title>Blog Recipe</title>
      <link>https://blog.mikemjharris.com/posts/blog-recipe</link>
      <pubDate>12 Apr 2015</pubDate>
      <guid>blog-recipe</guid>
      <description>&lt;!-- meta-data title: Blog Recipe  --&gt;
&lt;!-- meta-data date: 12 April 2015  --&gt;
&lt;!-- meta-data searchtitle: blog-recipe  --&gt;
&lt;!-- meta-data intro: A list of the technologies used to build this blog  --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: tech  --&gt;

&lt;p&gt;
This is a list of the technologies and tools I used when building this blog. The next few posts I’ll look into these in more details, about the choices I made and the issues I had along the way.
&lt;/p&gt;

&lt;h4&gt;Front End&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;JQuery&lt;/li&gt;
  &lt;li&gt;Handlebars&lt;/li&gt;
  &lt;li&gt;Gulp (plus a whole load of gulp tools to make life easy)&lt;/li&gt;
  &lt;li&gt;Sass&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Back End&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;Node&lt;/li&gt;
  &lt;li&gt;Express&lt;/li&gt;
  &lt;li&gt;Handlebars (again!  more about that in a future blog post)&lt;/li&gt;
  &lt;li&gt;Mongodb (sort of - was part of the biggest decision about building this blog)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Deployment / Other&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;Git &amp; Github&lt;/li&gt;
  &lt;li&gt;Docker&lt;/li&gt;
  &lt;li&gt;Python Simple Server&lt;/li&gt;
  &lt;li&gt;Bash (does scripting count?  Built a really smooth continuous integration system)&lt;/li&gt;
  &lt;li&gt;Nginx&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  That’s pretty much it - no css frameworks - half the fun of the project was building the css / svg elements. Also no javascript framework - I work with Angular all day but decided to go back to basics.  Given where I ended up I probably should have used Backbone - I'll write soon about why I didn’t.  Really I shouldn’t have used  jQuery and stuck with vanilla JS - but to be honest life was too busy not to.
&lt;/p&gt;
&lt;p&gt;
  Lots of opportunities to change, improve and iterate!
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a blog</title>
      <link>https://blog.mikemjharris.com/posts/building-a-blog</link>
      <pubDate>29 Mar 2015</pubDate>
      <guid>building-a-blog</guid>
      <description>&lt;!-- meta-data title: Building a blog  --&gt;
&lt;!-- meta-data searchtitle: building-a-blog  --&gt;
&lt;!-- meta-data date: 29 Mar 2015 --&gt;
&lt;!-- meta-data intro: Blogging about building a blog. Meta.  --&gt;
&lt;!-- meta-data author: Mike Harris  --&gt;
&lt;!-- meta-data category: thoughts  --&gt;
&lt;p&gt;
  Blogs come in all shapes and sizes - timeless theological musings, eccentric tantrums, incisive analysis, self important puffing - the whole slice of humanity in short online snippets.  But the saddest blog is the blog that starts off with a fanfare, with a page of intent and promises of life changing posts to come. This sad blog has one follow up post and then silence.
&lt;/p&gt;

&lt;p&gt;
  Coming up with something to write about is hard. Then you have to write again. And again. And be interesting and readable and worth the pain of drafting and thinking and editing and just everything.
&lt;/p&gt;

&lt;p&gt;
  So here I am wanting to write about tech - a broad, sprawling topic. How can to be profligate and push past the token intro and give this project a fighting chance of surviving? Build something. Write about it.  Build something with all those shiny tech tools I use. Write about how I designed and build a web app, about the pain and problems that dog any project, about the new things I've learnt along the way or maybe just how that foolproof piece of regex wasn't so fool proof. Build. Write.
&lt;/p&gt;
&lt;p&gt;
  Great, fantastic, awesome! Build. Write. Write Build.
&lt;/p&gt;

&lt;h4&gt;Build what....?&lt;/h4&gt;
&lt;p&gt;
  The list of things I want to build is long. The list of things that others want me to build is even longer. But wouldn't it be great if the project I built and wrote about I could guarantee the reader had experienced. They could see and understand the design decisions, they would feel the bugs and the pain and could validate if I had overcome those. Wouldn't it be great if I could blog about building a blog?
&lt;/p&gt;
&lt;p&gt;
  Yes it does sound like a whole load of meta, east London, extra skinny flat white, self indulgent bs. But I've already built an mvp of the blog - look it’s glowing at you from your screen. You're reading it now.  It is a side project squeezed into the small gaps that life sometimes provided but it does give an idea of the thoughts and process that I put into building a project. There were some interesting decisions along the way, I discovered some new tools and had problems to overcome.  I’m still iterating and improving. I reckon there are enough navel gazing, meta posts in this project to pollinate the blog and hope it is flourishes into something beautiful.
&lt;/p&gt;
&lt;p&gt;
  I'll talk a little about everything from front end to backend, data storage to design choices, api to version control and my home brewed continuous integration solution.  Let’s hope I can balance tweaking the code and actually writing words.
&lt;/p&gt;




</description>
    </item>
    <item>
      <title>Why blog?</title>
      <link>https://blog.mikemjharris.com/posts/why-blog</link>
      <pubDate>22 Mar 2015</pubDate>
      <guid>why-blog</guid>
      <description>&lt;!-- meta-data title: Why blog?  --&gt;
&lt;!-- meta-data date: 22 Mar 2015  --&gt;
&lt;!-- meta-data searchtitle: why-blog  --&gt;
&lt;!-- meta-data intro: Why do I blog? Why does anyone blog?  --&gt;
&lt;!-- meta-data author: mikemjharris  --&gt;
&lt;!-- meta-data category: thoughts  --&gt;

&lt;p&gt;
  It's a bit grand to ask myself why I blog when this is the first post. Who knows why or how or when I will continue. I have reasons for starting but will those be the reasons why I will blog in the future?  Hopefully I will survive past the first few posts and ease myself into a writing rhythm, find a style and learn a little more about myself and the world. 
&lt;/p&gt;

&lt;p&gt;So why have I started to blog?&lt;/p&gt;

&lt;h4&gt;If a tree falls in the forest&lt;/h4&gt;
&lt;p&gt;
  If a developer develops without blogging - does that project exist? Well yes, but a blog is another part of a technologists portfolio. As a person who not only plies their career in the tech world but also seems to spend large chunks of my spare time shepherding electrons around digital networks I thought it was high time to start a blog.
&lt;/p&gt;

&lt;h4&gt;Altruistically selfish&lt;/h4&gt;
&lt;p&gt;
  Over the years I have devoured in detail the many blogs out there. I am thankful to the many developers who have devoted time to explaining the many problems that have tripped them up. Hopefully I can repay the debt by writing a little and hoping someone stumbles across a solution to their issues on this site. But there is a selfish reason here too: I find that you can only truly understand a topic if you can explain it clearly to someone else. Often the process of researching and experimenting, writing and explaining will help you discover and understand a topic in much more detail. 
&lt;/p&gt;

&lt;h4&gt;Entertainment&lt;/h4&gt;
&lt;p&gt;
  Who knows if I am any good at writing but it's fun. I have blogged before but both times were more or less elaborate diary for very specific periods and projects. It was stimulating, interesting and satisfying and I want to see if a longer more wide ranging project provides the same buzz.
&lt;/p&gt;
&lt;p&gt;
  So those are the reasons I believe that I'm starting to blog. Let's see if, how or when I will continue and what the real reasons turn out to be.
&lt;/p&gt;




</description>
    </item>
  </channel>
</rss>