1<!doctype html><html data-current="home" lang="en-GB"><head><meta charset="utf-8"><title itemprop="name">Steve Workman's Blog</title><meta name="description" itemprop="description" content="The blog of Steve - Web* Developer"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Steve Workman's Blog"><meta name="twitter:description" content="The blog of Steve - Web* Developer"><meta name="twitter:site" content="@steveworkman"><meta name="twitter:creator" content="@steveworkman"><meta name="og:title" content="Steve Workman's Blog"><meta name="og:description" content="The blog of Steve - Web* Developer"><meta name="og:url" content="https://steveworkman.com"><meta name="og:site_name" content="The blog of Steve - Web* Developer"><meta name="og:locale" content="en-GB"><meta name="og:type" content="article"><meta name="article:section" content="Web Development"><meta name="article:published_time" content="2017-01-01T00:00:00.000Z"><meta name="article:author" content="Steve Workman"><meta name="article:tag" content=""><link rel="alternate" type="application/rss+xml" href="https://steveworkman.com/feed.xml"><link rel="me" href="https://webperf.social/@steveworkman"><link rel="me" href="https://techhub.social/@steveworkman"><meta name="viewport" content="width=device-width,initial-scale=1"><style>:root{color-scheme:light dark;--turkey:#fff0eb;--white:#fff;--blue:#1777af;--headingBackground:#bbdce8;--textColor:#282828;--visibleGrey:#ccc;
1--pageBackground:#fff;--articleBorder:#fff}@media (prefers-color-scheme:dark){:root{--turkey:#fff0eb;--white:#fff;--blue:#29b0ff;--headingBackground:#083444;--textColor:#f5f5f5;--visibleGrey:#ccc;--pageBackground:#333;--articleBorder:#2a2a2a}}*,:after,:before{box-sizing:border-box}body,html{color:var(--textColor);font-family:Avenir,Avenir Next,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;margin:0 auto;padding:0}header{grid-area:header}main{grid-area:main}aside{grid-area:aside}footer{grid-area:footer}body{background-color:var(--pageBackground);display:grid;grid-template-areas:"header header header" ". main main" ". aside aside" "footer footer footer";grid-template-columns:auto 3fr 1fr;grid-template-rows:auto 1fr auto auto;height:100vh;max-width:58em}@media screen and (min-width:750px){body{grid-template-areas:"header header header" ". main aside" "footer footer footer";grid-template-rows:auto 1fr auto}main{max-width:58em}}code,p,pre{line-height:1.5;width:100%}code{white-space:break-spaces}a[href],a[href]:visited{color:var(--blue)}a[href]:not(:hover){text-decoration:none}footer,header,main{padding:1em}main{margin:0 auto;max-width:100%;padding-bottom:2em}main :first-child,main>article :first-child{margin-top:0}pre{direction:ltr;font-size:14px;hyphens:none;margin:.5em 0;padding:1em;-moz-tab-size:2;-o-tab-size:2;tab-size:2;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}blockquote{position:relative}blockquote:before{color:var(--visibleGrey);content:"\201C";font-family:Georgia,Times New Roman,Times,serif;font-size:6rem;left:-2.5rem;position:absolute;top:-.5rem}header>em{display:block;font-size:2em;font-style:normal;font-weight:700;margin:.67em 0}header nav ul{list-style:none;padding:0}header nav ul :first-child{margin-left:0}header nav li{display:inline-block;margin:0 .5em}header nav li a[href]:not(:hover){text-decoration:none}header nav li a[data-current="current item"]{font-weight:700;text-decoration:underline}article{border-bottom:1px solid #eee;border-bottom:1px solid var(--articleBorder);margin-bottom:1em;padding-bottom:1em}article>h1,article>h2,article>header{background-color:var(--headingBackground);border-radius:.5em 0 0 0;font-size:2em;line-height:1.2;margin-bottom:.75em;padding:.25em .5em}article>h1>a[href],article>h1>a[href]:visited,article>h2>a[href],article>h2>a[href]:visited{color:var(--textColor)}article>header>h1{font-size:1.2em;margin-bottom:.25em}article>header>.subtitle{font-size:.8rem;margin-bottom:0}article>header>.subtitle>small{display:inline-block;width:50%}article>header>.subtitle>small:last-child{text-align:right}article img{display:block;margin-left:auto;margin-right:auto;max-width:100%;text-align:center}main>section>article>*{margin-bottom:.5em;margin-top:0}a[rel=tag],a[rel=tag]:visited{background-color:var(--pageBackgroun
1d);border:1px solid var(--pageBackground);border-radius:.25em;color:var(--blue);display:inline-block;font-size:.625em;height:2em;letter-spacing:.1em;line-height:2em;margin:0 .5em .5em 0;padding:0 .5em;text-decoration:none;text-transform:uppercase;vertical-align:text-top}a[rel=tag]:hover{background-color:var(--blue);border:1px solid var(--blue);color:var(--pageBackground)}a[rel=tag]:last-child{margin-right:0}ul.taglist{font-size:.8em}ul.taglist li{padding-bottom:.25em;padding-top:.25em}form{display:grid;padding:2em 0}form label{display:none}button,input,textarea{font-family:Avenir,Avenir Next,sans-serif;font-size:1rem;margin-bottom:1em;padding:1em;width:100%}input,textarea{border:1px solid #000}button{background-color:var(--blue);border:1px solid var(--blue);color:var(--white);cursor:pointer}@media screen and (min-width:768px){:root{font-size:1.1rem}}.pagination>ol{list-style:none;padding:0}.pagination>ol>li{display:inline-block;width:50%}.pagination>ol>li.previous{text-align:right}table.speaking{border:1px solid var(--turkey);border-collapse:collapse}table.speaking td,table.speaking th{padding:.25em}table.speaking thead>tr{background-color:var(--headingBackground);border-bottom:1px solid var(--turkey)}table.speaking th{text-align:left}table.speaking .label{background-color:var(--headingBackground);border-radius:8px;color:var(--textColor);display:inline-block;padding:4px 8px}</style>
1<script></script>
1<script src="https://paulirish.github.io/lite-youtube-embed/src/lite-yt-embed.js" async></script>
1<link href="https://paulirish.github.io/lite-youtube-embed/src/lite-yt-embed.css" rel="stylesheet">
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1UA-18282110-1
vendor: 11 bytes, line 1
1"></script>
1<script>
vendor: 134 bytes, lines 1-5
1window.dataLayer = window.dataLayer || []; 2 function gtag(){dataLayer.push(arguments);} 3 gtag('js', new Date()); 4 5 gtag('config', '
5UA-18282110-1
vendor: 3 bytes, line 5
5');
5</script>
5</head><body><header><em><a href="/">Steve Workman's Blog</a></em><nav><ul><li><a href="/" data-current="current item">Home</a></li><li><a href="/about/">About Steve</a></li><li><a href="/speaking/">Speaking</a></li><li><a href="/bookshelf/">CSS Bookshelf</a></li><li><a href="/office/">My Office Setup</a></li></ul></nav></header><main><section><article><h2><a href="/2025/fixing-netlify-lfs-issues/">Fixing Netlify LFS Issues</a></h2><p>I recently came back to my blog after many years of not posting for various reasons. I've used a combination of Github, Netlify and Eleventy to host my blog for a long time, and it worked really well. However, in September 2023, Netlify <a href="https://answers.netlify.com/t/large-media-feature-deprecated-but-not-removed/100804">announced that they were dropping support for Git LFS</a> because other people did it better.</p><p><a href="/2025/fixing-netlify-lfs-issues/">Read on...</a></p><p><time datetime="2025-10-18T23:00:00.000Z"><small>18 October 2025 by Steve Workman</small></time></p><p><a href="/tags/Learning/" rel="tag">Learning</a></p></article><article><h2><a href="/2022/how-i-learn/">How I Learn</a></h2><p>People appear to be in two different camps on the question of "how hard is coding today?". There's a group who keep on the cutting edge of technology (the GraphQL-using, framework-switching bunch who are currently talking up <a href="https://astro.build/">Astro</a>) and those who don't, or cannot, for many, many different reasons.</p><p><a href="/2022/how-i-learn/">Read on...</a></p><p><time datetime="2022-01-30T21:00:00.000Z"><small>30 January 2022 by Steve Workman</small></time></p><p><a href="/tags/Learning/" rel="tag">Learning</a></p></article><article><h2><a href="/2021/lessons-from-running-an-internal-technology-conference/">Lessons from running an internal technology conference</a></h2><p>Inside Maersk Technology, we have lots of communities of practice - like-minded individuals who solve problems with technologies. I run the front-end community and have done for about two years.<br>Over time, we've run regular calls, demonstrations and tech talks to help educate the community and keep us up to date with the latest trends. This time, I wanted to go bigger - to run a half day event where we could get lots of people presenting on the same day.</p><p><a href="/2021/lessons-from-running-an-internal-technology-conference/">Read on...</a></p><p><time datetime="2021-04-13T21:00:00.000Z"><small>13 April 2021 by Steve Workman</small></time></p><p><a href="/tags/Conferences/" rel="tag">Conferences</a></p></article><article><h2><a href="/2020/web-reading-list-for-may-2020/">Web Reading List for May 2020</a></h2><p></p><p>It's a strange old time. In the middle of lockdown, my wife and I were expecting our second child, though we weren't quite expecting her this early. Two and a bit weeks before her due date, our littlest one arrives and I down tools to help. It's been a wonderful few weeks that I won't forget.</p><p>It did catch us all off guard though, as I'd been expecting to be part of a least another week's worth of the tech world, and then there was MS Build after that, and loads more. So, as I still scrolled through Twitter whilst seeing if she'll sleep, here's what I think I've missed in the last three weeks.</p><p></p><p><a href="/2020/web-reading-list-for-may-2020/">Read on...</a></p><p><time datetime="2020-05-23T15:00:00.000Z"><small>23 May 2020 by Steve Workman</small></time></p><p><a href="/tags/JavaScript/" rel="tag">JavaScript</a> <a href="/tags/Reading List/" rel="tag">Reading List</a></p></article><article><h2><a href="/2020/bundle-analysis-deep-dive-how-to-remove-a-megabyte-of-code-from-your-app/">Bundle analysis deep-dive - how to remove a megabyte of code from your app</a></h2><p></p><p>Part of my role at the office involves helping teams to code in a standardised way. We enforce this through a wide variety of tools that correct as you write (<a href="https://eslint.org/">ESlint</a>) and those that check your work (unit tests, <a href="https://www.sonarqube.org/">Sonar</a>).</p><p>To make life even easier we have a design system to standardise our HTML and CSS, and a common library of components that implement the basics of the design system in VueJS web components. This makes it hard to get the basics wrong.</p><p>Whilst making a large update to how this library is structured and compiled, I moved the library build process to <a href="https://rollupjs.org/guide/en/">Rollup</a>. We had previously been publishing untranspiled JavaScript to apps that then had to transpile them themselves to meet our target browser support. This keeps bundle size minimal but can cause interoperability and portability problems, for example, configuring <a href="https://jestjs.io/">Jest</a> is much harder.</p><p>On release day, I did a demo in front of the whole company's VueJS dev community - and the Vue build process reports that my bundle is 2MB for first load - up from 270KB!</p><p><img src="/static/img/full-horror-bundle.jpg" alt="alt-text" title="Huge bundle, badly built" loading="lazy"></p><p>ð©</p><p>So, feeling bad that this has happened, and knowing that developers will start running into this on Monday morning, <a href="https://twitter.com/steveworkman/status/1251582993103233027">I start fixing it on Saturday night</a> - I mean, entertainment options are limited right now.</p><p></p><p><a href="/2020/bundle-analysis-deep-dive-how-to-remove-a-megabyte-of-code-from-your-app/">Read on...</a></p><p><time datetime="2020-05-07T15:00:00.000Z"><small>07 May 2020 by Steve Workman</small></time></p><p><a href="/tags/JavaScript/" rel="tag">JavaScript</a></p></article></section><nav aria-labelledby="my-pagination" class="pagination"><h3 id="my-pagination">See more posts</h3><ol><li class="next"><a href="/page/2/">Next page</a></li></ol></nav></main><aside><h2>Find me online</h2><ul><li><a href="https://techhub.social/steveworkman" target="_blank">Mastodon - @[email protected]</a></li><li><a href="https://www.instagram.com/steveworkagram/" target="_blank">Instagram</a></li><li><a href="https://www.github.com/steveworkman/" target="_blank">Github - steveworkman</a></li></ul><h2>Posts in other categories</h2><ul class="taglist"><li><a href="/tags/Browsers/" class="tag">Browsers (10)</a></li><li><a href="/tags/Conferences/" class="tag">Conferences (1)</a></li><li><a href="/tags/CSS3/" class="tag">CSS3 (14)</a></li><li><a href="/tags/Facebook/" class="tag">Facebook (3)</a></li><li><a href="/tags/Genesys/" class="tag">Genesys (1)</a></li><li><a href="/tags/Gigs/" class="tag">Gigs (1)</a></li><li><a href="/tags/Google Wave/" class="tag">Google Wave (1)</a></li><li><a href="/tags/Hiring/" class="tag">Hiring (2)</a></li><li><a href="/tags/HTML5/" class="tag">HTML5 (20)</a></li><li><a href="/tags/Interviewing/" class="tag">Interviewing (1)</a></li><li><a href="/tags/iPhone/" class="tag">iPhone (12)</a></li><li><a href="/tags/JavaScript/" class="tag">JavaScript (14)</a></li><li><a href="/tags/Learning/" class="tag">Learning (2)</a></li><li><a href="/tags/Microsoft/" class="tag">Microsoft (10)</a></li><li><a href="/tags/Mobile/" class="tag">Mobile (12)</a></li><li><a href="/tags/Node.js/" class="tag">Node.js (1)</a></li><li><a href="/tags/Off-topic/" class="tag">Off-topic (11)</a></li><li><a href="/tags/Performance/" class="tag">Performance (5)</a></li><li><a href="/tags/Projects/" class="tag">Projects (2)</a></li><li><a href="/tags/Rails/" class="tag">Rails (2)</a></li><li><a href="/tags/Ramblings/" class="tag">Ramblings (20)</a></li><li><a href="/tags/Reading List/" class="tag">Reading List (1)</a></li><li><a href="/tags/Sketchnotes/" class="tag">Sketchnotes (19)</a></li><li><a href="/tags/Speaking/" class="tag">Speaking (7)</a></li><li><a href="/tags/Steel-Software/" class="tag">Steel-Software (2)</a></li><li><a href="/tags/Usability/" class="tag">Usability (9)</a></li><li><a href="/tags/USE/" class="tag">USE (16)</a></li><li><a href="/tags/User Experience/" class="tag">User Experience (11)</a></li><li><a href="/tags/User Interfaces/" class="tag">User Interfaces (10)</a></li><li><a href="/tags/Web Design/" class="tag">Web Design (12)</a></li><li><a href="/tags/Web Standards/" class="tag">Web Standards (33)</a></li></ul></aside><footer><small>This content is © 2003-2023 Steve Workman and does not necessarily represent the views, strategies or opinions of my employer.<br>This blog is made with <a href="https://www.11ty.io/">Eleventy</a>.</small></footer></body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.