Every time I hear Radiohead’s Videotape I grab back this first episode of Earworm, a series by Vox on music. It’s a brilliant analysis of the brilliant rhythm that drives this song.
Network based image loading using the Network Information API in Service Worker
Clever use of a service worker in combination with navigator.connection.effetiveType by Michael Scharnagl. The SW watches all requests for image resources, and rewrites them to high resolution versions in case navigator.connection.effetiveType is fast enough. Network based image loading using the Network Information API in Service Worker →
React Pattern: Centralized PropTypes
Cory House: In real apps with large objects, using PropTypes quickly leads to a lot of code. That’s a problem, because in React, you’ll often pass the same object to multiple components. Repeating these details in multiple component files breaks the DRY principle (don’t repeat yourself). Repeating yourself creates a maintenance problem. The solution? Centralize …
The Roles you Play in Life Determine Your Identity and Behavior
Very interesting read on how the tasks assigned to you – or even better: the tasks you chose to do – have an influence on your life. It all starts with an experiment ran in 1978 by Harvard psychologist Ellen Langer: In 1978, Ellen Langer, a Harvard psychologist, conducted an important study. She gave houseplants …
Continue reading “The Roles you Play in Life Determine Your Identity and Behavior”
Frappé Charts
GitHub-inspired simple and modern charts for the web with zero dependencies. The typical Github monthly activity map is also possible: import Chart from ‘frappe-charts/dist/frappe-charts.min.esm’; const heatmap = new Chart({ parent: “#heatmap”, type: ‘heatmap’, height: 115, data: heatmap_data, // object with date/timestamp-value pairs start: start_date, // A Date object (default: today’s date in past year) legend_colors: …
Login with root and no password on any mac running macOS High Sierra
This tweet is currently making rounds on Twitter: You can access it via System Preferences>Users & Groups>Click the lock to make changes. Then use "root" with no password. And try it for several times. Result is unbelievable! — Lemi Orhan Ergin (@lemiorhan) November 28, 2017 And yes, that actually works: enter root as a username, …
Continue reading “Login with root and no password on any mac running macOS High Sierra”
Better Cross-Platform React Native Components
Good article by Nick Wientge on correctly creating Cross-Platform React Native Components: In this post we’ll look at some tools and techniques we can use to make our components look right at home on both iOS and Android — without sacrificing code reuse. The article revolves around building a button, but with respect for how each platform …
Continue reading “Better Cross-Platform React Native Components”
End-to-end Tests that Don’t Suck with Puppeteer
Good introduction to using Puppeteer for your e2e tests: One of the most popular tools for e2e testing is Selenium, which is a tool for automating web browsers. Selenium sounds cool in theory: write one set of tests that run on all browsers and devices, woohoo! Jk. In practice, Selenium tests are slow, brittle, and …
Continue reading “End-to-end Tests that Don’t Suck with Puppeteer”
“A-Frame Tutorials” Video Series
Alexandra Etienne has published a 7-part video series on working with A-Frame on YouTube: A-Frame is a framework for building rich 3D experiences on the web. It’s built on top of three.js, an advanced 3D JavaScript library that makes working with WebGL extremely fun. The cool part is that A-Frame lets you build WebVR apps …
ESNext: Dynamically import ES modules with “dynamic import()”
UPDATE June 2019: This feature has now advanced to Stage-4 and will be part of the ES2020 Specification! 🎉 One of the recent ECMAScript proposals that landed in Chrome 63 is dynamic import(): Dynamic import() introduces a new function-like form of import, which allows one to import on demand. It returns a promise for the …
Continue reading “ESNext: Dynamically import ES modules with “dynamic import()””