Simon Willison’s Weblog

Subscribe

June 2008

June 20, 2008

This is the new blog-spam. [...] 'web design company' takes the highest ranking comment from reddit, and posts it on the site that the original comment is based on. [...] Neat eh? They get to have links on a site that won't get blog-spam filtered, because the comment is 'relevant', since the comment originates from a comment thread about the site.

ator_fighting_eagle

# 6:55 pm / reddit, spam, commentspam

We’re all ops people now. Edd’s experience reflects my own: the kind of systems I’m building these days involve way more than just development, they often involve significant sysadmin type skills as well. Desperately need to get better at that stuff.

# 9:02 pm / edddumbill, ops, sysadmin, skills

June 21, 2008

Comic Sans, the Film. “A documentary film coming soon”

# 12:27 am / funny, comicsans, typography

Arbitrary code execution vulnerabilities in Ruby (via) Sounds nasty—integer overflows and unsafe allocs leading to memory corruption. Definite DoS and possible code injection as well. Upgrade to Ruby “1.8.5-p231, or 1.8.6-p230, or 1.8.7-p22” ASAP.

# 8:44 am / ruby, security

jsontime. Nat and I threw this together this morning—it runs on Google App Engine and exposes Python’s pytz timezone library over JSONP.

# 7:07 pm / jsontime, json, javascript, api, projects, python, pytz, appengine

June 23, 2008

Removing Microformats from bbc.co.uk/programmes. “Until these issues are resolved the BBC semantic markup standards have been updated to prevent the use of non-human-readable text in abbreviations.”

# 9:04 pm / bbc, microformats, abbr, accessibility

June 24, 2008

The point of “Open” in OpenID

TechCrunch report that Microsoft are accepting OpenID for their new HealthVault site, but with a catch: you can only use OpenIDs from two providers: Trustbearer (who offer two-factor authentication using a hardware token) and Verisign. "Whatever happened to the Open in OpenID?", asks TechCrunch’s Jason Kincaid.

[... 451 words]

Tailor. “Tailor is a tool to migrate or replicate changesets between ArX, Bazaar, Bazaar-NG, CVS, Codeville, Darcs, Git, Mercurial, Monotone, Subversion and Tla repositories.”—written in Python.

# 9:59 am / python, tailor, bazaar, cvs, codeville, dvcs, darcs, git, mercurial, monotone, subversion, tla, version-control

The basics of creating a tumblelog with Django (via) Ryan Berg suggests having a StreamItem model that links uses a GenericForeignKey to link to other content types, then using signals to cause a StreamItem to be created for every other model type. I should switch to doing that on this blog: at the moment I have to query three separate tables to build the tumblelog part which results in messy code for ordering and pagination.

# 11:09 am / ryan-berg, django, python, tumblelog, genericforeignkey, contenttypes

Django snippets: Command to dump data as a python script. Extremely useful—dumps the data for an application as an executable Python script which will re-import it in to another database without any risk of colliding with existing IDs, sorting out foreign keys along the way.

# 12:07 pm / django, python, import, django-snippets

Oxford Geek Night 7: 25 June 2008. I won’t be able to make this one, but a reminder for anyone in the area that the seventh Oxford Geek Night takes place tomorrow night at the Jericho Tavern.

# 2:55 pm / events, oxford, oxford-geek-nights

mod_rpaf for Apache. A more secure alternative to Django’s equivalent middleware: sets the REMOTE_ADDR of incoming requests from whitelisted load balancers to the X-Forwarded-For header, without any risk that if the load balancers are missing attackers could abuse it to spoof their IP addresses.

# 5:02 pm / django, middleware, apache, rpaf, modrpaf, security, xforwardedfor, http, load-balancing

OpenID is a new and maturing technology, and HealthVault is frankly the most sensitive relying party in the OpenID ecosystem. It just makes sense for us to take our first steps carefully.

Sean Nolan

# 6:29 pm / openid, healthvault, security, seannolan

June 25, 2008

You may find that there are plenty of job listings where the job requirements are described as, “must be expert with Photoshop and Illustrator…” or something long those lines. Ignore those job listings; they’re placed by inept and sick companies looking for decorators, not designers.

Andy Rutledge

# 7:17 pm / design, jobs, photoshop, illustrator, andy-rutledge

June 26, 2008

BUG: XSS Security flaw in BaseCamp Messages (via) BaseCamp lets users include HTML and JavaScript in messages, on the basis that anyone with a BaseCamp account is a trusted party. I’m not convinced: you could use this to circumvent BaseCamp’s access control stuff and read messages you’re not meant to. On the flip side, you could also use this to add brand new features to BaseCamp by using JavaScript in a message as a server-side equivalent to Greasemonkey.

# 9:39 am / greasemonkey, basecamp, security, xss, 37-signals, javascript

Bill Gates has pulled off one of the greatest hacks in technology and business history, by turning Microsoft's success into a force for social responsibility. Imagine imposing a tax on every corporation in the developed world, collecting $100 per white-collar worker per year, and then directing one third of the proceeds to curing AIDS and malaria.

Anil Dash

# 5:17 pm / bill-gates, anil-dash, hacks, aids, malaria, microsoft, philanthropy

June 27, 2008

CookBookNewFormsFieldOrdering. Handy tip—change the order of fields in a Django newforms instance by over-riding form.fields.keyOrder (since fields is a SortedDict).

# 1:02 am / newforms, django, python, tip

OAuth for Google Data APIs (via) Awesome. Now, how’s OAuth support shaping up over at Twitter (who are serious offenders when it comes to encouraging the password anti-pattern, despite Twitter engineers being key to the creation of the original OAuth spec)?

# 7:49 am / oauth, twitter, google-data, google, apis

sfical.py. Neat idea: write a CGI script that turns a proprietary API (in this case the SalesForce events API) in to standard ical format, then run it on your Mac’s local Apache server and subscribe to it from iCal.

# 8:09 am / osx, mac, cgi, salesforce, simon-fell, apache, ical

How-to: Full-text search in Google App Engine. Use search.SearchableModel instead of db.Model—it’s pretty rough at the moment which is probably why it’s still undocumented.

# 8:25 am / googleappengine, appengine, full-text-search, python, search

He/She/They: Grammar and Facebook. Facebook are going to start requiring gender information because foreign language translations wind up being too confusing when that information is not available. Aside: I wish they’d implement proper title elements on their blog posts.

# 9:06 am / i18n, grammar, gender, facebook, l10n, usability

The Cron Commandments. How to write well-behaved cron scripts, from Dean Wilson.

# 9:48 am / deanwilson, cron, unix

Browser Uploads to S3 using HTML POST Forms. I didn’t know you could do this: create a regular HTML form that gives people permission to upload direct to your own S3 bucket, using a signed JSON policy statement in a hidden form field to prevent third parties from abusing your S3 account.

# 12:11 pm / s3, amazon, aws, forms, post, json, signing

Capital FM London Traffic Map. We launched this today at GCap (née Global Radio). I’m particularly impressed with how well the team handled clustering the traffic cameras on the Google map.

# 6:22 pm / gcap, google-maps, clustering, traffic, capitalfm, london

Module Pattern Provides No Privacy... at least not in JavaScript(TM) (via) JavaScript variables hidden inside a closure aren’t as hidden as I thought—it turns out you can pass a closure as the second argument to eval (at least in Firefox) and “steal” private variables back out of it.

# 7:01 pm / closures, javascript, firefox, modulepattern, pete-michaux

June 28, 2008

How to sell your software for $20,000 (via) The best article I’ve read on software entrepreneurship in ages.

# 9:21 am / software, entrepreneurship, business, startups

BBC iPlayer Beta. Preview of the new version of the iPlayer. Nice to be able to listen to Radio programmes in the same interface as TV without having to use the cramped popup window.

# 9:35 pm / bbc, iplayer, radio

RefactorMyCode.com. Neat community for discussing improvements to code snippets. Login using OpenID.

# 11:46 pm / refactoring, openid, community, refactormycode

2008 » June

MTWTFSS
      1
2345678
9101112131415
16171819202122
23242526272829
30