This utterly rocks, and I can’t believe I didn’t go looking for something like it before: MagpieRSS lets you show RSS headlines on a PHP page. I’m using it on my old toxiccustard.com page to show the latest headlines from my diary and the site’s News and Guide to Australia pages (which all run WordPress). It includes caching so you won’t burn up your (or anybody else’s) bandwidth by grabbing the feed continually.
Category Archives: Code
The importance of accessibility
Raymond Chen on why accessibility is not just for disabled people. It’s also of huge benefit to automation, for testing and integration purposes (including such diverse uses as screen scraping and speech recognition).
You bet. It’s the lack of consideration for this kind of thing that gives me my pathological hatred for web sites developed entirely in Flash, or some other mutant horror of leading-edge technologies. Too often you’ll find some whiz-bang heavy commercial ad-merchant has somehow got in control of the site design for some company that should know better, and rendered the whole site unusable…
- with the keyboard
- by the blind
- let alone the blind using keyboards
- by anybody without IE6
- or who has a popup blocker
- or likes to use the web in silence
- or is trying to get around the fact that the site has no RSS or web services or any other hooks, and is trying to screen-scrape/parse the HTML
Of course I can’t stop these idiots putting pages up. And they take no notice of anything anybody says about them. But in most cases I don’t have to do business with them.
One of the side-effects of sticking to accessibility and restraint in the technologies you use is that the designs tend to be more future-proof. While some web sites are breaking under Firefox, I reckon a lot more will break under IE7 when it gets pushed out to millions of XP users.
Credit cards
Here’s the algorithm for checksumming a credit card number, plus information on what all the fields are.
But you can checksum the numbers all you like, if the signature doesn’t match the transaction never happened.
Calling COM from .Net, and vice versa
I’m working on a project that uses web services code written in .Net (‘cos it’s heaps easier that way) but calls legacy code written in VB6. And vice versa.
(Wow, I never thought I’d be referring to VB6 code as legacy, but there you go. None of your smart comments, any VB-haters out there.)
Here’s what I’ve discovered about making it work. Continue reading
Toys “R” Stupid
Want to see some HTML Form stupidity? Go to http://www.toysrus.com.au/site/signUp.htm and you get:

Radio buttons – users know what to expect from them. You can pick only one option. Not these puppies. These happen to be round checkboxes – that you can only turn on. You can’t turn them off! Oh, sure, there’s a “reset” button down the bottom of the form, but can you recall the last time you pressed the “reset” button on a form? I don’t think, in my many many years using the ‘net, I ever have. Not once. I have “reset button blindness”, and I imagine a bunch of others do too.
To top this off, because the site is mainly Flash, figuring out what the address of the page took a while. In the end I had to bookmark it to find it.
I guess that’s what happens when you get schoolchildren to build your website.
What to do when attach to process doesn’t work
When using Visual Studio, you can attach to a running process that’s chocked full of debug info (or not, but there’s not much point if it’s not) by selecting Build | Start Debug | Attach To Process…
This can handle cases where a problem doesn’t happen under the IDE, but does when running a debug executable. As happened to me recently. So, with the app running and the problem reproduced, I wanted to debug. But, when the dialog pops up it might be distressingly empty – as it was for me. What to do?
From task manager, right (context) click on the process and select Debug. That will launch your debugger and away you go.
My favourite bug
My favourite bug in Firefox (or at least the thing that irritates me the most), the cropping of long “Title” tooltips, one that I’ve written about before here, has just turned six years old, with one Bugzilla member sarcastically leaving a Happy Birthday message.
Make the web go slow with Sloppy
What to know what it’s like to use your site over dial-up? Use Sloppy – the slow proxy for dial-up modem speed simulation (slow down).
Have your own “Did you mean?”
This guy’s gone to the trouble of finding out how to add “Did you mean?” to your own website’s search.
Nifty: Force Directed Graphs in Javascript

Kyle Scholz has developed code to represent Force Directed Graphs in Javascript, and you can interact with the nodes. We’re talking mathematical directed graphs here – you might know them as networks.
Basically, there’s a bunch of nodes and they settle themselves into a stable state minimizing tension between them – the graphs balance themselves out, and you can see it happening – it’s animated. And interactive – you can grab a node and move it around. It is ubercool.
Downside is that it sucks huge CPU.

The art of custom 404s
If you’re going to have a custom 404 page, you might as well try and make it fit in with the subject of the web site.
Snippets of geekitude
Gmail geekitude — In GMail with US English set, when you delete mail it goes to the “Trash” folder. Set it to UK English, and it’s “Deleted Items”.
TV geekitude — See how the ABC News titles look with no stories and no voiceover.
Google Video geekitude — Lots of snippets of info here, including the fact that Google’s video format is pretty much just a renamed DivX AVI.
Webmail geekitude — My web mail (Horde) puts a little flag against the country of the domain name of the sender. Of course it’s a little misleading when a message from someone using fastmail arrives, as it reckons it’s the Federated States of Micronesia…
Web design geekitude — The best freebie DHTML menus I’ve found so far are here. (Which I’ve implemented here and here. I reckon without too much trouble, WordPress’s categories could drive it automatically. Maybe something to put on the list for Geekrant 2.0.

