Apart from a handful of posts in 2010 and 2009 I haven’t really blogged much since 2008. Unfortunately it has been a bad combination of a number of personal tragedies, being too busy at work, and lack of spare time.
I am hoping I am through the worst of it now, and might see if I can restart this blog.
A comprehensive intro to SEO from SEOMoz in the form of a slide deck. This covers a lot of areas. The pyramids, for example, are a nice visualisation to the different layers of SEO. Continue reading
Partly a note to self, and further details for a bug logged in Firefox’s bugzilla:
Firefox 4.0 (and IE) do not send name/value for input type=”image”; only .x and .y coordinates
Earlier Firefox, Chrome (latest) and Safari do send name/value, which is what we’d expect… Continue reading
When transforming XML via XSLT, make sure the output setting for indenting is turned off and honoured by your code.
Turning it off will often speed up the transform and save a bit of output size. Continue reading
Some browsers support border-radius for rounded corners. But inner elements may break those corners. Simply using overflow:hidden on the outer element can often help solve this problem Continue reading
There are many good reasons to follow web standards principles, to use CSS-based layout and progressive enhancement but SEO, unfortunately, is not one of them. Continue reading
For a few years now, web developers doing CSS-based layouts have used floats or absolute positioning for layout web sites to avoid using non-semantic HTML
While doable, extra hoops often have to be jumped through (mostly for IE) and some seemingly simple things can be harder than necessary (like equal height columns).
However, for a simpler solution, CSS-based
display:table-cell etc are all usable today across Firefox 2+, Safari 3+, Opera 9+ and IE8. Continue reading
24 Ways has an excellent article on using Google App Engine as your own Content Delivery Network.
A CDN is a network of servers around the world to serve content from your site from the nearest physical location. All the large sites (Yahoo, Google, Amazon, etc) use them.
After reading the above post, I was also curious to find out how if Google App Engine helps in the following: compression, expires headers and versioning. It looks like it does. Continue reading
Jonathan Snook recently posted a really neat background animation technique using jQuery. This was something I was looking for and it seemed like a good candidate for a jQuery plugin.
So, following on from my recent post about turning jQuery code into richer, unit testable plugin code, I thought I’d describe the quick process of doing so here. (It’s worth reading Snook’s post first though!) Continue reading
It’s by-line of “write less, do more” really seems apt.
But sometimes, by writing just that little bit extra, you can do even more.
For example, I often try to do the following:
- Make most jQuery code into reusable plugins
- Use the jQuery plugin development pattern for added flexibility
- Combine the two approaches to drive out a richer API for the plugin
By unit testing with QUnit, I find I often need to trigger additional events or add additional code from within the plugin so the test can be meaningful.
But this extra code isn’t only useful for testing, it becomes a useful part of the plugin’s API, improving its functionality and flexibility without sacrificing maintainability and readability of the code.
I’ll try to demonstrate that in this post. Continue reading