<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Joe Lamyman&#39;s Blog</title>
	<subtitle>A feed of the latest blog posts from Joe Lamyman&#39;s blog.</subtitle>
	<link href="https://joelamyman.co.uk/feed.xml" rel="self"/>
	<link href="https://joelamyman.co.uk/"/>
	<updated>2023-09-24T01:01:01Z</updated>
	<id>https://joelamyman.co.uk</id>
	<author>
    <name>Joe Lamyman</name>
    <email>joelamyman@gmail.com</email>
	</author>
	
    
    <entry>
      <title>RIP Parsing: Why validation still matters</title>
      <link href="https://joelamyman.co.uk/blog/rip-parsing:-why-validation-still-matters/"/>
      <updated>2023-09-24T01:01:01Z</updated>
      <id>https://joelamyman.co.uk/blog/rip-parsing:-why-validation-still-matters/</id>
      <content type="html"><![CDATA[
        <p>Chances are that with the upcoming release of the <a href="https://www.w3.org/TR/WCAG22/">Web Content Accessibility Guidelines (WCAG) 2.2</a>, <a href="https://www.w3.org/WAI/WCAG21/Understanding/parsing.html">4.1.1 Parsing (A)</a> will be removed. However, that’s not to say that parsing and validation are no longer relevant. In this post, we’ll cover why they remain important as a fundamental step for good development practices.</p>
<h2>4.1.1 Parsing actually covers very little</h2>
<p>The parsing guideline, requires that:</p>
<blockquote>
<p>In content using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique…</p>
</blockquote>
<p>The impact of these issues is relatively limited. In my experience, they typically surface when an <code>id</code> attribute has been duplicated, leading to the incorrect label or description being linked to a form element.</p>
<p>When checking for these issues using HTML validators and conformance checkers, it’s only a very small number of issues that fail against this success criterion (SC). As Steve Faulkner says, <a href="https://www.tpgi.com/wcag-2-0-parsing-criterion-is-a-pita/">parsing is a PITA</a>:</p>
<blockquote>
<p>… the errors that need fixing for accessibility purposes can often be needles in a haystack</p>
</blockquote>
<p>Patrick Lauke, summarises the fundamental problems with this SC concisely in the following post:</p>
<iframe src="https://mastodon.social/@patrick_h_lauke/111119381749641139/embed" width="400" allowfullscreen="allowfullscreen" sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox allow-forms" title="Patrick Lauke's post on the problems with 4.1.1 Parsing" style="min-height:32rem;max-width:100%;"></iframe>
<p>Misinterpretation of this SC is where I have found myself struggling previously. It can be tempting to include a load of other validation or conformance fails under this SC, but at that point, you’re no longer assessing against the WCAG standard.</p>
<p>This is frustrating.</p>
<p>It can feel like by not reporting problems, you’re letting people down, and allowing inaccessible websites/products to pass. However, Eric Bailey provides really helpful insight as to why <a href="https://ericwbailey.website/published/accessibility-auditing-and-ego/">sticking to the SCs is important</a>:</p>
<blockquote>
<p>By scoping your work to the actual, objectively demonstrable problems in an inaccessible digital experience you are able to help facilitate a trusted remediation process.</p>
</blockquote>
<p>It’s a small stepping stone in the right direction.</p>
<h2>Validation can still allow us to find problems</h2>
<p>With all of that said, you’re probably not fussed about the removal of 4.1.1 Parsing (depending on whether you were a staunch supporter of it before). However, validation can still play a really important part in web development.</p>
<p>You can use the <a href="https://validator.w3.org/">W3C’s HTML validator</a> to identify problems such as:</p>
<ul>
<li>Missing <code>alt</code> attributes, for when images do not have a text alternative for people using assistive technologies</li>
<li>You’ve used an element that doesn’t exist, maybe due to misspelling it</li>
<li>You’ve referenced a non-existent <code>id</code> attribute, so elements may not be related as intended</li>
</ul>
<p>I’ve also encountered problems in the past as a web developer where there’s been odd behaviour, which has been resolved by fixing validation errors.</p>
<p>Additionally, there’s a benefit to using the W3C’s validator due to it being easy to access. Having worked in the UK’s Civil Service, I know that some devices are tightly locked down to prevent additional downloads and software from being added. Being able to take a large web page and validate it to quickly check for missing <code>alt</code> attributes is really handy for getting an overview of problems.</p>
<p>Furthermore, while it’s not always the case, a massive list of validation errors can be symptomatic of larger development problems, such as a bloated, developer-focused, JavaScript framework, which may introduce other accessibility problems.</p>
<p>Of course, there are other solutions that can help address the issues I’ve raised here. Browser extensions can be used to find both validation issues, as well as colour contrast, role, ARIA, and a whole host of other issues. There are also automated tools such as <a href="https://pa11y.org/">pa11y</a> which can be used during development to identify similar issues.</p>
<h2>This post is a long winded way of saying proofread or check your work</h2>
<p>In short, validating your HTML helps to ensure that your website is going to work as expected for everyone. It’s not the secret sauce to help you catch lots of accessibility issues that prevent people from using your website, but it can help make sure that your websites do the basics right.</p>
<p>Check your code like you give a crap.</p>
<h2>Related posts</h2>
<ul>
<li><a href="https://adrianroselli.com/2022/12/the-411-on-4-1-1.html">The 411 on 4.1.1</a> by Adrian Roselli - this post further details other 4.1.1 issues and how they can be caught by other SC</li>
<li><a href="https://youtu.be/n-eM7_eYuCs?si=yILWStpJ1b7CAYZH">These aren’t the SC you’re looking for…</a> by Patrick Lauke - this is a really fantastic presentation that helps anyone working with WCAG to stick to the standard and feel more confident in checking for the right criteria</li>
<li><a href="https://bitsofco.de/pa11y/">Accessibility Testing with pa11y</a> by Ire Aderinokun - this guide is a great introduction to using pa11y and identifying problems</li>
</ul>
<h2>Changes to this post</h2>
<ul>
<li>Updated 24th September to include Patrick's fantastic post summarising the issues with the 4.1.1 Parsing SC</li>
</ul>

      ]]></content>
    </entry>
	
    
    <entry>
      <title>In defence of designing slowly</title>
      <link href="https://joelamyman.co.uk/blog/in-defence-of-designing-slowly/"/>
      <updated>2022-07-27T11:11:29Z</updated>
      <id>https://joelamyman.co.uk/blog/in-defence-of-designing-slowly/</id>
      <content type="html"><![CDATA[
        <h1>In defence of designing slowly</h1>
<p>It's great that social media has given rise to short videos of people designing things so quickly. It helps to demonstrate that complex designs can be broken down into more simple, individual steps.</p>
<p>There's videos that are less than 30 seconds that can help you:</p>
<ul>
<li>Animate text</li>
<li>Create a loading spinner</li>
<li>Make a carousel</li>
</ul>
<p>The videos go through the visual designs of the components in prototyping software very quickly, but don't stop to ask why.</p>
<p>Why would a user want their text animated? It could be distracting if used incorrectly.</p>
<p>Why would a user want a loading spinner? It doesn't convey any progress to a user, it just loops infinitely, expecting that a user will wait patiently.</p>
<p>Why would a user want a carousel? Carousels seem to be used when content has not been designed and prioritised thoughtfully.</p>
<h2>You're not designing as entertainment</h2>
<p>The key question should be, what do your users need?</p>
<blockquote>
<p>if all you have is a hammer, everything looks like a nail</p>
</blockquote>
<p>If you go into designing, planning on using lots of  these quick designs, you'll find lots of places to add them. Visually, they look interesting and capture your attention, but is that helpful for people who need to use your website or app?</p>
<p>Write using <a href="https://www.plainlanguage.gov/guidelines/">plain language</a> and ensure that users can find what it is they need to complete their tasks. Prioritise content appropriately and try to start with one thing per page, to avoid overloading pages with content.</p>
<p>Designs don't need to be made in less than 30 seconds. If you've used a lot of websites, you've probably identified some patterns or processes that feel like they've been designed in 30 seconds. Patterns come and go, but wasting somebody's time with a &quot;flashy&quot; design will always be shit design.</p>
<h2>How would people interact with it</h2>
<p>When working in design roles, the most difficult part is conveying and clearly communicating how people will interact with your designs. It's a key area where designers must focus their attention to ensure that designs are inclusive and accessible to as many people as possible.</p>
<p>These quick videos contain no information about user interaction at all.</p>
<ul>
<li>Can a user pause the animation of text if it is distracting?</li>
<li>How will somebody using a screen reader know that a loading indicator is present? Will there be a text alternative?</li>
<li>How will somebody using only a keyboard operate the carousel in order to access all the content within it?</li>
</ul>
<p>Making sure that users can find information and can complete their tasks is the job of a designer.</p>
<p>In isolation, these interesting - albeit purposeless - designs done quickly do not solve problems. They can trivialise the design process and move the focus away from what the user needs.</p>

      ]]></content>
    </entry>
	
    
    <entry>
      <title>Hosting your website for free</title>
      <link href="https://joelamyman.co.uk/blog/hosting-your-website-for-free/"/>
      <updated>2021-01-24T11:11:29Z</updated>
      <id>https://joelamyman.co.uk/blog/hosting-your-website-for-free/</id>
      <content type="html"><![CDATA[
        <p>It's the time of year when university students start the arduous process of applying for graduate jobs. I thought I would reveal an interesting insight into the number of jobs I applied for. A quick search of my mail inbox returns the result, '1 of many' which feels about right.</p>
<p>An aspect of applying for work that is ever-present is the request for a portfolio or work that you would like the interviewer to see. Personally, I believe that my portfolio (showing my diverse work) really helped me to receive interview offers as it demonstrated my skills and abilities.</p>
<p>However, once you've got your website made to showcase your work, how do you host it?</p>
<p>You may be familiar with a range of large hosting companies that reel you in with low prices but then quickly increase costs and make it difficult for you to leave. <strong>This post will talk you through two different ways you can host your portfolio for free</strong>!</p>
<h2>1. Netlify</h2>
<p>This first method of hosting your website is my favourite as Netlify is extremely easy to use and always updating it's offering.</p>
<p><a href="https://www.netlify.com/">Visit the Netlify website.</a></p>
<h3>Step 1: You'll need an account.</h3>
<p>You can register for an account with the following:</p>
<ul>
<li>An email address</li>
<li>An existing GitHub account</li>
<li>An existing GitLab account</li>
<li>An existing BitBucket account</li>
</ul>
<h3>Step 2: Uploading your website</h3>
<p>Once signed up and logged in, you should be presented with a dashboard, titled '<em>Team Overview</em>'.</p>
<p>The page I am presented with says, '<em>Joe Lamyman's team</em>', '<em>Team overview</em>', so if you see something similar to that - you're in the right place!</p>
<img class="u-fullWidth--article" src="/images/blog/netlify-team-overview.png" alt="A screenshot of the Netlify 'Team overview' screen, showing a title saying 'Joe Lamyman's team', the navigation presents options such as Sites, Builds, Plugins, Domains, Members, Audit log, Billing and Team settings. A section at the top of the UI is titled: Joe Lamyman's team, making it evident that a user is logged in. Beneath this title are quotas such as Bandwidth used, Build minutes used and Concurrent builds. Below this information are a list of sites on Joe Lamyman's account such as joelamyman.co.uk">
<p>Next, you will need to navigate to the '<em>Sites</em>' page.</p>
<p>Here, you should see the option to drag and drop your site folder. You may find this section towards the bottom of the page.</p>
<p>I understand that this method is not accessible to all users, so I have contacted Netlify to understand if there could be a button or alternative method to upload a file without the need to drag and drop.</p>
<p>If you drag the folder containing your website to this section, your website will begin to upload. You should be given a random name and website address. On the screen, a message to tell you that your site is being deployed should be presented.</p>
<p>Everything is working great!</p>
<p>After a short time, your site will be deployed. You will know this has been successful as the message on screen will change to: Your site is deployed.</p>
<img class="u-fullWidth--article" src="/images/blog/netlify-site-deployed.png" alt="A screenshot of the Netlify 'Site overview' screen. The screen contains a random site name that has been generated, in this case it is elated-shaw-6de448, alongside it is the website's address that has been generated which is https://elated-shaw-6de448.netlify.app. Below this information is a checklist and under the first item is a message that says: Your site is deployed. This confirms that our site has been deployed correctly.">
<h3>Step 3: Set up a custom domain</h3>
<p>If you have already purchased a domain (I use Google Domains for all my domain names and have found it to be the most straight-forward to use, i.e. I'm not harassed by daily spam), you can now use this. If you don't have a domain, that's also fine! I'll explain how you can still get a customised domain.</p>
<h4>Step 3.1: If you do not have a domain</h4>
<p>From the '<em>Site overview</em>' page for your website, navigate to the '<em>Site settings</em>' page.</p>
<p>On this page you will find '<em>Site details</em>' and information about your site. There should be the name of your site which will have been randomly generated.</p>
<p>If you select the button on this page titled, '<em>Change site name</em>', a dialog will be presented. Here you can change the existing site name to something more appropriate.</p>
<img class="u-fullWidth--article" src="/images/blog/netlify-change-site-name.png" alt="A screenshot of the Netlify 'Change site name' dialog. The dialog contains a message saying: The site name determines the default URL for your site. Only alphanumeric characters and hyphens are allowed. Then there is a form field, labelled Site name, with a field underneath for the user to change the site's name. Below this field are Save and cancel buttons.">
<p>Make sure to save the change!</p>
<p>I changed my site's name to: joe-lamymans-portfolio. As such, the address for my site now will be: joe-lamymans-portfolio.netlify.app</p>
<p>Without paying for a domain, you will always have the netlify.app extension on your address, but I do not think that is a problem! The benefit of this, is that your site will be using HTTPS without you needing to do anything else.</p>
<p>You can find the link to your site towards the top of the page. The UI will say something along the lines of: 'Settings for' and then the name you just provided. The link can be found directly after this.</p>
<p>There's nothing more you need to do, skip to step 4!</p>
<h4>Step 3.2: If you have a domain</h4>
<p>If you have a domain, from the '<em>Site overview</em>' page, navigate to the '<em>Domain settings</em>' page.</p>
<p>On the domains page, select the button titled '<em>Add custom domain</em>'. You will then be asked to enter the custom domain that you'd like to use. For example, if you purchased the domain <code>www.joe-lamymans-portfolio.co.uk</code>, in this field you would enter <code>www.joe-lamymans-portfolio.co.uk</code>.</p>
<p>You will then need to verify this domain. For the best results, you will want to use the Netlify DNS.</p>
<p>To do this, when you select your domain name on the Domains page, you should be presented with four name servers, these will look like: <code>dns1.p01.nsone.net</code></p>
<p><strong>Head over to wherever your domain is registered</strong> and within your DNS settings, there should be an option to <strong>use custom name servers</strong>. Select this and then add the name servers presented to you by Netlify on the domains screen.</p>
<p>It may take a little while for the changes to be made, I've had to leave it overnight before, so do not worry if the changes are not instant.</p>
<h5>Step 3.2.1: Set up HTTPS</h5>
<p>Finally, you will want to use HTTPS to ensure that it can be accessed and used securely.</p>
<p>Still on the domains page within Netlify, towards the bottom of the page should be a 'HTTPS' section.</p>
<p>To use HTTPS on your site, with Netlify it is as straight forward as selecting a button. This will then request a HTTPS for your website. Once requested it may take a little bit of time for the certificate to be requested and used. However, once you've done this, the process is managed automatically.</p>
<h3>Step 4: You are good to go!</h3>
<p>That is it. Process over, you have now got your website hosted for free with Netlify!</p>
<p>Now when you go for an interview, you can casually slip in a phrase like:</p>
<blockquote>
<p>&quot;Nice to meet you. Did you know I'm FULLY utilising the frictionless array of serverless utilities and REALLY expanding on the Jamstack methodology by hosting my site on Netlify!! Q4 is going to be MASSIVE for me and I can't wait to rehydrate my DOM with those Netlify serverless functions... WHO AM I KIDDING, we all know they're really just AWS Lambda functions LOL&quot;</p>
</blockquote>
<p>If that doesn't get you a job, you didn't want to work at that company anyways.</p>
<h2>2. GitLab Pages</h2>
<p>This is the other method for hosting free websites that I tend to use for quickly getting a site up and running. It is also really convenient if you're already using Git to host your code. In this example, I'll be using GitLab as <a href="https://github.com/drop-ice/dear-github-2.0">GitHub refuses to drop ICE</a> and <a href="https://www.theguardian.com/technology/2021/jan/18/github-apologizes-firing-jewish-employee-capitol-attack-nazi-link">GitHub recently fired an employee who warned of Capitol attack Nazi link</a>.</p>
<p><a href="https://about.gitlab.com/">Visit the GitLab website.</a></p>
<h3>Step 1: You'll need an account</h3>
<p>You can <a href="https://gitlab.com/users/sign_up">register for a GitLab account</a> with just an email address and you might find this the quickest way to get going.</p>
<h3>Step 2: Make a new project</h3>
<p>Once you've signed up and logged in. From the 'Projects' page, you need to select the button titled, 'New project'.</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-blank-project.png" alt="A screenshot of the Gitlab 'Create new project' screen. The screen contains 4 options: Create blank project, Create from template, Import Project and Run CI/CD for external repository. You will want to select the first option, Create blank project.">
<p>You'll need to enter a few details and be sure to set the visibility to public!</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-project-settings.png" alt="A screenshot of the Gitlab 'Create blank project' screen. The screen severak fields. The first, Project name, contains a text field within which I have entered 'Joe Lamymans Portfolio'. Next is the Project URL, I have left this as it was generated: https://gitlab.com/j-lamyman/. Next is the project slug, this is again automatically generated from the project name and as such is joe-lamymans-portfolio. Next, a text area labelled: Project description (optional). I have filled this with the text: A portfolio of the projects I have worked on during my time as a University student. Next, a fieldset of radio buttons. There are two options: Private and Public. The public radio button has been selected. Finally, the, 'Initialize repository with a README' checkbox remains unchecked. Below these fields is a button labelled, 'Create project'.">
<p>If you are confident enough with the command line, you can follow the instructions to push an existing folder. If not, you can select the button titled, 'New file'. This will take you to an online text editor where you can create your files and copy over all of your code into them.</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-ide.png" alt="A screenshot of the Gitlab's in browser code editor. The screen features a menu down the left which shows the files that the user has added. I have added an index.html file which is visible. The majority of the screen is taken up by HTML5 code that I have copied and pasted in. Scanning this code, the user can see a <head> element containing references to a website called Style Stage. At the bottom of the screenshot is a button labelled 'Commit...' and some text letting the user know that 1 file has changed.">
<p>Once you've added your files, you need to select the 'Commit' button to save your work. You will be asked for a commit message, just describe the files you added. Something as simple as: &quot;This was a YOLO commit, added my whole site&quot;, will suffice for now. You can go ahead and commit this now.</p>
<p>If you head back to your projects page, your commit message should be on screen, as well as the files that you created.</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-project-overview.png" alt="A screenshot of the Gitlab's 'Project overview' screen. The screen is titled: 'Joe Lamyman's Portfolio'. On screen is relevant information explaining how many commits there have been (1), the number of branches (1) and the size of files (143KB). More pertinent for this post, a message is visible that mirrors the commit message I provided, 'Created the index page and added in content'. Below this, listed are a series of buttons for the user to add files, such as a README, a license, or to set up CI/CD. Finally, files in the repository are listed. Here the index.html file I created previously is listed.">
<h3>Step 3: Setting up Pages</h3>
<p>On your project's 'Project overview' screen, select the button titled, 'Set up CI/CD'.</p>
<p>This will take you to an intimidating looking screen, but we do not need to do too much here.</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-add-ci.png" alt="A screenshot of the Gitlab's 'New file' screen. The screen contains a series of dropdowns along the top for changing the branch, file type as well as providing the user an option to Apply a template. In this screenshot, I am on the main branch, the file is named .gitlab-ci.yml. This name was automatically generated. I have selected the 'Apply as template' button and am hovering over the option 'HTML' under the Pages subheading in the resulting dropwdown.">
<p>Select the dropdown button titled, 'Apply a template'. Then, you can filter for, or navigate through the dropdown, <strong>you are looking for the HTML option</strong> under the subheading, 'Pages'.</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-html-template.png" alt="A screenshot of the Gitlab's 'New file' screen with the HTML template applied. The screen contains the same dropdowns along the top as in the previous screenshot. However, now that a HTML template was applied, there is YAML in the code editor on the page that has been automatically inserted. This YAML contains information like, stage: deploy, script: mkdir .public. At the bottom of the screenshot is a Commit message which is: 'Add .gitlab-ci.yml' and below that, the field target branch is set to main.">
<p>Select this HTML option. As in the screenshot above, a text editor will be automatically filled with YAML config. Ensure that the <code>only:</code> section contains the name of your branch. For example if your branch name is <code>main</code>, ensure that the config under this is <code>main</code>. Ignore everything else on the page and then select the button titled, 'Commit changes'.</p>
<p>It will take roughly a while for your site to be uploaded, but that is the process. When it's available, you can navigate to 'Settings' and then 'Pages' to find your website's domain. As with Netlify, you can change the existing domain or upload a custom domain.</p>
<img class="u-fullWidth--article" src="/images/blog/gitlab-settings-pages.png" alt="A screenshot of the Gitlab's 'Settings/Pages' screen. The screenshot is titled Pages and contains text that says: With GitLab Pages you can host your static websites on GitLab. Combines with the power of GitLab CI and the help of GitLab Runner you can deploy static pages for your individual projects, your user or your group. Below this, I have the Force HTTPS checkbox checked. Underneath this, a section titled Access pages tells me the URL that the pages are surved under. Selecting this link will take you to your site. Below this is a button for removing pages.">
<h2>Wrapping up</h2>
<p>I hope that this post helps you to get set up with your own website! Once set up, send me your websites, I would really love to see them.</p>
<p>Additionally, if you have any trouble or find any problems with this guide - just send me a message, I'm happy to help you if you get stuck!</p>

      ]]></content>
    </entry>
	
    
    <entry>
      <title>Digital Accessibility for the Individual</title>
      <link href="https://joelamyman.co.uk/blog/digital-accessibility-for-the-individual/"/>
      <updated>2020-12-06T11:16:24Z</updated>
      <id>https://joelamyman.co.uk/blog/digital-accessibility-for-the-individual/</id>
      <content type="html"><![CDATA[
        <p><strong>This article appeared originally on the <a href="https://ydrf.org.uk/">York Disability Rights Forum's website</a> on November 16th 2020.</strong></p>
<p>The World Wide Web has allowed for communication and interaction of different users and cultures like never before and it’s easy to imagine the benefits that this can bring, such as everyone being able to use their own device to have the same access to online resources. No longer are there physical barriers in place, preventing people with accessibility needs from achieving their goals.</p>
<h2>Poor accessibility is costly for everyone</h2>
<p>In order to make the web more accessible, the Web Content Accessibility Guidelines, also referred to as WCAG, have been developed. The aims of these guidelines are to make websites perceivable, operable, robust and understandable by anyone, no matter their accessibility needs.</p>
<p>Despite the opportunity that the web should afford everyone, a recent analysis of 1 million websites provides a stark contrast. In 2019, <a href="https://webaim.org/projects/million/">an automated test of 1 million websites, conducted by non-profit accessibility organisation WebAIM, found that 97.8% of homepages tested failed to meet the WCAG</a>. This means that there are hundreds of thousands of websites that prevent people from being able to use them. <a href="http://www.clickawaypound.com/">The Click-Away Pound Report 2019</a>, details that 71% of users with access needs in the UK click-away when presented with a website that is not accessible. Due to this, the report estimates £11.75 billion was lost by inaccessible websites in 2016. For an individual, though, this may mean they do not have a way to purchase goods and services that may be essential, as the website is not accessible to them.</p>
<h2>How can we improve accessibility?</h2>
<p>You may be wondering: if a website were to meet all of the Web Content Accessibility Guidelines, would it be accessible?</p>
<p>In short, the answer is no, not necessarily.</p>
<p>The majority of testing tools are automated, so they’re limited in what they can test for. Automated tools can test for things such as correct colour contrast between text and its background or even whether a language has been specified by the developer. However, there are things that automated tools cannot check for, such as whether the site can be used with only a keyboard, or whether certain features (i.e. skip links, for keyboard and screen reader users to navigate through content) have been used correctly during development. Because of this, the best approach to ensure accessibility and usability is to conduct a test of the website, with real users that have different disabilities and access needs, to get a better understanding of whether the website is accessible to as many people as possible.</p>
<p>In 2012, <a href="https://dl.acm.org/doi/10.1145/2207676.2207736">researchers presented an argument that the Web Content Accessibility Guidelines alone were not enough to make websites accessible to people</a>. As part of this research, 16 websites were tested by participants, who were asked to identify any problems during their use of the sites. The researchers found that 49.6% of problems identified were not covered by the WCAG 2.0 guidelines at the time. Therefore, there could be websites that meet all of the WCAG, yet still contain problems that make them difficult to use.</p>
<h2>Building upon WCAG with personalisation</h2>
<p>How can websites that meet the Web Content Accessibility Guidelines not be accessible?</p>
<p><a href="https://www.w3.org/TR/WCAG21/#background-on-wcag-2">The WCAG guidelines state</a>:</p>
<blockquote>
<p>Although these guidelines cover a wide range of issues, they are not able to address the needs of people with all types, degrees, and combinations of disability.
From this, we can understand that in order to make websites as accessible to as many people as possible, the WCAG have been developed with specific disabilities in mind, rather than the needs of individuals.</p>
</blockquote>
<p>There are solutions that already exist which attempt to allow people to personalise websites. A prominent example can be found within most modern web browsers such as Google Chrome, Safari and Firefox. These browsers allow users to change the default appearance of websites within their settings. For example, you could set the font size to appear bigger by default. However, the success of such approaches can depend on the way that a website has been implemented by its developer. Websites may have been styled and implemented in a certain way, so that some of these settings may not take effect, even when changed.</p>
<p>It’s important that we remember that as individuals, our needs change depending on how we’re feeling and depending on our context of use. <a href="https://www.gov.uk/service-manual/helping-people-to-use-your-service/making-your-service-accessible-an-introduction#think-about-accessibility-from-the-start">The Government Digital Service published an article providing examples where a user’s ability could be affected</a>, including:</p>
<ul>
<li>location – they could be in a noisy cafe, sunny park or area with slow wifi</li>
<li>health – they may be tired, recovering from a stroke or have a broken arm</li>
<li>equipment – they could be on a mobile phone or using an older browser</li>
</ul>
<p>As such, it makes sense that as an individual, you should be able to change and adapt websites to meet your own accessibility needs. This is the aim with my research into personalisation.
Text reads 'research opportunity'
Take part in the research</p>
<p>As part of my research, I’ve created an example e-commerce fast fashion website, replicating the content and structure of the current, most popular fashion websites. Within this site, I’ve developed different ways for people to personalise the design to meet their individual accessibility needs. The entire design of the site can be personalised, as well as individual elements. I am currently in the process of concluding this study and as such I am looking for people with different disabilities that are also users of assistive technology to take part in the research and to help me understand if personalisation is useful.</p>
<p>Earlier in the year I also conducted a study inviting people to design their own version of a toilet roll-selling e-commerce website. While the study is no longer running, <a href="https://bog-roll-business-builder.netlify.app/">you can still create your own bog roll business site</a>.</p>
<p>To take part in the study, you will be invited to complete a series of tasks on the website while providing feedback on your experience. Following the tasks, you will be asked a few short questions. It will take roughly an hour to complete and payment will be provided in the form of a £20 Amazon voucher.</p>
<p>This research is being conducted as part of the MSc by Research in Interactive Media at the University of York and is being supervised by Dr Anna Bramwell-Dicks and Dr Debbie Maxwell. If you have a shared interest in web accessibility, I strongly recommend getting involved with the Interactive Media degree. It has given me the opportunity to investigate this avenue of research and the staff have supported me and encouraged me every step of the way.</p>
<hr>
<p>A massive thank you to the York Disability Rights Forum for helping me with my research and for the fantastic work they do for the community and in particular, Elki, who provided me with the opportunity to write this post.</p>

      ]]></content>
    </entry>
	
    
    <entry>
      <title>Designing an interactive survey</title>
      <link href="https://joelamyman.co.uk/blog/designing-an-interactive-survey/"/>
      <updated>2020-08-22T21:13:07Z</updated>
      <id>https://joelamyman.co.uk/blog/designing-an-interactive-survey/</id>
      <content type="html"><![CDATA[
        <p>As part of my master's degree, I have designed and coded an interactive survey to help me gather information around people's preferences when it comes to personalising website user interfaces. Making any survey and then recruiting participants is a difficult process, but making enjoyable and interactive surveys can act as a method of recruitment and can produce richer information! How can we do this?</p>
<h2>Survey tools</h2>
<p>If you are looking for an easy way to create a quick survey, there are a lot of fantastic options. In my experience, I encounter Google Forms the most. Google Forms allow you to quickly create forms with defined question formats (such as multiple choice questions, sliders). This is great! Within a few minutes you can have a survey, hosted and ready to share. However, you're limited to asking questions that are afforded to you by the functionality that Google Forms offers and it also leaves you with the task of recruiting participants.</p>
<p>These quick to create surveys therefore tend to be a digital reincarnation of traditional paper surveys that came before them. The benefit of the web is the interactivity that we are afforded to us as designers and developers, let's make us of it!</p>
<h2>Designing better experiences</h2>
<p>In the past few months I have been inspired by two great examples of participatory design, involving the user and making them a part of the design experience.</p>
<ol>
<li><a href="https://isthisasandwich.netlify.app/">Is this a Sandwich? 🥪</a> by Sarah Drasner - It's a really fun project where you look at photos and decide whether the object in question is a sandwich or not (you'll quickly end up questioning everything). At the end, Sarah tells you your score, ranging from 'Chaotic Evil' to 'Lawful Good', depending on your choices. Then, you can share your results to Twitter and see who your friends really are.</li>
<li><a href="https://userinyerface.com/">User Inyerface</a> by Bagaar - This is a game that challenges you to make it through a user interface that reverses commonly understood user interface patterns. The balance between frustration, as you struggle to understand where on earth to click, and whimsy with comical interactions (see <a href="https://whimsical.club/">The Whimsical Web</a> for more fantastic examples of this), is perfect.</li>
</ol>
<p><strong>Both of these projects provide delightful experiences. They put the participation and experience of the user before anything else.</strong></p>
<h2>Adapting interaction for surveys</h2>
<p>As a student at the University of York, I'm currently researching whether we can use personalisation of user interfaces to increase the accessibility of websites. I wanted to conduct research to understand how people would want to personalise a website. What options would they choose? What would their personalised site look like?</p>
<p>Inspired by the two projects mentioned above and the support and guidance from my supervisors, I set out to create an interactive survey: <strong>Bog roll business builder</strong>. It's a website that challenges you with creating the <em>perfect</em> user interface for a website selling toilet roll (there's a pandemic story hidden in there somewhere).</p>
<h2>Designing an accessible, interactive survey</h2>
<p>My initial idea was simple, you would answer questions along the lines of:</p>
<ul>
<li>How big should the font be?</li>
<li>How should product options be displayed?</li>
<li>Where should the product image sit?</li>
</ul>
<p>Then based on the answer you selected, a 'live' representation of the user interface you were creating would appear on the left of the screen.</p>
<p>I attended <a href="https://www.cassie.codes/speaking/getting-started-with-svg-animation/">Cassie Evans' fantastic workshop on scalable vector graphics (SVGs) and SVG animation</a> earlier this year and thought that this project would be a great opportunity to use SVGs to build the 'live' representation.</p>
<p>However, when I started implementing the site I quickly realised that using SVGs would not give the user the experience that I wanted. I needed the 'live' representation to be interactive, so that users could click around and understand how it worked and see if they were satisfied with the answers that they were choosing. In order to make the representation realistic and accessible to as many people as possible, I decided just to use HTML and CSS. Using these languages means that people can access the representation as they would any website on the internet. There is little JavaScript used, this was a conscious decision to make the website lightweight and more accessible to users who may not have a great internet connection.</p>
<p>Looking back, I decided that a hand-written HTML and CSS approach to this project would be fine, I thought that I would create 2-3 pages and as such, setting up a static-site generator or using a templating language would be overkill. I was very wrong. I would really recommend using a static-site generator when starting any project now. Personally I use <a href="https://www.11ty.dev/">Eleventy</a>, it's straight-forward and really quick. It doesn't bloat your webpages with additional content like some generators do.</p>
<p>I was apprehensive to try to create an interactive study as while I am familiar with accessibility best practice and the <a href="https://www.w3.org/TR/WCAG21/">Web Content Accessibility Guidelines</a>, I knew that with the study I wanted to create, it would require shifting the user's focus between elements of the page. For keyboard and screen reader users this can be problematic for a few reasons. If you haven't structured your content properly or used incorrect semantic HTML, it makes navigating a site difficult. The other reason being that explaining focus shifts and making them clear and apparent, without confusing users, can be difficult.</p>
<p>My approach to this was to create a standard HTML5 form with a <code class="language-html">&lt;fieldset&gt;</code> containing each question and answers. A field-set is a semantic way of grouping items within a form. As my form contains questions with multiple answers for the same question, grouping them with a <code class="language-html">&lt;fieldset&gt;</code> makes it easy to understand which answers relate to which questions.</p>
<p>Within each <code class="language-html">&lt;fieldset&gt;</code> is a <code class="language-html">&lt;legend&gt;</code>, this tag provides a caption for the fieldset. In my website, I use the legend to display the question. For example: <pre><code class="language-html">&lt;legend&gt;How big should the font be?&lt;/legend&gt;</code></pre> This will then make it clear that semantically all of the options within the field-set will relate to this question.</p>
<p>I have 3-4 different options that the user can select from for each question. These are displayed to the user as a large button, however, semantically they are HTML5 radio inputs (radio inputs as you can only select one per question). With some CSS styling, I use CSS Grid to quickly overlay the label on top of the radio input. The button that the user sees is actually the label (that's why there's no radio input in sight, they're just hidden behind the labels) styled to look like a button. Within HTML5, as long as you give a radio input a unique ID, you should use the <code class="language-html">for</code> attribute on a <code class="language-html">&lt;label&gt;</code> to create a semantic link. For example: <pre><code class="language-html">&lt;input type=&quot;radio&quot; id=&quot;my-cool-button&quot;&gt;
&lt;label for=&quot;my-cool-button&quot;&gt;This is a great option&lt;/label&gt;</code></pre> The code above creates a semantic link between the label and radio input. Because HTML is the best, in all browsers that I've come across, if you click on a label that is linked to a radio input, the radio input will be selected! I used this to my advantage and just display a large label, styled to look like a big button. As this is standard HTML5 specification, it's accessible with no further work needed.</p>
<p>However, once a user selects an option, how do they review their choice and see what it's like in the 'live' preview?</p>
<p>Some users may be able to see the preview on the left of the screen and interact with it using their mouse. Other users, such as keyboard users and those using screen-readers may not be able to do this. As such, I use skip links to direct participants to the live preview, and then a skip link to quickly get them back to the questions. If you were to use the <strong>tab</strong> button to navigate through the site, you'll reach the questions, navigate through the multiple choice answers and after this, you'll hit a button that's visually hidden, 'Test this in the live website view'. Using HTML5 anchor elements, we can specify an ID for an element on the page, that the link will take the user to. The link above directs the user's focus upon the 'live' preview. As mentioned before, the preview is just HTML elements, so the participant can interact with these, as they would a normal website. Upon reaching the end of the representation, the user will tab onto another skip link, 'Back to questions', directing their focus to the start of the current question. This simple approach allows the survey to be as accessible to as many people as possible, regardless of their accessibility needs.</p>
<p>When trying to implement a site to make it as accessible as possible, it's key to focus on the semantic structure of the HTML. If you can really nail this, it goes some way towards making the website usable. Using simple methods such as skip-links can then bridge over any gaps to make the site more accessible.</p>
<h3>How do the changing styles work?</h3>
<p>I use a little bit of JavaScript to identify when a user has selected a radio input. Each radio input has a specific attribute applied to it, explaining what the option is. With JavaScript, I look at the attribute of the radio input that has been clicked, for example <code class="language-css">c-shopDisplay__bodyText--size-medium</code>. While this may look nonsensical, it follows a pseudo structure and means that we can apply the styling the user has selected. This structure follows the <a href="http://getbem.com/introduction/">CSS BEM</a> naming principles (a way of naming your CSS classes for better understanding), we have a block, '<em>c-shopDisplay</em>', an element '<em>bodyText</em>' and a modifier, '<em>size-medium</em>'. Breaking it down like this, we can see that the styling should be applied to the shop display (the 'live' display that I keep referring to), it relates to the body text and the size will be medium.</p>
<p>With this information, I apply a CSS class to the shop display. Doing so will then make the relevant option display in the case that the answer's different options have different HTML markup. However, if it's for something simple like changing the colour-scheme which doesn't require a change in HTML markup, I make use of <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties">CSS Custom Properties</a>. These are essentially CSS variables, where you can give them a value and modify it elsewhere in your CSS. I do this by setting a default value in the CSS and then using CSS selectors, override this accordingly to display the colour that the user has selected. This method makes it quick and easy to allow for a personalised user interface. It's just a case of setting and removing CSS classes, there is nothing else involved.</p>
<h3>How is the most popular design displayed?</h3>
<p>Once a user creates their design, I submit their answers to a database, providing them with a 3 word randomly generated ID (a bit more user friendly than some crazy 16 digit number and it's funny to get IDs like stinky-mouse-thief). I store an individual record for the user so that their design can be quickly picked up displayed later on. I also have a record for each question which contains the number of times that an answer has been selected, the user's answers will contribute to these records. I do this so that I can quickly query a single record as to the most frequently selected answer for a single question and quickly display the most popular site to users.</p>
<p>To make this possible, I hosted the site with <a href="https://www.netlify.com/">Netlify</a>. Netlify hosts personal static-sites for free (I'm hosting this website for free)! This is great for prototyping or individual portfolios. Netlify's free tier is super generous and allows you to use functions, this is <strong>really</strong> important. A traditional static site is exactly that, static. It can't do much as the HTML and CSS has already been written. However, it can use JavaScript to change and update the HTML in the user's browser. My site does exactly this, it uses JavaScript to send user's answers and request the most popular site using Netlify's functions. You can see this in practice once you have created your design and it is compared against the most popular site. The information for the most popular site has been passed from my database, through a function and displayed using JavaScript.</p>
<h4>How do Netlify functions work?</h4>
<p><a href="https://www.netlify.com/products/functions/">Netlify's functions</a> provide us with an API endpoint which we can access through JavaScript. For example, when a user submits their survey answers, we can say to our API (that we've just created), &quot;here's a bunch of data&quot;. Netlify will then pass this data to functions that you've created. I created <a href="https://docs.netlify.com/functions/build-with-javascript/#format">JavaScript functions</a> (using a framework called <a href="https://expressjs.com/">Express</a>) to take data and store it in the database, once done it redirects the user. You're essentially writing your own API to process data requests however you want.  If any part of that sounds nonsensical to you, that's probably because it is. I did not know how to do any of this before starting my website (it was a very steep learning curve).</p>
<h3>After the user has designed their site</h3>
<p>At the end of the interactive survey, I then make use of a quick Google Form to capture contextual data from participants. I ask questions about their purchasing habits and accessibility needs.</p>
<p>By creating better experiences that further engage users, you may get richer feedback and information from participants. They have felt involved in the process and will want to explain their answers.</p>
<p>Following this, I then show them the design that they have created alongside the most popular design made up of the most frequently selected choices from the bog roll hive mind. This is purely for the participants' experience so that they can compare their own design to the most popular.</p>
<p>A great thing about interactive studies is that they have an output that can be shared on social media, which works as an entry for other potential participants. I found Sarah's 'Is This A Sandwich' project through a lot of people I follow on Twitter sharing their results, which in turn, made me want to take part!</p>
<p>In fact, <strong><a href="https://bog-roll-business-builder.netlify.app/share/?id=%22orbit-doctor-equally%22">here's a bog roll design I made earlier</a></strong>.</p>
<img class="u-fullWidth--article" src="/images/work/bogrollbuilder-build.png" alt="A screenshot of a user designing their bog roll business user interface. On the left of the screen, the ‘live’ site shows that the user has designed a high-contrast user interface with a focus on information being visually available.  On the right of the screen the user has answered that product information should be displayed via bullet points.">
<h2>Reception</h2>
<p>I am super appreciative that people have taken the time to share my work online, here's a few tweets about the work.</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">For all my students. This questionnaire created using <a href="https://twitter.com/Netlify?ref_src=twsrc%5Etfw">@Netlify</a> by <a href="https://twitter.com/JoeLamyman?ref_src=twsrc%5Etfw">@JoeLamyman</a> is a great example of how to design questionnaires that people actually want to complete. <a href="https://t.co/IGRTLeOkFk">https://t.co/IGRTLeOkFk</a></p>&mdash; Francis Muir (@francismuir) <a href="https://twitter.com/francismuir/status/1294209560539009024?ref_src=twsrc%5Etfw">August 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">definitely do this 👇 <a href="https://t.co/yXfyRId0TY">https://t.co/yXfyRId0TY</a></p>&mdash; Andy Bell (@hankchizljaw) <a href="https://twitter.com/hankchizljaw/status/1293577928450682882?ref_src=twsrc%5Etfw">August 12, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 
<h2>Wrapping up</h2>
<p>I hope that this article inspires you to create more interactive surveys that people will want to complete. I look forward to seeing and partaking in them in the future!</p>
<p>If you are about to go out and create interactive surveys, make sure you do the following:</p>
<ul>
<li><strong>Accessibility test your survey to ensure that as many people as possible can easily complete it, without any issues. This is key.</strong></li>
<li>Value your participants' time, ensure that the experience is quick and does not require too much of their time. Anywhere between a couple of minutes to 10 minutes seems like the sweet spot.</li>
<li>Ensure that participants know how their information will be stored and used.</li>
</ul>
<p>If you have any questions about resources for anything mentioned in this article, please feel free to get in touch with me. A lot of what I used was brand new to me, I have had to learn about Netlify Functions, AWS Lambda Functions, MongoDB and more! If you're struggling or just interested, send me a message and I'd be happy to provide more technical information.</p>
<script src="/prism/prism.js"></script>
      ]]></content>
    </entry>
	
    
    <entry>
      <title>Site update</title>
      <link href="https://joelamyman.co.uk/blog/site-update/"/>
      <updated>2020-08-09T09:44:24Z</updated>
      <id>https://joelamyman.co.uk/blog/site-update/</id>
      <content type="html"><![CDATA[
        <p>A year since building my site with <a href="https://www.11ty.dev/">Eleventy</a>, I decided that it was time for more late night stress and unpaid work! It's been just under a year since I wrote a post about trying to use Eleventy to build my blog. As my first project with any kind of static site generator (a tool for taking data and templates and building websites, <a href="https://www.netlify.com/blog/2020/04/14/what-is-a-static-site-generator-and-3-ways-to-find-the-best-one/">see Phil Hawksworth's post on static site generators</a>), I realised I wasn't making the most of Eleventy's capabilities. I had been writing almost full HTML files, restricting myself with poor templates and misunderstanding layouts.</p>
<h2>How did we get here?</h2>
<p>My site started off in 2017 using more colours than the human eye can see. While so many people's sites make use of different colours in a fantastic way, I had done so in a confusing and inaccessible manner.</p>
<p>Sources of inspiration for colourful sites (I think these sites are the bee's knees):</p>
<ul>
<li><a href="https://tatianamac.com/">Tatiana Mac's site</a></li>
<li><a href="https://www.a11yproject.com/">a11y project's site</a></li>
<li><a href="https://fossheim.io/">Sarah L Fossheim's site</a></li>
<li><a href="http://aganaplocha.com/">Aga Naplocha's site</a></li>
</ul>
<p>Fast-forward to 2018, James Jing-Yi Mitchell managed to convince me that using 51273 colours wasn't a great idea. This was the beginning of the blue era.</p>
<img class="u-fullWidth--article" src="/images/blog/oldsite.png" alt="My old website, featuring very blue cards with a heavy amount of whitespace making the website look bare."/>
<p>I then spent a bit of time last August making my site with Eleventy, learning how to use Sass, using version control so that I do not accidentally overwrite a Sass file losing 4 hours of work (whoops) and hosting it with Netlify. You can read my woefully inexperienced blog post: <a href="https://joelamyman.co.uk/blog/eleventy-personal-site/">Eleventy Personal Site</a>.</p>
<h2>Improving the site</h2>
<p>After a solid year of learning, I decided it's time to re-do the site. A large part of this was inspired by learning from the <a href="https://piccalil.li/course/learn-eleventy-from-scratch/">Piccalilli Learn Eleventy from Scratch course</a>. I would really recommend it, the course is really well designed, allowing you to pick up where you left off easily and quickly understand advanced features. Thanks to this course, my new site includes:</p>
<ul>
<li>An RSS feed</li>
<li>Smart data stuff</li>
<li>An easy way to view posts with shared tags</li>
<li>Recommended posts</li>
</ul>
<p>Regardless of your skill level, the course accommodates for all and makes it straight forward to get your own site working.</p>
<h2>Moving forward</h2>
<p>So what's next?</p>
<p>I'm on my way to completing a Master's degree in Interactive Media at the University of York, I am researching whether as web designers and developers we can use personalisation to make the web more accessible to individuals. Website accessibility is really poor in general, with it either not implemented at all or the quickest way possible. I am hoping to understand if personalisation of user interfaces will go any way to improving accessibility in an easy to implement way.</p>
<p>I have also been thinking a lot recently about how technology is inherently political. The choices and decisions or even lack thereof reflect an individuals education and motivations. As human beings, I do not believe that there can be such an abstraction so that technology is not political. I'd like to use this blog to write about these issues.</p>
<p>In the past weeks, this has been more evident than ever with issues of artificial intelligence (AI) being rammed into every product. The following articles illustrate these issues.</p>
<ul>
<li><a href="https://fossheim.io/writing/posts/ai-bias-genderify/">Sarah L Fossheim's article on 'Genderify'</a>, a problematic and discriminatory product using AI.</li>
<li><a href="https://adrianroselli.com/2020/06/accessibe-will-get-you-sued.html">Adrian Roselli's article on how an accessibility widget, 'accessiBe', will get you sued</a>, this article highlights moral issues with the approach taken to accessibility and a capitalist solution.</li>
</ul>

      ]]></content>
    </entry>
	
    
    <entry>
      <title>2019 in review</title>
      <link href="https://joelamyman.co.uk/blog/2019-in-review/"/>
      <updated>2019-12-14T16:58:44Z</updated>
      <id>https://joelamyman.co.uk/blog/2019-in-review/</id>
      <content type="html"><![CDATA[
        
<div class="flow--small">
  <p>
  <!-- Excerpt Start -->
  As it comes to the end of the year, I see lots of people sharing their Spotify Wrapped and Instagram users posting their 9 most liked 
  posts, I thought I'd use my site to share my year! 
  <!-- Excerpt End -->
  I've tried to summarise my year in 36 pictures (3 for each month) comprised of photos I have taken, or have stolen from Naomi.
  </p>
  <h2>January</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="A frost covered hedge beside a muddy concrete path next to a road I walk home on. Two cars are on the road with their lights on, barely visible in the heavy fog." src="/images/blog/jan1.jpg">
  <p class="cardSpecificFont">wintery walks to work</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself in a white jumper next to my girlfriend, Naomi. We are stood in a bar in York called Stone Roses, with posters of various bands lining the walls behind us." src="/images/blog/jan2.jpg">
  <p class="cardSpecificFont">at stone roses</p>
</div>

    
    
    
    <div class="card">
  <img alt="The silhoutte of the trees and Heslington Church are in the foreground, while the background is a deep blue sky and light pink clouds, just before sunset." src="/images/blog/jan3.jpg">
  <p class="cardSpecificFont">brighter evenings</p>
</div>
  </div>

  <h2>February</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Myself and Naomi wrapped up in winter coats and scarves, stood in front of a snowy Clifford&#39;s tower" src="/images/blog/feb1.jpg">
  <p class="cardSpecificFont">snowy clifford&#39;s tower</p>
</div>

    
    
    
    <div class="card">
  <img alt="A photo of an ice sculpture heart outside of York Minster with crowds in the background looking at it." src="/images/blog/feb2.jpg">
  <p class="cardSpecificFont">york ice trail</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself walking on the snowy path through a park in the middle of York." src="/images/blog/feb3.jpg">
  <p class="cardSpecificFont">snowy strolls</p>
</div>
  </div>

  <h2>March</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Myself and Naomi stood either side of a Llama (called Sid), that we walked. Somehow we&#39;re all smiling, stood in front of a wooden shed." src="/images/blog/mar1.jpg">
  <p class="cardSpecificFont">we walked sid!</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself stood on top of the tallest hill in Adelaide, with a view of grasslands and Adelaids&#39;s central business district far in the background." src="/images/blog/mar2.jpg">
  <p class="cardSpecificFont">@adelaide, aus🇦🇺</p>
</div>

    
    
    
    <div class="card">
  <img alt="The band, The Internet, performing on stage in Manchester in front of a sunflower background." src="/images/blog/mar3.jpg">
  <p class="cardSpecificFont">watching the internet</p>
</div>
  </div>

  <h2>April</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Myself and Naomi, in the sunlight with trees featuring bright spring leaves in the background." src="/images/blog/apr1.jpg">
  <p class="cardSpecificFont">pre easter lunch</p>
</div>

    
    
    
    <div class="card">
  <img alt="Whitby and it&#39;s pier, taken from midway up the famous 199 steps to the Whitby abbey." src="/images/blog/apr2.jpg">
  <p class="cardSpecificFont">at whitby</p>
</div>

    
    
    
    <div class="card">
  <img alt="Naomi stood in front of some beautiful pink spring flowers, with a bush flowering with bright white flowers behind her." src="/images/blog/apr3.jpg">
  <p class="cardSpecificFont">at the museum gardens</p>
</div>
  </div>

  <h2>May</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Naomi in her winters coat stood next to a banner that says, Roses are white, on the University of York campus." src="/images/blog/may1.jpg">
  <p class="cardSpecificFont">roses are white</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself and Naomi in the back of a taxi, covered in bright multi-coloured lights, posing awkwardly so that the taxi driver does not see us." src="/images/blog/may2.jpg">
  <p class="cardSpecificFont">taxi disco</p>
</div>

    
    
    
    <div class="card">
  <img alt="A series of succulents on our kitchen windowsill in the background with bright pink flowers in a tall yellow vase in the foreground." src="/images/blog/may3.jpg">
  <p class="cardSpecificFont">🌷🌷🌷</p>
</div>
  </div>

  <h2>June</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="My friend James, stood in front of a student project at the Interactive Media Showcase. James has his arm raised as he tried to use the motion controls to cook a meal as instructed by the game he is playing on screen." src="/images/blog/jun1.jpg">
  <p class="cardSpecificFont">im showcase</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself stood on the top floor of the Design Museum in London, with a large display in the background (the height of the walls) displaying the word DESIGNER, with a geometric pattern surrounding it." src="/images/blog/jun2.jpg">
  <p class="cardSpecificFont">at the design museum</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself and Naomi, wearing our sunglasses and stood around the side of the colosseum in Pula, Croatia." src="/images/blog/jun3.jpg">
  <p class="cardSpecificFont">in pula, croatia🇭🇷</p>
</div>
  </div>

  <h2>July</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Myself (dressed in a blue suit) and Naomi (in a pink dress) for her graduation, with a large umbrella covering us as we try to stay dry in the rain." src="/images/blog/jul1.jpg">
  <p class="cardSpecificFont">english summer</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself (dressed in a blue suit) and Naomi (in a pink dress and graduation robes) in front of the University of York&#39;s Heslington Hall" src="/images/blog/jul2.jpg">
  <p class="cardSpecificFont">naomi&#39;s graduation✨</p>
</div>

    
    
    
    <div class="card">
  <img alt="Bright green bushes and trees inside the Royal Botancial Garden of Wales&#39; massive indoor greenhouse. The ceiling is all glass, with arched metal beams dividing the glass." src="/images/blog/jul3.jpg">
  <p class="cardSpecificFont">botanical gardens</p>
</div>
  </div>

  <h2>August</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Myself, Naomi and my friends James and Siobhan sat around a table holding a variety of different coloured cocktails. This was taken after completing an escape room for my birthday. Asa result, we&#39;re wearing stickers that say, We excaped!" src="/images/blog/aug1.jpg">
  <p class="cardSpecificFont">birthday escape drinks</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself in a bright orange jacket, in front of a tropical lit up background at Junkyard Golf in Leeds. I look very focussed or determined. Either way, the look did not help my golf performance." src="/images/blog/aug2.jpg">
  <p class="cardSpecificFont">at junkyard golf⛳️</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself and my brother, taken at a family wedding." src="/images/blog/aug3.jpg">
  <p class="cardSpecificFont">family wedding</p>
</div>
  </div>

  <h2>September</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Naomi with a big smile on her face, holding an ice cream, with a bright blue sky and some green Museum Garden trees as the backdrop." src="/images/blog/sep1.jpg">
  <p class="cardSpecificFont">late summer!</p>
</div>

    
    
    
    <div class="card">
  <img alt="Naomi crouching down to pet a sausage dog wearing a pink tutu" src="/images/blog/sep2.jpg">
  <p class="cardSpecificFont">sausage dog cafe</p>
</div>

    
    
    
    <div class="card">
  <img alt="Typography expert Jason Pamental presenting a slide where he is relating typography properties to the physical features of his two dogs." src="/images/blog/sep3.jpg">
  <p class="cardSpecificFont">first web dev conf👨‍💻</p>
</div>
  </div>

  <h2>October</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="The cieling of a restaurant in York covered in multi-coloured bunting, fairy lights and large industrial light bulbs." src="/images/blog/oct1.jpg">
  <p class="cardSpecificFont">celebratory meal</p>
</div>

    
    
    
    <div class="card">
  <img alt="Naomi stood next to a shop window displaying a large lit up figure of a ghost for the York Ghost Hunt." src="/images/blog/oct2.jpg">
  <p class="cardSpecificFont">york ghost hunt👻</p>
</div>

    
    
    
    <div class="card">
  <img alt="Naomi ready to tuck into some food, sat at the counter of Skosh, a restaurant in York." src="/images/blog/oct3.jpg">
  <p class="cardSpecificFont">our 4 year anniversary</p>
</div>
  </div>

  <h2>November</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="A photo of St Helen&#39;s Square, York at nighttime. A christmas tree is to the left of the picture, lit up in gold and white lights, with the restaurant, The Ivy, to the right, also covered in white lights." src="/images/blog/nov1.jpg">
  <p class="cardSpecificFont">christmas market🎄</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself and Naomi, smiling in the foreground, with the inside of a cathederal in Cambridge in the background." src="/images/blog/nov2.jpg">
  <p class="cardSpecificFont">in cambridge</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself and CTO of SkillsForge, Jonathan Carr, holding our UXUK Award for Best Effect on Business Goals." src="/images/blog/nov3.jpg">
  <p class="cardSpecificFont">winning a uxuk award!</p>
</div>
  </div>

  <h2>December</h2>
  <div class="cardGrid u-fullWidth--article">
    
    
    
    <div class="card">
  <img alt="Naomi in the foreground, with a christmas tree, festive decorations amongst the traditional portraits and historic green walls of the Mansion House in York." src="/images/blog/dec1.jpg">
  <p class="cardSpecificFont">at mansion house</p>
</div>

    
    
    
    <div class="card">
  <img alt="A picture of my laptop with the menu of Frog Detective 2 on the screen. The menu displays the frog detective, the title of the game, Frog Detective 2: The Case of the Invisible Wizard and the option to start a new game highlighted." src="/images/blog/dec2.jpg">
  <p class="cardSpecificFont">frog detective 2!🐸</p>
</div>

    
    
    
    <div class="card">
  <img alt="Myself with the University of York handball team, 13 of us in total, in two rows, smiling for the camera in front of one of the handball goals, following our 2nd game of the season." src="/images/blog/dec3.jpg">
  <p class="cardSpecificFont">2nd game of handball</p>
</div>
  </div>
</div>


      ]]></content>
    </entry>
	
    
    <entry>
      <title>Eleventy Personal Site</title>
      <link href="https://joelamyman.co.uk/blog/eleventy-personal-site/"/>
      <updated>2019-08-25T19:53:44Z</updated>
      <id>https://joelamyman.co.uk/blog/eleventy-personal-site/</id>
      <content type="html"><![CDATA[
        <h2>Summary</h2>
<!-- Excerpt Start -->
<p>To be able to create blog posts without having to set everything up in my source code, I wanted to find a way to use a CMS to update my site and write blog posts.</p>
<!-- Excerpt End -->
<p>I decided that I would make use of my existing skillset and try to learn templating languages such as Nunjucks and Handlebars to create my new site.</p>
<p>I used a static-site generator called eleventy to build my site, pairing Nunjucks with Markdown. Hosted with Netlify and utilising Netlify-CMS, I'm hosting my site for free and making use of CI/CD to automatically build and update my website.</p>
<h2>I hate copying code, so I spent 5 days copying code</h2>
<p>Inspired by <a href="https://twitter.com/JamesJingYi">@JamesJingYi</a>'s <a href="https://medium.com/@jamesjingyi/apple-card-privacy-vs-ecosystem-lockdown-502ab59b6acd">blog post on the new Apple Card</a>, I decided that I wanted to try my hand at blogging and thought that my new website would be a great place to do so.</p>
<p>I recently updated my site, using just HTML and SASS, so if I was going to write blog posts, I'd just simply have to make a new HTML file, copy the head, footer and navbar in, line up the links and I'd be ready to go. However, for some reason I find setting the links in the navbar a really arduous task. Did I set up the right links? Do they go to the right place? Did I miss any?</p>
<p>I recently discovered a static site generator (ssg) called <a href="">eleventy</a>, which allows you to use handlebars, nunjucks, pug, markdown, etc. to build your website with templating! This basically means you write your navbar once and the ssg does all its magic to make it work (if you are able to write it properly unlike me).</p>
<p>I discovered that I could set this up with continous integration/continuous delivery (I still don't really understand what these words mean) and have my website build automatically whenever I do a git push! I then discovered I could use <a href="https://www.netlify.com/">netlify</a> to host the site from my gitlab project and that I could use <a href="https://www.netlifycms.org/">netlify cms</a> to write markdown to create my blog posts!</p>
<p>Feeling very excited and ambitious, I managed to get my new site working in about 5 days. I have layouts written in nunjucks, content written in markdown (which then uses the nunjucks layouts to render), as well as components that are frequently used (such as my pink cards) as eleventy shortcodes.</p>
<h2>How does it work?</h2>
<p>Following the instructions to get set up with eleventy, I found a few examples, <a href="https://keepinguptodate.com/pages/2019/06/creating-blog-with-eleventy/">such as this one by Keeping Up to Date</a>.</p>
<p>I then started by trying to recreate my projects page. I created a base-layout.njk which contained my head and footer tags which are consistent throughout my site. I created an index.njk file (which used the base-layout.njk layout) that pretty much contained the pink background with my name on it, as well as a loop that would look for markdown files tagged 'project' and display them.</p>
<p>It worked!</p>
<p>With each individual project being a markdown file, I needed to find a way to render them differently to the main project page. To do this, I created another nunjucks layout. Using eleventy's front data matter, in the markdown file for each project, I could specify things like the title of the page the background image and the nunjuck layout would then be able to grab all of this info and render it, without me having to create a new layout for each single project page (woohoo!).</p>
<p>Obviously this was all very easy and I didn't run into a single problem and everything was straight-forward and it all worked straight away.</p>
<p>spoiler: it didn't</p>
<p>I ran into quite a few problems and struggled a bit with learning nunjucks and the way that eleventy expects me to work. I also couldn't figure out for the life of me how to use paired shortcodes, which would have two arguments taken from it's child elements, they would always come through as a single argument. I also ran into issues trying to get my favicon on all my pages.</p>
<p>I think some of these issues stem from my lack of knowledge of templating and static site generators, so I'm not 100% proud of my code, but <em>it works on my machine</em>.</p>
<h2>Improvements</h2>
<p>There's a few more things I want to improve, specifically on the blog section. I'd love to get the date and tags appearing on my blog list! I also should try and learn more templating and static site generators. I think I'll try and make another site with eleveny and see how it compares, knowing what I do now.</p>

      ]]></content>
    </entry>
	
</feed>