<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: mysociety</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/mysociety.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2018-04-25T15:49:39+00:00</updated><author><name>Simon Willison</name></author><entry><title>Exploring the UK Register of Members Interests with SQL and Datasette</title><link href="https://simonwillison.net/2018/Apr/25/register-members-interests/#atom-tag" rel="alternate"/><published>2018-04-25T15:49:39+00:00</published><updated>2018-04-25T15:49:39+00:00</updated><id>https://simonwillison.net/2018/Apr/25/register-members-interests/#atom-tag</id><summary type="html">
    &lt;p&gt;Ever wondered which UK Members of Parliament &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+people_name%2C+person_id%2C+count%28*%29+as+n%2C+group_concat%28item%2C+%22+%3A%3A+%22%29+from+%28select+distinct+item%2C+people.name+as+people_name%2C+person_id%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29+order+by+hash%29%0D%0Agroup+by+people_name%2C+person_id%0D%0Aorder+by+n+desc%3B&amp;amp;search=helicopter"&gt;get gifted the most helicopter rides&lt;/a&gt;? How about &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+distinct+item%2C+people.name%2C+person_id%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29+order+by+hash&amp;amp;search=gift+sultan+brunei"&gt;which MPs have been given Christmas hampers&lt;/a&gt; by the Sultan of Brunei? (David Cameron, William Hague and Michael Howard apparently). Here’s how to dig through the Register of Members Interests using SQL and Datasette.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+distinct+item%2C+people.name%2C+person_id%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29+order+by+hash&amp;amp;search=gift+sultan+brunei" class="a-img"&gt;&lt;img style="max-width: 100%" src="https://static.simonwillison.net/static/2018/mp-gifts-sultan.png" alt="Gifts from the Sultan" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mysociety.org/"&gt;mySociety&lt;/a&gt; have been building incredible civic participation applications like &lt;a href="https://www.theyworkforyou.com/"&gt;TheyWorkForYou&lt;/a&gt; and &lt;a href="https://www.fixmystreet.com/"&gt;FixMyStreet&lt;/a&gt; for nearly 15 years now, and have accumulated all kinds of interesting data along the way.&lt;/p&gt;
&lt;p&gt;They recently launched their own data portal at &lt;a href="https://data.mysociety.org/"&gt;data.mysociety.org&lt;/a&gt; listing all of the information they have available. While exploring it I stumbled across their copy of the &lt;a href="https://data.mysociety.org/datasets/members-interest/"&gt;UK Register of Members Interests&lt;/a&gt;. Every UK Member of Parliament has to &lt;a href="https://www.parliament.uk/mps-lords-and-offices/standards-and-financial-interests/parliamentary-commissioner-for-standards/registers-of-interests/register-of-members-financial-interests/"&gt;register their conflicts of interest and income sources&lt;/a&gt;, and mySociety have an ongoing project to parse that data into a more useful format.&lt;/p&gt;
&lt;p&gt;It won’t surprise you to hear that I couldn’t resist turning their XML files into a SQLite database.&lt;/p&gt;
&lt;p&gt;The result is &lt;a href="https://register-of-members-interests.datasettes.com"&gt;register-of-members-interests.datasettes.com&lt;/a&gt; - a &lt;a href="https://github.com/simonw/datasette"&gt;Datasette&lt;/a&gt; instance running against a SQLite database containing over 1.3 million line-items registered by 1,419 MPs over the course of 18 years.&lt;/p&gt;
&lt;h3&gt;&lt;a id="Some_fun_queries_14"&gt;&lt;/a&gt;Some fun queries&lt;/h3&gt;
&lt;p&gt;A few of my favourites so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which MPs have taken &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+people_name%2C+person_id%2C+count%28*%29+as+n%2C+group_concat%28item%2C+%22+%3A%3A+%22%29+from+%28select+distinct+item%2C+people.name+as+people_name%2C+person_id%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29+order+by+hash%29%0D%0Agroup+by+people_name%2C+person_id%0D%0Aorder+by+n+desc%3B&amp;amp;search=helicopter"&gt;the most donated helicopter rides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Which MPs have accepted &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+distinct+item%2C+people.name%2C+person_id%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29+order+by+hash&amp;amp;search=gift+sultan+brunei"&gt;gifts from the Surtan of Brunei&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A better gifts query with more robust de-duping: here's gifts of &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+item%2C+people.name%2C+max%28date%29+as+max_date%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29%0D%0Agroup+by+item%2C+people.name%2C+person_id%0D%0Aorder+by+max_date+desc&amp;amp;search=hamper"&gt;hampers&lt;/a&gt;, &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+item%2C+people.name%2C+max%28date%29+as+max_date%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29%0D%0Agroup+by+item%2C+people.name%2C+person_id%0D%0Aorder+by+max_date+desc&amp;amp;search=gift+watch"&gt;watches&lt;/a&gt; and &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+item%2C+people.name%2C+max%28date%29+as+max_date%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Awhere+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29%0D%0Agroup+by+item%2C+people.name%2C+person_id%0D%0Aorder+by+max_date+desc&amp;amp;search=glastonbury"&gt;Glastonbury festival tickets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Which MPs own significant shares in &lt;a href="https://register-of-members-interests.datasettes.com/regmem/mps_ranked_by_matching_shareholdings?search=shell"&gt;Shell&lt;/a&gt;, &lt;a href="(https://register-of-members-interests.datasettes.com/regmem/mps_ranked_by_matching_shareholdings?search=apple)"&gt;Apple&lt;/a&gt;, or &lt;a href="https://register-of-members-interests.datasettes.com/regmem/mps_ranked_by_matching_shareholdings?search=bp"&gt;BP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Who has reported &lt;a href="https://register-of-members-interests.datasettes.com/regmem/mps_ranked_by_matching_overseas_line_items?search=saudi+arabia"&gt;the most overseas trips to Saudi Arabia&lt;/a&gt;? The top hit there was Daniel Kawczynski, and it turns out his &lt;a href="https://en.wikipedia.org/wiki/Daniel_Kawczynski"&gt;Wikipedia page&lt;/a&gt; has a section dedicated to his relationship with the kindgom.&lt;/li&gt;
&lt;li&gt;How much do MPs get paid for &lt;a href="https://register-of-members-interests.datasettes.com/regmem/items?_search=Have+I+Got+News+for+You&amp;amp;_sort_desc=date"&gt;appearances on Have I Got News For You&lt;/a&gt;. The going rate seems to be £1,500 but you can find &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+distinct+item%2C+person_id%2C+people.name+from+items+join+people+on+people.id+%3D+items.person_id%0D%0Awhere+%22item%22+not+like+%22%251%2C500%25%22+and+%22item%22+not+like+%22%251500%22+and+%22item%22+like+%22%25%C2%A3%25%22+and+items.rowid+in+%28select+rowid+from+%5Bitems_fts%5D+where+%5Bitems_fts%5D+match+%3Asearch%29+order+by+date+desc+limit+101&amp;amp;search=Have+I+Got+News+For+You"&gt;some interesting discrepancies&lt;/a&gt; if you exclude that value from the results.&lt;/li&gt;
&lt;li&gt;Which MPs are responsible for &lt;a href="https://register-of-members-interests.datasettes.com/regmem?sql=select+%22person_id%22%2C+people.name%2C+count(*)+as+%22count%22%0D%0Afrom+items+join+people+on+items.person_id+%3D+people.id%0D%0Agroup+by+%22person_id%22+order+by+%22count%22+desc+limit+100"&gt;the most total line items reported&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a id="Understanding_the_data_model_23"&gt;&lt;/a&gt;Understanding the data model&lt;/h3&gt;
&lt;p&gt;Most of the action takes place in the &lt;a href="https://register-of-members-interests.datasettes.com/regmem/items"&gt;items&lt;/a&gt; table, where each item is a line-item from an MP’s filing. You can search that table by keyword (see helicopter example above) or apply filters to it using the standard Datasette interface. You can also execute your own SQL directly against the database.&lt;/p&gt;
&lt;p&gt;Each item is filed against a &lt;a href="https://register-of-members-interests.datasettes.com/regmem/categories?_sort=type"&gt;category&lt;/a&gt;. There appears to have been quite a bit of churn in the way that the categories are defined over the years, plus the data is pretty untidy - there are no less than 10 ways of spelling “Remunerated employment, office, profession etc.” for example!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://register-of-members-interests.datasettes.com/regmem/categories" class="a-img"&gt;&lt;img style="max-width: 100%" src="https://static.simonwillison.net/static/2018/mp-categories.png" alt="Categories" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are also a LOT of duplicate items in the set - it appears that MPs frequently list the same item (a rental property for example) every time they fill out the register. SQL DISTINCT clauses can help filter through these, as seen in some of the above examples.&lt;/p&gt;
&lt;p&gt;The data also has the concepts of both &lt;a href="https://register-of-members-interests.datasettes.com/regmem/members"&gt;members&lt;/a&gt; and &lt;a href="https://register-of-members-interests.datasettes.com/regmem/people"&gt;people&lt;/a&gt;. As far as I can tell people are distinct, but members may contain duplicates - presumably to represent MPs who have served more than one term in office. It looks like the member field &lt;a href="https://register-of-members-interests.datasettes.com/regmem/items?_sort_desc=date&amp;amp;member_id__notblank=1"&gt;stopped being populated in March 2015&lt;/a&gt; so analysis is best performed against the people table.&lt;/p&gt;
&lt;p&gt;Once concept I have introduced myself is the &lt;code&gt;record_id&lt;/code&gt;. In the XML documents the items are often grouped together into a related collection, like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;regmem personid=&amp;quot;uk.org.publicwhip/person/10001&amp;quot;
    memberid=&amp;quot;uk.org.publicwhip/member/40289&amp;quot; membername=&amp;quot;Diane Abbott&amp;quot; date=&amp;quot;2014-07-14&amp;quot;&amp;gt;
    &amp;lt;category type=&amp;quot;2&amp;quot; name=&amp;quot;Remunerated employment, office, profession etc&amp;quot;&amp;gt;
        &amp;lt;item&amp;gt;Payments from MRL Public Sector Consultants, Pepple House, 8 Broad Street, Great Cambourne, Cambridge CB23 6HJ:&amp;lt;/item&amp;gt;
        &amp;lt;item&amp;gt;26 November 2013, I received a fee of £1,000 for speaking at the 1st African Legislative Summit, National Assembly, Abuja, Nigeria.  Hours: 8 hrs. The cost of my flights, transfers and hotel accommodation in Abuja were also met; estimated value £5,000. &amp;lt;em&amp;gt;(Registered 3 December 2013)&amp;lt;/em&amp;gt;&amp;lt;/item&amp;gt;
        &amp;lt;item&amp;gt;23 July 2013, I received a fee of £5,000 for appearing as a contestant on ITV&amp;amp;#8217;s &amp;amp;#8216;The Chase Celebrity &amp;amp;#8211; Series 3&amp;amp;#8217; television programme.  Address of payer:  ITV Studios Ltd, London Television Centre, Upper Ground, London SE1 9Lt.  Hours: 12 hrs.   &amp;lt;em&amp;gt;(Registered 23 July 2013)&amp;lt;/em&amp;gt;&amp;lt;/item&amp;gt;
    &amp;lt;/category&amp;gt;
&amp;lt;/regmem&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While these items are presented as separate line items, their grouping carries meaning: the first line item here acts as a kind of heading to help provide context to the other items.&lt;/p&gt;
&lt;p&gt;To model this in the simplest way possible, I’ve attempted to preserve the order of these groups using a pair of additional columns: the &lt;code&gt;record_id&lt;/code&gt; and the &lt;code&gt;sort_order&lt;/code&gt;. I construct the &lt;code&gt;record_id&lt;/code&gt; using a collection of other fields - the idea is for it to be sortable, and for each line-item in the same grouping to have the same &lt;code&gt;record_id&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;record_id = &amp;quot;{date}-{category_id}-{person_id}-{record}&amp;quot;.format(
    date=date,
    category_id=category_id,
    person_id=person_id.split(&amp;quot;/&amp;quot;)[
        -1
    ],
    record=record,
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The resulting &lt;code&gt;record_id&lt;/code&gt; might look like this: &lt;code&gt;2018-04-16-70b64e89-24878-0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To recreate that particular sequence of line-items, you can search for all items matching that &lt;code&gt;record_id&lt;/code&gt; and then sort them by their &lt;code&gt;sort_order&lt;/code&gt;. Here’s &lt;a href="https://register-of-members-interests.datasettes.com/regmem/items?_sort=sort_order&amp;amp;record_id__exact=2014-07-14-1f359ece-10001-0"&gt;that record from Diane Abbott&lt;/a&gt; shown with its surrounding context.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://register-of-members-interests.datasettes.com/regmem/items?_sort=sort_order&amp;amp;record_id__exact=2014-07-14-1f359ece-10001-0" class="a-img"&gt;&lt;img style="max-width: 100%" src="https://static.simonwillison.net/static/2018/mp-record.png" alt="A single record" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a id="How_I_built_it_65"&gt;&lt;/a&gt;How I built it&lt;/h3&gt;
&lt;p&gt;The short version: I downloaded all of the XML files and wrote a Python script which parsed them using &lt;a href="https://docs.python.org/3/library/xml.etree.elementtree.html"&gt;ElementTree&lt;/a&gt; and inserted them into a SQLite database. I’ve &lt;a href="https://github.com/simonw/register-of-members-interests"&gt;put the code on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A couple of fun tricks: firstly, I borrowed some code from &lt;a href="https://github.com/simonw/csvs-to-sqlite"&gt;csvs-to-sqlite&lt;/a&gt; to create the full-text search index and enable searching:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def create_and_populate_fts(conn):
    create_sql = &amp;quot;&amp;quot;&amp;quot;
        CREATE VIRTUAL TABLE &amp;quot;items_fts&amp;quot;
        USING {fts_version} (item, person_name, content=&amp;quot;items&amp;quot;)
    &amp;quot;&amp;quot;&amp;quot;.format(
        fts_version=best_fts_version()
    )
    conn.executescript(create_sql)
    conn.executescript(
        &amp;quot;&amp;quot;&amp;quot;
        INSERT INTO &amp;quot;items_fts&amp;quot; (rowid, item, person_name)
        SELECT items.rowid, items.item, people.name
        FROM items LEFT JOIN people ON items.person_id = people.id
    &amp;quot;&amp;quot;&amp;quot;
    )
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;best_fts_version()&lt;/code&gt; function &lt;a href="https://github.com/simonw/register-of-members-interests/blob/6372cfbc0905c4c045714e9092a981668f2d6345/convert_xml_to_sqlite.py#L56-L71"&gt;implements basic feature detection&lt;/a&gt; against SQLite by trying operations in an in-memory database.&lt;/p&gt;
&lt;p&gt;Secondly, I ended up writing my own tiny utility function for inserting records into SQLite. SQLite has useful &lt;code&gt;INSERT OR REPLACE INTO&lt;/code&gt; syntax which allows you to insert a record and will automatically update an existing record if there is a match on the primary key. This meant I could write this utility function and use it for all of my data inserts:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def insert_or_replace(conn, table, record):
    pairs = record.items()
    columns = [p[0] for p in pairs]
    params = [p[1] for p in pairs]
    sql = &amp;quot;INSERT OR REPLACE INTO {table} ({column_list}) VALUES ({value_list});&amp;quot;.format(
        table=table,
        column_list=&amp;quot;, &amp;quot;.join(columns),
        value_list=&amp;quot;, &amp;quot;.join([&amp;quot;?&amp;quot; for p in params]),
    )
    conn.execute(sql, params)

# ...

insert_or_replace(
    db,
    &amp;quot;people&amp;quot;,
    {
        &amp;quot;id&amp;quot;: person_id,
        &amp;quot;name&amp;quot;: regmem_el.attrib[&amp;quot;membername&amp;quot;],
    },
)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;&lt;a id="What_can_you_find_113"&gt;&lt;/a&gt;What can you find?&lt;/h3&gt;
&lt;p&gt;I’ve really only scratched the surface of what’s in here with my initial queries. What can you find? Send me Datasette query links &lt;a href="https://twitter.com/simonw"&gt;on Twitter&lt;/a&gt; with your discoveries!&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/political-hacking"&gt;political-hacking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/politics"&gt;politics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite"&gt;sqlite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml"&gt;xml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="mysociety"/><category term="political-hacking"/><category term="politics"/><category term="projects"/><category term="sqlite"/><category term="xml"/><category term="datasette"/></entry><entry><title>ScenicOrNot</title><link href="https://simonwillison.net/2009/May/12/scenicornot/#atom-tag" rel="alternate"/><published>2009-05-12T13:32:53+00:00</published><updated>2009-05-12T13:32:53+00:00</updated><id>https://simonwillison.net/2009/May/12/scenicornot/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://scenic.mysociety.org/"&gt;ScenicOrNot&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
MySociety are crowdsourcing opinions on how “scenic” different parts of the UK are, by rating representative photos from Geograph.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/crowdsourcing"&gt;crowdsourcing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geograph"&gt;geograph&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scenicornot"&gt;scenicornot&lt;/a&gt;&lt;/p&gt;



</summary><category term="crowdsourcing"/><category term="geograph"/><category term="mysociety"/><category term="scenicornot"/></entry><entry><title>Quoting Tom Steinberg</title><link href="https://simonwillison.net/2009/Jan/22/badnews/#atom-tag" rel="alternate"/><published>2009-01-22T10:20:49+00:00</published><updated>2009-01-22T10:20:49+00:00</updated><id>https://simonwillison.net/2009/Jan/22/badnews/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://www.mysociety.org/2009/01/21/blimey-it-looks-like-the-internets-won/#comment-59073"&gt;&lt;p&gt;There's no such thing as a good day to bury bad news any more, the Internet has seen to that.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://www.mysociety.org/2009/01/21/blimey-it-looks-like-the-internets-won/#comment-59073"&gt;Tom Steinberg&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/internet"&gt;internet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/news"&gt;news&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tom-steinberg"&gt;tom-steinberg&lt;/a&gt;&lt;/p&gt;



</summary><category term="internet"/><category term="mysociety"/><category term="news"/><category term="tom-steinberg"/></entry><entry><title>Quoting Tom Steinberg</title><link href="https://simonwillison.net/2008/Oct/21/mysociety/#atom-tag" rel="alternate"/><published>2008-10-21T22:29:18+00:00</published><updated>2008-10-21T22:29:18+00:00</updated><id>https://simonwillison.net/2008/Oct/21/mysociety/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://www.mysociety.org/2008/10/15/some-words-on-the-future-from-my-5th-anniversary-address/"&gt;&lt;p&gt;Government in the UK once lead the world in it's own information systems, breaking Enigma, documenting an empire's worth of trade. And then it fired everyone who could do those things, or employed them only via horribly expensive consultancies. It is time to start bringing them back into the corridors of power.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://www.mysociety.org/2008/10/15/some-words-on-the-future-from-my-5th-anniversary-address/"&gt;Tom Steinberg&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/government"&gt;government&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/it"&gt;it&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tom-steinberg"&gt;tom-steinberg&lt;/a&gt;&lt;/p&gt;



</summary><category term="government"/><category term="it"/><category term="mysociety"/><category term="tom-steinberg"/></entry><entry><title>Video speech matching on TheyWorkForYou.com</title><link href="https://simonwillison.net/2008/Jun/1/video/#atom-tag" rel="alternate"/><published>2008-06-01T13:52:55+00:00</published><updated>2008-06-01T13:52:55+00:00</updated><id>https://simonwillison.net/2008/Jun/1/video/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.theyworkforyou.com/video/"&gt;Video speech matching on TheyWorkForYou.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Launched this morning at BarCamp London by Matthew Somerville—TheyWorkForYou now has video from BBC Parliament but they need your help matching it exactly to their transcripts from Hansard. Neat example of a game that helps process large amounts of data.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/barcamplondon"&gt;barcamplondon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/barcamplondon4"&gt;barcamplondon4&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/government"&gt;government&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/matthew-somerville"&gt;matthew-somerville&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/political-hacking"&gt;political-hacking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/theyworkforyou"&gt;theyworkforyou&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/timestamping"&gt;timestamping&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/video"&gt;video&lt;/a&gt;&lt;/p&gt;



</summary><category term="barcamplondon"/><category term="barcamplondon4"/><category term="government"/><category term="matthew-somerville"/><category term="mysociety"/><category term="political-hacking"/><category term="theyworkforyou"/><category term="timestamping"/><category term="video"/></entry><entry><title>Lessons from mySociety conversion tracking</title><link href="https://simonwillison.net/2008/Mar/17/mysociety/#atom-tag" rel="alternate"/><published>2008-03-17T02:12:06+00:00</published><updated>2008-03-17T02:12:06+00:00</updated><id>https://simonwillison.net/2008/Mar/17/mysociety/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.mysociety.org/2008/03/13/lessons-from-mysociety-conversion-tracking/"&gt;Lessons from mySociety conversion tracking&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat trick: show the user a “subscribe” form with their e-mail address pre-filled for them and there’s a much higher chance that they’ll click the button.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/conversions"&gt;conversions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/email"&gt;email&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/marketing"&gt;marketing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;&lt;/p&gt;



</summary><category term="conversions"/><category term="email"/><category term="marketing"/><category term="mysociety"/></entry><entry><title>WhatDoTheyKnow</title><link href="https://simonwillison.net/2008/Mar/4/whatdotheyknow/#atom-tag" rel="alternate"/><published>2008-03-04T23:38:46+00:00</published><updated>2008-03-04T23:38:46+00:00</updated><id>https://simonwillison.net/2008/Mar/4/whatdotheyknow/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.whatdotheyknow.com/"&gt;WhatDoTheyKnow&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
New from mySociety: a site for submitting and publically tracking Freedom of Information requests to the UK government.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.mysociety.org/2008/02/22/mysocietys-freedom-of-information-site-goes-live/"&gt;mySociety&amp;#x27;s Freedom of Information site goes live&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/foi"&gt;foi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/government"&gt;government&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/political-hacking"&gt;political-hacking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/whatdotheyknow"&gt;whatdotheyknow&lt;/a&gt;&lt;/p&gt;



</summary><category term="foi"/><category term="government"/><category term="mysociety"/><category term="political-hacking"/><category term="whatdotheyknow"/></entry><entry><title>Dynamic Time-Travel Maps</title><link href="https://simonwillison.net/2008/Jan/23/dynamic/#atom-tag" rel="alternate"/><published>2008-01-23T21:06:24+00:00</published><updated>2008-01-23T21:06:24+00:00</updated><id>https://simonwillison.net/2008/Jan/23/dynamic/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://radar.oreilly.com/archives/2008/01/dynamic-time-maps-stamen-mysociety.html"&gt;Dynamic Time-Travel Maps&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Absolutely beautiful dynamic implementation of Chris Lightfoot’s Time Travel project, put together by Stamen Design and MySociety. Drag sliders to specify your preferred commute and housing budget to see where in London you can live.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/chris-lightfoot"&gt;chris-lightfoot&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/stamen-design"&gt;stamen-design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/timetravel"&gt;timetravel&lt;/a&gt;&lt;/p&gt;



</summary><category term="chris-lightfoot"/><category term="mysociety"/><category term="stamen-design"/><category term="timetravel"/></entry><entry><title>FixMySpine</title><link href="https://simonwillison.net/2008/Jan/18/graceful/#atom-tag" rel="alternate"/><published>2008-01-18T23:25:46+00:00</published><updated>2008-01-18T23:25:46+00:00</updated><id>https://simonwillison.net/2008/Jan/18/graceful/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.jpstacey.info/blog/2008/01/18/fixmyspine/"&gt;FixMySpine&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
JP muses over what would happen if huge government IT contracts were handed to small, agile teams like MySociety instead of gargantuan IT consultancies. I’ve often wondered the same thing.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/consultancies"&gt;consultancies&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fixmyspine"&gt;fixmyspine&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fixmystreet"&gt;fixmystreet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/government"&gt;government&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/it"&gt;it&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jp-stacey"&gt;jp-stacey&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;&lt;/p&gt;



</summary><category term="consultancies"/><category term="fixmyspine"/><category term="fixmystreet"/><category term="government"/><category term="it"/><category term="jp-stacey"/><category term="mysociety"/></entry><entry><title>Oxford Geek Night 4</title><link href="https://simonwillison.net/2007/Nov/27/oxford/#atom-tag" rel="alternate"/><published>2007-11-27T21:04:01+00:00</published><updated>2007-11-27T21:04:01+00:00</updated><id>https://simonwillison.net/2007/Nov/27/oxford/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://oxford.geeknights.net/2007/nov-28th/"&gt;Oxford Geek Night 4&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tomorrow night, usual venue. Topics include mySociety, Pylons, MythTV and more.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/events"&gt;events&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mythtv"&gt;mythtv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oxford-geek-nights"&gt;oxford-geek-nights&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pylons"&gt;pylons&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="events"/><category term="mysociety"/><category term="mythtv"/><category term="oxford-geek-nights"/><category term="pylons"/><category term="python"/></entry><entry><title>mySociety Disruptive Technology Talks</title><link href="https://simonwillison.net/2007/Sep/24/mysociety/#atom-tag" rel="alternate"/><published>2007-09-24T17:51:25+00:00</published><updated>2007-09-24T17:51:25+00:00</updated><id>https://simonwillison.net/2007/Sep/24/mysociety/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.mysociety.org/2007/09/24/mysociety-disruptive-technology-talks/"&gt;mySociety Disruptive Technology Talks&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Four great talks coming up in London this Autumn, courtesy of the lovely folk at mySociety.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/london"&gt;london&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/my-talks"&gt;my-talks&lt;/a&gt;&lt;/p&gt;



</summary><category term="london"/><category term="mysociety"/><category term="my-talks"/></entry><entry><title>Neighbourhood Fix-It</title><link href="https://simonwillison.net/2007/Feb/17/fixit/#atom-tag" rel="alternate"/><published>2007-02-17T17:05:24+00:00</published><updated>2007-02-17T17:05:24+00:00</updated><id>https://simonwillison.net/2007/Feb/17/fixit/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.neighbourhoodfixit.com/"&gt;Neighbourhood Fix-It&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Report problems to your council across the UK. The most detailed Ordinance Survey maps anywhere online, and a superb example of progressive enhancement in action—the maps work without JavaScript, and the site even works without images!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/barcamplondon2"&gt;barcamplondon2&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/maps"&gt;maps&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/matthew-somerville"&gt;matthew-somerville&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/progressive-enhancement"&gt;progressive-enhancement&lt;/a&gt;&lt;/p&gt;



</summary><category term="barcamplondon2"/><category term="javascript"/><category term="maps"/><category term="matthew-somerville"/><category term="mysociety"/><category term="progressive-enhancement"/></entry><entry><title>They Work For You</title><link href="https://simonwillison.net/2004/Jun/6/theyWorkForYou/#atom-tag" rel="alternate"/><published>2004-06-06T21:51:21+00:00</published><updated>2004-06-06T21:51:21+00:00</updated><id>https://simonwillison.net/2004/Jun/6/theyWorkForYou/#atom-tag</id><summary type="html">
    &lt;p id="p-0"&gt;Today is/was (you never can tell with these wretched time zone differences) &lt;a href="http://www.xcom2002.com/nc04/"&gt;NotCon 2004&lt;/a&gt;, London's premiere low-cost, informal, one-day technology conference. Friday's &lt;a href="http://www.ntk.net/2004/06/04/"&gt;MiniNTK&lt;/a&gt; promised the &lt;q cite="http://www.ntk.net/2004/06/04/"&gt;unveiling of a new project from the people behind FaxYourMP and PublicWhip&lt;/q&gt; and sure enough, here it is: &lt;a href="http://www.theyworkforyou.com/"&gt;TheyWorkForYou.com&lt;/a&gt;.&lt;/p&gt;

&lt;p id="p-1"&gt;TheyWorkForYou.com is the finest example of a &lt;a href="/2004/Feb/17/hackingPolitics/" title="Hacking the political system"&gt;political hack&lt;/a&gt; I've ever seen. It's basically an ultra-user-friendly front-end to the Hansard public record of all speeches and debates in the houses of commons, with each &lt;acronym title="Member of Parliament"&gt;MP&lt;/acronym&gt; getting their own page complete with a summary of their recent performance and member's interests and a list of their recently recorded parliamentary appearances.&lt;/p&gt;

&lt;p id="p-2"&gt;The community features are pretty impressive as well: you can add comments to any speech made in any debate, and there's also a &lt;a href="http://www.theyworkforyou.com/addterm/"&gt;user-populated glossary&lt;/a&gt; which is automatically linked in to the speech transcripts.&lt;/p&gt;

&lt;p id="p-3"&gt;But with all that, the most useful feature is probably the most subtle: you can subscribe to an &lt;acronym title="Really Simple Syndication"&gt;RSS&lt;/acronym&gt; feed of your &lt;acronym title="Member of Parliament"&gt;MP&lt;/acronym&gt;'s appearances, meaning you can keep track of everything they say on your behalf. It's simple, powerful and a perfect example of the political hacker ethic at work.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mysociety"&gt;mysociety&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/political-hacking"&gt;political-hacking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/politics"&gt;politics&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="mysociety"/><category term="political-hacking"/><category term="politics"/></entry></feed>