rssed

a collection of dev rss feeds - blogroll

Add a new feed

+

320 feeds


Jack Franklin

Posts

ai-review: reviewing AI code before it lands πŸ”—

Over the years I have become very comfortable as a developer who spends most of his time in the terminal. I've spent far too long tweaking my dotfiles [...]

Tracking feedback with Claude Code πŸ”—

I've been using Claude Code as a pair programmer, debugger, and feedback collector while I playtest my game, OnTrack. The setup has worked so well tha [...]

Using AirPod Pros 3 with Android πŸ”—

I wear headphones a lot and I like the option of wearing over-ear and in-ear headphones at any one time; I find that I prefer my over-ear for deep wor [...]

Augmented engineering: learnings of an AI skeptic πŸ”—

Since ChatGPT burst onto the scene in November 2022 it and its competitors have taken software development by storm. We've seen companies go all in on [...]

Goals for 2025 πŸ”—

As 2024 comes to a close, I wanted to take a moment to reflect on what has been the most incredible and challenging year of my life. In January our ch [...]

TypeScript enums and falsy values πŸ”—

I recently lost an evening to debugging a subtle issue which highlights a potential pitfall in the interaction between TypeScript enums and "falsy" va [...]

performance.wow() 2024 πŸ”—

As I write this blog post I am sat in an AirBnB in Utrecht reflecting on two incredibly inspiring days at performance.now() 2024. I was not only fortu [...]

OnTrack devlog 1 πŸ”—

If you were to look at my Steam library you would see that most of my games are strategy and logistics based (think Factorio) but with a healthy dose [...]

Exhaustive branch checks with TypeScript πŸ”—

It's very common when working with TypeScript that you will have a type that declares a list of values, such as an enum or union type: enum SupportedC [...]

Cracking Neovim code folding πŸ”—

I have used Vim or variants like Neovim ever since the second year of university, which means I've been using Vim for nearly 13 years (!). In that tim [...]

Things I've learned about building computers πŸ”—

Recently a computer upgrade went from one graphics card to a new case, new fans and a new graphics card. Along the way I learned a bunch and I'm writi [...]

Running command line tasks in Neovim πŸ”—

My daily workflow often involves repeatedly running tasks, whether that be build commands, unit tests, or some other scripts. My ideal workflow is to [...]

Learning to say "I don't know" πŸ”—

In October 2021 I took on a new role within the Chrome DevTools team as a Technical Lead (TL) of the DevTools Performance Tooling team, who are respon [...]

Why I don't miss React: a story about using the platform πŸ”—

Just over two years ago I left a role at a London based startup where I lead development of a large, React based e-commerce frontend to join Google to [...]

Why you should check-in your node dependencies πŸ”—

On every team at every company I've been at prior to my current role, the advice was simple: don't check your node_modules folder into your version co [...]

Comparing Svelte and React πŸ”—

Last year I created Pomodone, a small time tracking application based on the Pomodoro technique of working in 25 minute intervals. It's a pretty basic [...]

Working in small chunks πŸ”—

Although occasionally you'll be given a task to complete which can be completed in no more than a few hours, most of your work is likely going to cons [...]

VSCode Productivity: Navigating files with Breadcrumbs πŸ”—

Over the next few weeks I'm going to be sharing some videos demonstrating parts of my workflow in VSCode - from managing changes with git (today's vid [...]

Remapping Keys on Windows 10 with Power Toys πŸ”—

Since moving to Windows 10 something I've always struggled with is how to remap keys on a keyboard. I don't remap much, but one remapping that I've us [...]

Software Development on Windows 10 with WSL2 πŸ”—

Back in October 2019 I'd taken the plunge and tried Windows for my development work. It was largely a succesful experiment. By using the Windows Subsy [...]

Writing good comments: the why, not the how πŸ”—

Code comments often get a bad reputation amongst developers as a waste of time, or a sign that your code could be improved. Here's a quote from a CONT [...]

Testing event listeners in JavaScript πŸ”—

Testing JavaScript code that's asynchronous can prevent its own set of challenges that you have to ensure you deal with when writing your tests. I rec [...]

Better code reviews πŸ”—

When you get a code review request from a colleague, what do you focus on? What reaches the bar for what you consider something that's worth commentin [...]

How code gets bad πŸ”—

We've all been there. The one corner (or maybe there's multiple!) of your application that makes you cringe every time you have to touch that part of [...]

VSCode Productivity: The rewrap plugin πŸ”—

Over the next few weeks I'm going to be sharing some videos demonstrating parts of my workflow in VSCode - from managing changes with git (today's vid [...]

Keeping Code Simple πŸ”—

When I think about keeping code simple, I think about the progression of your average software engineer from junior to mid to senior, and this one com [...]

VSCode Productivity: The Magit plugin πŸ”—

Over the next few weeks I'm going to be sharing some videos demonstrating parts of my workflow in VSCode - from managing changes with git (today's vid [...]

Learning from mistakes πŸ”—

Today I'm kicking off a new series on writing and maintaining JavaScript software titled "Designing Good JavaScript" by looking at learning at our mis [...]

Refactoring JavaScript with tests πŸ”—

In the last post we tackled writing tests for bad JavaScript code and now we have tests covering the behaviour of our code we are ready to do some ref [...]

Writing tests for bad JavaScript code πŸ”—

I like refactoring code and thinking about software design. It's something I speak about, blog about and enjoy doing as part of my job day to day. A c [...]

Refactoring to remove passthrough variables πŸ”—

I've been working recently on Puppeteer and migrating it to TypeScript. This has presented the opportunity to do some refactoring and today I want to [...]

Learning keyboard shortcuts with Post-it notes πŸ”—

I like keyboard shortcuts. I use Vim to edit code, which is entirely keyboard based, and generally I feel better and more productive if I can use the [...]

Using ftplugin to tidy my Vim configuration πŸ”—

I've used Vim on and off for a long time. I got introduced to it at University by a lecturer, tried it, didn't get it, and moved on. I then decided to [...]

The three developers πŸ”—

Have you ever come across code that you wrote six months ago and thought "what was I doing?". I know I have! And I know that in the past I've been too [...]

Letting tools make choices πŸ”—

In my first post of the year about technical choices I'm making in 2020 I finished with a point about letting tools make choices for you: I've become [...]

Moving domain names to jackfranklin dot co dot uk πŸ”—

Back in April 2012 I registered and put the JavaScript Playground online with a first blog post about using objects in jQuery's .css() method. Over th [...]

Frontend tech choices I'm making in 2020 πŸ”—

Happy New Year! The world of frontend web development is continually changing with new technologies, ideas and frameworks springing up all the time. W [...]

Using Windows 10 and WSL for frontend web development πŸ”—

I've been an exclusively Mac developer ever since I bought a second hand MacBook (remember the all white, plastic ones?). I absolutely loved it and as [...]

Avoiding bugs with data structures: using Sets in JavaScript πŸ”—

When working on a part of a user interface I like to constantly try to think about potential bugs that could occur, potentially when looking at taking [...]

A free video series on building web apps with Elm πŸ”—

If you've followed me on the internet for a while you'll know that I'm a big fan of Elm and I've written and spoken a fair bit about it. There are som [...]

Getting started with GraphQL: what client to use? πŸ”—

When I first started working with GraphQL APIs my first challenge was to decide what GraphQL frontend library I wanted to use. I can remember spending [...]

Making impossible states impossible: data structures in React πŸ”—

One of the things I like to spend a lot of time on is data structures. It's one of the first things I think about when building something: what data d [...]

Saving manual work with babel-plugin-macros πŸ”—

babel-plugin-macros is a project that I've followed with interest even though I'd never had a chance to use it. Today that changed and I wanted to sha [...]

Structuring React applications πŸ”—

One of the best features of React is that it doesn't force much convention and leaves a lot of decisions up to the developer. This is different from s [...]

Converting a JS library to TypeScript: Part 3 πŸ”—

If you missed the prior videos, you can find them here: Part 1 and Part 2. Today we're implementing more of test-data-bot's API in TypeScript and divi [...]

Avoiding recursive useEffect hooks in React πŸ”—

It's fair to say that React 16.8 and the introduction of hooks has really changed how we write React. Hooks are one of those APIs that make you realis [...]

Converting a JS library to TypeScript: Part 2 πŸ”—

If you missed part one, you can find it here. Today we're implementing more of test-data-bot's API in TypeScript and diving more into types, interface [...]

Things I was wrong about when I started programming πŸ”—

When I got my first job after university I was ready to get stuck in. Through university and side projects I'd done a good amount of programming and t [...]

Converting a JS library to TypeScript: Part 1 πŸ”—

I've been wanting a project to dive into to help me learn TypeScript, and the other day on an issue for test-data-bot, someone asked if TypeScript def [...]

Making unit tests fail when PropTypes error πŸ”—

PropTypes are a great way to document your components and I generally advise that everyone do this fairly strictly. In fact, we have an ESLint rule th [...]

Hiding implementation details with React hooks πŸ”—

It's fair to say that the introduction of hooks in React 16.8 has really changed how we build React components. They certainly take some getting used [...]

The perfect unit test πŸ”—

There's a common theme I find with people who tell me that they don't find unit testing useful, and it's normally that they are writing bad tests. Thi [...]

Refactoring a component to use React hooks πŸ”—

React 16.8 introduced hooks; a new way to work with effects and state in React. No longer do React components that have state need to be ES2015 classe [...]

Configuring ESLint on a TypeScript project πŸ”—

Whenever I've used TypeScript in the past, I've set up TSLint as my linting tool of choice. However, I've always wished I could use ESLint instead, fo [...]

Adventures with ReasonML πŸ”—

If you follow me on Twitter, or have read this blog for a while, you'll probably know that I'm a big fan of Elm. It's a functional, strictly typed lan [...]

Black Friday sale on my React video courses πŸ”—

In the past year I've launched two video courses on React, and today I'm offering 40% off them over the Black Friday period. You can use the coupon co [...]

Testing React with Kent C. Dodds πŸ”—

I'm sure that Kent needs no introduction, he's a prolific contributor to the React community and ecosystem. One of the things he talks a lot about is [...]

React in Five: a new video course to level up your React πŸ”—

Today I'm releasing my brand new video series titled "React in Five" I've been working with, writing tutorials, and speaking about React for a few yea [...]

Reading and updating query params with URLSearchParams πŸ”—

One of the most common tasks in building a frontend application is to update query parameters. A quick search for query string on npm reveals many opt [...]

Introducing VSCode GoToFile πŸ”—

As mentioned in my last post on VSCode, I've recently been trialling it as my editor of choice and so far have found the experience to be excellent. C [...]

Enabling VSCode's "Go to Definition" for JSX imports πŸ”—

I have recently been trialling using Microsoft's VSCode editor as my primary code editor, and so far I've been very happy with it. One feature that I' [...]

Getting started with JSON Decoding in Elm πŸ”—

This post was first published on ElmPlayground.com but has now been updated and moved to this blog. Something that continually trips beginners up in E [...]

Habits of Successful React components πŸ”—

One of the best features of React, and one of the reasons I think so many people love using it, is that it gives you the freedom to choose what approa [...]

Preferring code over comments πŸ”—

I think we'd all agree that code comments are a good way to document code that is otherwise hard to follow. Sometimes there's just no way to make the [...]

Testing React with Enzyme and Jest: a new video course πŸ”—

Today I'm releasing my brand new video series titled "Testing React with Jest and Enzyme". I've been working with, writing tutorials, and speaking abo [...]

Moving the JS Playground from GitHub Pages to Netlify πŸ”—

Over the weekend I moved this blog from GitHub Pages to Netlify and in this blog post I want to talk about why. Github Pages and the JavaScript Playgr [...]

Using React Fragments for the first time πŸ”—

React v16 was a very exciting release for React, and included many new features. In the recent React 16.2 release, improved support for Fragments was [...]

An introduction to testing React components with Enzyme 3 πŸ”—

In today's post we'll introduce the AirBnB library Enzyme for testing React applications. We'll do this using a test driven development (TDD) approach [...]

Adding URL support to an Elm app with elm-lang/navigation πŸ”—

In today's video I took an existing Elm application and add first class URL support via Elm's Navigation package. You can find all the source code on [...]

Moving away from Vim for front-end development πŸ”—

I've been a Vim user now consistently for about 6 years. My extensive dotfiles repository and (now badly outdated) blog on TIL Vim demonstrate pretty [...]

An introduction to styled-components with Glen Maddern πŸ”—

CSS in JavaScript has been something I've been meaning to explore for a while now; it's also one the questions I get asked most when I talk about my e [...]

Migrating complex JavaScript applications πŸ”—

This blog post is a write up of a talk I've gave at Front Trends in Poland, May 2017. You can find the slides and video below, along with a full write [...]

Extracting Logic from React Components πŸ”—

In the previous screencast we took a React component that was doing too much and refactored it, splitting it into two components that are easier to ma [...]

Refactoring React with Tests πŸ”—

As you work on a React application it's highly likely that you'll encounter components that have grown over time. They may have started with just one [...]

Getting started with TypeScript and React πŸ”—

I've recently been getting into TypeScript following a lot of positive blogs about it from Tom Dale and others. Today I'll show you how I've set up a [...]

Building Langton's Ant in Elm πŸ”—

Last week I attended the Elm London meetup, arranged by Kris Jenkins, who always produces a great selection of challenges for people to take on for al [...]

Functional Stateless Components in React πŸ”—

What are functional, stateless components? React 0.14 introduced functional, stateless components as a way to define React components as a function, r [...]

Dealing with APIs in React with ReactRemoteData πŸ”—

Last year I wrote about RemoteDataJS, a library I released on GitHub that made it really easy to deal with data from APIs in JavaScript. This library [...]

Context in ReactJS Applications πŸ”—

There is a lot of confusion amongst React developers on what context is, and why it exists. It's also a feature that's been hidden in the React docume [...]

Setting up Vim for modern JavaScript Development πŸ”—

I've been using Vim solidly for about six years now, and do all of my editing in it. This blog post, all the open source code on GitHub, and all my co [...]

Loading data from APIs in React πŸ”—

ReactJS is a brilliant framework to work in, and something that I get asked a lot by people new to the framework is how best to deal with loading data [...]

How to contribute to open source with Webpack πŸ”—

Webpack is one of the most prominent open source projects in the JavaScript and they are always looking for more people to help contribute back to the [...]

Authoring and publishing JavaScript modules with Flow πŸ”—

Flow is a static type checker for JavaScript which adds the ability to annotate our JavaScript code with extra information on what types we're expecti [...]

Migrating to Webpack 2 πŸ”—

Webpack is on the verge of having its latest major version released, and it's expected to drop very soon. However, the main thing holding the release [...]

Using the HTML Webpack Plugin for generating HTML files πŸ”—

Whilst most people use Webpack primarily for their JS scripts, there's always one final part of deploying that is forgotten: the HTML. In production w [...]

Setting up CSS Modules with React and Webpack πŸ”—

One of the biggest problems that developers face with CSS is that CSS is global. Each CSS class gets exposed globally and it’s very easy to inadverten [...]

Screencast: Creating a React and Webpack Project πŸ”—

Last week at the London JavaScript Community Meetup I did a live coding presentation where I created a React project from scratch and configured Webpa [...]

Better data fetching with RemoteDataJS πŸ”—

One of the things that most of us have to do in our applications is fetch data from a remote data source, typically an API that gives us back some JSO [...]

Using ReactJS without Webpack πŸ”—

Webpack is a fantastic tool but there's no doubting that as a newcomer to React it's can be a challenge to get started with. I've met numerous develop [...]

ReactJS workshops in London πŸ”—

If you've ever been interested in learning more about React and getting to grips with the framework then I have some good news for you! I've teamed up [...]

Misconceptions of Tooling in JavaScript πŸ”—

I wrote back in 2015 about the state of front end tooling and since that post it's continued to be a topic I follow with interest. I'm particularly in [...]

JavaScript Releases: ES2016 and Beyond πŸ”—

ES2015 introduces a huge new set of features to the language, many of them welcomed, but does so at a huge cost: there's a vast amount for people to l [...]

Better bundles with Rollup πŸ”—

Recently I've been hearing a lot about Rollup, a new JavaScript bundling tool that aims to produce smaller bundling sizes through tree shaking, which [...]

Elm for JavaScript Developers πŸ”—

If you follow me on GitHub or Twitter you'll have noticed that I've been doing a lot of work with Elm recently. Elm is a new language aimed at making [...]

Authoring JavaScript modules with ES6 πŸ”—

Update: this post was updated on 09/11/2015 to use Babel 6, rather than Babel 5. I've spoken and written previously about using tools like jspm to let [...]

The state of front end tooling πŸ”—

There's been a lot of posts written recently on the web about the state of tooling in front-end development and the opinion that many share that the e [...]

Array methods in ECMAScript 6 πŸ”—

I've written at length about some of the new features coming to JavaScript with ES6, including arrow functions, classes, modules and destructuring. To [...]

Predictions on JavaScript in the next 12 months πŸ”—

Recently I gave a talk called "The State of JavaScript" at the inaugural meetup of the London JS Community. You can find the slides for this below: I [...]

Writing Command Line Tools with Node πŸ”—

Back in August 2012 I wrote a post on building a command line tool in NodeJS. That post is now over two years old and plenty has changed, hence I thou [...]

Embracing Promises in JavaScript πŸ”—

In this post we will look at how we can embrace promises to lead to much nicer code when working asynchronously with JavaScript. This post is not a fu [...]

JavaScript Modules and Dependencies with jspm πŸ”—

jspm is a package manager for JavaScript applications that sits on top of the SystemJS. Both were written and are maintained by Guy Bedford. SystemJS [...]

ES6 Destructuring πŸ”—

ES6 comes both with huge new features like generators or classes, but also packs in a lot of smaller features that are going to make a big difference [...]

Slides from "An introduction to ES6" πŸ”—

I had the pleasure last weekend of speaking at Epic FEL, a single day, single track conference in the heart of London, run by Made by Many. They did a [...]

Upcoming JavaScript Workshops πŸ”—

Coming up in October and November I'm doing two different workshops; the first in Bristol and the second in London. Web Dev Conf On the 9th of October [...]

An introduction to ES6 classes. πŸ”—

Support ES6 support varies across environments and platforms, implementations get updated all the time and it's important to also note that the spec i [...]

The Refactoring Tales book πŸ”—

Something that I've been researching into a lot recently is refactoring - one of the most popular posts on this blog was the one on refactoring. I rea [...]

Unit testing ExpressJS route functions πŸ”—

I've recently been working on an application which has two distinct parts: an Angular front-end, and an API powered by ExpressJS. Something I was keen [...]

Using ES6 Modules Today πŸ”—

Continuing with the theme of playing with new features of ES6, today we're going to look at how we can use the new ES6 module syntax today, using Squa [...]

Real Life ES6 - Arrow Functions πŸ”—

Some of the features soon to be at our fingertips with the growing support for ECMAScript 6 are absolutely fantastic, but often examples shown online [...]

Embracing Command Line Tooling with Backbone Applications πŸ”—

In this article I'll take you through how we can use command line tools such as Grunt, Bower and Yeoman to speed up our typical development workflow. [...]

Pub Sub with Event Emitter πŸ”—

I'm a big fan of the Pub Sub (Publish, Subscribe) design pattern, and it's one that I tend to reach for often. I've written previously about it, but t [...]

An introduction to Gulp πŸ”—

Gulp has been doing the rounds recently online through Twitter as an alternative to Grunt in the JS build tooling space. Whilst I am a huge fan of Gru [...]

2013 in Review πŸ”—

Last year I wrote a post about the JS Playground in 2012, and I thought it would be nice to write a similar one reviewing 2013. So, I delved into Goog [...]

JavaScript Getters and Setters πŸ”—

For the most part, in JavaScript, what you see is what you get. A value's a value; there are no tricks. Sometimes however, you want a value that's bas [...]

Using Browserify with npm modules πŸ”—

Recently I covered Browserify in another post, but did not go into much detail. I discussed how to use Browserify with your own modules, but what I di [...]

Dependency Management with Browserify πŸ”—

If you've been a long time reader of this blog you'll know that I'm a fan of RequireJS, and have written about it before. This past weekend I was doin [...]

Mocking API Requests in Node tests πŸ”—

Recently I sat down with my Pulldown Project, aiming to rewrite the tests. The problem with them was that they were network dependent. Each test would [...]

A new look πŸ”—

Today I'm happy to go live with the new design of the JavaScript Playground! My thanks go hugely to Ben Howdle and Martin Bean. The beautiful new desi [...]

Announcing 'Confident jQuery' πŸ”—

At the weekend I annouced my latest project, "Confident jQuery". It's going to be a book, self-published through Leanpub aimed at those who are confid [...]

The Firefox OS Hello World πŸ”—

I recently got my hands on a Firefox OS preview device, a Keon and today I'm going to show you how to get a simple Hello World app running on the phon [...]

More Refactoring πŸ”—

Last week's refactoring post turned out more popular than expected and I wasn't going to revisit it. However, it got so much interest that I'd like to [...]

Meet pulldown πŸ”—

A good couple of months ago, I sat down with fellow JavaScripter Tom Ashworth to rewrite my JS tool pulldown. I thought it would be of interest to rea [...]

Refactoring DOM Heavy JS πŸ”—

One of the things I've been getting more into recently is refactoring. It's something that is heavily talked about in the Ruby world, but seems to be [...]

Moving to Jekyll πŸ”—

Yesterday I finally sat down and properly ported the site over to Jekyll, the static site generator. Before I used PyroCMS. I've nothing against Pyro, [...]

jQuery CSS Hooks πŸ”—

Did you know that jQuery gives you a way to write your own custom CSS methods? I didn't until recently and I'd like to show you why they are useful in [...]

Custom jQuery Builds with Grunt πŸ”—

A lot has been made of how, in the future versions of jQuery, it will be possible to easily build your own version of jQuery, without the parts you kn [...]

The .net Awards πŸ”—

Recently I found out that I had been nominated for two of .net awards. I've been nominated for "Young Developer of the Year" and "Brilliant Newcomer o [...]

Exploring Backbone.js - Part 3 πŸ”—

Way back in June last year I published part two of my Backbone series and today, at long last, it's time to pick up the pieces. I apologise for such a [...]

ECMAScript 5 Array Methods πŸ”—

Something I've not covered much so far is some of the newer parts of JavaScript. That is, methods in ECMASscript 5 that are not so commonly used due t [...]

Talking RequireJS at TakeOff Conf πŸ”—

So this week I attended my first conference outside of the UK and travelled to a freezing Lille, in Northern France (it's been below freezing every da [...]

Node.js workshops, March, London πŸ”—

I've teamed up with the lovely folks at Event Handler, who run an array of events in London, to run two JavaScript workshops in March 2013 which I'm r [...]

2012 in Review πŸ”—

Chris Coyier over at CSS Tricks does a yearly post documenting stats on the blog from the past 12 months, and it inspired me to do the same, as much a [...]

JS Command Line Tooling πŸ”—

My JS Tooling post listed 5 of my favourite command line tools that I use every day when I'm doing some JS development. If you've any more to recommen [...]

The new keyword in JavaScript πŸ”—

The new keyword in JavaScript was an enigma to me for a long while, and only recently have I really begun to grasp it. In this article I'm going to at [...]

JavaScript MV* Frameworks πŸ”—

"The massive growth in rich, JavaScript-heavy web applications has lead to a huge array of frameworks designed to help you build apps. There are so ma [...]

A New JS Playground Update πŸ”—

Today I spent a bit of time updating the site, and as such it seemed like a good time to write a small blog post with some updates. Disqus I have now [...]

Making your library AMD compliant πŸ”—

Previously on this blog I've written about an AMD approach with Require.js and about package management with Jam JS. Jam uses Require.js so what I tho [...]

Five JavaScript Testing Libraries πŸ”—

Jack Franklin explores five popular JavaScript testing libraries and provides examples of how to use them so you'll be able to choose the best one for [...]

Hosting a Node app on Heroku πŸ”—

Note: I apologise for the lack of updates on JS Playground recently, but happy to announce the site is now returning to at least one post per week. An [...]

Cross Browser Testing with bunyip πŸ”—

Today we're going to take a look at bunyip, a tool from Ryan Seddon to make running your test specs in multiple browsers really easy. Out of the box, [...]

Essential JavaScript Script Loaders πŸ”—

For those who don't follow me on Twitter or perhaps missed it, one of the reasons I've not been blogging on JSPlayground as much recently is down to w [...]

nodefetch, a command line download tool πŸ”—

As part of me wanting to spend some time playing with command line Node.js tools, last week I sat down and wrote nodefetch. Whilst I don't usually blo [...]

Writing a Command Line Node Tool πŸ”—

Today we are going to combine a few different tools and create a simple Node package that will allow a user to search a directory for files. In this t [...]

Speaking at WDC 2012 πŸ”—

I've attended WDC for the past two years so when Alex (@alexolder) gave me the chance to speak I couldn't say no. Having been at WDC the past two year [...]

Come and watch me speak πŸ”—

This coming Tuesday, July 31st, I'm going to be talking at the London Titanium Meetup. If you're not a Titanium developer please don't be put off, I'm [...]

Introduction to RequireJS πŸ”—

In this tutorial we are going to take a look at RequireJS, an AMD compatible asynchronous script loader that is incredibly powerful. In my experiments [...]

A Site Update πŸ”—

As some of you will have noticed unfortunately posting has slowed in the past few weeks, and I just wanted to write a quick post to explain why. It's [...]

Watch me Code Screencasts πŸ”—

I have had a lot of tweets recently asking about how I work, the tools I use, the workflow I've adopted and lots of related questions. I regularly twe [...]

Package Management with Jam JS πŸ”—

Today we'll take a look at Jam JS, a JavaScript Package Manager. This uses RequireJS to load in your required packages and makes using JavaScript libr [...]

Node & Express Todo App: Redis πŸ”—

Today I'll pick off where Part 1 left off, and start working on the to-do part of our application. This tutorial literally starts where Part 1 stops, [...]

Your First Polyfill πŸ”—

In today's tutorial I want to introduce you to the concepts behind polyfills, a word you see used a lot in today's JS world. I'll demonstrate just wha [...]

Exploring Backbone.js - Part 2 πŸ”—

A while ago I kicked off a planned series of Backbone.js tutorials with Part 1, which introduced Backbone as we set up a "shopping cart" - albeit an o [...]

Conditional Loading with YepNope πŸ”—

In today's tutorial I want to take a look at yepnope, which is an asynchronous resource loader that works on conditions. That is, you give it a test, [...]

Introduction to JavaScript Objects πŸ”—

Today I'd like to talk a little bit about Objects in JavaScript. When I first started using JavaScript (my first experience of it was through jQuery), [...]

Your own jQuery Deferreds πŸ”—

One of the first and most well received posts on the JavaScript Playground introduced jQuery Deferreds, a new feature in jQuery 1.5 to enable us to ma [...]

A JS Playground Update πŸ”—

JavaScript Playground is now just over one month old, so I thought it would be a good time to write a quick post with some updates about the site. Fir [...]

A Pub Sub implementation in CoffeeScript πŸ”—

A while back I wrote about creating a Pub/Sub implementation in jQuery and said that I'd revist the subject without relying on jQuery. Today I'm going [...]

A jQuery Plugin in CoffeeScript πŸ”—

So last week I showed you how to write a basic jQuery plugin and today I want to take that plugin & convert it into CoffeeScript. The first thing to d [...]

Node.js: A Todo App with Express πŸ”—

So last time we installed Node & did the traditional "Hello World" example with Node & then using the Express framework. Today we're going to make a s [...]

A jQuery Plugin with Grunt & QUnit πŸ”—

Today we're going to take a look at writing a jQuery plugin. There's a number of different ways to go about structuring jQuery plugins & hence a lot o [...]

Beginning Node.js πŸ”—

Unless you've been living under a rock for the past 12 months or so, you've probably heard of Node.js. Simply put, Node is JavaScript on the server. N [...]

Exploring Backbone: Part 1 πŸ”—

Backbone.js is a framework that lets us structure our applications using a pattern similiar to MVC (technically Backbone is not pure MVC as the C stan [...]

QUnit, PhantomJS and Mockjax πŸ”—

Following on from last week's introduction to QUnit today I want to talk less about how to use QUnit but ways to make it easier to use or integrate it [...]

Grunt, a JS Command Line Tool πŸ”—

Grunt describes itself as: Grunt is a task-based command line build tool for JavaScript projects. It was released very recently and is authored by Ben [...]

Scope and this in JavaScript πŸ”—

Today I want to talk a little about scope in JavaScript and the this variable. The idea of "scope" is that it's where certain functions or variables a [...]

Testing with QUnit: Part 1 πŸ”—

Recently I was asked on Twitter to do a tutorial on QUnit, a JavaScript Unit Testing framework, and the one used by jQuery. What I wanted to do howeve [...]

A jQuery Pub Sub Implementation πŸ”—

Having discussed the Module pattern briefly a few days ago, today I want to tackle another pattern, the Pub Sub (or Publish and Subscribe) pattern, al [...]

JS WTF: 5 < 4 < 3 πŸ”—

A quick fun "JS WTF?" post for you today. If you load up your JavaScript console & enter: 5 < 4 < 3 You'd be expecting to see false, right? However, y [...]

jQuery 1.7 Event Binding: .on() &amp; .off() πŸ”—

From jQuery 1.7 new methods were added for binding events, .on() and .off() which, unsurprisingly, does the opposite of .on(). Amongst the community, [...]

The JavaScript Module Pattern πŸ”—

Lets say you've got a little library like this, that just increments a number: var jspy = { count: 0, incrementCount: function() { this.count++; }, de [...]

An introduction to jQuery Deferreds πŸ”—

Prior to jQuery 1.5, Ajax requests could get a bit messy. You'd probably do something like this, if we were making a simple get request: $(function() [...]

Using objects in jQuery's .css() πŸ”—

Something I will be focusing on on a regular basis here at JSP is producing tidy code that's easier to maintain in the future as well as nicer to work [...]