<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Ashley Sheridan - Blog</title>
        <link>https://www.ashleysheridan.co.uk/blog/</link>
        <description>Latest blog posts from Ashley Sheridan</description>
        <language>en-gb</language>
        <lastBuildDate>Tue, 09 Jun 2026 06:30:56 +0000</lastBuildDate>
        <ttl>1440</ttl>
        <atom:link href="https://www.ashleysheridan.co.uk/feed" rel="self" type="application/rss+xml" />
        
            <item>
                <title>YouTube Music Causing More Accessibility Issues</title>
                <link>https://www.ashleysheridan.co.uk/blog/YouTube+Music+Causing+More+Accessibility+Issues</link>
                <description>YouTube is at it again, causing problems for people, by removing displayed lyrics for people using free accounts, causing an issue for anyone who was relying on them. It&#039;s an attempt to force those people to pay for something they relied on, making them targets just for having a disability that is helped by having lyrics.

Contents


	
		What Exactly Happened
		Is This An Accessibility Issue?
…</description>
                <pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/YouTube+Music+Causing+More+Accessibility+Issues</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>The EAA Enforcement Stage for the Web</title>
                <link>https://www.ashleysheridan.co.uk/blog/The+EAA+Enforcement+Stage+for+the+Web</link>
                <description>The European Accessibility Act enters the enforcment stage on the 28th of June, giving website owners and maintainers just slightly over a week to make their websites and services compliant, or risk fines, sanctions, or even outright bans, depending on the severity of the non-compliance.

Contents

  
    What is the EAA?
      
        What is Covered?          
      
    
    How to Report…</description>
                <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/The+EAA+Enforcement+Stage+for+the+Web</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Creating Accessible Flowcharts</title>
                <link>https://www.ashleysheridan.co.uk/blog/Creating+Accessible+Flowcharts</link>
                <description>I&#039;ve written before about how to make accessible graphs and charts, but one type of chart I didn&#039;t touch upon was a flowchart, which is different enough that it really warrants a bit more detail explaining how to best make it as accessible as possible.

Contents


  
    Main Accessiblity Issues with Flowcharts
    The Initial Concept
      
        Identifying and Grouping Question and Statement…</description>
                <pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Creating+Accessible+Flowcharts</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Making Accessible Icons on the Web</title>
                <link>https://www.ashleysheridan.co.uk/blog/Making+Accessible+Icons+on+the+Web</link>
                <description>Icons on the Web are a natural extension of their use across computer systems since the early graphical user interfaces (GUIs) came about. For over 50 years, we&#039;ve been using icons to summarise information in picture form, giving users ways to quickly identify objects and actions in order to make their tasks more efficient.

But while the focus has always been on the graphical nature of these icons…</description>
                <pubDate>Fri, 21 Mar 2025 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Making+Accessible+Icons+on+the+Web</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Building a Dungeons and Dragons Game</title>
                <link>https://www.ashleysheridan.co.uk/blog/Building+a+Dungeons+and+Dragons+Game</link>
                <description>I&#039;m a big fan of Dungeons &amp;amp; Dragons, and have been for years, first playing the book adaptions of the game, before moving on to the group tabletop version and the computer games based on the tabletop rules. The recent success of Baldurs Gate 3 has seen a surge in the popularity of the genre. I wanted to take this passion and turn it into something creative using my skills as a developer.

Contents


…</description>
                <pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Building+a+Dungeons+and+Dragons+Game</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Pitfalls to Avoid With Screen Readers on Websites You Develop</title>
                <link>https://www.ashleysheridan.co.uk/blog/Pitfalls+to+Avoid+With+Screen+Readers+on+Websites+You+Develop</link>
                <description>Screen readers are an important part of how people browse the web, especially so for those people who can&#039;t see a screen. However, screen readers can struggle presenting your visuals correctly if you haven&#039;t written clean code and created well thought out content that can be understood and presented as you intended. By understanding and considering the types of content and the problems that can occur…</description>
                <pubDate>Fri, 10 Jan 2025 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Pitfalls+to+Avoid+With+Screen+Readers+on+Websites+You+Develop</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>How the European Accessibility Act (EAA) Enhances Digital Accessibility Laws Across the EU</title>
                <link>https://www.ashleysheridan.co.uk/blog/How+the+European+Accessibility+Act+%28EAA%29+Enhances+Digital+Accessibility+Laws+Across+the+EU</link>
                <description>The European Accessibility Act (EAA) is a law that was originally passed just over 5 years ago, in mid 2019, and will finally come into full effect and be implemented on the 28th June 2025. It aims to put into place a stronger set of rules for what products and services need to be more accessible, what that accessibility looks like, and what happens if peoples needs are not met.

Contents


 …</description>
                <pubDate>Tue, 12 Nov 2024 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/How+the+European+Accessibility+Act+%28EAA%29+Enhances+Digital+Accessibility+Laws+Across+the+EU</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Creating a Weather Based Email Image Generator</title>
                <link>https://www.ashleysheridan.co.uk/blog/Creating+a+Weather+Based+Email+Image+Generator</link>
                <description>Some years ago I built out a tool to generate dynamic images for email campaigns based on a variety of different parameters, like random selections from an Instagram gallery, animated gifs marking a countdown, and product images based on the weather in a given area. The latter of those is very simple to do with free APIs.

Contents


    
        Concept
        Creating the App Outline
  …</description>
                <pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Creating+a+Weather+Based+Email+Image+Generator</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>How to Conduct  an Accessibility Audit on Your Website</title>
                <link>https://www.ashleysheridan.co.uk/blog/How+to+Conduct++an+Accessibility+Audit+on+Your+Website</link>
                <description>Web accessibility is an incredibly important topic, and should be considered as essential as subjects like security, UX (user experience), and design. Not only can poor accessibility cause usability problems for some people, but it can act as a complete barrier to entry. Your audience may be left feeling that you don&#039;t care about them, leading to them go elsewhere, to your competitors (be that in information…</description>
                <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/How+to+Conduct++an+Accessibility+Audit+on+Your+Website</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Form Validation Essentials</title>
                <link>https://www.ashleysheridan.co.uk/blog/Form+Validation+Essentials</link>
                <description>Form validation is an essential process for maintaining data integrity, enhancing the user experience, and ensuring security of your website or service. The importance of form validation cannot be overstated. It plays a vital role in protecting both the user and the system from potential harm. For users, it ensures that their input is acknowledged and processed correctly, reducing frustration and improving…</description>
                <pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Form+Validation+Essentials</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>How To Get The Best Out Of WAI ARIA</title>
                <link>https://www.ashleysheridan.co.uk/blog/How+To+Get+The+Best+Out+Of+WAI+ARIA</link>
                <description>WAI-ARIA (Web Accessibility Initiative - Accessible Rich Internet Applications), or ARIA for short, is a way of adding further accessibility to elements that you cannot by using HTML alone. Most usually it&#039;s used to add a label to something that assistive technology (such as screen readers) can access and present to the user, where the existing text inside the HTML is lacking or would be confusing…</description>
                <pubDate>Fri, 29 Mar 2024 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/How+To+Get+The+Best+Out+Of+WAI+ARIA</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessibility Issues With Cookie Banners</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessibility+Issues+With+Cookie+Banners</link>
                <description>Since the inception of the GDPR (General Data Protection Regulation), cookie banners have been a common part of the web, and like all things on the web, there is plenty of room for accessibility issues.

Contents


	
		What Are Cookies?
			
				How They Are Used To Track You?
			
		
		The GDPR
		The Accessibility of Cookie Banners
			
				metro.co.uk
				thenerdstash.com
				telegraph…</description>
                <pubDate>Tue, 19 Mar 2024 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessibility+Issues+With+Cookie+Banners</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>How Can You Deal With Developer Burnout?</title>
                <link>https://www.ashleysheridan.co.uk/blog/How+Can+You+Deal+With+Developer+Burnout%3F</link>
                <description>Stress in the workplace is sometimes unavoidable. Sometimes, a little stress can be a good thing, and some people thrive with a little pressure. The key here though, is sometimes and little. If the stress peaks too high, or is sustained for a long period, the effect can impact us in a myriad of negative ways. Over time, small amounts of stress can build up, and if we cannot deal with it in time, it…</description>
                <pubDate>Tue, 21 Feb 2023 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/How+Can+You+Deal+With+Developer+Burnout%3F</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>The Affects of Covid on Web Accessibility</title>
                <link>https://www.ashleysheridan.co.uk/blog/The+Affects+of+Covid+on+Web+Accessibility</link>
                <description>We&#039;ve been a little over 2 years now with Covid in our lives, but there&#039;s still so much we don&#039;t know about it. One aspect of that is what the enduring effects of it are for some people, or Long-Covid as it is known. These effects vary in their symptoms and severity, but they can have an impact on our lives and can prevent us from doing all the things we are used to.

Contents

	
		How Many People…</description>
                <pubDate>Mon, 11 Apr 2022 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/The+Affects+of+Covid+on+Web+Accessibility</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Building a Web-Based Character Picker</title>
                <link>https://www.ashleysheridan.co.uk/blog/Building+a+Web-Based+Character+Picker</link>
                <description>I&#039;ve spent the last couple of years learning German, and one of the things I&#039;ve come to rely on greatly are tools to help select the correct characters that aren&#039;t immediately available on my standard QWERTY keyboard. Even beyond foreign languages, there are countless times when I&#039;ve needed to use something that wasn&#039;t easily typed, so these tools have become invaluable.

Contents

	
		Not All…</description>
                <pubDate>Wed, 23 Mar 2022 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Building+a+Web-Based+Character+Picker</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Picking The Right HTML Tag</title>
                <link>https://www.ashleysheridan.co.uk/blog/Picking+The+Right+HTML+Tag</link>
                <description>Picking the right HTML tag can be difficult sometimes, which is probably why most of us tend to fall back to the generic &amp;lt;div&amp;gt; and &amp;lt;span&amp;gt; tags. Over time, this practice leads to Divitis, which makes code harder to read on more complex pages and it makes the web page less semantic, making it more difficult to navigate with assistive technology like screen readers.

In-fact, ensuring we&#039;re…</description>
                <pubDate>Mon, 31 Jan 2022 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Picking+The+Right+HTML+Tag</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessibility Concerns Over Chrome Removing Alert, Prompt, And Confirm Modals</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessibility+Concerns+Over+Chrome+Removing+Alert%2C+Prompt%2C+And+Confirm+Modals</link>
                <description>Chrome has recently announced its intention to prevent cross-origin iframes from triggering the alert(), prompt(), and confirm() . These modals will still function for the top-level web page, and iframes within the same domain. Websites spanning multiple subdomains on the same domain will not allow these modals.

These types of modals have been part of Javascript for decades and have seen their fair…</description>
                <pubDate>Tue, 10 Aug 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessibility+Concerns+Over+Chrome+Removing+Alert%2C+Prompt%2C+And+Confirm+Modals</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Colouring SVG Background Images With SASS</title>
                <link>https://www.ashleysheridan.co.uk/blog/Colouring+SVG+Background+Images+With+SASS</link>
                <description>SVG images have two main benefits over traditional raster or bitmap images: they can scale to any size without a loss of quality, and they allow for more control over their appearance, such as changing the colour of parts of the image in response to a particular user action.

The Two Types of SVG Background Image

There are two ways to set an SVG background image via CSS, and only one allows any…</description>
                <pubDate>Fri, 06 Aug 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Colouring+SVG+Background+Images+With+SASS</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Everybody Lost When YouTube Removed Community Captions</title>
                <link>https://www.ashleysheridan.co.uk/blog/Everybody+Lost+When+YouTube+Removed+Community+Captions</link>
                <description>I was recently showing my eldest son some bedtime stories, and the ones he loves the most currently are the African folktales about Anansi the spider.

However, as I was watching with him, I was shocked at some of the captions accompanying the audio, it was full of profanity!



Contents

	
		What Happened
		Who is Affected?
		Is it Really a Problem for Content Creators to Solve?
		A Better…</description>
                <pubDate>Thu, 01 Jul 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Everybody+Lost+When+YouTube+Removed+Community+Captions</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Testing Exception Not Thrown With PHPUnit</title>
                <link>https://www.ashleysheridan.co.uk/blog/Testing+Exception+Not+Thrown+With+PHPUnit</link>
                <description>Testing exceptions in PHPUnit is fairly easy, and you can be as specific as you need with testing the details of the exceptions being thrown.

But what if you need to test that an exception wasn&#039;t thrown?

The Exception Problem

There are many clean code advocates who will tell you that testing for exceptions not being thrown is a sign that your code is doing something wrong, and that the code…</description>
                <pubDate>Mon, 28 Jun 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Testing+Exception+Not+Thrown+With+PHPUnit</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Upcoming Changes With The WCAG 2.2 Guidelines</title>
                <link>https://www.ashleysheridan.co.uk/blog/Upcoming+Changes+With+The+WCAG+2.2+Guidelines</link>
                <description>The proposed changes to the Web Content Accessibility Group (WCAG) guidelines defined in the WCAG 2.2 working draft are aimed at improving the experience for people with cognitive disabilities and low vision, as well as improving the overall experience for those using mobile devices. This is meant to be an interim set of guidelines until WCAG 3.0 is completed.

There are 9 new guidelines that tie…</description>
                <pubDate>Thu, 17 Jun 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Upcoming+Changes+With+The+WCAG+2.2+Guidelines</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Improvements to the Accessibility Checklist Tool</title>
                <link>https://www.ashleysheridan.co.uk/blog/Improvements+to+the+Accessibility+Checklist+Tool</link>
                <description>Since the initial blog post about my accessibility checklist tool, I&#039;ve made further improvements which make the tool easier to use and more useful.

Navigating to Previous Steps

The first version was extremely linear, only allowing you to start from the beginning and progress to the next step. Now, you can move back to any previous step by using the link in the main steps outline.



This…</description>
                <pubDate>Wed, 09 Jun 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Improvements+to+the+Accessibility+Checklist+Tool</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Testing Multiple Calls To One Method With PHPUnit</title>
                <link>https://www.ashleysheridan.co.uk/blog/Testing+Multiple+Calls+To+One+Method+With+PHPUnit</link>
                <description>Typically if you find yourself in a situation where a method needs to make repeated calls to a single other method with varying values, you will look for a way to implement this into some form of batch call. This simplifies it into a single call that takes a single object, list, or array. Sometimes though this isn&#039;t possible, perhaps because the method being called belongs to an external class that…</description>
                <pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Testing+Multiple+Calls+To+One+Method+With+PHPUnit</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Teaching Children with the Speech API</title>
                <link>https://www.ashleysheridan.co.uk/blog/Teaching+Children+with+the+Speech+API</link>
                <description>My eldest son is in the process of learning the alphabet, so I thought I could put my skills to use by helping him learn using two of the things he loves most: mobile devices and Mario! Like all 3 year olds, he loves technology, and we use it as an incentive for many things, from general good behviour to potty training. I&#039;ve been incredibly impressed with how well he&#039;s taken to using a Switch and a…</description>
                <pubDate>Thu, 08 Apr 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Teaching+Children+with+the+Speech+API</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Understanding How To Use The Firefox Accessibility Tools</title>
                <link>https://www.ashleysheridan.co.uk/blog/Understanding+How+To+Use+The+Firefox+Accessibility+Tools</link>
                <description>Browsers today are very different beasts than they were a decade ago, and come with some amazing tools for developers to help them work more quickly and efficiently. I want to introduce you to the accessibility tools built into Firefox.

Contents


	Detecting Issues Automatically
		
			Colour Contrast
			Keyboard Accessibility
			Text Labels
		
	
	Simulating Colour Blindness
	Viewing Tab…</description>
                <pubDate>Wed, 27 Jan 2021 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Understanding+How+To+Use+The+Firefox+Accessibility+Tools</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Making Testing Easier: An Accessibility Checklist</title>
                <link>https://www.ashleysheridan.co.uk/blog/Making+Testing+Easier%3A+An+Accessibility+Checklist</link>
                <description>Accessibility testing can be hard and time consuming, especially if you are new to it. The mix of browsers, operating systems, and user-space tools is vast and ever-changing. The WCAG guidelines are the de facto standards for accessibility requirements across the world wide web, but they&#039;re not exactly light reading, and they can be difficult for newcomers to fully understand and take in.

What Do…</description>
                <pubDate>Thu, 03 Dec 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Making+Testing+Easier%3A+An+Accessibility+Checklist</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessible Graphs and Charts</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessible+Graphs+and+Charts</link>
                <description>If you have a lot of data that you need to convey to your audience you could use a table, but a graph or chart can help convey the same information much more simply and quickly to your readers. However, we need to be careful that the graphs that we create are still available to our whole audience. There are some simple ways that we can ensure this.

Contents

	
		Text Alternatives
			
				Alt…</description>
                <pubDate>Mon, 20 Jul 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessible+Graphs+and+Charts</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessibility Myths And  Misconceptions</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessibility+Myths+And++Misconceptions</link>
                <description>In the week following Global Accessibility Awareness Day (GAAD) the Accessiblity London group asked:


	What are your most commonly encountered accessibility myths or misconceptions?&amp;mdash; Accessibility London (@A11yLondon)
    May 19, 2020



The question was asked in about half a dozen languages, and there were a lot of great answers, but the same few kept repeating. Many of them were things…</description>
                <pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessibility+Myths+And++Misconceptions</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHP EnumType: an Alternative to SplEnum</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHP+EnumType%3A+an+Alternative+to+SplEnum</link>
                <description>When it comes to data types, PHP doesn&#039;t come with much out of the box. That&#039;s where SPL comes in, a collection of more complex object types and interfaces.

One of the types that it comes with is SplEnum which is part of the SplTypes and is not installed by default. On Linux and Unix systems, this isn&#039;t a major problem, as there are available packages to install it easily, but if you&#039;re running…</description>
                <pubDate>Mon, 08 Jun 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHP+EnumType%3A+an+Alternative+to+SplEnum</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>WebAim 1 Million and Global Accessibility Awareness Day</title>
                <link>https://www.ashleysheridan.co.uk/blog/WebAim+1+Million+and+Global+Accessibility+Awareness+Day</link>
                <description>It&#039;s Global Accessibility Awareness Day today, and more of us than ever are relying on online services and resources due to the Covid19 pandemic. With a huge swathe of the world being forced to work from home, we&#039;re seeing a greater need to ensure our products, tools, and websites are accessible to everyone.

The WebAIM one million project paints a pretty bleak picture, as it looks like websites…</description>
                <pubDate>Thu, 21 May 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/WebAim+1+Million+and+Global+Accessibility+Awareness+Day</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using Intersection Observer to Improve Image Loading Performance</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+Intersection+Observer+to+Improve+Image+Loading+Performance</link>
                <description>Page performance is always something we should consider when building websites and applications, whether that&#039;s real or the way that a user perceves your site is loading. Some experts would actually say that in some situations, perception of load times is more important than actual load times; it&#039;s why some people prefer progress bars over spinners.


	
		…</description>
                <pubDate>Tue, 24 Mar 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+Intersection+Observer+to+Improve+Image+Loading+Performance</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessibility Testing for Developers</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessibility+Testing+for+Developers</link>
                <description>If you&#039;re developing for the front end, then it&#039;s important to understand how to test that what you produce is accessible. Testing across multiple browsers has been part of front end development since the beginning; browsers would always interpret your code in slightly different ways, both small and large. Accessibility testing is no different really, you&#039;re just approaching things from a slightly…</description>
                <pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessibility+Testing+for+Developers</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Making an Accessible Hamburger Menu</title>
                <link>https://www.ashleysheridan.co.uk/blog/Making+an+Accessible+Hamburger+Menu</link>
                <description>With more and more web usage being performed on mobile devices, increasing every year the, now common, hamburger menu is here to stay. One of the main problems that needs addressing is the usability and accessibility of the menu.


    
        A Typical Example
        Keyboard Handling
        Showing Focus
        Improving for the Screen Reader
        Setting the Expanded State
     …</description>
                <pubDate>Sat, 15 Feb 2020 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Making+an+Accessible+Hamburger+Menu</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>CSS Werewolf</title>
                <link>https://www.ashleysheridan.co.uk/blog/CSS+Werewolf</link>
                <description>In a similar theme to last years single div Halloween spooks and ghouls I wanted to create a more detailed and more animated piece for this October: a man who turns into a werewolf at night.


	The Base HTML
	Adding Animated Transitions
	Styling the Labels and the Checkbox
	Sky, Sun, and Moon
		
			Sun
			Moon
		
	
	The Werewolf
	The Final Result


The Base HTML

The basic concept…</description>
                <pubDate>Mon, 28 Oct 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/CSS+Werewolf</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Building a Toy Kitchen with Arduino-Powered Interactivity</title>
                <link>https://www.ashleysheridan.co.uk/blog/Building+a+Toy+Kitchen+with+Arduino-Powered+Interactivity</link>
                <description>Last month was my eldest sons second birthday, and like all kids of that age, one of his favourite things to do is copy what he sees myself and my partner doing: cooking.


	Building the Kitchen Frame
	The Electronics
	The Code
		
			Setup
			The Logic
		
	
	The Future


I&#039;d decided I wanted to make him a tiny kitchen of his own, something I&#039;ve done several years ago for my niece, in…</description>
                <pubDate>Mon, 30 Sep 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Building+a+Toy+Kitchen+with+Arduino-Powered+Interactivity</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>10 Simple Steps Towards Accessibility</title>
                <link>https://www.ashleysheridan.co.uk/blog/10+Simple+Steps+Towards+Accessibility</link>
                <description>I&#039;m often asked for a list of &quot;quick wins&quot; to make websites more accessible. While I don&#039;t always agree with that mindset as it can lead to a lazy approach to accessibility that&#039;s tacked on as an afterthought, I do understand that there is a real need for simple solutions that can fix the majority of problems.

Imagine the situation (and I really do believe this is a typical scenario from my experience…</description>
                <pubDate>Fri, 09 Aug 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/10+Simple+Steps+Towards+Accessibility</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using preg_replace_callback() - Find Replace on Steroids</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+preg_replace_callback%28%29+-+Find+Replace+on+Steroids</link>
                <description>The preg_replace_callback() function in PHP is one of the many regular expression functions available in the language, and can be incredibly powerful as they offer far more versatility when replacing matched text. I recently wanted to use it to implement a very basic templating class.

This function goes beyond the preg_replace() function which is just a standard regular expression find/replace.…</description>
                <pubDate>Wed, 31 Jul 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+preg_replace_callback%28%29+-+Find+Replace+on+Steroids</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using Local Storage to Cache Images</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+Local+Storage+to+Cache+Images</link>
                <description>I was recently working on improving the performance of a web page that pulled in a large dynamic list of images, and displaying their respective thumbnails on the page. Even with caching, the entire set of images took a considerable amount of time to fully load on the page. Enter the local storage API.


	What is Local Storage
	Storing Items for a Finite Duration
	Fetching Items Stored as JSON
	Aging…</description>
                <pubDate>Fri, 14 Jun 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+Local+Storage+to+Cache+Images</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Testing Colour Blindness Effects Online with SVG Filters</title>
                <link>https://www.ashleysheridan.co.uk/blog/Testing+Colour+Blindness+Effects+Online+with+SVG+Filters</link>
                <description>One of the basic rules of accessibility is to not convey information through colour alone. The WCAG lists use of colour as a Level A issue, specifically saying:

Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.

This criterion is aimed at those people with visual disabilities, or problems that have…</description>
                <pubDate>Fri, 10 May 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Testing+Colour+Blindness+Effects+Online+with+SVG+Filters</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Formatting File Sizes For Other Languages</title>
                <link>https://www.ashleysheridan.co.uk/blog/Formatting+File+Sizes+For+Other+Languages</link>
                <description>Whenever you&#039;re dealing with files on the web, you&#039;ll likely come to a point where you need to display the size of that file, whether it&#039;s to show the size of an attachment on an email, or on a list of downloads for your own Linux distro.

Now it might suit your purposes just fine to leave this in English, but if you&#039;re trying to venture out into new worldwide markets, you may want to format the…</description>
                <pubDate>Wed, 17 Apr 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Formatting+File+Sizes+For+Other+Languages</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>The Problem With Accessibility Events in iOS 12.2</title>
                <link>https://www.ashleysheridan.co.uk/blog/The+Problem+With+Accessibility+Events+in+iOS+12.2</link>
                <description>My Twitter has been aflame this week with people Tweeting about a recent update from Apple which introduces a new feature called Accessibility Events in iOS 12.2. Their reason is to:

allow websites to customize their behavior for assistive technologies, like VoiceOver. Enabling Accessibility Events may reveal whether an assistive technology is active on your iPhone.

This might seem like a positive…</description>
                <pubDate>Fri, 29 Mar 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/The+Problem+With+Accessibility+Events+in+iOS+12.2</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Screen Readers and Pronunciation</title>
                <link>https://www.ashleysheridan.co.uk/blog/Screen+Readers+and+Pronunciation</link>
                <description>Screen readers are an essential tool for people who are unable to see, or who struggle to read. Sometimes though, a screen reader needs some extra help, as it can struggle with the right pronunciation of a word, name, or abbreviation. There are things we can do to help nudge screen readers in the right direction in a way that doesn&#039;t break the user experience for other people.

Contents


	The…</description>
                <pubDate>Fri, 15 Mar 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Screen+Readers+and+Pronunciation</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Emoji and Accessibility</title>
                <link>https://www.ashleysheridan.co.uk/blog/Emoji+and+Accessibility</link>
                <description>I was recently in a discussion with Adrian Roselli on Twitter regarding his tweaks to a technique to make emoji more accessible. His advice highlights some accessibility issues with the typical emoji usage that permeates our social media, our blog posts, and our instant messaging tools.

Contents


	The Problems with Emoji
	What Emoji Got Right for Accessibility
	How Can Emoji be Accessible?
		
			Choosing…</description>
                <pubDate>Wed, 06 Mar 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Emoji+and+Accessibility</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Building an Accessibility Browser Plugin</title>
                <link>https://www.ashleysheridan.co.uk/blog/Building+an+Accessibility+Browser+Plugin</link>
                <description>I was recently talking with a former colleague about testing for accessibility, and specifically being able to run an automated test over a website to reduce the time needed to test. My answer then was that there is no way to fully automate testing for accessibility; there&#039;s no test that exists which can rubber stamp your website and give it passing marks.

But it did give me an idea. Right now,…</description>
                <pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Building+an+Accessibility+Browser+Plugin</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Testing Popstate Events with Jasmine</title>
                <link>https://www.ashleysheridan.co.uk/blog/Testing+Popstate+Events+with+Jasmine</link>
                <description>I recently implemented some browser History API functionality in a project, and part of this was using popstate events to handle application state when the user navigated with their browsers navigational buttons.

The problem was when it came time to write tests to cover this functionality, because I was writing in TypeScript, which is a strictly type language, and the version of TypeScript I was…</description>
                <pubDate>Mon, 28 Jan 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Testing+Popstate+Events+with+Jasmine</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>How Readable is Your Content?</title>
                <link>https://www.ashleysheridan.co.uk/blog/How+Readable+is+Your+Content%3F</link>
                <description>The readability of your content is one of the most important accessibility issues you will encounter, but is often one of the least thought about. Readability affects everyone who browses the Web, and can mean the difference between retaining or scaring your site visitors.

What is Readability?

The readability of your content is how easily understood your content is. One of the most useful measures…</description>
                <pubDate>Wed, 16 Jan 2019 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/How+Readable+is+Your+Content%3F</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>The Problems with Microsoft Dropping Edge</title>
                <link>https://www.ashleysheridan.co.uk/blog/The+Problems+with+Microsoft+Dropping+Edge</link>
                <description>If you&#039;re a web developer, then it shouldn&#039;t be a shock now to find out that Microsoft is planning on ditching their Edge browser in favour of a new one based on the open-source Chromium project (not to be confused with the related but closed-source Chrome browser.) This will see Microsoft dropping their EdgeHTML engine in lieu of the Blink engine.

The Initial Reaction

On the face of it, this…</description>
                <pubDate>Fri, 07 Dec 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/The+Problems+with+Microsoft+Dropping+Edge</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>10 Mistakes Made in Web Translations (and How to Fix Them)</title>
                <link>https://www.ashleysheridan.co.uk/blog/10+Mistakes+Made+in+Web+Translations+%28and+How+to+Fix+Them%29</link>
                <description>There are many assumptions made by developers when it comes to creating multilingual websites, and any one of these mistakes is easy to make when starting work on your first multilingual Web project. I&#039;ve compiled a list of 10 (this number was only reached by happy coincidence, not by setting a deliberate target!) common mistakes made by developers and others, and how to avoid them.

Contents


	A…</description>
                <pubDate>Tue, 06 Nov 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/10+Mistakes+Made+in+Web+Translations+%28and+How+to+Fix+Them%29</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHP 7.4 Upcoming Features</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHP+7.4+Upcoming+Features</link>
                <description>The last few years has seen PHP undergo an incredible amount of work to improve the language. The latest couple of proposals for the 7.4 release contains a major feature that many have wanted in PHP for years: typed properties on object instances.

Typed Properties

This is the big one we&#039;ve all been waiting for. As a developer who works across many languages, being able to type the properties…</description>
                <pubDate>Wed, 03 Oct 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHP+7.4+Upcoming+Features</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>One Div CSS Halloween Spooks and Ghouls</title>
                <link>https://www.ashleysheridan.co.uk/blog/One+Div+CSS+Halloween+Spooks+and+Ghouls</link>
                <description>Playing around with CSS to create single &amp;lt;div&gt; works of art is, while largely useless for production-worthy code, a lot of fun, especially to see how far a technique can be pushed. In the past I&#039;ve created CSS Animals and even an animated BB8.

Contents


	Ghost
	Gravestone
	Pumpkin
	Frankenstein&#039;s Monster
		
			The Head
			The Neck
			Animating the Eyes
		
	
	Conclusion





…</description>
                <pubDate>Sat, 29 Sep 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/One+Div+CSS+Halloween+Spooks+and+Ghouls</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessible Modal Dialogs</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessible+Modal+Dialogs</link>
                <description>Modal dialogues are a part of the web whether we like them or not, and there&#039;s plenty of reason to not like them when they&#039;re implemented in a really intrusive way. They do serve a very useful purpose though; they allow extra content to be presented to the user in a way that temporarily breaks out of the normal flow of the page without altering the existing content flow.

Contents


	What Should…</description>
                <pubDate>Sun, 09 Sep 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessible+Modal+Dialogs</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Why You Should Not Use Rimraf</title>
                <link>https://www.ashleysheridan.co.uk/blog/Why+You+Should+Not+Use+Rimraf</link>
                <description>A little over a year ago I got into a discussion about the rimraf package . At the time I was using a mix of Mac and Windows and I was looking for a quick and easy way to remove the whole node_modules directory from an Angular project. My search led me to rimraf, which was touted as a cross-platform alternative to the traditional rm -rf written in node.

Why Delete node_modules Anyway?

The initial…</description>
                <pubDate>Wed, 29 Aug 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Why+You+Should+Not+Use+Rimraf</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Creating a Streaming Proxy with PHP</title>
                <link>https://www.ashleysheridan.co.uk/blog/Creating+a+Streaming+Proxy+with+PHP</link>
                <description>When using cURL the most typical code examples will have you fetch a whole remote response in one go by putting it into a variable. This is fine for small requests, like a web page, but when you scale up, you will run into issues with memory consumption, timeouts, and a poor user experience.


	A Simple Proxy
	Extending the Functionality
	Stream the Response
	The Result


Imagine the scenario…</description>
                <pubDate>Sat, 18 Aug 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Creating+a+Streaming+Proxy+with+PHP</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>CatImgPHP - Preview Images on the Command Line with PHP</title>
                <link>https://www.ashleysheridan.co.uk/blog/CatImgPHP+-+Preview+Images+on+the+Command+Line+with+PHP</link>
                <description>I was reading an article recently about the catimg tool used to preview images on the command line. I saw this as a fun way to keep my PHP skills sharp.

The Inspiration

I installed the catimg tool locally to test it out and see what kind of output it produced. It&#039;s included in most Linux distributions, and is available on MacOS via Homebrew, but Windows users will need to build it from source…</description>
                <pubDate>Tue, 17 Jul 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/CatImgPHP+-+Preview+Images+on+the+Command+Line+with+PHP</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Dyslexia and Fonts</title>
                <link>https://www.ashleysheridan.co.uk/blog/Dyslexia+and+Fonts</link>
                <description>Generally, when asked about web accessibility, peoples first thoughts tend to go towards visual impairments. One group of less obvious issues is that of learning difficulties, such as dyslexia. Dyslexia affects about 10% of the UK population according to the British Dyslexia Association. Being a hidden disability, it&#039;s often overlooked in any web accessibility checks.

Contents


	What is Dyslexia
	Can…</description>
                <pubDate>Wed, 30 May 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Dyslexia+and+Fonts</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessible Tables</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessible+Tables</link>
                <description>For many years, tables were the only tool available to lay out our websites as we wanted to achieve something that went beyond what you&#039;d probably come to expect with your typical word-processed documents. Then for the last decade (or so) we were told that tables were evil, and using them was a sin that would earn us a spot in the 6th circle of IT hell. More recently we&#039;ve learned that that anti-table…</description>
                <pubDate>Tue, 15 May 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessible+Tables</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Interactive Burger Menu with SVG, CSS and no JavaScript!</title>
                <link>https://www.ashleysheridan.co.uk/blog/Interactive+Burger+Menu+with+SVG%2C+CSS+and+no+JavaScript%21</link>
                <description>

CSS goes far beyond being just a styling language for HTML, allowing you to style any XML based language too. This includes SVG documents, which becomes a powerful tool for achieving some great affects without the use of JavaScript.

This experiment blends HTML and SVG to create a menu where you make your own burger by selecting what you want from the menu. To start things off (as I&#039;m really…</description>
                <pubDate>Sat, 05 May 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Interactive+Burger+Menu+with+SVG%2C+CSS+and+no+JavaScript%21</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHP 7.3 Upcoming Features</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHP+7.3+Upcoming+Features</link>
                <description>Although PHP 7.3 doesn&#039;t have a released spec yet, it&#039;s a fairly good bet looking at the list of approved RFC documents at what we can expect in the next release of PHP 7.


	Exceptions with JSON Errors
	Allow a Trailing Comma in Function Calls
	
		…</description>
                <pubDate>Tue, 01 May 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHP+7.3+Upcoming+Features</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Checking Password Strength with Regular Expressions</title>
                <link>https://www.ashleysheridan.co.uk/blog/Checking+Password+Strength+with+Regular+Expressions</link>
                <description>Randall Munroe of XKCD explains wonderfully how through 20 years of effort, we&#039;ve successfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess. As humans, we see a password that seems entirely nonsensical and assume it to be as difficult to crack as it is to remember. Despite this logical fallacy, developers worldwide still insist on enforcing…</description>
                <pubDate>Sat, 21 Apr 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Checking+Password+Strength+with+Regular+Expressions</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Single Div CSS Mona Lisa</title>
                <link>https://www.ashleysheridan.co.uk/blog/Single+Div+CSS+Mona+Lisa</link>
                <description>

In the world of CSS, there is little as fun and challenging as the single &amp;lt;div&amp;gt; challenge. It&#039;s a creative idea that&#039;s been taken to some impressive lengths by Lynn Fisher of the &#039;A Single Div&#039; website.

The technique has been picked up by many front-end developers, who have created some amazing works with it, like Sasha&#039;s Mike Wazowski, and the wonderfully festive Christmas tree by Ari…</description>
                <pubDate>Wed, 28 Mar 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Single+Div+CSS+Mona+Lisa</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>New Features in Web Content Accessibility Guidelines 2.1 and What You Need to Do</title>
                <link>https://www.ashleysheridan.co.uk/blog/New+Features+in+Web+Content+Accessibility+Guidelines+2.1+and+What+You+Need+to+Do</link>
                <description>In January there was a recent update to the WCAG that introduced some changes in what&#039;s expected of you as a developer to make your web content accessible. The majority of these are fairly obvious and straightforward, with some nice additions that enhance accessibility on smaller hand-held devices.


	
		Criterion
		Conformance Level
	
	
		1.3.4 Identify Common Purpose
		AA
	
	
		1.3.5…</description>
                <pubDate>Fri, 16 Mar 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/New+Features+in+Web+Content+Accessibility+Guidelines+2.1+and+What+You+Need+to+Do</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHPUnit - Testing Core PHP Methods</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHPUnit+-+Testing+Core+PHP+Methods</link>
                <description>A lot of my focus recently has been outside of PHP so I&#039;m trying to spend some of my personal time working on a personal project. My recent child (code-wise, not my actual child which would go to explain why my time is so lacking the past year) is imogen which is a system built to generate images for email as the email client requests them. My Christmas reading of Clean Code and The Clean Coder game…</description>
                <pubDate>Wed, 21 Feb 2018 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHPUnit+-+Testing+Core+PHP+Methods</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Web Accessibility in Detail</title>
                <link>https://www.ashleysheridan.co.uk/blog/Web+Accessibility+in+Detail</link>
                <description>
	The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.
	Tim Berners-Lee


When Tim Berners-Lee opened the WWW to the general public in 1991 (previously it was internal to the CERN network) he had a vision that it would be of use by all, and that tenet is as true today as it was nearly 3 decades ago.

Back in the 90&#039;s, we had little…</description>
                <pubDate>Fri, 08 Dec 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Web+Accessibility+in+Detail</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Updating Angular from 2 to 4</title>
                <link>https://www.ashleysheridan.co.uk/blog/Updating+Angular+from+2+to+4</link>
                <description>I recently needed to upgrade an Angular project from 2.4.1 to the latest (at the time of writing) version of 4.2. All the typical guides detail how to update the core @angular packages in the package.json, but stop there, omitting the other things that also need to be done to ensure the project/application still works as intended. This is what I found as I was performing my update:


	Updating the…</description>
                <pubDate>Fri, 01 Sep 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Updating+Angular+from+2+to+4</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Imogen – An Open Source Image Generator For Emails</title>
                <link>https://www.ashleysheridan.co.uk/blog/Imogen+%E2%80%93+An+Open+Source+Image+Generator+For+Emails</link>
                <description>A couple of years ago I was working closely with some email developers to develop a system that could generate images on the fly. This was born of the need for emails to have content that could change after the moment it was sent, and be fresh at the point a recipient opened it.

The end result of this system was a rudimentary system written in PHP that could generate such images, and it was used…</description>
                <pubDate>Thu, 24 Aug 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Imogen+%E2%80%93+An+Open+Source+Image+Generator+For+Emails</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessible Styled Form Elements</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessible+Styled+Form+Elements</link>
                <description>Since the inception of CSS, there&#039;s been one area of styling that has been a constant issue; forms. Simple elements, like &amp;lt;input type=&quot;text&quot;&amp;gt; and &amp;lt;textarea&amp;gt; and buttons, have generally been ok, as borders, colours and fonts could all be set with standard styles that behaved as expected. Beyond that though, other elements were impossible to style consistently without either compromising…</description>
                <pubDate>Wed, 26 Jul 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessible+Styled+Form+Elements</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Practical Regular Expressions</title>
                <link>https://www.ashleysheridan.co.uk/blog/Practical+Regular+Expressions</link>
                <description>I often quote Jamie Zawinski for his brilliant line on usage of regular expressions:

Some people, when confronted with a problem, think
“I know, I&#039;ll use regular expressions.”   Now they have two problems.

Despite this, I still use them to within an inch of their life because, when used correctly, they are incredibly useful; across everything from find/replace in a document or IDE, form…</description>
                <pubDate>Mon, 12 Jun 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Practical+Regular+Expressions</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Speed Testing the SPL Iterators for Fetching Files</title>
                <link>https://www.ashleysheridan.co.uk/blog/Speed+Testing+the+SPL+Iterators+for+Fetching+Files</link>
                <description>In the world of PHP some techniques never really go away, despite there being better alternatives added to the core functionality. One of these areas is file iteration, particularly recursively through directories and their contents. It&#039;s fairly typical to see some code use a recursive function to:


	Scan a directory
	Loop through the scanned list
	Add entry to a list
	Check if an entry is a…</description>
                <pubDate>Sat, 13 May 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Speed+Testing+the+SPL+Iterators+for+Fetching+Files</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Blind to Accessibility</title>
                <link>https://www.ashleysheridan.co.uk/blog/Blind+to+Accessibility</link>
                <description>When I first started learning about accessibility, I figured it was just enough to use alt attribute text on images, and use semantic tags. Like the Greek philosopher Socrates once said though:

The only true wisdom is in knowing you know nothing

My folly, shared by many developers, was to simply assume that accessibility was just something that applied to blind people, but don’t we all start…</description>
                <pubDate>Wed, 03 May 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Blind+to+Accessibility</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>CSS Zoo</title>
                <link>https://www.ashleysheridan.co.uk/blog/CSS+Zoo</link>
                <description>I enjoy playing around with CSS and using it for more than just styling traditional web pages. It lead me to experiment by making a few animals using no more than a handful of HTML tags.

At the core of each is the main containing &amp;lt;div&gt; tag, this operates as the face and the container for the other elements. They generally have the same kind of round shape, which is all just achieved with border-radius…</description>
                <pubDate>Wed, 26 Apr 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/CSS+Zoo</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>A Formatting Class For PHP Command Line Scripts</title>
                <link>https://www.ashleysheridan.co.uk/blog/A+Formatting+Class+For+PHP+Command+Line+Scripts</link>
                <description>Just over a year ago when I moved into my flat, I found myself at a loose end in that time between moving in and the Internet connection being set up. Having exhausted all my films, and played my fill of Red Alert, I was in desperate need for something to do.
This PHP script is the culmination of that free time; a command line script that can turn basic HTML strings into something that can be displayed…</description>
                <pubDate>Thu, 06 Apr 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/A+Formatting+Class+For+PHP+Command+Line+Scripts</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Manual Vs Automated Testing</title>
                <link>https://www.ashleysheridan.co.uk/blog/Manual+Vs+Automated+Testing</link>
                <description>Testing is an essential part of any software development, ranging all the way from basic testing of some code to make sure it performs the task at hand with the perfect inputs, right up to the rigorous regression tests performed by software houses working on enterprise level applications.
Testing usually comes down to two types: manual and automated. But what type of testing is better, and what are…</description>
                <pubDate>Sun, 12 Mar 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Manual+Vs+Automated+Testing</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>A Better Radial Menu With Pure CSS</title>
                <link>https://www.ashleysheridan.co.uk/blog/A+Better+Radial+Menu+With+Pure+CSS</link>
                <description>I recently saw a Pen on CodePen with an animated menu using blend modes. The overall effect was quite nice, but I noticed it was relying on JavaScript to toggle the animation, and as an example it wasn&#039;t particularly flexible, as those values were tied into the 5 items shown.

I set about recreating the effect but with pure CSS, and took it a little further using some SASS to allow it to a varying…</description>
                <pubDate>Sat, 25 Feb 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/A+Better+Radial+Menu+With+Pure+CSS</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Why CodeIgniter Is Not Recommended Over Other PHP Frameworks</title>
                <link>https://www.ashleysheridan.co.uk/blog/Why+CodeIgniter+Is+Not+Recommended+Over+Other+PHP+Frameworks</link>
                <description>I recently saw an article recommending the use of the CodeIgniter framework. While the article is mostly accurate (with some glaring exceptions) the problem is that the advice is so out of date, it&#039;s essentially useless. PHP has a bad reputation in the web development world as being a terrible language. I admit, its greatest strenght is also its biggest weakness: it allows anyone to easily create something…</description>
                <pubDate>Tue, 14 Feb 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Why+CodeIgniter+Is+Not+Recommended+Over+Other+PHP+Frameworks</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Testing Private Member Classes with Jasmine in Angular2 Template Tests</title>
                <link>https://www.ashleysheridan.co.uk/blog/Testing+Private+Member+Classes+with+Jasmine+in+Angular2+Template+Tests</link>
                <description>A little while ago I came across an issue when trying to implement template testing with Jasmine on an Angular2 project that was using private member classes. If you try this yourself, you&#039;ll get plenty of errors and warnings about various things that either can&#039;t be found, used, or can&#039;t be spied on. There&#039;s not a lot online about this, as it seems that private anything within Angular2 projects is…</description>
                <pubDate>Fri, 03 Feb 2017 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Testing+Private+Member+Classes+with+Jasmine+in+Angular2+Template+Tests</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>System Overload</title>
                <link>https://www.ashleysheridan.co.uk/blog/System+Overload</link>
                <description>Every developer will have spent some of their time maintaining systems, whether that be a few small websites they&#039;ve lovingly crafted, a deployment tool that pushes code to servers, or monitoring applications that can analyse and report on issues. Looking after and using a few of these is easily manageable, but the more you inherit, the more difficult this task becomes as you have to split your time…</description>
                <pubDate>Thu, 01 Dec 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/System+Overload</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Creating your own classes that use the PSR-4 autoloader</title>
                <link>https://www.ashleysheridan.co.uk/blog/Creating+your+own+classes+that+use+the+PSR-4+autoloader</link>
                <description>The PSR-4 standard has been around for quite a while now, building on and adding to the PSR-0 standard, allowing PHP to autoload classes using a cleaner and better organised file tree.

One thing I did notice is that not all the documentation on the autoloader is as clear as it could be with regards to how you would actually use it for your own new classes.

The first thing would be to get a PSR-4…</description>
                <pubDate>Thu, 24 Nov 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Creating+your+own+classes+that+use+the+PSR-4+autoloader</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Form Validation And Why You Are Probably Doing It Wrong - Part 2</title>
                <link>https://www.ashleysheridan.co.uk/blog/Form+Validation+And+Why+You+Are+Probably+Doing+It+Wrong+-+Part+2</link>
                <description>In the previous part of the article I outlined how a lot of developers are validating their forms badly, letting assumptions blinker their otherwise decent logical skills. There I used names as an example; an easy shot with obvious issues. But what about something more specific in its structure, something that has a well-defined pattern, like a domain name?

The Domain
Domain names are integral…</description>
                <pubDate>Thu, 15 Sep 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Form+Validation+And+Why+You+Are+Probably+Doing+It+Wrong+-+Part+2</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Form Validation And Why You Are Probably Doing It Wrong - Part 1</title>
                <link>https://www.ashleysheridan.co.uk/blog/Form+Validation+And+Why+You+Are+Probably+Doing+It+Wrong+-+Part+1</link>
                <description>Forms are an integral part of websites, whether it be a simple contact form on your personal blog, an address form for a shopping delivery, or a complex tax return form.
If you&#039;re the one in charge of that form, you will be validating the user input (if you&#039;re not, you&#039;re an idiot), but have you ever stopped to think about exactly what it is you&#039;re validating?

Validate Twice, Process Once
There&#039;s…</description>
                <pubDate>Sun, 07 Aug 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Form+Validation+And+Why+You+Are+Probably+Doing+It+Wrong+-+Part+1</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Pure CSS Star Wars BB8</title>
                <link>https://www.ashleysheridan.co.uk/blog/Pure+CSS+Star+Wars+BB8</link>
                <description>Star Wars is as popular today as it ever was, and the new android BB8 has found many new fans. I thought it would be a perfect object to recreate in pure CSS.

The HTML for this is very simple, a single tag for the head, one for the body, and another to wrap them both and make the CSS more specific when the HTML is placed within another document:


&amp;lt;div class=&quot;bb8&quot;&gt;
	&amp;lt;div class=&quot;head&quot;&gt;&amp;lt…</description>
                <pubDate>Sat, 07 May 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Pure+CSS+Star+Wars+BB8</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Programming by Coincidence</title>
                <link>https://www.ashleysheridan.co.uk/blog/Programming+by+Coincidence</link>
                <description>(or why copy-and-paste development is a bad idea)

This past year, working with CodeSniffer and more recently SonarQube, I&#039;m acutely more aware of the quality and consistency of the code that I write. SonarQube has really been great for this, because of the way the deployment procedures operate at TMW; it integrates extremely well with TeamCity and helps the whole team with all the languages we develop…</description>
                <pubDate>Tue, 15 Mar 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Programming+by+Coincidence</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>The Types Of People You Encounter As A Developer</title>
                <link>https://www.ashleysheridan.co.uk/blog/The+Types+Of+People+You+Encounter+As+A+Developer</link>
                <description>If you&#039;ve ever worked in the tech industry for any length of time, you&#039;ll have encountered most of these (or if you&#039;re really lucky, a blend of a few of them). Some of these may be your fellow developers, while others may be your project manager, or one of the many designers you have to deal with on a daily basis.

(Note, I&#039;m not a psychologist, and this is about as scientific as a childs mud pie…</description>
                <pubDate>Tue, 09 Feb 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/The+Types+Of+People+You+Encounter+As+A+Developer</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Code-Free Views</title>
                <link>https://www.ashleysheridan.co.uk/blog/Code-Free+Views</link>
                <description>I&#039;ve recently been embarking on a mission to completely eliminate PHP code from my view files, here is why.

What are Views?

Often when you&#039;re building a website or application, if you build from scratch you end up doing a lot of the same kinds of things, like turning requests into specific pages, handling form validation, caching, etc.
A long while ago (in the 70&#039;s according to http://c2.com/cgi/wiki?ModelViewControllerHistory)…</description>
                <pubDate>Tue, 05 Jan 2016 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Code-Free+Views</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Steps to Better Code</title>
                <link>https://www.ashleysheridan.co.uk/blog/Steps+to+Better+Code</link>
                <description>I was recently reading an old article by Joel Spolsky where he outlines what he&#039;s coined as the Spolsky Test; a twelve-step test that helps gauge the kind of quality you can expect from your development team.
Even though it&#039;s 15 years old now, the majority of it still holds true and makes a lot of sense but, as with anything digital, there are a few things that could be updated a little, and some…</description>
                <pubDate>Sun, 29 Nov 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Steps+to+Better+Code</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Installing Node.js on Linux</title>
                <link>https://www.ashleysheridan.co.uk/blog/Installing+Node.js+on+Linux</link>
                <description>If you&#039;re running Linux, and are in any way interested in using Node.js, then your first port of call would by the package manager used by your distro (apt on Debian and Ubuntu, or Yum on Fedora/RedHat.) The problem is, even if you&#039;re running a completely bleeding-edge distro, your Node version will probably be quite out of date. So what are your options? A bit of research gave me several options:


	Using…</description>
                <pubDate>Mon, 23 Nov 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Installing+Node.js+on+Linux</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>CodeSniffer – The PHP Coding Standards Tool</title>
                <link>https://www.ashleysheridan.co.uk/blog/CodeSniffer+%E2%80%93+The+PHP+Coding+Standards+Tool</link>
                <description>A couple of years ago I implemented a coding standards guide for PHP development at TMW, as I&#039;d noticed that they only had a document that was focused on .Net and Windows. The guide outlined mostly common sense practices, such as avoiding certain unsafe language functions, and how to best indent and document your code. Just over a year ago I made this document public on the TMW GitHub account, and…</description>
                <pubDate>Sat, 03 Oct 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/CodeSniffer+%E2%80%93+The+PHP+Coding+Standards+Tool</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Labour of Love: Building a Framework</title>
                <link>https://www.ashleysheridan.co.uk/blog/Labour+of+Love%3A+Building+a+Framework</link>
                <description>At the start of this year (2015) I embarked upon a small personal challenge which I&#039;d set myself: could I build a PHP MVC framework in a week? I had a fairly quiet schedule at the time, and I believed it was possible, so I began.

Now, I have had quite a few years experience using various frameworks, so I had a rough idea about how I wanted to go about structuring my own:

	Basic request router…</description>
                <pubDate>Thu, 06 Aug 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Labour+of+Love%3A+Building+a+Framework</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Accessible Cross Reference Tables</title>
                <link>https://www.ashleysheridan.co.uk/blog/Accessible+Cross+Reference+Tables</link>
                <description>This article was originally posted on the TMW Tech Blog on the 30th of Jan 2015 but I&#039;ve amended the prose slightly here

I&#039;ve recently rebuilt this website, mainly in order to move it off of the old CodeIgniter framework to Laravel, and take advantage of the modern features of PHP. The rebuild has given me a great opportunity to go through a lot of the content on the site and re-write it, and one…</description>
                <pubDate>Mon, 23 Feb 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Accessible+Cross+Reference+Tables</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Getting Discrete Values from a Potentiometer</title>
                <link>https://www.ashleysheridan.co.uk/blog/Getting+Discrete+Values+from+a+Potentiometer</link>
                <description>If you&#039;ve ever worked with potentiometers in your Arduino sketches, then you might have tried to use them to get discrete values, and if you had, you will have noticed that when the potentiometer is right on the cusp between two of your set value areas that the input appears to fluctuate wildly because it can&#039;t settle on one value, and there&#039;s a little noise on the line. This problem is compounded…</description>
                <pubDate>Mon, 23 Feb 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Getting+Discrete+Values+from+a+Potentiometer</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Writing a Better Profanity Filter in PHP</title>
                <link>https://www.ashleysheridan.co.uk/blog/Writing+a+Better+Profanity+Filter+in+PHP</link>
                <description>When you accept user-generated content on your website, you will, at one point of another, see content that you really wish you hadn&#039;t. This could be Joe Bloggs cursing at your article, or John Smith throwing out every insult imaginable in an attempt to goad you or your websites visitors. Usually in these situations you have a couple of options, full moderation or content filtering. It&#039;s the latter…</description>
                <pubDate>Mon, 23 Feb 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Writing+a+Better+Profanity+Filter+in+PHP</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Communicating Between PHP and an Arduino with Sockets</title>
                <link>https://www.ashleysheridan.co.uk/blog/Communicating+Between+PHP+and+an+Arduino+with+Sockets</link>
                <description>This article was originally posted on the TMW Tech Blog on the 29th of Jan 2015 but I&#039;ve amended the prose slightly here

Initially, I put this together as a way to quickly demonstrate to colleagues the socket capabilities of PHP, as it&#039;s a common misconception to believe it&#039;s not good at real time communications, and that it can only follow a request-response model. I decided that this would also…</description>
                <pubDate>Tue, 03 Feb 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Communicating+Between+PHP+and+an+Arduino+with+Sockets</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using XML as a source document for other formats</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+XML+as+a+source+document+for+other+formats</link>
                <description>At TMW I produced a PHP coding standards document, as there were only such documents available for .Net and the front-end coding technologies.
Initially, this was only available on the internal wiki, but there was a need to then add it to the TMW Tech Blog, which used Markdown format. Not wanting to maintain two sets of documentation, and noticing a possible need for other formats in the future, I…</description>
                <pubDate>Sun, 11 Jan 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+XML+as+a+source+document+for+other+formats</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using brace expansion to create nested directory structures</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+brace+expansion+to+create+nested+directory+structures</link>
                <description>When setting up a new project it&#039;s often required to set up the same old directory structures. You could do this manually, but where&#039;s the fun in that? You can do this much more quickly in the terminal with brace expansion.
Consider the following directory structure:


	project_dir
		
			www
				
					img
					js
					css
				
			
			logs
		
	


This entire directory structure can…</description>
                <pubDate>Sun, 11 Jan 2015 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+brace+expansion+to+create+nested+directory+structures</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Pure CSS Tree Menu</title>
                <link>https://www.ashleysheridan.co.uk/blog/Pure+CSS+Tree+Menu</link>
                <description>The new selectors in CSS3 are very powerful, and allow for some interesting ways of creating interactivity on a website that doesn&#039;t rely on JavaScript. Typically, a lot of these new techniques are available in the majority of web browsers being used with the obvious exception of IE up tp and including 8, which limits their usefulness when compared with current JavaScript solutions, but that shouldn&#039;t…</description>
                <pubDate>Sat, 08 Dec 2012 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Pure+CSS+Tree+Menu</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using PHP to make a HEAD request to get a files size</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+PHP+to+make+a+HEAD+request+to+get+a+files+size</link>
                <description>I had a request recently to get the size of a large collection of files that were hosted on Amazons S3 storage and add the values to a database containing a list of these files that acted as a local cache. I saw two main ways to achieve this: mount the S3 storage and treat the files as if they were local, or query the files on the fly as the sizes are required.
I went for the second method, which…</description>
                <pubDate>Sat, 08 Dec 2012 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+PHP+to+make+a+HEAD+request+to+get+a+files+size</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using XSL to convert XML to SQL</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+XSL+to+convert+XML+to+SQL</link>
                <description>The new Energizer Europe website has recently launched, and it has certainly been one of the biggest and complicated sites I&#039;ve ever worked on. Part of this complexity came from the fact that it was to launch across more than 30 regions of Europe and in 10 languages. Now, there are many brilliant people out there who are fluently multi-lingual and can quite easily read and interpret website copy coming…</description>
                <pubDate>Fri, 23 Nov 2012 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+XSL+to+convert+XML+to+SQL</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Generating sitemaps for large sites</title>
                <link>https://www.ashleysheridan.co.uk/blog/Generating+sitemaps+for+large+sites</link>
                <description>I recently had a requirement at work to product a sitemap (in the form of a basic list of URLs in a text document). Normally, I&#039;d have a look at one of the various online sitemap generators, but they tend to stop indexing at a few hundred pages and require payment to index the rest; and the site in question contained around 7000 pages, spanning across mobile and desktop.
Faced with this, I set about…</description>
                <pubDate>Tue, 30 Oct 2012 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Generating+sitemaps+for+large+sites</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Roman to Decimal Conversion</title>
                <link>https://www.ashleysheridan.co.uk/blog/Roman+to+Decimal+Conversion</link>
                <description>I stumbled across a recent post on Stack Overflow where someone was asking how to convert from Roman numerals to decimal with PHP. The answers already there seemed more complicated than the ought to be, so I figured I&#039;d write a quick function for it myself.
This is only a very basic attempt, and doesn&#039;t take into account certain rules, like Roman digits which shouldn&#039;t be repeated, and what values…</description>
                <pubDate>Wed, 18 Apr 2012 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Roman+to+Decimal+Conversion</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Animated Glowing Line Drawing in Canvas</title>
                <link>https://www.ashleysheridan.co.uk/blog/Animated+Glowing+Line+Drawing+in+Canvas</link>
                <description>Following on from my last coding article showing how to create animated glowing lines in canvas this was an attempt at creating a simple animated drawing of a basic line art shape with the same glowing line technique.
Because I wanted to be able to see the shape being drawn it had to be as a series of steps which could be broken down into manageable chunks. I also wanted the code to be flexible enough…</description>
                <pubDate>Mon, 09 Jan 2012 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Animated+Glowing+Line+Drawing+in+Canvas</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Animated Glowing Lines in Canvas</title>
                <link>https://www.ashleysheridan.co.uk/blog/Animated+Glowing+Lines+in+Canvas</link>
                <description>I spent a little bit of time last night playing around with the new HTML5 canvas and seeing if I could create a realistic glowing line that moved around on the screen. My efforts can be found at the end of this article, but here is a screenshot of it:

The code itself is fairly straight-forward. A few random parameters are first set up to determine the colour of the line, as well as it&#039;s start and…</description>
                <pubDate>Sat, 10 Dec 2011 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Animated+Glowing+Lines+in+Canvas</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Getting the most out of CSS selectors</title>
                <link>https://www.ashleysheridan.co.uk/blog/Getting+the+most+out+of+CSS+selectors</link>
                <description>Selectors in CSS are one of the most powerful and useful features you have at your disposal, and yet seem to be little used to its potential. Complex selectors solve the problem of targeting specific elements on a page (and in some browsers, elements that fall under certain conditions as well)
One alternative to selectors which some developers find popular is to give every element that needs to be…</description>
                <pubDate>Tue, 19 Jul 2011 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Getting+the+most+out+of+CSS+selectors</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Fixing the Headers Already Sent Error</title>
                <link>https://www.ashleysheridan.co.uk/blog/Fixing+the+Headers+Already+Sent+Error</link>
                <description>This is probably the single most frequent error I&#039;ve seen come up as part of a question on mailing lists and forums, usually when one moves a script from a more lenient server to one that is more strict in its error reporting.
The issue is caused by some call to header() after some output is sent to the browser. What can be sometimes difficult to understand for programmers new to PHP is that HTML…</description>
                <pubDate>Thu, 09 Jun 2011 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Fixing+the+Headers+Already+Sent+Error</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Smart Image Resizing</title>
                <link>https://www.ashleysheridan.co.uk/blog/Smart+Image+Resizing</link>
                <description>When creating any sort of dynamic gallery there is always the issue of creating thumbnails. This is not a problem if all of the source images are the same size, but with a dynamic gallery that cannot be guaranteed. Sure, you could leave instructions that images must be of a certain width and height, and reject anything that doesn&#039;t fit, but isn&#039;t it nicer to create smart thumbnails from any size and…</description>
                <pubDate>Tue, 18 May 2010 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Smart+Image+Resizing</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Remove Rubbish Microsoft Markup</title>
                <link>https://www.ashleysheridan.co.uk/blog/Remove+Rubbish+Microsoft+Markup</link>
                <description>This is an amendment to the function I wrote to fix the broken characters that Microsoft Office inserts into content that you paste into your CMS. The update adds an optional parameter to the function that can strip out the MS-specific styles that are only  recognised by IE and cause display issues in other browsers.
The problems caused by Microsoft because of this have been quite large, and have…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Remove+Rubbish+Microsoft+Markup</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Creating Select Lists with Default Options</title>
                <link>https://www.ashleysheridan.co.uk/blog/Creating+Select+Lists+with+Default+Options</link>
                <description>Select lists are great, but what happens when your visitor has made a mistake in the form and you need to re-display the form, along with the option they just selected? This is where PHP, comes in.
Now, depending on how your site is set up, you might be creating the select list from either a database or other source, but at some point it will be in a form that you can loop though. For this example…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Creating+Select+Lists+with+Default+Options</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Stylesheet Switcher</title>
                <link>https://www.ashleysheridan.co.uk/blog/Stylesheet+Switcher</link>
                <description>One drawback to alternate stylesheets on a website is that no browser I&#039;ve seen allows the newly selected stylesheet to persist through the browsing of that site. As you move from page to page, the default style takes over again. This was particularly annoying for me, as I was in the middle of testing out a new stylesheet on my site as a demonstration, and each time I navigated to a new page, I&#039;d have…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Stylesheet+Switcher</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Nested Lists with Overriding Styles</title>
                <link>https://www.ashleysheridan.co.uk/blog/Nested+Lists+with+Overriding+Styles</link>
                <description>Nested tree menus are often a useful way of portraying hierarchical data, and are most commonly used to display directory trees to a user. Semantically, the best way to create them is with proper list markup. The problem with nested lists, is that, by default, they all have the same amount of padding, which is often annoying for the topmost list item.
What might seem an obvious solution is not the…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Nested+Lists+with+Overriding+Styles</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Using cURL to Interface with Twitter</title>
                <link>https://www.ashleysheridan.co.uk/blog/Using+cURL+to+Interface+with+Twitter</link>
                <description>Twitter. Love it or hate it, it&#039;s here to stay for a while. One recent project I worked on required some integration between Twitter and the website in I was working on. Having only a short while to work on this, and not being familiar with any of the various plugins out there, I wrote a simple function using cURL. While this example will focus on grabbing the number of followers of MicroMart magazine…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Using+cURL+to+Interface+with+Twitter</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>CSS Media Types</title>
                <link>https://www.ashleysheridan.co.uk/blog/CSS+Media+Types</link>
                <description>CSS Media Types
CSS is a wonderful thing, but most people only ever use it for styling HTML on a regular computer screen. The fact is, CSS has, right from the beginning, had a much wider potential audience. The following code excerpt shows you how you might use alternative stylesheets for rendering your web page on some form of media that isn&#039;t a compupter screen:


&amp;lt;link rel=&quot;stylesheet&quot; type=…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/CSS+Media+Types</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Change Selected Text Colours</title>
                <link>https://www.ashleysheridan.co.uk/blog/Change+Selected+Text+Colours</link>
                <description>
::selection
{
	background-color: #f00 !important;
	color: #fff !important;
}
::-moz-selection
{
	background-color: #f00 !important;
	color: #fff !important;
}

It can be frustrating sometimes to design a website, only to have the operating systm of a visitor change a bunch of the colours it uses for everything. One annoying example is the text selection colours. Thankfully, CSS can help…</description>
                <pubDate>Tue, 29 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Change+Selected+Text+Colours</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Popups That Always Work</title>
                <link>https://www.ashleysheridan.co.uk/blog/Popups+That+Always+Work</link>
                <description>&quot;My popup windows don&#039;t work with Javascript turned off. How can I make them always work?&quot;
This is a question I see fairly frequently popping up on forums and mailing lists. Popup windows can be a pretty useful thing when used correctly, but in terms of accessibility, relying on Javascript for navigation is a bad thing.
There is a way that you can still use that popup, without causing problems for…</description>
                <pubDate>Mon, 28 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Popups+That+Always+Work</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Listing Directories In An FTP Location</title>
                <link>https://www.ashleysheridan.co.uk/blog/Listing+Directories+In+An+FTP+Location</link>
                <description>A question that I saw recently on a mailing list was how to determine whether a file (I&#039;ll use the Unix terminology here: everything is a file) on an FTP connection is a directory or a file. One suggestion was to use the FTP file wrapper in PHP and then use the is_file() and is_dir() functions to determine the type. I noted at the time that this wasn&#039;t a perfect solution, as it relied on the FTP file…</description>
                <pubDate>Mon, 28 Sep 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Listing+Directories+In+An+FTP+Location</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Pass Values by Reference in foreach Loops</title>
                <link>https://www.ashleysheridan.co.uk/blog/Pass+Values+by+Reference+in+foreach+Loops</link>
                <description>Quite often, the question comes up about how to modify elements of an associative array inside a foreach loop, because the foreach loop passes by value, essentially creating a duplicate array in memory which your code works on. While this is usually not an issue, it can be if you want to actually modify the array.
There are two ways in which you can do this, use the key of each element to modify the…</description>
                <pubDate>Mon, 25 May 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Pass+Values+by+Reference+in+foreach+Loops</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Streaming Files for Security</title>
                <link>https://www.ashleysheridan.co.uk/blog/Streaming+Files+for+Security</link>
                <description>Picture the scenario: You&#039;ve just set up a social networking site for your niche hobby of collecting old tin cans. Part of the site is an image gallery that allows members to upload pictures of their collections. You want to make sure that only members can see these images, but how?
Preventing access to a page that contains the image is easy, but what if they try to link to the image directly? One…</description>
                <pubDate>Mon, 25 May 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Streaming+Files+for+Security</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Replacing Non-Displaying MS Word Characters</title>
                <link>https://www.ashleysheridan.co.uk/blog/Replacing+Non-Displaying+MS+Word+Characters</link>
                <description>I work on a lot of CMS&#039;s, and website content generally follows the same general process:

	Original copy is written, and saved as an MS Word document.
	This file is sent on for review and final edits.
	Content from final version is copied and pasted directly from Word into the CMS.

Now generally, this process is fine. However, if any of a number of particular characters was used in the original…</description>
                <pubDate>Wed, 20 May 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Replacing+Non-Displaying+MS+Word+Characters</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Alternate Table Rows in PHP</title>
                <link>https://www.ashleysheridan.co.uk/blog/Alternate+Table+Rows+in+PHP</link>
                <description>I often see people asking around on forums and mailing lists, how best to create tables with alternate rows, and I often see a variety of methods, many of which are quite frankly scary! Sure, CSS3 has a pretty nifty solution in the form of the nth-child selector, but this has limited browser support (currently, it is not recognised by Firefox 2 &amp;amp; 3 or IE 6 &amp;amp; 7), and CSS3 has not yet been fully…</description>
                <pubDate>Tue, 03 Mar 2009 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Alternate+Table+Rows+in+PHP</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHP Image Header</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHP+Image+Header</link>
                <description>Despite efforts made by many groups to allow designers to embed fonts into their web pages, such as WEFT and CSS, no method has managed to achieve support across all the popular browsers. Currently, the CSS method looks the best bet, but is still too far in the distant future to be considered a viable option at the moment. Because of this, alternatives such as the Flash sIFR, but this relies on Flash…</description>
                <pubDate>Tue, 11 Nov 2008 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHP+Image+Header</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Combo Boxes</title>
                <link>https://www.ashleysheridan.co.uk/blog/Combo+Boxes</link>
                <description>Web pages have always been lagging behind when it comes to form controls that exist on most applications you find on a computer. It just about covers the basics and goes no further, leaving web developers without such useful things as spinners, sliders, tabs and combo boxes. There are scripts to emulate combo boxes online, but the ones I tested failed abysmally when script was turned off, so I set…</description>
                <pubDate>Sat, 01 Nov 2008 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Combo+Boxes</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Form Validation</title>
                <link>https://www.ashleysheridan.co.uk/blog/Form+Validation</link>
                <description>Form validation is one of the most under-rated and at the same time most important parts of a web application. It might seem good at first to check for simple things like checking to see if an email address has an @ sign, or that a name field has more than 1 character, the truth is that without sanitising your inputs, you&#039;re leaving your whole website vulnerable to attack. Take a contact form as an…</description>
                <pubDate>Mon, 20 Oct 2008 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Form+Validation</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHP Calendar</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHP+Calendar</link>
                <description>The calendar at the right-hand side of the site is something which I am often asked about. I have seen many examples online, but all seemed needlessly complicated or coded in a particularly odd fashion. Having decided early on that something simple, efficiently scripted and easy to  tweak was needed, I created the one which you see on the site. Here is the source code:
				

&amp;lt;?php
$ymDate =…</description>
                <pubDate>Tue, 30 Sep 2008 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHP+Calendar</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>PHP Captcha</title>
                <link>https://www.ashleysheridan.co.uk/blog/PHP+Captcha</link>
                <description>Spam is a huge problem on the Internet today, across the Web, Email, Newsgroups, to name but a few areas. Recently, spammers have been targeting websites, particularly forums, blogs and wikis. The tried and tested method to prevent this is to use a CAPTCHA. The idea goes back to Alan Turings idea of a test to differentiate humans and computers, which is now used to test AI. 1997, Andrei Broder devised…</description>
                <pubDate>Tue, 05 Aug 2008 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/PHP+Captcha</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Anti-Spam Email Script</title>
                <link>https://www.ashleysheridan.co.uk/blog/Anti-Spam+Email+Script</link>
                <description>Often in forums and blogs, I see people asking how to cut back on spammers getting to their email addresses on a page. The most frequent solution to this problem is to disguise the email, in the hope that the spam bots (scripts purposely built for scouring the webs&#039; pages for email addresses) will be unable to recognise the non-standard format. Below are just some of the ways of email obfuscation:
				
					foo…</description>
                <pubDate>Wed, 05 Mar 2008 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Anti-Spam+Email+Script</guid>
                <author>Ashley Sheridan</author>
            </item>
        
            <item>
                <title>Conditional Comments</title>
                <link>https://www.ashleysheridan.co.uk/blog/Conditional+Comments</link>
                <description>Internet Explorer does not play nice with CSS, particularly when it comes to widths, borders and padding, as it has its own way of interpreting standards. Thankfully, because of its proprietary implementation of HTML, a feature exists which can allow us to include special style sheets just for IE: conditional comments. Because IE is the only browser to recognise these, you can use an externally referenced…</description>
                <pubDate>Mon, 01 Oct 2007 00:00:00 +0000</pubDate>
                <guid>https://www.ashleysheridan.co.uk/blog/Conditional+Comments</guid>
                <author>Ashley Sheridan</author>
            </item>
            </channel>
</rss>
