- Web Components: an introduction, and two different approaches
- Using simulators to test in Safari for iOS
- Use retries to detect flaky tests in Playwright
- Lessons learned updating code that uses Web Audio
- Debugging JavaScript in iOS
- Eurobingo
- Get the VSCode ESLint plugin to read flat config files
- Whose dependency is it? (AKA who is making npm print warnings on install?)
- Upgrading to the new ESLint config
- From zero to hello (world)
- Web Speech to Web Audio?
- 13 years later... I wrote a WordPress plug-in again!
- Automate personalising and sharing documents with Apps Script
- Was it `from XYZ import ABC` or was it `import ABC from XYZ`?
- "*Utils" classes can be a code smell: an example
- If using ES6 `extends`, call `super()` before accessing `this`
- Don't force users to install node modules globally when you can avoid that
- Extreme decoupling or all-as-a-module
- Notes on JSConf Australia 2016
- Notes on Live.JS at JSConf.Asia 2016
- One demo: two new bugs!
- A telegram from Singapore
- "Hands-On Web Audio" at London JS meetup
- Progressive enhancement does not mean "works when JavaScript is disabled"
- ColdFront 2016
- Article about the MediaRecorder API in .net magazine
- Web Animations: why and when to use them, and some demos we wrote
- Polyglot tracker module data decrunching, processing and crunching
- Why is Instagram not a website (yet)?
- A first for everything: Greece, Denmark, Norway
- Securing your self-hosted website with Let’s Encrypt
- Securing your self-hosted website with Let’s Encrypt, part 7: a workflow to migrate from HTTP to HTTPS
- Securing your self-hosted website with Let’s Encrypt, part 5: I have HTTPS, and now what?
- This is why C is a useful language
- And the NodeBots from London assembled
- From very annoying thing to slightly less annoying thing (and serial, and temperature sensors, and...)
- No more tap tap tap sounds: yay!
- On Loop 2015
- Some additional thoughts on the recent discussion about "frameworks vs vanilla JS" on mobile
- "An introduction to Web Components" at Manchester Geek Nights
- Possible futures, and nodebotting
- npmoffline: installing npm packages from the cache
- safeRegisterElement
- "The disconnected ensemble", at JSConf.Budapest
- Loading webcomponents-lite with require()
- Running a web server on the front-end
- Getting logs of your Firefox OS device
- Front-end mDNS: announcing and finding network services with JavaScript
- install-to-adb with command line tool!
- Enabling Wi-Fi direct on your rooted Firefox OS device
- jQuery UK 2015
- webpack vs browserify
- The bumpy road to learning Ember.js
- How to organise a WebGL event
- Hashing passwords with Bcrypt and node.js
- Assorted bits and pieces
- Why I check for length === 0
- Tools for the 21st century musician---super abridged dotJS edition
- Full Frontal 2014
- Native smooth scrolling with JS
- MozFest 2014 days 0, 1
- A VERY BELATED Mozilla Festival 2013 post
- Berlin Web Audio Hack Day 2014
- JSConf.eu 2014
- Extensible Web Summit Berlin: notes and thoughts on some of the sessions
- Extensible Web Summit Berlin 2014: my lightning talk on Web Components
- Functional JS, IRC servers and the internet of things
- Keeping clean
- Berlin Web Audio Hack Day
- "Just turn it into a node module", and other mantras Edna taught me
- Binding to an specific host with express.js
- Speaking at OneShotLondon NodeConf
- WAC - the Web Audio Conference
- window.devicePixelRatio
- Invest in the future: build for the web!
- tween.js r14
- On CSSConf + JSConf 2014
- Inspecting the Web Audio Vocoder demo with Firefox's new Web Audio inspector
- Speaking at LXJS 2014
- Speaking at GOTO Amsterdam 2014
- ScotlandJS 2014 - day 2
- ScotlandJS 2014 - day 1
- tween.js r13
- Speaking at WebVisions Barcelona 2014
- chat.meatspac.es - from fun experiment to global community
- What have I been working on? (2014/01)
- Compressing files with node.js
- LNUG meet-up January 2014
- npm scripts
- Goodbye 2013, hello 2014!
- "Mozilla's new technologies" (for Mozilla Power'13)
- Audio Tags: Web Components + Web Audio = ♥—the video!
- Speaking at CascadiaJS 2013: Audio Tags: Web Components + Web Audio = <3
- sorollet.js README refresh + Firefox compatibility
- tween.js r12
- Modules in PhantomJS
- HUMACCHINA preview
- Four to the floor JavaScript—the video!
- Speaking at GDG Barcelona DevFest 2013
- Building web apps, one Brick at a time!
- Speaking at Over The Air 2013
- Writing Web Audio API code that works on every browser
- "3400 miles below" now working with Firefox
- Speaking at JSConf EU 2013
- Hacked.io 2013
- input type="file" on Firefox OS 1.0.1
- to_the_beat // js
- Usable open source repositories
- Menciones aquí y allí
- Using Google Closure style + linter with Vim
- tween.js r10
- Using Syntastic+JSHint for Javascript syntax checking on Vim
- Tiga GameHackDays 2013, day 2
- Tiga GameHackDays 2013, day 1
- Scene.org awards discontinued, hence the demoscene must be dying... right?
- tween.js r9
- Firefox OS App day at London
- tween.js r8
- Please make the world a better place
- What will 2013 bring you?
- classList: easily manipulate CSS classes with plain JavaScript
- WIP 20121207 - synth patches
- WIP 20121204 - GUI galore
- WIP 20121127 - LISTEN, WORLD!
- WIP 20121122 - Making some noise!
- WIP 20121121
- WIP 20121120
- GDG DevFest Barcelona 2012
- MACCHINA II
- WIP 2012 09
- Mozilla Firefox for Mobile: where is the error console?
- This is how I UNroll
- WIP 2012 08 08
- "3400 miles below" spawns many source code repositories!
- 3400 miles below
- Frequency to note name
- tween.audio
- one page bookmarklet
- MACCHINA I
- radioworks
- First munit.js pull request!
- munit.js - microunit testing for javascript
- Mesh subdivision (2012 extended edition)
- WebGL VGA
- animated_gif.js
- London-New York (and back), via Hong Kong, Macau, Tokyo and San Francisco
- Some notes from Google DevFest Barcelona 2011
- Macabre Pool
- HTML5's custom attributes minigotcha
- File upload & drag and drop with HTML5
- Converting 'My Tracks' KML files for DDMS
- Event Listeners Day
- Misclinklanea, 3
- Misclinklanea, 2
- Misclinklanea
- ruby in the pub #4 :after
- Using jQuery's inline Datepicker within a form
- JSONP explained
- Proportionally resize images with CSS (and maybe JS)
- xplsv.tv embedding!
- jQuery and Rails (and getting rid of prototype)
- Array.indexOf in Internet Explorer
- Being understood
- BarCampLondon2 :after
- The lastminute WTF
- Assigning behaviour to page elements based on their class name
- Annoying sounds
- Noxtrum: cómo no hacer las cosas
- Lecciones web
- iberia, or how to lose your future clients