A good Webalizer user agent grouping

Recently I had to go about setting up my own configurations for Webalizer. Grouping user-agents into meaningful sections seemed a worthwhile cause, so I ran through the mobile user-agent string list and setup matches for mobile devices on top of some of the more straightforward ones for desktop. The result is a pretty clean config that handles (in my experience) about 90% of my incoming traffic. I've also tried to provide a little bit of forward-planning for version numbers on some of the browsers which now update their major version almost daily (curse you, chrome), but you should plan to keep that aspect up to date yourself. (more)

Google Apps email administration guide

Whilst they offer some great free services (edit: Google Apps is now only offered on paid subscriptions, even under the previous 5 user cap. But if you got in beforehand, you do get to keep it for free...), Google's products with their user-friendly interfaces can occaisonally be confusing for those of us who know what we're doing - a whole new set of terminology to learn just to be able to do what you had previously learned in the 'normal' / 'homebrew' / whatever way.

This is a quick cheatsheet on how to achieve some of the fundamental and more advanced mail behaviours and operations that you'd expect from any mailserver via your Google Apps admin console. (more)

JSON Schema Cheatsheet

JSON schema is the modern equivalent to XSchema/DDML or the good old ancient DTDs. It provides a lightweight, self-describing and abstract protocol for describing and validating data formats and models. There are validator implementations in many languages, but the most obvious use is in pre-send validation for frontend JavaScript applications. A good validator and some simple wrappers or data binding (like say, this...) and you can code up a complex and powerful new application in days.

Its simple JSON structure and savviness of the community has thus far kept any kind of introductory documentation from cropping up, instead one must simply read through the spec and digest it for themselves. Since this is a time-consuming process, I did up a quick cheatsheet of the properties involved in schema declarations so that once one understands the basic principle you don't have to go back and check for what the name of something was repeatedly. (more)

List of git tips

Generally, I take it upon myself to push git onto other developers wherever I go. It is a wonderous, joyful world where your work is never impeded by a network connection and everything is far more powerful and flexible. Often you hear "why would I ever want to move away from Subversion?", which is a bit like saying "why would I ever want to stop riding a horse to work", but that's a topic for another post. This page is a first-stop manual for those new to working in teams or working with git, and lays out some good practises you'll probably want to follow early on until you become a more advanced user. (more)

JCAnim – a jQuery & CSS3 animation engine

Sometime recently I wanted to make some sweet-ass parallax stuff. Fun times would be had, but what a lot of effort it was going to be.

There were several great solutions out there, and I eventually decided upon jparallax as being the most complete. However, that still didn't allow me the flexibility I wanted - I needed to be able to do more than just move elements, I wanted to stretch parts of my parallax to achieve faux-sideon perspective. And then I started thinking about other things you could do, and decided the best way to approach such an engine would be to allow modification to any css property and decide what effects were workable later.

The other thing I generally have a problem with in JavaScript animation in general is 'the stutter'. You don't get it constantly, and on modern browsers / faster machines not at all, but for those of us on laptops and phones the stutter in our animation ruins the fuildity of the experience we're trying to create. CSS transitions are there and are supported by all the major browsers now (except, of course, IE (edit: IE10 does support them now)) so there's no reason not to be using them. Transitions run on the GPU in most cases, freeing up CPU resources being used to control the animation in JavaScript for other purposes and smoothing out animation by using framesyncing and other techniques only available on hardware.

Provided keyframe positions were known ahead of time or it didn't matter if there was a slight lag to the animation (indeed in many cases this can be appealing), there didn't seem to be any reason one couldn't leverage CSS transitions and the GPU to add fluidity to JavaScript animations updated at a low sampling rate. So that's exactly what I did with JCAnim and the parallax effect I implemented with it. (more)

A new server and new things

It's no understatement to say that this website has fallen largely into disuse over the years. I aim to fix this; and to start it's high time we got our server infrastructure sorted out.

We're now serving all our content from a Rackspace virtual host, which means we have complete control over what it can and can't do. We no longer need to make halfassed compromises with server constraints and serve annoyingly awkward websites with no reliable database backend. Hooray! (more)

CP1252 Fixer: a system tray utility for escaping Word ‘smart quotes’ for the web

On the theme of things which I am shocked have not already been created, I lately took it upon myself to write an application for automatically fixing Microsoft "Smart Quotes". This utility sits in your system tray and replaces these troublesome characters (‘ ” … etc) with a more web-appropriate version before they get anywhere near your webpages.

It is configurable in various ways and should be an invaluable timesaver for any publisher, copywriter, web developer or person working with internet content. More information can be found here.

TextSelector JavaScript class

TextSelector is a lightweight JavaScript class for handling text selections. It retrieves the highlighted text on the page reliably and independently of the document area and browser.

Which is to say, it will behave properly no matter what browser you are in, and no matter whether you have normal text on the page selected or some input inside a text field highlighted. I found it odd that there was nothing like this out there, so here it is (:
The class is written in pure JavaScript, so you don't need any external dependencies to use it.

pDebug released

Released - pDebug : Public Alpha 3.0.07
A lightweight, powerful and robust debugging platform for PHP5

Source files are on
github

Have at it, send me your results! :D