<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Projects on James Montgomery</title>
    <link>https://gh-jamesmontgomery.github.io/pages-blog/projects/</link>
    <description>Recent content in Projects on James Montgomery</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Fri, 15 Oct 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://gh-jamesmontgomery.github.io/pages-blog/projects/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Station Finder</title>
      <link>https://gh-jamesmontgomery.github.io/pages-blog/projects/station-finder/</link>
      <pubDate>Fri, 15 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://gh-jamesmontgomery.github.io/pages-blog/projects/station-finder/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;&#xA;&lt;div class=&#34;toc&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of contents&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#status&#34;&gt;Status&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#limitations&#34;&gt;Limitations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#relevant-posts&#34;&gt;Relevant posts&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;  &lt;/div&gt;  &#xA;&lt;h2 id=&#34;status&#34;&gt;Status&lt;/h2&gt;&#xA;&lt;p&gt;Station Finder is a single page application hosted on Cloudflare using Pages, Workers and Workers KV to function. The premise is to find information about available fuel stations.&lt;/p&gt;&#xA;&lt;p&gt;It will return a list of stations based on postcode.&lt;/p&gt;&#xA;&lt;p&gt;A station selection will result in the retrieval of:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Summary text;&lt;/li&gt;&#xA;&lt;li&gt;Points of interest;&lt;/li&gt;&#xA;&lt;li&gt;Location co-ordinates;&lt;/li&gt;&#xA;&lt;li&gt;Up to three images with optional description text;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Client-side JavaScript reconfigures the page elements based on this information. For example,  a Google Maps link is visible if location coordinates are available.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elite Dangerous Timeline</title>
      <link>https://gh-jamesmontgomery.github.io/pages-blog/projects/elite-dangerous-timeline/</link>
      <pubDate>Mon, 01 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://gh-jamesmontgomery.github.io/pages-blog/projects/elite-dangerous-timeline/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;&#xA;&lt;div class=&#34;toc&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of contents&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#motivation&#34;&gt;Motivation&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#current-implementation&#34;&gt;Current implementation&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#media&#34;&gt;Media&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#limitations&#34;&gt;Limitations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#aspirations&#34;&gt;Aspirations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#relevant-posts&#34;&gt;Relevant posts&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;  &lt;/div&gt;  &#xA;&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;The project started as a desire to providing me with some context as an Elite Dangerous player. The in-game experience does not give you context/history for a player you have encountered before. Many of these interactions log to the game journal - a source which I&amp;rsquo;ve used to create an event-driven text to speech implementation using &lt;a href=&#34;https://gh-jamesmontgomery.github.io/pages-blog/projects/elite-dangerous-text-to-speech/&#34;&gt;Google Cloud text to speech&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Todoist ordering</title>
      <link>https://gh-jamesmontgomery.github.io/pages-blog/projects/todoist-ordering/</link>
      <pubDate>Fri, 07 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://gh-jamesmontgomery.github.io/pages-blog/projects/todoist-ordering/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;&#xA;&lt;div class=&#34;toc&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of contents&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#status&#34;&gt;Status&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#code&#34;&gt;Code&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#label-sorting&#34;&gt;Label sorting&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#task-sorting&#34;&gt;Task sorting&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#limitations&#34;&gt;Limitations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#aspirations&#34;&gt;Aspirations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#relevant-posts&#34;&gt;Relevant posts&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;  &lt;/div&gt;  &#xA;&lt;h2 id=&#34;status&#34;&gt;Status&lt;/h2&gt;&#xA;&lt;p&gt;Every hour my Todoist labels are automatically sorted. Every four hours, I sort some projects according to my preference. Here is a video example of each:&lt;/p&gt;&#xA;&lt;p&gt;&#xA;    &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube-nocookie.com/embed/JoiVEqF0rSM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&#xA;    &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube-nocookie.com/embed/MWIdVqk2Bg8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elite Dangerous Text-to-speech</title>
      <link>https://gh-jamesmontgomery.github.io/pages-blog/projects/elite-dangerous-text-to-speech/</link>
      <pubDate>Thu, 24 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://gh-jamesmontgomery.github.io/pages-blog/projects/elite-dangerous-text-to-speech/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;&#xA;&lt;div class=&#34;toc&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of contents&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#status&#34;&gt;Status&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#implementation-approach&#34;&gt;Implementation approach&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#video&#34;&gt;Video&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#limitations&#34;&gt;Limitations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#aspirations&#34;&gt;Aspirations&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#relevant-posts&#34;&gt;Relevant posts&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#similar-projects&#34;&gt;Similar projects&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;  &lt;/div&gt;  &#xA;&lt;h2 id=&#34;status&#34;&gt;Status&lt;/h2&gt;&#xA;&lt;p&gt;Successfully converts all player and NPC text chat into synthetic speech (via Google Cloud Text-to-speech).&#xA;Optionally player text language is detected as non-English. In this case, it translates into English text before it then converts into synthetic speech.&#xA;In-game events can drive other speech outcomes. For example, a bounty kill triggers a Chuck Norris API joke retrieval and plays the resulting joke as speech.&lt;/p&gt;</description>
    </item>
    <item>
      <title>This site</title>
      <link>https://gh-jamesmontgomery.github.io/pages-blog/projects/this-site/</link>
      <pubDate>Wed, 16 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://gh-jamesmontgomery.github.io/pages-blog/projects/this-site/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of contents&lt;/h2&gt;&#xA;&lt;div class=&#34;toc&#34;&gt;&#xA;    &lt;nav id=&#34;TableOfContents&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#table-of-contents&#34;&gt;Table of contents&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#motivation&#34;&gt;Motivation&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#site-hosting&#34;&gt;Site hosting&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#site-configuration&#34;&gt;Site configuration&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#syntax-highlighting&#34;&gt;Syntax highlighting&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#privacy-configuration&#34;&gt;Privacy configuration&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#adding-a-table-of-contents-to-a-hugo-post&#34;&gt;Adding a table of contents to a Hugo post&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#favicon&#34;&gt;Favicon&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#relevant-posts&#34;&gt;Relevant posts&lt;/a&gt;&lt;/li&gt;&#xA;    &lt;li&gt;&lt;a href=&#34;#acknowledgements&#34;&gt;Acknowledgements&lt;/a&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;&#xA;  &lt;/div&gt;  &#xA;&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;A Hugo based site has allowed me to use the site itself as a vehicle to learn Markdown and experience several hosting scenarios with Google, AWS and so on.&lt;/p&gt;&#xA;&lt;h2 id=&#34;site-hosting&#34;&gt;Site hosting&lt;/h2&gt;&#xA;&lt;p&gt;Cloudflare pages hosts this site.&lt;/p&gt;&#xA;&lt;h2 id=&#34;site-configuration&#34;&gt;Site configuration&lt;/h2&gt;&#xA;&lt;p&gt;First of all, a big shout to the authors behind the theme I&amp;rsquo;ve based the site on - the &lt;a href=&#34;https://themes.gohugo.io/future-imperfect/&#34;&gt;Future Imperfect theme&lt;/a&gt;. I&amp;rsquo;ve tweaked it to my taste in the following ways:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
