<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Andy Bell on Medium]]></title>
        <description><![CDATA[Stories by Andy Bell on Medium]]></description>
        <link>https://medium.com/@andybelldesign?source=rss-dca915473cbb------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*61ZUZulGQMoVf4jIhVIKrA.jpeg</url>
            <title>Stories by Andy Bell on Medium</title>
            <link>https://medium.com/@andybelldesign?source=rss-dca915473cbb------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 22 May 2026 06:59:18 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@andybelldesign/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[My first month as a freelancer]]></title>
            <link>https://medium.com/@andybelldesign/my-first-month-as-a-freelancer-9f84680e38eb?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/9f84680e38eb</guid>
            <category><![CDATA[designer]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[developer]]></category>
            <category><![CDATA[freelancing]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Thu, 29 Nov 2018 11:50:59 GMT</pubDate>
            <atom:updated>2018-11-29T11:50:59.952Z</atom:updated>
            <content:encoded><![CDATA[<p><em>After a </em><a href="https://andy-bell.design/notes/43/"><em>brutal period of looking for a new permanent role</em></a><em> earlier in the year, I decided to make the leap into freelance. This was near-enough a month ago, so I thought I’d talk about what’s happened, what’s going to happen and how things have gone.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gFdCg2Y_Krf5gbvfAG1O-Q.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/7swaW1bYpWI?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Joshua Rodriguez</a> on <a href="https://unsplash.com/search/photos/field-notes?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>A perfect start</h3><p>I got an opportunity to <em>steal</em> a client (all above board) from my previous employers, <a href="http://nodividestudio.com/">No Divide</a> which gave me the cushion to go for freelance, full-time. I get on really well with the folks at <a href="https://scottsbasslessons.com/">Scott’s Bass Lessons</a> and will continue to work with them, long-term. Working with them has provided some much needed stability because it wasn’t the ideal time to start as a freelancer, with a 6 week old baby!</p><p>With those folks, I’m working on something I really enjoy working on: a brand new design system. With their design system, I’m helping them to roll a completely new look and feel out over their vast, existing platform. The first part of this work will go live in December when we launch their brand new homepage. This design system is also enabling their team to better visualise the available design assets, so they can make consistent and informed decisions. I’m really looking forward to seeing how this will pan out, long-term.</p><p>This contract has brought some long term stability, which has enabled me to not panic and snatch at any project that is available. It means I can cherry-pick projects that appeal to me, which is super empowering. It’s also enabling me to work with people and organisations that I truly admire.</p><h3>This is just the start</h3><p>I’m only a month in and that month has been <em>incredibly</em> busy. This is mainly down to doing a lot of client work, but also meetings — lots and lots and lots of meetings. I’ve been a bit too open with booking in meetings, of which most have been a complete waste of time. From now on, I won’t have a meeting until I know:</p><ul><li>What the project budget is</li><li>What the deadline is</li><li>If the company in question has shady links that are at odds with my own ethical standards</li></ul><p>I know I’m in a <em>very</em> privileged position to be operating like that, but it’s important that I make the most of my time.</p><p>I’m also not moaning about meetings because on one of those occasions, I spoke with someone who works on an incredible project that will help more women get into code. I very much look forward to helping them out in the future.</p><h3>Wrapping up</h3><p>This is only a little post to note down how my first month as a freelancer has gone and how I see it panning out in the future. I’m just about to embark on a <em>tonne</em> of work for a very exciting new client who I’ve been a big fan of for a lot of years. To say I’m excited would be a massive understatment.</p><p>I’ll finish up by recommending that if you are thinking about going freelance, or are already freelance, you read <a href="https://medium.com/@benhowdle/how-to-avoid-being-a-bad-contract-developer-7c0e4ba8a137">this post</a> by my pal, <a href="https://twitter.com/ben_howdle">Ben Howdle</a>. It’s incredibly pragmatic and has already gotten me through a few wobbles.</p><p>👋 If you want to work with me, I’m taking bookings for Q2 2019, so <a href="mailto:me@andy-bell.design">get in touch</a> 🚀</p><p><em>Originally published at </em><a href="https://andy-bell.design/wrote/my-first-month-as-a-freelancer/"><em>andy-bell.design</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9f84680e38eb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A dive into freelance life]]></title>
            <link>https://medium.com/@andybelldesign/a-dive-into-freelance-life-e0248a407935?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/e0248a407935</guid>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[design]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Mon, 05 Nov 2018 15:03:14 GMT</pubDate>
            <atom:updated>2018-11-05T15:03:14.161Z</atom:updated>
            <content:encoded><![CDATA[<p><em>After a rather lengthy, draining search for a new role, I’ve decided to give freelance design and development a go. I feel like this could be the best way for me to work on things that genuinely make a positive impact on people, while also maintaining work-life balance for my young family.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2b3Av37VM10Q4czDtG74uQ.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/MOLkSkknfNM?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Mickey O’neil</a> on <a href="https://unsplash.com/search/photos/cliff-dive?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><h3>Making work, work for me</h3><p>The gang and I at <a href="https://nodividestudio.com/">No Divide</a> are going on hiatus and I want to maintain the flexible work day that we had there. We very much made work fit around us, rather than the other way around and I was struggling to get a role in a company that worked like that.</p><p>I also want to maintain a sensible pace of work. We put a lot of consideration into what we did there and I’ve struggled to find companies that would be an exact fit on that front. It’s not to say we necessarily did things <em>better</em>, but it’s my preferred way of working, rather than shipping fast and frequently.</p><p>After a couple of ideal opportunities got away from me, I decided to go for the next best thing: independence. I actually started my career in the web as a freelancer, back in 2009, so it’ll be interesting to do it again with <em>much</em> more experience and <em>much</em> better contacts. I’ve learnt how <em>not</em> to do things in various agency roles too, so I feel pretty confident that I’ll do it right this time.</p><h3>The sort of work I’m looking for</h3><p>I’m really into progressive enhancement, user experience, accessibility and inclusivity. I’m multi-disciplined in that I work as both a designer and a developer. This means I can work from concept, right though to delivery if needed. Any projects that allow me to do that will be warmly received.</p><p>These are the sort of projects / contexts that I’d be most useful in:</p><ul><li>A new startup that needs help making an MVP or prototype</li><li>Design systems</li><li>Pattern libraries (design and/or build)</li><li>User experience research, design and prototypes</li><li>User interface design</li><li>HTML and CSS development</li><li>React, Vue and Node development</li><li>Accessibility audits and improvements</li><li>WordPress / Craft CMS / Perch CMS websites (design and/or build)</li><li>Jekyll / Hugo / Gatsby / Eleventy websites (design and/or build)</li><li>Development for agencies that need a bit of help to get projects done</li></ul><h3>Hire me</h3><p>I’m booking projects for 2019, so I’d love to talk. I prefer to work remotely, but I’m very happy to come to you for meetings and workshops.</p><p><a href="mailto:me@andy-bell.design?subject=Hi%20there%20👋%20I’d%20love%20to%20hire%20you">💌 Get in touch</a></p><p><em>Originally published at </em><a href="https://hankchizljaw.io/wrote/a-dive-into-freelance-life/"><em>hankchizljaw.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e0248a407935" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing the Button element]]></title>
            <link>https://medium.com/@andybelldesign/introducing-the-button-element-8daa76c911a9?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/8daa76c911a9</guid>
            <category><![CDATA[satire]]></category>
            <category><![CDATA[html]]></category>
            <category><![CDATA[ux]]></category>
            <category><![CDATA[css]]></category>
            <category><![CDATA[a11y]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Wed, 03 Oct 2018 10:45:53 GMT</pubDate>
            <atom:updated>2018-10-03T13:35:11.392Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/930/1*CwOJkiK-rhSjUyODyQ8VTg.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/ECxsxbjAmMY?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Kelly Sikkema</a> on <a href="https://unsplash.com/search/photos/button?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>How many times have you thought to yourself something like this?</p><blockquote><em>“As much as I love making </em><em>&lt;div&gt; elements buttons, it</em>’<em>d be great if there was an npm package that I could install that would give me keyboard events and focus.”</em></blockquote><p>Think no more, because I have exciting news. There’s a <em>native</em> element called a &lt;button&gt;, and I’m here to talk about it with you today.</p><h3>A what now?</h3><p>A &lt;button&gt; gives you everything you want out of the box:</p><ul><li>It’s focusable</li><li>If you attach a click event, you get keyboard events for ✨FREE✨</li><li>A screen reader will announce it appropriately</li><li>It’s primary function is not dividing content, it’s actually an interactive element</li></ul><p>Best of all, it’s already in <em>every</em> browser!</p><h3>Oh, these are hard to style, though</h3><p>Ah yes, the primary reason we find lots of &lt;div onClick={this.myFunction}&gt; in our hot-framework.js codebases is that buttons are tough to style, apparently. What if I told you that a few of lines of CSS will make it look like a standard element, though?</p><pre>button {<br>    display: inline-block;<br>    border: none;<br>    margin: 0;<br>    padding: 0;<br>    font-family: sans-serif; /* Use whatever font-family you want */<br>    font-size: 1rem;<br>    line-height: 1;<br>    background: transparent;<br>    -webkit-appearance: none;<br>}</pre><p>Pretty neat, huh? Wanna see it in action? No build steps required, my friend — <em>just</em> use some HTML and CSS 🎉.</p><p>Here’s a demo in CodePen for convenience:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodepen.io%2Fhankchizljaw%2Fembed%2Fpreview%2FOBMxeR%3Fheight%3D600%26slug-hash%3DOBMxeR%26default-tabs%3Dcss%2Cresult%26host%3Dhttps%3A%2F%2Fcodepen.io%26embed-version%3D2&amp;url=https%3A%2F%2Fcodepen.io%2Fhankchizljaw%2Fpen%2FOBMxeR%2F&amp;image=https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fi.cdpn.io%2F174183.OBMxeR.small.1550029b-9999-4ed9-bc7e-c507bcf8758d.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/89215e000fbca7db93bc93bee528558f/href">https://medium.com/media/89215e000fbca7db93bc93bee528558f/href</a></iframe><p>Are you fan of using JavaScript to style your elements? Here’s an object that you can steal:</p><pre>const buttonStyles = {<br>    &#39;display&#39;: &#39;inline-block&#39;,<br>    &#39;border&#39;: &#39;none&#39;,<br>    &#39;margin&#39;: &#39;0&#39;,<br>    &#39;padding&#39;: &#39;0&#39;,<br>    &#39;font-family&#39;: &#39;sans-serif&#39;,<br>    &#39;font-size&#39;: &#39;1rem&#39;,<br>    &#39;background&#39;: &#39;transparent&#39;,<br>    &#39;line-height&#39;: &#39;1&#39;,<br>    &#39;-webkit-appearance&#39;: &#39;none&#39;<br>};</pre><h3>Wrapping up with serious note</h3><p>Although there are elements of satire to this post, it’s got a really important message. You get so much for free by using appropriate HTML elements. Sure, they can be a pain in the butt to style, but the tradeoff is minimal — especially when they’ll make the overall user experience <em>much</em> better. Don’t make users suffer for your personal convenience.</p><p>Hopefully with the above styles, or even a <a href="https://codepen.io/hankchizljaw/details/Vxpjvo/">more detailed version like this one</a>, you’ll consider using &lt;button&gt; elements instead of &lt;div&gt; elements for buttons in your apps and websites. I also recommend that you look at the <a href="https://davatron5000.github.io/a11y-nutrition-cards/#button">A11y Nutrition Card</a>, by <a href="https://daverupert.com/">Dave Rupert</a> to make sure you’re meeting accessibility standards.</p><p>We’re all in this together to make our user’s lives easier because that’s the real priority.</p><p><em>Originally published at </em><a href="https://hankchizljaw.io/wrote/introducing-the-button-element/"><em>hankchizljaw.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8daa76c911a9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The power of progressive enhancement]]></title>
            <link>https://medium.com/no-divide/the-power-of-progressive-enhancement-98738766b009?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/98738766b009</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[css]]></category>
            <category><![CDATA[progressive-enhancement]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[user-experience]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Mon, 13 Aug 2018 11:21:01 GMT</pubDate>
            <atom:updated>2018-08-13T11:21:01.377Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N-J_ZxdcU_CNXpU2Y6C3VA.jpeg" /><figcaption>A person typing on a low-powered laptop computer. Photo by <a href="https://unsplash.com/photos/yFbyvpEGHFQ?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">John Schnobrich</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Back in July, I launched a handy web app called <a href="https://mybrowser.fyi">My Browser</a>. The premise was simple: generate a detailed report about a user’s web browser and create a URL to make sharing that report easy. In less than two months, <a href="https://mybrowser.fyi">My Browser</a> generated an impressive <strong>25,000</strong> reports. That’s an average of <strong>1,250</strong> uses a day!</p><p>It’s become much more successful than I ever imagined, but why? This wasn’t a particularly new idea. Similar products and websites exist, so what is it that made <a href="https://mybrowser.fyi">My Browser</a> different? I believe the answer is <em>progressive enhancement</em>. I took a gamble when I changed up my build approach, and I’m very happy I did.</p><p>I’ve decided to share some of the useful things I’ve learned along the way, in the hope that you’ll benefit and feel inspired to consider progressive enhancement as a concept too.</p><h3>Improvement by simplification</h3><p>Without a doubt, building <a href="https://mybrowser.fyi">My Browser</a> progressively paved the way towards a simpler future and longer lifespan for this app. Not only do I have a very maintainable codebase to work with, but I have one that can also grow very easily.</p><p>Building progressively means that I’ve avoided the need for a bunch of fixes and polyfills for older browsers. If something isn’t supported then the app provides a simpler method.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GML-gS1uXZHrEOh_cb01Lg@2x.png" /><figcaption>The diagram that’s often used as an analogy for ‘minimum viable product’ could also be used as an analogy for ‘minimum viable experience’</figcaption></figure><p>The above figure is often used to demonstrate a minimum viable product, but I think it can also be used to demonstrate a <em>minimum viable experience</em>. The skateboard may be a little slower, but it doesn’t stop the user getting to where they want to go. So, if the user’s browser doesn’t support JavaScript or modern CSS then it doesn’t break, it presents the default experience instead: a button which instructs the user to generate a report. The user will experience a very similar process, but has to perform one extra click.</p><p>The beauty of this approach is that the site doesn’t ever appear broken and the user won’t even be aware that they are getting the ‘default’ experience. With progressive enhancement, every user has <em>their own</em> experience of the site, rather than an experience that the designers and developers <em>demand</em> of them.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9FuiVJoEGciBO6Rv4A6dYg@2x.png" /><figcaption>The default experience on <a href="https://mybrowser.fyi">My Browser</a></figcaption></figure><p>It was crucial to have this default performance in place, because if this reporting tool refused to report, it would become totally useless. It needs to perform one job and to perform it well, and it needs to be supported in all browsers.</p><h3>import { whoKnows } from ‘black-box’;</h3><p>For some reason, the progressive enhancement approach seems to be surprisingly uncommon in our industry. So, for contrast, let’s explore a more popular but more prone-to-headaches build concept.</p><p>A much more common build approach is to throw dependencies at a project until the singular experience works on every browser. This can be very time consuming and frustrating, and often results in a proud declaration that you “no longer support IE!”, usually on Twitter.</p><p>Now, I can’t shame others without shaming myself — I’ve done that many times — and it’s only through experience and a solid foundation of skepticism for what’s “hot” that I’ve been kept on the fringes of that group.</p><p>I put it down to ever-increasing experience and associating myself with sensible, pragmatic figures in the industry that I’ve now begun to appreciate progressive enhancement as the de facto way to build things, instead of an evergreen approach.</p><h3>A reminder that it’s okay to change your default</h3><p>I’ve always been very skeptical of frameworks, especially heavy-duty ones. I appreciate that frameworks like <a href="https://reactjs.org">React</a> are very popular and useful but I think they should be used where necessary, rather than used by default.</p><p>Even Netflix, who are famously <em>very</em> into React, have talked about how rolling out a vanilla JavaScript homepage saw <a href="https://twitter.com/netflixuie/status/923374215041912833?lang=en">huge performance improvements</a>. I single out React here because more commonly than not, the single default HTML element that’s rendered inside the &lt;body&gt; tag is a &lt;div id=&quot;root&quot;&gt; element. This means that unless that big ol’ bundle arrives in one piece, you aren’t going to get any experience whatsoever.</p><p>Luckily there are methods such as server-side rendering, otherwise known as universal or isomorphic apps, that can help introduce a more progressive workflow.</p><h3>Pixel perfection is becoming more difficult</h3><p>As an industry, myself previously included, we are infatuated with this concept of pixel-perfect display for every browser. As <a href="https://adactio.com/">Jeremy Keith</a> suggests in <a href="https://resilientwebdesign.com">Resilient Web Design</a>, this is in-fact a collective, consensual hallucination, an artefact of the PSD-to-HTML desktop-only era of web design. We often felt the need to painfully hand-craft our websites to look beautiful, even in IE6. The problem now is that there’s so much variation these days, not just with browsers, but with devices, operating systems and connection speeds, so it’s impossible to be pixel perfect every time.</p><p>Another thing we seem to forget is that there’s a huge amount of fragmentation, particularly in the most popular mobile operating system around — Android — which, at the time of writing, <a href="http://gs.statcounter.com/os-market-share/mobile/europe">has over 70% of the mobile market share</a>.</p><p>We throw so much weight at trying to make our websites look the same in every browser that a lot of unnecessary bloat hangs around for way longer than it should. Tools like AutoPrefixer, heavy-duty resets and 960px 12 column grid systems have become bloat, just when newer, native, dedicated solutions like CSS Grid drop <a href="https://caniuse.com/#feat=css-grid">with massive support</a> and no vendor prefixes (if you ignore Microsoft’s early prototype).</p><h3>A modern approach to CSS</h3><p>I decided to make a big change in my own approach to CSS for <a href="https://mybrowser.fyi">My Browser</a>. I wanted to reduce weight and complexity. I chose to go completely ‘vanilla’, which differs to my usual preference of using Sass.</p><p>Don’t get me wrong, I love Sass and periodically <a href="https://css-tricks.com/using-sass-control-scope-bem-naming/">write about it</a>, but I’ve had a theory that it produces extra weight in the code <em>that I write</em>, mainly due to laziness and/or mild over-engineering. I was certainly made very aware of what was being output when forced to write the actual output code.</p><p>Writing vanilla CSS seemed to help me with progressive enhancement a lot. I don’t know if there’s an exact science there, but I definitely felt more <em>aware</em>. It’s also incredibly powerful compared to the CSS we had when Sass first arrived.</p><p>With ever-increasing support for <a href="https://caniuse.com/#feat=css-variables">Custom Properties</a>, a lot of the most common use-cases for Sass are already available to us and a progressive approach to these newer tools is handy to keep in mind too.</p><p>If you’re thinking “What even is progressively enhanced CSS?”. Let me show you:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodepen.io%2Fhankchizljaw%2Fembed%2Fpreview%2FmjQOje%3Fheight%3D600%26slug-hash%3DmjQOje%26default-tabs%3Dcss%2Cresult%26host%3Dhttps%3A%2F%2Fcodepen.io%26embed-version%3D2&amp;url=https%3A%2F%2Fcodepen.io%2Fhankchizljaw%2Fpen%2FmjQOje&amp;image=https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fi.cdpn.io%2F174183.mjQOje.small.71e20723-7948-4ab7-81dc-a3ad38b0689f.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/8c3f516f73acf7656dc5d870361d1928/href">https://medium.com/media/8c3f516f73acf7656dc5d870361d1928/href</a></iframe><p>This example of a CSS Grid powered layout will support <a href="https://caniuse.com/#feat=flexbox">92% of browsers</a>. The other 8% will get stacked columns. This snippet of CSS is tiny and there are no expensive polyfills and fallbacks. Not bad, eh?</p><p>This is the exact approach that was taken with <a href="https://mybrowser.fyi">My Browser</a> and that, along with modern, vanilla JavaScript, means that the total page size currently sits at <strong>85kb</strong>. It can probably also support browsers as far back as <strong>IE7</strong>.</p><h3>A modern approach to JavaScript</h3><p>Much like the approach with CSS, the JavaScript on <a href="https://mybrowser.fyi">My Browser</a> is also completely vanilla. I work with JavaScript frameworks every day, so I admit, going back to vanilla JavaScript was a daunting concept. Luckily, I’ve been learning about JavaScript’s native approach to componentisation: <a href="https://developer.mozilla.org/en-US/docs/Web/Web_Components">Web Components</a>, of which I have a separate <a href="https://webcomponents.club">learning journal</a>.</p><p>Working with Web Components feels very similar to working with <a href="https://vuejs.org">Vue</a> in a lot of senses, but the main similarity is that you can put your default experience within your custom HTML element, which gives you progressive enhancement for free.</p><p>Check out this example where the default experience is a simple heading and some paragraphs. If Web Components are supported, it transforms into a fancy toggle panel thanks to the magic of &lt;slot&gt;s and the <a href="https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM">Shadow DOM</a>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TZgBd0uMIp8xVAwfKTjRZg.gif" /><figcaption>A demo showing the default experience being a heading and some content, which switches up to a nice toggle panel, where Web Components supported</figcaption></figure><p>You can see the demo in action <a href="https://cbe18d8a31844dc49aaa38ac6a799a77.codepen.website">here</a> and the source code <a href="https://codepen.io/hankchizljaw/project/editor/ZvGEar">here</a>.</p><p>This approach to building <a href="https://mybrowser.fyi">My Browser</a> allowed me to only have to write a bit more server-side code to accommodate both fetch based requests and form based requests. Again, the user will likely have no idea that <em>their experience </em>differs from another person’s. And it enabled me to ship not just code with no polyfills and hacks, but also non-transpiled ES6 code.</p><p>Thanks to the declarative nature of HTML, I know that if the JavaScript fails to execute then the <em>default experience</em> of a form-based, single click button will be available to the user.</p><p>The main usage of Web Components on <a href="https://mybrowser.fyi">My Browser</a> is actually the <a href="https://mybrowser.fyi/report/5b6c160870ecf1001499ac2f">report view.</a> The default experience is a nicely styled representation of the JSON data that the app produces. If Web Components are fully supported though, the app automatically replaces this with a grid of nice looking icons and a more visually pleasing representation of the data. Again, this only required a few if statements.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*22-XBqJrzswLsf_3W5JzGA.png" /><figcaption>The default report view next to a progressively enhanced report view</figcaption></figure><p><a href="https://mybrowser.fyi">My Browser</a> is a very small and simple app, but it wasn’t only the small size that made the progressive enhancement possible, it was a change in my mindset…</p><h3>Let’s change how we think about Progressive Enhancement</h3><p>Progressive enhancement isn’t necessarily <em>more work</em> and it certainly isn’t a <em>non-JavaScript fallback</em>, it’s a change in how we think about our projects. A complete mindset change is required here and it starts by remembering that you don’t build websites for <em>yourself</em>, you build them for <em>others</em>.</p><p>There’s a common approach of “build for the best possible devices and browsers, then apply heavy-handed fixes just before go-live”. This usually results in said tests and fixes only happening at initial launch, once the issues have already been seen by many and have slowed down the experience.</p><p>An industry full of Apple Macs and high-speed fibre broadband certainly doesn’t help change this mentality, I need to emphasise this point: <strong>by having a high-speed connection, you are part of a privileged few, not the many.</strong></p><h3>For the many!</h3><p><a href="https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4">A recent article</a> by <a href="https://addyosmani.com/">Addy Osmani</a> (which I recommend that you read) brilliantly highlights how bloated JavaScript payloads can be a lot more detrimental than you think. Especially when you consider poor connections.</p><p>Shipping multiple megabytes of JavaScript can be incredibly damaging for low-powered devices because of the sheer amount of computing that’s required in order to parse and execute it. You may have guessed where I’m going with this — The progressive approach means that if your <em>premium experience</em> features lots of JavaScript, then at least your users will be able to interact with the <em>default experience</em> if their slow connection lets them down.</p><p>By creating a <strong>minimum viable experience</strong>, you’re creating a better experience for a lot more people than you might think you are.</p><h3>Smaller tools are nearly always better</h3><p><a href="https://mybrowser.fyi">My Browser</a>’s small size certainly helps. It’s very lightweight in that it only takes a few packets of data to fully load and it’s also progressive if those packets fail for some reason.</p><p>This has inspired me to release a new tool for managing state called <a href="https://github.com/hankchizljaw/beedle">Beedle</a>, which I won’t dwell too much on, but it gives you a lot of power to manage state in your application and is only around <strong>0.5kb in size</strong>.</p><p>We’re also working internally at <a href="https://nodividestudio.com">No Divide</a> on similar tools that will be equally as tiny. The micro-library approach is very appealing when you’re hyper-aware of your output bundle’s size — tiny tools can definitely be the way forward.</p><p>Popular frameworks like <a href="https://reactjs.org">React</a> and <a href="https://vuejs.org">Vue</a> are excellent for big applications, they are really helpful. We love Vue here at <a href="https://nodividestudio.com">No Divide</a>. This is certainly not a “don’t use big frameworks” post either, because as with most things in this industry, <em>it depends</em> on what<em> you’re doing</em>. You can also improve the performance of large frameworks with methods such as code-splitting. This <a href="https://developers.google.com/web/fundamentals/performance/optimizing-javascript/code-splitting/">excellent article</a> by <a href="https://www.jeremywagner.me">Jeremy Wagner</a> gives you heaps of knowledge to get you started.</p><p>An approach I would recommend that you consider is to be very aware of your add-ons and extra dependencies. Tools such as <a href="https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost">Import Cost</a> for <a href="https://code.visualstudio.com">VS Code</a> can really help with the decision making process, and might encourage you to use smaller libraries that have slightly less features than their popular counterparts.</p><p>Another approach that’s worth considering is: if you’re building something simple, maybe a large framework isn’t necessary. Libraries such as <a href="https://github.com/cferdinandi/reef">Reef</a> by <a href="https://gomakethings.com">Chris Ferdinandi</a> are really handy. I also strongly recommend using <a href="https://developer.mozilla.org/en-US/docs/Web/Web_Components">Web Components</a>.</p><p>At <a href="https://nodividestudio.com">No Divide</a>, we’re working on a small progressive web app to help people monitor their personal finances and that is being built in a progressively enhanced fashion with Web Components. We’re hoping it’ll be absolutely tiny and completely accessible to anyone!</p><h3>Wrapping up</h3><p>I hope that if you’ve not already started considering progressive enhancement, that this post has been a good source of inspiration for you. Changing your mindset is <em>really hard</em> and it’s something that we’re continually trying to improve at <a href="https://nodividestudio.com">No Divide</a>, constantly monitoring our own processes and improving them.</p><p>The benefits of progressive enhancement are incredible, so it’s really worth considering. Smaller, more considered payloads are only ever going to improve <em>everyone’s</em> experience, not just your own.</p><p>I love to talk about this over on Twitter where you can find me at <a href="https://twitter.com/hankchizljaw">@hankchizljaw</a>. You can also find the No Divide team at <a href="https://twitter.com/nodivide">@NoDivide</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=98738766b009" width="1" height="1" alt=""><hr><p><a href="https://medium.com/no-divide/the-power-of-progressive-enhancement-98738766b009">The power of progressive enhancement</a> was originally published in <a href="https://medium.com/no-divide">No Divide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing ‘My Browser’]]></title>
            <link>https://medium.com/@andybelldesign/introducing-my-browser-8149cb67a8a8?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/8149cb67a8a8</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[progressive-web-app]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[web-components]]></category>
            <category><![CDATA[progressive-enhancement]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Thu, 19 Jul 2018 18:55:07 GMT</pubDate>
            <atom:updated>2018-07-19T18:55:07.611Z</atom:updated>
            <content:encoded><![CDATA[<p>A new tool to make sharing information about a user’s environment simpler.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*L2RIumL75uuwQhdT.png" /></figure><p>Getting technical details from a bug report or support ticket is <em>hard.</em></p><p>Often, when a report of a weird bug on the front-end of a website or web app comes in, it’ll contain something like <em>“Feature X doesn’t work very well on Safari”</em> or <em>“The layout is odd on Firefox”</em>. The problem here is that there’s a plethora of Safari and Firefox versions and even more variation in operating systems.</p><p>This vague information often results in more questions that are hard to answer. It’s really difficult to extract relevant data from whoever reported the issue because you’ve normally got to explain in a lot of detail how to get it to you. I decided to make a little web app that does all of that for you, the moment that you land on the page.</p><p>There’s existing tools to extract browser information, but they could be better, so I decided to build “<a href="https://mybrowser.fyi/">My Browser</a>” to make everyone’s lives a little easier. I’ll spend some time in this post explaining what it’s all about.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6Z_zwqMJa_RdkIO5.png" /><figcaption>A screenshot of the My Browser app</figcaption></figure><p>I made “<a href="https://mybrowser.fyi/">My Browser</a>” to do one job and to do it well. Its job is to extract and present data about a user’s browser and environment. It takes the information, stores it, then provides an easy to share url that links to a report. That’s all it does and I’ve worked hard to make sure it does it as efficiently as possible.</p><p>I’ve put a lot of effort into making the user experience frictionless and sharing the generated report easy. This is done by providing clear and simple options that require little to no effort. In my opinion, that’s where other similar tools fall down. They’re great at gathering and presenting data, but sharing that data is clunky. I’ve often found that I’ve had to explain how to use these tools, which to me, defeats the object of their purpose.</p><p>A tool that causes more problems isn’t a very helpful tool.</p><h3>Progressive first</h3><p>Although the site is built with bleeding edge technology such as web components, it’s built with a progressive-first approach. This means that in order to get the best experience, you need to be on a modern browser, but to do the most basic function — reporting data, you can still do it by pressing a “generate report” button, which is the default state. The data can also be read, regardless of your browser.</p><p>The app enhances the user experience by detecting supported features and presenting their UI only where they are supported. It removes default and fallback UI elements at the same time. This means that a user on IE9 will get a very different experience to someone on Chrome, but they shouldn’t notice because the app already works well for them.</p><p>We’re given so much for free to make a progressively enhanced website or web app. We’ve got feature detection and @supports in CSS which means that “My Browser” ships with no polyfills, fallbacks or hacks like Autoprefixer. The app degrades gracefully instead.</p><p>This has been a very refreshing way to work that I’ve enjoyed a lot. The fact that the whole thing comes in around 25kb tells you how effective progressive enhancement can be for performance too.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*h3GMFZiXUrRP178V.png" /><figcaption>3 screenshots showing how the app enhances its user interface</figcaption></figure><h3>Privacy matters</h3><p>I’m very fortunate to be friends with some very smart and influencial people. Because of this, I shared an early version of “<a href="https://mybrowser.fyi/">My Browser</a>” with some of them for some initial feedback. I got some incredibly useful ideas and support which I’m endlessly thankful for. In particular, the amazingly talented <a href="https://twitter.com/laurakalbag">Laura Kalbag</a> reached out and gave me some very useful advice on privacy and how I was initially handling data.</p><p>Based on this help from her, changes were made and extra protection was added to make sure that any data stored on “<a href="https://mybrowser.fyi/">My Browser</a>” is completely anonymous and there’s no way that your browser can be fingerprinted by corporations or governments.</p><p>Privacy is so important to me and I’ll continue to work hard to make sure that all of the data that is collected is protected, transparent and anonymous.</p><h3>An evolving project</h3><p>What you see today on <a href="http://mybrowser.fyi/">mybrowser.fyi</a> is very much a minimum viable product. There’s plans to make it even more useful, which you can <a href="https://github.com/hankchizljaw/mybrowser.fyi-project/projects/1">see on the roadmap</a>. If you do think of something that will be useful, go ahead and log a feature request!</p><p>I also want everything to be transparent, even though the code isn’t open source. If you find a bug or issue, please go ahead and log it on the <a href="https://github.com/hankchizljaw/mybrowser.fyi-project/issues">public issue tracker</a>.</p><h3>Wrapping up</h3><p>Go ahead and try out <a href="http://mybrowser.fyi/">mybrowser.fyi</a> and see if it’ll be helpful for you and your team. If you find it useful, please share it with your network. It’ll be great if it makes a positive impact on as many teams as possible 🚀</p><p>If you’ve got any questions or comments, <a href="https://twitter.com/hankchizljaw">get in touch on Twitter</a>.</p><p><em>Originally published at </em><a href="https://hankchizljaw.io/wrote/introducing-my-browser/"><em>hankchizljaw.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8149cb67a8a8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Astrum: looking forward]]></title>
            <link>https://medium.com/no-divide/astrum-looking-forward-3e3973b08f62?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/3e3973b08f62</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[pattern-library]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[application-development]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Tue, 15 May 2018 09:48:52 GMT</pubDate>
            <atom:updated>2018-05-15T13:48:57.199Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AQYrSGOH5nsSTg9dTn-15g.png" /></figure><p>We’re very proud of <a href="http://astrum.nodividestudio.com">Astrum</a> and how it’s helped so many developers and designers create great pattern libraries. We’re also proud of how stable it’s been since we launched. In this post, I’ll discuss how we’re planning on doing some big updates to the <a href="https://vuejs.org">Vue</a> application that powers Astrum.</p><h3>Time has flown by!</h3><p>Internally, we’ve had a very busy period launching our own product, <a href="https://leeveapp.com">Leeve</a>, and also working very hard on client work. Time has flown by (I’ve been here 6 months already 😱) and with that, the technologies that we use to power Astrum have come a long way. There’s some amazing newer features of Vue that will work well for us. These new features have also encouraged a lot of discussion about Astrum.</p><p>These discussions have focused on how we see Astrum evolving into an even more useful tool. What is now possible with Vue simply wasn’t available when we first build Astrum 2 years ago.</p><p>We’ve come to the inescapable conclusion that we need to rebuild from the ground up.</p><h3>A rebuild of the application</h3><p>Suggestions from the community and our own ideas would benefit from better granular control of the content and data within the Astrum application.</p><p>One area that we want to tackle is <em>state</em>. Specifically, the centralisation and control of <em>state</em>. If you’re new to modern JavaScript frameworks, <em>state</em> is an abstracted layer of data that can either be contained within a little component, or shared between many components. Imagine the latter being like a notice board on the fridge. Everyone can see it, but only one person in the house can make changes to it. This keeps a level of predictability and stability, but also total transparency.</p><p>We use <em>state</em> like this in JavaScript applications to provide a single source of truth to all of our components. It also makes it much easier to test and debug a project, which is great for the application’s resilience. In our opinion, this will be a great core change to Astrum to enable more complex additions in <br>the long-term.</p><p>Because of this change in our approach to <em>state</em>, the new application structure will be centred around <a href="https://vuex.vuejs.org/en/intro.html">Vuex</a>. By abstracting <em>state</em> into its own system, we’ll be able to improve speed with a more asynchronous approach to loading components and content. We’ll also be able to toy with ideas such as implementing web sockets to help with live reload and a command-line based node-server.</p><p>With this in mind, we’re looking to abstract the logic from components as much as possible, to keep things focussed and hopefully, more maintainable. This should also open up opportunities to introduce different types of patterns, along with pattern-level <em>state</em> and icon systems.</p><h3>Work is already underway</h3><p>The rebuild has been discussed, planned and is currently underway. Because of this, we’ll gradually be doing housekeeping around the project in terms of pull requests and issues.</p><p>We really appreciate the efforts the Astrum community go to, but unfortunately, some of the pull requests and issues that don’t align with this new rebuild will be closed. This is mainly down to the fact that we don’t want to have to delete your work straight after merging it into the core. We think that would be unfair. We’ll also work on our contributing guide so there’s no animosity about contributing to Astrum. We want to be as transparent as possible about how people can help in the most effective way.</p><p>We’re going to start organising the projects section of the repository into smaller sprints that are well labeled. This will all begin once the rebuild is in-place though. We’ll communicate when these issues are ready to be worked on for those who are keen to get involved in the project.</p><h3>A note on backwards compatibility</h3><p>One thing we want to reassure the community on is backwards compatibility. Although we’re re-writing the core application—we won’t break existing instances of Astrum.</p><p>When you run astrum update you’ll get the new and improved Astrum with all the new features it provides, but everything you’d setup previously will just work as it did before.</p><h3>Thank you</h3><p>Lastly, we want to take this opportunity to thank the <a href="https://github.com/NoDivide/astrum/graphs/contributors">Astrum community</a> for all of their involvement over the last couple of years. The community helps to make this product as good as it is and our focus is and always willbe making Astrum both feature-rich and portable, so it can be dropped into any web project.</p><p>We’ll be periodically updating you all on the progress of the rebuild. As things progress, we’ll be able to let you all know when this will be ready to launch. For now though, we’ve got lots to do, so we’d best get cracking!</p><p>If you have any comments or questions about this rebuild, head over to this dedicated <a href="https://github.com/NoDivide/astrum/issues/166">GitHub issue</a>. You can also follow us on Twitter <a href="https://twitter.com/getastrum">@getastrum</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3e3973b08f62" width="1" height="1" alt=""><hr><p><a href="https://medium.com/no-divide/astrum-looking-forward-3e3973b08f62">Astrum: looking forward</a> was originally published in <a href="https://medium.com/no-divide">No Divide</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dev Pal: A Follow-Up]]></title>
            <link>https://medium.com/@andybelldesign/dev-pal-a-follow-up-24a7e0b25f77?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/24a7e0b25f77</guid>
            <category><![CDATA[patreon-people]]></category>
            <category><![CDATA[educational-technology]]></category>
            <category><![CDATA[mentorship]]></category>
            <category><![CDATA[junior-developer]]></category>
            <category><![CDATA[development]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Mon, 16 Apr 2018 08:41:21 GMT</pubDate>
            <atom:updated>2018-04-16T08:41:21.645Z</atom:updated>
            <content:encoded><![CDATA[<h4>Pushing it forward after surprising levels of success with a simple MVP</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IQaIps0jarxcSEAqJkqI_w.png" /><figcaption>The quick and dirty logo</figcaption></figure><p>Three weeks ago, while watching <a href="http://www.bbc.co.uk/programmes/b006t0bv">Countryfile</a> (I’m getting old), I came up with <a href="https://devpal.io">Dev Pal</a>. I wasn’t sure if it would do very well, so I made a very quick and dirty logo and an MVP which is powered by <a href="https://codepen.io/pro/projects">CodePen Projects</a> and <a href="https://crisp.chat">Crisp chat</a>.</p><p>I’ve been absolutely floored by how well it has done. So far, I’ve helped about <strong>80 people 😱</strong>. I honestly thought I would only ever help a handful of people, so this success has inspired me to look at pushing Dev Pal into something really helpful.</p><h3>A great success to build on 🎉</h3><p>Because the idea has been validated, I’m going to push some hard work into the project. I want to extend it to more than just a landing page with a third party chat interface, so this is what I’m going to do with it:</p><h4>Roll out a bespoke chat system</h4><p><a href="http://crisp.chat/">Crisp</a> has been great, but it’s a support tool, so it doesn’t fully fit the purpose of Dev Pal. I’m going to roll something out that’s less geared towards instant messaging and geared more towards full, immersive mentorship. Tools such as reactive JavaScript frameworks and <a href="https://vuex.vuejs.org/en/intro.html">state management libraries</a> will enable me to make something truly useful for this and I’ve already been playing with a proof of concept.</p><h4>Produce written teaching material</h4><p>I’m going to design and build a proper site using WordPress and Gutenberg, because I think it’ll be a great way for me to <a href="https://medium.com/@hankchizljaw/gutenberg-a-javascript-developers-perspective-601786ab8be4">practice what I preach</a> by getting back into working with the CMS, with its exciting new JavaScript setup.</p><p>With this new site, I’m going to write some foundation-level material to teach beginner developers some core skills. This will mainly be JavaScript orientated, but I’ll cover the whole front-end landscape where appropriate.</p><p>The aim here is to produce completely free content that’s kept up to date which can be consumed by anyone, at any time. Keeping the articles at a foundation level will hopefully create material that compliments the plethora of excellent teaching material already out there.</p><h4>Screencasts and maybe a podcast</h4><p>Folks seem to like video content for learning. I made a mini poll on Twitter to test the theory.</p><h3>Andy Bell on Twitter</h3><p>How do you prefer tutorial content to be served? (RTs appreciated for reach)</p><p>With this in mind, I think something really useful will be recording screencasts of me building out some core concepts and explain what I’m doing while I do it. Hopefully this will help and inspire some devs, because when they see how many mistakes I make and how I get stuck all the time, they’ll hopefully feel a lot better about themselves. This is <a href="https://css-tricks.com/some-recent-live-coding-favorites/">quite the trend</a> at the moment and it’s a trend I’m certainly becoming very fond of.</p><p>Another thing I think folks might find useful is hearing about some of my other pals who are also producing educational material. I think some sort of podcast might help with that.</p><h3>How can you help?</h3><p>A lot of work needs to be done and with that, there’s some material costs too. I’ve gone ahead and set up a <a href="https://www.patreon.com/hankchizljaw">Patreon</a> to try and help with them. I don’t want to have to rely on adverts or paywalls and I also don’t want to have to create premium content because I want Dev Pal to be accessible to as many people as possible, regardless of their financial situation.</p><p>I’d be over the moon if you could <a href="https://www.patreon.com/hankchizljaw">support Dev Pal on Patreon</a>. Even $1 a month would go a long way. If you represent a company, I’ve got a <a href="https://www.patreon.com/bePatron?c=1664688&amp;rid=2504676">special tier</a> that’ll get your logo on the new website too!</p><p>Let’s make Dev Pal great as a community 🙌</p><h3>Wrapping up</h3><p>There’s a lot of work to do, so there’s going to be a bit of time before anything is visible, because this is a side-project that compliments my full-time job. For now, the MVP will carry on doing what it’s doing: enabling me to help beginner developers, so tell all of your friends 🚀</p><p><em>Thanks for reading this follow-up. Dev Pal’s success is largely down to my pals sharing it with their Twitter followers. If you could do the same, that would be hugely appreciated </em>🤟</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fgiphy.com%2Fembed%2FHX3lSnGXZnaWk%2Ftwitter%2Fiframe&amp;display_name=Giphy&amp;url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FHX3lSnGXZnaWk%2Fgiphy.gif&amp;image=https%3A%2F%2Fi.giphy.com%2Fmedia%2FHX3lSnGXZnaWk%2Fgiphy.gif&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=giphy" width="435" height="294" frameborder="0" scrolling="no"><a href="https://medium.com/media/c64f9361afcdcb4ecab5d84d9d374dd2/href">https://medium.com/media/c64f9361afcdcb4ecab5d84d9d374dd2/href</a></iframe><h4>Useful links:</h4><p>My Twitter: <a href="https://twitter.com/hankchizljaw">@hankchizljaw<br></a>DevPal Twitter: <a href="https://twitter.com/yourdevpal">@YourDevPal</a><br>DevPal Site: <a href="https://devpal.io">https://devpal.io</a><br>Patreon Page: <a href="https://www.patreon.com/hankchizljaw">https://www.patreon.com/hankchizljaw</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=24a7e0b25f77" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A Pal for Junior Developers]]></title>
            <link>https://medium.com/@andybelldesign/a-pal-for-junior-developers-6528abef1792?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/6528abef1792</guid>
            <category><![CDATA[advice]]></category>
            <category><![CDATA[teaching]]></category>
            <category><![CDATA[junior-developer]]></category>
            <category><![CDATA[mentorship]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Mon, 26 Mar 2018 13:04:45 GMT</pubDate>
            <atom:updated>2018-03-26T13:12:43.529Z</atom:updated>
            <content:encoded><![CDATA[<h4>A service for providing mentorship and advice for folk getting their learn on</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IQaIps0jarxcSEAqJkqI_w.png" /></figure><p>I had this thought a week ago:</p><h3>Andy Bell on Twitter</h3><p>I&#39;m in a perpetual state of worry about how what a real front-end dev is, according to social media. I worry it&#39;ll put off some really awesome talent, because it looks like there&#39;s too much to learn. HTML, CSS, #a11y and JavaScript. The rest can be picked up as you need it.</p><p>I’ve been wondering how I can help folks who are learning front-end development for a while, and amongst a few ideas, this one stood out.</p><h3>Introducing Dev Pal</h3><p>I came up with the concept that if I created a landing page, someone could come along with a front-end development issue they were having, or a question about their career and I would be able to give them a pragmatic answer, or advice.</p><p>I offered similar on Twitter a couple of days ago:</p><h3>Andy Bell on Twitter</h3><p>Hello Pals. Just a note to say if you&#39;re learning front-end development and you need help with your CSS, HTML or JavaScript, hit me up - I&#39;ll give you a hand/advice. DMs are always open.</p><p>I thought something more sustainable may be more appropriate because Twitter has many downfalls in terms of engagement and community management.</p><p>I decided to knock-up a landing page with <a href="https://codepen.io/projects/">CodePen Projects</a> and integrate my new favourite support tool, <a href="https://crisp.chat">Crisp</a>.</p><p>I chose Crisp for a couple of reasons:</p><ul><li>It has incredible multi-language tools, such as live translate</li><li>It has great tools for blocking trolls</li><li>It has a lovely, lightweight, customisable UI</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-ru4enZUNFRPmEcwmcfvxA.png" /><figcaption>A screenshot of <a href="https://devpal.io">https://devpal.io</a> with Crisp hanging out in the corner</figcaption></figure><h3>A proof of concept to see how it goes</h3><p>I hope this is a good idea and I hope I can help some folk out. This MVP / proof of concept only took about 30 mins to put together, because I wanted to test the water and see how it went. It’s good to get something up and running to test my concept, without spending weeks building it, thanks to <a href="https://codepen.io">CodePen</a>.</p><p>It’d be awesome if you could share Dev Pal with your pals and let’s see if it works out. If it does, it’s certainly something I want to develop into an even more useful offering. If it doesn’t, it’ll be a shame, but at least I tried it out. Regardless — if I even just help one person, it’ll be totally worth it.</p><p>For now, here it is: check out <a href="https://devpal.io">https://devpal.io</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6528abef1792" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gutenberg: A JavaScript developer’s perspective]]></title>
            <link>https://medium.com/@andybelldesign/gutenberg-a-javascript-developers-perspective-601786ab8be4?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/601786ab8be4</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[opinion]]></category>
            <category><![CDATA[gutenberg]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[wordpress]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Sun, 18 Feb 2018 16:34:44 GMT</pubDate>
            <atom:updated>2018-02-18T16:42:50.350Z</atom:updated>
            <content:encoded><![CDATA[<p>The new WordPress editor is getting a mixed response, so I’m going to discuss it from a JavaScript developer’s perspective.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aeafQVBYXBWrG1TmUQ_-SA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/geNNFqfvw48?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Michał Parzuchowski</a> on <a href="https://unsplash.com/search/photos/bricks?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>If you’re in the WordPress community, you’ve probably been thinking and talking about <a href="https://wordpress.org/gutenberg/">Gutenberg</a> for quite a while now. There seems to be a real mix of feelings within the community which range from excitement to worry. Unfortunately, the latter seems to be more prominent at the moment.</p><p>A feeling of worry isn’t a surprise though. The WordPress development ecosystem hasn’t really changed over its lifetime. We’ve had big additions over the years such as <a href="https://codex.wordpress.org/Post_Types">Custom Post Types</a> and the incredible <a href="https://developer.wordpress.org/rest-api/">REST API</a>, but generally, it’s been the same old <a href="https://codex.wordpress.org/The_Loop">loop</a>. This is arguably one of the key reasons why Wordpress <a href="https://w3techs.com/technologies/details/cm-wordpress/all/all">powers around 30% of the internet</a>.</p><p>With a low barrier to entry, an approachable theme system and the famous 5 minute install, it’s easy to see why WordPress is so popular with developers from all ability levels. This is all potentially going to change though, because Gutenberg looks like it’s really gearing up to rock the boat.</p><h3>About my experience with WordPress</h3><p>Before we dive in, I thought it’d be useful to give you, the reader some context about my experience with WordPress.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*n5zr0sXRFr0M6efsYGJzPQ.png" /><figcaption>This is what WordPress looked like when I started with it. Image credit: <a href="https://commons.wikimedia.org/wiki/File:WordPress2.9.png">Wikimedia.org</a></figcaption></figure><p>I first picked up WordPress in 2010 when it was at about version 2.9 and I absolutely loved it. This feeling was stoked when I found <a href="https://digwp.com/">Digging Into WordPress</a> by <a href="https://twitter.com/chriscoyier">Chris Coyier</a> and <a href="https://twitter.com/perishable">Jeff Starr</a>, which helped me learn fast to deliver a client project which I’d massively over-promised on…</p><p>Over the years I’ve dipped in-and-out of the WordPress world, working both on custom themes for websites and maintaining other developer’s work, so I’ve kept in tune with the API changes and community.</p><p>You could say…<br>( •_•)<br>( •_•)&gt;⌐■-■<br><a href="https://media.giphy.com/media/JhJYK9TnxAbTO/giphy.gif">I’ve always been in the loop…</a><br> (⌐■_■)</p><p>Anyway…enough puns, let’s get cracking.</p><h3>What’s Gutenberg?!?</h3><p><a href="https://github.com/WordPress/gutenberg">Gutenberg</a> is an all-immersive editor that allows an author to build out their content in easy to manage blocks in an <em>almost</em> distraction free setting. The block-based setup means that they can easily edit and rearrange content with no knowledge of HTML whatsoever.</p><p>It brings great power to content-producers, which are the heart of WordPress. It’s always worth remembering that <a href="https://www.elegantthemes.com/blog/resources/biggest-websites-in-the-world-running-wordpress">WordPress’ largest sites</a> are generally article based, so enhancing the production of articles needs to be the focus. I think Gutenberg is going to be a dream for content producers on that front.</p><p>Gutenberg feels really familiar to me because I’m a huge fan of <a href="https://www.notion.so/">Notion</a>, which uses a similar, more advanced concept. It’s also similar to <a href="https://paper.dropbox.com">Dropbox Paper</a> and Medium. It’s certainly a trend in content production that’s being capitalised on by the core WordPress team.</p><p>But, even with all of this exciting innovation, Gutenberg is not going down well with some of the WordPress community.</p><h3>Understandable concerns</h3><p>The main theme I’m picking up with the negative comments about Gutenburg is:</p><blockquote>“What about our old sites? Why isn’t there an option to turn it off for them?”</blockquote><p>I totally get that, because I’ve done a lot of work with WordPress, of which some has been maintaining some <em>really</em> creaky sites. This in my experience is usually caused by a developer or team of developers throwing multiple plugins at the site to make it do what they want it to do.</p><p>I get why they do that though. The platform enables it.</p><p>When I first started working with WordPress, websites were very much header, content, sidebar and footer only. The platform supported that with ease. As the web has developed though, the introduction of plugins such as <a href="https://www.advancedcustomfields.com/">ACF</a> and <a href="https://visualcomposer.io/">Visual Composer</a> have stepped in to help support that evolution.</p><p>The use of these plugins has however, made for a pretty janky user experience on the CMS-end and really adds weight to the front-end if not used responsibly. Because of this, it totally makes sense that WordPress would introduce Gutenberg into the CMS to flip that experience back around.</p><h3>A change for me in custom WordPress development</h3><p>Theme and plugin development within the WordPress ecosystem has always been a pain point for me. I’m not very strong with PHP and have always worked with it out of necessity rather than choice. Because of this, I’ve never enjoyed rolling out custom themes and plugins for WordPress.</p><p>I’ve also never been the biggest fan of the WordPress front-end either. I much prefer setups like <a href="https://craftcms.com/">Craft CMS</a> and <a href="https://getkirby.com/">Kirby CMS</a> because they tend to stay out of the way of my markup a lot more. This opinion and working within certain tech stacks in my day-job has seen me existing away from WordPress for quite some time now and if I’m really honest: I’ve not missed it’s workflow too much.</p><p>That opinion is changing though, thanks to Gutenberg and the power it gives to me, a front-end developer.</p><h3>Modern JavaScript and design systems are suddenly first class citizens</h3><p>Gutenberg brings in a heavy reliance on JavaScript for custom block development. To a JavaScript developer like myself, this is a dream scenario. What’s even better is that structure of a custom block is reminiscent of modern frameworks, which make it instantly recognisable and above all, <em>attractive.</em></p><p>With a solid Webpack (or alternative) setup, we can be putting together custom blocks with ES6 and JSX. This is a world away from wrestling the jQuery-ridden spaghetti jungle of old and it’s a setup that’s making me want to come back to the WordPress community with arms-wide-open to give it a big hug. Gutenburg is more than a new editor because of this. In my opinion, it’s a movement.</p><h3>Better theme development</h3><p>This new infrastructure makes theme development more appealing to me too. I can see my template’s resembling something like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fQLYxEaWjCJPbDsowVhDtw.png" /><figcaption>An almost ridiculously lightweight template with only the WordPress loop</figcaption></figure><p>Mind blown, right? Abstracting the theme into blocks enables me to not work within the <em>classic</em> template system, which enables this sort of thing. This is also because Gutenberg’s block structure sits perfectly with component driven design systems, which is the way I love to work. This is true even for a small brochure site.</p><p>The patterns and components that I build with HTML and CSS can be translated into completely editable blocks of content by converting them into a compact, JSX driven component. This also means that the content producers have complete control with a tight style guide driven based system to work with which is incredibly easy to maintain.</p><p>With modern CSS and smart <a href="https://medium.com/@hankchizljaw/flow-and-rhythm-in-css-with-stalfos-e15c067de7df">strategies to control rhythm and flow</a> between components, there should be no reason that someone couldn’t fire up a new page and build it out from scratch. Importantly, this is done with all of the content being stored in <strong>one single column in one single table</strong>. Compared to the scattered and inefficient data-sets that custom field setups and plugins generate, this is massive in terms of performance and speed. Again, music to a front-end developer’s ears.</p><h3>Gutenberg should give WordPress its identity back</h3><p>From the outside, it’s seems like WordPress sites have been getting very bloated and very complex, both visually and technically. I understand that will largely be down to demand, but I can’t help think that it’s been pushed a bit <em>too </em>far at times.</p><p>With frameworks like Laravel around, it seems almost incomprehensible that someone would build something more complex than a content-based website with WordPress, but they do. I think this is contributing to an issue of a lack of identity where the lines between content management system and application framework are being blurred. This, in my opinion can have a negative impact to both new developers and “outsiders”, because it has an impact on searchable help content, such as within StackOverflow.</p><p>The way I see it with Gutenberg is that the WordPress core team have very much stuck a flag in the ground which screams <strong>content </strong>over anything else and they’ve produced one heck of a tool to push WordPress right back to the top with it too.</p><h3>I want to help</h3><p>So, aside from dumping my thoughts into this piece, I wanted to talk about how I hope that I can hopefully help the WordPress community in this transitional period. I’ve discussed the challenges of Gutenberg with a few friends who are working with WordPress daily about their worries and aside from legacy project issues, the main worry seems to relate to the modern JavaScript stack and the sudden reliance on it.</p><p>The modern JavaScript stack hasn’t made much ground in the WordPress world, which makes total sense based on the nature of WordPress development. I can only imagine how daunting some of the Gutenberg JavaScript stuff looks to someone who doesn’t work with that sort of structure on a regular basis too.</p><p>I hope to provide some remedy to this, because I’m going to create a reasonably in-depth tutorial on this stack and how you can work with it within the context of WordPress and Gutenberg. It’s currently being planned and revolves around custom block development, but starts by providing a primer to the modern JavaScript world to give developers a better core understanding.</p><p>Alongside this I have been planning a tutorial on developing a WordPress theme with Vue JS and the WordPress API. I’m going to pause that for a while so that I can push the former out as I think something related to Gutenberg will be more useful to the WordPress community. I do think a Vue JS based theme tutorial will provide some great knowledge to WordPress developers who are learning JavaScript though.</p><p>I think longer-term, some tutorials on custom theme development with custom Gutenberg blocks will be useful too. I think that’s a while off for now, but certainly being thought about.</p><p>If any of this stuff can even help just one WordPress developer get their head around this new situation, I’ll be super happy, so I’m looking forward to digging in.</p><p>For now though, stay tuned. I’ll report progress on <a href="https://twitter.com/hankchizljaw">Twitter</a> as and when it’s appropriate to do so.</p><h3>Wrapping up</h3><p>Even though some of my comments could be deemed as harsh, I make them with the best intentions. I love WordPress and its community because they gave me so much, early in my career. I just want to provide an alternative viewpoint on Gutenberg and also offer my help.</p><p>I imagine some developers feel like I did when Apple announced that they wouldn’t support flash anymore. It was a worrying time then and I totally feel your pain now. I was lucky enough to be able to pickup JavaScript and develop a more sustainable skillset. I hope I can help you folks do that too :)</p><blockquote>If you liked this post, give it some claps so it can reach others in the WordPress community. If you’ve got a comment, add a response or <a href="https://twitter.com/hankchizljaw/">hit me up on Twitter</a>.</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=601786ab8be4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Getting started with JavaScript linting]]></title>
            <link>https://itnext.io/getting-started-with-javascript-linting-804433fc06dc?source=rss-dca915473cbb------2</link>
            <guid isPermaLink="false">https://medium.com/p/804433fc06dc</guid>
            <category><![CDATA[beginners-guide]]></category>
            <category><![CDATA[eslint]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[learning-to-code]]></category>
            <dc:creator><![CDATA[Andy Bell]]></dc:creator>
            <pubDate>Thu, 15 Feb 2018 20:41:03 GMT</pubDate>
            <atom:updated>2018-02-19T09:36:23.160Z</atom:updated>
            <content:encoded><![CDATA[<p>A beginner’s guide to ESLint</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DncKcZ5E0UojjfNvFaOU-g.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/kr-jmsASg8M?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Nhu Nguyen</a> on <a href="https://unsplash.com/search/photos/mechanical-keyboard?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p><a href="https://www.linkedin.com/cws/share?url=https%3A%2F%2Fitnext.io%2Fgetting-started-with-javascript-linting-804433fc06dc"><em>Click here to share this article on LinkedIn »</em></a></p><p>Working with JavaScript can be one hell of a wild ride. These days, we’ve got some tools to help us make that ride a little less wild than it has been in the past. The modern JavaScript stack can be daunting to get into, so this post is designed to help you dip your toe into the linting water with a view to helping you better understand the plethora of more complicated articles out there on the subject.</p><p>The aim of the game with linting is to help you deploy better code into the wild. Used alongside testing, it can make a huge difference in preventing silly errors that can harm a user’s experience. It’s hard to get your head around initially, so let’s do some really high level stuff and focus only on the most basic elements, so you can see how it works. After that, you should hopefully be able to continue learning with that base knowledge you learned today.</p><p>Let’s dive in.</p><h3>Introducing ESLint</h3><p><a href="https://eslint.org/">ESLint</a> describes itself as <em>“The pluggable linting utility for JavaScript and JSX”.</em> I think that needs building on for this post, though.</p><p>To use an analogy — ESLint is like a parking warden. It’s relentless and pedantic, but as much as you want to hate it, you can’t because it helps to maintain order.</p><h4>But what does it do?</h4><p>You set some house-rules and ESLint will tell you if those rules are broken. You can enforce these rules in a number of ways, such as:</p><ul><li>You can run eslint your-filename.js in your terminal</li><li>You can attach it to your build setup such as Webpack or Gulp. ESLint can stop the build in its tracks if it hits an issue</li><li>You can set it up in your code editor so it constantly watches the files that you’re working on</li><li>You can set it up in a pre-commit hook, so that invalid code can’t be added to your repository</li></ul><p>Some of those scenarios are intense and you’re here to learn the basics, so let’s do exactly that and tackle the third point in that list. We’re going to learn how to get ESLint running with your code editor.</p><h3>Getting started</h3><p>The first thing we need to do is globally install ESLint on your machine with NPM. If you haven’t got Node or NPM installed, <a href="https://nodejs.org/en/download/">go ahead and do that first</a>.</p><p>Open up your terminal app and run the following:</p><pre>npm install -g eslint</pre><p>That command basically says <em>“Grab ESLint from NPM and make the </em><em>eslint command globally accessible on my machine”</em>.</p><p>Now that we’ve got it installed, we need to set our rules and we’ve got a couple of options available to us to do that.</p><p>The first option is navigate to your project in terminal by running:</p><pre>cd /the/path/to/your/project</pre><p>Once you are in there, run:</p><pre>eslint --init</pre><p>This will fire up a setup wizard which will either ask you questions about your project, scan your project or let you pick a popular template. This is great, but I think we’ll learn more with the second option.</p><p>This option is to add an .eslintrc file to your project root and fill it in.</p><p>An .eslintrc or .eslintrc.js file is a definition file for your linting rules. This works great because it keeps the eslint terminal commands clean and also creates a fully transparent setup for you and your team, which is really important when you’re enforcing a coding style and rules.</p><p>We’re already in our project directory from the command above, so let’s create an .eslintrc file:</p><pre>touch .eslintrc</pre><p>If you ran through the init wizard, you’ll want to clean up the generated file by running this command:</p><pre>rm .eslintrc.js</pre><p>Once the .eslintrc file is created, open it up and we’ll add some basic rules to it. Let’s start by adding one of my favourites. Add the following to your file:</p><pre>{<br>    &quot;rules&quot;: {<br>        &quot;no-unused-vars&quot;: &quot;warn&quot;<br>    }<br>}</pre><p>So, what we’ve added there is a basic rule that says: <em>“If there are any unused variables, present a warning”. </em>This is a great rule to get you started and well worth adding to your codebase. You can save a <em>tonne </em>in<em> </em>performance and file size<em> </em>by removing references to unused variables in your code.</p><p>Next, let’s add another rule before we move on to our editor integration. Add the following to our .eslintrc file, inside the “rules” section:</p><pre>&quot;quotes&quot;: [2, &quot;single&quot;, { &quot;allowTemplateLiterals&quot;: true }]</pre><p>This rule enforces a single quote policy on your JavaScript, unless you’re within a template literal. Pretty neat huh?</p><p>For reference, this is what your .eslintrc file should look like now:</p><pre>{<br>    &quot;rules&quot;: {<br>        &quot;no-unused-vars&quot;: &quot;warn&quot;,<br>        &quot;quotes&quot;: [2, &quot;single&quot;, { &quot;allowTemplateLiterals&quot;: true }]    <br>    }<br>}</pre><h4>Integrating our editor</h4><p>This step really does come down to your editor of choice, so here’s a list of links for some of the most popular editors. Go through the relevant one for you and then come back to carry on!</p><ul><li><a href="https://medium.com/@hpux/vim-and-eslint-16fa08cc580f">Setup Vim</a></li><li><a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint">Setup VS code package</a></li><li><a href="https://atom.io/packages/eslint">Setup Atom package</a></li><li><a href="https://github.com/SublimeLinter/SublimeLinter-eslint">Setup Sublime Text</a></li></ul><p>Now that your editor is configured, let’s put it all to the test. Create a file called hello.js in your project root.</p><p>Add the following code to hello.js:</p><pre>module.exports = function() {<br> <br>    var hello = &quot;Hello, world&quot;;<br>    var goodBye = &quot;Goodbye, pal&quot;;<br> <br>    return hello; <br>};</pre><p>Now, when you save, your editor should have given you two errors and a warning. This is because both of our rules that we set have been broken:</p><ul><li>Our strings are set with double quotes</li><li>The variable goodBye was never used in the function</li></ul><p>That was pretty straight-forward, right? Let’s fix the code to wrap up this little tutorial.</p><p>Replace the contents of hello.js with the following:</p><pre>module.exports = function() {<br> <br>    var hello = &#39;Hello, world&#39;;<br> <br>    return hello; <br>};</pre><p>When you save, the errors and warning should clear up because your code is now fully linted! 🎉</p><h3>Wrapping up</h3><p>You’ve gone from “WTF is ESLint?” to “I’ve got a pretty good idea about what’s what now”, which is great!</p><p>You should probably delve deeper and expand your .eslintrc file to be even more useful for your project. All we’ve added are some rules, so you should <a href="https://eslint.org/docs/user-guide/configuring">check-out the documentation</a> and go from there. If you want a basic example to look at, check out the one I added to the <a href="https://github.com/hankchizljaw/boilerform/blob/master/.eslintrc">Boilerform GitHub repository</a>, which I maintain.</p><p>You could also go back, delete your .eslintrc file and run the <br>eslint --init command again, now that you have a better understand of what’s going on.</p><p>The linting world is your oyster now!</p><blockquote>If you liked that post, give it some claps so it can reach others to help them get a handle on the basics of ESLint. If you’ve got a comment, add a response or <a href="https://twitter.com/hankchizljaw/">hit me up on Twitter</a>.</blockquote><blockquote>Happy linting!</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=804433fc06dc" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/getting-started-with-javascript-linting-804433fc06dc">Getting started with JavaScript linting</a> was originally published in <a href="https://itnext.io">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>