Simon Willison’s Weblog

Subscribe
Atom feed for recovered

213 items tagged “recovered”

2010

Journalism Warning Labels. These are absolutely fantastic. “I’ve been putting them on copies of the free papers that I find on the London Underground. You might want to as well.”

# 14th August 2010, 11:16 am / journalism, tom-scott, recovered

The Pac-Man Dossier. Exuberantly detailed. Everything from how collision detection works to the exact pathfinding and target selection algorithms used by the four different ghosts. There’s even a tutorial for playing the legendary 256th level, where an overflow bug corrupts one half of the screen.

# 11th August 2010, 11:20 am / games, pacman, recovered, game-design

When all of human endeavor falls under the rubric of the “hack” the word ceases to mean anything. Hack your commute, take public transit! Hack your next dinner party with parlour games. Delightfully clever key hack keeps all your keys on the same ring. Hack Mexican food with a “burrito” sized tortilla! Hack your brain with REM sleep. Hack the sun with a straw hat. Hack hygiene with silver oxide “deodorant”. Hack girls with compliments. Hack your windowsill with a pot of wheatgrass, and hack the sky with the goddamn moon.

qwzybug on Hacker News

# 10th August 2010, 11:54 am / funny, hacker-news, hacks, recovered

Closure Compiler Service (via) A hosted version of the Google Closure Compiler (JavaScript minifier) running on App Engine. It has both a user interface and a REST API, which means you can use it as part of an automated build process without needing to set up a local copy of the software.

# 9th August 2010, 1:17 pm / apis, closure, google, javascript, minification, rest, recovered

Writing your own traceroute in Python. How to implement traceroute in Python, using the low-level socket module.

# 9th August 2010, 12:58 pm / networking, python, socket, traceroute, recovered

Airships: a second age. Telegraph profile of Hybrid Air Vehicles, a company that is building a new generation of ultra-lightweight airships at Cardington in Bedford, initially aimed at lengthy surveillance missions over Afghanistan.

# 9th August 2010, 12:34 pm / airships, zeppelins, recovered

My ability to decide how I feel about Wikileaks’ activities is totally annihilated by my ongoing realization that it cannot possibly be real. It’s a plot device in a near-future thriller novel. I mean, seriously, semi-stateless man with an unusual appearance uses an army of anonymous allies to expose governments’ secrets, and posts an insurance file in public with some kind of deadman switch in case he’s taken out by his enemies? That shit does not happen in real life. Julian Assange is a Neal Stephenson character who’s escaped in to the real world.

Tomorrowful on MetaFilter

# 1st August 2010, 12:30 am / julian-assange, metafilter, neal-stephenson, wikileaks, recovered

Hookbox (via) For most web projects, I believe implementing any real-time comet features on a separate stack from the rest of the application makes sense—keep using Rails, Django or PHP for the bulk of the application logic, and offload any WebSocket or Comet requests to a separate stack built on top of something like Node.js, Twisted, EventMachine or Jetty. Hookbox is the best example of that philosophy I’ve yet seen—it’s a Comet server that makes WebHook requests back to your regular application stack to check if a user has permission to publish or subscribe to a given channel. “The key insight is that all application development with hookbox happens either in JavaScript or in the native language of the web application itself”.

# 29th July 2010, 9:48 am / comet, django, hookbox, javascript, michael-carter, php, rails, webhooks, recovered

canto.js: An Improved HTML5 Canvas API (via) Improved is an understatement: canto adds jQuery-style method chaining, the ability to multiple coordinates to e.g. lineTo at once, relative coordinate methods (regular Canvas does everything in terms of absolute coordinates), the ability to use degrees instead of radians, a rounded corner shortcut, a more convenient .revert() method and a simple parser that can understand SVG path expressions! The only catch: it uses getters and setters so won’t work in IE.

# 29th July 2010, 9:39 am / canto, canvas, david-flanagan, html5, javascript, svg, recovered

nodejitsu’s node-http-proxy (via) Exactly what I’ve been waiting for—a robust HTTP proxy library for Node that makes it trivial to proxy requests to a backend with custom proxy behaviour added in JavaScript. The example app adds an artificial delay to every request to simulate a slow connection, but other exciting potential use cases could include rate limiting, API key restriction, logging, load balancing, lint testing and more besides.

# 28th July 2010, 11:34 pm / http, javascript, node, nodejs, proxy, recovered

Jeremiah Grossman: I know who your name, where you work, and live. Appalling unfixed vulnerability in Safari 4 and 5 —if you have the “AutoFill web forms using info from my Address Book card” feature enabled (it’s on by default) malicious JavaScript on any site can steal your name, company, state and e-mail address—and would be able to get your phone number too if there wasn’t a bug involving strings that start with a number. The temporary fix is to disable that preference.

# 22nd July 2010, 8:44 am / apple, autocomplete, browsers, exploit, safari, security, vulnerability, recovered

What to do when PyPI goes down. My deployment scripts tend to rely on PyPI these days (they install dependencies in to a virtualenv) which makes me distinctly uncomfortable. Jacob explains how to use the PyPI mirrors that are starting to come online, but that won’t help if the PyPI listing links to an externally hosted file which starts to 404, as happened with the python-openid package quite recently (now fixed). The comments on the post discuss workarounds, including hosting your own PyPI mirror or bundling tar.gz files of your dependencies with your project.

# 21st July 2010, 10:19 am / deployment, jacob-kaplan-moss, packaging, pip, pypi, python, setuptools, recovered

[UPDATE] Spatial Search in Apache Lucene and Solr. Spacial search is finally coming (back) to Solr—trunk now supports sorting and boosting by distance.

# 20th July 2010, 6:28 pm / lucene, search, solr, spatialsearch, recovered

Easier custom Model Manager Chaining. A neat solution to the problem of wanting to write a custom QuerySet method (.published() for example) which is also available on that model’s objects manager, without having to write much boilerplate.

# 20th July 2010, 6:21 pm / django, orm, queryset, recovered

Three new features for reddit gold. Reddit’s experiments with a subscriber program are interesting to watch. 9,000 people signed up as subscribers without there being any benefit at all, and they’re now being rewarded with the ability to opt out of ads and access to computationally expensive features (like different ways of sorting their own user page) that wouldn’t scale for the entire user base.

# 20th July 2010, 5:54 pm / ads, reddit, scaling, subscriptions, recovered

simplegeo’s python-oauth2. The Python OAuth library scene is frighteningly complicated at the moment. This seems to be the most actively maintained, and the readme includes working example code for talking to the Twitter API (including integration with Django auth).

# 18th July 2010, 5:22 pm / django, oauth, oauth2, python, simplegeo, twitter, recovered

Multi-node: Concurrent NodeJS HTTP Server. Kris Zyp’s library for spawning multiple Node child processes (one per core is suggested) for concurrent request handling, taking advantage of Node’s child_process module. This alleviates the need to run multiple Node instances behind an nginx load balancer in order to take advantage of multiple cores.

# 15th July 2010, 8:22 am / javascript, kriszyp, nginx, node, recovered

DNode: Asynchronous Remote Method Invocation for Node.js and the Browser. Mind-bendingly clever. DNode lets you expose a JavaScript function so that it can be called from another machine using a simple JSON-based network protocol. That’s relatively straight-forward... but DNode is designed for asynchronous environments, and so also lets you pass callback functions which will be translated in to references and used to make remote method invocations back to your original client. And to top it off, there’s a browser client library so you can perform the same trick over a WebSocket between a browser and a server.

# 11th July 2010, 2:27 pm / async, dnode, james-halliday, javascript, json, node, recovered

Diffable: only download the deltas. JavaScript library for detecting and serving diffs to JavaScript rather than downloading large scripts every time a few lines of code are changed. “Using Diffable has reduced page load times in Google Maps by more than 1200 milliseconds (~25%). Note that this benefit only affects users that have an older version of the script in cache. For Google Maps that’s 20-25% of users.”

# 11th July 2010, 12:19 pm / diffable, google-maps, javascript, performance, steve-souders, recovered

MapOSMatic. Clever service built on top of OpenStreetMap, which renders double sided city maps with a map and grid on one size and an A-Z street name index on the other. Runs on top of Mapnik, PostGIS and Cairo, with a few thousand additional lines of Python and Django.

# 11th July 2010, 12:15 pm / cairo, django, maposmatic, mapping, openstreetmap, postgis, postgresql, python, recovered

getlatlon.com commit dae961a... I’ve finally added an OpenStreetMap tab to getlatlon.com—here’s the diff, it turns out adding a custom OpenStreetMap layer to an existing Google Maps application only takes a few lines of boilerplate code.

# 10th July 2010, 12:22 pm / getlatlon, google-maps, javascript, openstreetmap, projects, recovered

How we deploy new features. GitHub are experimenting with using Redis for configuration management. I’ve been thinking about this recently too—managing feature flags feels like an ideal use-case for Redis, since it lets you read multiple values on every page access without adding a bunch of extra read traffic on your regular database.

# 8th July 2010, 10:04 am / github, redis, recovered, feature-flags

S.Korea ends Microsoft’s online shopping monopoly. The crazy rules mandating Active X based encryption for government and e-commerce sites have finally been dropped, after the Korea Communications Commission found them “unfit for a new Internet environment involving smartphones”.

# 5th July 2010, 8:21 am / activex, korea, microsoft, recovered

python/trunk/Lib/httplib.py in 1994 (via) Python’s original httplib implementation, checked in by Guido 16 years and 4 months ago. Not much younger than the Web itself.

# 4th July 2010, 11:25 pm / guido-van-rossum, http, httplib, python, recovered

Python 2.7 Release. Includes three of my favourite features from Python 3: odicts, set literals and set and dictionary comprehensions.

# 4th July 2010, 11:21 pm / dictionaries, odict, python, python3, sets, recovered

Escaping regular expression characters in JavaScript (updated). The JavaScript regular expression meta-character escaping code I posted back in 2006 has some serious flaws—I’ve just posted an update to the original post.

# 4th July 2010, 6:23 pm / escaping, javascript, regular-expressions, recovered

Repolygonizing Fonts (via) Part of Scribd’s fascinating series of posts explaining how their document conversion technology works.

# 30th June 2010, 1:04 pm / fonts, scribd, recovered

jQuery.queueFn. “Execute any jQuery method or arbitrary function in the animation queue”. I’m surprised this isn’t baked in to jQuery itself—the plugin is only a few lines of code.

# 30th June 2010, 12:59 pm / ben-alman, javascript, jquery, recovered

Conflict Minerals and Blood Tech. Capacitors are made from tantalum. Tantalum is extracted from coltan ore. 20% of the world’s supply of coltan is conflict metal from the Congo, and funds the world’s most vicious conflict.

# 30th June 2010, 12:57 pm / capacitors, coltan, conflictmetal, congo, tantalum, recovered

Getting married and going travelling

Visit Getting married and going travelling

It’s been a busy month. On Saturday the 5th of June I married the wonderful Natalie Downe in a beautiful ceremony at Roedean School in Brighton. The reception had owls, cheese, a ferret, a golden eagle, amazing Turkish food, Jewish chair dancing and lovely guests. It was the happiest day of my life.

[... 342 words]