<?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 Mike MacCana on Medium]]></title>
        <description><![CDATA[Stories by Mike MacCana on Medium]]></description>
        <link>https://medium.com/@mikemaccana?source=rss-663cc93604ea------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Zizs9CgsO7pDNF63AyH-lg.jpeg</url>
            <title>Stories by Mike MacCana on Medium</title>
            <link>https://medium.com/@mikemaccana?source=rss-663cc93604ea------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 10:00:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@mikemaccana/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[The train will only get further away from the station]]></title>
            <link>https://medium.com/@mikemaccana/every-moment-the-train-gets-further-away-from-the-station-26dd01398114?source=rss-663cc93604ea------2</link>
            <guid isPermaLink="false">https://medium.com/p/26dd01398114</guid>
            <category><![CDATA[the-web-platform]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[Mike MacCana]]></dc:creator>
            <pubDate>Wed, 08 Nov 2017 15:28:40 GMT</pubDate>
            <atom:updated>2017-11-08T17:13:39.762Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xJ5pEqk4_hO4nIFx-f0wXA.jpeg" /></figure><p>No, you don’t need to support Internet Explorer.</p><p>I was recently slaughtered on <a href="https://news.ycombinator.com/item?id=15490432">Hacker News</a> for stating that supporting IE was a waste for many businesses. The core of my argument was simple: <em>in the US and Europe, the effort warranted to support Internet Explorer is rarely worth the revenue supporting them brings in.</em></p><p>I can understand why you’d want to support IE, and for a very long time I supported making things work on old browsers. Rewind back to say, 2010 and you’d have found:</p><ul><li>Enterprises where IE is not only the default but the only browser</li><li>Most browsers updating statically, so ‘current -2’ seem reasonable</li><li>Polyfills possible to bring old browsers largely up to scratch with some minor effort</li><li>Basic stuff, like grid layouts and async workflow management, required tutorials, libraries and frameworks.</li></ul><p>Current browsers were ahead of old tech, but not by much. It wasn’t a huge amount of work to drag them along for the ride.</p><p>Fast forward to 2017:</p><ul><li>Chrome, Edge, Firefox and Safari are evergreen</li><li>Major changes to CSS, JS/ES, and the DOM have occurred that should — if you value your time — fundamentally change the way you build web apps.</li><li>Even slow moving corporates have AD-managed Chrome or Edge since half the internal products they purchase don’t work properly in IE. Yes really. Ask your lawyer and banking friends.</li></ul><p>Say you want to, lay out a web page. Your options fall into two broad categories:</p><ul><li>Use a combination of floats, clearfixes, overflow side effects, zoom side effects, wrappers and various other hacks</li><li>Lay it out using grid and flex</li></ul><p>If you’re doing the former, why are you optimising your workflow for something required by a tiny portion of browsers?</p><p>If you’re doing the latter, supporting <a href="https://github.com/jonathantneal/flexibility">IE9 requires a Polyfill</a>, <a href="https://philipwalton.com/articles/normalizing-cross-browser-flexbox-bugs/">IE10 and 11 require workarounds to fix a bunch of annoying bugs</a>.</p><p>Supporting each of those has their own issues in turn — asides from the polyfills, your CSS will have IE9-isms and IE10 and 11 workarounds. And every time you modify your layouts you’ll need to keep them updated. Maybe you could find or implement a system to do both of them and spend some time doing that.</p><p>OK but that’s just flexbox.</p><p>Cool, now repeat the entire process above for grid.</p><p>What about managing your JS/ES async workflow?</p><ul><li>Use endless `.then()` chains, `async.waterfall()`, or pyramid of doom callbacks.</li><li>Use `await`, getting return values from async functions just like they were sync ones</li></ul><p>If you’re doing the former, why are you optimising your workflow for something required by a tiny portion of browsers?</p><p>If you’re doing the latter, you can <a href="https://www.npmjs.com/package/babel-plugin-async-to-promises">transpile your ES2017 `await` to .then()</a>. You can set this up and it adds a little more time to your build process. But wait —<a href="https://github.com/babel/kneden/issues/13"> the plugin isn’t complete according to it’s authors and there are edge cases there too</a>.</p><p>So your build process is sometimes a bit slower, a bit more complex, and your code now has some extra stuff to handle the bit the polyfill couldn’t quite do, and comments explaining why they exist, and you spent some time researching what those workarounds were and occasionally you need a new workaround. Just like your grid polyfill. Just like your flex polyfill.</p><p>What about other stuff? At <a href="https://certsimple.com/">CertSimple</a>, verifying companies for <a href="https://certsimple.com/help/what-is-ev-ssl">EV HTTPS</a>, we use webcrypto and clipboard. The former is shimmable, but you lose real randomness so there’s no point. The latter is also shimmable, using, er, Flash. I don’t want to be starting, building for, or troubleshooting an unmaintained browser plugin.</p><p>The polyfills and effort and edge cases to support old browsers with current web dev practices is larger than it has ever been.</p><h3>How far away will the station be before you don’t care anymore?</h3><p>Chrome, Firefox, Edge and Safari users are on the train and continuously moving forward. Internet Explorer, and your 3 year old cell phone are left at the station. You may like this, or not like this, but it is indisputably the case.</p><p>The technical gap between the evergreen browsers and their occasionally-updated cousins is wider than it ever has been.</p><p>More importantly, <strong><em>that distance grows wider every moment</em></strong>.</p><p>There is no amount of effort that will give old browsers a good experience. Meanwhile, the time and effort you’re spending on this impossible task drains away from features for everybody who’s on the train.</p><p>Maybe you live outside the US and Europe, and you need to practice old-style CSS, ES and DOM development until IE becomes irrelevant in your country. OK, but it will be soon.</p><p>If you don’t stop supporting unmaintained browsers now, when will you? 2018? 2024? How far away does the train get before you stop wasting your time?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=26dd01398114" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Health (the band) — A Beginner’s Guide]]></title>
            <link>https://medium.com/@mikemaccana/health-the-band-a-beginners-guide-a0018b333b23?source=rss-663cc93604ea------2</link>
            <guid isPermaLink="false">https://medium.com/p/a0018b333b23</guid>
            <category><![CDATA[music]]></category>
            <category><![CDATA[health-band]]></category>
            <category><![CDATA[noise-rock]]></category>
            <category><![CDATA[noise]]></category>
            <category><![CDATA[new-music]]></category>
            <dc:creator><![CDATA[Mike MacCana]]></dc:creator>
            <pubDate>Fri, 23 Dec 2016 22:10:38 GMT</pubDate>
            <atom:updated>2016-12-23T22:29:48.850Z</atom:updated>
            <content:encoded><![CDATA[<h3>Health (the band) — A Beginner’s Guide</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rC3VvBQPFZSg-ks-iMDQsw.png" /></figure><p>If you know me personally you’ve probably heard me rant about how much I love Health and how discovering them was one of the musical highlights of this year. There’s an old Josh Homme quote<em>: “music should be heavy enough for the boys and sweet enough for the girls”</em> — Health combines whipping hard instrumentals with Jake Duzsik’s gentle vocals reminiscent of Neil Tennant from the Pet Shop Boys.</p><p><strong>Health has a HUGE diversity of styles, and the names of the songs never match the lyrics, here’s a few of my favourites:</strong></p><h4>Obvious walk-on song for when I give up entrepreneuring and become a stripper</h4><p>…also good on the way to the gym:<br><a href="https://open.spotify.com/track/4DGRyGjqrVYl7b0TMMnjUc"><em>Stonefist (love’s not in our hearts)</em></a><em><br></em>Thrashing, hard and sexy.</p><h4>OK but I just like gentle pop music and you said these guys sound the Pet Shop Boys</h4><p><a href="https://open.spotify.com/track/7wzgcpHHqKnZawfeeAacs6"><em>Life (I don’t know what I want)</em></a><em><br></em><a href="https://open.spotify.com/track/2E6n3rE6IW0b2Y7tZCrlAR"><em>L.A. Looks (It’s not love)</em></a></p><h4>Contemporary dance is in Studio 7</h4><p><a href="https://open.spotify.com/track/7p32ZhYzAOpwj7Pde7cOes"><em>Pain</em></a><br>Soft atmospheric and sad.</p><h4>Soundtrack to the next Gaspar Noe film</h4><p><a href="https://open.spotify.com/track/3OG1NqE2B0q4wR2CWs6l7a"><em>Salvia</em></a><em><br></em>Hard.</p><h4>Break up sex</h4><p>…just kidding, this is my other stripper song. <br><a href="https://open.spotify.com/track/7IFh9cfmoD6JPPcqzk4GbJ"><em>Tears (give up on us)</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a0018b333b23" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How I deploy node apps on Linux, 2015 edition]]></title>
            <link>https://medium.com/@mikemaccana/how-i-deploy-node-apps-on-linux-2014-edition-309d606219ca?source=rss-663cc93604ea------2</link>
            <guid isPermaLink="false">https://medium.com/p/309d606219ca</guid>
            <dc:creator><![CDATA[Mike MacCana]]></dc:creator>
            <pubDate>Mon, 06 Oct 2014 11:18:23 GMT</pubDate>
            <atom:updated>2016-01-29T12:25:57.572Z</atom:updated>
            <content:encoded><![CDATA[<h2>How I deploy node apps on Linux, 2016 edition</h2><p><em>A short, practical guide.</em></p><p>Want to run your own servers? Here’s how to deploy your node app on a modern Linux setup.</p><p>Here’s what we get:</p><ul><li>A stable (LTS) version of node, installed properly</li><li>A proper <strong>.service </strong>for your node app, with automated restarts, proper logging, and other good things.</li><li>Your app accessible on port 443 and/or port 80, but running as a regular user.</li><li>The ability to log in automatically using your SSH key, without needing a password.</li><li>The ability to deploy from git automatically using deploy keys, without needing a password</li></ul><p><strong>How I deploy node apps on Linux has been updated for 2016 and moved to my current </strong><a href="https://certsimple.com/blog/deploy-node-on-linux"><strong>blog at CertSimple</strong></a><strong>!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=309d606219ca" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>