Jekyll2021-07-23T22:21:19+00:00https://mra.benseymour.com/feed.xmlBen SeymourThe core online presence of Ben Seymour (Oxford, U.K.)Ben SeymourCareers Thoughts2019-10-20T09:09:00+00:002019-10-20T09:09:00+00:00https://mra.benseymour.com/2019/10/20/Careers<p>How do you quantify the value of a job?<br />
a.k.a. “Should I stay or should I go now?”</p>
<p>For the majority of people, their working life takes a significant percentage of their waking hours each week (even more so if you include travel and preparation).
As we should do when contemplating any large investment, of time, energy, attention or money, we should be cognisant of the return that we get back.</p>
<blockquote>
<p>“one person’s tedium may be another persons rapture”</p>
</blockquote>
<p>Either when contemplating moving to a new role, or when considering the position that you are currently in. These should be against your own your own measures - one person’s tedium may be another persons rapture, but from my perspective there are some core aspects to consider, which for me form into 3 main categories:</p>
<p>Rewards & recognition (status?)<br />
Satisfaction, fun & enjoyment (meaning)<br />
Growth & development (career, or skills)</p>
<!-- srcset using Cloudinary Dynamic Media solution -->
<!-- image vars via FM -->
<p><img src="//images.benseymour.com/image/upload//w_1000,q_auto,f_auto/live/CareersTriangle001.jpg" sizes="(min-width: 1020px) 60vw, 90vw" srcset="//images.benseymour.com/image/upload//w_600,q_auto,f_auto/live/CareersTriangle001.jpg 600w, //images.benseymour.com/image/upload//w_850,q_auto,f_auto/live/CareersTriangle001.jpg 850w, //images.benseymour.com/image/upload//w_1200,q_auto,f_auto/live/CareersTriangle001.jpg 1200w" alt="Ben's Career Triangle" /></p>
<p>I occasionally volunteer at a local Primary School, running Code Clubs and taking part in careers fairs. During a careers fair in July (2019) these were some of the popular questions asked:</p>
<p>How much do you earn<br />
Is this what you always wanted?<br />
What qualifications do you need to do your job?<br />
Do you have any regrets?</p>
<p>Number 2 made me chuckle, and as a schoolchild of the 80’s, I enjoyed describing the state of technology at that time, and that my current work in high-tech web platforms wasn’t established 15 years ago, let alone 30 years ago.</p>
<p>Regrets… I have a few… and channeling my inner Sinatra … I wish I had believed more in doing things more my way, sooner. I currently work in technical pre-sales for enterprise software - but it is very much the relationships with the people I meet, and understanding what would help them to achieve whatever they value which really drives me (though of course it does mostly have a solid aspect of helping them to make effective use of technology) .</p>Ben SeymourHow do you quantify the value of a job? a.k.a. “Should I stay or should I go now?”Drexler Sibbet model2019-05-19T09:09:00+00:002019-05-19T09:09:00+00:00https://mra.benseymour.com/2019/05/19/Drexler-Sibbet<p>Having pondered the nature and needs of high performing teams for some time, I;ve just discovered the Drexler Sibbet model, which gives a fantastic guide with which to frame and focus team discussions.</p>
<!-- srcset using Cloudinary Dynamic Media solution -->
<!-- image vars via FM -->
<p><img src="//images.benseymour.com/image/upload//w_1000,q_auto,f_auto/live/drexler-sibbet.JPG" sizes="(min-width: 1020px) 60vw, 90vw" srcset="//images.benseymour.com/image/upload//w_600,q_auto,f_auto/live/drexler-sibbet.JPG 600w, //images.benseymour.com/image/upload//w_850,q_auto,f_auto/live/drexler-sibbet.JPG 850w, //images.benseymour.com/image/upload//w_1200,q_auto,f_auto/live/drexler-sibbet.JPG 1200w" alt="Drexler Sibbet Model" /></p>Ben SeymourHaving pondered the nature and needs of high performing teams for some time, I;ve just discovered the Drexler Sibbet model, which gives a fantastic guide with which to frame and focus team discussions.Short Lessons for the Kids2019-01-28T09:09:00+00:002019-01-28T09:09:00+00:00https://mra.benseymour.com/2019/01/26/Short-Lessons-for-the-Kids<p>I’m writing this while at an altitude of 11,582 meters somewhere over Western Canada, on my way to San Francisco. For those who know me, or who have seen my talks on ‘making the most of your fears’, you will perhps have an idea of my curent state of mind. With that context, it seemed like a good time to make a rough start on a list of ‘Life Lessons for my Kids’. A few of these are of my own making, many more are a collation of learnings i have gained from others, and ideally i will backfill accreditation at some point.</p>
<p>The following are currently in no particular order, though hopefully i will put more organisation into them at some point. (spellings are also likely to need attention at some point - i am currently typing on the ipad in git2go):</p>
<p>Your perspective is just about the only thing that you really control.</p>
<p>Encourage opportunity.</p>
<p>Plan in decades.
Think in years.
Work in months.
Live in days.</p>
<p>You are your habits</p>
<p>You have to be aware of your habits to change them</p>
<p>It takes 66 days to form your habits (good or bad), and then it becomes your new normal.</p>
<p>If you don’t know what you want, you are less likely to get it.</p>
<p>If you are not working on your own dreams there will be plenty of people looking to use your time, energy and skills to work on theirs.</p>
<p>If you only do what is easy, then like will be hard</p>
<p>If you believe you can, or if you believe that you can’t - you are probably right.</p>
<p>97% of the things that you worry about never happen, and those that do are often less impactful than you feared.</p>
<p>Start with the end in mind. For each important engagement and decision, go into it knowing what you need, and want, to get out of it.</p>
<p>Expectations not outcomes govern the happiness of your perceived reality.</p>
<p>Try not to focus on only the problem too much.
When motorbiking and there is a rock in the road, if you focus on the rock you are more likely to hit it, than if you instead focus on the safe route around it.
Learn from the past, but don’t live there
You can’t lose what you never had.</p>
<p>There is no passion to be found in playing small - in settling for a life that is less than you are capable of living. Nelson Mandela</p>
<p>Distractions keep us from:</p>
<ul>
<li>wanting we we truly wnt</li>
<li>Doing what we truly want to do</li>
<li>Being who we want to be</li>
</ul>
<p>Time
Energy
Attention</p>
<p>Where possible, don’t limit your life choices too much because of your financial commitments.</p>
<p>Think about the things we should be doing, rather than what we shouldn’t be doing.
Instead of worrying about being distracted, instead try to remember to be focused.</p>
<p>Be kind to yourself.</p>
<p>The strongest negotiating position is knowing that you have the ability to walk away (from a job that isn’t providing you enough, or from just about any purchase, or just about anything)</p>
<p>People who refuse the take risks live with a feeling of helplessness which is far more frightening than the fear associated with actually taking the risk. Fear can permeate their life.</p>
<p>if you want to be happy - get more sleep. Arianna Huffington</p>
<p>Dont walk into somewhere, without knowing how you can walk out. This includes employment, and not tying yourself to the things that the job provides be it overly expensive equipment or lifestyle.</p>
<p>Each day grants you the gift of time, in 86400 small pieces - the same as everyone else, no matter however successful. The difference is what you <em>have</em> to trade your time for, as well as what you choose to invest it in.</p>
<p>The people you surround yourself with, will frame your expectations and your values - so choose wisely. Choose to be with the people who help you to be the better you.</p>
<p>Consider books as mentors. A well considered book gives insights into the experiences and perspectives of another… you can learn a lot making your own mistakes, but you can also save time and grief by learn from the mistakes of others.</p>
<p>Our achievements grow according to the size of our dreams, and the degree to which we are in touch with our mission. Ferrazi</p>
<p>Fear kills more dreams than failure ever will.</p>
<p>Establish multiple revenue streams.</p>
<p>If you don’t know where you are going, any road will get you there.
(though getting lost can lead to some wonderful discoveries)</p>
<p>Dont obsess over money…. its not important, as long a you have enough of it to do what you NEED… as well as ideally giving you opportunity to also do what you want.</p>
<p>Understand your personal and family finances - be efficient in your earnings. Understand tax.
Inflation or compound interest will either erode or grow your savings and investments. Money standing still is eroded by inflation.</p>
<p>Sustainability.
Ideally find a way to live. Such that if things stayed just as they are today, they would be at least bearable, or ideally better…. then use that as a baseline, and look to see how things could be better.</p>
<p>Each time you get a pay increase or bonus, if you can afford it, find a way to siphon off some part of it for longer term plans. Reduce inefficient debts, increase savings… but also remember to live a little.</p>
<p>Understand your own risk profile - what you are comfortable with. The more risk, by definition, the more unknowns there are, and the more you might gain… or lose.
I am fairly averse to risks… being able to sleep at night is invaluable.
Encourage opportunity.</p>
<p>Treat others as you would like to be treated yourself. The less-good people may well be oblivious, but the more-good people will acknowledge and appreciate you. You can imagine which one will be the more beneficial to recognise.</p>
<p>Be cautious about your sources of information. Everyone has their biases. Some are unaware, some are deliberate. Be especially cautious about information from organisations and entities for whom you are part of their revenue stream.</p>
<p>Be cautious about things which are promoted as being free - they often come at a high price. A free book which is rubbish, will still cost you time and attention. If a service appears to be free (such as facebook) then it might actually be you who is the product.</p>
<p>If not now, then when?</p>
<p>If you always do what you’ve always done, you’ll probably always get what you’ve always got.</p>
<p>Fulfilment comes when we live our lives on purpose.</p>
<p>Instead of focusing on what is wrong with a particular situation, focus instead on what could be right or valuable.</p>
<p>Choice is the act of hesitation that we make before making a decision. Alan Watts</p>
<p>Trust your intuition. Learn to hear it.</p>
<p>When things feel out of control, consider an external source for some objectivity - good friends, or also for me the I Ching often provides balance, and a more useful perspective.</p>
<p>Shop to the price you pay - don’t be swayed by the advertised discount.</p>
<p>You will make mistakes. Learn to forgive yourself, as you would a good friend.</p>
<p>When riding motorbikes, racing cars, or undertaking other potentially hazardous endeavours, remember to try to force a smile on your face - it’ll change your mental attitude and hence your riding style to be more mellow, and for the better.</p>
<p>Do to others as you would have them do to you</p>
<p>It will be exceedingly rare that someone else will decide to help you to be the success that you want to be. You’ll have to own that realisation yourself.</p>
<p>Be the change that you want to see.</p>
<!-- srcset using Cloudinary Dynamic Media solution -->
<!-- image vars via FM -->
<p><img src="//images.benseymour.com/image/upload//w_1000,q_auto,f_auto/live/VS41.JPG" sizes="(min-width: 1020px) 60vw, 90vw" srcset="//images.benseymour.com/image/upload//w_600,q_auto,f_auto/live/VS41.JPG 600w, //images.benseymour.com/image/upload//w_850,q_auto,f_auto/live/VS41.JPG 850w, //images.benseymour.com/image/upload//w_1200,q_auto,f_auto/live/VS41.JPG 1200w" alt="Up in the air." /></p>Ben SeymourI’m writing this while at an altitude of 11,582 meters somewhere over Western Canada, on my way to San Francisco. For those who know me, or who have seen my talks on ‘making the most of your fears’, you will perhps have an idea of my curent state of mind. With that context, it seemed like a good time to make a rough start on a list of ‘Life Lessons for my Kids’. A few of these are of my own making, many more are a collation of learnings i have gained from others, and ideally i will backfill accreditation at some point. The following are currently in no particular order, though hopefully i will put more organisation into them at some point. (spellings are also likely to need attention at some point - i am currently typing on the ipad in git2go):Cloudinary Images2018-12-07T09:09:00+00:002018-12-07T09:09:00+00:00https://mra.benseymour.com/2018/12/07/Cloudinary-Images<p>Having recently joined the team at <a href="https://cloudinary.com/">Cloudinary</a>, it’s brilliant to be able to start leveraging <del>their</del> our amazing dynamic media APIs.</p>
<p>Here is a live example using srcset and Dynamic Media served by Cloudinary:</p>
<!-- srcset using Cloudinary Dynamic Media solution -->
<!-- image vars via FM -->
<p><img src="//images.benseymour.com/image/upload//w_1000,q_auto,f_auto/live/Butterfly.orig.jpg" sizes="(min-width: 1020px) 60vw, 90vw" srcset="//images.benseymour.com/image/upload//w_600,q_auto,f_auto/live/Butterfly.orig.jpg 600w, //images.benseymour.com/image/upload//w_850,q_auto,f_auto/live/Butterfly.orig.jpg 850w, //images.benseymour.com/image/upload//w_1200,q_auto,f_auto/live/Butterfly.orig.jpg 1200w" alt="Butterfly, fluttering by. Powered by Cloudinary" /></p>
<h2 id="code-changes-needed">Code Changes Needed</h2>
<p>In my front matter (in _config.yml) I added some new site-wide defaults and configurations relating to Responsive Images (and Dynamic Image requests):</p>
<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#srcset, sizes and dynamic media related</span>
<span class="na">cloudinary_base</span><span class="pi">:</span> <span class="s2">"</span><span class="s">//res.cloudinary.com/benseymourcom/image/upload/"</span>
<span class="na">default_width</span><span class="pi">:</span> <span class="s1">'</span><span class="s">1000'</span>
<span class="na">sizes</span><span class="pi">:</span> <span class="s1">'</span><span class="s">(min-width:</span><span class="nv"> </span><span class="s">1020px)</span><span class="nv"> </span><span class="s">60vw,</span><span class="nv"> </span><span class="s">90vw'</span>
<span class="na">srcset</span><span class="pi">:</span>
<span class="pi">-</span> <span class="m">600</span>
<span class="pi">-</span> <span class="m">850</span>
<span class="pi">-</span> <span class="m">1200</span>
</code></pre></div></div>
<p>Then in my blogpost itself, I pass in some front matter details of the image to be used:</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Cl-image:
- imageref: Butterfly.orig.jpg
alt: Butterfly, fluttering by. Powered by Cloudinary
---
</code></pre></div></div>
<p>and at the appropriate place in the post, call the array index of the image and then pass this into our relevant _includes file :</p>
<div class="language-md highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c"><!-- srcset using Cloudinary Dynamic Media solution --></span>
<span class="c"><!-- image vars via FM --></span>
<img
src="//images.benseymour.com/image/upload//w_1000,q_auto,f_auto/live/Butterfly.orig.jpg"
sizes="(min-width: 1020px) 60vw, 90vw"
srcset="//images.benseymour.com/image/upload//w_600,q_auto,f_auto/live/Butterfly.orig.jpg 600w, //images.benseymour.com/image/upload//w_850,q_auto,f_auto/live/Butterfly.orig.jpg 850w, //images.benseymour.com/image/upload//w_1200,q_auto,f_auto/live/Butterfly.orig.jpg 1200w"
alt="Butterfly, fluttering by. Powered by Cloudinary">
</code></pre></div></div>
<p>The contents of the ‘srcset-and-cloudinary’ include file can be seen below, but it’s main purpose is to set up the responsive images code, and to leverage relevant image commands, such as setting the width ‘w_600’ etc, and to also leverage the rather wonder q_auto and f_auto commands to automatically optimise the compression and iamge format, and now that every image variant will be generated instantly as needed.</p>
<p>Here is the full includes file.</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="nt"><img</span>
<span class="na">src=</span><span class="s">"{{ site.cloudinary_base }}/w_{{ site.default_width }},q_auto,f_auto/live/{{ image.imageref }}"</span>
<span class="na">sizes=</span><span class="s">"{{ site.sizes }}"</span>
<span class="na">srcset=</span><span class="s">"{% for width in site.srcset %}{{ site.cloudinary_base }}/w_{{ width }},q_auto,f_auto/live/{{ image.imageref }} {{ width }}w{% if forloop.last == false %}, {% endif %}{% endfor %}"</span>
<span class="na">alt=</span><span class="s">"{{ image.alt }}"</span><span class="nt">></span>
</code></pre></div></div>
<p>Within my Cloudinary account I have setup a folder mapping to auto-upload any referenced file on this server to automatically ingest it into my account and to the immediately optimse both the compression and format of the image and to then serve back via Cloudinary’s CDN.</p>
<p>Any questions - I’d love to hear from you on twitter <a href="https://twitter.com/bseymour">@bseymour</a></p>Ben SeymourHaving recently joined the team at Cloudinary, it’s brilliant to be able to start leveraging their our amazing dynamic media APIs.Essential First Aid2017-12-08T09:09:00+00:002017-12-08T09:09:00+00:00https://mra.benseymour.com/2017/12/08/First-Aid<p>TL;DR Follow this link to <a href="https://www.sja.org.uk/sja/training-courses/courses-for-the-general-public/essential-first-aid-all-ages.aspx">book a first aid course</a>. These are definitely lessons to learn before you need them.</p>
<p>After a stranger collapsed in my arms recently and stopped breathing, I finally attended a St. John Ambulance Essential First Aid course.</p>
<p>Our trainer Liz was phenomenal. Four hours of intense, detailed, brilliantly explained guidance on dealing with all manner of situations. We had many questions and every single one was answered comprehensively.</p>
<p>I learned that over 90% of people in Germany hold a first aid certificate (it is mandatory and tied to their driver’s license), whereas that number in the UK is less than 40%.</p>
<p>I learned that being able to give CPR to someone unresponsive and not breathing increases their chance of survival by around 20%, and that the appropriate use of a defibrilator (an AED) can increase this to nearly 75%.</p>
<p><img src="/images/posts/first-aid.jpg" alt="AED" /></p>
<p>For an investment of just £30 and an afternoon, I would encourage everyone to consider learning some essential skills that hopefully you’ll never need.</p>
<p><a href="https://www.sja.org.uk">St John Ambulance</a></p>
<p><a href="https://www.sja.org.uk/sja/training-courses/courses-for-the-general-public/essential-first-aid-all-ages.aspx">Public Essential first aid course</a></p>
<p>There is a great St. John Ambulance app, which considering we pretty much always have our phones with us, and as it is free, it seems a no-brainer to search for it in your app store, and to install it today.
<img src="/images/posts/first-aid-app.png" alt="AED" /></p>
<p>Update: people asked me what happened to the lady in the end. I’m relieved to say that she more responsive when the ambulance departed with her. An amazing 999 operative calmly guided me through the steps I needed to take, and fortunately as I was in central london at the time, an emergency response vehicle arrived in about 7 minutes (perhaps the longest 7 minutes of my life). I can’t imagine how things might have turned out if I was somewhere more remote, and indeed a person on the course had attended to an injured person for an hour on a remote biking trail before help arrived….</p>Ben SeymourTL;DR Follow this link to book a first aid course. These are definitely lessons to learn before you need them.Fight or Flight2017-10-04T09:09:00+00:002017-10-04T09:09:00+00:00https://mra.benseymour.com/2017/10/05/The-other-side-of-your-fears<blockquote>
<p>“Everything you ever wanted is on the other side of your fears.”</p>
</blockquote>
<p>I’ve just scheduled my first micro-light flight. While I have to regularly fly on commercial airlines for work, I also give talks on ‘making the most of your fears’ centred around how I feel about flying….</p>
<p>Here’s hoping the weather is calmer than my current state of mind!</p>
<!-- srcset via batch statics -->
<!-- image vars set in FM -->
<p><img src="/Microflight.jpg" sizes="(min-width: 1020px) 60vw, 90vw" srcset="/images/600/Microflight.jpg 600w, /images/850/Microflight.jpg 850w, /images/1200/Microflight.jpg 1200w" alt="Let's get this show on the...." /></p>
<p>Below are the audio recording and the slides from my <a href="https://mkgeeknight.co.uk/">MKGN</a> talk on ‘Making the most of your fears’.</p>
<audio controls="controls" id="audio_player">
<source src="/assets/audio/your-fears-MKGN.ogg" type="audio/ogg" />
<source src="/assets/audio/your-fears-MKGN.mp3" type="audio/mpeg" />
Your browser does not support the audio element.
</audio>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/ygPmJ7y71Eu4Hm" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen=""> </iframe>
<p>(p.s. I used VLC to convert the .mp3 to Vorbis/.ogg, and added a new include to handle the code for utilising html native audio)</p>Ben Seymour“Everything you ever wanted is on the other side of your fears.”The Struggle2017-08-14T02:09:00+00:002017-08-14T02:09:00+00:00https://mra.benseymour.com/2017/08/17/Butterfly-Struggle<p>If you’ve seen any of my old demos, or seen some of the examples from ebook, you might have noticed that I rather like using images of butterflies as my demo image content.</p>
<p>That may be partially why this article from 2004 recently caught my eye, but the expression of why struggle, albeit in the case of a butterfly, is an unavoidable and in some cases necessary.</p>
<p>(the <a href="https://www.challenge.gov.sg/a_line/200403.html">page where I read this article</a> is full of broken images, so placing a copy of the text here, in case it vanishes altogether)</p>
<blockquote>
<h2 id="how-to-make-sure-the-butterfly-cannot-fly">How to make sure the butterfly cannot fly</h2>
<p>How do you get a butterfly?</p>
<p>First there is the egg which hatches into a caterpillar. The caterpillar eats and grows. At the right time, it makes a cocoon out of its own body. While in the cocoon, the caterpillar changes into a butterfly. <br />
When the butterfly is ready, it starts to break through the cocoon. First a hole appears. Then the butterfly struggles to come out through the hole. This can take a few hours.</p>
<p>If you try to “help” the butterfly by cutting the cocoon, the butterfly will come out easily but it will never fly. Your “help” has destroyed the butterfly.</p>
<p>The butterfly can fly because it has to struggle to come out. The pushing forces lots of enzymes from the body to the wing tips. This strengthens the muscles, and reduces the body weight. In this way, the butterfly will be able to fly the moment it comes out of the cocoon. Otherwise it will simply fall to the ground, crawl around with a swollen body and shrunken wings, and soon die.</p>
<p><strong>If the butterfly is not left to struggle to come out of the cocoon, it will never fly.</strong></p>
<p>We can learn an important lesson from the butterfly.</p>
<p>If we do not have struggles and challenges in our work, we will never grow strong and capable. If life has no difficulties, we will become weak and helpless.</p>
<p>Lim Siong Guan Head, Civil Service</p>
</blockquote>
<p>As a parent, it certainly leads me to ponder where to draw the boundaries for the struggles I allow, or even enable, by avoiding stepping in when I could otherwise help my children.</p>
<p>As an individual… while I have enjoyed some successes, I feel a noticable frustration that I haven’t achieved close to the available potential… and am finding some solice, and useful energy from the perspecitve, that the struggles along the way, will turn out to have been necessary for me to take flight.</p>
<!-- srcset using Dynamic Media solution -->
<!-- image vars via FM -->
<p><img src="//i1.adis.ws/i/bendemo/Butterfly.jpg?w=1000&qlt=65" sizes="(min-width: 1020px) 60vw, 90vw" srcset="//i1.adis.ws/i/bendemo/Butterfly.jpg?w=600&qlt=65 600w, //i1.adis.ws/i/bendemo/Butterfly.jpg?w=850&qlt=65 850w, //i1.adis.ws/i/bendemo/Butterfly.jpg?w=1200&qlt=65 1200w" alt="Butterfly, fluttering by. Powered by Amplience" /></p>Ben SeymourIf you’ve seen any of my old demos, or seen some of the examples from ebook, you might have noticed that I rather like using images of butterflies as my demo image content.Responsive Images in Jekyll without a plugin2017-02-24T02:09:00+00:002017-02-24T02:09:00+00:00https://mra.benseymour.com/2017/03/02/Responsive-Images-No-Plugin<p>Moving to R<a href="http://responsiveimag.es/">esponsive Images</a> can give great page load benefits, but it does require more complex markup. This site uses Jekyll and is hosted on gh-pages, which limits the plugins available. I’d previously explored <a href="https://benseymour.com/2016/11/08/Jekyll-Responsive-Images-without-plugins-after">using 1Writer Templates</a> to make it easier to generate this more complex embed code, but here I will be exploring what feels like a more robust and flexible solution - using HTML templates within _includes.</p>
<p>In my front matter (in _config.yml) I added some new site-wide defaults and configurations relating to Responsive Images (and Dynamic Image requests):</p>
<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#srcset, sizes and dynamic media related</span>
<span class="na">image_url</span><span class="pi">:</span> <span class="s">/images</span>
<span class="na">amp_base</span><span class="pi">:</span> <span class="s">//i1.adis.ws/i/bendemo</span>
<span class="na">default_width</span><span class="pi">:</span> <span class="s1">'</span><span class="s">1000'</span>
<span class="na">sizes</span><span class="pi">:</span> <span class="s1">'</span><span class="s">(min-width:</span><span class="nv"> </span><span class="s">1020px)</span><span class="nv"> </span><span class="s">60vw,</span><span class="nv"> </span><span class="s">90vw'</span>
<span class="na">srcset</span><span class="pi">:</span>
<span class="pi">-</span> <span class="m">600</span>
<span class="pi">-</span> <span class="m">850</span>
<span class="pi">-</span> <span class="m">1200</span>
</code></pre></div></div>
<p>Create a new file in your _includes folder (mine was called <a href="https://github.com/bseymour/bseymour.github.io/blob/master/_includes/srcset-sizes.html">srcset-sizes.html</a>) which contains the logic and markup to loop through the array of srcset values and sizes values, and to generate the html markup to make a responsive images request:</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="nt"><img</span>
<span class="na">src=</span><span class="s">"{{image_url}}/{{ image.src }}"</span>
<span class="na">sizes=</span><span class="s">"`{{ site.sizes }}"</span>
<span class="na">srcset=</span><span class="s">"{% for width in site.srcset %}{{ site.image_url }}/{{ width }}/{{ image.src }} {{ width }}w{% if forloop.last == false %}, {% endif %}{% endfor %}"</span>
<span class="na">alt=</span><span class="s">"{{ image.alt }}"</span><span class="nt">></span>
</code></pre></div></div>
<p>Then in my blogpost itself, I pass in some front matter details of the image to be used:</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>image:
- src: Butterfly.jpg
alt: 'Butterfly, fluttering by.'
</code></pre></div></div>
<p>and at the appropriate place in the post, call the array index of the image and then pass this into our relevant _includes file :</p>
<div class="language-md highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
Srcset:
{% assign image = page.image[0] %}
{% include srcset-sizes.html %}
</code></pre></div></div>
<p>Here is a live example (image size superimposed on the source image):</p>
<!-- srcset via batch statics -->
<!-- image vars set in FM -->
<p><img src="/Butterfly.jpg" sizes="(min-width: 1020px) 60vw, 90vw" srcset="/images/600/Butterfly.jpg 600w, /images/850/Butterfly.jpg 850w, /images/1200/Butterfly.jpg 1200w" alt="Butterfly, fluttering by." /></p>
<p>This workflow relies on me having made different image sizing variants of that same image, and placing them in the appropriate size-named-folder i.e. ‘/images/850/Butterfly.jpg’.</p>
<p>** Learn more about Responsive Images from this ebook: <a href="http://responsiveimag.es/">Practical Responsive Images</a> **</p>
<hr />
<h2>Responsive Images and Dynamic Media</h2>
<p>In the previous example, we had undertaken the step of manually creating different image files for the different sizing variants of the file. If you are working with more than a handful of images, or if you would like the flexibility to make future updates to your site layout, and would prefer to avoid the hassle of having to generate any further relevant sizes of images, then you should consider using a Dynamic Images solution. I wrote a post on <a href="https://benseymour.com/2016/11/10/Dynamic-Images-101">Dynamic Images 101</a> last year: fundamentally, it is a service which stores your master asset, and generates any and all image variants on-demand, based on image commands in the image request.</p>
<p>In this case, I created an additional _includes file to cover the relevant requests for a Dynamic Media service (in this case from <a href="http://amplience.com/products/dynamic-media/">Amplience Dynamic Media</a> solution)</p>
<p>The main difference being to include the relevant image commands, such as: ?w=1000&qlt=65, and know that every image variant will be generated instantly as needed.</p>
<p>Here is the full includes file.</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="nt"><img</span>
<span class="na">src=</span><span class="s">"{{ site.amp_base }}/{{ image.id }}.jpg?w={{ site.default_width }}&qlt={{ quality }}"</span>
<span class="na">sizes=</span><span class="s">"{{ site.sizes }}"</span>
<span class="na">srcset=</span><span class="s">"{% for width in site.srcset %}{{ site.amp_base }}/{{ image.id }}.jpg?w={{ width }}&qlt={{ quality }} {{ width }}w{% if forloop.last == false %}, {% endif %}{% endfor %}"</span>
<span class="na">alt=</span><span class="s">"{{ image.alt }}"</span><span class="nt">></span>
</code></pre></div></div>
<p>Here is a live example using srcset and Dynamic Media (via Amplience):</p>
<!-- srcset using Dynamic Media solution -->
<!-- image vars via FM -->
<p><img src="//i1.adis.ws/i/bendemo/Butterfly.jpg?w=1000&qlt=65" sizes="(min-width: 1020px) 60vw, 90vw" srcset="//i1.adis.ws/i/bendemo/Butterfly.jpg?w=600&qlt=65 600w, //i1.adis.ws/i/bendemo/Butterfly.jpg?w=850&qlt=65 850w, //i1.adis.ws/i/bendemo/Butterfly.jpg?w=1200&qlt=65 1200w" alt="Butterfly, fluttering by. Powered by Amplience" /></p>
<p>Any questions - I’d love to hear from you on twitter <a href="https://twitter.com/bseymour">@bseymour</a></p>Ben SeymourMoving to Responsive Images can give great page load benefits, but it does require more complex markup. This site uses Jekyll and is hosted on gh-pages, which limits the plugins available. I’d previously explored using 1Writer Templates to make it easier to generate this more complex embed code, but here I will be exploring what feels like a more robust and flexible solution - using HTML templates within _includes.Embedding Videos into Jekyll without a plugin2017-01-13T02:09:00+00:002017-01-13T02:09:00+00:00https://mra.benseymour.com/2017/01/13/Embedding-Video<p>I’d previously explored 2 options for embedding videos in Jekyll posts (I’m hosted oh gh-pages, and so am limited in the available plugins):</p>
<p>1) Placing an image in the page, which links to another site (such as Vimeo or YouTube) to play the video, as <a href="https://benseymour.com/2016/11/13/Jekyll-Embedded-Video---timelapses">discussed in an earlier post</a>.</p>
<p>2) Use the full embed code, as you can copy from Vimeo or YouTube, such as:</p>
<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt"><iframe</span> <span class="na">src=</span><span class="s">"https://player.vimeo.com/video/193567768?title=0&byline=0&portrait=0"</span>
<span class="na">width=</span><span class="s">"640"</span> <span class="na">height=</span><span class="s">"360"</span> <span class="na">frameborder=</span><span class="s">"0"</span> <span class="nt">></iframe></span></code></pre></figure>
<p>While these work, I didn’t like that for #1 visitors are taken away from the site, and away from the context of the video, and #2 is a little cumbersome for my <a href="https://benseymour.com/2016/11/07/Mobile-Git-with-Git2Go---Jekyll-workflow">mobile phone based editing workflows</a>.</p>
<p>In this post I am experimenting with a 3rd way - which involves creating a simple .html file in _includes directory, which contains the full embed code, and into which we can pass the YouTube ID, then you can embed the video in the following way:</p>
<div class="language-md highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{ % include youtubePlayer.html id="IvUU8joBb1Q" %}
</code></pre></div></div>
<iframe width="560" height="315" src="https://www.youtube.com/embed/IvUU8joBb1Q" frameborder="0" allowfullscreen=""></iframe>
<ul>
<li>Note: I initially read of this method <a href="http://www.adamwadeharris.com/how-to-easily-embed-youtube-videos-in-jekyll-sites-without-a-plugin/">from this blog post</a>.</li>
</ul>Ben SeymourI’d previously explored 2 options for embedding videos in Jekyll posts (I’m hosted oh gh-pages, and so am limited in the available plugins):Getting Kids Into Coding2017-01-01T02:09:00+00:002017-01-01T02:09:00+00:00https://mra.benseymour.com/2017/01/01/Getting-Kids-Into-Coding<p>I work in software development, and I’ve loved experimenting with computers for nearly 40 years. I don’t think that everyone should become a developer, just like I don’t think that everyone should become an author, painter, accountant or musician… but I do think that everyone should have the opportunity to explore coding, ideally from an early age.</p>
<p>Some of the many benefits for the children being:<br />
- Creative Expression<br />
- Logical Thinking<br />
- Problem solving<br />
- It’s damn good fun</p>
<p><img src="/images/12devs/01-12Devs-Ben_Seymour.jpg" alt="Getting Kids into Coding" /></p>
<h1 id="where-to-start">Where to Start?</h1>
<p>You could read up on the classics of education theory: <a href="https://en.wikipedia.org/wiki/Piaget's_theory_of_cognitive_development">Piaget</a>, <a href="https://en.wikipedia.org/wiki/Zone_of_proximal_development">Vygotsky</a> and <a href="https://en.wikipedia.org/wiki/Instructional_scaffolding">Bruner</a>, but my summary is:</p>
<blockquote>
<p>Go from where they are to where you want them to be.
Go from the concrete to the abstract.</p>
</blockquote>
<p>Along with a few lines from Dorothy Nolte:</p>
<blockquote>
<p>“…If a child lives with praise,
they learn to appreciate.
If a child lives with encouragement,
they learn confidence….”</p>
</blockquote>
<p>Growing self-confidence, and enabling a child to feel that they are in an encouraging and safe environment, in which they are able to explore and make mistakes, is an essential foundation for all learning and development activities, whatever you are trying to achieve.</p>
<blockquote>
<p>If you believe you can,
or you believe you can’t,
you are probably right.
(Henry Ford).</p>
</blockquote>
<p>Start simple - make it work, then add complexity.
Start where they are comfortable, then draw them out into new areas.</p>
<p>Be actively on the lookout for any spark of interest, be it music , art, games, maths, and use these to draw them into coding. I’ve been running coding clubs in Primary Schools for 4 years (I’m also a former High School Physics Teacher), and have children aged 10 & 7 both of whom have enjoyed exploring coding in various forms - the examples below are drawn from these experiences:</p>
<h2 id="artists">Artists:</h2>
<p>For children who already love painting and sketching - coding presents the opportunity to bring those paint-brushed and pencil-drawn worlds and characters to life.
So maybe start with sketches of the characters, then work with them to bring them into the game. Using a mouse, or trackpad to sketch can be quite frustrating at first, especially as there tends to be an initial drop in visual quality of their work as they adjust - but the excitement returns once they see their work start to come to life digitally, so you may need to encourage them to push through.</p>
<p><img src="/images/12devs/03-12Devs-Ben_Seymour.jpg" alt="Creating digital characters in Scratch" /></p>
<p>They subsequently learn more about what the digital characters can do, maybe starting to animate them, having them interact with other characters, or developing worlds in which they can explore. This often forms a positive feedback loop, with children then further exploring and sketching richer, more dynamic characters and environments, before translating them into digital form again.</p>
<p>One Year 5 (aged 9) pupil continued exploring at home, and created a staggering Sims-like game created in Scratch, where her character could interact with a world of her making. Including interacting with other in-game characters, currency which could be used to pay to go to the cinema, and large multi-environment game map.</p>
<p><img src="/images/12devs/04-12Devs-Ben_Seymour.jpg" alt="Sims recreated in Scratch" /></p>
<p>Note: If you’re not familiar with <a href="https://scratch.mit.edu/">Scratch</a>, it’s a visual programming environment created by M.I.T. . There are some other great tools which offer similar functionality, but <a href="https://www.codeclub.org.uk/">Code Club</a> developed a superb set of projects based on Scratch, which I’ve used extensively, and has been incredibly effective for the children in my clubs. For inspiration or to contribute : the Code Club projects are managed on Github: https://github.com/CodeClub/</p>
<p>I’ve heard from parents that their children were arranging sleepovers including building games in Scratch together. Self-guided junior hackathons!</p>
<h2 id="reading">Reading:</h2>
<p>For children who are avid readers, this can be a way to bring their books to life, guiding them to translate some aspect of their favourite book into digital form.
Below is a game involving Hiccup Horrendous Haddock III trying to escape a Bouldertail Dragon, inspired by Cressida Cowell’s epic ‘How to Train Your Dragon’</p>
<p>In this instance, we used an app called Carbo to created flattened digital images of their pencil drawings, and then use a paint package to apply colour and transparency to graphic before importing as a sprite.</p>
<h2 id="maths">Maths:</h2>
<p>For pupils who enjoy Maths, codifying their existing knowledge can be a fantastic vehicle to help them discover further patterns in maths, which often leads to a deeper understanding. The projects need to be tied into the appropriate level of maths for the individual pupils, but we’ve seen projects (in Scratch, and Python) such as:</p>
<ul>
<li>find all prime numbers up to 200</li>
<li>Draw an N sided shape (using a few lines of code as possible)</li>
</ul>
<p><img src="/images/12devs/06-12Devs-Ben_Seymour.png" alt="Draw an N sided shape in Scratch" /></p>
<p>Interestingly, children often enjoy the challenge of setting their own challenges for their classmates. Such as this maths multiplication quiz written in Scratch - they then self-differentiated, by adding further challenges like a timing element, or adaptive quizzes where as you get more answers correct, the questions get harder.</p>
<p><img src="/images/12devs/07-12Devs-Ben_Seymour.png" alt="Maths quiz in Scratch" /></p>
<h2 id="music">Music:</h2>
<p>Music is a great driver for people of all ages, especially children. In Scratch there are built-in libraries of instruments, sounds and noises, and you can also use a microphone to record sounds which can then be employed in your projects. This can lead to some of the noisiest and most entertaining club sessions. Notably, in one session a group of children sampled some AC/DC (Thunderstruck) which led some exceedingly ‘attention grabbing’ projects… passing pupils came to see what was going on, which led to a wave of additional pupils being interested in joining the club.</p>
<p><a href="http://sonic-pi.net/">Sonic Pi</a> : is ‘The Live Coding Music Synth for Everyone’, and while the syntax can be a little challenging to get started with, can produce some phenomenal results : https://vimeo.com/110416910</p>
<p>Linda Sandvik talked about the Makey Makey in <a href="http://12devsofxmas.co.uk/2013/01/day-12-fun-with-makey-makeys-for-kids-of-all-ages/">a previous 12devs article</a> and we’ve used these to great effect to extend the way that the children interact with their creations, by enabling external objects (such as bananas) to become an input device into the computer.</p>
<p>We had a group of pupils combine their own audio samples, with interesting (partially-conductive) objects from around the classroom to make some captivating and entertaining musical installations, which again drew in further pupils who wanted to join in.</p>
<p><img src="/images/12devs/08-12Devs-Ben_Seymour.jpg" alt="Makey Makey - Banana piano" /></p>
<p>Exploring interactions between the physical and digital worlds is something that I find particularly interesting, and also a great source of inspiration for lots of children.</p>
<p>Other ways we’ve explored for crossing the digital/physical divide, include things like the <a href="https://www.leapmotion.com/">Leap Motion</a> Controller which senses your hands moving naturally in 3D, and feeds that data into the computer for an extremely intuitive input mechanism. (you’ll see further examples below when we talk about Raspberry Pi’s GPIO and rf-controllers.)</p>
<p><img src="/images/12devs/09-12Devs-Ben_Seymour.png" alt="Leap Motion - controller" /></p>
<p>Or Lego Mindstorm, which is a programmable Lego robot model, with sensors and motors, which you can program using Lego’s own drag and drop coding interface.</p>
<h2 id="minecraft">Minecraft</h2>
<p><a href="https://minecraft.net/en/">Minecraft</a> is an amazing sandbox video game popular with a lot of the older primary school children. They love creating their own structures, or challenges (for example <a href="https://vimeo.com/178917981">parkour</a>) which they then set for their friends to try to complete.</p>
<p>One of the many fantastic aspects of the <a href="https://www.raspberrypi.org/">Raspberry Pi</a> (RPi) is that the standard OS (Raspbian) includes a free version of Minecraft and is ready setup with a Python API to interact with the game. Learning that they can start to programmatically interact with those objects and worlds is tremendously exciting for children, and can be the perfect gateway to introduce them to the Python programming language.</p>
<p>After all, who doesn’t want to be able to make lava fall from the sky, or programmatically generate ginormous structure made entirely from TNT:</p>
<p><img src="/images/12devs/13-12Devs-Ben_Seymour.jpg" alt="Minecraft TNT explosion" /></p>
<p><a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-111894691X.html">Adventures in Minecraft</a> is a brilliant book helping children explore the Python API for Minecraft. (It states it’s aimed at 11-15 year olds - but with some guidance, we’ve had 9/10 year olds find it really valuable.)</p>
<p>This can often lead to children being interested in exploring Python further, which then can take into more abstract activities such at interacting with Web Service Data via Python.</p>
<h1 id="the-raspberry-pi">The Raspberry Pi</h1>
<p>There are myraid ‘<a href="https://en.wikipedia.org/wiki/System_on_a_chip">system-on-a-chip</a>’ solutions (such as Arduino, BeagleBone Black, Intel Edison and many more), offering low price computing power in an accessible package, and if you have access to one of these then they can certainly be fantastic to learn with. However, the Raspberry Pi seems to innately cause excitement with children, or at the least curiosity. One of the great things going for the ‘Raspberry Pi’ seems to be it’s name - it feels accessible, and I think pupils are very happy being opening excited talking about the Raspberry Pi, without it sounding too geeky.</p>
<p>The Raspberry Pi was setup with education in mind, and I think squarely hit the nail on the head - if you install the default OS (Raspbian) it comes pre-installed with Scratch, Sonic Pi, and a free version of Minecraft already setup to be used with the Python API. There is an incredible community surrounding the RPi, and an amazing array of accessories, kits (such as the CamJam EduKit) and projects including the epic Astro Pi.</p>
<p>Astro Pi is a Raspberry Pi, with Sense HAT (a HAT is an add-on which slots onto the RPi), in a specially constructed flight case, which is now in-situ in the International Space Station.</p>
<p><img src="/images/12devs/15-12Devs-Ben_Seymour.png" alt="Tim Peake - holding a raspberry pi" /></p>
<p>(Image Source: https://www.raspberrypi.org/blog/watch-tim-peake-astro-pi-flight-units-in-space/ )</p>
<p>There were even <a href="https://astro-pi.org/principia/">competitions aimed at School children</a>, where the winning entries became part of the Astro Pi payload that was launched to the International Space Station.</p>
<p>I don’t think I’ve yet met a single child in any of the clubs I’ve run, that doesn’t find this incredibly exciting and inspirational.</p>
<p>You can even purchase the equivalent <a href="https://astro-pi.org/about/hardware/sense-hat/">Sense HAT</a> and get the designs to enable you to <a href="https://astro-pi.org/about/hardware/flight-case/">3D print your own flight case</a>, meaning you can have your own fully operational version in your home or school here on Earth.</p>
<h2 id="gpio">GPIO</h2>
<p>Those pins you can see at the top of the Raspberry Pi image above are for GPIO - general purpose input/output. Enabling you to extend your RPi into the realm of electronics, by wiring in sensors, LEDs, matrix displays, servos and motors and many more component, which can then be interacted with programmatically.</p>
<p>The GPIO pins can also be used to add pre-built boards, such as the Sense HAT for the Astro Pi. One of my favourites is by Energenie which, coupled with some radio-frequency controlled electric mains plug sockets, means you can start to control devices around the home programmatically.</p>
<p>As you can imagine, once you start joining up all of the different pieces that we’ve discussed so far, coupled with other technological resources available, the potential is only really limited to one’s imagination - and as we’ve discussed, children’s imagination is pretty phenomenal.</p>
<p>In one of my favourite home projects from earlier in the year, we used the Python API to create a ‘magic block’ in minecraft, which when you walk close enough to it, uses the energenie HAT, to trigger a disco light in the physical world. (Jack’s original intention was that it would trigger a loud klaxon in his sister’s room - but we agreed on a compromise :) )</p>
<p><img src="/images/12devs/19-12Devs-Ben_Seymour.jpg" alt="Energenie and the Minecraft Magic Block triggering Disco Lights " /></p>
<p>This is again where I believe the knowledge of the art of the possible from those already in the industry is phenomenally valuable to help inspire and guide the imagination of the child</p>
<h2 id="our-own-private-web">Our Own Private Web</h2>
<p>The final project I’m going to mention is something I trialled with a group of 10 Year 5 pupils (9/10 years old) in a coding club last summer.</p>
<p>I took into school a box of 10 Raspberry Pi’s, router, switch, cat5 cables, and VGA adapters (fortunately the school had a batch of old monitors, keyboards and mice we could use) and we set about learning not just how to write basic HTML and CSS, but also ran local web servers, so that pupils had a more concrete grasp of what the web is.</p>
<p><img src="/images/12devs/22-12Devs-Ben_Seymour.jpg" alt="Our Own Private Internet" /></p>
<p>I encouraged the pupils to setup the equipment (with mains power turned off at first) - which turned out to be utterly new to most of them, and turned out to be one of the most challenging parts of the project, taking around 45 minutes the first time.</p>
<p>With all of the RPi’s eventually plugged into the router/switch we discussed IP addresses and I’d setup more human-friendly names for each raspberry pi: rpi1.local, rpi2.local.</p>
<p>We then made a new file with a .html extension, put some very basic HTML into it, and showed them that they could view it in the browser. They made some basic edits, such as adding a personal message, saved and reloaded.</p>
<p>I’d already installed Apache (a freely available Web Server which is estimated to <a href="https://en.wikipedia.org/wiki/Apache_HTTP_Server">serve over 46% of all active websites</a> ) on the RPi’s and setup some directory aliasing (and permissions) such that those files they had just created were effectively now served live - and we then navigated to each other’s machines to view their personal pages. (This generates a LOT of excitement)</p>
<p>Finally they learned about the anchor tag, and started HREF’ing links into each others machine… and hey presto we had the beginnings of our ‘Own Private Web’.</p>
<p>I’d setup another RPi with a whole load of example files for them to explore, copy, and learn from, including using parts of <a href="http://www.csszengarden.com/">Zen Garden</a> to introduce CSS.</p>
<p>Final steps were to show them how to ‘view source’, and and they were off. Very much self-guided and learning independently, as well as helping each other - my role was then pretty much fielding occasional questions, which predominantly involved typo’s (scr instead of src), and why there wasn’t an H0, to also some really interesting areas like how hex colour codes worked.</p>
<p>One delightful aspect that the pupils undertook by their own volition was to share what they learned - a common theme in the web pages that they subsequently wrote, was instructional pages, sharing with the group a new aspect of HTML and CSS as they uncovered them.</p>
<p>I also run a headless RPi (v2) which is externally accessible, and mapped to a proper domain name. Which means we can discuss it end-to-end: Physical Server, OS, Apache Web Server, simple HTML/ CSS files, Domain names (DNS), the network, and finally the browsers on RPi’s in front of them.</p>
<p>As all-pervasive as the web is in daily life, as is depended upon by so many people on a daily basis, I wonder how many adults have a notion of how it works - but from my experience, if it’s presented in the right way, this is potentially accessible to a reasonable % of older primary school pupils.</p>
<p>(** If you do end up working with children in this area, you should definitely read up on children and internet safety - The schools I volunteer at already have their own policies and guides. Part of the reason for initially considering the local router/network approach was to enable me to have an environment which was completely disconnected from the web at large)</p>
<h1 id="where-do-i-start-as-a-parentrelativeneighbourvolunteer">Where do I start as a parent/relative/neighbour/volunteer?</h1>
<h2 id="how-early-can-children-start">How early can children start?</h2>
<p>In the photo below Zoe would have been 4 years old, and while I had to do a lot of the setup in advance of her using it, she loved exploring the Makey Makey to interact with the Scratch based piano.</p>
<p><img src="/images/12devs/25-12Devs-Ben_Seymour.jpg" alt="4 year old experimenting with a Makey Makey" /></p>
<p>There are some barriers to learning which are perhaps more acute for younger children, but some the items below could be factors affecting learning at any age:</p>
<p>Fine motor skills<br />
Vocabulary / Language / (Reading skills)<br />
Attention / Fatigue<br />
Awareness of what is possible<br />
Confidence</p>
<h2 id="fine-motor-skills">Fine Motor Skills</h2>
<p>Some people, especially younger children may find it challenging to use keyboards with keys that are too large or small for their hands.</p>
<p>I regularly encounter children struggling with double clicking a mouse - which can sometimes be greatly improved by changing the configuration settings on the machine they are using.</p>
<p>Using a trackpad, can be an unusual experience at first, in part at first due to the disconnect between this non-responsive rectangle rectangle near their body, and the relative movement of the pointer up on the screen</p>
<p>The touch interfaces on Tablets and Phones are wonderfully intuitive - I recall my daughter as a very young baby interacting with photos on our tablet in a completely instinctive manner. (which eventually leads to lots of grubby finger prints on your TV and laptop screen)</p>
<p>There are some fantastic learning resources for tablets such as Scratch Junior which can really make things accessible for younger audiences.</p>
<p>There are also some wonderful projects which enable logical/algorithmic thinking through interacting with tactile wooden blocks, such as <a href="http://www.wired.co.uk/article/primo">Cubetto</a> which is aimed at 4 year olds.</p>
<h2 id="vocabulary--language--reading-skills">Vocabulary / Language / (Reading skills)</h2>
<p>Even in a professional context, how recently were you in a meeting or presentation where someone use an acronym or abbreviation which left some of attendees either utterly baffled, or even a little uncertain that they understood what was being discussed. Abbreviations and acronyms are brilliant tools for discussing complex concepts in a short-hand way - but only if you can be sure that your target audience understands them.</p>
<p>For children, finding the appropriate language is even more crucial. A word like ‘icon’ might be completely alien to younger children (whereas ‘emoji’ might be more familiar).</p>
<p>You might need to put words on the whiteboard, while introducing a topic, to help them slowly build up their mental dictionary of these new terms.</p>
<p>Context and experience can also change the appropriate meaning of a spoken word (professionally think of: SAS vs. SaaS vs. Sass vs. sass), and of course the context for a 9 year old might be very different to you own.</p>
<p>(Hopefully, you have been able to establish an atmosphere such that the children are comfortable letting you know that they don’t understand.)</p>
<p>Even upper/lower case letters can be confusing, and I’ve had experiences where using an ‘uppercase keyboard’ confuses younger children. There are special <a href="https://www.amazon.co.uk/gp/product/B002LFHN3E/">early learning keyboards</a> available which can help.</p>
<p>From a British standpoint, children will consider ‘color’ to be spelt incorrectly in HTML/CSS, or shortening ‘source’ to ‘src’ for an img tag and can frequently lead to introducing errors into their code.</p>
<h2 id="attention--fatigue">Attention / Fatigue</h2>
<p>There are various studies about <a href="https://www.fastcompany.com/3035605/how-to-be-a-success-at-everything/the-exact-amount-of-time-you-should-work-every-day">optimal focus time</a> for adult professionals, and many adult developers I know can focus for several hours at a time if they can achieve ‘flow state’. However for children younger, or those less practiced in longer periods of concentration, you need to be on lookout for concentration-fatigue… where giving them a short break mid-task, can reinvigorate them. In primary coding clubs I normally stop the session after around 25-30 minutes and do a ‘cool projects’ segment. This typically involves talking about, or watching short videos, ideally technology or coding related, but also often giving a narrative around the outcomes being through imagination coupled with artistic and technical skills. Some examples that have worked really well:</p>
<p><a href="https://www.youtube.com/watch?v=IvUU8joBb1Q">Wintergatan - Marble Machine</a><br />
<a href="https://www.youtube.com/watch?v=34Q0BB8-2nA">Action Movie Kid</a><br />
<a href="https://vimeo.com/61174060">Pixel Pyros</a> by Seb Lee-Delisle<br />
Mechanical Fuzzy Weather Machine () by Brendan Dawes<br />
<a href="https://www.youtube.com/watch?v=X0pFZG7j5cE">CUBESTORMER 3 : Rubik’s cube solving lego robot</a></p>
<p>In my experience it gives everyone a mental-breather, while stoking their enthusiasm and focus for another 30 minute stint. You can gauge the room to determine if shorter or longer periods will work better for your group.</p>
<h2 id="awareness-of-what-is-possible">Awareness of what is possible</h2>
<p>One question I often get asked by parents is :
“What can we do with a Raspberry Pi?”</p>
<p>At first my response was “almost anything you could do with a computer”, which after repeatedly eliciting blank stares, made me appreciate that this is one of the key areas that I think we in the Web/Software/IT industry can greatly help, namely: extolling the art of the possible, in a way which is exciting, while forming some stepping stones to help them develop in the direction of their interests.
I think there also a need for greater support for parents, especially those who may have had little or no prior computing experience, and who would like to be better prepared to encourage and support their children in starting coding. In relation to this I have started an initiative called <a href="http://codeparents.org/">Code.Parents()</a>, where further details and guidance can be found.</p>
<h2 id="confidence">Confidence</h2>
<p>Finishing right back where we started: Confidence is a foundational facilitator for learning, at all ages.</p>
<p>Be cautious using language like ‘simple’ or ‘just’. If someone (of any age) is struggling with something - you suggesting it’s ‘easy’, probably isn’t going to help their self-esteem.</p>
<p>Be positive.
Encourage the pupils to be positive and encouraging towards each other, and also with themselves. If needed, set expectations and boundaries that need to be met to be able to participate in the the club.</p>
<p>If someone is struggling with self-confidence, actively look for something, anything to praise them about. Maybe break the task into even smaller elements, or maybe change to a different activity altogether.</p>
<p>Go from where they are, to where you want them to be.
Use praise and encouragement to engender appreciation and confidence.
Your experience, passion and enthusiasm are just the sparks needed to ignite the tinder of their imagination.</p>
<p>I’d love to hear about, and to learn from, your experiences.
I’m also very happy to try to help if I can: <a href="https://twitter.com/bseymour">@bseymour</a></p>Ben SeymourI work in software development, and I’ve loved experimenting with computers for nearly 40 years. I don’t think that everyone should become a developer, just like I don’t think that everyone should become an author, painter, accountant or musician… but I do think that everyone should have the opportunity to explore coding, ideally from an early age.