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