David Walsh Tutorials
![Font Awesome Text-Decoration and Link Underline]()
Font Awesome Text-Decoration and Link Underline
If I were to describe Font Awesome in a word, I think it would be...awesome. The icon font library is massively helpful in using quality vector glyphs instead of separate images. I tend to use a lot of icons within links, as they help users...
![Python html5lib Skipped Elements]()
Python html5lib Skipped Elements
I've been working on some interesting python stuff at Mozilla and one task recently called for called for rending a page and then finding elements with a URL attribute value (like img[src] or a[href]) and ensuring they become absolute URLs. One problem I encountered when using...
![:valid, :invalid, and :required CSS Pseudo Classes]()
:valid, :invalid, and :required CSS Pseudo Classes
Let's be honest, form validation with JavaScript can be a real bitch. On a real basic level, however, it's not that bad. HTML5 has jumped in to some extent, providing a few attributes to allow us to mark fields as required or only valid if matching...
![CSS Triangles]()
CSS Triangles
I was recently redesigning my website and wanted to create tooltips. Making that was easy but I also wanted my tooltips to feature the a triangular pointer. I'm a disaster when it comes to images and the prospect of needing to make an image for...
![Mighty Deals: Responsive Bootstrap Templates]()
Mighty Deals: Responsive Bootstrap Templates
I recently saw a tweet saying that 1% of the web is now powered by the Bootstrap framework. That's an incredible number for a project that doesn't seem that old. When you look at what Bootstrap encompasses, however, you can see why so many developers start...
![9 More Mind-Blowing WebGL Demos]()
9 More Mind-Blowing WebGL Demos
With Firefox OS, asm.js, and the push for browser performance improvements, canvas and WebGL technologies are opening a world of possibilities. I featured 9 Mind-Blowing Canvas Demos and then took it up a level with 9 Mind-Blowing WebGL Demos, but I want to outdo...
![Create a CSS Cube]()
Create a CSS Cube
CSS cubes really showcase what CSS has become over the years, evolving from simple color and dimension directives to a language capable of creating deep, creative visuals. Add animation and you've got something really neat. Unfortunately each CSS cube tutorial I've read is a bit...
![Mobile and Desktop Event Normalization with pointer.js]()
Mobile and Desktop Event Normalization with pointer.js
The mobile revolution brought in a variety of new challenges, one being interaction and event handling. We have a set of new touch events and the traditional desktop events, and click events work on both devices, but mousemove and touchmove aren't always in sync, and there...
![Remove a Submodule within git]()
Remove a Submodule within git
For many git-based projects, submodules are useful in avoiding duplicate work and easing utility library updates. There are times, however, when a submodule needs to be removed from a project. Submodules aren't removed with git rm submoduledir, they must be removed in a more tedious, manual...
![Immediately Executing Functions]()
Immediately Executing Functions
JavaScript is full of nifty little tricks to accomplish tasks with less code. One of those tricks is immediately executing functions. We oftentimes see this pattern for executing anonymous functions to limit variable scope: What many developers don't know is that this code can be shorted by...










