How Changing WebFonts Made Rubygems.org 10x Faster
WebFonts are awesome and here to stay. However, if used improperly, they can also impose a huge performance penalty. In this post, I explain how Rubygems.org painted 10x faster just by making a few...
301 redirects: a dangerous one way street (2012)
Best practice has it that when you move content around for whatever good reasons you have that you should do it using a 301 redirect.
Phishing attack against Lastpass
Updated 2016-02-04 : LastPass has removed the button from notifications and now requires email confirmation for all logins from new IPs . This substantially mitigates LostPass, but does not eliminate it.
The Controversial State of JavaScript Tooling
There have been many different blog posts on the “State of the Web” , problems people face around tooling, and similar-style musings of late. This article is about summarizing my thoughts on recent events. Rather than yet another rant about the state of web development, this piece aims to pour some thought into what…
Extracting city blocks from OpenStreetMap data
Extracting blocks within a city as GeoJSON polygons from OpenStreetMap data
On the modern web, ISPs are one of your threats (2015)
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Widespread XSS Vulnerabilities in Ad Network Code
For most of us, the title of this post may not be very surprising. Any time we allow 3rd party scripts to run on our sites, we effectively relinquish control of the code that executes on the client. This is particularly important when integrating ad network scripts since they are inherently more dynamic than most…
Upgrading from React 0.11.2 to 0.14.7 in 347 easy steps
Today I set out to the task of upgrading a set of views crafted with the React library. The upgrade was necessary because one part of a view using React stopped working in Chrome Version 48.0.2564.116 (64-bit). I don’t know why this happened, I didn’t find anything related to it and as it stands this was probably the…
Fixing JSON
I’ve edited a couple of the JSON RFCs, and am working on the design of a fairly complex DSL, so I think I can claim to have dug deeper in the JSON mines than most. We can easily agree on what’s wrong with JSON, and I can’t help wondering if it’d be worth fixing it.
JavaScript web apps considered valuable
Recalling best practices for web applications that make heavy use of client-side JavaScript.
An interactive way of blogging about JavaScript
blogging klipse javascript repl live examples code snippets
Frameworks Don't Make Much Sense
Frameworks are one of the hugest anti-patterns in software development. They're hard to learn. They limit your creativity. They increase your project's complexity and dependencies. They go out of business and get abandoned. You have to maintain and upgrade your code to match the latest framework versions for no good...
Rust for Web
RESTful API in Rust, impressions
Towards an Open Banking API Standard
Disclaimer: I am a member of the Open Banking Working Group (OBWG) and was involved in drafting the OBWG report. However, the thoughts and opinions presented here are strictly my own. The OBWG̵…
A Simple Explanation: VLC.js
The previous entry got the attention it needed, and the maintainers of the VLC project connected with both Emularity developers and Emscripten developers and the process has begun. The best example…
Faster DOM
There is a pretty good comment on Hacker News (of all places) by nostrademons explaining why the DOM is not slow . Basically, all the DOM mutation operations are pretty trivial. Inserting and removing nodes, moving them around, setting an attribute, etc. It’s layout that takes a while and layout can be synchronously…
Google Chrome 51 disables HTTP/2 on most Linux distros due to old OpenSSL
Chrome drops NPN for ALPN on May 31st, requiring OpenSSL 1.0.2+. CentOS, Debian, and most Ubuntu versions can't support it, breaking HTTP/2 for millions.
The target=“_blank” vulnerability by example
Instagram leaves its users open to a simple phishing attack
Malware in the browser: how you might get hacked by a Chrome extension
A case study of a Chrome extension that turned out to be some nasty botnet malware.