RSSAmplifier

Blog

Keith Cirkel

JavaScript Cyber Shepherd

keithcirkel.co.ukRSS feed ↗20 posts

Latest posts

Too Much Color

I've been working a lot on colours (or "color") in CSS, for csskit 's minifier. This gives me the unfortunate burden of now having Opinions™ about colours. I also built a minifier test suite in the hopes that the ecosystem can get smarter. The minifier tests are not a vanity project: csskit currently has the worst pass rate and fails in some rather bad ways. During this work, trying to minify…

Bad At Css

The wonderful people at nn1.dev invited me to talk at their January meetup. Below is the video of this: Powered by youtube embed video generator The slides are also available . But below is the blog-posty version: Bad At CSS I'm bad at CSS. It even says so on my GitHub profile . It hasn't always said that, as recently as 2024 I was just bad at JavaScript and HTML. It has taken me the past couple…

Joining Mozilla

Today marks my first day in a new role: the DOM Core team at Mozilla. If you've read my prior post titled 100 patches to 5 browsers in 18 months then maybe this isn't a surprise to you - or maybe it is! I should probably call out this line from that post: Am I looking for a job? The answer has always been no. I wasn't contributing to browsers in the hopes of being hired. I was doing it because I…

100 browser patches in 18 months

Over the last two years I've been increasingly contributing to web browsers. I recently made my 100th patch to browser engines, which I consider somewhat of a milestone. It's rewarding and enjoyable, and it's something others seem interested by, as I'm frequently asked about it. It seems to have even taken some browser engineers by surprise: what's my deal? Why all the contributions? Am I looking…

No time to learn React

I've been building websites for over twenty years now. I started freelancing in the very early 2000s as a teenager, building websites using XHTML, CSS and PHP. That's a long time. (Not that it's a contest; know many people who predate my experience and many who are far more accomplished given less time). It's a long time doing a thing. It's a lot of time honing a craft. Maybe I'll be doing it…

How I host websites

Working at BigTech™ can sometimes skew your view of the world (a surprise to very few of you). One example is seeing how Kubernetes can cope with the massive deployment scale of hundreds/thousands of servers and thinking to yourself that this is effectively required knowledge (and if not now it soon will be) which leads to adopting these technologies for projects that will never see millions of…

CSS Classes considered harmful

If you've ever so much as peeked behind the curtain of Web user interfaces before, you'll know what the class property is for. It's for connecting HTML to CSS, right? I'm here to tell you it's time for us to stop using it. Class names are an archaic system that serves as a poor proxy for your UI primitives, and worse they're co-opted in awkward ways which results in combinatorial explosion of…

JavaScript Template Literals are awesome

I had a recent discussion with one of the awesome developers at the FT - @bjfletcher . We were looking at how viable it would be to replace a templating language, like Handlebars with ES6 Template Literals, in some manner. Ben suggested it'd be a good idea to turn our discussion into a post, and here we are - with a click bait title and everything. So what are Template Literals ? How can they do…

JavaScript Proxies are awesome

In the third and final installment of my Metaprogramming in ES6 series - remember, those posts I wrote over a year ago and promised I wouldn't take ages to complete but did? In this last post, we'll be looking at possibly the coolest ES6 Reflection feature: Proxies. Those of you versed in my back catalogue will have already read my last post, when we had a look at the ES6 Reflect API , and the…

JavaScript Reflect is awesome

In my last post we had a look at Symbols , and how they add useful new metaprogramming features to JavaScript. This time, we're (finally!) going to talk all about Reflect. If you haven't read Part 1: Symbols , then I'd recommend you do. In the last post, I made a key point which I'm going to reiterate: Symbols are all about Reflection within implementation - you sprinkle them on your existing…

JavaScript Symbols are awesome

You've heard of ES6 right? It's the new version of JavaScript that is awesome in so many ways. I frequently wax lyrical about all of the amazing new features I keep discovering with ES6, much to the chagrin of my colleagues (consuming someone's lunch break talking about ES6 Modules seems to be not to everyone's liking). A set of great new features for ES6 comes in the form of a slew of new…

Use npm as a Build Tool

Update: I frequently get asked, considering this post is now years old, whether or not I still stand by the advice in this post, and whether new developers should use npm as a build tool. The advice still stands, and I believe developers should use npm as a build tool. Myself; I've been Gulp & Grunt free since 2013™. Should I ever change my stance on this, I will immediately update this post. Last…

Stop using Grunt & Gulp

If you're building a modern JavaScript application or website, there's a good chance you've seen the JavaScript Build Tool Landscape. The heavyweights of this world are Grunt and Gulp , although many , many others exist too . Grunt receives a whopping 30,000 downloads most days , and Gulp has a respectable 15,000 daily downloads . They must be doing something right, right? Build systems seem to be…

Load balancing Node.js

This month I started the second professional Node.js contract of my career - building a multinational news website. I love Node.js and I consider myself lucky to be working on huge websites that use it as a technology. Node.js, however, is still considered a "new" technology, and is an emerging technology to use in "enterprise" situations. The biggest problem large providers face is how to…

WTF is Schema.org

SEO has always been a bit of a black-hat science, hiring agencies to "do your SEO" is a minefield and you may just end up with a 2-bit operations who ask for money because they generated some XML using a free SiteMap Generator , or worse give you actively bad advice such as "use meta keywords" or "duplicate this paragraph on every page of your website". It's become so difficult to tell what is…

HTTP headers are wild

As part of a project I'm working on, I was doing research into HTTP headers. I couldn't really find any decent resources that summarised the differences of headers between browsers, so decided to just write my own. Then things… got out of hand. This is big, so before you get into this make yourself a brew, sit down and relax… I was considering splitting this into two articles, but then I quickly…

Do dates right - ISO8601

We’ve all had those tough conversations on how best to exchange dates between two systems: “is DD-MM-YYYY good for everyone?” “what about YYYY/MM/DD” “we could just use Epoch timestamps”… Each option is rife with problems; some don’t convey enough info, some are too ambiguous, and others are hard on the human eye. Compounding these difficulties are the myriad of standards that work across…

A world without IE6

It's no secret that developers across the globe resent Internet Explorer. It's disregard for standards are a burden, often requiring a parallel development effort just to cater for its inadequacies. Newer versions aren't much better, and in some cases exacerbate the problem. This year saw Internet Explorer 6 drop below 10% , and Google has dropped support for it ; and (perhaps most importantly)…

No one should use XHTML

Everyone is asking for it these days. Go onto freelance boards, talk to clients, even on job boards, clients & companies are requiring their developers to know XHTML. The problem is, XHTML isn't what everyone thinks it is, and that isn't going to change any time soon. Why Everyone Wants XHTML Back in the dark days of the web, developers were using HTML, and a lot were using it badly. HTML, like…

Swapping out LAMP

The LAMP stack is the backbone of the web these days - every hosting provider uses it, sometimes exclusively. Many think their only other option is a WIMA (Windows, ISS, MSSQL, ASP) but in fact there are a whole wealth of options to choose from. When you have the freedom to pick your own server environment, should you move away from LAMP? It's certainly a tried and tested platform, many of the top…