Jack Franklin
Using objects in jQuery's .css()
The JavaScript Module Pattern
An introduction to jQuery Deferreds
jQuery 1.7 Event Binding: .on() & .off()
JS WTF: 5 < 4 < 3
A jQuery Pub Sub Implementation
Testing with QUnit: Part 1
Scope and this in JavaScript
Grunt, a JS Command Line Tool
QUnit, PhantomJS and Mockjax
Exploring Backbone: Part 1
Beginning Node.js
A jQuery Plugin with Grunt & QUnit
Node.js: A Todo App with Express
A jQuery Plugin in CoffeeScript
A Pub Sub implementation in CoffeeScript
A JS Playground Update
Your own jQuery Deferreds
Introduction to JavaScript Objects
Conditional Loading with YepNope
Exploring Backbone.js - Part 2
Your First Polyfill
Node & Express Todo App: Redis
Package Management with Jam JS
Watch me Code Screencasts
A Site Update
Come and watch me speak
Introduction to RequireJS
Speaking at WDC 2012
Writing a Command Line Node Tool
nodefetch, a command line download tool
Essential JavaScript Script Loaders
Cross Browser Testing with bunyip
Hosting a Node app on Heroku
Five JavaScript Testing Libraries
Making your library AMD compliant
A New JS Playground Update
JavaScript MV* Frameworks
The new keyword in JavaScript
JS Command Line Tooling
2012 in Review
Node.js workshops, March, London
Talking RequireJS at TakeOff Conf
ECMAScript 5 Array Methods
Exploring Backbone.js - Part 3
The .net Awards
Custom jQuery Builds with Grunt
jQuery CSS Hooks
Moving to Jekyll
Refactoring DOM Heavy JS
Meet pulldown
More Refactoring
The Firefox OS Hello World
Announcing 'Confident jQuery'
A new look
Mocking API Requests in Node tests
Dependency Management with Browserify
Using Browserify with npm modules
JavaScript Getters and Setters
2013 in Review
An introduction to Gulp
Pub Sub with Event Emitter
Embracing Command Line Tooling with Backbone Applications
Real Life ES6 - Arrow Functions
Using ES6 Modules Today
Unit testing ExpressJS route functions
The Refactoring Tales book
An introduction to ES6 classes.
Upcoming JavaScript Workshops
Slides from "An introduction to ES6"
ES6 Destructuring
JavaScript Modules and Dependencies with jspm
Embracing Promises in JavaScript
Writing Command Line Tools with Node
Predictions on JavaScript in the next 12 months
Array methods in ECMAScript 6
The state of front end tooling
Authoring JavaScript modules with ES6
Elm for JavaScript Developers
Better bundles with Rollup
JavaScript Releases: ES2016 and Beyond
Misconceptions of Tooling in JavaScript
ReactJS workshops in London
Using ReactJS without Webpack
Better data fetching with RemoteDataJS
Screencast: Creating a React and Webpack Project
Setting up CSS Modules with React and Webpack
Using the HTML Webpack Plugin for generating HTML files
Migrating to Webpack 2
Authoring and publishing JavaScript modules with Flow
How to contribute to open source with Webpack
Loading data from APIs in React
Setting up Vim for modern JavaScript Development
Context in ReactJS Applications
Dealing with APIs in React with ReactRemoteData
Functional Stateless Components in React
Building Langton's Ant in Elm
Getting started with TypeScript and React
Refactoring React with Tests
Extracting Logic from React Components
Migrating complex JavaScript applications
An introduction to styled-components with Glen Maddern
Moving away from Vim for front-end development
Adding URL support to an Elm app with elm-lang/navigation
An introduction to testing React components with Enzyme 3
Using React Fragments for the first time
Moving the JS Playground from GitHub Pages to Netlify
Testing React with Enzyme and Jest: a new video course
Preferring code over comments
Habits of Successful React components
Getting started with JSON Decoding in Elm
Enabling VSCode's "Go to Definition" for JSX imports
Introducing VSCode GoToFile
Reading and updating query params with URLSearchParams
React in Five: a new video course to level up your React
Testing React with Kent C. Dodds
Black Friday sale on my React video courses
Adventures with ReasonML
Configuring ESLint on a TypeScript project
Refactoring a component to use React hooks
The perfect unit test
Hiding implementation details with React hooks
Making unit tests fail when PropTypes error
Converting a JS library to TypeScript: Part 1
Things I was wrong about when I started programming
Converting a JS library to TypeScript: Part 2
Avoiding recursive useEffect hooks in React
Converting a JS library to TypeScript: Part 3
Structuring React applications
Saving manual work with babel-plugin-macros
Making impossible states impossible: data structures in React
Getting started with GraphQL: what client to use?
A free video series on building web apps with Elm
Avoiding bugs with data structures: using Sets in JavaScript
Using Windows 10 and WSL for frontend web development
Frontend tech choices I'm making in 2020
Moving domain names to jackfranklin dot co dot uk
Letting tools make choices
The three developers
Using ftplugin to tidy my Vim configuration
Learning keyboard shortcuts with Post-it notes
Refactoring to remove passthrough variables
Writing tests for bad JavaScript code
Refactoring JavaScript with tests
Learning from mistakes
VSCode Productivity: The Magit plugin
Keeping Code Simple
VSCode Productivity: The rewrap plugin
How code gets bad
Better code reviews
Testing event listeners in JavaScript
Writing good comments: the why, not the how
Software Development on Windows 10 with WSL2
Remapping Keys on Windows 10 with Power Toys
VSCode Productivity: Navigating files with Breadcrumbs
Comparing Svelte and React
Working in small chunks
Why you should check-in your node dependencies
Why I don't miss React: a story about using the platform
Learning to say "I don't know"
Running command line tasks in Neovim
Things I've learned about building computers
Cracking Neovim code folding
Exhaustive branch checks with TypeScript
OnTrack devlog 1
performance.wow() 2024
TypeScript enums and falsy values
Goals for 2025
Augmented engineering: learnings of an AI skeptic