EI rewrite my personal website every few years. It's a chance to learn the hot new technology of the time period, and to revamp the design with one I like more.In 2012, ejj.io was a few PHP files served with Apache, fronted by Cloudflare. I then rewrote it to be Golang fronted by Cloudflare in 2015.I attempted to rewrite it a few times, and ended up rewriting it in Express in July of 2018.Today, ejj.io is written and delivered completely with Cloudflare Workers. I realized while rebuilding my site that Cloudflare is now my website's entire stack, not just the way the content is delivered.tagged: cloudflarehosting11-02-2019
Hacking user perception to make your websites and apps feel fasterHacking user perception to make your websites and apps feel fastertagged: speedperception06-02-2019
James Shore: Don't Measure Unit Test Code Coverage01 Feb, 2019 If you're using test-driven development, don't measure unit test code coverage. It's worse than a useless statistic; it will actively lead you astray.tagged: coverage02-02-2019
VS Code Can Do That?All the best things about Visual Studio Code that nobody ever bothered to tell youtagged: vscode24-01-2019
Why I've stopped exporting defaults from my JavaScript modules - Human Who CodesI tweeted this after realizing that a lot of problems I had with JavaScript modules could be traced back to fights with default exports. It didn’t matter if I was using JavaScript modules (or ECMAScript modules, as many prefer to call them) or CommonJS, I was still stumbling over importing from modules with default exports. I got a variety of responses to the tweet, many of which questioned how I could come to this decision. This post is my attempt to clarify my thinking.tagged: es6default17-01-2019
Guidelines for URL DisplayThis document covers the best practices and pitfalls for building UI to display URLs in browsers and other apps. It covers the main categories of problems and challenges that we’ve seen in building Chrome. The guidance is intended to be generally applicable, but includes some Chrome-specific notes throughout.tagged: chromeurls11-01-2019
Creating Accessible SVGs | DequeScalable Vector Graphics (SVGs) have been around since 1999, but they have seen a real resurgence in use as design interactions have become more complex and CSS/JavaScript have replaced antiquated animation programs such as Adobe Flash.tagged: svgaccessibility10-01-2019
Polyfill serviceJust the polyfills you need for your site, tailored to each browser.tagged: polyfills07-01-2019
browserslist/browserslist: 🦔 Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-preset-envThe config to share target browsers and Node.js versions between different front-end tools. It is used in: Autoprefixer Babel postcss-preset-env eslint-plugin-compat stylelint-no-unsupported-browser-features postcss-normalizetagged: browserssupportbrowserlist07-01-2019
The Design Sprint Canvas | ClearleftWe’ve been running Design Sprints for a long time and value their ability to tackle challenges and fast-track processes. With this in mind, we’ve put together The Design Sprint Canvas - a handy tool that you can download to help guide facilitators and Sprint participants through the process.tagged: designdesign-sprint03-01-2019
Why Bandwidth Still Matters - DEV Community 👩💻👨💻I remember going to a local mall in New Jersey and walking into a T-Mobile store back in 2014. I had just moved to the US the previous year, and I was just about sick of using Google Voice to keep in touch with people. Opening my laptop just to send a text or make a call wasn't very convenient. Unfortunately, it was all I could afford to do because I didn't even have a working phone at that time. I was a recent graduate and very unemployed. So I said to myself that the minute I get hired for a job I was going to get myself a new phone.tagged: performancespeed01-01-2019
Troy Hunt: Beyond Passwords: 2FA, U2F and Google Advanced ProtectionBeyond Passwords: 2FA, U2F and Google Advanced Protectiontagged: 2fa01-01-2019
d3/d3-scale: Encodings that map abstract data to visual representation.Scales are a convenient abstraction for a fundamental task in visualization: mapping a dimension of abstract data to a visual representation. Although most often used for position-encoding quantitative data, such as mapping a measurement in meters to a position in pixels for dots in a scatterplot, scales can represent virtually any visual encoding, such as diverging colors, stroke widths, or symbol size. Scales can also be used with virtually any type of data, such as named categorical data or discrete data that requires sensible breaks. For continuous quantitative data, you typically want a linear scale. (For time series data, a time scale.) If the distribution calls for it, consider transforming data using a power or log scale. A quantize scale may aid differentiation by rounding continuous data to a fixed set of discrete values; similarly, a quantile scale computes quantiles from a sample population, and a threshold scale allows you to specify arbitrary breaks in continuous data. For discrete ordinal (ordered) or categorical (unordered) data, an ordinal scale specifies an explicit mapping from a set of data values to a corresponding set of visual attributes (such as colors). The related band and point scales are useful for position-encoding ordinal data, such as bars in a bar chart or dots in an categorical scatterplot.tagged: d3scales21-12-2018