Blogging

An archive of blog posts at SitePoint

I'm a regular contributor to the SitePoint Blogs where I've become known for my off-beat, sometimes contentious take on industry issues. My posts are mostly technical, and sometimes vividly opinionated ... but always an interesting read  (smile)

Posts Archive for 2013

  1. 3 Neat Tricks with Regular Expressions <mmxiii.iv.xvii>
  2. Children of the DOM <mmxiii.iv.iv>
  3. Evolving a New Mutation <mmxiii.iii.xxv>
  4. Automation Type Conversion In The Real World <mmxiii.>
  5. Finding an Ancestor DOM Node <mmxiii.ii.xxiii>
  6. A Study in Experimental Game Development <mmxiii.ii.xv>
  7. Intelligent String Abbreviation <mmxiii.i.xxx>
  8. Instant Form Validation Using JavaScript <mmxiii.i.xxiii>
  9. Using Web Storage <mmxiii.i.ix>
  10. Fixing the details element <mmxiii.i.ii>

Posts Archive for 2012

  1. Parsing an ISO datestamp <mmxii.xii.xvii>
  2. Accessibility in Modern Interfaces <mmxii.xii.xiv>
  3. Creating an ISO datestamp <mmxii.xii.v>
  4. Practical JavaScript Accessibility <mmxii.xi.xxvi>
  5. Removing Useless Nodes From The DOM <mmxii.xi.xxi>
  6. JavaScript Accessibility 101 <mmxii.xi.xii>
  7. Why Would You Write Your Own CMS? <mmxii.xi.viii>
  8. Testing For Empty Values in JavaScript <mmxii.xi.iii>
  9. Adding Micro-Constructors to a Modular Design Pattern <mmxii.x.xxiv>
  10. A Utility Function for Padding Strings and Numbers <mmxii.x.xii>
  11. Modular Design Patterns: Private, Privileged, and Protected Members in JavaScript <mmxii.x.iv>

Posts Archive for 2011

  1. The Ever-Increasing Uses of a Zoom Layout (Part 2) <mmxi.v.xi>
  2. The Ever-Increasing Uses of a Zoom Layout (Part 1) <mmxi.v.x>
  3. The Angst of Accessibility <mmxi.v.ii>
  4. Better Take The Web's Temperature — It's Coming Down With Another “itis” <mmxi.iv.xxi>
  5. (More) Assignment in Conditions <mmxi.iv.xix>
  6. The Art of Accessibility <mmxi.iv.xii>
  7. Sophisticated Sorting in JavaScript <mmxi.iv.iv>
  8. What's The Best Date Format? <mmxi.iii.xxii>

Posts Archive for 2010

  1. Counting with an Arbitrary Character Set <mmx.xii.xxi>
  2. The Anatomy of a JavaScript Design Pattern <mmx.xii.viii>
  3. My Favorite JavaScript Design Pattern <mmx.xi.xxx>
  4. Why Aren't Tooltips Triggered by The Keyboard? <mmx.xi.xxiii>
  5. The Guilty Secrets of a Standards-Based Programmer <mmx.xi.x>
  6. Scripting, Loading and Irony <mmx.xi.iii>
  7. Throwing Better Errors Using Stack <mmx.x.xxvii>
  8. Assignment inside a Condition <mmx.x.xii>
  9. The Best Way to Instantiate Ajax? <mmx.x.v>
  10. The Footer's the Menu <mmx.ix.xxviii>
  11. Creating Shadows Around Polygons in CSS <mmx.ix.xxi>
  12. Contiguous Sibling Selector <mmx.ix.vii>
  13. Better Passwords #3: Caps-lock Warnings <mmx.viii.iii>
  14. Better Passwords #2: “Show Password” <mmx.vii.xxii>
  15. Better Passwords #1: The Masked Password Field <mmx.vii.xix>
  16. Creating Accurate Timers in JavaScript <mmx.vi.xxii>
  17. Making CSS Count Backwards <mmx.vi.xii>
  18. Reducing HTTP requests with generated data URIs <mmx.vi.v>
  19. Using CSS Text-Shadow to Create Embossed Text <mmx.iv.xxii>
  20. A Simple CSS Drop-Cap <mmx.iv.xv>
  21. How To Get Smoother Rounded Corners <mmx.iv.xiv>
  22. Towards A Cooler Focus Caret <mmx.iv.xiii>
  23. A Specialized JavaScript Library for Querying CSS <mmx.iv.v>
  24. Creating Beveled Images with CSS <mmx.iii.v>
  25. CodeBurner Updates for Firefox 3.6 <mmx.ii.xvi>

Posts Archive for 2009

  1. The CodeBurner Family Welcomes Three New Babies! <mmix.x.xx>
  2. Who's Using ARIA? <mmix.ix.xvi>
  3. HTML 4 Considered Harmful <mmix.vii.xxxi>
  4. Announcing Updates to our Popular Add-ons for Firefox 3.5 <mmix.vii.ii>
  5. 10 Cool Things We'll Be Able To Do Once IE6 Is Dead <mmix.iv.xiv>
  6. The Right Way to Make a Dropdown Menu <mmix.iv.i>
  7. Techy Treasures #5: Fudging CSS Counters in Internet Explorer <mmix.iii.xxxi>
  8. Announcing Version 1.1 of CodeBurner: the Reference Tool for Firebug <mmix.iii.xx>
  9. Developing CodeBurner — An Exercise in Exploratory Programming <mmix.i.xxviii>
  10. Introducing CodeBurner: the SitePoint HTML & CSS Reference Tool for Firebug <mmix.i.xxvii>

Posts Archive for 2008

  1. Techy Treasures #4: What's inside a dollar function? <mmviii.xii.x>
  2. Techy Treasures #3: When is a mouseout not a mouseout? <mmviii.xi.xxv>
  3. Techy Treasures #1: Feelin' Empty <mmviii.x.xvi>
  4. Tagging is Not Just for Content <mmviii.viii.xxix>
  5. Debugging JavaScript: Throw Away Your Alerts! <mmviii.viii.xxii>
  6. Using JSON for Language-independent Configuration Files <mmviii.viii.xxi>
  7. Regex Matching Attribute Selectors <mmviii.vii.xxix>
  8. Mangling XML as Text with PHP DOM <mmviii.vii.xxiv>
  9. Conditional Comments for HTML Email <mmviii.vii.xviii>
  10. Top 5 Tips for Staying Awake <mmviii.vii.iv>
  11. BBC Rejects hCalendar Microformat Because Of Accessibility Concerns <mmviii.vi.xxv>
  12. Dust-Me Selectors: Now Compatible With Firefox 3! <mmviii.vi.xxiv>
  13. Thanks for what? <mmviii.v.xx>
  14. Building The Matrix - Notes from The Architect <mmviii.v.xiv>
  15. You can stick your em-dash up your dot dot dot <mmviii.iv.xxx>
  16. You guys all suck <mmviii.iv.xxi>
  17. You're Fat and I Hate You <mmviii.iv.xvii>
  18. continue - the forgotten statement <mmviii.iv.xiv>
  19. A collection is not an array <mmviii.iii.xix>
  20. Unblocking Adblock <mmviii.ii.v>
  21. The Accessible Dungeon of Doom <mmviii.i.xvi>

Posts Archive for 2007

  1. Internet Explorer doesn't just suck, it also blows! <mmvii.xi.xxx>
  2. Dust-Me Selectors Version 2.0 <mmvii.xi.xxvi>
  3. All in the mind? <mmvii.xi.xxii>
  4. Dealing with unqualified HREF values (Part 2) <mmvii.x.xvii>
  5. Why Accessibility? Because It's Our Job! <mmvii.x.xvi>
  6. Comment-Driven Development <mmvii.x.x>
  7. How green can you be? <mmvii.x.i>
  8. Don't make users take responsibility for our problems <mmvii.ix.x>
  9. Nihilism, accessibility, and the preponderence of amazing co-incidences <mmvii.viii.xiii>
  10. Dealing with unqualified HREF values <mmvii.viii.x>
  11. What is a community? <mmvii.viii.iii>
  12. Find unused CSS selectors with "Dust-Me Selectors" <mmvii.vii.xxx>
  13. Insert in place without document.write <mmvii.vii.xi>

Like to read more?

Check out the articles list, plus there are more articles and commentary in the reference section.

So how can I help you?

Please do get in touch, and let me know what you need.

Our internal search engine is currently offline, undergoing some configuration changes in preparation for a major site overhaul. In the meantime, you can still search this site using Google Custom Search.


In this area

Main areas


[brothercake] a round peg in a square hole, that still fits