jamesh is currently certified at Master level.

Name: James Henstridge
Member since: N/A
Last Login: 2008-03-29 00:44:08

FOAF RDF Share This

Homepage: http://www.jamesh.id.au/

Notes:

A GNOME hacker. Author of gnorpm, gnome-python, libglade, pygtk and others. Former maintainer of dia. Contributor to various gnome packages.

[New diary entry] [Planet Gnome] [Planet Ubuntu] [Technorati Profile]

Projects

Articles Posted by jamesh

Recent blog entries by jamesh

Syndication: RSS 2.0

1 May 2008 »

SSL caching on Firefox 3

Since upgrading to Ubuntu Hardy, I’ve been enjoying using Firefox 3.  The reduced memory usage has made a lot of other things nicer to use (I don’t feel like I need to buy more memory now).  One thing that is nice to see fixed is caching of SSL content.

In previous versions of Firefox, SSL content was never cached to disk with the default settings.  While you certainly don’t want all SSL content to be written to disk, a lot of it can be cached without problem.  For example, it is important that the CSS and JavaScript for a page be served via SSL to avoid man in the middle attacks (injecting arbitrary active content into a secure page is bad), but there isn’t much harm in caching them to disk: if the attacker can modify the disk cache then SSL probably doesn’t matter much.

Now it was possible to turn on disk caching in Firefox 2 through the browser.cache.disk_cache_ssl hidden option, but it had a serious drawback: the security information for resources was not saved in the disk cache so you’d get a broken padlock if resources were loaded from the cache.

Firefox 3 fixes up the disk cache to record the security information though, so turning on disk_cache_ssl setting no longer results in a broken padlock.  But what about all the people using Firefox with its default settings (or those who do not want all SSL content cached to disk)?  For these users, the web server can still cause some content to be cached.

By sending the “Cache-Control: public” response header, the server can say that a resource can be stored in the disk cache.  Firefox 3 will respect this irrespective of the disk_cache_ssl setting.  This should bring Firefox back into parity with Internet Explorer with respect to network  performance on SSL web sites.

Syndicated 2008-05-01 09:57:44 from James Henstridge

28 Apr 2008 »

Psycopg migrated to Bazaar

Last week we moved psycopg from Subversion to Bazaar.  I did the migration using Gustavo Niemeyer’s svn2bzr tool with a few tweaks to map the old Subversion committer IDs to the email address form conventionally used by Bazaar.

The tool does a good job of following tree copies and create related Bazaar branches.  It doesn’t have any special handling for stuff in the tags/ directory (it produces new branches, as it does for other tree copies).  To get real Bazaar tags, I wrote a simple post-processing script to calculate the heads of all the branches in a tags/ directory and set them as tags in another branch (provided those revisions occur in its ancestry).  This worked pretty well except for a few revisions synthesised by a previous cvs2svn migration.  As these tags were from pretty old psycopg 1 releases I don’t know how much it matters.

As there is no code browsing set up on initd.org yet, I set up mirrors of the 2.0.x and 1.x branches on Launchpad to do this:

It is pretty cool having access to the entire revision history locally, and should make it easier to maintain full credit for contributions from non-core developers.

Syndicated 2008-04-28 14:07:50 from James Henstridge

15 Apr 2008 »

Psycopg2 2.0.7 Released

Yesterday Federico released version 2.0.7 of psycopg2 (a Python database adapter for PostgreSQL).  I made a fair number of the changes in this release to make it more usable for some of Canonical’s applications.  The new release should work with the development version of Storm, and shouldn’t be too difficult to get everything working with other frameworks.

Some of the improvements include:

  • Better selection of exceptions based on the SQLSTATE result field.  This causes a number of errors that were reported as ProgrammingError to use a more appropriate exception (e.g. DataError, OperationalError, InternalError).  This was the change that broke Storm’s test suite as it was checking for ProgrammingError on some queries that were clearly not programming errors.
  • Proper error reporting for commit() and rollback(). These methods now use the same error reporting code paths as execute(), so an integrity error on commit() will now raise IntegrityError rather than OperationalError.
  • The compile-time switch that controls whether the display_size member of Cursor.description is calculated is now turned off by default.  The code was quite expensive and the field is of limited use (and not provided by a number of other database adapters).
  • New QueryCanceledError and TransactionRollbackError exceptions.  The first is useful for handling queries that are canceled by statement_timeout.  The second provides a convenient way to catch serialisation failures and deadlocks: errors that indicate the transaction should be retried.
  • Fixes for a few memory leaks and GIL misuses. One of the leaks was in the notice processing code that could be particularly problematic for long-running daemon processes.
  • Better test coverage and a driver script to run the entire test suite in one go.  The tests should all pass too, provided your database cluster uses unicode (there was a report just before the release of one test failing for a LATIN1 cluster).

If you’re using previous versions of psycopg2, I’d highly recommend upgrading to this release.

Future work will probably involve support for the DB-API two phase commit extension, but I don’t know when I’ll have time to get to that.

Syndicated 2008-04-15 06:55:50 from James Henstridge

10 Apr 2008 »

Honey Bock Results

Since bottling the honey bock last month, I’ve tried a bottle last week and this week. While it is a very nice beer, the honey flavour is not very noticeable. That said, the second bottle I tried had a slightly stronger honey flavour than the first so it might just need to mature for another month or so.

If I was to do this beer again, it would make sense to use a stronger flavoured honey or just use more honey. Then again, perhaps it isn’t worth trying honey flavoured dark beers.

One beer I’d like to make again is Chilli Beer.  I haven’t seen any commercial equivalent to it, and it was great on a hot summer afternoon.  Since there were chilli pieces in the bottles of the last batch, it got hotter as it matured.  It is an interesting experience where taking a sip of the beer cools your moth down, but it starts heating up again once you swallow.

Syndicated 2008-04-10 12:13:38 from James Henstridge

2 Apr 2008 »

Using email addresses as OpenID identities (almost)

On the OpenID specs mailing list, there was another discussion about using email addresses as OpenID identifiers. So far it has mostly covered existing ground, but there was one comment that interested me: a report that you can log in to many OpenID <acronym title="Relying Party">RP</acronym>s by entering a Yahoo email address.

Now there certainly isn’t any Yahoo-specific code in the standard OpenID libraries, so you might wonder what is going on here. We can get some idea by using the python-openid library:

>>> from openid.consumer.discover import discover
>>> claimed_id, services = discover('example@yahoo.com')
>>> claimed_id
'http://www.yahoo.com/'
>>> services[0].type_uris
['http://specs.openid.net/auth/2.0/server',
 'http://specs.openid.net/extensions/pape/1.0']
>>> services[0].server_url
'https://open.login.yahooapis.com/openid/op/auth'
>>> services[0].isOPIdentifier()
True

So we can see that running the discovery algorithm on the email address has resulted in Yahoo’s standard identifier select endpoint. What we’ve actually seen here is the effect of Section 7.2 at work:

3. Otherwise, the input SHOULD be treated as an http URL; if it does not include a “http” or “https” scheme, the Identifier MUST be prefixed with the string “http://”.

So the email address is normalised to the URL http://example@yahoo.com (which is treated the same as http://yahoo.com/), which is then used for discovery. As shown above, this results in an identifier select request so works for all Yahoo users.

I wonder if the Yahoo developers realised that this would happen and set things up accordingly? If not, then this is a happy accident. It isn’t quite the same as having support for email addresses in OpenID since the user may end up having to enter their email address a second time in the <acronym title="OpenID Provider">OP</acronym> if they don’t already have a session cookie.

It is certainly better than the RP presenting an error if the user accidentally enters an email address into the identity field. It seems like something that any OP offering email addresses to its users should implement.

Syndicated 2008-04-02 08:25:46 from James Henstridge

256 older entries...

 

jamesh certified others as follows:

  • jamesh certified miguel as Master
  • jamesh certified DV as Journeyer
  • jamesh certified federico as Master
  • jamesh certified hp as Master
  • jamesh certified timg as Journeyer
  • jamesh certified vicious as Master
  • jamesh certified terral as Journeyer
  • jamesh certified raph as Master
  • jamesh certified itp as Journeyer
  • jamesh certified yakk as Master
  • jamesh certified mathieu as Journeyer
  • jamesh certified dcm as Master
  • jamesh certified mjs as Master
  • jamesh certified bernhard as Journeyer
  • jamesh certified MJ as Journeyer
  • jamesh certified listen as Journeyer
  • jamesh certified campd as Journeyer
  • jamesh certified advogato as Master
  • jamesh certified sopwith as Master
  • jamesh certified lupus as Journeyer
  • jamesh certified rakholh as Journeyer
  • jamesh certified asmodai as Journeyer
  • jamesh certified alex as Master
  • jamesh certified mbp as Journeyer
  • jamesh certified harold as Journeyer
  • jamesh certified Raphael as Journeyer
  • jamesh certified Radagast as Journeyer
  • jamesh certified LotR as Journeyer
  • jamesh certified goran as Journeyer
  • jamesh certified BeeWarlock as Apprentice
  • jamesh certified krylan as Apprentice
  • jamesh certified msw as Master
  • jamesh certified amk as Journeyer
  • jamesh certified lauris as Master
  • jamesh certified andersca as Master
  • jamesh certified thom as Apprentice
  • jamesh certified fdrake as Journeyer
  • jamesh certified Sarah as Apprentice
  • jamesh certified bratsche as Journeyer
  • jamesh certified jrb as Master
  • jamesh certified Telsa as Journeyer
  • jamesh certified gleblanc as Journeyer
  • jamesh certified timj as Master
  • jamesh certified martin as Master
  • jamesh certified zilch as Journeyer
  • jamesh certified jdub as Master
  • jamesh certified effbot as Master
  • jamesh certified MCArkan as Journeyer
  • jamesh certified gman as Journeyer
  • jamesh certified blizzard as Master
  • jamesh certified malcolm as Journeyer
  • jamesh certified trs80 as Apprentice
  • jamesh certified fxn as Journeyer
  • jamesh certified yosh as Master
  • jamesh certified tromey as Master
  • jamesh certified sri as Apprentice
  • jamesh certified macricht as Journeyer
  • jamesh certified RossBurton as Journeyer
  • jamesh certified fcrozat as Journeyer
  • jamesh certified kristian as Journeyer
  • jamesh certified Darin as Master
  • jamesh certified Ankh as Master
  • jamesh certified Hallski as Master
  • jamesh certified AndrewDSmart as Apprentice
  • jamesh certified hadess as Journeyer
  • jamesh certified jdahlin as Journeyer
  • jamesh certified arvind as Journeyer
  • jamesh certified kiko as Journeyer
  • jamesh certified mwh as Master
  • jamesh certified Jody as Master
  • jamesh certified louie as Master
  • jamesh certified larsrc as Journeyer
  • jamesh certified nlevitt as Journeyer
  • jamesh certified snorp as Journeyer
  • jamesh certified elanthis as Apprentice
  • jamesh certified ndw as Master
  • jamesh certified funrecords as Journeyer
  • jamesh certified mjg59 as Journeyer
  • jamesh certified mpesenti as Master
  • jamesh certified mrd as Journeyer
  • jamesh certified jmason as Master
  • jamesh certified wtogami as Master
  • jamesh certified wingo as Journeyer
  • jamesh certified msevior as Master
  • jamesh certified seb128 as Master
  • jamesh certified keybuk as Master
  • jamesh certified gicmo as Journeyer
  • jamesh certified robertc as Master
  • jamesh certified jblack as Journeyer
  • jamesh certified sivang as Apprentice
  • jamesh certified desrt as Master

Others have certified jamesh as follows:

  • ole certified jamesh as Master
  • raph certified jamesh as Journeyer
  • goran certified jamesh as Master
  • yosh certified jamesh as Journeyer
  • campd certified jamesh as Journeyer
  • LotR certified jamesh as Journeyer
  • bernhard certified jamesh as Journeyer
  • egad certified jamesh as Journeyer
  • andrei certified jamesh as Journeyer
  • Radagast certified jamesh as Journeyer
  • Raphael certified jamesh as Master
  • faassen certified jamesh as Master
  • bombadil certified jamesh as Journeyer
  • harold certified jamesh as Journeyer
  • mathieu certified jamesh as Master
  • booch certified jamesh as Master
  • mbp certified jamesh as Master
  • feldspar certified jamesh as Journeyer
  • timj certified jamesh as Master
  • rconover certified jamesh as Journeyer
  • dcm certified jamesh as Journeyer
  • listen certified jamesh as Master
  • alex certified jamesh as Master
  • mjs certified jamesh as Master
  • jochen certified jamesh as Master
  • duncan certified jamesh as Master
  • MJ certified jamesh as Master
  • zhp certified jamesh as Master
  • lupus certified jamesh as Journeyer
  • rakholh certified jamesh as Master
  • asmodai certified jamesh as Journeyer
  • lordsutch certified jamesh as Master
  • mtearle certified jamesh as Master
  • psj certified jamesh as Master
  • camber certified jamesh as Master
  • yakk certified jamesh as Master
  • tpot certified jamesh as Master
  • taral certified jamesh as Journeyer
  • djs certified jamesh as Master
  • nils certified jamesh as Master
  • ztf certified jamesh as Master
  • mlsm certified jamesh as Journeyer
  • bagfors certified jamesh as Master
  • nelsonrn certified jamesh as Master
  • lauris certified jamesh as Master
  • rodrigo certified jamesh as Master
  • jpick certified jamesh as Master
  • jae certified jamesh as Master
  • jsheets certified jamesh as Master
  • andersca certified jamesh as Master
  • ryuch certified jamesh as Master
  • jules certified jamesh as Master
  • djcb certified jamesh as Master
  • mwh certified jamesh as Master
  • tca certified jamesh as Journeyer
  • nixnut certified jamesh as Master
  • glenn certified jamesh as Master
  • timg certified jamesh as Master
  • lerdsuwa certified jamesh as Master
  • fdrake certified jamesh as Master
  • grem certified jamesh as Master
  • sh certified jamesh as Master
  • gbowland certified jamesh as Master
  • jdub certified jamesh as Master
  • dneighbors certified jamesh as Master
  • amk certified jamesh as Journeyer
  • menthos certified jamesh as Master
  • cuenca certified jamesh as Master
  • exa certified jamesh as Master
  • hub certified jamesh as Master
  • murrayc certified jamesh as Master
  • nzkoz certified jamesh as Master
  • gleblanc certified jamesh as Master
  • baueran certified jamesh as Master
  • jonkare certified jamesh as Master
  • johnsonm certified jamesh as Master
  • baruch certified jamesh as Master
  • cwinters certified jamesh as Master
  • bratsche certified jamesh as Master
  • zilch certified jamesh as Master
  • johnnyb certified jamesh as Master
  • MCArkan certified jamesh as Master
  • ricardo certified jamesh as Master
  • Senra certified jamesh as Master
  • jao certified jamesh as Master
  • fxn certified jamesh as Master
  • trs80 certified jamesh as Master
  • gman certified jamesh as Master
  • braden certified jamesh as Master
  • walters certified jamesh as Master
  • kbreit certified jamesh as Master
  • hadess certified jamesh as Master
  • rkrishnan certified jamesh as Master
  • async certified jamesh as Master
  • sand certified jamesh as Master
  • DarthEvangelusII certified jamesh as Master
  • arvind certified jamesh as Master
  • jdahlin certified jamesh as Master
  • cactus certified jamesh as Master
  • kiko certified jamesh as Master
  • Jody certified jamesh as Master
  • edd certified jamesh as Master
  • larsrc certified jamesh as Master
  • Hallski certified jamesh as Master
  • kristian certified jamesh as Master
  • fcrozat certified jamesh as Master
  • pasky certified jamesh as Master
  • nlevitt certified jamesh as Master
  • elanthis certified jamesh as Master
  • dolphy certified jamesh as Master
  • blm certified jamesh as Master
  • rhestilow certified jamesh as Master
  • zotz certified jamesh as Master
  • Mmarquee certified jamesh as Master
  • strider certified jamesh as Master
  • mrd certified jamesh as Master
  • mdupont certified jamesh as Master
  • mpesenti certified jamesh as Master
  • polak certified jamesh as Master
  • ebf certified jamesh as Master
  • monkeyiq certified jamesh as Master
  • gobry certified jamesh as Master
  • lathiat certified jamesh as Master
  • pycage certified jamesh as Master
  • jmason certified jamesh as Master
  • gheet certified jamesh as Master
  • memeyou certified jamesh as Master
  • wingo certified jamesh as Master
  • mathrick certified jamesh as Master
  • badger certified jamesh as Master
  • gicmo certified jamesh as Master
  • e8johan certified jamesh as Master
  • lucasr certified jamesh as Master
  • jarashi certified jamesh as Master
  • nikole certified jamesh as Master
  • freax certified jamesh as Journeyer
  • pvanhoof certified jamesh as Journeyer
  • jsgotangco certified jamesh as Master
  • jblack certified jamesh as Master
  • behdad certified jamesh as Master
  • mako certified jamesh as Master
  • Burgundavia certified jamesh as Master
  • cinamod certified jamesh as Master
  • gpoo certified jamesh as Master
  • ianclatworthy certified jamesh as Master
  • yosch certified jamesh as Master
  • desrt certified jamesh as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

X
Share this page