<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-19835303</id><updated>2009-11-07T10:32:54.043-08:00</updated><title type='text'>Areté</title><subtitle type='html'>Thoughts on excellence</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default?start-index=26&amp;max-results=25'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>155</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19835303.post-5243505054156642662</id><published>2009-11-03T13:17:00.001-08:00</published><updated>2009-11-03T13:39:13.694-08:00</updated><title type='text'>Not Sophistication</title><content type='html'>Yeah.&lt;br /&gt;&lt;br /&gt;So.&lt;br /&gt;&lt;br /&gt;This is kinda embarrassing...&lt;br /&gt;&lt;br /&gt;How can I put this? Some people are alcoholics. Some people snort cocaine. Some people visit prostitutes. Some people have scary fetishes.&lt;br /&gt;&lt;br /&gt;I'm afraid my personal addiction is not nearly as socially acceptable.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Yup, I'm a Dungeons and Dragons webcomic freak.&lt;br /&gt;&lt;br /&gt;I swear I never saw it coming. It started off small, just a little bit of &lt;a href="http://www.giantitp.com/comics/oots0001.html"&gt;Order of the Stick&lt;/a&gt; when I was feeling bored. Then a gamer friend landed up in hospital, and I bought him some OOTS books to keep him company, and... I couldn't resist their siren song. I fell into depravity like an expensive, beautifully-painted character model onto a stone floor*.&lt;br /&gt;&lt;br /&gt;Next it was &lt;a href="http://goblins.keenspot.com/d/20050626.html"&gt;Goblins&lt;/a&gt;. But hey, two comics ain't so bad. I could give it up any time I liked.&lt;br /&gt;&lt;br /&gt;I dabbled with &lt;a href="http://irregularwebcomic.net/1.html"&gt;Irregular Webcomic&lt;/a&gt;, but quickly moved on to harder drugs. I tasted &lt;a href="http://www.lfgcomic.com/page/1"&gt;Looking For Group&lt;/a&gt;, and life was sweet for a while.&lt;br /&gt;&lt;br /&gt;But then I discovered &lt;a href="http://darthsanddroids.net/episodes/0001.html"&gt;Darths and Droids&lt;/a&gt; and &lt;a href="http://www.shamusyoung.com/twentysidedtale/?p=612"&gt;DM Of The Rings&lt;/a&gt;. Webcomics about fantasy films, in the style of D&amp;D adventures? I think I've hit bottom here. It's time to admit: I need help.&lt;br /&gt;&lt;br /&gt;The really irritating thing is that I don't even &lt;i&gt;play&lt;/i&gt; Dungeons and Dragons.&lt;br /&gt;&lt;br /&gt;* It's well-known that the force of impact of a dropped model is proportional, not to the height of the table it's knocked off, but to how annoyed you'll be if it gets broken.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-5243505054156642662?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/5243505054156642662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=5243505054156642662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5243505054156642662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5243505054156642662'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/11/not-sophistication.html' title='Not Sophistication'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-3192552482955049407</id><published>2009-10-18T12:13:00.000-07:00</published><updated>2009-10-18T12:54:47.665-07:00</updated><title type='text'>Sophistication</title><content type='html'>You know that guy? The one who is always in great shape despite apparently living off fast food. The one who always gets top marks despite apparently never revising for exams. The one who can drive, skate, ski, swim, fight, play every card game known to man, and all without ever seeming to break a sweat.&lt;br /&gt;&lt;br /&gt;Everyone knows someone like this (guy or girl). After years of wondering how the blazes they do all that and still look so laid back, I've come to a conclusion.&lt;br /&gt;&lt;br /&gt;They're frauds.&lt;br /&gt;&lt;br /&gt;Sure, they may have a slightly broader range of talents than the average bloke. Sure, they possibly started out with slightly better strength and dexterity than us mere mortals. But there is no level of innate ability that could set them that high above the rest of us.&lt;br /&gt;&lt;br /&gt;I think that, for every burger you see being eaten, there's an hour in the gym that you never find out about. For every cakewalk of an exam, there are many frantic hours of secret preparation. For every activity that they're "just naturally good" at, they have undoubtedly spent time preparing and training.&lt;br /&gt;&lt;br /&gt;This is reassuring. It means that anyone can do what that guy does. Anyone can upgrade themselves to the status of god among men. It just takes a lot of work. Specifically, it takes a lot of work without any sort of immediate reward.&lt;br /&gt;&lt;br /&gt;I now have a goal in life. Firstly, to practice the discipline required for this sort of long-term training plan. Secondly, to develop the sophistication required to STFU.&lt;br /&gt;&lt;br /&gt;I will make better progress towards both of these goals if I get a good eight hours sleep. Goodnight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-3192552482955049407?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/3192552482955049407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=3192552482955049407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/3192552482955049407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/3192552482955049407'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/10/sophistication.html' title='Sophistication'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-8261041306172547069</id><published>2009-10-18T10:48:00.000-07:00</published><updated>2009-10-18T12:03:54.487-07:00</updated><title type='text'>Bwahahaha</title><content type='html'>I've been trying to cut back on my public use of mad-scientist laughter. Despite its &lt;a href="http://eviloverlord.com/lists/overlord.html"&gt;proven stress-relieving effect&lt;/a&gt;, it does disturb my co-workers somewhat.&lt;br /&gt;&lt;br /&gt;To compensate, I intend to use my blog as a gloating platform. I consider this to be ethically acceptable on three grounds:&lt;br /&gt;&lt;br /&gt;1) My blog, my rules (incidentally, the new dress code round here is "winged monkey")&lt;br /&gt;2) Blog-reading is strictly voluntary - you fools &lt;i&gt;chose&lt;/i&gt; to read this garbage&lt;br /&gt;3) It's not like you can &lt;a href="http://www.bash.org/?4281"&gt;do anything&lt;/a&gt; about it anyway&lt;br /&gt;&lt;br /&gt;Those preliminaries out the way, I would just like to say I'm very happy. And boastful. But mostly happy.&lt;br /&gt;&lt;br /&gt;About four months back now, I got bounced up to a different part of England - I'm sure I've whined about it previously. My temporary home is a hotel in a little sea town that wishes it was Las Vegas. For generations, anyone with any brains or talent has been escaping from this dump*, and the result is reminiscent of &lt;a href="http://dagonbytes.com/thelibrary/lovecraft/theshadowoverinnsmouth.htm"&gt;Innsmouth&lt;/a&gt; without the successful fishing industry.&lt;br /&gt;&lt;br /&gt;Coming to terms with the mindless tedium presents an interesting challenge. As a partial solution (because there's only so many books you can cram in a suitcase - believe me I know) I've taken up Taekwondo. I've previously done Karate, but they don't have a club for that within walking distance of the hotel, so what the hey.&lt;br /&gt;&lt;br /&gt;I've actually been really enjoying it. This is the first martial arts training I've done in about three years, and it's been good to feel the old skills starting to come back (plus a few new ones). It's been going so well that I've been rather looking forward to the grading, which was earlier today.&lt;br /&gt;&lt;br /&gt;Ah, the grading. I used to think the sweetest words you could hear in a grading were "you've passed". It turns out I was wrong. The sweetest words are "we've decided to let this student skip a belt". I've jumped yellow-belt entirely and gone straight to yellow-with-green-tag. Who thinks up these colours?&lt;br /&gt;&lt;br /&gt;Normally I would take this with a large dose of humility - until this morning I was the only adult white-belt at the club, so they could have just been letting me catch up with my "peer group". However, when they were handing out the new belts, it transpired that they did not have a green-tag belt with them, which suggests that this was a spur-of-the-moment decision based on my performance in the grading.&lt;br /&gt;&lt;br /&gt;Quite apart from providing me with excellent bragging rights, this episode also highlights the unreasonable effectiveness of the human brain (yes, even mine). Once connections are made, they tend to stay made. Once a skill is learned, it persists far beyond its anticipated sell-by date.&lt;br /&gt;&lt;br /&gt;The moral: never be afraid to spend a bit of time learning a new skill, or polishing an old one. I'm going to be leaving this area in December, so I'll only have had a few months with this club. But even this short few months has been good for me. And I know that, next time I decide to take up a martial art, it'll be easier than ever.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* This is unduly harsh. There are many good, intelligent people here - I work with a bunch of them. But the social agenda seems to be completely controlled by people who think fart jokes are the height of humour, big flashing lights make a place look modern and tasteful, psychics can solve all your problems, and Sophistication is an island in Greece.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-8261041306172547069?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/8261041306172547069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=8261041306172547069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/8261041306172547069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/8261041306172547069'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/10/bwahahaha.html' title='Bwahahaha'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-338212281417589359</id><published>2009-09-27T14:29:00.000-07:00</published><updated>2009-09-27T15:29:08.543-07:00</updated><title type='text'>Where did they go?</title><content type='html'>I'm not a good programmer. I'm naturally quite techie, but I've never really had the patience to sit down and make great art with my PC. The skills I have are those I was able to absorb from those in my immediate vicinity - replication not initiation.&lt;br /&gt;&lt;br /&gt;That said, I do enjoy absorbing the culture of tech - the &lt;a href="http://www.pbm.com/~lindahl/mel.html"&gt;story of mel&lt;/a&gt;, the &lt;a href="http://catb.org/jargon/"&gt;jargon file&lt;/a&gt;, &lt;a href="http://esolangs.org/wiki/Main_Page"&gt;esoteric languages&lt;/a&gt;, and the old &lt;a href="http://www.netfunny.com/rhf/jokes/89q1/koans.285.html"&gt;tales&lt;/a&gt; of the MIT AI lab and Xerox Park. I read books by &lt;a href="http://www.cryptonomicon.com/main.html"&gt;Neal Stephenson&lt;/a&gt; and &lt;a href="http://www.williamgibsonbooks.com/books/neuromancer.asp"&gt;William Gibson&lt;/a&gt;. Buried somewhere on my hard drive is the complete archives of &lt;a href="http://www.phrack.org/"&gt;Phrack mag&lt;/a&gt;, although I barely understand half of it (typically the obsolete half - yay analog phreaking!).&lt;br /&gt;&lt;br /&gt;And one of the things I pick up from these shards of geekiness is a sense of wistfulness. They talk about the &lt;a href="http://en.wikipedia.org/wiki/Eternal_September"&gt;September that never ended&lt;/a&gt;. They talk about the &lt;a href="http://en.wikipedia.org/wiki/AI_Winter"&gt;AI Winter&lt;/a&gt;. They refer to newsgroups and communities of unsurpassed elegance and sophistication, that now no longer exist. There's a sense of stumbling across the forgotten artifacts of some lost higher civilisation. Once heroes and wizards strode the Earth; now there are only echoes.&lt;br /&gt;&lt;br /&gt;Where did they go? What happened to the cypherpunk generation? Did they all quit programming, or wind up in wage-slave jobs that crushed their creativity, or die of drug overdoses, or get locked up for not respecting someone's lack of respect for computer security? Have the elves passed into the West, making way for the Age of Man?&lt;br /&gt;&lt;br /&gt;I hope not. I like to think that, somewhere, these ideals hold on. Somewhere, in a hidden mailing list, on a firewalled server, carried by a stream of encrypted emails spliced into innocuous data, the crypto-anarchist dream lives on. It's just waiting to be found, locked behind doors that cry out for the right key. So what if the key in question is 8192-bit?&lt;br /&gt;&lt;br /&gt;Maybe I'm deluding myself. Maybe the cypherpunk movement just died out, faded back into oblivion. It would be a poorer world if that were so, but the world has no responsibility to respect our desires.&lt;br /&gt;&lt;br /&gt;But I allow myself this one dream. And in consolation for the lack of evidence, I hold this thought tightly:&lt;br /&gt;&lt;br /&gt;If they couldn't hide themselves from people like me, they wouldn't be worth admiring...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-338212281417589359?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/338212281417589359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=338212281417589359' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/338212281417589359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/338212281417589359'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/09/where-did-all-cypherpunks-go.html' title='Where did they go?'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-3368969371093577484</id><published>2009-09-20T03:02:00.000-07:00</published><updated>2009-09-20T04:09:00.829-07:00</updated><title type='text'>How To Learn French</title><content type='html'>1) Work your way through &lt;a href="http://en.wikibooks.org/wiki/French/Contents"&gt;Wikibooks: French&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Download a freeware French-English dictionary (I'm using&lt;a href="http://sourceforge.net/projects/freedict/files/French%20-%20English/0.0.1/fra-eng.tar.gz/download"&gt;Freedict&lt;/a&gt; - open-source but not very user-friendly).&lt;br /&gt;&lt;br /&gt;3) Download a good book &lt;a href="http://www.gutenberg.org/etext/1184"&gt;here&lt;/a&gt; and &lt;a href="http://www.gutenberg.org/etext/17989"&gt;ici&lt;/a&gt;, and read them side by side.&lt;br /&gt;&lt;br /&gt;4) Tune in to &lt;a href="http://www.listenlive.eu/france.html"&gt;web radio&lt;/a&gt; (alternatively pick a DVD, and set the language to French and the subtitles to English).&lt;br /&gt;&lt;br /&gt;It's amazing how long you can spend on the internet and still not use it to its full potential.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-3368969371093577484?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/3368969371093577484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=3368969371093577484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/3368969371093577484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/3368969371093577484'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/09/how-to-learn-french.html' title='How To Learn French'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-8101586356977360494</id><published>2009-08-17T15:50:00.003-07:00</published><updated>2009-08-17T16:11:25.638-07:00</updated><title type='text'>An example thereof</title><content type='html'>In my &lt;a href=""&gt;last post&lt;/a&gt; I explained why it was a good thing to be skeptical before passing ideas on.&lt;br /&gt;&lt;br /&gt;Now, I've just come across a great &lt;a href="http://www.abhota.info/end1.htm"&gt;reference&lt;/a&gt; to "the world's oldest apocalypse prediction":&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Our earth is degenerate in these latter days. There are signs that the world is speedily coming to an end. Bribery and corruption are common."&lt;br /&gt;- Assyrian clay tablet, circa 2800BC&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This reference is sourced to Isaac Asimov's Book of Facts. The problem is, I can't substantiate it. I don't have a copy of the Book of Facts handy and, even if I did, I would need to know more about the clay tablet in question before I could trust Mr Asimov's word on this.&lt;br /&gt;&lt;br /&gt;So if I were to use this quote in any sort of serious discussion, I would need to accompany it with a shot of skeptical "penicillin". I would have to make my friends aware that I could not stake my life on the it being accurate. This would be boring and long-winded.&lt;br /&gt;&lt;br /&gt;The only alternative is to try to track down the tablet in question online. This is not proving easy: googling for the translated text just finds thousands of people who have quite clearly copied it straight out of the Book of Facts. This is not corroboration.&lt;br /&gt;&lt;br /&gt;So I need to dig deeper. With a bit of effort, I'll be able to figure out how the Assyrian research community organises its information, which should give me some idea of where to find this particular tablet. So far I've come across the &lt;a href="http://cdli.ucla.edu/index.html"&gt;Cuneiform Digital Library Initiative&lt;/a&gt; (not so helpful as it doesn't give translations) and the &lt;a href="http://www.helsinki.fi/science/saa/cna.html"&gt;Neo-Assyrian Text Corpus Project&lt;/a&gt; (which appears to be defunct).&lt;br /&gt;&lt;br /&gt;Beyond that, I may have to gatecrash the local university library. Watch this space.&lt;br /&gt;&lt;br /&gt;It may take a while to learn the truth here. Heck, I might actually need to learn Assyrian to track down the tablet (or to demonstrate that it probably doesn't exist). I am unlikely to go that far. But the time I do spend on this exercise will be time well used - a tithe spent on improving the information available to the community as a whole.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-8101586356977360494?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/8101586356977360494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=8101586356977360494' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/8101586356977360494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/8101586356977360494'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/08/example-thereof.html' title='An example thereof'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-2811946290836510900</id><published>2009-08-17T14:42:00.000-07:00</published><updated>2009-08-17T15:46:04.898-07:00</updated><title type='text'>Wash your hands before blogging</title><content type='html'>On this blog I often talk about skepticism. But what actually does this mean? Beyond the statistics, the science and the logic, what is it that defines us as skeptics? What is the driving force behind our community of pedants?&lt;br /&gt;&lt;br /&gt;The answer is simple. When you get right down to it, modern skepticism is about hygiene.&lt;br /&gt;&lt;br /&gt;Bear with me here...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Why do we wash our hands? Because there are tiny self-replicators called bacteria and viruses that can infest them. These bugs eat the nutrients on our hands, and given half a chance will take a bite out of the hand itself. They are harmful.&lt;br /&gt;&lt;br /&gt;They also spread rapidly. When we perform the various acts of hygiene - using a tissue when sneezing, washing our hands after using the loo, cleaning up after our dog - we aren't just protecting ourselves. We're protecting those around us. Washing your hands makes you safer, sure, but it also helps slow the spread of disease through your community.&lt;br /&gt;&lt;br /&gt;Why do we apply skeptical principles to our thoughts? Because there are tiny little self-replicators that can infest them. We call these replicators &lt;a href="http://en.wikipedia.org/wiki/Meme"&gt;"memes"&lt;/a&gt;, by analogy to biological genes. A meme is simply a bit of information that can "copy" itself from one human mind to another. It could be an email hoax, a news story, a technique for producing origami boats, a poem, or even a blog post.&lt;br /&gt;&lt;br /&gt;Some of these memes are useful; some are harmful. Memes can encourage you to feed the homeless, or to give all your money to scammers. In general, memes that correspond well with reality are less likely to cause harm. Truth is usually better than falsehood.&lt;br /&gt;&lt;br /&gt;When we pick up biological diseases, we have a responsibility to ourself and others to limit the damage those germs can cause. When we pick up memes from others, or when we pass our memes on, we have a similar responsibility to ensure that they are realistic. We must use the disinfectant of rationality, the soap of science and the hot water of critical evaluation to ensure that no-one will be injured or killed because &lt;i&gt;we&lt;/i&gt; infected them with a &lt;a href="http://whatstheharm.net/"&gt;dangerous untruth&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This explains some of the distaste that scientists and skeptics &lt;a href="http://scienceblogs.com/pharyngula/"&gt;sometimes show&lt;/a&gt; towards people who believe in UFOs, homeopathy, psychics, creationism, conspiracy theories... and gods. It's not the beliefs that disturb us; rather, it is the lack of intellectual caution that these beliefs demonstrate.&lt;br /&gt;&lt;br /&gt;In general, these believers have not bothered to "wash their hands". They have not attempted to protect themselves from bad memes, and they happily pass on their mental plagues to others. These people are walking around with unwashed minds, ready to transmit all sorts of potentially-harmful diseases.&lt;br /&gt;&lt;br /&gt;It's unhelpful. It's dangerous. And it's certainly not hygienic.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-2811946290836510900?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/2811946290836510900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=2811946290836510900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/2811946290836510900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/2811946290836510900'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/08/wash-your-hands-before-blogging.html' title='Wash your hands before blogging'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-5880306914186532641</id><published>2009-07-10T09:59:00.000-07:00</published><updated>2009-07-10T13:08:56.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><title type='text'>Rituals of my people</title><content type='html'>Last Sunday I went to the christening of my cousin's second son. It was a full church service, and was rather well attended by various family members and friends of the proud parents. The kid is very sweet. All told, a nice day out.&lt;br /&gt;&lt;br /&gt;So what's bugging me?&lt;br /&gt;&lt;br /&gt;Well, like I say, this was a proper church service. It's actually quite a while since I've been to a church except as a tourist, so this took some getting used to. And, after spending years discussing religion in blogs and forums, I found myself with a very strong urge to hit the "reply" button...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;I was amused by the Bible reading that included Matthew 13:47-49a and carefully airbrushed out the less family-friendly Matt 13:49b-50. I was mildly irritated by the liturgical &lt;a href="http://www.cofe.anglican.org/worship/liturgy/commonworship/texts/initiation/baptism.html"&gt;question-and-answer format&lt;/a&gt; - what if you don't agree with the prescribed answer*?&lt;br /&gt;&lt;br /&gt;And I was actually rather bothered by the content of the liturgy. There are several parts that to a non-Christian like myself are a bit disturbing. For example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Faith is the gift of God to his people. &lt;br /&gt;In baptism the Lord is adding to our number those whom he is calling.&lt;br /&gt;People of God, will you welcome these children and uphold them in their new life in Christ?&lt;br /&gt;&lt;i&gt;All: With the help of God we will.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'm sorry, but this child is not old enough to be considered one of "our number". He's part of your community, sure, but at his age you can't meaningfully say he subscribes to your beliefs. Beliefs come later. And he might not share your views even when he grows up. Talk about counting your chickens before they hatch...&lt;br /&gt;&lt;br /&gt;The entire liturgy is founded on the assumption that, if you're born into a particular family or community, you're going to grow up as a Christian. I reject that assumption. The kid will follow his own path and, as a responsible relative, I'll support him whatever that path might be.&lt;br /&gt;&lt;br /&gt;If he becomes an atheist then that's cool. If he becomes a Christian then fair enough. If he becomes a Muslim, Hindu, Buddhist or goat-sacrificing Satanist then I'll still be on his side. Any other attitude is reprehensible.&lt;br /&gt;&lt;br /&gt;If atheism's popularity increases, I foresee a day when we'll start to develop rituals and liturgies of our own. When that day comes, there will be a lot we can learn from the Christian versions.&lt;br /&gt;&lt;br /&gt;In the case of child baptisms, I hope we learn what &lt;i&gt;not&lt;/i&gt; to say...&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* I handled this situation by just not saying anything while everyone around me muttered their responses. Who says I'm not tactful? Incidentally, I'm pretty sure I saw some other folks doing the same thing.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-5880306914186532641?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/5880306914186532641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=5880306914186532641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5880306914186532641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5880306914186532641'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/07/rituals-of-my-people.html' title='Rituals of my people'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-7762128807820610393</id><published>2009-07-08T12:17:00.000-07:00</published><updated>2009-07-08T13:20:35.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='everyday areté'/><title type='text'>Walk on by</title><content type='html'>There's a topic I've been meaning to cover for about two years now. And every time I decide to write about it, something comes up, goes down, or otherwise gets in the way. I'm jinxed.&lt;br /&gt;&lt;br /&gt;It's a simple little thing: how we walk.&lt;br /&gt;&lt;br /&gt;Now mostly this isn't something we think about much. If strolling down the street required cogitation at every step, there would be even more couch potatoes in the world. But there's a lot to find interesting...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;An example. Next time you walk down a street, try to imagine that you're encased in a big solid sphere, like those &lt;a href="http://en.wikipedia.org/wiki/Sphereing"&gt;Zorb balls&lt;/a&gt;. Convince yourself that the ball is rock solid - no-one can get through it to bump into you. Visualise the people around you rebounding from the ball if they try to push too close.&lt;br /&gt;&lt;br /&gt;What you'll find is that you can walk straight at someone and they will &lt;i&gt;always&lt;/i&gt; get out of your way. This is really kinda cool. And it doesn't seem to be anything to do with physical size or intimidation - I've seen tiny women pull this trick on burly blokes.&lt;br /&gt;&lt;br /&gt;On close examination, it turns out that the "simple" act of walking past someone is actually quite complicated. As you approach a person, you use a range of subtle cues to plan a route round them, based on the direction you think they're going to head in.&lt;br /&gt;&lt;br /&gt;The most important of these is probably foot position - your feet tend to point in the direction you're planning to go, and other people will pick up on this. If you really want to confuse someone, try walking past them on their left while keeping your feet pointed towards their right. Chances are good that they'll walk into you.&lt;br /&gt;&lt;br /&gt;That's why the Zorb ball trick works. When you visualise being surrounded by an impenetrable force field, your feet point straight forward regardless of who is in your way. Everyone else unconsciously notices this and walks around &lt;i&gt;you&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;There's a metaphor in there somewhere.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-7762128807820610393?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/7762128807820610393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=7762128807820610393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/7762128807820610393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/7762128807820610393'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/07/walk-on-by.html' title='Walk on by'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-6046663428365090240</id><published>2009-07-02T14:40:00.000-07:00</published><updated>2009-07-02T14:44:15.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='purgeable'/><category scheme='http://www.blogger.com/atom/ns#' term='actuarial'/><title type='text'>W00t</title><content type='html'>Just passed another actuarial exam. That makes three so far (out of eleventyumpteen...).&lt;br /&gt;&lt;br /&gt;For bonus points, this is the one I didn't think I was going to pass first sitting. I am very happy right now.&lt;br /&gt;&lt;br /&gt;Downside: by long-standing tradition, I have to buy cakes for the entire office come Monday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-6046663428365090240?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/6046663428365090240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=6046663428365090240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/6046663428365090240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/6046663428365090240'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/07/w00t.html' title='W00t'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-10398139543688380</id><published>2009-06-24T14:22:00.000-07:00</published><updated>2009-06-24T14:56:25.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='martial arts'/><category scheme='http://www.blogger.com/atom/ns#' term='skepticism'/><title type='text'>Effect/Cause</title><content type='html'>A common theme in modern skepticism is how people naturally see causation where none exists. Got cancer and live near a phone tower? Must be evil vibes from the &lt;a href="http://news.bbc.co.uk/1/hi/health/4196762.stm"&gt;GSM network&lt;/a&gt;. Got a child with autism? Must be that damn &lt;a href="http://www.badscience.net/2003/12/mmr-never-mind-the-facts/#more-23"&gt;MMR jab&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;"But surely that's just something that crazy people do? Us nice normal skeptical folks would never put the cart before the horse," I hear you cry. Well, I'm sorry to break it to you, but it's a natural human trait. And the thing about natural human traits is they don't just affect the nutters; they apply to everyone...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;An example from the world of martial arts. I used to do a lot of Karate, so I have a feel for how to punch, kick and otherwise mutilate an opponent. I haven't trained for years but, as a result of a change of location, I've decided to take up Taekwondo. My first lesson was yesterday.&lt;br /&gt;&lt;br /&gt;So a few minutes into the lesson I'm kicking and blocking like mad, but it just doesn't feel right. I'm stiff, I'm tense, my techniques don't flow nicely. This sucks.&lt;br /&gt;&lt;br /&gt;Now, one thing I've heard people tell beginners in a whole range of sports is "relax and your technique will improve". So I decide to consciously try this. I systematically unclench my arms and try a few more punches.&lt;br /&gt;&lt;br /&gt;And amazingly... it completely failed to work. My arm muscles, not being trained for this kind of task, weren't able to throw my fists forward without over-punching (which bloody hurts). My untensed leg muscles weren't able to lift my feet above hip height.&lt;br /&gt;&lt;br /&gt;This turns the old adage on its head. It's not a case of "relaxation leads to improved technique". It's more like "being out of practice leads to poor technique, and your weakened muscles tense up trying to compensate". &lt;br /&gt;&lt;br /&gt;So correlation has been confused with causation, and the resulting expert advice turns out to be useless. I wonder how often this happens?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-10398139543688380?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/10398139543688380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=10398139543688380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/10398139543688380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/10398139543688380'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/06/effectcause.html' title='Effect/Cause'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-1790252243803861034</id><published>2009-06-12T12:14:00.001-07:00</published><updated>2009-06-14T07:53:40.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='site admin'/><title type='text'>Stalinism ahoy!</title><content type='html'>As you may have noticed, I've been doing a bit of redecoration round the ol' blog. A new template, proper use of folds, and an upgrade to the new Blogger Layouts, should all combine to make the blog both readable and maintainable.&lt;br /&gt;&lt;br /&gt;But that's just Phase 1 of the &lt;a href="http://eviloverlord.com/"&gt;evil master plan&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;span class=fullpost&gt;For Phase 2, I'll be going back through the blog archives. In true Stalinist fashion, I aim to delete all the blogorrhea that's accumulated over the years: the whiney posts, the inappropriately rude posts, the posts that I clearly wrote after several pints of whiskey (it's amazing how the ability to type is always the last thing to go).&lt;br /&gt;&lt;br /&gt;Whilst I'm at it, I'll add these new "tags" that all the cool kids are experimenting with. I'm really just a victim of peer pressure...&lt;br /&gt;&lt;br /&gt;Phase 3 needs a bit more thought. Basically, I'll make a list of stuff I know just well enough to post about, and set up a poll or something to see what my - largely nonexistent - readers are most interested in.&lt;br /&gt;&lt;br /&gt;Which neatly leads us to Phase 4. If I'm going to put more effort into this blog, it would be nice to know that someone is reading it. I know I'm never going to be Pharyngula, but I worry that if I spend too much time talking to myself I'll wind up in a padded cell. And those things don't even have wifi access.&lt;br /&gt;&lt;br /&gt;In thinking about this, I've found that I don't really understand how blogs attract and retain readers. This is something I'll need to consider further.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-1790252243803861034?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/1790252243803861034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=1790252243803861034' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/1790252243803861034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/1790252243803861034'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/06/stalinism-ahoy.html' title='Stalinism ahoy!'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-4133083936730143420</id><published>2009-06-08T11:33:00.000-07:00</published><updated>2009-06-14T08:45:27.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='untagged'/><title type='text'>I'm a weirdo</title><content type='html'>Today I walked about an hour out of my way to give blood. The sugar rush from the cookies afterwards has to be felt to be believed. I'm now awaiting receipt of that lovely letter they send out: "Thank you for giving blood. Unfortunately we cannot accept your donation because you have HIV, Malaria, Asian Bird Flu and at least two Hepatitis variants. Consult your local undertaker."&lt;br /&gt;&lt;br /&gt;On the way home I saw a very small fledgeling bluetit that had apparently fallen out of its nest and waddled into the road. Needless to say, it was a little bit shellshocked. I picked it out of the road and stuck it in the bushes before it could metamorphose into a very &lt;i&gt;wide&lt;/i&gt; fledgeling.&lt;br /&gt;&lt;br /&gt;I wasn't able to help an old lady across the road, but only due to a regrettable shortage of old ladies in these parts. This being the North of England, where fat is the fifth food group, they probably all die young of coronaries or acquired diabetes...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;These acts of madness are not isolated incidents. Only a couple of weeks ago, whilst on camping, I took half an hour of time out from the festivities to help the bloke in the next pitch put up his tent. And I'm no better in this respect (or worse, I hope) than the average guy on the street.&lt;br /&gt;&lt;br /&gt;There was no obvious benefit to me from any of these. Apart from the cookies, the blood donation was just a very long-winded way to get mildly dizzy. Bluetits are not known for their gratitude, and this one gave me nothing but a mildly increased risk of Asian Bird Flu. And one of my (young, female, single) co-campers did comment "oh, you're so nice", but sadly she's not otherwise interested in me.&lt;br /&gt;&lt;br /&gt;So why do we do this crazy stuff? Needless to say, &lt;a href="http://lyricwiki.org/Buffy_The_Vampire_Slayer:I%27ve_Got_A_Theory/Bunnies/If_We%27re_Together"&gt;I have a &lt;strike&gt;theory&lt;/strike&gt; hypothesis&lt;/a&gt; . And it allows me to neatly illustrate a misunderstanding that many people have with evolutionary biology.&lt;br /&gt;&lt;br /&gt;The key concept I'd like to introduce here is the difference between proximate and ultimate causes. Humans perform a great many activities that - considered in the short term - are daft in the extreme. Consider the well-known spike in mortality rates for people in their early 20s, due largely to deaths from violence (accident, homicide, suicide).&lt;br /&gt;&lt;br /&gt;All told, the human race appears to consist of idiots who waste their time and life expectancy for no better reason than "I felt like it". We shall call this the &lt;i&gt;proximate cause&lt;/i&gt; of their actions.&lt;br /&gt;&lt;br /&gt;Occasionally people are able to justify their behaviour in terms of some longer-term plan. For example, I work for a financial company because I'd quite like to make lots of money, but I work in pensions rather than investment banking because I would prefer not to die of exhaustion by the age of 30. In this case, we say that the proximate cause is supported by &lt;i&gt;prior causes&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Very occasionally, we can trace our chain of causes all the way back to some very fundamental cause like "I don't want to die young". At this point, logic has to get off and hop - as &lt;a href="http://en.wikipedia.org/wiki/Is-ought_problem"&gt;David Hume&lt;/a&gt; pointed out, you can't reason from "is" statements to an "ought" statement. I reckon that these low-level goals are hardwired into me by evolution, so the &lt;i&gt;ultimate cause&lt;/i&gt; of my actions is reproductive fitness.&lt;br /&gt;&lt;br /&gt;But what about situations, such as giving blood, where &lt;i&gt;I myself&lt;/i&gt; can't see any link between action and reward?&lt;br /&gt;&lt;br /&gt;Well, the important thing to realise is: just because I can't see a link, doesn't mean it ain't there. Anyone who put my life under a high-resolution microscope might observe that, in giving blood, I've probably endeared myself to many of my co-workers. By making this comparatively harmless sacrifice, I've demonstrated that I'm a good, upstanding, altruistic chap who is &lt;a href="http://www.suslik.org/Humour/FilmOrTV/BlackAdder/ba4-4.html"&gt;welcome to marry their sister&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now it's important to note that none of this went through my head. I didn't think "hmm, let's manipulate my colleagues' feelings"; what I thought was "ooh, there's a blood drive on, I can go help save someone's life". My impulse to do good appears to be completely disconnected from any sense of the consequences.&lt;br /&gt;&lt;br /&gt;But of course it's not disconnected at all. The impulse is a side-effect of how my brain is structured, and of how it was programmed when I was young (which is more or less a side-effect of how other people's brains are structured). My brain structure is controlled by my genes. My genes have spent 3.7 billion years avoiding being wiped out, and they've achieved this by producing survival machines (like me) that are comparatively successful.&lt;br /&gt;&lt;br /&gt;The result is that our actions - our unthinking, instinctive, intuitive actions - are quite often smarter than we realise. No matter how dumb the behaviour, there's probably a shred of logic hiding behind it.&lt;br /&gt;&lt;br /&gt;In short: maybe one day I'll rescue a baby bird and consequently attract a bird of the human variety.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-4133083936730143420?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/4133083936730143420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=4133083936730143420' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/4133083936730143420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/4133083936730143420'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/06/im-weirdo.html' title='I&apos;m a weirdo'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-599453325519738791</id><published>2009-06-05T08:45:00.000-07:00</published><updated>2009-06-14T07:54:49.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actuarial'/><title type='text'>Actuaries 101</title><content type='html'>So it occurs to me that, in my last post, I left one important question unanswered: what, in fact, is an actuary? What do they do, and why is it considered a remotely sensible use of time?&lt;br /&gt;&lt;br /&gt;Actuarial science is best considered as forward-looking accounting. Traditional accountants look at what has happened in the past and try to figure out whether a company is broke or not. Actuaries look at what is likely to happen in the future and try to figure out whether a company will survive it all...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;An example. Let's say that you send a ship to India to pick up some tea. You want to be sure that you don't go broke if the ship sinks. So you buy an insurance policy.&lt;br /&gt;&lt;br /&gt;The company who sells you the policy has a dilemma: how much do they charge? If they charge too little for their policies then, in the long run, too many ships will sink and they'll go bust. If they charge too much, their competitors will steal all their trade. By this point, their stockholders are probably breathing down their neck for proof that the company is doing the right thing.&lt;br /&gt;&lt;br /&gt;How do they handle this situation? They ask an actuary. The actuary will look through the mathematical literature on ship failures, consider the specific situation, and propose an actuarial model: a set of formulae that will put a price on that policy. The model may handle a number of factors - expected weather conditions at this time of year, age of ship, amount of maintenance done, even the professional opinion of engineers paid to examine the ship. The goal is to calculate a figure that will keep the company's "risk of ruin" - their chance of going bankrupt - below a certain level.&lt;br /&gt;&lt;br /&gt;The three main areas of actuarial work are:&lt;br /&gt;&lt;br /&gt;1) General insurance - dealing with the risk of expensive stuff breaking&lt;br /&gt;2) Life insurance/assurance - dealing with the risk of &lt;i&gt;people&lt;/i&gt; breaking&lt;br /&gt;3) Pensions - dealing with the risk of people staying alive long after they've stopped earning&lt;br /&gt;&lt;br /&gt;I mainly work in pensions, where the problem we deal with is that we don't know when someone will die. There are two different approaches to dealing with this:&lt;br /&gt;&lt;br /&gt;1) Defined contribution schemes. These schemes hold a specified investment portfolio for each policyholder (PH), normally linked to the amount of money that the PH has fed into the scheme over the years. If, ten years down the line, all the scheme's investments fail, the PH just doesn't get much money. The hard part, then, is projecting the policy's value at date of redemption.&lt;br /&gt;&lt;br /&gt;2) Defined benefit schemes. These set out in advance, according to some horrible messy formula, precisely how much money a pensioner will get. The hard part, then, is figuring out the amount of money the scheme needs to have &lt;i&gt;right now&lt;/i&gt; in order to pay for all this. This is called scheme valuation and it is the subject of much actuarial thought, and of the heavy-duty actuarial software described in the last post.&lt;br /&gt;&lt;br /&gt;In general, companies don't like DB schemes because, if the scheme's portfolio fails, the company has to carry the can. This is hard to allow for unless you have an unlimited source of money. So companies prefer DC schemes.&lt;br /&gt;&lt;br /&gt;By contrast, governments are perfectly happy with DB schemes. After all, if the scheme needs more money, they'll just raise taxes. And having a deterministic formula for benefits makes negotiation with unions easier. In the UK, I suspect that this rather blasé attitude is likely to backfire at some point when the public realises how good the benefits are in the public sector...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-599453325519738791?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/599453325519738791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=599453325519738791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/599453325519738791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/599453325519738791'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/06/actuaries-101.html' title='Actuaries 101'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-4376639619451171555</id><published>2009-06-05T07:39:00.000-07:00</published><updated>2009-06-14T07:55:51.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actuarial'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Actuarial software</title><content type='html'>I now have a wonderful little tool called a dongle, which means that, even if my company persists in sending me to far-flung* locations, I can keep playing with teh intarwebz.&lt;br /&gt;&lt;br /&gt;And I can keep bothering my readers (if any are still around) with pointless theorising. Bwahahahaha.&lt;br /&gt;&lt;br /&gt;On with the show. My last post discussed actuarial software, specifically how hard it is to get hold of. Since then I've done a little bit of research on the subject...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;i&gt;Q: What is actuarial valuation software?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A: It's software that allows you to pull some numbers out of thin air ("make actuarial assumptions"), punch 'em into a standard statistical model, and thus figure out how much money your company needs to stockpile to ensure that employees get their promised pensions.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: Why not just use spreadsheet software?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A: Because many of the statistical models require incredible amounts of processing power. Also spreadsheets are too easy; if actuaries used them then we'd lose our aura of mystery.&lt;br /&gt;&lt;br /&gt;(More seriously, these models are easy to screw up so it's best not to have the uninitiated trying their hand at them.)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: Why not use a general-purpose programming language?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A: Because actuaries generally don't think of themselves as programmers. Most of them can't code for toffee, and can't be bothered to learn - after all, that's not what gets them the big bucks. The purpose of actuarial software is to allow actuaries to program without actually needing to know any of the relevant concepts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: Are the statistical models really worth all this effort?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A: Not really. There's no such thing as a crystal ball, and no such thing as an actuarial model that won't be blatantly wrong thirty years down the line.&lt;br /&gt;&lt;br /&gt;A good example is smoking. A lot of the mortality rates we use are based on the tacit assumption that a sizeable proportion of the population has been inhaling plant-based tar for a lot of their life. Now that smoking is becoming less common in developed countries, our models can't always deal with the resulting increased life expectancy. See the intro to &lt;a href="http://www.pnas.org/content/106/2/393.full"&gt;this article&lt;/a&gt; for an indication of how technical this can get.&lt;br /&gt;&lt;br /&gt;So why do we bother? Let's get this straight: actuarial models will not allow you to prove that you're saving the right amount for your employees' retirement. However, it will allow you to prove that you're saving &lt;i&gt;some&lt;/i&gt; money, and that the amount you're saving is justifiable.&lt;br /&gt;&lt;br /&gt;This is of great interest to regulators, so they force pension schemes to jump through these hoops. It's like getting a degree from a prestigious uni - it doesn't actually prove that you've got two neurons to rub together, but it does make it a lot easier to filter out morons. Read up on &lt;a href="http://en.wikipedia.org/wiki/Information_asymmetry"&gt;information asymmetry&lt;/a&gt; for more info.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: Back to the main topic. What does actuarial software actually do?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A: Your standard actuarial software package will contain:&lt;br /&gt;&lt;br /&gt;1) A bunch of standard actuarial algorithms, designed to predict e.g. mortality of pensioners.&lt;br /&gt;2) A set of modules to handle country-specific or industry-specific regulatory requirements.&lt;br /&gt;3) A lot of dainty footwork to allow things like distributed processing (important given how hefty some models are).&lt;br /&gt;4) A user-friendly interface (remember, this has to be used by actuaries, who are generally not techies).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Q: And you're actually planning to produce all that???&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Probably not. But it's an interesting goal to think about.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* This is Britain I'm talking about. In USA terms, this translates to "the other end of the state".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-4376639619451171555?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/4376639619451171555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=4376639619451171555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/4376639619451171555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/4376639619451171555'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/06/actuarial-software.html' title='Actuarial software'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-5744118528853723976</id><published>2009-03-18T14:20:00.000-07:00</published><updated>2009-06-14T07:57:13.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='actuarial'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Rant: The closed-source black hole</title><content type='html'>So despite my best efforts, I seem to have ended up in an actuarial career path. The only question now is how best to get ahead in that path.&lt;br /&gt;&lt;br /&gt;As a tech geek, one approach that makes sense is to learn the programming languages and toolkits associated with actuarial science. There are many of these for different tasks.&lt;br /&gt;&lt;br /&gt;One common task is asset valuation, and possibly the most popular tool for this is a software package called &lt;a href="http://www.towersperrin.com/tp/showhtml.jsp?url=global/service-areas/financial-modeling-software/solutions/products/moses.htm&amp;country=global"&gt;MoSeS&lt;/a&gt;. As far as I can tell, it's basically a new interface and a huuuuuge set of libraries slapped on top of Microsoft Visual Studio.&lt;br /&gt;&lt;br /&gt;And that's all I can find out...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;I've searched Amazon. Apparently there's no such thing as a MoSeS textbook. There's no such thing as a MoSeS user manual (at least not that they're willing to sell separately).&lt;br /&gt;&lt;br /&gt;I've tried Google. There's no such thing as a MoSeS help page or online documentation. The absolute best I can find is a bunch of newsletters on Towers Perrin's website, which at least confirm that MoSeS uses C++ syntax but don't tell me an awful lot else. I can't even figure out how to buy a copy.&lt;br /&gt;&lt;br /&gt;In fact, every single line of enquiry I've followed reaches their website and then stops dead.&lt;br /&gt;&lt;br /&gt;Why? Because if they provide no documentation, people will be forced to buy their training courses. Because if they provide no purchasing info, they'll be able to negotiate prices on a case-by-case basis (with all the arm-twisting that implies). Because, when you get right down to it, actuarial companies are usually rich enough to pay over and over and over.&lt;br /&gt;&lt;br /&gt;Now of course Towers Perrin have every right to do that - it's their product so they make the rules. But as a long-time FOSS user, I have serious trouble getting my head round this concept. I keep thinking "that's a stupid way to behave, if they keep on like that then someone will fork the codebase". And then I remember, oh yeah, it's closed source so no-one can do that.&lt;br /&gt;&lt;br /&gt;The actuarial world has always been relatively slow to adopt change. This is a natural side-effect of e.g. working with pension schemes that will almost certainly survive longer than the people currently maintaining them. Sadly, in software terms, it appears that actuaries have gotten as far as &lt;a href="http://www.blinkenlights.com/classiccmp/gateswhine.html"&gt;1976&lt;/a&gt; and stopped there. This is a damn shame, especially since I have to work in this industry.&lt;br /&gt;&lt;br /&gt;I now have a mission in life: to get good enough at FOSS programming, actuarial science and copyright law that I can help create an alternative to this intensely painful arrangement.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-5744118528853723976?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/5744118528853723976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=5744118528853723976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5744118528853723976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5744118528853723976'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/03/rant-closed-source-black-hole.html' title='Rant: The closed-source black hole'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-8243266893170801905</id><published>2009-03-16T16:47:00.000-07:00</published><updated>2009-06-14T08:09:41.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skepticism'/><title type='text'>The Downside</title><content type='html'>Today I'm feeling slightly irritated with skepticism. This doesn't happen often, so it's possibly worth discussing why.&lt;br /&gt;&lt;br /&gt;Skepticism isn't a state so much as a goal. It involves a constant churn of invalidated notions, and an excessive focus on seeing, hearing and speaking no falsehood. As Feynman puts it: "The first principle is not to fool yourself - and you are the easiest person to fool."&lt;br /&gt;&lt;br /&gt;In general, the effects of this are good. I have a somewhat better idea of what is sensible than the average human being. I'm better able to recognise when the emperor has no clothes. I recognise when my beliefs are not secure, and I am careful to state any caveats that may apply.&lt;br /&gt;&lt;br /&gt;In many situations (particularly the regulation-happy financial industry), this is a good thing. In other situations, it sucks...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;In particular, I've been reading about &lt;a href="http://www.ianrowland.com/ItemsToBuy/ColdReading/ColdReadingMain1.html"&gt;Cold Reading&lt;/a&gt; and &lt;a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/BavarianFireDrill"&gt;Bavarian Fire Drills&lt;/a&gt; and similar psychological tomfoolery. I understand far better than most how these principles work. And yet I know I'll probably never manage to pull one of them off.&lt;br /&gt;&lt;br /&gt;That's because I'm pathologically honest. If I were to try bluffing my way past a gate guard with the tried-and-true "don't you know who I AM???" tactic, I'd be forced to stop and say "well actually you probably don't know who I am, but you should let me through anyway. Pretty please? Alternatively, don't hit me too harOWWWWW!"&lt;br /&gt;&lt;br /&gt;Needless to say, this is sub-optimal. Especially when the time comes for salary renegotiation.&lt;br /&gt;&lt;br /&gt;There's really only one solution for it: I need to train myself to lie better. Now in the scientific world this would be a bad thing, because it would mess with people's "data hygiene" (although scientists tend to have access to fairly strong "data disinfectants"). In a long-term friendly relationship, this would be a bad thing, because it would damage the basis of trust. In many other situations, it's just unnecessarily cruel.&lt;br /&gt;&lt;br /&gt;But in adversarial situations, such as the salary renegotiation or bartering in a market or dealing with evangelicals*, effective lying - or at least the charisma that's required to lie or bullshit effectively - is a survival trait.&lt;br /&gt;&lt;br /&gt;Next question: how precisely does one exercise this faculty? Answers on a postcard.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* I've got into a habit where, if I wind up in a conversation with someone trying to convert me, I make a comment like: "Look, I've been in this debate for years, and I know all the arguments really well. So if I come out on top, that doesn't necessarily mean a lot."&lt;br /&gt;&lt;br /&gt;This is the point where I realise I'm doing something wrong.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-8243266893170801905?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/8243266893170801905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=8243266893170801905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/8243266893170801905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/8243266893170801905'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/03/downside.html' title='The Downside'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-5626809806645479935</id><published>2009-02-12T16:13:00.000-08:00</published><updated>2009-06-14T08:13:32.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>My First Patch Submission</title><content type='html'>21:00 - Hmm, that's odd, the device manager on my Ubuntu laptop won't open up. It crashes. Very strange.&lt;br /&gt;&lt;br /&gt;21:05 - Wait a second, that's not just a crash, that's a &lt;i&gt;Python stack-trace&lt;/i&gt;! I know Python, I bet I could figure out the problem here. (And then everyone will love me and my name will live forever etc etc. Really I'm just in it for the girls.)&lt;br /&gt;&lt;br /&gt;21:15 - Hey, it looks like hal-device-manager only consists of two Python scripts! This should only take five minutes.&lt;br /&gt;&lt;br /&gt;00:10 - Wow that took a long time. But I've finally found the bug (see below) and I'm ready to submit it.&lt;br /&gt;&lt;br /&gt;00:15 - Uh, where do I submit it?&lt;br /&gt;&lt;br /&gt;00:30 - OK, so it looks like Ubuntu are getting the code off of Debian, who are getting it off FreeDesktop.org. Before I get in touch, I'd better check that the FreeDesktop folks haven't fixed it in the latest version of their code.&lt;br /&gt;&lt;br /&gt;00:40 - Uh, where in tarnation is the code for this app? I can't find it in the git repository anywhere? Better google for it.&lt;br /&gt;&lt;br /&gt;00:45 - Whadda ya mean, &lt;a href="http://ubuntuforums.org/showthread.php?t=824387"&gt;obsolete&lt;/a&gt;? NOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!! *sob*&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;For anyone who is the least bit interested in this sort of thing, the bug was actually kinda cool. What the code attempts to do is:&lt;br /&gt;&lt;br /&gt;1) generate a list of devices (each of which has a predefined "parent" attribute)&lt;br /&gt;2) for each device, create a list of that device's children (thus defining a device hierarchy) and ensure that the children's "parent" attribute points nicely at the parent&lt;br /&gt;3) recursively set some of the children's attributes based on the parent's attribute&lt;br /&gt;&lt;br /&gt;This works fine... except when there is more than one device with exactly the same name, and where those twin devices have a child. In this case, step 2 will result in the third device being registered as a child of both twins. From the child's point of view, the second twin will be designated as its parent.&lt;br /&gt;&lt;br /&gt;When step 3 happens, the first twin is initialised. Then its child is initialised. But to do this, the child needs to check some of its parent's attributes. And who is the parent? The second twin, which hasn't yet been initialised. So the child can't get the info it needs and thusly throws a tantrum.&lt;br /&gt;&lt;br /&gt;The patch is to stick a strategic "break" statement into the code:&lt;br /&gt;&lt;pre&gt;--- DeviceManager.py.old 2009-02-12 23:15:48.000000000 +0000&lt;br /&gt;+++ DeviceManager.py 2009-02-12 23:16:44.000000000 +0000&lt;br /&gt;@@ -286,6 +286,7 @@&lt;br /&gt;                     if p.device_name==parent_name:&lt;br /&gt;                         device.parent_device = p&lt;br /&gt;                         p.children.append(device)&lt;br /&gt;+                        break&lt;br /&gt;             if device!=virtual_root and device.parent_device==virtual_root:&lt;br /&gt;                 virtual_root.children.append(device)&lt;br /&gt;             if device==virtual_root:&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I suspect this situation won't come up very much, possibly only on those systems that (like me) have a Broadcom BCM4401-B0 100Base-TX ethernet controller.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-5626809806645479935?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/5626809806645479935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=5626809806645479935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5626809806645479935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5626809806645479935'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/02/my-first-patch-submission.html' title='My First Patch Submission'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-1685285217017517676</id><published>2009-01-22T12:20:00.000-08:00</published><updated>2009-06-14T08:25:22.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='purgeable'/><category scheme='http://www.blogger.com/atom/ns#' term='actuarial'/><title type='text'>That education rant</title><content type='html'>&lt;i&gt;Edit 14 June 08: I'm marking this post as purgeable because large chunks of it are borderline unreadable, even to me. If anyone finds the subject matter particularly fascinating, leave a comment and I'll rewrite it.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There is a phenomenon in the educational system known as "dumbing down". It's a least-common-denominator situation: where some people have trouble understanding a concept, you either remove the concept from your syllabus or spend crazy amounts of time explaining it.&lt;br /&gt;&lt;br /&gt;The problem this creates is that the "improved" material is far harder for smart people to understand. Case in point: my actuarial study notes...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Actuaries are (ideally) clairvoyant accountants. Whereas a normal accountant can only see what your assets are worth now, an actuary can look at something like the cashflows associated with a pension scheme or insurance policy and make an educated guess about how much those cashflows will be worth in the future. This requires substantial maths to try to pin down the odds of various events (death, illness, car crashes) happening to the individual who took out the policy.&lt;br /&gt;&lt;br /&gt;So actuaries have to be quite heavily trained. In England, this training is regulated by the Institute of Actuaries. The IoA run the actuarial exam system. They also provide a sort of syllabus known as the "Core Reading", which is a very terse description of everything examinable.&lt;br /&gt;&lt;br /&gt;Problem is, a lot of people who take the exams don't have a strong maths or finance background.So a secondary market has grown up, which is mostly filled by the Actuarial Education Company (ActEd), a for-profit organisation supplying lecture notes. ActEd license use of the Core Reading material from the IoA, and they intersperse it with lots of detailed discussion.&lt;br /&gt;&lt;br /&gt;This can sometimes be very useful. For example, where the Core Reading might just list a type of tradeable asset by name, the ActEd notes will provide a detailed description with examples. However, sometimes it can be very very annoying.&lt;br /&gt;&lt;br /&gt;Currently I'm trying to read up on Markov Chains. For me, this is not a difficult concept. But revision is going veeery veeery sloooooowly, because for every five lines of actual maths I also have to digest two pages of wordy, confusing, often seriously dubious information. This slows my learning pace down to a crawl, not least because I frequently have to re-read stuff to convince myself that yes, they are bothering to say something that obvious.&lt;br /&gt;&lt;br /&gt;If their only problem was overdocumentation of the Core Reading, I'd be unhappy but I'd accept it. I'm aware that many people (cough*economists*cough) don't have my familiarity with mathematical terminology, and these people also deserve some support. But what I can't handle is the fact that the Core Reading is also underdocumented.&lt;br /&gt;&lt;br /&gt;Sounds paradoxical? Well, let me explain. The average mathematical proof, as written down, will contain approximately one part non-obvious statements to four parts obvious ("trivial") statements. The trivial bits are just mathematical filler - they make it easy to see the links between the key non-trivial assumptions and the conclusion.&lt;br /&gt;&lt;br /&gt;As a mathematician, I would expect ActEd to take the following approach: lay out the whole proof, devote a fair amount of time to justifying the key assumptions, and if necessary spend a smaller number of column inches dissecting and rephrasing the rest of the logic.&lt;br /&gt;&lt;br /&gt;Apparently ActEd disagrees. Their main approach appears to be: go through the proof step by step (no overview), ignore any steps that would take too long to explain, and go into mind-numbingly overwrought detail on the bits that economists might possibly be able to get their heads round. It's a sort of triage approach.&lt;br /&gt;&lt;br /&gt;For example, one section of the material I'm working on is devoted to "time-homogenous Markov jump processes". This is a very technical name, but the concept is simple. Imagine a system (say a person) that can be in a number of states (say healthy, sick or dead). Specify the rates of transition between the various states (for instance the rate of transition from dead to healthy is zero).&lt;br /&gt;&lt;br /&gt;One problem we often need to solve is: what are the odds of staying in a certain state S for a certain length of time T. Now it's fairly easy* to find out the odds of a person starting in one state (say healthy) and being in that state again in e.g. two years' time. But that doesn't take into account the possibility that they might have skipped between states (healthy-&gt;sick-&gt;healthy).&lt;br /&gt;&lt;br /&gt;One approach to calculating this is as follows. Define a set of events** B&lt;sub&gt;k&lt;/sub&gt;. B&lt;sub&gt;0&lt;/sub&gt; is the event that the system is in state S at times 0 and T. B&lt;sub&gt;1&lt;/sub&gt; is the event that the system is in state S at times 0, T/2 and T. B&lt;sub&gt;2&lt;/sub&gt; gives S at times 0, T/4, T/2, 3T/4 and T. And so on, with each new event doubling the number of times after time 0 that the system must be in state S. All of these are relatively easy to calculate.&lt;br /&gt;&lt;br /&gt;Notice two other things. Firstly, event B&lt;sub&gt;k&lt;/sub&gt; "contains" event B&lt;sub&gt;j&lt;/sub&gt; if j is less than k. For example, you can't hit S at times 0, T/2 and T (event B&lt;sub&gt;1&lt;/sub&gt;) without automatically hitting S at times 0 and T (event B&lt;sub&gt;0&lt;/sub&gt;).&lt;br /&gt;&lt;br /&gt;Secondly, the event that the system stays in state S until time T (the thing we were having trouble calculating) is the union of all the events B&lt;sub&gt;k&lt;/sub&gt;. You achieve stasis (an event we'll call {T&lt;sub&gt;0&lt;/sub&gt;&amp;gt;T}, meaning that the first transition time is later than T) by achieving all the events B&lt;sub&gt;k&lt;/sub&gt;.&lt;br /&gt;&lt;br /&gt;This is hard to see, but imagine if the system hopped out of state S for just a minute then hopped back in again. There would be some value of k large enough that a multiple of 0.5&lt;sup&gt;k&lt;/sup&gt; would fall into that minute. So if you leave state S, you forfeit that event, and therefore you forfeit the entire ensemble of events.&lt;br /&gt;&lt;br /&gt;So we can now outline a method for calculating the probability of {T&lt;sub&gt;0&lt;/sub&gt;&amp;gt;T}.&lt;br /&gt;&lt;br /&gt;Step 1: {T&lt;sub&gt;0&lt;/sub&gt;&amp;gt;T} = U&lt;sub&gt;0-∞&lt;/sub&gt;(B&lt;sub&gt;k&lt;/sub&gt;)&lt;br /&gt;&lt;br /&gt;The U symbol means a union of events, and the ∞ means that you include all such events right up to k=infinity.&lt;br /&gt;&lt;br /&gt;Step 2: U&lt;sub&gt;0-∞&lt;/sub&gt;(B&lt;sub&gt;k&lt;/sub&gt;) = lim&lt;sub&gt;n→∞&lt;/sub&gt;(U&lt;sub&gt;0-n&lt;/sub&gt;(B&lt;sub&gt;k&lt;/sub&gt;))&lt;br /&gt;&lt;br /&gt;This means that, if you take a finite union (up to n) and then let n tend to infinity, you get the same result as just going straight to infinity.&lt;br /&gt;&lt;br /&gt;Step 3: lim&lt;sub&gt;n→∞&lt;/sub&gt;(U&lt;sub&gt;0-n&lt;/sub&gt;(B&lt;sub&gt;k&lt;/sub&gt;)) = lim&lt;sub&gt;n→∞&lt;/sub&gt;(B&lt;sub&gt;n&lt;/sub&gt;)&lt;br /&gt;&lt;br /&gt;This follows from our earlier note that each of these events contains all lesser events. If you take the union of a finite number of events, you just get the largest of those events.&lt;br /&gt;&lt;br /&gt;Step 4: Therefore P({T&lt;sub&gt;0&lt;/sub&gt;&amp;gt;T}) = lim&lt;sub&gt;n→∞&lt;/sub&gt;(P(B&lt;sub&gt;n&lt;/sub&gt;))&lt;br /&gt;&lt;br /&gt;P(X) just means "probability of event X taking place".&lt;br /&gt;&lt;br /&gt;We now have a nice elegant approach to calculating this nasty value P({T&lt;sub&gt;0&lt;/sub&gt;&amp;gt;T}). We can just find a formula for the values P(B&lt;sub&gt;n&lt;/sub&gt;), and then see what happens as n gets bigger and bigger. The limiting value of this series will be the probability we're after.&lt;br /&gt;&lt;br /&gt;Now, this was not an easy proof for me to explain. But allow me to point out three things:&lt;br /&gt;&lt;br /&gt;1) Anyone who's got this far in the course will already have a thorough understanding of terminology like events, unions, probabilities, etc. ActEd doesn't need to explain that at this point.&lt;br /&gt;&lt;br /&gt;2) The ActEd notes focus entirely on the symbol-manipulation steps 2-4. These steps are basically trivial - they shouldn't require much more than the line or two of elaboration I gave them. The mathematically interesting step 1, which &lt;i&gt;should&lt;/i&gt; be analysed in detail, is completely ignored.&lt;br /&gt;&lt;br /&gt;3) And yet they still took more words to describe this proof than I've used in this entire essay!&lt;br /&gt;&lt;br /&gt;Reading these notes is giving me such a headache.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* Trust me on this. Or alternatively complain loudly and I'll provide you with a more detailed explanation.&lt;br /&gt;** An event is a thing that may or may not happen, depending on the random behaviour of the system being studied&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-1685285217017517676?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/1685285217017517676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=1685285217017517676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/1685285217017517676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/1685285217017517676'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/01/that-education-rant.html' title='That education rant'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-1128558593352680782</id><published>2009-01-11T05:07:00.000-08:00</published><updated>2009-06-14T08:36:48.892-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='purgeable'/><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><title type='text'>Practical philosophising</title><content type='html'>&lt;i&gt;Edit 14 June 09: I'm considering purging this post. There's some good philosophy going on in there somewhere, but it is not well-argued. I'll probably rewrite it as a sequence of posts at some point.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The basic principle of modern skepticism is that it's not about what you believe, it's about why. A good decision made for bad reasons is an oxymoron: flukes don't count.&lt;br /&gt;&lt;br /&gt;Of course, this is not a complete answer. How do you know if your reasons for believing are good? For a start, you can look at how different approaches have panned out in the past...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;In some areas, this is pretty much a solved problem. As far as figuring out how e.g. fundamental physical objects interact, it's a gimme: the scientific method as applied to physics is where it's at. Similarly for chemistry, cosmology and basic biology. By following the scientific method, you can analyse, understand and, most importantly, predict. The end justifies the means.&lt;br /&gt;&lt;br /&gt;So what are the limitations of this method? What are the pathological situations where it breaks down? My favourite example is poker. By definition it's impossible to predict the responses of a good poker player: if they were predictable, they wouldn't be any good. The scientific method breaks down when someone is actively trying to subvert your results, which is why many excellent scientists get badly suckered by psychics.&lt;br /&gt;&lt;br /&gt;And yet, in many ways, this is the area where understanding is most important to us. We live in a world constructed almost in its entirety by other people, none of whom would feel terribly comfortable if they thought we fully understood them. The man who understands you can manipulate you, can use you for his own ends. Attempting to understand someone borders on the disrespectful, and people will resist it tooth and nail.&lt;br /&gt;&lt;br /&gt;The extent of this effect can be demonstrated by looking at the quite frankly convoluted procedures psychologists have to use. To get useful results from a subject, the good psychologist will have to thoroughly deceive that subject about the goal of the experiment. If you're doing an experiment about attention spans, tell them it's about pattern recognition. If you're doing pattern recognition, tell them it's about political reactions. Otherwise your data will be hopelessly contaminated by your subject's second-guessing of their own behaviour.&lt;br /&gt;&lt;br /&gt;So how can we understand another person well enough to e.g. date effectively? There are two basic approaches: the theoretical and the practical.&lt;br /&gt;&lt;br /&gt;The theoretical approach tries to achieve an understanding of your date that's one level deeper than your date expects. This approach is well known by stage magicians: by planning one step further ahead than your audience expects, you can create the most magical effects.&lt;br /&gt;&lt;br /&gt;One example that I like was provided by my sister. When she was younger, a number of her friends were big fans of the horoscopes in the local paper. So if she was on the out with a friend, and that friend's horoscope said "a person wearing blue will be important to you today", my sister would wear blue. By understanding the factors that influenced her friend, she could achieve a closer relationship.&lt;br /&gt;&lt;br /&gt;In dating, a similar role is played by the modern romance. Human beings are strongly conditioned by films and books to expect certain things of each other. This doesn't always work out well for us as a species. It's noticeable that the heros from action movies would have real trouble with the heroines from romantic films. So when an action-loving bloke meets a romance-loving girl (or vice versa) there are likely to be fireworks. And not in a good way.&lt;br /&gt;&lt;br /&gt;The way to get round this is exactly what you'd expect: watch lots of sloppy romance films. This is a real issue for me - I'm a hide-behind-the-sofa kind of guy when it comes to this sort of thing. I empathise with the characters far too much to watch them blithely making fools of themselves in this way. I can't stand Mr Bean either.&lt;br /&gt;&lt;br /&gt;But in the interests of fostering better communications between the sexes, I'm willing to make the effort. I just watched my first romantic comedy in years: the film Hitch, with Will Smith playing a relationship coach. I can't say I enjoyed it - in fact I spent most of it clutching my head and yelling at the screen "no! You idiot! Don't do that!!!" But I feel I've grown as a person. Soon I hope to be able to view stuff like this without needing heavy doses of anaesthetising whisky first.&lt;br /&gt;&lt;br /&gt;Oh, and the practical approach to dating? That's to just try it a few times and see what works. In the end, this really is the only way of getting anywhere with something as complex as a woman...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-1128558593352680782?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/1128558593352680782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=1128558593352680782' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/1128558593352680782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/1128558593352680782'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/01/practical-philosophising.html' title='Practical philosophising'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-2664493226152062948</id><published>2009-01-07T14:09:00.000-08:00</published><updated>2009-01-08T11:33:23.708-08:00</updated><title type='text'>Pythonia</title><content type='html'>&lt;i&gt;"I aten't dead"&lt;br /&gt;- Granny Weatherwax&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Warning: blog post contains factual inaccuracies. See comments section for discussion.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So I keep meaning to write up my experiences in India, and I keep getting distracted. For example I've developed an interest in clockwork (don't ask).&lt;br /&gt;&lt;br /&gt;Even more braincell-consuming is my ongoing effort to produce some sort of computer game worthy of the title. This is going very slowly, mostly because I'm taking a very anal approach to it. In short, I want to make it Pythonic.&lt;br /&gt;&lt;br /&gt;An explanation. My favourite programming language, Python, puts a lot of effort into inculcating its users with good programming style. This is something very different from simply being able to program in the language, in the same way that not every writer of English prose can compete with Shakespeare. Good Python code, like any other form of poetry, should be elegant, non-kludgy, readable, evocative... Pythonic.&lt;br /&gt;&lt;br /&gt;In particular, Pythonicism discourages "procedural" programming. This is code that consists primarily of single instructions linked by commands to go to a given line. For example, if you wanted to print out the numbers from one to twenty, a procedural approach would look like:&lt;br /&gt;&lt;br /&gt;line 1: x = 0&lt;br /&gt;line 2: add 1 to x&lt;br /&gt;line 3: print x&lt;br /&gt;line 4: if x &lt; 20 then go to line 2&lt;br /&gt;line 5: quit&lt;br /&gt;&lt;br /&gt;The problem with this approach is that, unless you read and comprehend the &lt;i&gt;entire&lt;/i&gt; program, it's a pain to figure out what the blazes it's doing. Let's say you start reading at line 3. What does x equal? From line 4 you can figure out that it's a number, but there's no clear indication of what x starts out as or how it changes over time. This is not a problem for this program as it's so short, but a 1000-line example would soon make your brain explode.&lt;br /&gt;&lt;br /&gt;By contrast, a Pythonic approach would look like:&lt;br /&gt;&lt;br /&gt;line 1: for x in range(20):&lt;br /&gt;line 2: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print x&lt;br /&gt;&lt;br /&gt;If you start reading at line 2, you'll see that the text is indented, which means it's a consequence of some preceding statement. "Oh," you'll say, "I need to look to see what this command is a subclause of. I'll look at the line above." And you look, and lo and behold the line above contains all the info you need to understand x: its starting point, its limit, and its mode of change. Not only is this code shorter, it's vastly more readable. That 1000-line program starts to look manageable.&lt;br /&gt;&lt;br /&gt;The Python idiom actually has a very simple root: the principle of minimum power. Always use the most restrictive command that can achieve a given goal. It takes a bit of thought to realise that a "for" statement is less powerful than a "go to" statement, but it's true. A "for" statement imposes certain constraints: the list of values must be predefined, and in any iteration you can only move to the next value in the list.&lt;br /&gt;&lt;br /&gt;By contrast, with "go to" statements, you can achieve any pattern of recursion, however convoluted. When you read code, what you're mostly doing is narrowing down the possible explanations for what the program actually does and how it does it. "Go to" statements do not narrow things down at all, so code with them in is harder to read than code that uses more restrictive statements. This is why "go to" statements are &lt;a href="http://xkcd.com/292/"&gt;evil&lt;/a&gt;: any program containing them tends to become an unmaintainable mass of spaghetti.&lt;br /&gt;&lt;br /&gt;So Pythonicism makes for nice programs. But it also makes for headaches on the developer's part as he/she desperately wrestles with how to make a program not only functional but elegant. This is not easy. It's like trying to write instructions for an educationally subnormal employee that at the same time read like the most beautiful sonnet.&lt;br /&gt;&lt;br /&gt;The example I'm hitting is game design. The game I'm working on is extremely simple in concept: it's a turn-based game, and the actual game logic is not complicated in the least. But I'm having real trouble because I can't see how to structure the code Pythonically. Procedurally, things look like this:&lt;br /&gt;&lt;br /&gt;1) Start the program up&lt;br /&gt;2) Draw the menu screen&lt;br /&gt;3) Once the "start new game" option is selected, initialise all the game variables&lt;br /&gt;4) Draw the game-board screen&lt;br /&gt;5) Let the user play a round (updating the board as they go)&lt;br /&gt;6) Let the computer play a round (updating the board as they go)&lt;br /&gt;7) Go to 5&lt;br /&gt;&lt;br /&gt;This is perfectly viable... and completely procedural. A more Pythonic approach is still forming in my brain, but certain subtleties have become apparent. Firstly, the user actually has two roles: "dungeon-master" and "player". As dungeon-master, the user gets to choose the game settings (difficulty etc) and save or load games. As player, the user is limited to playing with the pieces they're given - no &lt;a href="http://xkcd.com/244/"&gt;metagaming&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Secondly, the core logic of the game should be agnostic as to whether a given player is human or AI - no &lt;a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/TheComputerIsACheatingBastard"&gt;cheating&lt;/a&gt;. There will therefore be two equivalent components that provide player decisions, one of which happens to have a lot of AI code in it and one of which happens to have a user interface. The user-interface component will have to be tolerant of occasional switches from player mode to dungeon-master mode. This raises a number of design questions, for example what happens if two players try to use dungeon-master mode simultaneously?&lt;br /&gt;&lt;br /&gt;So what's the pay-off from this incredibly abstract approach to designing the game? Well, there are two main advantages. Firstly, once I've got the structure sorted out to my satisfaction, inserting the actual game logic will be a piece of cake: I won't have to worry about unexpected interactions between the various bits of code, because each will have a well-planned interface to the wider world. Secondly, extending the game will also be very easy - for example I could make it a network game with minimal effort.&lt;br /&gt;&lt;br /&gt;It's still painful though. That's the joy and despair of poetic Pythonic programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-2664493226152062948?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/2664493226152062948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=2664493226152062948' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/2664493226152062948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/2664493226152062948'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2009/01/pythonia.html' title='Pythonia'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-5847728885249858068</id><published>2008-12-15T13:14:00.000-08:00</published><updated>2008-12-15T13:21:39.354-08:00</updated><title type='text'>Epiphalicious</title><content type='html'>So I recently took a trip to India, to attend the wedding of a friend from work. This was great fun and the trip was a hell of a learning experience in its own right (of which more anon).&lt;br /&gt;&lt;br /&gt;There was, however, one element of the trip that proved a little... distracting. You see, I wasn't the only one who was willing to hop on a long-haul flight for the chance to see a proper Indian wedding. I had a fellow-traveller. A girl. Who I've had a mild crush on for a while.&lt;br /&gt;&lt;br /&gt;I'm fairly sure she has no interest in me, and the trip probably did little to change her opinion given how fish-out-of-water we both were in Delhi. However, it's a demonstrable fact that close proximity to someone enhances one's emotional response to them*. In short, the crush has devolved into full-scale infatuation.&lt;br /&gt;&lt;br /&gt;And then comes the office Christmas party. And she's wearing a gorgeous dress, looking incredible, and I'm feeling like the village idiot as I shamble around trying to dance without breaking anyone's toes. I can't even pluck up the courage to make a move. This sucks...&lt;br /&gt;&lt;br /&gt;Now at this point you're probably thinking this is going to be another of those pitifully whiney posts I've been coming out with lately. But somewhere between the champagne and the Jack Daniels, I have a join-the-dots moment. I figure out what it is that's making me unhappy.&lt;br /&gt;&lt;br /&gt;The girl is a part of it, sure, but I've had the same frustration when faced with my inability to move up the career ladder. It's the feeling that I've hit my limits, that I've found some kind of glass ceiling beyond which I can't progress. I stare out across the impenetrable ocean of my own inadequacies and weep, for there are no more worlds I can conquer.&lt;br /&gt;&lt;br /&gt;This is just an organising principle for thoughts that have been percolating for a while, but describing problems helps me find solutions. It occured to me that, as long as I'm improving in one area of my life, I won't care so much about the rest.&lt;br /&gt;&lt;br /&gt;And improvement takes less effort than I expected. I've spent the weekend tidying my flat. I've given a load of my old books to charity. I've sorted out dry-cleaning and food shopping and  getting various parts of my life organised, and taking a bit of exercise.&lt;br /&gt;&lt;br /&gt;Ah, the exercise. I'm very badly out of shape, and the first fifteen minutes of my half-hour jog on Saturday nearly did me in. But I reached the top of a hill, and I felt my muscles start to fall into line, and I got my breathing in check, and I looked at the world spread out before me, and I felt happy.&lt;br /&gt;&lt;br /&gt;It's Sunday as I write this and I'm just about to head out for another run. I know it isn't solving all my problems: at some point there will be a reckoning with the girl, if only to give me closure. But I now know that, when the moment comes, I'll be a better person than I am today. And that's enough.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* Or at least that's how I imagine it would look to an outsider. Speaking from the inside of my own skull, I just think she's really smart, attractive, unconventional and generally fun to be around.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-5847728885249858068?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/5847728885249858068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=5847728885249858068' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5847728885249858068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5847728885249858068'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2008/12/epiphalicious.html' title='Epiphalicious'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-214386766991311517</id><published>2008-12-10T11:49:00.000-08:00</published><updated>2008-12-10T12:16:05.264-08:00</updated><title type='text'>I don't know what they're smoking, but I want some</title><content type='html'>So I've just spent a couple of days frantically coding in (you guessed it) Excel/VBA. And I'm actually feeling surprisingly good about it.&lt;br /&gt;&lt;br /&gt;This is because the task I'm dealing with involves extracting large blocks of data from various databases and then processing it in Excel. Up until a week ago, this was a truly hideous task for me, requiring a big messy chunk of partially-hardwired code to handle dumping the data into Excel.&lt;br /&gt;&lt;br /&gt;Now, though, I'm happy. I've discovered a feature that takes care of all that: the QueryTable object. You just feed it an SQL query, point it at a cell, and it handles the rest. It has its limitations, but is generally rather nice. Apart from one issue.&lt;br /&gt;&lt;br /&gt;Yes, there's always something. But this particular problem had me scratching my head in bewilderment: this lovely little feature has only the most cursory mention in the help file. I'd have been using it for months if I'd known about it.&lt;br /&gt;&lt;br /&gt;The documentation it does have is likewise minimal. It took me two hours to figure out how to use a parametrised query, and actually getting a system up and running took a full working day.&lt;br /&gt;&lt;br /&gt;Why, Microsoft? You actually did something right for a change: you produced a conceptually-elegant tool to solve a clearly-defined and commonly-occurring problem. There is almost nothing about QueryTables that I can complain about. So why the blazes aren't you shouting to the world about it?&lt;br /&gt;&lt;br /&gt;Please please get the hang of when it's appropriate to blow your own trumpet. Or alternatively, pass me that spliff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-214386766991311517?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/214386766991311517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=214386766991311517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/214386766991311517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/214386766991311517'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2008/12/i-dont-know-what-theyre-smoking-but-i.html' title='I don&apos;t know what they&apos;re smoking, but I want some'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-5933971454024673567</id><published>2008-12-04T13:46:00.000-08:00</published><updated>2008-12-04T14:43:00.808-08:00</updated><title type='text'>Ground Rules</title><content type='html'>In the great discussion about God, it's quite common for otherwise perfectly sane people, on both sides of the argument, to start frothing at the mouth and claiming that the Other Side wishes to censor, physically injure or otherwise silence them.&lt;br /&gt;&lt;br /&gt;In many cases, this is sheer paranoia. Most folks, religious or otherwise, tend to be pretty nice when you get to know them, and are happy to allow space for the beliefs of others.&lt;br /&gt;&lt;br /&gt;In many cases, this is not paranoia. Religious arguments tend to attract a worrying number of nutjobs of all stripes. Once the &lt;a href="http://achristianvoice.com/2008/10/un-anti-blasphemy-resolution-curtails-free-speech/"&gt;legislators&lt;/a&gt; get involved, it's quite easy for little things like free speech to go right out the window.&lt;br /&gt;&lt;br /&gt;As such, I would like to propose a code of conduct for religious debate. The purpose of this code is to mark out a middle ground in this debate between the various groups of crazies who want to see all belief systems but theirs forcibly purged from the planet.&lt;br /&gt;&lt;br /&gt;Please leave a comment if you agree with this code, or if you wish to suggest changes to the wording. By signing up, you are showing solidarity with folks of other religious denominations who stand against the forces of zealotry in their own ranks.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Moderacy Manifesto&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I hold beliefs that touch on religious topics (henceforth "religious beliefs"). I feel these beliefs are justified. I reserve the right to discuss these beliefs: to present arguments in support of my beliefs, and to critique the arguments of others.&lt;br /&gt;&lt;br /&gt;I recognise that other people hold different beliefs on these topics. I acknowledge that these people feel their beliefs are justified. I respect their right to hold and discuss their beliefs, even where those beliefs conflict with mine.&lt;br /&gt;&lt;br /&gt;I do not judge an individual's moral character solely on the basis of their religious beliefs. I accept that it is possible to be a good person whilst holding religious beliefs different from mine.&lt;br /&gt;&lt;br /&gt;I do not approve of religious discrimination that results in physical, legal or financial hardships. I will not materially discriminate against anyone solely on the basis of their religious beliefs. However, I reserve the right to materially discriminate based on their actions, even when those actions are inspired by religious beliefs. I also reserve the right to discriminate in ways that do not result in hardship.&lt;br /&gt;&lt;br /&gt;I ask my government not to censor, fine, imprison or otherwise penalise any individual or group simply for holding or discussing particular religious beliefs. I ask my government not to endorse, subsidise or otherwise support any individual or group simply for holding or discussing particular religious beliefs. This includes individuals or groups that hold the same beliefs as me.&lt;br /&gt;&lt;br /&gt;Although I may disagree with other participants in this discussion, I respect their sincerity and I respect their rights. I believe that mutual tolerance, of the form described above, is the best way to demonstrate that respect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-5933971454024673567?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/5933971454024673567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=5933971454024673567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5933971454024673567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/5933971454024673567'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2008/12/ground-rules.html' title='Ground Rules'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19835303.post-905145388726030241</id><published>2008-11-20T15:21:00.000-08:00</published><updated>2008-11-20T16:29:48.617-08:00</updated><title type='text'>Ubuntu 8.10: The Verdict</title><content type='html'>I've been using the latest version of Ubuntu, codename Intrepid Ibex, for a couple of weeks now. Given this, I think I can give a fair verdict on it.&lt;br /&gt;&lt;br /&gt;The verdict is: meh.&lt;br /&gt;&lt;br /&gt;There's not really much that's actively &lt;i&gt;wrong&lt;/i&gt; with Intrepid. I've noticed a general decrease in system responsiveness and reliability compared to Hardy Heron (the last release), but frankly that's like saying Kilimanjaro is unacceptably small compared to Everest. It's still damn good by comparison with e.g. every instance of Windows I've used in the last few months. I have high hopes of penguinising my dad in the near future, as his loathing for his company Vista laptop increases.&lt;br /&gt;&lt;br /&gt;The only other issue was the grace notes (quite ironic). Intrepid has a bunch of cute little features (see below) which, unfortunately, weren't actually installed when I upgraded my system. I've since hunted them down and installed them, but this definitely abbreviated the honeymoon period.&lt;br /&gt;&lt;br /&gt;The big disappointment for me is probably OpenOffice 3.0. As far as I can tell, there is no way in which it is substantially cooler than 2.0, and the list of "great new features" is going to make any MS Office user roll their eyes and yawn theatrically. Considering what projects like Firefox and KDE have achieved in the same time, this is starting to get a bit silly. The longer this goes on, the more chance that Novell will be successful in forking the codebase and filling it full of Microsoft encrustations*.&lt;br /&gt;&lt;br /&gt;So what do we get out of this release? Well, whilst there's nothing here to really make you go "wow", there are a number of little exploratory tweaks that could easily snowball into major developments. For example, each user now has an encrypted section in their home folder. Throw in the GnuPG plugin for Thunderbird and it looks like Ubuntu is rapidly becoming the first OS to have user-friendly crypto built in.&lt;br /&gt;&lt;br /&gt;Another window on the future is Ubuntu's collaboration with the BBC to provide well-integrated access to media. Basically a huge chunk of content has just become available as a glorified playlist, via the Totem player. No need to piddle around on websites, just click through the list. I'm currently listening to the Digital Planet podcast.&lt;br /&gt;&lt;br /&gt;Finally, a fair bit of love has been bestowed on Nautilus, the file browser. It has Firefox-like tabbed file browsing and a rather impressively effective previewing system. Very cute.&lt;br /&gt;&lt;br /&gt;In general, this version took two steps forward and one step back. If you're on Hardy, I wouldn't particularly recommend you upgrade. That said, I'm glad it's out. Its showcase of features has enough neat ideas to keep the community busy for a long time.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;* This may be an unfair accusation against Novell. However, their deals with Microsoft have scared the crap out of most penguinistas - we're worried they'll go kamikaze on us like SCO did a few years back. They would get caned if they tried, but Linux needs that sort of problem like it needs a hole in the head. Given this, everything that Novell touch (especially stuff like Mono and Moonlight that they touch &lt;i&gt;with Microsoft's help&lt;/i&gt;**) tends to be interpreted as an early chess move in the game leading up to lawsuit. This may or may not be paranoia.&lt;br /&gt;&lt;br /&gt;** It's definitely not paranoid to be worried about Microsoft. It used to be that they'd just try to squish open source. These days they seem to have graduated to trying to corrupt it - embrace, extend and extinguish. Microsoft is the living expression of why the open source movement needs the free software movement - open source's pragmatism doesn't handle attacks of this kind very well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19835303-905145388726030241?l=metasyntactic.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://metasyntactic.blogspot.com/feeds/905145388726030241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19835303&amp;postID=905145388726030241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/905145388726030241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19835303/posts/default/905145388726030241'/><link rel='alternate' type='text/html' href='http://metasyntactic.blogspot.com/2008/11/ubuntu-810-verdict.html' title='Ubuntu 8.10: The Verdict'/><author><name>Lifewish</name><uri>http://www.blogger.com/profile/07133804300464048756</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07268288681082482231'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>