<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-19303585</atom:id><lastBuildDate>Wed, 14 Apr 2010 20:14:41 +0000</lastBuildDate><title>John Graham-Cumming</title><description></description><link>http://www.jgc.org/blog/</link><managingEditor>noreply@blogger.com (John Graham-Cumming)</managingEditor><generator>Blogger</generator><openSearch:totalResults>390</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-6600938355891121399</guid><pubDate>Wed, 14 Apr 2010 20:14:00 +0000</pubDate><atom:updated>2010-04-14T20:14:41.187Z</atom:updated><title>This blog has moved</title><atom:summary type='text'>       This blog is now located at http://blog.jgc.org/.       You will be automatically redirected in 30 seconds, or you may click here.       For feed subscribers, please update your feed subscriptions to       http://blog.jgc.org/feeds/posts/default.  </atom:summary><link>http://www.jgc.org/blog/2010/04/this-blog-has-moved.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-6409436990239575755</guid><pubDate>Wed, 14 Apr 2010 08:14:00 +0000</pubDate><atom:updated>2010-04-14T09:34:56.236Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>The right people with the wrong idea</title><atom:summary type='text'>A couple of months ago I was hanging around the Y Combinator offices scouting start-ups when Paul Graham introduced me to a guy called Paul Biggar.  Paul had this crazy idea about offering a better commenting system for news web sites.  A sort of Disqus just for newspapers.  I didn't think it was a very good idea, but I offered to help anyway because Paul seemed like the right person with the </atom:summary><link>http://www.jgc.org/blog/2010/04/right-people-with-wrong-idea.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-4886932387498796637</guid><pubDate>Tue, 13 Apr 2010 13:16:00 +0000</pubDate><atom:updated>2010-04-13T13:21:07.239Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rants and raves</category><title>Witch doctors should be available on the NHS</title><atom:summary type='text'>One of my relations wrote to his MP opposing the MP's position on funding homeopathy through the NHS. Here's the interesting bit of the MP's reply: Thanks for your e-mail. There are many people who consider that homeopathy is beneficial to them, and would thus disagree with both the Committee's conclusions and the view you express. In the grand scheme of the billions spent by the NHS, the cost of</atom:summary><link>http://www.jgc.org/blog/2010/04/witch-doctors-should-be-available-on.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-4315067013666501476</guid><pubDate>Tue, 06 Apr 2010 09:59:00 +0000</pubDate><atom:updated>2010-04-06T10:58:45.419Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rants and raves</category><category domain='http://www.blogger.com/atom/ns#'>hardware</category><title>It's the thought that counts</title><atom:summary type='text'>After I finally replaced the old HP Procurve 420 Access Point at the office with an Airport Extreme, HP came up with a solution to my problem.  They decided to send me, free of charge, a brand new access point (since the 420 had been end-of-lifed).This was very kind of them and now, sitting on my desk, I have a brand new HP Procurve MSM310 Access Point.  It came with all the trimmings: two </atom:summary><link>http://www.jgc.org/blog/2010/04/its-thought-that-counts.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-6381016655808306227</guid><pubDate>Mon, 05 Apr 2010 16:04:00 +0000</pubDate><atom:updated>2010-04-05T16:06:54.192Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>The Offal Tower</title><atom:summary type='text'>OK, that's not the headline that The Guardian chose, but here's me writing in The Guardian's Comment is Free section:At the unveiling of Anish Kapoor's design for the Orbit tower it was compared to the Colossus of Rhodes and the Tower of Babel. But the history of those follies isn't auspicious. The Colossus of Rhodes was destroyed by an earthquake after standing for only a few decades, and the </atom:summary><link>http://www.jgc.org/blog/2010/04/offal-tower.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-2770164480237507254</guid><pubDate>Mon, 29 Mar 2010 08:33:00 +0000</pubDate><atom:updated>2010-03-29T08:56:53.497Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>Squaring two digit numbers in your head</title><atom:summary type='text'>All my life I've done mental arithmetic the 'wrong way': I've calculated from left-to-right, instead of right-to-left.  So when I do something like 24 + 35 I'll see the 50 first and then the 9.  This even applies when there's a carry and I'll do something like 36 + 56 as 80 + 12.  I do the same thing for multiplication as well.Turns out I'm not so weird after all (well, apart from the finding </atom:summary><link>http://www.jgc.org/blog/2010/03/squaring-two-digit-numbers-in-your-head.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>15</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-1885467772451385155</guid><pubDate>Thu, 25 Mar 2010 16:33:00 +0000</pubDate><atom:updated>2010-03-25T17:19:57.731Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rants and raves</category><category domain='http://www.blogger.com/atom/ns#'>hardware</category><title>Goodbye HP Procurve Access Point 420</title><atom:summary type='text'>Over a year ago I discovered a bug in an HP ProCurve Wireless Access Point 420 that we were using in our office.  After being treated badly by HP I finally got support from them by blogging my frustration and ending up on the front page of Google search results for procurve support.Eventually, weeks later, HP acknowledged the problem with the device.  But this story doesn't have a happy ending.In</atom:summary><link>http://www.jgc.org/blog/2010/03/goodbye-hp-procurve-access-point-420.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-2164305401147978836</guid><pubDate>Wed, 24 Mar 2010 09:11:00 +0000</pubDate><atom:updated>2010-03-24T13:25:30.957Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>An appeal for unremarkable women</title><atom:summary type='text'>Today across the blogosphere Ada Lovelace will be honoured by writing about her and other remarkable women in technology.  But today I prefer to appeal to and for the unremarkable.At the day job we've been hiring people continuously for a year for programming jobs.  My entire team of 12 is all men, and in the last 12 months we've interviewed two women.  Looking into all the candidates who've sent</atom:summary><link>http://www.jgc.org/blog/2010/03/appeal-to-unremarkable-women.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-8391498145672798504</guid><pubDate>Fri, 19 Mar 2010 10:15:00 +0000</pubDate><atom:updated>2010-03-19T10:42:25.585Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><category domain='http://www.blogger.com/atom/ns#'>machine learning</category><title>Responding to jacquesm's challenge</title><atom:summary type='text'>The other day on Hacker News a user posted an anonymous comment.  Regular Hacker News participant jacquesm wanted to unmask the writer and posted a challenge to unmask the user.He also emailed me because he thought I might be the anonymous user.  I agreed to help him with a little bit of text mining.  Jacques had a nice database of all Hacker News submissions and comments and gave me a 250Mb SQL </atom:summary><link>http://www.jgc.org/blog/2010/03/responding-to-jacquesms-challenge.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-1014381764096527035</guid><pubDate>Thu, 18 Mar 2010 19:52:00 +0000</pubDate><atom:updated>2010-03-19T09:08:49.505Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>the geek atlas</category><title>A fascinating little beastie</title><atom:summary type='text'>Back in 2004 I was living in New York and commuting between New York and Washington, DC on the Acela.  I was working in a fairly rural part of Virginia and was lucky enough to accidentally experience a once in 17 years event: the emergence of Magicicada Brood X.(Picture from Wikipedia)Now I realize that most people probably don't think that being in a place where millions of large winged insects </atom:summary><link>http://www.jgc.org/blog/2010/03/fascinating-little-beastie.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>4</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-5714125616449877250</guid><pubDate>Tue, 16 Mar 2010 12:48:00 +0000</pubDate><atom:updated>2010-03-16T14:18:15.179Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>the geek atlas</category><title>London Transport Museum: Acton Depot Weekend</title><atom:summary type='text'>This past weekend the London Transport Museum held an open weekend at its Acton Depot where they keep a collection of trams, trolley cards, buses and underground trains, plus all the associated equipment.  They only open the depot twice a year so this was a chance to see some things that are rarely open to the public.I didn't include this museum in The Geek Atlas but after a visit it's likely a </atom:summary><link>http://www.jgc.org/blog/2010/03/london-transport-museum-acton-depot.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-2897426477460604160</guid><pubDate>Thu, 11 Mar 2010 15:40:00 +0000</pubDate><atom:updated>2010-03-30T11:31:33.016Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>day job</category><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>My bio</title><atom:summary type='text'>Occasionally I get asked for some sort of official bio.  Here's one people can use:John Graham-Cumming is computer programmer and author.  He studied mathematics and computation at Oxford and stayed for a doctorate in computer security.  As a programmer he has worked in Silicon Valley and New York, and the UK and France.  His open source POPFile program won a Jolt Productivity Award in 2004.He is</atom:summary><link>http://www.jgc.org/blog/2010/03/my-bio.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-3051580967854407851</guid><pubDate>Wed, 10 Mar 2010 12:39:00 +0000</pubDate><atom:updated>2010-03-10T12:40:56.427Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>alan turing</category><title>An Olympic honour for Alan Turing</title><atom:summary type='text'>Over at The Guardian I write:Last year I led a campaign to obtain an apology for the mistreatment of the British mathematician Alan Turing. Turing's prosecution for homosexuality led to the death of a true genius at the age of only 41 in 1954. On 10 September last year, Gordon Brown issued an apology that recognised Turing's stature as one of the greatest Britons. But Britain has a final </atom:summary><link>http://www.jgc.org/blog/2010/03/olympic-honour-for-alan-turing.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-2200348446890589156</guid><pubDate>Tue, 09 Mar 2010 14:19:00 +0000</pubDate><atom:updated>2010-03-09T14:35:25.242Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><title>Did Monbiot try to understand climate science?</title><atom:summary type='text'>In The Guardian's Comment is Free section there's an article by George Monbiot called The trouble with trusting complex science which argues that:The detail of modern science is incomprehensible to almost everyone, which means that we have to take what scientists say on trust.He does this in the context of climate change science.  I wonder if he actually tried to read the key paper that describes</atom:summary><link>http://www.jgc.org/blog/2010/03/did-monbiot-try-to-understand-climate.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-918555874631291972</guid><pubDate>Wed, 03 Mar 2010 12:50:00 +0000</pubDate><atom:updated>2010-03-03T12:51:52.423Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>A welcome bunch of amateurs</title><atom:summary type='text'>Here's me writing in The Guardian's Comment is Free section:We're all the children of amateurs: amateur parents. There's no government department that will certify you as a parent (thankfully), nor a university department where you get your PhD in being a daddy, nor a professional body ready to strike you off for not following mothering standards. But any parent who's held a newborn child in </atom:summary><link>http://www.jgc.org/blog/2010/03/welcome-bunch-of-amateurs.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-2150221012031444681</guid><pubDate>Mon, 01 Mar 2010 11:41:00 +0000</pubDate><atom:updated>2010-03-01T14:41:10.694Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><title>The reason I managed to find errors in the Met Office data and code</title><atom:summary type='text'>It turns out the reason is rather simple.  In the evidence being given today to the Parliamentary Science and Technology Committee the Met Office says of their quality control procedures:Manual inspection, including real-time quality control using GIS software; quality control described in literature for the various regional studies.Contrast that with what they say about NOAA's procedures for the</atom:summary><link>http://www.jgc.org/blog/2010/03/reason-i-managed-to-find-errors-in-met.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-6758623446879471383</guid><pubDate>Thu, 25 Feb 2010 16:46:00 +0000</pubDate><atom:updated>2010-03-02T17:41:54.931Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><title>Something a bit confusing from UEA/CRU</title><atom:summary type='text'>UEA and CRU have issued a document that they have submitted to the Parliamentary Select Committee on Science and Technology who are looking into the taking of email and documents from CRU.  The document can be found here.In it there are two interesting paragraphs concerning software:3.4.7 CRU has been accused of the effective, if not deliberate, falsification of findings through deployment of “</atom:summary><link>http://www.jgc.org/blog/2010/02/something-bit-confusing-from-ueacru.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-4833468070609683656</guid><pubDate>Wed, 24 Feb 2010 23:20:00 +0000</pubDate><atom:updated>2010-02-24T23:20:00.238Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><title>The station errors in CRUTEM3 and HadCRUT3 are incorrect</title><atom:summary type='text'>I'm told by a BBC journalist that the Met Office has said through their press office that the errors that were pointed out by Ilya Goz and I have been confirmed.  The station errors are being incorrectly calculated (almost certainly because of a bug in the software) and that the Met Office is rechecking all the error data.I haven't heard directly from the Met Office yet; apparently the Met Office</atom:summary><link>http://www.jgc.org/blog/2010/02/station-errors-in-crutem3-and-hadcrut3.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-36060017044546445</guid><pubDate>Tue, 16 Feb 2010 09:03:00 +0000</pubDate><atom:updated>2010-02-16T09:18:15.051Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>The magic of sub-editors</title><atom:summary type='text'>In the print version of my Times article today there's been significant cutting to get it to fit into the space available.  This is the magic work of sub-editors.  Here's the full text of the article with the words that remained in the sub-edited version (which appeared in the paper):The history of science is filled with stories of amateur scientists who made significant contributions. In 1937 </atom:summary><link>http://www.jgc.org/blog/2010/02/magic-of-sub-editors.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>7</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-6659916268056118297</guid><pubDate>Mon, 15 Feb 2010 22:41:00 +0000</pubDate><atom:updated>2010-02-16T16:36:48.785Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><title>The Times writes up my Met Office discoveries</title><atom:summary type='text'>Here's a major newspaper writing about what I found in the Met Office data:A science blogger has uncovered a catalogue of errors in Met Office records that form a central part of the scientific evidence for global warming.The mistakes, which led to the data from a large number of weather stations being discarded or misused, had been overlooked by professional scientists and were only discovered </atom:summary><link>http://www.jgc.org/blog/2010/02/times-writes-up-my-met-office.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-1784711398180473707</guid><pubDate>Mon, 15 Feb 2010 09:33:00 +0000</pubDate><atom:updated>2010-02-15T13:12:39.233Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>climate change</category><title>Climate Change Skepticism: You're doing it wrong</title><atom:summary type='text'>The following is a popular picture used by climate change skeptics to attempt to show that there's something seriously wrong with the the surface temperature record which is used to show that the world is getting hotter.  It appears to show that two weather stations with Stevenson screens are situated right at the end of the runway of Rome Ciampino.  It's not hard to put two and two together and </atom:summary><link>http://www.jgc.org/blog/2010/02/climate-change-skepticism-youre-doing.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>21</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-1557216333591546314</guid><pubDate>Sun, 14 Feb 2010 14:02:00 +0000</pubDate><atom:updated>2010-02-14T17:54:58.623Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>rants and raves</category><title>A bad workman blames his tools</title><atom:summary type='text'>One of the most depressing things about being a programmer is the realization that your time is not entirely spent creating new and exciting programs, but is actually spent eliminating all the problems that you yourself introduced.This process is called debugging.  And on a daily basis every programmer must face that fact that as they write code, they write bugs.  And when they find that their </atom:summary><link>http://www.jgc.org/blog/2010/02/bad-workman-blames-his-tools.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>10</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-818960330886429024</guid><pubDate>Sat, 13 Feb 2010 08:49:00 +0000</pubDate><atom:updated>2010-02-13T09:02:28.909Z</atom:updated><title>If you're searching remember your TF-IDF</title><atom:summary type='text'>Some people seem to be very good at searching the web, others seem to be very poor at it.  What differentiates them?  I think it's unconcious knowledge of something called TF-IDF (or term frequency-inverse document frequency).If you clicked through to that Wikipedia link you were probably confronted by a bunch of mathematics, and since you are reading this you probably hit the back button as </atom:summary><link>http://www.jgc.org/blog/2010/02/if-youre-searching-remember-your-tf-idf.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>6</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-9212609156875520571</guid><pubDate>Fri, 12 Feb 2010 14:34:00 +0000</pubDate><atom:updated>2010-02-12T14:35:56.988Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>day job</category><category domain='http://www.blogger.com/atom/ns#'>machine learning</category><title>So you think machine learning is boring...</title><atom:summary type='text'>Here's something I wrote for the company blog.If you say the words 'machine learning' to people they either look confused or bored. Since the promise of Artificial Intelligence evaporated in the 1970s, machine intelligence seems to be one of those things that's a perpetual 20 years away.But computer industry insiders know that many forms of machine learning are at work all the time. The most </atom:summary><link>http://www.jgc.org/blog/2010/02/so-you-think-machine-learning-is-boring.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-19303585.post-7555882076118280987</guid><pubDate>Thu, 11 Feb 2010 08:58:00 +0000</pubDate><atom:updated>2010-02-11T09:01:51.769Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>pseudo-randomness</category><title>Is your new technology crappy enough?</title><atom:summary type='text'>Email developed from a file transfer based protocol to the widely used SMTP (which was created in 1982). As a protocol it leaves much to be desired: senders can be forged, it's a playground for spammers, the ability to send anything other than plain text (ASCII) messages had to be added with duct tape at a later date, its error messages are cryptic and it has few facilities to deal with the </atom:summary><link>http://www.jgc.org/blog/2010/02/is-your-new-technology-crappy-enough.html</link><author>noreply@blogger.com (John Graham-Cumming)</author><thr:total>4</thr:total></item></channel></rss>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
