<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>voice &#8211; Gareth Klose</title>
	<atom:link href="https://garethklose.com/tag/voice/feed" rel="self" type="application/rss+xml" />
	<link>https://garethklose.com</link>
	<description>writes about technology, television and travelling</description>
	<lastBuildDate>Tue, 18 Jan 2022 17:53:28 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.5</generator>
<site xmlns="com-wordpress:feed-additions:1">27787817</site>	<item>
		<title>The one in which I learned to build a chat bot, and a bit about how I learn</title>
		<link>https://garethklose.com/2022/01/the-one-in-which-i-learned-to-build-a-chat-bot-and-a-bit-about-how-i-learn</link>
		
		<dc:creator><![CDATA[gareth]]></dc:creator>
		<pubDate>Tue, 18 Jan 2022 17:27:36 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[voice]]></category>
		<guid isPermaLink="false">https://garethklose.com/?p=9696</guid>

					<description><![CDATA[Why revisiting known problems can be a boring but reliable way to learn, and how to think about that for Hackdays]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve two problems I keep coming back to and implementing (or attempting to) every now and again.</p>



<p>First is my home-grown voicemail system, not that anyone actually makes standard telephone calls to me anymore, but after a series of &#8220;voicemail with dictation&#8221; providers left the market, I rolled something together with Twilio and App Engine.</p>



<p>The other is the data feed for the <a href="https://tfl.gov.uk/modes/cycling/santander-cycles" data-type="URL" data-id="https://tfl.gov.uk/modes/cycling/santander-cycles">TfL London Bike</a> here scheme. I have failed to buy myself a bike, and still rely on the hire ones, and before app coverage was good, I had a webpage that could show me the docks around where I live.</p>



<p>These have both been revisited over the years, the Voicemail system got moved from being on Google App Engine which returned a complete web page (remember those), to running on AWS as a Single Page App, listening to an MQTT change feed, and connecting to the AWS services to retrieve data for the React App to update on screen.</p>



<p>Meanwhile, although the original Bike webpage went stale and stopped working, last year I started writing an application in SwiftUI that would display the data. Thanks to changes in iOS/Xcode that project can&#8217;t even run to get a screenshot anymore&#8230;</p>



<p>I&#8217;ve long wanted to be able to text something, and to get a reply about the bike docks nearby. Because I&#8217;m an iOS user, the Siri intents are very limited, and text message interacting is easier with voice &#8211; this would keep my eyes on the road.</p>



<p>So, after an idea just before bed, over the last few days I&#8217;ve created a chatbot, and I can ask it questions about the Hire bikes.</p>



<h2 class="wp-block-heading">But why do I keep revisiting these problems?</h2>



<p>TL;DR They&#8217;re boring problems that I understand the domain of.</p>



<p>I learn by doing.</p>



<p>My Professional Development Plan would be summarised as Continually Feeling Just A Little Out Of My Depth and managing to keep up.</p>



<p>It&#8217;s very much &#8220;I learn this stuff because I HAVE to learn it&#8221;.</p>



<p>Outside of that directed work frenzy, I have limited windows for learning &#8211; periods when I feel interested and able to commit some time to learning. I&#8217;ve found that I can generally learn 1 of 2 things:</p>



<ol class="wp-block-list"><li>Approach: Something new about an existing domain I know: e.g. Using a new language, web framework or API to solve a problem I already broadly know.</li><li>Domain: Learning new problem domains with existing technologies, e.g. building out a new website to use a new API, technologies I understand in areas I haven&#8217;t previously worked.</li></ol>



<p>When I try to do both at once, I quickly get frustrated and quit. I&#8217;m not a full time coder, I architect systems and work with teams to coach them into building things, but I&#8217;m not best served building things myself, even though I love to work with those who are building.</p>



<p>When I&#8217;m working, the need to get things done powers me through any frustration walls (mostly). But when I&#8217;m doing stuff for &#8216;fun&#8217;, that doesn&#8217;t happen as much, so I try to only do one of the two things.</p>



<h2 class="wp-block-heading">So, What does BikeBot do and What Did I Learn?</h2>



<p>I can ask BikeBot for the details of a specific hire station if I know the name, which is useful if I&#8217;m heading to a place I know well, and just want to get details of bikes or docks that are available.</p>



<p>I can also ask bikebot for the dock Nearest to a point of interest, when I don&#8217;t know what the station is called.</p>



<p>Bikebot then returns the data from the TfL API, and is accessible over the phone with speech recognition or could be available by SMS if I configure an integration.</p>



<p>So, by revisiting a familiar problem, I got to learn:</p>



<ul class="wp-block-list"><li>AWS Lex, the chatbot tool</li><li>AWS Location, the tool I use to geocode &#8220;I&#8217;m at this Place give me dock&#8221;</li><li>AWS Connect, the contact-centre product that makes it accessible to voice over the phone</li></ul>



<p>I now have a neat demo, which with a little more work provides me something I can use myself.</p>



<p>I also re-learned just how easy managed services can make solving problems, because so much of the hard lifting is done for you. I would <em>never</em> find the time to do fuzzy matching of station name to user input, but if I give Lex that list, it&#8217;s done for me. Not perfectly, but orders of magnitude better and faster than I&#8217;d ever be able to do it myself.</p>



<h2 class="wp-block-heading">&#8220;erm, cool story bruh, but how does this help me?&#8221;</h2>



<p>If you&#8217;re running hackdays, think about how many ideas that teams have, and if the teams are capable of learning both 1 &amp; 2 at the same time.</p>



<p>Some companies frown on &#8220;doing things to do with the day job&#8221; on hackdays, really wanting more Blue Sky Out There things, but maybe your team aren&#8217;t really up for that. Or if they are, they need a bit more planning, so teams and ideas are kind of sketched out ahead of the hackday, along with any of the pre-requisites to make progress quicker.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9696</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Object Caching 0/108 objects using APC
Page Caching using Disk: Enhanced 
Content Delivery Network via Amazon Web Services: CloudFront: cdn.garethklose.com
Minified using Disk
Database Caching using APC (Request-wide modification query)

Served from: garethklose.com @ 2026-06-27 00:00:53 by W3 Total Cache
-->