• Creating ASP.NET HttpCookie-compatible multi-valued cookies in JavaScript

    Cookies are ubiquitous on the web. They're used to store usernames, login tokens, shopping cart contents, and so on. In libraries, cookies are typically modeled as name-value pairs. An API consumer requests a cookie using a known name (e.g. $.cookie('user') in jQuery with the Cookie plugin) and the library returns a string (e.g. alice). Sometimes, however, just plain old name-value pairs aren't enough. In this article, we will take a look at how to bake multi-valued cookies in JavaScript that are compatible with the Values property of ASP.NET's HttpCookie class.

    Read more (2 comments)

  • Introducing CoffeeDOM, a JDOM fork for Java 5

    When it comes time to work with XML in Java, the first thing I usually do is go to the JDOM website to check for a Java 5 update. Unfortunately, I am always disappointed. There has not been a major JDOM release in over 6 years and, if the JDOM mailing list is to be believed, no Java 5 version is planned. As a result, I have decided to take my own initiative and make CoffeeDOM, a JDOM fork with Java 5 support.

    CoffeeDOM is intended as a natural evolution for JDOM developers. As such, there have been minimal changes to the API. CoffeeDOM adds support for Java 5 features like generics, enums, and covariant method return types, and reduces the amount of boilerplate required by making previously checked exceptions (like JDOMException) unchecked. In this article, I will briefly go over these changes.

    (If you don't want to bother with the article, you can skip right to the Google Code page or browse the Javadoc API documentation.)

    Read more (11 comments)

  • Things I miss from Java while programming in C#

    One of the perks of being a freelance programmer is that I get to program in a lot of different languages, either because the client has dictated a certain language, has left the choice up to me, or limited me by what is supported by a host (Hi PHP!).

    As fate would have it, I have had the good fortune to have extensive experience with both C# and Java. While many articles will list things a programmer misses from C# while coding in Java (properties, LINQ, reified generics, type inference, named and optional parameters, closures, continuations), this post intends to look at things a Java programmer might miss while coding in C#.

    Read more (45 comments)

  • Eager boolean operators in JavaScript

    In most programming languages like Java, JavaScript, C and C#, the boolean operators && and || perform short-circuited evaluation. Essentially, this means that a program, when evaluating boolean operators, will only evaluate as many arguments as is necessary to determine the value of a boolean expression. Sometimes, however, this is not the behaviour we want.

    In this article we will look at how to implement non-short-circuited or "eager" versions of the JavaScript boolean operators && and ||.

    Read more (12 comments)

  • How to do an AJAX search with jQTouch, Part 2

    In the last installment of How to do an AJAX search with jQTouch we looked at how to setup a jQTouch interface with the goal of performing an AJAX search. In this article, we will write the necessary JavaScript to perform that AJAX search, as well as a PHP script to respond to those calls.

    This article assumes you have read the first part of this series.

    Read more (24 comments)

  • How to use custom jQuery animation queues

    You may not know this, but whenever you use jQuery commands like fadeIn, slideDown, and delay, you are implicitly making use of a jQuery queue behind the scenes. That queue is named fx, and it is the default queue that all animations use unless otherwise specified.

    In this article, we will look at how jQuery animation queues work, how to create and manipulate them, and how to use them in a meaningful way.

    Read more (8 comments)

  • Biomorph.js: Natural Selection in JavaScript

    For his 1986 book The Blind Watchmaker, Richard Dawkins developed a program that created "biomorphs": virtual creatures created by a computer simulation. The simulation, called Biomorph, was developed in order to demonstrate the power of natural selection.

    Recently, in an effort to better understand how the Biomorph program worked, I decided to implement it myself in JavaScript using the HTML5 canvas element. The result of this endeavour can be found here and the GitHub repository here. Read more to learn how to use the Biomorph program.

    Read more (2 comments)

  • A little bit about Webble and JavaScript games

    Webble is a pure HTML/CSS/JavaScript implementation of some of the core features Wezzle game engine. By "pure" I mean that there are no external plugins like Flash used. Furthermore, Webble does not make use of the HTML5 canvas element: all the animation is done purely by moving around HTML elements using JavaScript.

    Writing a simple game engine using the DOM and JavaScript poses some interesting problems that are atypical to regular website development. In this article I will discuss a few of the problems that I encountered while writing Webble and how I solved them.

    Read more (2 comments)

  • How to query posts by template in WordPress

    Ever wanted to filter a query_posts call by template? If you're reading this post, you probably have or need to right now. You probably went to the query_posts documentation and scanned for something like "template=foo" and were deeply disappointed. Then maybe, in an act of desperation, you started to trudge around the plugin library. Stop! Stop right there! You don't need a plugin to do this. Everything you need is already in WordPress.

    Read more (5 comments)

  • PHP interfaces and optional parameters

    Interfaces in object-oriented languages like Java, C# and PHP are useful language constructs for ensuring that objects will respond to certain methods. However, unlike Java and C# (until recently), PHP has optional parameters. As it turns out, this feature has an interesting (and a little bit unexpected) effect on how we can implement interfaces in PHP.

    Read more (4 comments)

subscribe via RSS