Node.js and TypeScript Modules: Internal, External... Shake it All About

When I decided to write a JavaScript game, I knew I'd need to run the same logic on the server and the browser, so Node.js was an obvious choice. It's JavaScript on the server, right? Anything I write to run in a browser will be runnable on the server as well. Easy! Well… not so much. Here's the misunderstandings and problems I faced, along with my solution.

Dependency Injection, Angular and Node

My current pet project uses Node, Angular and TypeScript. This is my first time working with Node or Angular and the differences in the way they approach Dependency Injection led to this post.

Extending WatiN 2: Wait for JQuery document.ready() Functions to Complete

WatiN's DomContainer.WaitForComplete() method pauses test execution until the DOM has finished loading, but if your page has functions registered with JQuery's ready() function, you'll probably want to wait for those to finish executing before testing it. Here's a WatiN extension method which pauses test execution until that happens.

Unobtrusive Maximum Input Lengths with JQuery and FluentValidation

JQuery unobtrusive validation can be used to show an error message when the user inputs too many characters or a numeric value which is too big. On a recent project we wanted to use input's maxlength attribute to prevent a user from entering too many characters rather than cure the problem with an error message - here's how we did it.

Fixing Chrome’s AJAX Request Caching Bug

I recently had to make a set of web pages restore their state when the user arrived on them after clicking the browser’s back button. I used JQuery's ajax function to get the data, but even with JQuery's cache: false setting and MVC's OutputCache attribute, Chrome insisted on retrieving it from its cache. Here's how I solved the problem.

Handy Generic JQuery Functions

I was a bit of a late-comer to the JQuery party, but now I've been using it for a while it's given me a host of options for adding extra flair to the client side of my applications. Here's a few generic JQuery functions I've written which can be used to add some neat little features to a page. Just call any of them from a document ready function.