Simon Willison’s Weblog

Subscribe
Atom feed

Entries

Filters: Sorted by date

Outlook not so good

Yesterday, the Half-Life 2 source code was leaked (all 100 MB of it). Today comes the news from Valve that the leaked version is indeed the real thing, and that the leak was almost certainly the result of keystroke recorders installed remotely on Valve machines using a buffer overflow in Outlook’s preview pane.

[... 225 words]

The Philosophy of Ruby

The Philosophy of Ruby is the first part of Artima’s interview with Yukihiro Matsumoto (aka Matz), creator of the Ruby language. The interview touches on the philosophical differences between Python and Ruby, in particular Python’s preference for having one obvious way of doing things:

[... 245 words]

Balancing Act

Balancing visual and structural complexity in interaction design (via Column Two) is an interesting article that shows how over-simplifying a design can harm usability rather than helping it.

[... 151 words]

Designing for Colour Blindness

Dave Shea is running a series on designing for colour blindness: parts one and two are already available. I’ve found the Colorblind Web Page Filter useful in the past as a tool for understanding the problems faced by colour-blind users.

Alarm Bell Phrases

Alarm Bell Phrases on Ward’s Wiki are just great. As with all links to the Wiki though, be warned: click too many links and hours of your life will inexplicably vanish...

AdSense Backlash

I guess it really was too good to be true. The AdSense backlash has begun, with Eric Thauvin’s dismissal from the scheme for “invalid clicks” prompting Russell Beattie to take a good look at the AdSense terms and conditions—which have some pretty nasty twists in them. The plot has thickened today with Google adding a new term prohibiting users from issuing any press release or mak[ing] any public statement about the subject matter of this Agreement. What’s that about?

[... 211 words]

A better definition of Metadata

Ned Batchelder: Metadata is nothing new. Ned includes a far better definition of metadata than the standard “data about data” phrase:

[... 77 words]

Good Gifts

Some friends of the family have created a brilliant charitable solution to the problem of buying a gift for someone who already has everything. The Good Gifts Catalogue sells products such as a New leash of life for homeless dogs, Ropes for monkeys living in zoos and many other cleverly titled charitable packages. The full price of every item ordered is donated to the supported charity and the recipient of the gift gets a keepsake card describing the gift given on their behalf. My favourite item from the catalogue has to be this one:

[... 160 words]

Battling comment spam

It’s a sad state of affairs when you come back to your blog after a week elsewhere and have to add another 56 domains to your blacklist. I’m actually getting more comment spam than legitimate comments now—this is becoming more than just a minor nuisance. I’m considering a number of improvements, including adding a moderation queue to comments on entries posted more than a month ago, disabling the comment form if the referral is a search engine (as per Russell Beattie’s suggestion) and adding some kind of wildcard support to the blacklist file.

[... 114 words]

“Interactive Tabular Data”

Just spotted in a comment by Drew McLellan on Russell Beattie’s Notebook:

[... 147 words]

Auto-complete text boxes

There’s a great new article up on Sitepoint describing a technique for adding auto-complete functionality to normal HTML text input fields using Javascript. The code uses a whole bunch of browser-specific code, but it has to thanks to the unconsistent ways in which different browsers handle text selection ranges. Unfortunately the article doesn’t actually provide a demo of the code in action, so I’ve posted one here. It’s a very nice effect.

The pirate’s code

So, now that “talk like a pirate” day has sadly come to an end, it’s time to reveal the five minute code hack that rendered my front page semi-legible for the best part of a day. It was actually pretty simple:

[... 260 words]

New virus?

I don’t usually get more than 5 or 6 spams a day, but today I’ve been hammered with an additional 7 emails with executable attachments claiming to be the “latest critical patch” from Microsoft. The emails are HTML formatted and make a pretty convincing rendition of a Microsoft.com page, so I can see how less savvy internet users could easily fall for them. Is this yet another virus outbreak? I make that the third in as many weeks.

Aaaaarr

It be International Pirate Day, ya scurvy landlubbers. Avast and be merry, for the day is young and the wenches plentiful. And remember t’chat up line of the day: Prepare to be boarded!

[... 45 words]

Dive Into Python reborn

Sweet. Mark Pilgrim is working on Dive Into Python again, funded by a dead tree publisher for publication in 2004 (hopefully). The free version will stay available as well. I’ve always preferred reading paper to reading a screen so I’m definitely down for a copy.

[... 135 words]

“sexeger”[::-1]

Via Ned Batchelder, an article on Reversing Regular Expressions from Perl.com. Otherwise known as Sexeger, these offer a performance boost over normal regular expressions for certain tasks. The basic idea is pretty simple: searching backwards through a string using a regular expression can be a messy business, but by reversing both the string and the expression, running it, then reversing the result far better performance can be achieved (reversing a string is a relatively inexpensive operation). The example code is in Perl, but I couldn’t resist trying it in Python. The challenge is to find the last number occurring in a string.

[... 384 words]

Google conspiracy theories

Microdoc News have a poorly researched story suggesting that Google have been engineering their search results to favour their own properties:

[... 582 words]

Interactive Python

I adore the Python interactive interpreter. I use it for development (it’s amazing how many bugs you can skip by testing your code line by line in the interactive environment), I use it for calculations, but recently I’ve also found myself using it just as a general tool for answering questions.

[... 983 words]

Don’t delete.me

Paul Sowden is the blogger who inspired me to start my own blog over a year ago. He’s restarted his blog at a new domain: delete.me.uk. Let’s hope the new site doesn’t live up to its name. Oh, and be sure to view source for Paul’s own special brand of minimalist valid HTML 4.

New content management blog

Ideas in Technology and Publishing is a great new blog covering content management, XML and other publishing related technologies. It’s less than a month old so it’s still possible to read through the archives in full, which I’ve just done and recommend to anyone with an interest in content management.

Curious emails

There follow two of the weirdest emails I have ever received through my contact form. The first is a fascinating rant against standards compliant client side scripting:

[... 288 words]

Python for teaching mathematics

Kirby Urner provides some great examples of how Python can be used as an aid to understanding mathematics on the marketing-python mailing list. I particularly liked this demonstration of Pascal’s triangle using Python generators:

[... 139 words]

Listutorial

Russ Weakley has followed up his excellent Listamatic with a useful set of tutorials on styling lists. The style of the tutorial looks worth emulating: each page adds a new property, explaining what it does and showing how it affects the list. I particularly liked the Icon lists demonstration.

Screen readers and display: none

I’ve long heard rumours that some screen readers fail to read out text hidden using the CSS display: none property, but I had never really investigated it as I don’t have access to a screen reader myself (I should really download the JAWS trial some day). Bob Easton’s What do screen readers really say? describes the problem and specifies a number of tests for screen reader abilities, the results of which are collated on this Wiki page. As a side note, quickly collecting the results of this kind of test is an excellent way to make use of a Wiki.

[... 331 words]

Prior Art

The most interesting thing to come out of this whole Eolas disaster could well turn out to be Ray Ozzie’s description of how Lotus Notes was demonstrating many of the funamental abilities of today’s browsers, including dynamic application embedding remarkably similar to that covered back in the patent, way back in 1993. The patent was filed in 1994. Prior art? We can only hope.

Jump!

Retro games, 80s music. Awesome. Via NTK.

PostgreSQL Performance Optimisation

Via the pgsql-performance mailing list, a great guide to Tuning PostgreSQL for performance, accompanied by a huge table of annotated configuration options.

Javascript free rollovers

I’ve talked about image rollovers on this site before, but I’ve never seen a technique I like half as much as Pixy’s Fast rollovers, no preload needed. Like all good techniques, it’s so simple I’m surprised no one has thought of it before. The trick is that a single image is loaded containing the different rollover states, then positioned as the background of a fixed pixel size link element in such a way that only one of the states is shown. The :hover style simply changes the offset of the background, revealing the secondary (or even tertiary) state.

Andy in the Garden

My friend Andy’s design skills have been recognised by the CSS Zen Garden. Congratulations! He’s number 42.

“Is Evil..” titles are evil

Too excellent articles on Object Oriented Design: Why extends is evil and Why getter and setter methods are evil. Ignore the inflammatory titles: the subheading of the second article, “Make your code more maintainable by avoiding accessors”, is a much better indication of their content. I picked up some great tips on proper use of OOP from reading them. In particular, the section on CRC cards made something click which hadn’t clicked when I looked at them earlier this year for my ill fated University software project.