CINXE.COM

Notes archive · Mathias Bynens

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Notes archive · Mathias Bynens</title> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="/css"> <link rel="manifest" href="/.webmanifest"> <link rel="alternate" href="/notes.atom" type="application/atom+xml" title="Notes (blog) Atom feed"> <link rel="alternate" href="/notes.rss" type="application/rss+xml" title="Notes (blog) RSS feed"> </head> <body> <header> <h1><a href="/">Mathias Bynens</a></h1> <nav> <h1>Navigation</h1> <ul> <li><a href="/">Home</a></li> <li><a href="/notes">Archive</a></li> </ul> </nav> </header> <section id="content"> <h1>Notes archive</h1> <p>The idea is that every entry is like a note-to-self kind of thing. Every post is a mini-knowledge bomb I wish someone else had dropped before me, so I wouldn’t have had to research and write it.</p> <ul class="archive"> <li><a href="/notes/globalthis" rel="bookmark"><span class="tags"><b>JavaScript</b></span> A horrifying <code>globalThis</code> polyfill in universal JavaScript</a></li> <li><a href="/notes/prototypes" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>performance</b></span> JavaScript engine fundamentals: optimizing prototypes</a></li> <li><a href="/notes/shapes-ics" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>performance</b></span> JavaScript engine fundamentals: Shapes and Inline Caches</a></li> <li><a href="/notes/async-stack-traces" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>performance</b></span> Asynchronous stack traces: why <code>await</code> beats <code>Promise#then()</code></a></li> <li><a href="/notes/es-regexp-proposals" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> ECMAScript regular expressions are getting better!</a></li> <li><a href="/notes/es-unicode-property-escapes" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> Unicode property escapes in JavaScript regular expressions</a></li> <li><a href="/notes/es6-const" rel="bookmark"><span class="tags"><b>JavaScript</b></span> ES2015 <code>const</code> is not about immutability</a></li> <li><a href="/notes/javascript-identifiers-es6" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> Valid JavaScript variable names in ES2015</a></li> <li><a href="/notes/es6-unicode-regex" rel="bookmark"><span class="tags"><b>HTML</b> <b>JavaScript</b> <b>Unicode</b></span> Unicode-aware regular expressions in ES2015</a></li> <li><a href="/notes/gmail-plain-text" rel="bookmark"><span class="tags"><b>Email</b></span> Dear Google, please fix plain text emails in Gmail</a></li> <li><a href="/notes/pbkdf2-hmac" rel="bookmark"><span class="tags"><b>Bash</b> <b>cryptography</b> <b>JavaScript</b> <b>Python</b></span> PBKDF2+HMAC hash collisions explained</a></li> <li><a href="/notes/javascript-unicode" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> JavaScript has a Unicode problem</a></li> <li><a href="/notes/csp-reports" rel="bookmark"><span class="tags"><b>CSP</b> <b>PHP</b> <b>security</b></span> Processing Content Security Policy violation reports</a></li> <li><a href="/notes/json-dom-csp" rel="bookmark"><span class="tags"><b>CSP</b> <b>DOM</b> <b>HTML</b> <b>JavaScript</b> <b>PHP</b> <b>security</b></span> Hiding JSON-formatted data in the DOM with CSP enabled</a></li> <li><a href="/notes/xhr-responsetype-json" rel="bookmark"><span class="tags"><b>DOM</b> <b>HTTP</b> <b>JavaScript</b></span> Loading JSON-formatted data with Ajax and <code>xhr.responseType='json'</code></a></li> <li><a href="/notes/reserved-keywords" rel="bookmark"><span class="tags"><b>JavaScript</b></span> Reserved keywords in JavaScript</a></li> <li><a href="/notes/mysql-utf8mb4" rel="bookmark"><span class="tags"><b>MySQL</b> <b>security</b> <b>Unicode</b></span> How to support full Unicode in MySQL databases</a></li> <li><a href="/notes/dropquest-2012" rel="bookmark"><span class="tags"><b>Dropquest</b> <b>JavaScript</b></span> How to speedrun Dropbox’s Dropquest 2012</a></li> <li><a href="/notes/unquoted-font-family" rel="bookmark"><span class="tags"><b>CSS</b></span> Unquoted font family names in CSS</a></li> <li><a href="/notes/javascript-properties" rel="bookmark"><span class="tags"><b>JavaScript</b></span> Unquoted property names / object keys in JavaScript</a></li> <li><a href="/notes/javascript-identifiers" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> Valid JavaScript variable names in ES5</a></li> <li><a href="/notes/javascript-encoding" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> JavaScript’s internal character encoding: UCS-2 or UTF-16?</a></li> <li><a href="/notes/javascript-escapes" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>Unicode</b></span> JavaScript character escape sequences</a></li> <li><a href="/notes/minimal-html" rel="bookmark"><span class="tags"><b>HTML</b> <b>SGML</b></span> The smallest possible valid (X)HTML documents</a></li> <li><a href="/notes/ambiguous-ampersands" rel="bookmark"><span class="tags"><b>HTML</b></span> Ambiguous ampersands</a></li> <li><a href="/notes/javascript-prototype-notation" rel="bookmark"><span class="tags"><b>JavaScript</b></span> JavaScript <code>foo.prototype.bar</code> notation</a></li> <li><a href="/notes/element-attribute-notation" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b></span> HTML element + attribute notation</a></li> <li><a href="/notes/localstorage-pattern" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>performance</b></span> How I detect and use <code>localStorage</code>: a simple JavaScript pattern</a></li> <li><a href="/notes/etago" rel="bookmark"><span class="tags"><b>CSS</b> <b>DOM</b> <b>HTML</b> <b>JavaScript</b></span> The end-tag open (ETAGO) delimiter</a></li> <li><a href="/notes/unquoted-attribute-values" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>JavaScript</b></span> Unquoted attribute values in HTML and CSS/JS selectors</a></li> <li><a href="/notes/safe-css-hacks" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b></span> In defense of CSS hacks — introducing “safe CSS hacks”</a></li> <li><a href="/notes/oninput" rel="bookmark"><span class="tags"><b>DOM</b> <b>HTML</b> <b>JavaScript</b></span> Using the <code>oninput</code> event handler with <code>onkeyup</code>/<code>onkeydown</code> as its fallback</a></li> <li><a href="/notes/touch-icons" rel="bookmark"><span class="tags"><b>HTML</b> <b>iOS</b> <b>performance</b></span> Everything you always wanted to know about touch icons</a></li> <li><a href="/notes/ios-airplay-bookmarklet" rel="bookmark"><span class="tags"><b>HTML</b> <b>iOS</b> <b>JavaScript</b></span> AirPlay video support in iOS Safari — a bookmarklet</a></li> <li><a href="/notes/dropquest-2011" rel="bookmark"><span class="tags"><b>Dropquest</b> <b>JavaScript</b></span> Completing Dropbox’s Dropquest 2011 in 60 seconds</a></li> <li><a href="/notes/javascript-benchmarking" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>performance</b></span> Bulletproof JavaScript benchmarks</a></li> <li><a href="/notes/css-without-html" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>HTTP</b> <b>PHP</b></span> Using CSS without HTML</a></li> <li><a href="/notes/shell-script-mac-apps" rel="bookmark"><span class="tags"><b>Bash</b> <b>macOS</b></span> How to create simple Mac apps from shell scripts</a></li> <li><a href="/notes/settimeout-onload" rel="bookmark"><span class="tags"><b>HTML</b> <b>JavaScript</b> <b>performance</b></span> Using <code>setTimeout</code> to speed up <code>window.onload</code></a></li> <li><a href="/notes/css-escapes" rel="bookmark"><span class="tags"><b>CSS</b> <b>JavaScript</b> <b>Unicode</b></span> CSS character escape sequences</a></li> <li><a href="/notes/html5-id-class" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>Unicode</b></span> The <code>id</code> attribute got more <code>class</code>y in HTML5</a></li> <li><a href="/notes/xhtml5" rel="bookmark"><span class="tags"><b>HTML</b> <b>HTTP</b></span> The XML serialization of HTML5, aka ‘XHTML5’</a></li> <li><a href="/notes/safari-reader-html" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>iOS</b> <b>macOS</b></span> Thoughts on Safari Reader’s generated HTML</a></li> <li><a href="/notes/safari-reader" rel="bookmark"><span class="tags"><b>HTML</b> <b>iOS</b> <b>macOS</b></span> How to enable Safari Reader on your site?</a></li> <li><a href="/notes/html5-levels" rel="bookmark"><span class="tags"><b>HTML</b></span> The three levels of HTML5 usage</a></li> <li><a href="/notes/document-head" rel="bookmark"><span class="tags"><b>HTML</b> <b>JavaScript</b></span> The HTML5 <code>document.head</code> DOM tree accessor</a></li> <li><a href="/notes/showdown-javascript-jquery" rel="bookmark"><span class="tags"><b>HTML</b> <b>JavaScript</b> <b>jQuery</b></span> Using Showdown/PageDown with and without jQuery</a></li> <li><a href="/notes/html5-details-jquery" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>JavaScript</b> <b>jQuery</b></span> Bulletproof HTML5 <code>&lt;details&gt;</code> fallback using jQuery</a></li> <li><a href="/notes/css-hidden-elements" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>JavaScript</b></span> Displaying hidden elements like <code>&lt;head&gt;</code> using CSS</a></li> <li><a href="/notes/inline-vs-separate-file" rel="bookmark"><span class="tags"><b>CSS</b> <b>HTML</b> <b>JavaScript</b> <b>performance</b></span> Inline <code>&lt;script&gt;</code> and <code>&lt;style&gt;</code> vs. external <code>.js</code> and <code>.css</code> — what’s the size threshold?</a></li> <li><a href="/notes/rel-shortcut-icon" rel="bookmark"><span class="tags"><b>HTML</b></span> <code>rel=&quot;shortcut icon&quot;</code> considered harmful</a></li> <li><a href="/notes/async-analytics-snippet" rel="bookmark"><span class="tags"><b>JavaScript</b> <b>performance</b></span> Optimizing the asynchronous Google Analytics snippet</a></li> <li><a href="/notes/fresh-start" rel="bookmark"><span class="tags"><b>meta</b></span> A fresh start</a></li> <li><a href="/notes/apache-allowoverride-all" rel="bookmark"><span class="tags"><b>Apache</b></span> Apache’s <code>AllowOverride All</code> doesn’t do what you think it does</a></li> <li><a href="/notes/no-www-redirects" rel="bookmark"><span class="tags"><b>Apache</b> <b>HTTP</b> <b>PHP</b></span> Removing ‘www.’ from your URL</a></li> </ul> </section> <footer>© 1988–2025 Mathias Bynens</footer> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js" integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk" crossorigin></script> <script src="/js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10