<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-22238331</id><updated>2011-12-30T16:38:31.421Z</updated><category term='ruby'/><category term='javascript'/><category term='blinkenwords'/><category term='apple'/><category term='普通话'/><category term='Chinese'/><category term='os x'/><category term='buggy'/><category term='lua'/><category term='fear gymnastics'/><category term='meteor'/><category term='firefox'/><category term='psychology'/><category term='excel'/><category term='pda'/><category term='x4550'/><category term='nokia'/><category term='bicycle'/><category term='AI'/><category term='leopard'/><category term='society'/><category term='macbook'/><category term='repair'/><category term='lexmark'/><category term='tv'/><category term='eclipse'/><category term='GFA Basic'/><category term='mini cd'/><category term='driving'/><category term='learning'/><category term='treo'/><category term='science'/><category term='snooker'/><category term='panicking'/><category term='women'/><category term='reading'/><category term='stress'/><category term='java'/><category term='anki'/><category term='maths'/><category term='mms'/><category term='choking'/><category term='programming'/><category term='software patents'/><category term='memory'/><category term='reasoning'/><category term='cvt car micra electromagnetic clutch brushes'/><category term='google translate'/><category term='bookmarklets'/><category term='ipod'/><category term='mac'/><category term='palm'/><category term='polaroid'/><category term='microsoft'/><category term='fix'/><category term='python idle'/><category term='gammu'/><category term='lcd'/><category term='obviousness'/><category term='jailbreak'/><category term='svn'/><title type='text'>Vague vagaries</title><subtitle type='html'>I have no idea what to be putting in here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default?start-index=101&amp;max-results=100'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>191</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-22238331.post-4268969925349970329</id><published>2011-11-15T17:19:00.001Z</published><updated>2011-11-15T17:45:02.554Z</updated><title type='text'>Google gets cabbage fronds both ways.</title><content type='html'>To follow up on an &lt;a href="http://vaguevagaries.blogspot.com/2007/01/blog-post.html"&gt;oldish post&lt;/a&gt; on the patchy quality of Google Translate, I tried the examples and found that they now translate very well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Even doing a lengthy trip between very different languages produces quite good results, which is a good sign that the meaning behind text is being properly treated:&lt;br /&gt;&lt;br /&gt;English "I like to eat cabbage fronds all day long." -&amp;gt; Japanese &lt;span style="background-color: #d9ead3; color: #38761d;"&gt;"私は長い一日キャベツの葉を食べるのが好き。"&lt;/span&gt;&lt;br /&gt;Japanese&amp;nbsp; -&amp;gt;  French &lt;span style="background-color: #ead1dc; color: #741b47;"&gt;"J'aime manger les feuilles de chou toute la journée."&lt;/span&gt;&lt;br /&gt;French&amp;nbsp; -&amp;gt;  Kannada &lt;span style="background-color: #d9ead3; color: #38761d;"&gt;"ನಾನು ಎಲೆಕೋಸು ಎಲ್ಲಾ ದಿನ ಎಲೆಗಳನ್ನು ತಿನ್ನಲು ಪ್ರೀತಿ."&lt;/span&gt;&lt;br /&gt;Kannada&amp;nbsp; -&amp;gt;  Hindi &lt;span style="background-color: #ead1dc; color: #741b47;"&gt;"मैं सारा दिन गोभी के पत्ते खाने से प्यार है."&lt;/span&gt;&lt;br /&gt;Hindi&amp;nbsp; -&amp;gt;  Irish &lt;span style="background-color: #d9ead3; color: #38761d;"&gt;"Is breá liom a ithe na duilleoga cabáiste an lá ar fad."&lt;/span&gt;&lt;br /&gt;Irish&amp;nbsp; -&amp;gt;  Korean &lt;span style="background-color: #ead1dc; color: #741b47;"&gt;"하루 종일 배추의 잎을 먹는 사랑 해요."&lt;/span&gt;&lt;br /&gt;Korean&amp;nbsp; -&amp;gt;  Polish &lt;span style="background-color: #d9ead3; color: #38761d;"&gt;"Uwielbiam jeść liście kapusty cały dzień."&lt;/span&gt;&lt;br /&gt;Polish&amp;nbsp; -&amp;gt;  Welsh &lt;span style="background-color: #ead1dc; color: #741b47;"&gt;"Rwyf wrth fy modd i fwyta'r dail bresych drwy'r dydd."&lt;/span&gt;&lt;br /&gt;Welsh&amp;nbsp; -&amp;gt;  English &lt;span style="background-color: #d9ead3; color: #38761d;"&gt;"I love to eat the leaves of cabbage all day."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So our 9-step purple monkey dishwasher train converted "I like to eat cabbage fronds all day long" into "I love to eat the leaves of cabbage all day".&lt;br /&gt;&lt;br /&gt;There were a couple of languages (Arabic, Gujarati, Chinese) which mangled or lost some of the information (e.g. "cabbage fronds" into "cabbage" or "all day" into "every day"), but this is pretty impressive, and a tangible improvement in a relatively short time. Good work, lads!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4268969925349970329?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4268969925349970329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4268969925349970329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4268969925349970329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4268969925349970329'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/11/google-gets-cabbage-fronds-both-ways.html' title='Google gets cabbage fronds both ways.'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1870552767180536646</id><published>2011-10-18T12:49:00.000+01:00</published><updated>2011-10-18T12:52:57.448+01:00</updated><title type='text'>Nonsmooth justice: the discontinuous mapping of crimes to sentences</title><content type='html'>From &lt;a href="http://www.bbc.co.uk/news/uk-15347868"&gt;BBC news&lt;/a&gt;:&lt;blockquote&gt;&lt;i&gt;Jordan Blackshaw, 21, of Northwich, Cheshire, jailed for four years after admitting encouraging a riot on Facebook, which never happened&lt;/i&gt;&lt;/blockquote&gt;For comparison, if you were driving at 3 times the speed limit on the wrong side of the road, and you knocked someone down and left them in a braindead coma forever, the &lt;a href="http://www.enfieldindependent.co.uk/news/localnews/9311595.Tougher_sentences_welcomed_for_dangerous_drivers_who_cause_serious_injury/"&gt;maximum sentence&lt;/a&gt; you could receive in the UK is 5 years. Until very recently it was 2 years.&lt;br/&gt;&lt;br/&gt;This is somehow on a par with "encouraging a riot on Facebook, which never happened" which gained at least two people a 4 year sentence each.&lt;br/&gt;Are you having a laugh? Because I'm not.&lt;br/&gt;&lt;br/&gt;The situation is similar to that of a schoolteacher in the US who was sentenced to &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Morton_Berger"&gt;200 years&lt;/a&gt; (!!) in prison without the possibility of parole, for possession of 20 images of child porn. Sure, collecting child porn is not a particularly nice thing to do, but again, there are murderers who will be sentenced and get out of jail before his sentence is finished. There are people who physically abuse, torture or actually kill children who could get out before him. Doesn't make much sense, does it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1870552767180536646?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1870552767180536646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1870552767180536646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1870552767180536646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1870552767180536646'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/10/nonsmooth-justice-discontinuous-mapping.html' title='Nonsmooth justice: the discontinuous mapping of crimes to sentences'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8004279431951449357</id><published>2011-09-10T02:33:00.002+01:00</published><updated>2011-09-10T02:43:19.978+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google translate'/><title type='text'>Google Translate's voice input: phones only?</title><content type='html'>So apparently Google Translate takes voice input now - although it seems you need Chrome if you're not doing it on an Android or iPhone. The privacy issue of Chrome being able to record from your microphone without your consent is... interesting.&lt;br /&gt;&lt;br /&gt;If you do it on a PC&lt;sup&gt;*&lt;/sup&gt;, it only allows you to give voice input in English. But if you do it via the iPhone/Android apps - even though they seem to use HTML5 anyway - you can give input in 15 different languages.&lt;br /&gt;&lt;br /&gt;Google, hello? People use laptops and desktops as well - why are they restricted to English-only voice input? I couldn't find an answer to this, or a timeline for when the other languages will be available in the "vanilla" Google Translate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=1&gt;&lt;i&gt;&lt;sup&gt;*&lt;/sup&gt; Is there a good and concise term for "non-smartphone computer"?&lt;/i&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8004279431951449357?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8004279431951449357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8004279431951449357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8004279431951449357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8004279431951449357'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/09/google-translates-voice-input-phones.html' title='Google Translate&apos;s voice input: phones only?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3239383692677049290</id><published>2011-08-25T19:14:00.005+01:00</published><updated>2011-08-25T19:29:05.333+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Gradient-free data bars in Excel 2007?</title><content type='html'>Data bars are a quick and handy tool for making numbers more visually obvious in Excel. Mostly I just use them for progress bars on long ongoing writing tasks like my the... thes... I can't say the word for some reason, nevermind.&lt;br /&gt;&lt;br /&gt;Anyway, the problem&lt;sup&gt;*&lt;/sup&gt; is that Excel 2007 forces the data bars to have gradient fade to white as they reach the top. This makes them look a bit stupid and indistinct, with the apparent rationalisation that it makes it easier to read the numbers in that cell - which is pretty weak TBH, just choose the right colours, bold your text and it won't be a problem.&lt;br /&gt;&lt;br /&gt;A ridiculous workaround to get fake-solid bars is to set the bar colour to white and change the background colour of the cell to something with nice contrast that doesn't melt your eyes. Like neon green or piss yellow. Blue works for me...&lt;br /&gt;&lt;br /&gt;Anyone know a better way of doing this (other than not using Excel, or upgrading to Office 2010, since then I end up documents that don't work properly in the ancient version of Powerpoint on DCU machines)?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;sup&gt;*&lt;/sup&gt;Well, one of the problems. The others are that the default range values make almost no sense, and that values at the minimum of the range (or lower) still produces a bar, and that values over the top of the range don't entirely fill the bar. What...&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3239383692677049290?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3239383692677049290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3239383692677049290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3239383692677049290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3239383692677049290'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/08/gradient-free-data-bars-in-excel-2007.html' title='Gradient-free data bars in Excel 2007?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7691686219749111364</id><published>2011-08-16T21:32:00.007+01:00</published><updated>2011-09-13T20:33:25.962+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='bookmarklets'/><title type='text'>Browser tab overload</title><content type='html'>After a couple of years of using the excellent Opera browser, I switched to Firefox after some crashes and extremely high memory usage. It turns out that Opera was doing pretty well given that I had some 200 tabs open, though... (yes, I find interesting articles quicker than I read them, and if mail myself the links or put them in a "to read" folder, well, they seem to not get read either).&lt;br /&gt;&lt;br /&gt;Anyway, with addons and things, I've grown accustomed to Firefox now, and a recent-ish update which forces JS events from background events/timers to be processed at most once per second really helped with CPU usage.&lt;br /&gt;However, it still struggles a bit with some 100 tabs open on this laptop, and actually crashes with an out-of-memory exception on my 32-bit Vista box from time to time. Not that it explains this or anything, it just vanishes and pops up a crash reporter which doesn't seem to explain the crash; I had to run Firefox under WinDbg to get a proper, source-line annotated stack trace.&lt;br /&gt;&lt;br /&gt;One workaround for this is to just not be so lazy and to read articles immediately and follow links in a depth-first way, rather than the exponentially disastrous strategy of reading a Wikipedia article and clicking open 12 interesting links into background tabs, then doing the same for each of those tabs if I ever get that far.&lt;br /&gt;&lt;br /&gt;Until I have the discipline to do that, though (i.e. never), I found a couple of Javascript bookmarklets are helpful.&lt;br /&gt;So I stole a few bookmarklets to zap plugins, events and timers from &lt;a href="https://www.squarefree.com/bookmarklets/zap.html"&gt;here&lt;/a&gt; and taped them together into one &lt;a href="javascript:(function(){function%20zapPlugins(){function%20R(w){try{var%20d=w.document,j,i,t,T,N,b,r=1,C;for(j=0;t=[%22object%22,%22embed%22,%22applet%22,%22iframe%22][j];++j){T=d.getElementsByTagName(t);for(i=T.length-1;(i+1)%26%26(N=T[i]);--i)if(j!=3||!R((C=N.contentWindow)%3FC:N.contentDocument.defaultView)){b=d.createElement(%22div%22);b.style.width=N.width;b.style.height=N.height;b.innerHTML=%22%3Cdel%3E%22+(j==3%3F%22third-party%20%22+t:t)+%22%3C/del%3E%22;N.parentNode.replaceChild(b,N);}}}catch(E){r=0}return%20r}R(self);var%20i,x;for(i=0;x=frames[i];++i)R(x)}function%20zapEvents(){var%20H=[%22mouseover%22,%22mouseout%22,%22unload%22,%22resize%22],o=window.opera;if(document.addEventListener/*MOZ*/%26%26!o)for(j%20in%20H)document.addEventListener(H[j],function(e){e.stopPropagation();},true);else%20if(window.captureEvents/*NS4*/%26%26!o){document.captureEvents(-1/*ALL*/);for(j%20in%20H)window[%22on%22+H[j]]=null;}else/*IE*/{function%20R(N){var%20i,x;for(j%20in%20H)if(N[%22on%22+H[j]]/*NOT%20TEXTNODE*/)N[%22on%22+H[j]]=null;for(i=0;x=N.childNodes[i];++i)R(x);}R(document);}}function%20zapTimers(){var%20c,tID,iID;tID=setTimeout(function(){},0);for(c=1;c%3C1000%20%26%26%20c%3C=tID;++c)clearTimeout(tID%20-%20c);iID=setInterval(function(){},1000);for(c=0;c%3C1000%20%26%26%20c%3C=iID;++c)clearInterval(iID%20-%20c);}function%20zapAll(){zapPlugins();zapEvents();zapTimers();}zapAll();})();"&gt;"Zap all"&lt;/a&gt; snippet. Going through the roughly five million open and unread Lifehacker tabs and zapping off the Javascript machinery and other cruft managed to reduce the CPU usage to a respectable ~1% mostly. And pared the RAM usage from 1.5 gigs down to just under 1 gig on that Vista box.&lt;br /&gt;&lt;br /&gt;Screw solving the underlying problem when you have &lt;i&gt;bookmarklets&lt;/i&gt;!&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Obsolescence update: A recent feature in Firefox (at least the Aurora 8.0x releases) allows you to set tabs to load lazily (i.e. a tab won't automatically load after opening Firefox, until you activate that tab)... this is perfect for messy users like myself who end up with more tabs than they can eat - it seems to work really well.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7691686219749111364?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7691686219749111364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7691686219749111364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7691686219749111364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7691686219749111364'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/08/browser-tab-overload.html' title='Browser tab overload'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2631908187357260100</id><published>2011-06-17T15:40:00.010+01:00</published><updated>2011-11-15T17:10:56.194Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='lua'/><title type='text'>Closed windows from a crashed Firefox: Dig [out of] your own grave and save!</title><content type='html'>Well, I don't know what happened. The Windows box went down for a reboot due to the usual bundle of patches for Windows bugs. Somewhere along the line, Firefox managed to close the window with all my (way too many) tabs, and when I rebooted, it opened up on the Mozilla homepage. Burn.&lt;br /&gt;&lt;br /&gt;No problem, going to &lt;i&gt;about:sessionrestore&lt;/i&gt; displays a list of... empty. Oh.&lt;br /&gt;&lt;br /&gt;Ok then. A quick look in the profile dir (%APPDATA%\Mozilla\Firefox\Profiles\*.default) shows that the sessionstore.js and backup are over 4 megs in size - that looks promising. So I copy them and quit Firefox.&lt;br /&gt;Inside sessionstore.js is a gigantic JSON string. Inside that, I find a closed tab (the session restore tab which I had given up on), with apparently another full JSON string in the #sessionData field. After decoding &lt;i&gt;that&lt;/i&gt;, I find an empty list of windows, and a list of _closedWindows including my main window with many many tabs. Yay, I can just swap them then.&lt;br /&gt;&lt;br /&gt;Here's a little program in Lua which might help resurrect your tabs/windows if something similar happens to you. It uses the very fast &lt;a href="http://www-users.rwth-aachen.de/David.Kolf/json-lua"&gt;dkjson&lt;/a&gt; library (the whole read/decode/futz/encode/write process for a 4.5mb file takes about 1.25 seconds on my run-of-the-mill desktop using &lt;a href="http://luajit.org/"&gt;LuaJIT&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In this case, there was an open window with one closed tab containing an &lt;i&gt;about:sessionrestore&lt;/i&gt; form...&lt;/b&gt;&lt;blockquote&gt;&lt;pre&gt;  json = require('dkjson')&lt;br /&gt;&lt;br /&gt;  print('Reading file...')&lt;br /&gt;  local session = assert(io.open('sessionstore.js', 'r'))&lt;br /&gt;  local session_data = session:read('*all')&lt;br /&gt;  print('Parsing ('..#session_data..' bytes)...')&lt;br /&gt;  local obj, pos, err = json.decode(session_data, 1, json.null)&lt;br /&gt;  if err then error(err) end&lt;br /&gt;  print('Success! table size: '..#obj, pos, err)&lt;br /&gt;&lt;br /&gt;  -- I closed the session restore tab since the list was empty.&lt;br /&gt;  -- Turns out it still had the closed window data, so&lt;br /&gt;  -- we can extract that. You may have to change this.&lt;br /&gt;  local data = obj.windows[1]._closedTabs[1].state.&lt;br /&gt;      entries[1].formdata['#sessionData']&lt;br /&gt;&lt;br /&gt;  -- parse it, swap open/closed windows&lt;br /&gt;  local data_p = json.decode(data, 1, json.null)&lt;br /&gt;  print('Decoded, swapping closed and open windows')&lt;br /&gt;  local old_windows = data_p.windows&lt;br /&gt;  data_p.windows = data_p._closedWindows&lt;br /&gt;  data_p._closedWindows = old_windows&lt;br /&gt;&lt;br /&gt;  print('Encoding')&lt;br /&gt;  local outf = assert(io.open('sessionstore-rec-fixed.js', 'w'))&lt;br /&gt;  outf:write(json.encode(data_p))&lt;br /&gt;  outf:close()&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;b&gt;In this case, the open windows had suddenly become closed windows... (this just happened now, the hell Aurora?)&lt;/b&gt;&lt;blockquote&gt;&lt;pre&gt;  json = require('dkjson')&lt;br /&gt;  print('Reading file...')&lt;br /&gt;  local session = assert(io.open('sessionstore.js', 'r'))&lt;br /&gt;  local session_data = session:read('*all')&lt;br /&gt;  print('Parsing ('..#session_data..' bytes)...')&lt;br /&gt;  local obj, pos, err = json.decode(session_data, 1, json.null)&lt;br /&gt;  if err then error(err) end&lt;br /&gt;&lt;br /&gt;  print('Success! table size: '..#obj, pos, err)&lt;br /&gt;  print('Decoded, swapping closed and open windows')&lt;br /&gt;  local old_windows = obj.windows&lt;br /&gt;  obj.windows = obj._closedWindows&lt;br /&gt;  obj._closedWindows = old_windows&lt;br /&gt;&lt;br /&gt;  print('Encoding')&lt;br /&gt;  local outf = assert(io.open('sessionstore-rec-fixed.js', 'w'))&lt;br /&gt;  outf:write(json.encode(obj))&lt;br /&gt;  outf:close()&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2631908187357260100?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2631908187357260100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2631908187357260100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2631908187357260100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2631908187357260100'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/06/closed-windows-from-crashed-firefox-dig.html' title='Closed windows from a crashed Firefox: Dig [out of] your own grave and save!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4742044542646928544</id><published>2011-03-28T17:00:00.004+01:00</published><updated>2011-03-28T17:11:14.627+01:00</updated><title type='text'>Rachota... oh no you di'n't!</title><content type='html'>Started using &lt;a href="http://rachota.sourceforge.net/en/index.html"&gt;Rachota&lt;/a&gt; a couple of days ago to keep track of how much time I'm spending on my research, which currently consists of reading a big stats book.&lt;br /&gt;&lt;br /&gt;Clicked into the "Analytics" tab just now and was informed of the following:&lt;br /&gt;&lt;blockquote&gt;* You don't categorize your tasks enough. Try to assign some keyword to as many tasks as you can. This helps to track how much time your projects consume.&lt;br /&gt;* You seem to spend too much time on private tasks or off the computer. Either minimize working on private stuff or don't leave your computer often without measuring such activity.&lt;br /&gt;* It looks like your tasks are either very short or too long. Try to consolidate the short ones or divide the complex tasks. This helps to identify where your time really goes.&lt;br /&gt;* You don't prioritize your tasks correctly. Use different priorities to distinguish important tasks from the low priority ones. This helps to keep focus on your real objectives.&lt;br /&gt;* You don't use regular tasks properly. This might indicate you often work on a task that is not set as regular or there is a regular task that in fact occurs very rarely.&lt;br /&gt;* It seems you leave your tasks open forever. Instead, close it once you are done with each task in reality to make your daily ToDo list shorter. &lt;b&gt;Or don't you really finish anything?&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;... &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-O4oyUt5Nx1o/TZCy-zenudI/AAAAAAAAAHY/OsEOZrqwBYQ/s1600/rachota-y-u-2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-O4oyUt5Nx1o/TZCy-zenudI/AAAAAAAAAHY/OsEOZrqwBYQ/s320/rachota-y-u-2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5589163929607059922" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4742044542646928544?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4742044542646928544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4742044542646928544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4742044542646928544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4742044542646928544'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/03/rachota-oh-no-you-dint.html' title='Rachota... oh no you di&apos;n&apos;t!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-O4oyUt5Nx1o/TZCy-zenudI/AAAAAAAAAHY/OsEOZrqwBYQ/s72-c/rachota-y-u-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-173782493979575844</id><published>2011-03-01T18:51:00.001Z</published><updated>2011-03-01T18:52:31.444Z</updated><title type='text'>Pointing float</title><content type='html'>&gt; =(1/0.1)&lt;br /&gt;10&lt;br /&gt;&gt; =(1/(1-0.9))&lt;br /&gt;10&lt;br /&gt;&lt;br /&gt;&gt; =math.ceil(1/0.1)&lt;br /&gt;10&lt;br /&gt;&gt; =math.ceil(1/(1-0.9))&lt;br /&gt;&lt;b&gt;&lt;i&gt;11&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;....FFFFFFFUUUUUUUUU&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-173782493979575844?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/173782493979575844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=173782493979575844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/173782493979575844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/173782493979575844'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/03/pointing-float.html' title='Pointing float'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1103612495700494</id><published>2011-02-14T01:07:00.003Z</published><updated>2011-02-14T01:25:07.936Z</updated><title type='text'>Gluap: an attempt at PushGP in Lua</title><content type='html'>Eventually got around to implementing a basic genetic programming system in Lua, using the subset of the &lt;a href="http://hampshire.edu/lspector/push3-description.html"&gt;Push 3.0&lt;/a&gt; language as explained in &lt;a href="http://vaguevagaries.blogspot.com/2011/02/mini-side-procrastination-project-gluap.html"&gt;the previous post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The results on my amazingly simple test function (&lt;a href="http://www.codecogs.com/eqnedit.php?latex=f(x) = 2x" target="_blank"&gt;&lt;img src="http://latex.codecogs.com/gif.latex?f(x) = 2x" title="f(x) = 2x" /&gt;&lt;/a&gt;) are not great so far, though. Some runs produce a good result, while others get stuck in bad local optima:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;best program so far with fitness 4.7958315233127 (integer.dup integer.+)&lt;br /&gt;...&lt;br /&gt;best program so far with fitness 71.917763204878 (integer.dup 231 298 integer./ integer./ integer.+)&lt;br /&gt;...&lt;br /&gt;best program so far with fitness 772.44948974278 (true)&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Some of this may be due to using parsimony pressure, which can prioritise suboptimal solutions that are shorter in length. I'll have to read the &lt;a href="http://books.google.com/books?id=pIQEJHeevEcC"&gt;tome&lt;/a&gt; on GP that's sitting upstairs.&lt;br /&gt;&lt;br /&gt;Also, I've only implemented very simplistic mutation so far; maybe crossover will work better?&lt;br /&gt;Even for mutation, selecting from the Push 3.0 instruction set with a uniform probability might be bad, since there are so many weird EXEC and CODE instructions, which are probably less likely to be useful than the simple arithmetic and stack instructions like FLOAT.* and INTEGER.DUP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1103612495700494?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1103612495700494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1103612495700494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1103612495700494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1103612495700494'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/02/gluap-attempt-at-pushgp-in-lua.html' title='Gluap: an attempt at PushGP in Lua'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5409280853033064945</id><published>2011-02-08T01:06:00.012Z</published><updated>2011-02-09T04:50:37.120Z</updated><title type='text'>Mini-side-procrastination-project: Gluap (PushGP in Lua)</title><content type='html'>Rather than procrastinate uselessly this week, I decided to implement a barebones interpreter and library for &lt;a href="http://hampshire.edu/lspector/push3-description.html"&gt;Push 3.0&lt;/a&gt;, a stack-based language intended for use in evolutionary computation. For me, that means genetic programming. Never having tried Forth, this will be the first stack-based language I've ever used... the idea is interesting, especially with the gimmicky &lt;i&gt;exec&lt;/i&gt; and &lt;i&gt;code&lt;/i&gt; stacks, bringing up all sorts of weird possibilities for code which evolves its own control flow.&lt;br /&gt;&lt;br /&gt;The language du jour is Lua, which feels a bit like a mix between Ruby and Python and maybe Tcl, and has a ravishingly fast JITted interpiler called &lt;a href="http://luajit.org"&gt;LuaJIT&lt;/a&gt; on most x86/x64 systems.&lt;br /&gt;&lt;br /&gt;It's going to be a mess, but hopefully a fun mess. After a few hours' work, I've got it to the point where it can do... almost nothing! It can interpret programs that consist of single number literals, though...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit, 2 groggy hours later&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Finally, it can parse and evaluate very simple Push programs like this:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;local result =&lt;br /&gt;  gluap.eval_program '( 5 1.23 + (4) - 5.67 FLOAT.*)'&lt;br /&gt;assert_equal(1, result.pop('integer'))&lt;br /&gt;assert_equal(6.9741, result.pop('float'))&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;If I can find time on Wednesday, the rest of the basic logic (I haven't got beyond basic arithmetic instructions yet) and maybe the beginnings of actual GP... or sleep, whichever.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit, 1 day and not enough sleep later&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Instead of sleeping, it was more fun to add to the interpreter so that it can now execute each of the Push 3.0 &lt;a href="http://hampshire.edu/lspector/push3-description.html#Simple%20Examples"&gt;simple examples&lt;/a&gt; correctly, including such madness as &lt;i&gt;"( ARG FLOAT.DEFINE EXEC.Y ( ARG FLOAT.* 1 INTEGER.- INTEGER.DUP 0 INTEGER.&gt; EXEC.IF ( ) EXEC.POP ) )"&lt;/i&gt;, in some 346 lines of clumsy Lua. However, there's an intimidatingly long "type dictionary" which contains a great number of instructions of varying confusingness. Meh, maybe I can leave most of them for now and get with the GP part.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5409280853033064945?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5409280853033064945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5409280853033064945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5409280853033064945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5409280853033064945'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/02/mini-side-procrastination-project-gluap.html' title='Mini-side-procrastination-project: Gluap (PushGP in Lua)'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4486828863232422016</id><published>2011-01-18T13:57:00.007Z</published><updated>2011-01-18T15:27:05.313Z</updated><title type='text'>Building LuaSocket for LuaJIT on Windows with MinGW. Oh my!</title><content type='html'>Lua is a lovely little language, somewhat minimalistic like Scheme, with a powerful and concise syntax somewhat like Ruby and Python, but it was never "batteries included", meaning that significant effort must be expended to accomplish some seemingly-trivial tasks.&lt;br /&gt;Those defensive of Lua will counter that this is precisely the point of Lua - to be small and carry as few dependencies as possible. This may be true, but it's nice to offer some easily-installed extras, especially for basic tasks. It would be quite painful if everyone had to rewrite and link to C code just to get the time in milliseconds or open a socket.&lt;br /&gt;&lt;br /&gt;Lua is very popular with the embedded and scripting crowd; especially game scripting, with WoW and a bunch of other games allowing users to write little Lua programs with some API to access game functions. Even &lt;a href="http://www.nmap.org/"&gt;NMap&lt;/a&gt; also allows Lua scripting now.&lt;br /&gt;&lt;br /&gt;I'm interested in the use of Lua for more general programming tasks and projects, where re-using existing libraries is important to cut down on extra work. This is especially the case for Lua newbies like myself, and given the minimalism present in Lua's design and organisation, even quite trivial tasks require the use of external libraries.&lt;br /&gt;One example of this is getting the current time in milliseconds - this is useful for writing simple benchmarking scripts, for example. Since Lua tries to stick almost exclusively (apart from some dynamic linking aspects, according to the canonical reference tome, &lt;a href="http://www.lua.org/pil/"&gt;PiL&lt;/a&gt;) to the ANSI C specification, you can't get access to time information at finer than per second resolution.&lt;br /&gt;&lt;br /&gt;There is a networking library named &lt;a href="http://w3.impa.br/~diego/software/luasocket/"&gt;LuaSocket&lt;/a&gt; which happens to provide such a function by calling into the standard C library:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;require 'socket'&lt;br /&gt;&gt; =socket&lt;br /&gt;table: 0x0026b680&lt;br /&gt;&gt; =socket.gettime&lt;br /&gt;function: 0x0026ba18&lt;br /&gt;&gt; =socket.gettime()&lt;br /&gt;1295358928.145&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Rather than compile the library from source, which can be problematic - especially on Windows and double-especially for those not familiar with C - there are two promising software repository efforts for Lua: &lt;a href="http://www.luarocks.org/"&gt;LuaRocks&lt;/a&gt; and &lt;a href="http://luadist.org/"&gt;LuaDist&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunately, neither of these managed to successfully install LuaSocket:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LuaDist failed to find anything at all on its repository - hopefully a temporary problem.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;LuaRocks first failed outright due to wget not being present on my Windows system. After installing a Gnuwin port and copying it into the LuaRocks dir, some faffing about was required to have it use our network proxy, and it finally downloaded the appropriate .lua and prebuilt .dll files. The DLLs crash LuaJIT, the JITted interpiler I'm using.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Apparently the dynamic libraries provided by such extensions must be compiled against your interpreter's lua51.dll.&lt;br /&gt;&lt;br /&gt;To get LuaRocks to use a network proxy, you must add an (undocumented) entry to the config.lua file:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;proxy = "http://proxy:port"&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Since the prebuilt DLLs didn't work, I tried to build luasocket from source, linking against LuaJIT's lua51.dll. For this, LuaRocks tried to use what I assume are Visual Studio commands:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;...&lt;br /&gt;Extracting  luasocket-2.0.2\test\testclnt.lua&lt;br /&gt;Extracting  luasocket-2.0.2\test\testsrvr.lua&lt;br /&gt;Extracting  luasocket-2.0.2\test\testsupport.lua&lt;br /&gt;&lt;br /&gt;Everything is Ok&lt;br /&gt;&lt;br /&gt;Folders: 6&lt;br /&gt;Files: 89&lt;br /&gt;Size:       477216&lt;br /&gt;Compressed: 552960&lt;br /&gt;'msbuild' is not recognized as an internal or external command,&lt;br /&gt;operable program or batch file.&lt;br /&gt;cp: src/mime.dll: No such file or directory&lt;br /&gt;cp: src/socket.dll: No such file or directory&lt;br /&gt;&lt;br /&gt;Error: Build error: Failed building.&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Oh well, it made a pretty decent effort. There was an option to install LuaRocks using the MinGW compiler toolchain, and to use LuaJIT as the interpreter. This crashed. So I tried to build LuaSocket from source myself, but was stymied because the provided Makefiles/solution files are for Linux or assume Visual Studio is available on Windows.&lt;br /&gt;&lt;br /&gt;After an lengthy period of head-banging, the following Makefile (in luasocket's &lt;span style="font-style:italic;"&gt;src&lt;/span&gt; dir) produced DLLs that work in LuaJIT for me (after calling mingw32-make, the resulting mime.dll and socket.dll can be moved into luajit-dir\mime\core.dll and lj-dir\socket\core.dll).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;#------&lt;br /&gt;# LuaSocket makefile configuration&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;#------&lt;br /&gt;# Output file names&lt;br /&gt;#&lt;br /&gt;EXT=dll&lt;br /&gt;SOCKET_V=2.0.2&lt;br /&gt;MIME_V=1.0.2&lt;br /&gt;SOCKET_SO=socket.$(EXT)&lt;br /&gt;MIME_SO=mime.$(EXT)&lt;br /&gt;&lt;br /&gt;CC="C:\MinGW\bin\mingw32-gcc.exe"&lt;br /&gt;CINC=-I"C:\MinGW\include"&lt;br /&gt;&lt;br /&gt;LD=$(CC)&lt;br /&gt;LDFLAGS=-L "C:\MinGW\lib" -lmingw32 -lkernel32 -lcrtdll -lwsock32 -shared&lt;br /&gt;CFLAGS= $(LUAINC) $(CINC) $(DEF) -pedantic -Wall -O2&lt;br /&gt;#------&lt;br /&gt;# Lua includes and libraries&lt;br /&gt;&lt;br /&gt;LUAINC=-I"C:\Program Files\Lua\5.1\include"&lt;br /&gt;LUADLL="C:\code\luajit2\lua51.dll"&lt;br /&gt;&lt;br /&gt;SOCKET_OBJS:= \&lt;br /&gt; luasocket.o \&lt;br /&gt; timeout.o \&lt;br /&gt; buffer.o \&lt;br /&gt; io.o \&lt;br /&gt; auxiliar.o \&lt;br /&gt; options.o \&lt;br /&gt; inet.o \&lt;br /&gt; tcp.o \&lt;br /&gt; udp.o \&lt;br /&gt; except.o \&lt;br /&gt; select.o \&lt;br /&gt; wsocket.o &lt;br /&gt;&lt;br /&gt;#------&lt;br /&gt;# Modules belonging mime-core&lt;br /&gt;#&lt;br /&gt;#$(COMPAT)/compat-5.1.o \&lt;br /&gt;&lt;br /&gt;MIME_OBJS:=\&lt;br /&gt; mime.o &lt;br /&gt;&lt;br /&gt;all: $(SOCKET_SO) $(MIME_SO) &lt;br /&gt;&lt;br /&gt;$(SOCKET_SO): $(SOCKET_OBJS)&lt;br /&gt; $(LD) -o $@ $(SOCKET_OBJS) $(LUADLL) $(LDFLAGS)&lt;br /&gt;&lt;br /&gt;$(MIME_SO): $(MIME_OBJS)&lt;br /&gt; $(LD) -o $@ $(MIME_OBJS) $(LUADLL) $(LDFLAGS)&lt;br /&gt;&lt;br /&gt;#------&lt;br /&gt;# List of dependencies&lt;br /&gt;#&lt;br /&gt;auxiliar.o: auxiliar.c auxiliar.h&lt;br /&gt;buffer.o: buffer.c buffer.h io.h timeout.h&lt;br /&gt;except.o: except.c except.h&lt;br /&gt;inet.o: inet.c inet.h socket.h io.h timeout.h wsocket.h&lt;br /&gt;io.o: io.c io.h timeout.h&lt;br /&gt;luasocket.o: luasocket.c luasocket.h auxiliar.h except.h timeout.h \&lt;br /&gt;  buffer.h io.h inet.h socket.h wsocket.h tcp.h udp.h select.h&lt;br /&gt;mime.o: mime.c mime.h&lt;br /&gt;options.o: options.c auxiliar.h options.h socket.h io.h timeout.h \&lt;br /&gt;  wsocket.h inet.h&lt;br /&gt;select.o: select.c socket.h io.h timeout.h wsocket.h select.h&lt;br /&gt;tcp.o: tcp.c auxiliar.h socket.h io.h timeout.h wsocket.h inet.h \&lt;br /&gt;  options.h tcp.h buffer.h&lt;br /&gt;timeout.o: timeout.c auxiliar.h timeout.h&lt;br /&gt;udp.o: udp.c auxiliar.h socket.h io.h timeout.h wsocket.h inet.h \&lt;br /&gt;  options.h udp.h&lt;br /&gt;wsocket.o: wsocket.c socket.h io.h timeout.h wsocket.h&lt;br /&gt;&lt;br /&gt;clean:  rm -f $(SOCKET_SO) $(SOCKET_OBJS) &lt;br /&gt; rm -f $(MIME_SO) $(UNIX_SO) $(MIME_OBJS) $(UNIX_OBJS)&lt;br /&gt;#------&lt;br /&gt;# End of makefile configuration&lt;br /&gt;#&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;I'm hopeful that LuaDist (if it's not defunct - the webpage is not encouraging) and LuaRocks will improve and become more useful on Windows systems soon. Hopefully the same process will be easier when I try it at home on my old Macbook... but argh, all of this just to get the time in milliseconds!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4486828863232422016?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4486828863232422016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4486828863232422016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4486828863232422016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4486828863232422016'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/01/building-luasocket-for-luajit-on.html' title='Building LuaSocket for LuaJIT on Windows with MinGW. Oh my!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6648853336489353853</id><published>2011-01-10T15:09:00.005Z</published><updated>2011-01-10T15:19:28.815Z</updated><title type='text'>Minigotcha: escaping path strings for cmd.exe</title><content type='html'>There's a very handy plugin for (g)Vim called netrw, which provides the capability to edit files over ssh/scp/etc. To set it up with Putty on Windows, the suggested lines to add to $MYVIMRC were:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;let g:netrw_cygwin = 0&lt;br /&gt;let g:netrw_scp_cmd = "\"C:\\Program Files\\PuTTY\\pscp.exe\" -pw mypasswd "&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure why this worked for them and not me, but perhaps I'm using an older (or newer) version of netrw, or the cmd.exe behaves differently in Vista. In any case, it didn't work and gave the infuriating output of:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;'C:\Program' is not recognized as an internal or external command,&lt;br /&gt;operable program or batch file.&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;This is annoying since the path for pscp is &lt;i&gt;obviously&lt;/i&gt; escaped. However, it turns out that cmd.exe follows a slightly strange, arbitrary protocol for escaping space pathstrings - it uses another " character (ack, ugly and confusing... why? The argument is already in quotes...):&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;C:\Windows\system32\cmd.exe /c "C:\Program" Files\PuTTY\pscp.exe"&lt;br /&gt;&lt;br /&gt;PuTTY Secure Copy client&lt;br /&gt;Release 0.60&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Okay then! So this works:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;let g:netrw_scp_cmd ="\"C:\\Program\" Files\\PuTTY\\pscp.exe\""&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6648853336489353853?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6648853336489353853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6648853336489353853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6648853336489353853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6648853336489353853'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2011/01/minigotcha-escaping-path-strings-for.html' title='Minigotcha: escaping path strings for cmd.exe'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3350773587129974430</id><published>2010-12-08T14:52:00.003Z</published><updated>2010-12-08T15:02:08.847Z</updated><title type='text'>Cancelling pending messages in Skype</title><content type='html'>How often are you chatting with someone in text on Skype when they log off, leaving messages in a send queue "waiting to be delivered"? How often does this happen, and the other party doesn't log on at the same time as you for days or weeks?&lt;br /&gt;&lt;br /&gt;Well, it happens to me now and again. Sometimes you'll check the chat window with someone and see that it's waiting to send "Hey, I'll be a bit late this evening, maybe 9pm?", a month after the event? In many cases, you'd rather cancel the message rather than possibly confuse them when they receive it weeks later out of the blue.&lt;br /&gt;&lt;br /&gt;Unfortunately, for some inexplicably stupid reason (or, more likely, no reason), Skype does not provide any method to cancel messages that are waiting to be sent, even though they're merely held offline on your local machine until Skype sees the other party online again. There is no technical reason whatsoever why these messages can't be deleted.&lt;br /&gt;&lt;br /&gt;Since Skype doesn't do the job, you'll have to do it yourself. And luckily, it's not too difficult - it just requires &lt;a href="http://forum.skype.com/index.php?showtopic=51540&amp;view=findpost&amp;p=2256091"&gt;one SQL statement&lt;/a&gt; to be executed on your local Skype database:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;download a sqllite editor (http://sourceforge.net/projects/sqlitebrowser/)&lt;br /&gt;exit skype&lt;br /&gt;browse to: %AppData%\Skype&lt;br /&gt;browse into your username directory&lt;br /&gt;backup main.db &lt;--- IMPORTANT!!!&lt;br /&gt;run the sqllite editor&lt;br /&gt;open main.db in sqllite editor&lt;br /&gt;in the Execute SQL tab type the following commands:&lt;br /&gt;&lt;br /&gt;--&gt; (optional) this command will show you all of your unsent messages:&lt;br /&gt;select author,identities,dialog_partner,body_xml from messages where sending_status = 1&lt;br /&gt;&lt;br /&gt;--&gt; this command will delete all unsent messages to a specific username:&lt;br /&gt;delete from messages where dialog_partner = "username" and sending_status = 1&lt;br /&gt;&lt;br /&gt;--&gt; this command will delete all unsent messages:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;delete from messages where sending_status = 1&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3350773587129974430?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3350773587129974430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3350773587129974430' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3350773587129974430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3350773587129974430'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/12/cancelling-pending-messages-in-skype.html' title='Cancelling pending messages in Skype'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5497939899432338317</id><published>2010-11-11T16:52:00.002Z</published><updated>2010-11-11T17:03:09.856Z</updated><title type='text'>Miktex + LyX. Pixellated font?</title><content type='html'>My Miktex (2.7) install came without the "Computer Modern" vector font, and PDFs generated by LyX came with an awful bitmap version. There were two reasonably easy fixes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;i&gt;Document-&gt;Settings...-&gt;Fonts&lt;/i&gt; and choose the &lt;span style="font-style:italic;"&gt;Latin Modern&lt;/span&gt; variant for the three font families.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open the Miktex package manager, find the &lt;span style="font-style:italic;"&gt;cm-super&lt;/span&gt; package and install it.&lt;/ol&gt;&lt;br /&gt;Both worked for me, but I stuck with the second option rather than make global changes to LyX default document settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5497939899432338317?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5497939899432338317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5497939899432338317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5497939899432338317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5497939899432338317'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/11/miktex-lyx-pixellated-font.html' title='Miktex + LyX. Pixellated font?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7422027266045032273</id><published>2010-10-10T01:12:00.003+01:00</published><updated>2010-10-10T01:44:08.610+01:00</updated><title type='text'>Alipay? Alibollox!</title><content type='html'>Taobao/Alipay are the Chinese equivalent of eBay and Paypal. To buy things, you have to set up an account with both services and register some kind of payment method - mostly Chinese banks, but Visa and Mastercard are apparently supported (although they didn't work for me).&lt;br /&gt;&lt;br /&gt;There are a number of hideous, needless errors and usability mistakes on the Alipay site in particular:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When entering your name, you must type it all in capitals. Why? You can automatically convert the string to uppercase if necessary in Javascript. No need to burden the user with this.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You can't enter a phone number with more than 11 digits, it can't have a '+' symbol at the start, and it's validated as a Chinese mobile phone number (must have 13 or 18 at the start). The hell?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The actual payment forms assume that the customer is using Internet Explorer and they're completely broken in Firefox. I'm using a Mac and even on my Vista box at work I use Firefox and Opera.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After finally submitting the form (by using Firebug's console to fix some of the broken Javascript/DOM code: "form1 = document.forms[0]"), we get a page telling us there was a "payment failure" with error code -1, with the helpful message "没有定义的错误代码" meaning "the error code is undefined". Thanks for that.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;What's most annoying are the problems that are so easy to fix: allow any phone number to be entered. Don't ask your users to type things in all caps. Don't assume your users are using Internet Explorer (or Windows) - that kind of nonsense should have been left in the 1990s!&lt;br /&gt;&lt;br /&gt;Chinese websites and software often suffer from these problems. Everything appears to be written for Windows, even the web sites. Software doesn't declare what language it's written in and assumes the user has a Chinese version of Windows, forcing them to call the program through AppLocale (if they know how). If there's version of the software built for OS X or Linux, it will be binary only and either doesn't work at all or crashes constantly (QQ for Linux). Of course, you can't use an open-source program that tries to use that protocol because the servers detect and ban unofficial clients. Weak!&lt;br /&gt;&lt;br /&gt;Another thing: about 99% of Chinese websites appear to be spammy search portals with hundreds of links and no useful content. Is there a way to search for useful content on Chinese sites and filter out all the useless portals?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7422027266045032273?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7422027266045032273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7422027266045032273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7422027266045032273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7422027266045032273'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/10/alipay-alibollox.html' title='Alipay? Alibollox!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8135616190727113289</id><published>2010-09-23T13:59:00.002+01:00</published><updated>2010-09-23T14:03:16.172+01:00</updated><title type='text'>Eclipse: escape strings when pasting - off by default?</title><content type='html'>After a couple of years of occasionally having to paste a large multi-line string into Java source code and escape the hell out of it, I eventually searched for some kind of online tool to automatically do the job and quickly discovered that Eclipse &lt;a href="http://www.vasanth.in/2009/03/10/eclipse-tip-escape-text-when-pasting/"&gt;automatically does this&lt;/a&gt; for you if a certain menu option is enabled &lt;span style="font-style:italic;"&gt;(prefs-&gt;Java-&gt;Editor-&gt;Typing-&gt;"Escape text when pasting into a string literal")&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So why on earth is this feature &lt;span style="font-style:italic;"&gt;not enabled in Eclipse by default?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8135616190727113289?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8135616190727113289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8135616190727113289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8135616190727113289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8135616190727113289'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/09/eclipse-escape-strings-when-pasting-off.html' title='Eclipse: escape strings when pasting - off by default?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3031988350208911681</id><published>2010-09-21T05:01:00.004+01:00</published><updated>2010-09-21T05:50:17.582+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snooker'/><title type='text'>Integrity in snooker: empty pandering or meaningful measures?</title><content type='html'>When the John Higgins scandal erupted some months ago, I tried to keep an open mind and honestly hoped it was all a misunderstanding until I watched the video and heard some of the details of the case. It was very disturbing evidence, but even then I hoped for everything to turn out alright in the end, even if there was a good chance that he truly intended to carry out the promised match-fixing.&lt;br /&gt;&lt;br /&gt;Flash forward a few months and Higgins' manager is banned from the sport for life (even though he had already resigned from his position on the WPBSA board) and Higgins gets a backdated six month ban and a £75,000 fine.&lt;br /&gt;Then Barry Hearn, the recently-appointed chairman of World Snooker, appears on BBC2 today talking about the new anti-corruption unit being set up as a preventative - rather than curative - measure against betting fraud and match-fixing.&lt;br /&gt;&lt;br /&gt;He was asked what role Higgins will have in this new light, and responded by basically saying that he would serve as an example to other players of how dangerous it is to give in to that temptation and &lt;i&gt;appear&lt;/i&gt; to agree to dodgy deals without reporting them, especially now that there'll be some official, private channels for doing so. He also stated that Higgins made a silly mistake, by trusting people he shouldn't have, and was heavily punished and that £75,000 isn't pocket change.&lt;br /&gt;&lt;br /&gt;That was a mistake, I think. For someone like Higgins, a backdated six-month ban and a £75,000 fine is chump change, especially when Hearn followed up those comments to assure of the seriousness of the new regime by saying "we're talking about lifetime bans here".&lt;br /&gt;If we're talking about lifetime bans, Higgins got away &lt;i&gt;very lightly&lt;/i&gt; and you should really acknowledge that. Why not just say something like "the case with Higgins could easily have ended up differently and he might have received a very lengthy or indefinite ban. But now we're drawing a line and making it very clear what you can and can't do, and specifying the penalties for breaking those rules"?&lt;br /&gt;&lt;br /&gt;Another player, Quinten Hann, was handed an 8 year ban a while back, for agreeing to lose a match in the China Open. However, he resigned before the ban was decided, and never had a squeaky clean image to begin with. Also, his highest ranking was #14, where John Higgins has been #1 for a while and is one of the most consistent players in the game.&lt;br /&gt;What if Higgins was a much lower-ranked player of less fame? Would he have been banned for longer (or even forever) and fined less?&lt;br /&gt;&lt;br /&gt;What worries me is that much of the assurances about "hard measures" might be concerned more with convincing the public with tough-talking "draconian" plans than with actually stamping out corruption - that Higgins' real mistake was to get caught. But I'm still glad to see Higgins back in the game - it'd be such a shame for a master craftsman to be officially banned from his craft forever. I just hope that Hearn and the rest truly care about sport and its integrity rather than simply protecting the bottom line by telling the optimal story to the punters.&lt;br /&gt;&lt;br /&gt;&lt;hr width=10% /&gt;&lt;br /&gt;&lt;br /&gt;Oh and on a side note, I'm glad to read Hearn's comments on Ronnie O'Sullivan's odd attitude towards completing a 147 today: &lt;i&gt;“I really don’t like to hear multi-millionaires talking about a few extra pounds for a 147 when that’s the game that’s given them their livelihood”&lt;/i&gt;.&lt;br /&gt;Spot on, and a big "WTF Ronnie". Walking away from the table on a 140 break with the black on, or missing on purpose (which he &lt;i&gt;very nearly did&lt;/i&gt; - the black nearly bounced off the table) would actually hurt the audience - remember Ken Doherty's missed black on a maximum attempt and the groans from the crowd, and try to imagine what it would be like if O'Sullivan missed one &lt;span style="font-style:italic;"&gt;on purpose&lt;/span&gt;. I'd hate to be the guy giving post-match interviews with him - it seems like 15% of the time he enjoyed playing, 70% of the time he felt nothing, 80% of the time he says something really sad that makes you wonder if he hates the whole thing, himself, fans, other players etc.&lt;br /&gt;&lt;br /&gt;But on the other hand, a 147 is still an amazing feat, even if it's slightly more common. The commentators seemed to only consider the case where there's no maximum break prize versus a £147,000 prize. Why not have a token but still &lt;i&gt;half&lt;/i&gt; decent prize for a maximum - let's say £14,700 - which &lt;b&gt;a)&lt;/b&gt; would not be sniffed at and &lt;b&gt;b)&lt;/b&gt; would be separate from the high break prize, so that getting a 147 gets you a tangible reward. The amount isn't really important, as long as a maximum is distinguished from a high break of 145 or whatever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3031988350208911681?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3031988350208911681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3031988350208911681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3031988350208911681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3031988350208911681'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/09/integrity-in-snooker-empty-pandering-or.html' title='Integrity in snooker: empty pandering or meaningful measures?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5961196250172688692</id><published>2010-09-12T00:07:00.003+01:00</published><updated>2011-01-06T19:44:14.414Z</updated><title type='text'>Screen magnifier and Orca screenreader stuck on at login screen (Ubuntu)</title><content type='html'>Although Linux has improved immensely in many respects over the years, there's still a chance of running into bizarre problems, either during install or in normal use.&lt;br /&gt;&lt;br /&gt;A while ago I wiped the old Mandriva 2008 partition on my Acer Aspire 1705SMi, a 7 year old juggernaut of a laptop which was sitting in a drawer for a year or so.&lt;br /&gt;The first problem was that the Ubuntu Live CD could not even boot properly, since as soon as it loaded the splash screen the video adapter (a NVidia GeForce FX Go5600) went slightly insane and produced a screen which looked like a garbled moire interference pattern. Rough shapes (maybe that's a dialog box...?) were visible but it was basically unusable.&lt;br /&gt;&lt;br /&gt;Getting past that required editing the boot command line for the kernel at the GRUB prompt (hitting 'e', IIRC) and adding the "nomodeset" parameter. I also removed the "splash" parameter but this probably wasn't necessary. If something like this can happen, why not offer a nomodeset boot option on the boot menu, rather than forcing the user to edit the boot command line?&lt;br /&gt;This got as far as a failed start of X and dropped back to the shell, where I was able to edit /etc/xorg.conf and start the installer.&lt;br /&gt;&lt;br /&gt;So that was okay. The install worked nicely, although both suspend to RAM (sleep) and suspend to disk (hibernate) completely fail to resume, requiring a hard reboot. No change from ~2004 when I had to download a fixed version of the buggy Acer DSDT and install it at boot, as well as tinker with the kernel source (maybe, not sure if it was necessary). Surely those problems could have been fixed in the mainline kernel though - if it was fixable by a layman like myself before, why does it still not work out of the box?&lt;br /&gt;&lt;br /&gt;Then a 2 year old demon managed to somehow enable Orca (a screenreader), a screen magnifier and &lt;i&gt;dreadfully annoying&lt;/i&gt; "slow keys" by randomly clicking around (from her own user account), and things got really weird on the next reboot: the left half of the screen is normal, while the right half shows a magnified cursor and a load of garbage (maybe due to the old NVidia card being a pile of arse). Trying to type in a password to login seemed impossible at first, until I realised that I had to hold each key for about half a second before it would register. Ugh.&lt;br /&gt;&lt;br /&gt;Anyway, after logging in I made sure that all of the accessibility tools were switched off in every preference menu on the GNOME desktop. Unfortunately this didn't really switch them off, even though the gconftool-2 program declared that they were successfully disabled.&lt;br /&gt;&lt;br /&gt;After much googling (for once, not very helpful except to confirm that other people in similar situations have solved the problem by &lt;i&gt;reformatting and re-installing Ubuntu, WHAT!&lt;/i&gt;) and grepping, I found another set of gconf XML configuration files in /var/lib/gdm/.gconf, even though you need to be root to access them.&lt;br /&gt;&lt;br /&gt;Anyway, these global settings could be unset as follows:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ sudo su&lt;br /&gt;# cd /var/lib/gdm/.gconf&lt;br /&gt;# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/accessibility/keyboard/stickykeys_enable false&lt;br /&gt;# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/accessibility/keyboard/bouncekeys_enable false&lt;br /&gt;# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/accessibility/keyboard/slowkeys_enable false&lt;br /&gt;# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/applications/at/screen_magnifier_enabled false&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Some of these problems may be due to the laptop having a poorly-designed BIOS/DSDT, so this post may sound like sour grapes. But a natural response from anyone who uses such a machine would be "but it works in Windows?" - and if it does, why shouldn't it work in Linux?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5961196250172688692?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5961196250172688692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5961196250172688692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5961196250172688692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5961196250172688692'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/09/screen-magnifier-and-orca-screenreader.html' title='Screen magnifier and Orca screenreader stuck on at login screen (Ubuntu)'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8267583750749031160</id><published>2010-08-31T23:18:00.003+01:00</published><updated>2010-08-31T23:23:25.135+01:00</updated><title type='text'>Parisian driving</title><content type='html'>&lt;i&gt;(saving a comment I wrote on a boards.ie thread)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I thought we had some crappy driving here (in Ireland), but visiting Paris for a week really put things in perspective.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Firstly&lt;/i&gt;, if you're a pedestrian walking at a crossing, even if it's a signalled one with a green light in your favour, drivers will happily continue to fly around corners and barrel through the crossing. Get in their way and either get knocked down or beeped into deafness.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Secondly&lt;/i&gt;, remember that two-second clearance rule here? The TV safety ads suggest that when the car in front passes a point, you should be able to say "only a fool breaks the two second rule" before you pass the same point. In Paris it's &lt;i&gt;"only a foo- &lt;b&gt;ARGHHH!&lt;/b&gt;"&lt;/i&gt;, with cars overtaking you (from any side) and diving into your lane after having barely cleared your car. This happens all the time. The cars behind don't even brake when it happens, so the tacit understanding seems to be &lt;i&gt;&lt;b&gt;a)&lt;/b&gt; one or two metres of clearance is an acceptable distance at 100kph and &lt;b&gt;b)&lt;/b&gt; overtaking drivers will never have to suddenly brake while directly in front of my car&lt;/i&gt;. Weird.&lt;br /&gt;&lt;br /&gt;The two and a half hour trip from Amboise back to Paris really made this clear: drivers will gladly overtake a bus and pull in front with about two metres' clearance. Not only that, but the &lt;i&gt;bus driver&lt;/i&gt; starts to pull into the lane they just left, while they're &lt;i&gt;still moving into our lane&lt;/i&gt; with two metres' clearance.&lt;br /&gt;All of this is completely normal there.&lt;br /&gt;&lt;br /&gt;And as probably everyone knows, parking there means gently (or not) backing into the car behind you, then forward into the next one, then back and forth repeatedly bashing the surrounding cars until your car is wedged into a space with two inches to spare on one side, with bumpers touching on one side. Almost every car's registration plate and bumper is dented, scratched or missing.&lt;br /&gt;&lt;br /&gt;So I arrived back in Dublin airport thinking "I guess the standard over here isn't so bad really", just as a shitestain of a taxi driver in a silver Merc floored it as soon as the green man started to flash, as I was already running across the pedestrian crossing pushing a trolley full of bags which missed his car by about two inches as it screamed past me.&lt;br /&gt;If that thing didn't have its own brakes, you were getting a heavy iron trolley in the rear left wing. I was sorely tempted to just let it happen too, but settled for a rapidly-shouted "my light's still green, you stupid fucking bastard!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8267583750749031160?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8267583750749031160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8267583750749031160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8267583750749031160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8267583750749031160'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/08/parisian-driving.html' title='Parisian driving'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1075467696849342492</id><published>2010-08-22T15:35:00.002+01:00</published><updated>2010-08-22T15:52:30.969+01:00</updated><title type='text'>Does the free software movement represent "true freedom"?</title><content type='html'>Someone commented on a Youtube video that:&lt;br /&gt;&lt;blockquote&gt;Actually, free software represents freedom. The Open Source Movement just supports﻿ the benefits of source code being available. The Free Software Foundation supports true freedom."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;To which my response was:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;It doesn't support the freedom to sell software though, does it?&lt;br /&gt;&lt;br /&gt;Almost all of the software I use is open-source, and I've made (miniscule) contributions to open-source software in the past, but I don't think it's fair to demonise those who wish to make money from writing software by selling it.&lt;br /&gt;&lt;br /&gt;Stallman seems to characterise closed-source as unethical, but is it really wrong for someone to release a program without the source code so that they can profit a bit from their work?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'd be interested to hear any insight from others on this issue. Free software provides some freedom, but obviously removes the freedom to sell that software, even by the author. As a big fan and user of free software, but also a programmer and tradesman, I recognise that other people may want to do programming as a living by selling their work (rather than doing unenjoyable coding tasks for a large financial company they dislike, say).&lt;br /&gt;I don't see anything wrong with that, unless there are superior models that allow them to still get paid reasonably well for their work as well as allowing them to release as open source. For example, many open source project pages have a donation link which allows happy users to send any amount of money to the developer if they wish, but I'd expect that this isn't a hugely profitable source of income compared to selling the software (which would kind of require it being closed source or at least with a horrible restricted semi-free license).&lt;br /&gt;&lt;br /&gt;Thoughts/enlightenments?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1075467696849342492?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1075467696849342492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1075467696849342492' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1075467696849342492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1075467696849342492'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/08/does-free-software-movement-represent.html' title='Does the free software movement represent &quot;true freedom&quot;?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5996513335789303332</id><published>2010-08-20T23:00:00.004+01:00</published><updated>2010-08-21T03:07:03.051+01:00</updated><title type='text'>Why does Applescript suck so badly?</title><content type='html'>It's not like Apple is lacking developers or time or money or experience. Not only is the syntax for Applescript simultaneously verbose and vague, the API documentation sucks and the implementation appears to be buggy.&lt;br /&gt;Not the language implementation per se, but the underlying hooks that allow it to do its job. For some reason, certain programs fail to respond to Applescript correctly, so scripts like the following don't work properly (and worse, the problem is sporadic):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;tell application "Mnemosyne"&lt;br /&gt;  activate&lt;br /&gt;end tell&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Fine, maybe the Python wrapper for Mnemosyne is a bit dodge. But why should it matter?&lt;br /&gt;&lt;br /&gt;In Windows there are free third party scripting/automation languages like AutoHotKey and AutoItScript. I've never had a problem bringing an application window into focus with them - why would you? Perhaps Applescript's hooks are at a higher level, while those of AutoIt etc operate on a low level Windows message scheme: instead of applications responding (or ignoring, or bolloxing up) Applescript requests, they simply receive normal window/GUI events, just like when a user is manually clicking and typing.&lt;br /&gt;&lt;br /&gt;These Windows automation/scripting languages "just work" - you can assume that a window is just a window and if you can activate one by clicking or alt-tabbing to it, you can activate it via a script - and the syntax is simple and intuitive for most programmers (although AHK's is a bit ugly IIRC).&lt;br /&gt;&lt;br /&gt;If they can do that, surely Apple can do &lt;i&gt;much&lt;/i&gt; better than Applescript.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Addendum:&lt;/i&gt; It seems that you can't even move the mouse from Applescript, without installing extra 3rd party software. Boo-urns!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Addendum 2:&lt;/i&gt; Well, it's not giving me error -9874 anymore when trying to activate the window. Also it's become apparent that when activating the Mnemosyne window with a modal dialog open (the "Add cards" window), focus will be on the &lt;i&gt;application's main window&lt;/i&gt;, &lt;b&gt;unless the mouse cursor is hovering over the main window&lt;/b&gt;. This happens when you manually cmd-tab to the application. Very odd - perhaps the GUI event loop isn't processed properly until the mouse cursor is moved over the main window? Ah well. The rest of my diatribe stands (or crouches) though - I still dislike Applescript in more ways than one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5996513335789303332?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5996513335789303332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5996513335789303332' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5996513335789303332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5996513335789303332'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/08/why-does-applescript-suck-so-badly.html' title='Why does Applescript suck so badly?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3830169084590163763</id><published>2010-08-17T15:00:00.002+01:00</published><updated>2010-08-17T15:12:20.242+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='driving'/><title type='text'>Why is speeding so commonplace?</title><content type='html'>The root problem seems more that people are expected to drive &lt;i&gt;at least&lt;/i&gt; at the speed limit, if not over. When a driver travels at 3-5kph under the speed limit, following cars tend to overtake as soon as possible or get angry and start behaving dangerously. There are very large number of people out there who will consider you to be a lunatic for doing 48km/h with a 50km/h limit. In Dublin at least, a 50km/h limit is tacitly interpreted as a 60km/h limit, a 60 as an 80, etc.&lt;br /&gt;&lt;br /&gt;And it's not purely a social problem; it starts in the Rules of the Road, which says things like:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;blockquote&gt;You must progress at a speed and in a way that avoids interference with other motorway traffic.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;a href="http://www.rulesoftheroad.ie/rules-for-driving/speed-limits/speed-limits_2-second-rule.html"&gt;Avoid&lt;/a&gt; driving too slowly&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In normal road and traffic conditions, keep up with the pace of the traffic flow while obeying the speed limit. While you &lt;font color=crimson&gt;must&lt;/font&gt; keep a safe distance away from the vehicle in front, you &lt;font color=darkblue&gt;should&lt;/font&gt; not drive so slowly that your vehicle unnecessarily blocks other road users. If you drive too slowly, you risk frustrating other drivers, which could lead to dangerous overtaking.&lt;/blockquote&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;While it does remind you to obey the speed limit, this comes into conflict with the greater message here: "keep up with the pace". Since it seems like the majority of other road users are almost constantly speeding, this reinforces the notion that you should never travel below the speed limit, and if anything, increase speed to match traffic in front.&lt;br /&gt;&lt;br /&gt;It's frustrating - if you're driving within a city, given the time spent in traffic or stopped at lights and the relatively short distance, it doesn't really matter if you travel at 45 or 55. But it's considered a greater crime to err on the low side. Why?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3830169084590163763?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3830169084590163763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3830169084590163763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3830169084590163763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3830169084590163763'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/08/why-is-speeding-so-commonplace.html' title='Why is speeding so commonplace?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2244905528884456063</id><published>2010-08-05T19:54:00.003+01:00</published><updated>2010-08-05T19:59:26.239+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java verbosity again</title><content type='html'>(Repost of a comment I made somewhere on the topic of the verbosity of Java, and particularly its APIs)&lt;br /&gt;&lt;br /&gt;The Reflection API is a fairly shocking example of the needless verbosity of Java. And I would consider the official API to be part of Java.&lt;br /&gt;&lt;br /&gt;Here's a simplistic example in Java and Ruby, replacing characters in a string ("putty" =&gt; "puppy") first directly and then via reflective invocation:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;b&gt;// Java&lt;/b&gt;&lt;br /&gt;String s = "putty";&lt;br /&gt;System.out.println(s.replace('t', 'p'));&lt;br /&gt;try {&lt;br /&gt;  Class c = s.getClass();&lt;br /&gt;  Method m = c.getMethod("replace", char.class, char.class);&lt;br /&gt;  System.out.println(m.invoke(s, 't', 'p'));&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Ruby&lt;/b&gt;&lt;br /&gt;s = "putty"&lt;br /&gt;puts s.gsub("t", "p")&lt;br /&gt;puts s.send("gsub", "t", "p")&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This kind of verbosity is prevalent in Java's standard libraries, particularly when (anonymous) inner classes are involved. At the moment I'm struggling with "doPrivileged" blocks in some Java code which deals with sandboxing, and it is syntactically very unpleasant.&lt;br /&gt;&lt;br /&gt;Ok, we could chain the Java calls together and knock some lines off, but it's still not nice:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;try {&lt;br /&gt;  System.out.println(s.getClass().getMethod("replace", char.class, char.class).invoke(s, 't', 'p'));&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2244905528884456063?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2244905528884456063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2244905528884456063' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2244905528884456063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2244905528884456063'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/08/java-verbosity-again.html' title='Java verbosity again'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3434964504892226291</id><published>2010-08-03T13:20:00.007+01:00</published><updated>2010-08-03T13:42:27.141+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jailbreak'/><category scheme='http://www.blogger.com/atom/ns#' term='ipod'/><category scheme='http://www.blogger.com/atom/ns#' term='anki'/><title type='text'>Ankimini audio on the iPod: can I hear it now?</title><content type='html'>Yes! But a small amount of manual muckery is required.&lt;br /&gt;&lt;br /&gt;Here are the rough steps that I followed to get an &lt;a href="http://ichi2.net/anki/"&gt;Anki&lt;/a&gt; deck working with audio on my iPod Touch (2nd gen, on IOS4):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.jailbreakme.com"&gt;Jailbreak&lt;/a&gt; the iPod.&lt;/b&gt; This was actually so easy that it will be hard to suppress an ear-to-ear grin. Just going to that link and opening a cleverly broken PDF file exploits a bug (presumably a stack smash) to execute arbitrary code and install Cydia. You don't even need to reboot the device! Very different from the iPhone OS 3 jailbreak that I used last time, but this will probably become impossible soon (until someone finds the next suitable vulnerability).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Install Ankimini&lt;/b&gt; from the Cydia or Rock package managers. Easy peasy.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Create or download the deck in Anki (desktop).&lt;/b&gt; Get your deck working on a desktop machine as normal, then sync it with an online account.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Sync your deck in Ankimini.&lt;/b&gt; This should be straightforward.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Copy across the media files.&lt;/b&gt; From my Mac, the command to do so was &lt;font face="Courier"&gt;scp -r ~/Documents/Anki/&lt;i&gt;deckname&lt;/i&gt;.media/ mobile@&lt;i&gt;ipod_ip_address&lt;/i&gt;:~/.anki&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I then stopped and started Anki via an SBSettings button, but I don't think this step is necessary. Now I can learn and listen to spoken Chinese in "dead time" (i.e. when I'm on a bus or taking a shite). Brilliant!&lt;br /&gt;&lt;br /&gt;On a related note, I would like to try the new AnkiMobile, but it's just a bit too expensive for me at the moment. I think the developer may be pricing himself out of the market - you don't see (proportionally) many iPhone applications that cost €20. At an uneducated, not-thought-through guess, I'd wager that more than twice as many people would buy the program if the price was halved. Hopefully it works out anyway, after the tremendous work he's put into Anki.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3434964504892226291?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3434964504892226291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3434964504892226291' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3434964504892226291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3434964504892226291'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/08/ankimini-audio-on-ipod-can-i-hear-it.html' title='Ankimini audio on the iPod: can I hear it now?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1365186234624920461</id><published>2010-07-29T14:23:00.004+01:00</published><updated>2010-07-29T14:39:43.744+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software patents'/><title type='text'>Abuse of software patents (what else are they good for?)</title><content type='html'>Check out the Wikipedia entry for &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Vistaprint#Patents"&gt;Vistaprint&lt;/a&gt; (emphasis added):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The company recognizes that developing and protecting its intellectual property creates additional value in the company, &lt;i&gt;and acts as a business moat to deter competitors&lt;/i&gt;. So far, Vistaprint has secured 15 issued patents and has applied for almost 40 more.&lt;br /&gt;&lt;br /&gt;The company has &lt;i&gt;described its objective as a "minefield of patents"&lt;/i&gt; and has been active in pursuing companies that it considers to be infringing on those patents."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If you think that's an unfairly exaggerated statement, check out the &lt;a href="http://web.archive.org/web/20080507070132/http://www.printaction.com/default.php/magazine/july07_interview"&gt;interview&lt;sup&gt;*&lt;/sup&gt;&lt;/a&gt; with Wendy Cebula, then Executive Vice President and Chief Operating Officer (now President of the North American unit) of VistaPrint (emphasis added in italics):&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;VistaPrint has always placed a strong focus on getting patents. Which one or two would you classify to be the most important?&lt;/b&gt;&lt;br /&gt;We really look at patents as a portfolio approach. As different competitors may choose to enter the market in different ways, &lt;i&gt;our strategy is to create a minefield of patents that would be difficult for anyone to navigate&lt;/i&gt;. That being said, our patents around our studio design technology, which is one of the ones we are defending right now in the public, and in our back-end aggregation and our bridge are two that have been issued and that are public that we believe that are very important to us. There are others pending that, clearly, we are excited about as well.&lt;/blockquote&gt;&lt;br /&gt;If that's not clear evidence that patent systems, and especially software patent systems, are purposely abused to &lt;u&gt;stifle competition&lt;/u&gt;, then what is?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="font-size: 9pt"&gt;&lt;sup&gt;*&lt;/sup&gt; Note that the interview was taken down - I had to find it in the Internet Archive snapshot from 2008. Interesting...&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1365186234624920461?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1365186234624920461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1365186234624920461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1365186234624920461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1365186234624920461'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/07/abuse-of-software-patents-what-else-are.html' title='Abuse of software patents (what else are they good for?)'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-337870268308395086</id><published>2010-07-20T01:44:00.005+01:00</published><updated>2010-07-20T03:06:50.914+01:00</updated><title type='text'>Irish casual racism: an exchange of vitriol on Youtube</title><content type='html'>After watching a very &lt;a href="http://www.youtube.com/watch?v=T8KIwIcAQok"&gt;disturbing Youtube video&lt;/a&gt; trying to make the point that our good Irish culture (and presumably, skin colour) are being diluted, I felt the need to respond to some of the worst comments, particularly those that seemed to assume that all immigrants are gaming the system and/or getting "free housing", benefits and other such nonsense.&lt;br /&gt;&lt;br /&gt;There were many comments like this:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;nomorefreebees 3 days ago&lt;/i&gt;&lt;br /&gt;great video ,,, so we now have foriegn irishmen do we? i dont think so, &lt;br /&gt;the foriegners are here for only one reason and thats to make ireland their land,,,,,while our stupit government gives them all the benifits available and deprives its own people ,, hospitals closing down to keep immigrants ,,, benifits﻿ cut to keep immigrants...... and all the while we say nothing ....... so are we going to act now or do we want to let immigrants take us over like they almost have now in sweeden ...&lt;/blockquote&gt;&lt;br /&gt;I was saddened to see that a greater number of commenters seemed to agree with these misinformed racists. But then entertained by a quite ludicrous private message sent to me by one of them:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;From: nomorefreebees Subject: fool Date: Jul 19, 2010&lt;/b&gt;&lt;br /&gt;You have some cheek to dictate to Irish people haven't you? You didn't even know where this country was a few years ago. &lt;br /&gt;You hand out allot of meaningless advice about a dole office. I have a business and I don't know what the inside a dole office looks like but obviously you do. Furthermore many so called immigrants are illegal and work as well as collect benefits. The evidence is on my channel if you care look at my videos. But you won't will you? Because you don't want to know do you? Or should I say you already do. &lt;br /&gt;If all immigrants are working as you claim then why is it costing the Irish people 90 million a year to keep immigrants in Mosney Co. Meath? Plus another 190 million to keep the rest of them in free housing, benefits all over the rest of our country, &lt;br /&gt;I have my facts right so get your facts right before you comment on my channel. &lt;br /&gt;Letting on your little Mr. Innocent and trying to let people think you're the oppressed while all the while you're bleeding our country dry,&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And my response:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"You didn't even know where this country was a few years ago"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;It hasn't moved much in the last few million years. Also, could you start out by not spouting such clearly useless drivel as this? A few years ago, I was right here in Dublin, so I know exactly where we were.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"If all immigrants are working as you claim then why is it costing the Irish people 90 million a year to keep immigrants in Mosney Co. Meath? Plus another 190 million to keep the rest of them in free housing, benefits all over the rest of our country,"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Excuse me? Where did I claim that "all immigrants are working"? I certainly said no such thing and by trying to build such a flimsy strawman argument you have instantly reduced your credibility to ZERO.&lt;br /&gt;&lt;br /&gt;Furthermore, the "immigrants" in Meath and "the rest of them" with free housing are a tiny minority of the immigrants in Ireland.&lt;br /&gt;&lt;br /&gt;Your argument is like saying that humans shouldn't be allowed to live here because we spend millions to operate prisons and hand out dole to scangers who never work a day in the life.&lt;br /&gt;&lt;br /&gt;The people who unfairly game the system are the VAST MINORITY.&lt;br /&gt;&lt;br /&gt;Unfortunately, racist idiots like you appear to be growing in number.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Is it just that Youtube brings out the worst assholes (like him and well... me) or is this really how a majority of Irish people feel now? Because it's pretty damn sad.&lt;br /&gt;&lt;br /&gt;&lt;hr width=30%/&gt;&lt;br /&gt;More from him: &lt;blockquote&gt;This is a small country and you claimed 90% of immigrants were working thats not true how could it be when its costing our goverment or should i say the tax payer 90 million a year to keep immigrants in mosney not counting their benifit money. And how about all the others? there costing us another 200 million a year , they have free housing, benifits, free bus passes , and the rest. &lt;br /&gt;your only kidding yourself not me, like i said i have the facts i dont speculate. wheres your facts? tell me it doesnt cost us that money will you?&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Response: &lt;blockquote&gt;&lt;i&gt;"your only kidding yourself not me, like i said i have the facts i dont speculate. wheres your facts? tell me it doesnt cost us that money will you?"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;You do not have all the facts. If you had the facts you would not say something like "that's not true, how could it be if the tax payer is paying 90 million a year to keep immigrants in Mosney"? That is you taking a fact (90 million a year "to keep immigrants in Mosney") and jumping to an unsupported conclusion (at least 10% of immigrants are spongers).&lt;br /&gt;You can't just take a fact and suggest that it supports any claim. THAT is speculation, and it's what you are doing.&lt;br /&gt;&lt;br /&gt;I note that you're trying to build another strawman argument: &lt;i&gt;"tell me it doesnt cost us that money will you?"&lt;/i&gt;. Do you not see how silly this is? I never said that it doesn't cost us money. Of course it does. My point is that it's a small number of immigrants/refugees that cost us the money. Not only that, but the vast majority of immigrants (there are more immigrants than just refugees) HAVE to work to be here, and they pay tax like every other worker. So the legitimate immigrants are also funding the spongers.&lt;br /&gt;&lt;br /&gt;Yes, there are some sponger immigrants. Yes, there are some sponger refugees. Yes, some of those refugees somehow got free housing. A very small number of them (and most of that happened at least 10 years ago).&lt;br /&gt;&lt;br /&gt;You talk as if the majority of immigrants have free housing, free bus passes etc. That is not true and you do yourself a disservice to suggest so.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-337870268308395086?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/337870268308395086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=337870268308395086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/337870268308395086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/337870268308395086'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/07/irish-casual-racism-exchange-of-vitriol.html' title='Irish casual racism: an exchange of vitriol on Youtube'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6119947890817159255</id><published>2010-07-17T23:49:00.002+01:00</published><updated>2010-07-18T00:00:45.781+01:00</updated><title type='text'>Audio sync in DVD Flick</title><content type='html'>We were trying to create DVDs with the workflow &lt;span style="font-style:italic;"&gt;Avid Xpress Pro -&gt; (export Quicktime ref) -&gt; Sorensen -&gt; (convert to MPEG-2 DVD Pal) -&gt; DVD Flick&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The output from Sorensen seemed okay when played locally, but the DVDs produced by DVD Flick had audio slightly earlier than video. After a long time searching, we stumbled upon a &lt;a href="http://forums.afterdawn.com/thread_view.cfm/740151"&gt;forum post&lt;/a&gt; where a guy (thank you, "dng"!) in a similar situation had resolved the problem in DVD Flick by going to &lt;span style="font-style:italic;"&gt;Edit title... -&gt; Audio track -&gt; Edit -&gt; &lt;span style="font-weight:bold;"&gt;Ignore audio delay&lt;/span&gt;&lt;/span&gt;. This worked perfectly for us, and showed that the audio delay in the MPEG from Sorensen was -160ms or so, which explains why the audio was slightly ahead of the video. Perhaps the media players we used (Quicktime and Windows Media Player) ignored this metadata which was why it seemed fine until burned as a DVD-video?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6119947890817159255?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6119947890817159255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6119947890817159255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6119947890817159255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6119947890817159255'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/07/audio-sync-in-dvd-flick.html' title='Audio sync in DVD Flick'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-513617377396062355</id><published>2010-07-17T01:25:00.005+01:00</published><updated>2010-07-17T01:47:35.043+01:00</updated><title type='text'>HTML5 video: WebM/VP8 vs H.264 on OS X 10.5</title><content type='html'>Trying to get away from the somewhat processor-intensive Flash for watching videos on the web, I just tried out the new codecs for HTML5 on Youtube in three browsers, getting the following rough reading for CPU usage (in the "top" utility):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Opera 10.60: ~110% (i.e. hogging more than one core)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nightly Firefox build "Minefield": ~110%&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Safari v4: ~20%&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For comparison, the "old" Flash player was taking ~50% CPU.&lt;br /&gt;&lt;br /&gt;It seems that both Opera and Firefox are using the &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/VP8"&gt;VP8&lt;/a&gt; codec for video, which is currently not hardware accelerated (at least on OS X, due to Apple not standardising some API for GPU use). Safari is using the &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/H.264"&gt;H.264&lt;/a&gt; codec which clearly performs much better on this machine, but which is patent and licence encumbered.&lt;br /&gt;&lt;br /&gt;So at this point, VP8/WebM is completely unusable for watching video on slowish machines like mine (a 3 year old Intel Macbook). Here's hoping that VP8 can take advantage of better hardware rendering soon...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;* Minor addendum: Looking at &lt;a href="http://www.abforum.be/showthread.php?t=10735"&gt;this analysis&lt;/a&gt; of VP8, perhaps the encoder/decoder implementations are just immature at the moment and need to be optimised in a few areas. However, there are also some mentions of disturbing (in terms of possible future patent issues) similarities between the VP8 and H.264 designs.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-513617377396062355?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/513617377396062355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=513617377396062355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/513617377396062355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/513617377396062355'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/07/webm-vs-h264-on-os-x-105.html' title='HTML5 video: WebM/VP8 vs H.264 on OS X 10.5'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8512228022317027691</id><published>2010-07-15T22:31:00.003+01:00</published><updated>2010-07-15T22:37:02.714+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='blinkenwords'/><category scheme='http://www.blogger.com/atom/ns#' term='reading'/><title type='text'>Blinkenwords - Windows build</title><content type='html'>Following up on a &lt;a href="http://vaguevagaries.blogspot.com/2010/03/blinkenwords.html"&gt;previous post&lt;/a&gt;, a Windows build of Blinkenwords is now available &lt;a href="http://www.computing.dcu.ie/~omacfh/"&gt;here&lt;/a&gt;. I used a very impressive program called &lt;a href="http://ocra.rubyforge.org/"&gt;OCRA&lt;/a&gt; to automatically bundle the Ruby interpreter and required libraries into a single 4 megabyte (not enormous) packed executable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8512228022317027691?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8512228022317027691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8512228022317027691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8512228022317027691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8512228022317027691'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/07/blinkenwords-windows-build.html' title='Blinkenwords - Windows build'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1204304118527828535</id><published>2010-07-13T01:39:00.005+01:00</published><updated>2010-07-13T02:03:51.361+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chinese'/><title type='text'>On a minor roll...</title><content type='html'>Been fighting off a slight backlog of flashcards in &lt;a href="http://ichi2.net/anki/"&gt;Anki&lt;/a&gt;, pretty much due to downloading two French card decks as a refresher before heading to a conference in France next month.&lt;br /&gt;&lt;br /&gt;After about 25 minutes going through some of the French cards, I had to leave them and pay some attention to the Chinese deck I've been building for a couple of years now. The cards are about 25% single characters (production), 40% multiple-character words (recognition) and 35% sentences (recognition), after switching sometime in December/January from production-only words/characters to make things more practical.&lt;br /&gt;&lt;br /&gt;For some reason, it went really well today and I was on a roll, correctly answering some 83 cards in a row. No new cards, but a few recently-added ones which weren't completely familiar. Usually I'm happy to get 80-90% right, depending on tiredness.&lt;br /&gt;&lt;br /&gt;It seems most efficient (at least if you occasionally create backlogs by not reviewing all of the cards on the day they're due) to review cards in order of their interval (i.e. if I don't finish all my cards today, at least I'll have dealt with the ones that were most in need of revising - seeing a 1 month card two weeks late is better than seeing an 8 day card four days late), so quit while I was ahead when asked to write the character for ginger (with an interval of around 2 months)&lt;span style="font-weight:bold;"&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dqID2FidOWo/TDu5M_t8XcI/AAAAAAAAAG8/bnVwHgdWvjE/s1600/mini-streak2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 216px; height: 308px;" src="http://1.bp.blogspot.com/_dqID2FidOWo/TDu5M_t8XcI/AAAAAAAAAG8/bnVwHgdWvjE/s400/mini-streak2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5493187803422154178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Minor arbitrary happy moment!&lt;/i&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="small"&gt;* I've been told that I should use less parenthesised clauses when writing. Makes sense... Actually thinking about it now, if I extracted the bits in parentheses from that sentence into footnotes, and then saw how silly the result looked, it might make refactoring the text more obvious. On the other hand, it's 2am and I'm supposed to have a meeting at 9:30am :/&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1204304118527828535?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1204304118527828535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1204304118527828535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1204304118527828535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1204304118527828535'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/07/on-minor-roll.html' title='On a minor roll...'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dqID2FidOWo/TDu5M_t8XcI/AAAAAAAAAG8/bnVwHgdWvjE/s72-c/mini-streak2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1480808394999846015</id><published>2010-06-23T02:38:00.002+01:00</published><updated>2010-06-23T02:46:09.962+01:00</updated><title type='text'>Ultima 9</title><content type='html'>Ultima IX was one of the ultimate letdowns in the history of game sequels. Pretty much all of the previous games improved as the franchise continued, with the arguable exception of 8 (but Ultima 7 "The Black Gate" and 7 part 2 "Serpent Isle" were superb and very hard to follow). Ultima 9 took the leap into a properly 3D, third-person adventure, with a very clever physics engine and pretty graphics.&lt;br /&gt;Sadly, it was released as a buggy, unconvincing game, with unsatisfying combat, awful AI, a fairly linear plot and an unimmersive environment - especially compared to the Black Gate where you could bake bread, sew thread into cloth and cut cloth into bandages, deliver pumpkins and meat and really interact with an enormous number of objects, as well as watch NPCs carry out believable tasks on a real schedule.&lt;br /&gt;&lt;br /&gt;Perhaps the most enjoyable thing about Ultima 9 was the ability to build ridiculous, gigantic bridges out of sticks balanced atop scrolls lying on bottles balanced on loaves of bread, and jumping along the bridge in stages to cross the unswimmable sea between islands (!!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1480808394999846015?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1480808394999846015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1480808394999846015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1480808394999846015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1480808394999846015'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/06/ultima-9.html' title='Ultima 9'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1852493862425812892</id><published>2010-06-22T00:42:00.003+01:00</published><updated>2010-06-22T00:45:40.992+01:00</updated><title type='text'>Worst Google machine translation ever</title><content type='html'>Chinese: "齐桓晋文之事"&lt;br /&gt;&lt;br /&gt;Rough meaning: The story of Huan Jin Wen of the Qi dynasty&lt;br /&gt;&lt;br /&gt;Google translation: "Renal calculi matter of cerebral infarction in rats"&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(WHAT?)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1852493862425812892?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1852493862425812892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1852493862425812892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1852493862425812892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1852493862425812892'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/06/worst-google-machine-translation-ever.html' title='Worst Google machine translation ever'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7210868574858923460</id><published>2010-06-12T14:59:00.004+01:00</published><updated>2010-06-12T15:08:23.211+01:00</updated><title type='text'>Windows: still with the silly needless reboots?</title><content type='html'>Back when I used to use Windows 98 and then XP primarily, the phenomenon of having to reboot when carrying out a minor system change or installing an inconsequential update caused much exasperation, something which was far less of a problem on Ubuntu.&lt;br /&gt;&lt;br /&gt;Then I moved to the Mac and was again disturbed by the occasional mysterious requirement to restart the machine merely because the web browser or worse, iTunes (which I &lt;b&gt;do not even use&lt;/b&gt;) had updated itself.&lt;br /&gt;&lt;br /&gt;And then I got a Windows Vista box and was reminded of the good old days:&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_dqID2FidOWo/TBOT99A0R6I/AAAAAAAAAG0/PEeKT3Hh1j8/s1600/windows-update-mail-restart.png"/&gt;&lt;br /&gt;&lt;br /&gt;Nice. I've &lt;i&gt;never&lt;/i&gt; used Windows Mail, but now it wants to reboot the computer just because it's updating its own files? &lt;b&gt;Piss&lt;/b&gt; awf!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7210868574858923460?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7210868574858923460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7210868574858923460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7210868574858923460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7210868574858923460'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/06/windows-still-with-silly-needless.html' title='Windows: still with the silly needless reboots?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dqID2FidOWo/TBOT99A0R6I/AAAAAAAAAG0/PEeKT3Hh1j8/s72-c/windows-update-mail-restart.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3405176835063275146</id><published>2010-05-28T15:24:00.002+01:00</published><updated>2010-05-28T15:33:51.638+01:00</updated><title type='text'>Why you shouldn't multitask</title><content type='html'>Two great articles on why multitasking is not only bad for getting work done, but also damaging to our bodies and brains: &lt;a href="http://www.dailymail.co.uk/health/article-1205669/Is-multi-tasking-bad-brain-Experts-reveal-hidden-perils-juggling-jobs.html"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.hbr.org/bregman/2010/05/how-and-why-to-stop-multitaski.html"&gt;here&lt;/a&gt; (yes, I know one of them is from the Daily Mail, pretend it isn't!). Well worth reading - I'm going to try to stop multitasking as much as possible (no more half-watching TV in the background, reading email/articles, talking, listening to MP3s all at once and so forth).&lt;br /&gt;&lt;br /&gt;A couple of choice quotes:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"He found that just being in a situation where you are able to text and email - perhaps sitting at your desk - can knock a whole ten points from your IQ. This is similar to the head-fog caused by losing a night’s sleep."&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;"An American study reported in the Journal Of Experimental Psychology found that it took students far longer to solve complicated maths problems when they had to switch to other tasks - in fact, they were &lt;i&gt;up to 40 per cent slower&lt;/i&gt;. &lt;br /&gt;The same study also found multitasking has a negative physical effect, &lt;i&gt;prompting the release of stress hormones and adrenaline&lt;/i&gt;. &lt;br /&gt;This can trigger a vicious cycle, where we work hard at multi-tasking, take longer to get things done, then feel stressed, harried and compelled to multi-task more."&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;"Using brain-scans he’s found that if we multi-task while studying, &lt;i&gt;the information goes into the striatum&lt;/i&gt;, a region of the brain involved in learning new skills, from where it is &lt;i&gt;difficult to retrieve facts and ideas&lt;/i&gt;. If we are not distracted, it heads to the hippocampus, a region involved in storing and recalling information."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3405176835063275146?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3405176835063275146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3405176835063275146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3405176835063275146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3405176835063275146'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/why-you-shouldnt-multitask.html' title='Why you shouldn&apos;t multitask'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4788603121911031554</id><published>2010-05-20T12:06:00.002+01:00</published><updated>2010-05-20T12:14:09.236+01:00</updated><title type='text'>Bertie Gummidge</title><content type='html'>&lt;font size="30pt"&gt;&lt;img align="left" src="http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2008/04/02/ahernb460.jpg"/&gt;?&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;br /&gt;?&lt;img align="right" src="http://blogs.guardian.co.uk/organgrinder/worzel460440.jpg"/&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4788603121911031554?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4788603121911031554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4788603121911031554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4788603121911031554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4788603121911031554'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/bertie-gummidge.html' title='Bertie Gummidge'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2946876310016556893</id><published>2010-05-17T01:32:00.003+01:00</published><updated>2010-05-17T01:51:22.879+01:00</updated><title type='text'>Legislators and corporate donations</title><content type='html'>Was reading the Wikipedia &lt;a href="http://en.wikipedia.org/wiki/James_Inhofe"&gt;article&lt;/a&gt; about a senator with some disturbing views on homosexuality (his office said he "does not hire openly gay staffers due to the possibility of a conflict of agenda"), Israel (that America should base its Israel policy on the &lt;i&gt;text of the Bible, WTF!&lt;/i&gt;) and the rights of prisoners (saying he was "outraged by the outrage" over relevations of abuse in Abu Ghraib, and one of nine senators to vote against an act prohibiting "cruel, inhuman or degrading" treatment of individuals in U.S. Government custody).&lt;br /&gt;&lt;br /&gt;Then I saw &lt;a href="http://en.wikipedia.org/wiki/James_Inhofe#Campaign_contributions"&gt;this part&lt;/a&gt;. Inhofe is highly sceptical of the climate change, an issue which I'm somewhat undecided about. Fair enough, but surely receiving a $429,950 "donation" from the petroleum industry is a &lt;i&gt;serious conflict of interest&lt;/i&gt;?&lt;br /&gt;&lt;br /&gt;U.S. senators make huge decisions on bills and treaties, as well as appoint high level government officials and judges. Surely if they can receive donations from any source, then effectively it means the richest corporations and industries can unfairly influence government policy?&lt;br /&gt;&lt;br /&gt;Would it not be better (democratically speaking) if there were no such donations and politicians received some fixed amount for their campaigns from government coffers?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2946876310016556893?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2946876310016556893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2946876310016556893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2946876310016556893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2946876310016556893'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/legislators-and-corporate-donations.html' title='Legislators and corporate donations'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2311913936816560509</id><published>2010-05-11T18:41:00.003+01:00</published><updated>2010-05-11T18:57:22.835+01:00</updated><title type='text'>Automated refactorings... check that they work!</title><content type='html'>Many modern IDEs provide automatic, context-sensitive refactorings, especially for statically-typed, popular languages like Java. While you should use these wherever it saves time, you should check that they preserve semantics on the code they transform.&lt;br /&gt;&lt;br /&gt;For example, in the following test code, Eclipse will offer to "exchange left and right operands for infix expression" when you try a quick fix (cmd-1 on a Mac, ctrl-1 elsewhere) at the '&amp;&amp;' on line 2. The refactoring transforms "(a || b) &amp;&amp; c" into "c &amp;&amp; a || b".&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; boolean a = true, b = true, c = false;&lt;br /&gt; boolean original = &lt;b&gt;(a || b) &amp;&amp; c&lt;/b&gt;;&lt;br /&gt; boolean swapped = &lt;b&gt;c &amp;&amp; a || b&lt;/b&gt;;&lt;br /&gt; assertTrue(!original);  // ok&lt;br /&gt; assertEquals(original, swapped);  // fail&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that the parentheses have disappeared - at first I assumed that they must therefore be unnecessary and "c &amp;&amp; a || b" is therefore equivalent to "c &amp;&amp; (a || b)", but figured that the parser should evaluate from left to right (which would produce different results). Being unconvinced one way or the other, I made a simple testcase to verify that both expressions were logically equivalent, which failed.&lt;br /&gt;&lt;br /&gt;I'm not sure why Eclipse removed the parentheses, and it doesn't really matter - the point is, keep an eye on what your code transformation utility is doing - don't assume that it &lt;i&gt;must&lt;/i&gt; produce correct output. This was one of those cases where the logic bug might not show up for a while, and the existing unit tests wouldn't have caught it, unless I bothered to run a (probably outdated and slow) integration test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2311913936816560509?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2311913936816560509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2311913936816560509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2311913936816560509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2311913936816560509'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/automated-refactorings-check-that-they.html' title='Automated refactorings... check that they work!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2774875728505753275</id><published>2010-05-11T00:44:00.002+01:00</published><updated>2010-05-11T00:44:36.087+01:00</updated><title type='text'>Abandoned locks</title><content type='html'>When people arrive back to where they locked their bicycle and find it vandalised, they often just abandon them forever, so you find bike racks with a certain percentage of rusting, ruined bikes.&lt;br /&gt;Fair enough but... why do they leave them locked there, if they're never coming back? The locks are sometimes more expensive than the bike (or at least a new wheel). Why not take the lock home? Then a) people can recycle the bike if they want, b) people can use that parking slot and c) the victim at least doesn't have to buy a new lock for €€€ in future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2774875728505753275?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2774875728505753275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2774875728505753275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2774875728505753275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2774875728505753275'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/abandoned-locks.html' title='Abandoned locks'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-40633325340342860</id><published>2010-05-08T14:45:00.002+01:00</published><updated>2010-05-08T15:07:25.606+01:00</updated><title type='text'>Thoughtless showers</title><content type='html'>&lt;blockquote&gt;&lt;i&gt;(&lt;a href="http://en.wikipedia.org/wiki/Brainstorming#Controversy_over_term"&gt;from Wikipedia article on brainstorming&lt;/a&gt;)&lt;br /&gt;Some governmental organisations (The Welsh Development Agency and the Department of Enterprise, Trade and Investment in Belfast) have reached the conclusion that the term 'brainstorming' is offensive to people with epilepsy (see political correctness) and have suggested the alternative "thought-showers".&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Oh you stupid, stupid people. You hideously moronic, making-reasons-to-get-offended-about-clearly-inoffensive-things obsessive wankers. You waste public tax funds to research what existing terms could be deemed offensive to &lt;i&gt;somebody&lt;/i&gt; by reading it in &lt;i&gt;some contrived and obviously unintended context&lt;/i&gt; - something which is completely out of your mandate.&lt;br /&gt;&lt;br /&gt;Happily, the article continues:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;However, research by the National Society for Epilepsy found of those affected by epilepsy questioned, 93% considered the term inoffensive. A specific comment states that changes need not be made since that could promote an undesirable image of epileptics being easily offended.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Here's a tip for (predominantly) UK government-funded organisations: do your job. Don't waste your time and money determining which terms might offend somebody somewhere if viewed in some funny way. That's not your job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-40633325340342860?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/40633325340342860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=40633325340342860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/40633325340342860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/40633325340342860'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/thoughtless-showers.html' title='Thoughtless showers'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8414120920630071533</id><published>2010-05-06T02:23:00.000+01:00</published><updated>2010-05-06T02:24:28.972+01:00</updated><title type='text'>Vote for against change, or something</title><content type='html'>Accidentally caught a political ad on BBC between/after snooker the other day, by the DUP/UUP or some-other-wankersUP. The guy went on about how if you let xxx in, they'd let all the Scottish and Welsh nationalists break up "the union", so you should vote him in instead.&lt;br /&gt;Then, immediately after he says his piece, the words "VOTE FOR CHANGE" appear on the screen.&lt;br /&gt;&lt;br /&gt;WAT??? Wasn't he just campaigning AGAINST change?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8414120920630071533?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8414120920630071533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8414120920630071533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8414120920630071533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8414120920630071533'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/vote-for-against-change-or-something.html' title='Vote for against change, or something'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6319024064238565430</id><published>2010-05-06T02:05:00.003+01:00</published><updated>2010-05-06T02:12:29.550+01:00</updated><title type='text'>Opera 10.53 on the Mac: Crash central</title><content type='html'>The latest release builds of Opera for the Mac are atrocious, crashing all the time. All. The. Fucking. Time. And with seemingly random user interactions leading up to the crash, which kind of suggests a race condition, memory allocator or some other effectively random bug, although I have so many damn tabs open, many of which have JS stuff going on in the background, that it's hard to tell.&lt;br /&gt;&lt;br /&gt;Another thing which makes it even harder to tell, is the &lt;i&gt;rubbish&lt;/i&gt; stack trace provided when it crashes. A major downside to having closed-source software like Opera is that you can neither properly investigate these crashes nor solve them properly. Why not provide at least some kind of assertions or at least filename/line numbering in the stack traces? AFAIK, adding that sort of debug info, even for a shitty language like C++, isn't that big of a performance hit.&lt;br /&gt;&lt;br /&gt;And if they're purposely obscuring debug info because Opera is closed source, then WHAT THE FUCK. Nothing "damaging" would be leaked by such information. Blargh!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6319024064238565430?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6319024064238565430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6319024064238565430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6319024064238565430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6319024064238565430'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/opera-1053-on-mac-crash-central.html' title='Opera 10.53 on the Mac: Crash central'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8338454650161893632</id><published>2010-05-02T18:25:00.005+01:00</published><updated>2011-01-15T00:02:03.424Z</updated><title type='text'>Using tor/Vidalia to access BBC iPlayer (etc) outside the UK</title><content type='html'>There's a decent &lt;a href="http://hurwi.net/blog/?p=28"&gt;article&lt;/a&gt; explaining how to set up tor/Vidalia to access sites like BBC's iPlayer which only allow connections from certain countries (like England). Not mentioned in the article (although someone added a comment about it) is that now you do &lt;i&gt;not&lt;/i&gt; need to manually select exit nodes in the UK - you can specify exitnode countries in your torrc files by putting a two character country code in braces. This makes the process much easier!&lt;br /&gt;&lt;br /&gt;I'm running on a Mac with Vidalia, so the setting file (you can find the location of it in the Vidalia settings dialog's advanced tab - but it's probably ~/Library/Vidalia/torrc) ends with:&lt;br /&gt;&lt;pre&gt;ExitNodes {GB}&lt;br /&gt;StrictExitNodes 1&lt;/pre&gt;&lt;br /&gt;Note that the country code is GB and &lt;i&gt;not&lt;/i&gt; UK, which a couple of posts/articles online misleadingly state.&lt;br /&gt;&lt;br /&gt;There's another problem with the recent Mac builds - the geoip file is in the wrong place, leading to log messages like the following:&lt;br /&gt;&lt;blockquote&gt;[Warning] Failed to open GEOIP file /Applications/Vidalia.app/share/tor/geoip.  We've been configured to use (or avoid) nodes in certain countries, and we need GEOIP information to figure out which ones they are.&lt;/blockquote&gt;&lt;br /&gt;That was solved like this (from the terminal):&lt;br /&gt;&lt;pre&gt;cd /Applications/Vidalia.app/&lt;br /&gt;mkdir -p share/tor/&lt;br /&gt;cp Contents/Resources/geoip share/tor/&lt;/pre&gt;&lt;br /&gt;Then stop and restart tor.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update: StrictNodes should now be StrictExitNodes.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8338454650161893632?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8338454650161893632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8338454650161893632' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8338454650161893632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8338454650161893632'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/05/using-torvidalia-to-access-bbc-iplayer.html' title='Using tor/Vidalia to access BBC iPlayer (etc) outside the UK'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1117976282015630125</id><published>2010-04-28T16:58:00.002+01:00</published><updated>2010-04-28T17:08:18.108+01:00</updated><title type='text'>Opera and the CPU</title><content type='html'>Opera 10.51 is running on my work PC under Windows Vista, with 2gb RAM and 2.66ghz Core2Duo. There are about 50 open tabs, and one of them is playing a Youtube video. CPU usage is listed in the Task Manager as around 2-3%, with 300mb of physical RAM used.&lt;br /&gt;&lt;br /&gt;The &lt;s&gt;most&lt;/s&gt; recent Opera (10.10 I think... actually 10.52 was apparently released today, but 10.10 still reports that there are no new updates) on my 2.33ghz C2D Macbook with 2gb RAM in the same configuration except &lt;i&gt;without&lt;/i&gt; any Youtube videos playing, uses 10% CPU according to top, and 20-30% with a video playing. And that's with the Flashblock userjs - before it was much higher.&lt;br /&gt;Why? Is it because my PC has a half-decent graphics card and the Macbook doesn't?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1117976282015630125?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1117976282015630125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1117976282015630125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1117976282015630125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1117976282015630125'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/opera-and-cpu.html' title='Opera and the CPU'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4712073276056298471</id><published>2010-04-20T15:24:00.005+01:00</published><updated>2010-04-20T15:31:05.082+01:00</updated><title type='text'>US government finally admits most piracy estimates are bogus</title><content type='html'>&lt;br/&gt;(&lt;a href="http://arstechnica.com/tech-policy/news/2010/04/us-government-finally-admits-most-piracy-estimates-are-bogus.ars"&gt;link&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;A nice, measured treatment of the flaws (especially the common citations of bogus or non-existent work) in pro-IP surveys and studies, usually commissioned by "content industries" (organisations like the MPAA, RIAA, BSA etc) which often contain "specific and alarmist rhetoric".&lt;br /&gt;&lt;br /&gt;It's US-centric but has some very sane and generally applicable points, like: &lt;i&gt;"For instance, these studies ignore the obvious points that pirating goods leaves consumers with more disposable income, which is likely spent elsewhere in the economy. Effects on the economy as a whole, then, are terribly speculative and seem more likely to be simply redistributive"&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4712073276056298471?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4712073276056298471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4712073276056298471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4712073276056298471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4712073276056298471'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/us-government-finally-admits-most.html' title='US government finally admits most piracy estimates are bogus'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2865269418658170591</id><published>2010-04-15T16:33:00.005+01:00</published><updated>2010-04-15T16:54:15.958+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='choking'/><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><category scheme='http://www.blogger.com/atom/ns#' term='stress'/><category scheme='http://www.blogger.com/atom/ns#' term='panicking'/><title type='text'>Distinguishing between "choking" and "panicking"</title><content type='html'>If you've ever "choked" in any kind of performance &lt;i&gt;(e.g. when you're far ahead in a snooker game and &lt;b&gt;just need this one, simple shot&lt;/b&gt; to win, you can do this, just keep your shoulder down and your elbow straight, follow through with the cue and &lt;b&gt;WHAT THE-&lt;/b&gt;)&lt;/i&gt;, then &lt;a href="http://www.gladwell.com/2000/2000_08_21_a_choking.htm"&gt;this utterly superb article&lt;/a&gt; will have you nodding your head in acknowledgement, understanding and compassion.&lt;br /&gt;&lt;br /&gt;Not only does it explain and separate the notions of panicking (reversion to instinct) and choking (loss of instinct) under pressure with dramatic examples, it introduces the interesting form of choke that is "stereotype threat" (which seems to correspond with something I wrote &lt;a href="http://vaguevagaries.blogspot.com/2008/12/women-and-maths-and-chess.html"&gt;a while ago&lt;/a&gt;):&lt;br /&gt;&lt;blockquote&gt;"Steele and others have found stereotype threat at work in any situation where groups are depicted in negative ways. Give a group of qualified women a math test and tell them it will measure their quantitative ability and they'll do much worse than equally skilled men will; present the same test simply as a research tool and they'll do just as well as the men."&lt;/blockquote&gt;&lt;br /&gt;Ultimately, we're faced with a Schrodinger-type paradox, whereby external, theoretically irrelevant variables (audience, expectations, prize, etc) influence performance on a task:&lt;br /&gt;&lt;blockquote&gt;"We have to learn that sometimes a poor performance reflects not the innate ability of the performer but the complexion of the audience; and that sometimes a poor test score is the sign not of a poor student but of a good one."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2865269418658170591?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2865269418658170591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2865269418658170591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2865269418658170591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2865269418658170591'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/distinguishing-between-choking-and.html' title='Distinguishing between &quot;choking&quot; and &quot;panicking&quot;'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8902646608766357745</id><published>2010-04-13T16:39:00.003+01:00</published><updated>2010-04-13T16:49:25.584+01:00</updated><title type='text'>Redundant T&amp;C's</title><content type='html'>&lt;br/&gt;&lt;a href="http://www.meteor.ie/terms_and_conditions/billpaymax/"&gt;(http://www.meteor.ie/terms_and_conditions/billpaymax/)&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;These fair use conditions are such that a Customer's usage of this tariff plan shall not exceed &lt;b&gt;45,000 minutes of calls&lt;/b&gt; and/or 5,000 texts per &lt;b&gt;month&lt;/b&gt;.&lt;/blockquote&gt;&lt;br /&gt;1 month = (max) 31 days = 31*24 hours = 31*24*60 = 44,640 minutes.&lt;br /&gt;&lt;br /&gt;Since it's physically impossible to exceed 45,000 minutes of calls in any 44,640 minute period... why have that condition in the contract at all?&lt;br /&gt;It's like having a "friends and family" discount with a condition that you can only apply the discount to a maximum of &lt;a href="http://en.wikipedia.org/wiki/Population_of_the_earth"&gt;7 billion&lt;/a&gt; people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8902646608766357745?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8902646608766357745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8902646608766357745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8902646608766357745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8902646608766357745'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/redundant-t.html' title='Redundant T&amp;C&apos;s'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1741294478872256534</id><published>2010-04-10T22:51:00.003+01:00</published><updated>2010-04-10T23:14:41.486+01:00</updated><title type='text'>Üter</title><content type='html'>Was walking to the train station with the childe on the way home from town, going by Leinster House. To prompt the dawdling girl into hurrying up I told her the Garda stationed at the gate would catch her if she was bold, which naturally caused her to sprint away at full pelt. As we passed, the young cop called out: "Ah don't make me run, I'm full of chocolate!"&lt;br /&gt;&lt;br /&gt;Good to see a Garda with a sense of humour (and a decent knowledge of Simpsons episodes) :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1741294478872256534?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1741294478872256534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1741294478872256534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1741294478872256534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1741294478872256534'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/uter.html' title='Üter'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3678551791113805207</id><published>2010-04-09T17:42:00.005+01:00</published><updated>2010-04-09T17:49:01.780+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Subclipse: "An existing connection was forcibly closed by the remote host"</title><content type='html'>Subclipse "suddenly" stopped working, so I couldn't commit or synchronise to a svn repository anymore:&lt;br /&gt;&lt;blockquote&gt;&lt;font face="Courier New"&gt;    RA layer request failed&lt;br /&gt;svn: Commit failed (details follow):&lt;br /&gt;svn: OPTIONS of 'http://big-long-svn-path': Could not read status line: An existing connection was forcibly closed by the remote host.&lt;/font&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Maybe a recent update of TortoiseSVN bolloxed it up, who knows... anyway, I worked around it by going to &lt;i&gt;Team-&gt;SVN&lt;/i&gt; in Eclipse's preferences dialogue and changing the client in the "SVN Interface" section from &lt;i&gt;JavaHL (JNI)&lt;/i&gt; to &lt;i&gt;SVNKit (Pure Java)&lt;/i&gt;. Works so far, although I had to re-enter the username/password which had been stored before.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3678551791113805207?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3678551791113805207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3678551791113805207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3678551791113805207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3678551791113805207'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/subclipse-existing-connection-was.html' title='Subclipse: &quot;An existing connection was forcibly closed by the remote host&quot;'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1665898905598705440</id><published>2010-04-07T16:18:00.005+01:00</published><updated>2010-04-07T16:23:01.360+01:00</updated><title type='text'>Interregnum</title><content type='html'>&lt;br/&gt;&lt;br /&gt;Saw a nicely vandalised sign in the DCU car park today which reminded me (pleasantly) that this is Ireland. Someone had crossed out three letters so it read:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;NO &lt;s&gt;SMO&lt;/s&gt;KING BEYOND THIS POINT&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1665898905598705440?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1665898905598705440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1665898905598705440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1665898905598705440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1665898905598705440'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/interregnum.html' title='Interregnum'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-9171786912886793574</id><published>2010-04-07T03:26:00.014+01:00</published><updated>2011-11-15T17:47:27.421Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chinese'/><title type='text'>Chinese character frequencies</title><content type='html'>After a long time of somewhat naïvely trying to learn Chinese by adding &lt;i&gt;production&lt;/i&gt; flashcards for new words (where the front side is a English term with hints to avoid guessing an answer that was correct but not the one on the back side, and the back side is Chinese characters and phonetic pinyin), I realised the task was far too difficult and time-consuming. For each of those cards, I'd write the characters on a graphics tablet and speak them, then flip the card and fail it if I made any mistakes in either the writing or speech. This was needlessly laborious since there was so much redundancy and opportunity to make small mistakes even if most of the answer was correct (writing out 印制电路板 (printed circuit board) many times was &lt;b&gt;extremely&lt;/b&gt; tedious and unproductive).&lt;br /&gt;&lt;br /&gt;So some reading on &lt;a href="http://www.xamuel.com/"&gt;Glowing Face Man's blog&lt;/a&gt; led me to switch things around a bit, changing my deck so that the only characters I would write (production) were single characters, of which there are still very very many (over 20,000!) but the most common 3,000 account for over 99% of what you'll see in actual modern Chinese. All the other cards changed to recognition, where the front side is the Chinese characters and the back side (what I speak out loud before flipping the card) is phonetic pinyin and a (sometimes rough) English translation. Rather than mess about with &lt;a href="http://ichi2.net/anki/"&gt;Anki&lt;/a&gt;'s deck format or exporting/modifying/importing, I wrote a dodgy AppleScript program to automate moving through the deck interface and sending keystrokes to cut, paste and rearrange the text... even crappy automation can be better than changing 2,500 cards manually. In fact, it would still be better even if it took the same amount of time, because of the sense of reward that it spurs.&lt;br /&gt;&lt;br /&gt;This has helped immensely, reducing the pain and greatly increasing throughput and efficiency. However, learning the characters still takes time - my current plan is to go through the 3,000 most common ones and learn them as production cards before carrying on with sentence recognition cards.&lt;br /&gt;&lt;br /&gt;But why 3,000 characters? Why not half or twice that? And which ones?&lt;br /&gt;&lt;br /&gt;That's answered &lt;a href="http://www.zein.se/patrick/3000en.html"&gt;here&lt;/a&gt; - a computer program can quickly go through a huge corpus of text and produce a sorted listing of characters by frequency. Predictably, the first couple of hundred characters account for a huge fraction of written Chinese: 200 characters will get you 55% understanding (that's "most" Chinese already, heh), 400 will get you 70%, and so on. (Of course, when I say "understanding", I'm ignoring the fact that you need to learn the grammar, idioms and so on, and which of many possible meanings a character will take on in different contexts.)&lt;br /&gt;&lt;br /&gt;A quick plot of the numbers provided produces a roughly logarithmic shape, showing diminishing returns (given the roughly constant time required to learn characters):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_dqID2FidOWo/S7vyXk52sHI/AAAAAAAAAGk/WT7MkNjemEY/s1600/chinese-char-frequency-curve.png"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5457221860346736754" src="http://2.bp.blogspot.com/_dqID2FidOWo/S7vyXk52sHI/AAAAAAAAAGk/WT7MkNjemEY/s400/chinese-char-frequency-curve.png" style="cursor: hand; cursor: pointer; height: 308px; width: 337px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So it looks like the &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Pareto_principle"&gt;payoff is small&lt;/a&gt; by the time you're hitting around 2,500 characters (98.5%), but it would be nice to say that you only &lt;i&gt;don't&lt;/i&gt; know &amp;lt;1% of written Chinese when you hit 3,000 characters (99.2%), and only add more unfamiliar characters to the deck as you encounter them during reading, less and less often.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-9171786912886793574?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/9171786912886793574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=9171786912886793574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/9171786912886793574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/9171786912886793574'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/chinese-character-frequencies.html' title='Chinese character frequencies'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_dqID2FidOWo/S7vyXk52sHI/AAAAAAAAAGk/WT7MkNjemEY/s72-c/chinese-char-frequency-curve.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6526222700289874790</id><published>2010-04-03T04:28:00.005+01:00</published><updated>2010-04-03T18:32:03.778+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='learning'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Tip of the Tongue learning is bad!</title><content type='html'>&lt;a href="http://www.sciencentral.com/articles/view.php3?type=article&amp;article_id=218393117"&gt;This article&lt;/a&gt; came as a surprise - my default assumption was that "working through" this tip of the tongue state until I came upon the answer. The research demonstrates that the time you spend agonising and searching for the answer causes the same thing to happen next time - you're "practicing" the stuck condition.&lt;br /&gt;&lt;br /&gt;So the best thing to do is to have a short timeout (10 seconds was better for future remembering than 30 seconds, in the study) whereupon you give up and look up the answer, or make a note to check later or something. Anything but keep struggling until you remember the answer the hard way, since it only facilitates the same wrong mental paths in future.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Two more suggestions...&lt;/i&gt;&lt;br /&gt;1. When you struggle with a tip of the tongue thought, whichever way you manage to resolve it, make an entry for it in an &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Spaced_repetition_software"&gt;SRS&lt;/a&gt; program like &lt;a href="http://www.mnemosyne-proj.org/"&gt;Mnemosyne&lt;/a&gt; or &lt;a href="http://ichi2.net/anki/"&gt;Anki&lt;/a&gt;.&lt;br /&gt;For example, the researcher who carried out the study said that she often struggled to remember the word "obsidian". So when you notice that you tend to struggle with this word, you add a flashcard to your SRS with "glassy lava rock" on the front, and "obsidian" on the back. Then when reviewing the cards, if you can't remember the answer after 5-10 seconds, you give it a fail mark. If you remembered it quickly, give it a passing mark. The SRS program will take care of the rest, managing the transition of the properly-learned knowledge into your long-term memory.&lt;br /&gt;&lt;br /&gt;2. When you see a friend (or a child!) struggle for a word and you can guess what word it is, put them out of their misery ASAP, and if they say "ahh, I would have got it, why did you tell me?" then explain why!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6526222700289874790?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6526222700289874790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6526222700289874790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6526222700289874790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6526222700289874790'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/04/tip-of-tongue-learning-is-bad.html' title='Tip of the Tongue learning is bad!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8822565065433884411</id><published>2010-03-30T23:36:00.004+01:00</published><updated>2010-03-31T21:55:31.778+01:00</updated><title type='text'>Blinkenwords</title><content type='html'>Uploaded a small utility called &lt;a href="http://rubyforge.org/projects/blinkenwords/"&gt;Blinkenwords&lt;/a&gt; on RubyForge. It's a simplistic &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Rapid_Serial_Visual_Presentation"&gt;RSVP&lt;/a&gt; (rapid serial visual presentation) program which takes input from the clipboard (shortcut: up arrow key) and displays it (shortcut: down arrow key) in vertical chunks. You can change the number of words in each block (from 1-10 at a time) and change the speed in words per minute (shortcuts: -5 wpm =&gt; [, +5 wpm =&gt; ]).&lt;br /&gt;&lt;br /&gt;There's lots of similar programs out there, some implemented as Javascript programs - I only wrote this because none of the ones I tried rendered text as I wanted to see it (i.e. reading in vertical columns, 3 words per column, but not scrolling a 3-line textbox one line at a time). It has a couple of very basic heuristics which insert a slight pause when a group of long words or end of sentence/clause is detected. Also, I took the opportunity to add easy keyboard shortcuts to streamline things (i.e. copy some text, switch to Blinkenwords, press up key (paste), press down key (play text), left/right keys (skip backwards or forwards)).&lt;br /&gt;&lt;br /&gt;Whether reading this way helps or hinders speed and comprehension is questionable (see &lt;a href="http://vaguevagaries.blogspot.com/2009/09/speed-reading-can-we-significantly.html"&gt;this blog post&lt;/a&gt; I wrote a while back on the topic of speed reading), so this is pretty experimental and YMMV (if you can even get it working - had some troubles with source file encodings and a couple of other things). Personally, I find it useful when there's lots of drudgery-reading to be done (e.g. catching up on forums/lengthy emails/news articles), but have problems with difficult, dense texts.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dqID2FidOWo/S7O2aHw6AHI/AAAAAAAAAGU/f2c1zW9I4Uo/s1600/blinkenwords-summary.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 224px;" src="http://4.bp.blogspot.com/_dqID2FidOWo/S7O2aHw6AHI/AAAAAAAAAGU/f2c1zW9I4Uo/s400/blinkenwords-summary.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5454904133552832626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S7O2aQ_MgxI/AAAAAAAAAGc/R2ZUqnMgbcE/s1600/blinkenwords-reading.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 224px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S7O2aQ_MgxI/AAAAAAAAAGc/R2ZUqnMgbcE/s400/blinkenwords-reading.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5454904136028685074" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8822565065433884411?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8822565065433884411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8822565065433884411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8822565065433884411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8822565065433884411'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/blinkenwords.html' title='Blinkenwords'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dqID2FidOWo/S7O2aHw6AHI/AAAAAAAAAGU/f2c1zW9I4Uo/s72-c/blinkenwords-summary.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3760009401148669461</id><published>2010-03-30T19:30:00.003+01:00</published><updated>2011-01-20T02:20:26.297Z</updated><title type='text'>Plink beta 0.60 broken</title><content type='html'>Spent about 20 minutes wondering why Plink (part of the free &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;PuTTY&lt;/a&gt; SSH suite) was acting extremely oddly on my machine - not displaying help when run with no arguments, and completely ignoring PuTTY saved session configurations, and generally not working at all.&lt;br /&gt;&lt;br /&gt;On the off-chance, I downloaded the snapshot release of Plink (from the same page) and it worked straight away. Argh! A completely useless buggy version has been the official release since 2007?!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3760009401148669461?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3760009401148669461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3760009401148669461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3760009401148669461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3760009401148669461'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/plink-beta-060-broken.html' title='Plink beta 0.60 broken'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5645919802462810147</id><published>2010-03-28T22:04:00.003+01:00</published><updated>2010-03-30T01:20:48.975+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='polaroid'/><category scheme='http://www.blogger.com/atom/ns#' term='lcd'/><category scheme='http://www.blogger.com/atom/ns#' term='tv'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Polaroid TLU-02241W blank screen oddness</title><content type='html'>Picked up a Polaroid TLU-02241W LCD flatscreen TV cheapish on eBay a year or so ago, intending to set it up for use with my Atari STe, which didn't happen until today (and is still pretty crappy with the horrendously low quality RF cable - will need to pick up a special 13-or-something pin DIN to SCART cable).&lt;br /&gt;When I received the TV I did a quick test and it seemed fine, but turning it on this time only displayed the Polaroid logo on boot and then the display seemed to power itself off, even though the blue LED showed that it was still "on". Also, it seemed to pick up some analogue broadcast via the RF cable and produced a good sound output.&lt;br /&gt;&lt;br /&gt;A quick Google indicated that this model (and many other Polaroid TVs) has serious problems, particularly relating to bad quality electrolytic capacitors in the power/control boards. While watching a series of videos on Youtube showing how to identify and replace the dodgy caps, I went back in and booted the TV again, this time repeatedly hitting the menu button on the remote. Surprisingly, it went from the logo to a blue screen with a working OSD. &lt;s&gt;Problem solved, even after turning the TV off and on without the same button mashing.&lt;br /&gt;&lt;br /&gt;Sounds like it will eventually fail, with all the bad reviews, but for now it seems ok. If you're seeing the same symptoms, see if this works.&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update: Problem &lt;i&gt;not&lt;/i&gt; solved - came back again the next day and no amount of button mashing will help it. Also, tilting the screen backwards or forwards causes the power LED to flicker and go dim, which is disturbing. Looks like it's a painful capacitor replacement job which is somewhat likely to fail anyway if it turns out to be another problem.&lt;br /&gt;&lt;br /&gt;Poor show, Polaroid!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5645919802462810147?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5645919802462810147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5645919802462810147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5645919802462810147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5645919802462810147'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/polaroid-tlu-02241w-blank-screen.html' title='Polaroid TLU-02241W blank screen oddness'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6243104210942061822</id><published>2010-03-27T18:44:00.003Z</published><updated>2010-03-27T18:55:55.694Z</updated><title type='text'>Phone IQ test failure</title><content type='html'>&lt;i&gt;*phone rings*&lt;br /&gt;GF: "Hello?"&lt;br /&gt;Caller: "Hi is that Danny?"&lt;br /&gt;GF: "No, I think you've got the wrong number... Ok bye!"&lt;br /&gt;&lt;br /&gt;...... *6 or 7 seconds pass... phone rings*&lt;br /&gt;GF: [It's the same number, you talk to her this time]&lt;br /&gt;Me: "Hello?"&lt;br /&gt;Same caller: "Hi, Danny?"&lt;br /&gt;Me: "Eh... no, I'm pretty sure you have the wrong number."&lt;br /&gt;Caller: "Oh right! Sorry."&lt;br /&gt;Me: "Ok, good luck."&lt;br /&gt;&lt;br /&gt;...... *5 seconds pass... phone rings*&lt;br /&gt;Me: [Just leave it, answer again if she does it in an hour or so]&lt;br /&gt;&lt;br /&gt;*voicemail icon flashes, we check the mailbox*&lt;br /&gt;Same caller: "Hi Danny, this is Anne-Marie here at Classic Cuts, just checking if 1pm on Wednesday is ok with you. Bye!"&lt;/i&gt;&lt;br /&gt;&lt;hr width=50% /&gt;&lt;br /&gt;Why would someone dial the same number twice and, after being told twice that they've got the wrong number, dial AGAIN and leave a voicemail for "Danny", even though the voicemail greeting clearly identifies as someone other than Danny?&lt;br /&gt;What could possibly explain simultaneously having the ability to dial phone numbers and speak English, while being unable to comprehend the most obvious facts? If you call a number TWICE and are told that it's a wrong number, it's &lt;i&gt;STILL&lt;/i&gt; going to be the wrong number the third time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Top Tip: No amount of redialling the same wrong number will cause Danny to answer the phone.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6243104210942061822?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6243104210942061822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6243104210942061822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6243104210942061822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6243104210942061822'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/phone-iq-test-failure.html' title='Phone IQ test failure'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3462958203083981391</id><published>2010-03-21T17:33:00.008Z</published><updated>2010-03-21T19:25:20.839Z</updated><title type='text'>Freeline skates... feasible for transport?</title><content type='html'>After my bike was robbed &lt;i&gt;[smiley face indicating that I'm loudly shouting "cunt!"]&lt;/i&gt; in November or so, I figured I'd experiment with alternative forms of transport, hoping to find something more casual and less stealable (i.e. something I don't leave outside my house only locked to itself might be appropriate).&lt;br /&gt;&lt;br /&gt;Doing a bit of looking around online, I was intrigued by so-called &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Freeline_skates"&gt;"Freeline" skates&lt;/a&gt; (Wikipedia article appears a bit anaemic), which are very much like the old &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Snakeboard"&gt;snakeboard&lt;/a&gt;, albeit without the connecting bar between the two plates. To propel yourself forward, rather than kicking off the floor like with skateboards and inline skates, you use your hips, legs, shoulders, arms and whatever you can to swing your body weight around and turn your feet so the skates follow a kind of S-curve.&lt;br /&gt;It's called "non-holonomic motion" and I found it very difficult to understand via textual descriptions which were far superior to this one, so basically you just have to try it until you get the knack, which took me quite a while on the Freelines.&lt;br /&gt;So I picked up a pair on eBay around Christmas (very expensive too, ended up around €110 delivered from the UK).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dqID2FidOWo/S6ZtE8DiBUI/AAAAAAAAAGM/-bcV-Vpqg1g/s1600-h/freelines-wheels.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://2.bp.blogspot.com/_dqID2FidOWo/S6ZtE8DiBUI/AAAAAAAAAGM/-bcV-Vpqg1g/s400/freelines-wheels.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5451164330586408258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S6ZtEUKRVsI/AAAAAAAAAGE/Ud5A7AFTTeY/s1600-h/freelines-top.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 201px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S6ZtEUKRVsI/AAAAAAAAAGE/Ud5A7AFTTeY/s400/freelines-top.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5451164319877256898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The initial hurdles&lt;/h3&gt;&lt;br /&gt;1. &lt;i&gt;Standing on the skates without doing the splits.&lt;/i&gt; As you stand on the skates, the axis of movement is just off horizontal so the skates want to slide out to your left and right and you accidentally do Jean-Claude Van Damme sidesplits. Most people, including myself, can't really do that without our legs falling off and exploding, so you quickly learn to control the relative position of the skates with your inner thigh muscles.&lt;br /&gt;&lt;br /&gt;2. &lt;i&gt;Rolling across the room with losing your balance.&lt;/i&gt; This is presumably the same with any kind of skates/skateboard, but exacerbated by the fact that these behave in a slightly more unexpected way due to the wheels being angled slightly differently: there is a distinct left skate and right skate, so when they're side by side the wheels make a shallow V-shape. Getting used to this means rolling back and forth on flat ground by a railing or low wall so you can pull/push yourself and keep steady with your arms, until eventually you can coast a few metres unaided. Or get a friend to hold one hand and walk back and forth, but that's limited by their patience since it can take a long time.&lt;br /&gt;&lt;br /&gt;3. &lt;i&gt;Launching from stop without pushing against a wall.&lt;/i&gt; It's difficult to even stand still on the skates - a little bit like on a bicycle. Sometimes you see bicycle couriers with gearless bikes and no freewheeling clutch, stopped at a traffic light (yes, many bicycle couriers actually stop at lights :D) and very slowly inching forwards and backwards on the spot rather than putting their foot down. You can do a similar trick with these by angling your feet into a T-shape, but it takes practice, and actually pushing off from that position to get moving is even more difficult (I tried it about ten times and succeeded once, and awkwardly at that).&lt;br /&gt;&lt;br /&gt;Normally, to push off moving from right to left, you put both skates in front of you, then knock the right skate over away from you and step onto it so your toes are also touching the floor. Then you put your weight on those toes and place your left foot on its skate, and push in that direction (without extending too far or your right foot will fall off the skate), pulling the right skate upright with your foot as some of your weight moves onto the left skate.&lt;br /&gt;&lt;br /&gt;4. &lt;i&gt;Propelling yourself!&lt;/i&gt; After all the other challenges, this one is pretty easy, to begin with anyway. Your feet will probably start to do this automatically in step 2, when you're just trying to roll without falling. Essentially, as one foot is moving in an upwards curve, pushing it forward will increase your speed, and similarly when it's on downwards curve.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Then what?&lt;/h3&gt;&lt;br /&gt;Well, I only got them to replace my bike, so all the tricks people do with them (mostly pirouettes, riding on one foot and dropping/stomping the second skate, switching etc) are not really relevant. If I ever get supremely good at riding the things, maybe I'll experiment a bit.&lt;br /&gt;&lt;br /&gt;Mostly, I want to find out if I can travel any kind of significant distance on them, somewhere between walking and cycling speed. A measly 8km/h for 4km (the distance between my house and DCU) would suit me just fine, but so far I have to stop riding after about 1km (about 10 minutes) because I get pains in the following places: the middle of the soles of my feet, my calf muscles, my instep. By then my thighs basically just run out of energy and I start moving more and more slowly and my form gets sloppy.&lt;br /&gt;&lt;br /&gt;I don't know if this is poor general fitness (I'm a lazy, lazy man who likes sitting on his arse with a laptop or playing PS2 for hours on end), or specific muscle conditioning that needs to happen for everyone, or if I'm literally physically incapable of adapting to the skates for longer periods, or even if the skates are just not suited for that kind of travel, especially over the &lt;i&gt;crap, laughable pavement conditions&lt;/i&gt; we have here in Dublin (stupid 1 inch deep, 3 inch wide drainage channels between every few houses, cracks and bumps everywhere, corrugated concrete driveways which make skates trundle and vibrate like a broken shopping cart).&lt;br /&gt;&lt;br /&gt;That said, if you're going at a reasonable speed you can get over small cracks and drains by leaning slightly onto your back foot - that way the front skate can bounce past the obstacle and even if it gets caught and stops dead, you just hop off since they're not tied to your feet. If your front skate gets caught and most of your weight is on that foot, your balance can be thrown off badly.&lt;br /&gt;And I've seen a couple of videos on Youtube which suggest that people can and do cover more significant distances on them - about &lt;a href="http://www.youtube.com/watch#!v=C-rsvC2oxco"&gt;34km  in this one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One recent change that's working much better for me is focusing more on my back foot to push myself forward, rather than trying to drag myself with the front foot which causes it to slip out of position and seems to tire me out. Maybe it's just more efficient for the way I happen to distribute my weight on the skates. Who knows. Even if it turns out to be a complete failure, it'll be a fun failure!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3462958203083981391?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3462958203083981391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3462958203083981391' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3462958203083981391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3462958203083981391'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/freeline-skates-feasible-for-transport.html' title='Freeline skates... feasible for transport?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_dqID2FidOWo/S6ZtE8DiBUI/AAAAAAAAAGM/-bcV-Vpqg1g/s72-c/freelines-wheels.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7424283727957706517</id><published>2010-03-20T03:28:00.001Z</published><updated>2010-03-20T03:28:56.111Z</updated><title type='text'>Snappy?</title><content type='html'>&lt;i&gt;(trying to reassure scared 2-year old daughter at 3am)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Me:&lt;/b&gt; Ok, if there's a monster there, just give it a kick.&lt;br /&gt;&lt;b&gt;Aela:&lt;/b&gt; How 'bout YOU kick monster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7424283727957706517?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7424283727957706517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7424283727957706517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7424283727957706517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7424283727957706517'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/snappy.html' title='Snappy?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7701360536788205704</id><published>2010-03-16T17:28:00.004Z</published><updated>2010-03-16T17:34:35.851Z</updated><title type='text'>Irish wit</title><content type='html'>Saw this today and had to save it... classic lowbrow humour, Dublin-style!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dqID2FidOWo/S5_ABag1mkI/AAAAAAAAAF8/BRhYrIpZsEw/s1600-h/funnai.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 307px;" src="http://4.bp.blogspot.com/_dqID2FidOWo/S5_ABag1mkI/AAAAAAAAAF8/BRhYrIpZsEw/s400/funnai.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5449285204671044162" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7701360536788205704?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7701360536788205704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7701360536788205704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7701360536788205704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7701360536788205704'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/03/irish-wit.html' title='Irish wit'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dqID2FidOWo/S5_ABag1mkI/AAAAAAAAAF8/BRhYrIpZsEw/s72-c/funnai.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1989368886383038246</id><published>2010-02-27T14:24:00.003Z</published><updated>2010-02-27T15:07:43.276Z</updated><title type='text'>Stage Irish in "Murder, She Wrote: The Celtic Riddle"</title><content type='html'>Just watched "Murder, She Wrote: The Celtic Riddle", set in Ireland. I've seen worse imitations of Ireland by American films and TV (notably an episode of the old Mission Impossible where people were terrified of a fake banshee and the carriage of death or something, jeeeeez that was pathetic), but still, it seems at least 75% of the 'Irish' cast were not only American, they seemed to have spent less than 10 minutes practicing their Irish accents... the better ones manage to mix some kind of Irish accent in with English, Scottish and a bit of a Russian twinge. The worse ones (e.g. the spiky-haired mechanic modelling his look after Johnny Rotten who sounds more Scandinavian than anything, and the blonde male cop) make a complete bollox of it, or just give up completely. I guess almost all the dialogue scenes were filmed in the States? Otherwise there's really no excuse for hiring Americans with bad stage Irish accents to play Irish characters - if it was filmed in Ireland, why would you ship American actors over to do a crappy job?&lt;br /&gt;&lt;br /&gt;Can you imagine an Irish film crew flying to the USA and bringing Irish actors over to play Americans, with horrible cheesy accents that don't convince anyone?&lt;br /&gt;&lt;br /&gt;Apart from the actors, there are cars you don't see here (e.g. Chevrolet police cars or the big Ford van which tries to drive someone off the road) and obviously fake number plates (with non-existent county codes)... which is to be expected I guess. Plenty of modern films and TV series simply do without number plates altogether (Fringe, IIRC), which kind of spoils the realism IMO.&lt;br /&gt;&lt;br /&gt;Some stupid &lt;a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/DidNotDoTheResearch"&gt;did not do the research&lt;/a&gt; mistakes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Who... WHO refers to the Irish language as "the Gaelic language"? Christ on a bike, do some research!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The same supposedly Irish character also failed to recognise Ogham script (which is fairly distinctive) but then later seemed to know about its history... which is it - does she know about it or not? Be consistent, damnit!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A letterhead addressed to "Dublin BT238479, Ireland" or similar - Ireland is &lt;i&gt;not in the UK&lt;/i&gt; and we don't use UK postcodes!! &lt;b&gt;WTF&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Other than that, it was basically an extra-long episode of Murder She Wrote. It kind of petered out a bit, perhaps because I was getting distracted by the silly errors, or perhaps the 45-minute format worked better for the series?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1989368886383038246?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1989368886383038246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1989368886383038246' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1989368886383038246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1989368886383038246'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/02/stage-irish-in-murder-she-wrote-celtic.html' title='Stage Irish in &quot;Murder, She Wrote: The Celtic Riddle&quot;'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4382443701308420234</id><published>2010-02-27T00:19:00.022Z</published><updated>2011-12-02T16:18:10.304Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='cvt car micra electromagnetic clutch brushes'/><title type='text'>Replacing the electromagnetic clutch brushes on a Micra CVT</title><content type='html'>Soon after buying my first automatic transmission car, a ten year old Nissan Micra (K11) with the CVT gearbox, I found that the carbon brushes which supply power to the electromagnetic clutch tend to wear down.&lt;br /&gt;&lt;br /&gt;The clutch operates (as far as my limited understanding goes) by passing a current through some kind of magnetic powder (maybe just iron filings? Anyone know what this is?) which fills the gap between the driving (engine-side) and driven (gearbox/wheels side) plates. When the engine is at idle, no (or very little) current is passed through the powder so the engine spins without transferring force to the driven side.&lt;br /&gt;&lt;br /&gt;As you hit the throttle and engine speed increases, the current passed through the powder is raised and the powder becomes magnetised, sticking together more strongly and transferring more of the rotational force from the engine to the wheels.&lt;br /&gt;&lt;br /&gt;The electrical current is supplied by a pair of carbon brushes which rest against turning discs (I think they're called slip rings, which just slot onto a splined axle), since you can't just stick a wire into something that's constantly spinning. After a while, both the brushes and the slip rings start to wear down - hopefully the brushes more and the rings less, since the brushes are easy to replace while the slip rings are probably almost impossible (i.e. cheaper to buy a new car than to get the clutch out, open it up, replace a part, put it back together and re-install it in the car, argh). When the brushes wear down, springs in the brush holder push them further out until a certain limit, they either lose contact completely or periodically slip out of contact briefly, triggering the "N-CVT" warning light on the dashboard. As they wear out of reach of the clutch wheel/slip disc arcing can occur which is apparently a bad thing, too.&lt;br /&gt;&lt;br /&gt;So anyway, my Micra had started to get sluggish, needing more revs than before, and I figured it might be the clutch brushes. I checked the web for similar problems and solutions and found a LOT of problems and NO solution other than buy a new brush holder/new gearbox/new car.&lt;br /&gt;&lt;br /&gt;Nissan refused to talk to me on the phone, telling me to call local dealers instead. Two separate dealers quoted me a laughable €218 for the whole brush holder assembly, which is apparently all they will give you short of an entire new clutch (again, more than the cost of the car).&lt;br /&gt;&lt;br /&gt;This seemed a lot of money when it was just the carbon brushes which had worn down. So I took the brush holder assembly out anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Where is it?&lt;/span&gt; Here:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S4h2bUmfUDI/AAAAAAAAAFM/AtzO86SCT4k/s1600-h/where-is-it-2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S4h2bUmfUDI/AAAAAAAAAFM/AtzO86SCT4k/s400/where-is-it-2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442730361435934770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can disconnect the power plug by pressing a tab on the left side of the upper half and pulling it upwards. Blurry closeup of power socket:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dqID2FidOWo/S4h3PG4nKPI/AAAAAAAAAFU/jzZRtLsQY_U/s1600-h/power-plug.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_dqID2FidOWo/S4h3PG4nKPI/AAAAAAAAAFU/jzZRtLsQY_U/s400/power-plug.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442731251107047666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The hole down into the clutch after removing the brush holder. Looks... not so great:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dqID2FidOWo/S4h3oVoS3SI/AAAAAAAAAFc/vR2H6aJCMAQ/s1600-h/inside-the-slot.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="http://2.bp.blogspot.com/_dqID2FidOWo/S4h3oVoS3SI/AAAAAAAAAFc/vR2H6aJCMAQ/s400/inside-the-slot.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442731684561870114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the brush holder after removal:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dqID2FidOWo/S4hy49rGFcI/AAAAAAAAAE0/8Ml8kyseuXU/s1600-h/knackered.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 354px;" src="http://4.bp.blogspot.com/_dqID2FidOWo/S4hy49rGFcI/AAAAAAAAAE0/8Ml8kyseuXU/s400/knackered.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442726472630801858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Knackered. Right down to a stub on the engine-side brush and while not so bad on the driven side, the spring was jammed up with cruddy carbon deposits and failing to push the brush out to maintain contact with the slip ring.&lt;br /&gt;&lt;br /&gt;So I disassembled and cleaned it (on the left is another brush from a mk3 Ford Fiesta's broken alternator... similar!):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S4hzdoGChJI/AAAAAAAAAE8/PfrKgi3_fd0/s1600-h/disassembled-holder.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 305px; height: 400px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S4hzdoGChJI/AAAAAAAAAE8/PfrKgi3_fd0/s400/disassembled-holder.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442727102493394066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The brushes looked so similar to what you'd find in an alternator, serving the same purpose anyway, that I went to a shop ("Electro Maintenance" in Baldoyle) to find something suitable. A guy came out of the back room and took the disassembled holder away before coming back with some Delco alternator brushes, for which he charged a pretty reasonable €7. He also suggested that I snip off the old brushes, leaving just the bit of wire that was somehow attached to the metal mount, and then solder the copper wire of the new brush on top of that. Before doing this, we threaded the old black plastic insulation piece onto the wire, fed the spring through and cut off the excess wire (to stop the brush from falling out the end of the holder!).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S4h1_GV0r5I/AAAAAAAAAFE/DWwO05wQxWo/s1600-h/new-brushes.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 346px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S4h1_GV0r5I/AAAAAAAAAFE/DWwO05wQxWo/s400/new-brushes.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442729876571598738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Soldering the new wire onto the bit of old wire (no idea how the old wire is attached to the metal so nicely but still conducting current):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S4h4QLakCrI/AAAAAAAAAFk/80LdgWfa8Tc/s1600-h/soldering.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S4h4QLakCrI/AAAAAAAAAFk/80LdgWfa8Tc/s400/soldering.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442732369014688434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And reassembled after soldering:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S4h4iOyIVoI/AAAAAAAAAFs/5V3AJyPSgcI/s1600-h/finished.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 349px; height: 269px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S4h4iOyIVoI/AAAAAAAAAFs/5V3AJyPSgcI/s400/finished.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442732679156487810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dqID2FidOWo/S4h4nNjkh_I/AAAAAAAAAF0/UxpDa3wpeg8/s1600-h/finished-brushes.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_dqID2FidOWo/S4h4nNjkh_I/AAAAAAAAAF0/UxpDa3wpeg8/s400/finished-brushes.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5442732764726331378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note the slight slant in the brush faces where they contact the clutch wheel/slip rings - the longer edge is on the bottom and the shorter edge on the top (where the power socket is pointing). This is what the wear pattern in the old brushes looked like, so I oriented the new ones in the same way (if I'd bought brushes without a slanted edge, I might have used sandpaper or emery cloth to file one in, since it probably helps them fit into the clutch properly).&lt;br /&gt;&lt;br /&gt;Also, if you have a multimeter, check the continuity from pin to brush for both pairs. Each pin should form a circuit to the brush on the same side.&lt;br /&gt;&lt;br /&gt;After installing the brush holder (much easier than removing it, bizarrely - it took about 5 minutes of gently sliding it around and twisting to get it out, after removing the battery and its tray&lt;b&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;/b&gt; and moving a relay box out of the way), I sat in the car and gingerly started the engine. It fired up, and I listened for any horrible scraping noises and watched the N-CVT lamp on the dashboard, which didn't light up. Knocked off the engine and did a self-test of the gearbox (put it in D, ignition on but don't start engine, brake on, accelerator on, cycle Ds-D-N-R-P, accelerator off, brake off, start engine) which reported okayness (N-CVT indicator flashes one long, then seven short and repeats).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;sup&gt;*&lt;/sup&gt; Note: I recently checked the brushes again and was able to get the holder out without removing the battery or its tray. If you have the right screwdriver or a ratchet with screwdriver bit, you can get it out in less than 10 mins! I did have to lie under the car and ask my SO to hold the ratchet end in place though.&lt;br/&gt;&lt;br/&gt;&lt;/b&gt;&lt;/i&gt;I carefully reversed and turned from the cramped shed into the cramped laneway and drove home. Feels a bit more responsive so far but I was literally a 2 minute drive from my house so no chance to get it up to speed.&lt;br /&gt;&lt;br /&gt;Hopefully the fix is ok and won't trash the clutch or wear down within 2 weeks - time will tell. (It'd be pretty funny if it completely failed within a couple of days :/)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Replacement from Nissan: €218&lt;br /&gt;DIY hack job with alternator brushes: €7 + time (one hour if you're smart, 4 hours messing about if you're me).&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps anyone in the same boat!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 26/10/2011: it worked fine for over a year and a half, until...&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;...Until I stupidly drove through at least a foot of water in a flood on Monday (yeah, who'd have thought it might rain in Ireland). This seemed to short out the coil and some kind of safety interlock started switching it off despite my repeated attempts to stop and restart it. Eventually after an hour or so hanging around near where I'd parked the dying car, it managed to get going again, albeit warning me that the clutch's coil circuit was shorting (IIRC, the fourth flash during the self-test mentioned above).&lt;br/&gt;&lt;br/&gt;If I'm lucky, either the brushes have simply worn down, or a bit of trapped water is occasionally making a short in the connector. If not, water may have leaked into the clutch and contaminated the powder or something, I don't know. That hole is near the bottom of the engine, so for all I know the bell housing has a pool of water in it, bathing the clutch and promising rust or some other disaster.&lt;br/&gt;I wonder if it's the same type of clutch used in the older Subaru Justy - it looks like they can &lt;a href="http://subarujusty.proboards.com/index.cgi?board=trouble&amp;action=display&amp;thread=2868"&gt;lose their powder&lt;/a&gt;, which would not be good.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;30/10/2011&lt;/b&gt;&lt;br/&gt;Finally got round to removing it, which just took a couple of minutes this time - amazing how much easier some jobs are in direct sunlight rather than in a dark garage. Last time I removed the battery and its tray and pulled a bunch of stuff out of the way, needlessly. Turned out the brushes were hardly worn at all, but they were very wet. When I replaced them last year, the generic alternator brushes may have been slightly too long for the available space, and I was afraid to break something so didn't tighten the brush holder's bolts nearly enough, leaving a gap large enough fo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4382443701308420234?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4382443701308420234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4382443701308420234' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4382443701308420234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4382443701308420234'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/02/replacing-electromagnetic-clutch.html' title='Replacing the electromagnetic clutch brushes on a Micra CVT'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dqID2FidOWo/S4h2bUmfUDI/AAAAAAAAAFM/AtzO86SCT4k/s72-c/where-is-it-2.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3568859405061475367</id><published>2010-02-12T13:30:00.005Z</published><updated>2010-03-20T03:31:16.313Z</updated><title type='text'>What is the proposer's occupation?</title><content type='html'>Looking up insurance quotes on a few different sites, I found a funny form on Britton Insurance's website, which asks among other things, "What is the proposer's occupation?".&lt;br /&gt;&lt;br /&gt;The choice available is quite amazing - here are some examples:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Bacon Curer, Baggage Handler, Bailiff, Baker, Bakery Assistant, Bakery Manager, Bakery Operative, Balloonist, ... Skipper, Slater, Smallholder, ... Stock Controller, Stock Manager, Stockman, Stocktaker, Stockbroker, Stone Cutter, Stone Sawyer, Stonemason, ... Sub-postmistress, ... Tachograph Analyst, Tacker, Tailor, Tank Farm Operative &lt;i&gt;(WTF?)&lt;/i&gt;, Tanker Driver, Tanner, Tarmaccer, Tarot Reader/Palmistry Expert&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'd like to put down balloonist, but it would be a wishful lie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3568859405061475367?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3568859405061475367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3568859405061475367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3568859405061475367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3568859405061475367'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/02/what-is-proposers-occupation.html' title='What is the proposer&apos;s occupation?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2400979330497826483</id><published>2010-02-06T14:12:00.003Z</published><updated>2010-02-06T14:26:13.033Z</updated><title type='text'>Sign language on kids' TV</title><content type='html'>There's an episode on CBBC of "Lazytown", a kids' show from Iceland of the "eating fruit and getting enough sleep gives me the energy to be a muscular annoying man!" variety. BBC have a woman (uncredited) overlayed like a subtitles track, only she's conveying the speech and sounds with sign language.&lt;br /&gt;&lt;br /&gt;The interesting thing is it appears to have been done entirely in one take - I haven't been watching all the time, but had my eye on it for about half the programme and didn't notice any fadeouts/cuts. Signing a whole episode of a somewhat hyperactive children's show in one go, conveying the tone of voice with body language and doing a couple of songs on the way - that is &lt;span style="font-style:italic;"&gt;damn&lt;/span&gt; impressive!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2400979330497826483?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2400979330497826483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2400979330497826483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2400979330497826483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2400979330497826483'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/02/sign-language-on-tv.html' title='Sign language on kids&apos; TV'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1044923079024403205</id><published>2010-02-02T16:17:00.003Z</published><updated>2010-02-02T16:27:34.981Z</updated><title type='text'>Toyota/Lexus stuck accelerator crash</title><content type='html'>Saw &lt;a href="http://www.nytimes.com/2010/02/01/business/01toyota.html?em"&gt;this article&lt;/a&gt; about an extremely dangerous suddenly-stuck-on-accelerator problem in the Lexus ES 350. The awful headlined crash in the USA involved a driver realising his accelerator was stuck on and the car speeding out of control toward a busy intersection, so he called 911 and prayed that they would be ok, which they weren't.&lt;br /&gt;&lt;br /&gt;This is tragic, but surely in this situation, you would try the following things:&lt;br /&gt;&lt;br /&gt;1. Knock it into neutral/reverse&lt;br /&gt;2. Handbrake&lt;br /&gt;3. Stamp on the footbrake anyway, maybe it actually does work&lt;br /&gt;4. &lt;i&gt;TURN THE ENGINE OFF&lt;/i&gt; so it doesn't keep accelerating at least&lt;br /&gt;&lt;br /&gt;Rather than these things:&lt;br /&gt;&lt;br /&gt;1. Call the police and expect them to somehow help&lt;br /&gt;2. Pray&lt;br /&gt;3. Nothing else&lt;br /&gt;&lt;br /&gt;Certainly, Toyota/Lexus is at fault for allowing a car out to market with a severe and dangerous problem which was reported and dismissed many times, but that doesn't help this guy and the other three people who died in the crash - &lt;i&gt;surely&lt;/i&gt; there was a better option to avert or mitigate a high-speed collision than dialling 911 and praying that everything would be ok. The fact that the driver was an off-duty &lt;i&gt;highway patrol officer&lt;/i&gt; just makes the outcome even more incomprehensible.&lt;br /&gt;&lt;br /&gt;Why didn't they knock it out of gear and/or turn off the engine? &lt;i&gt;How is calling 911 going to help avert a crash that is seconds away?&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1044923079024403205?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1044923079024403205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1044923079024403205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1044923079024403205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1044923079024403205'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/02/toyotalexus-stuck-accelerator-crash.html' title='Toyota/Lexus stuck accelerator crash'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7967487852190787314</id><published>2010-01-17T16:23:00.003Z</published><updated>2010-01-17T16:28:50.728Z</updated><title type='text'>installing rsdl on OS X i386 via rubygems</title><content type='html'>I was getting this problem trying to install rsdl, a wrapper program for ruby which initialises SDL/Cocoa:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Jehannum:SDL-1.2.14 oisin$ sudo gem install rsdl&lt;br /&gt;Building native extensions.  This could take a while...&lt;br /&gt;ERROR:  Error installing rsdl:&lt;br /&gt; ERROR: Failed to build gem native extension.&lt;br /&gt;&lt;br /&gt;/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb&lt;br /&gt;checking for ruby_sysinit()... no&lt;br /&gt;checking for ruby_run_node()... no&lt;br /&gt;creating Makefile&lt;br /&gt;creating rsdl.c&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;gcc -arch ppc -arch i386 -Os -pipe -fno-common -I"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0" -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_THREAD_SAFE -c rsdl.c&lt;br /&gt;gcc rsdl.o -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib  -L. -arch ppc -arch i386  -lruby -lpthread -ldl -lm  -L/usr/local/lib -lSDLmain -lSDL -Wl,-framework,Cocoa -o rsdl&lt;br /&gt;ld: warning in /usr/local/lib/libSDLmain.a, file is not of required architecture&lt;br /&gt;ld: warning in /usr/local/lib/libSDL.dylib, file is not of required architecture&lt;br /&gt;Undefined symbols for architecture ppc:&lt;br /&gt;  "_main", referenced from:&lt;br /&gt;      start in crt1.10.5.o&lt;br /&gt;ld: symbol(s) not found for architecture ppc&lt;br /&gt;collect2: ld returned 1 exit status&lt;br /&gt;lipo: can't open input file: /var/tmp//ccEkUyfQ.out (No such file or directory)&lt;br /&gt;make: *** [rsdl] Error 1&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The solution was to add an ARCHFLAGS environment variable which stops it trying to build a ppc version:&lt;br /&gt;&lt;blockquote&gt;Jehannum:SDL-1.2.14 oisin$ sudo env ARCHFLAGS='-arch i386' gem install rsdl&lt;br /&gt;Building native extensions.  This could take a while...&lt;br /&gt;Successfully installed rsdl-0.1.2&lt;br /&gt;1 gem installed&lt;br /&gt;Installing ri documentation for rsdl-0.1.2...&lt;br /&gt;File not found: lib&lt;/blockquote&gt;&lt;br /&gt;The "File not found" message at the end doesn't seem to matter.&lt;br /&gt;&lt;br /&gt;It's handy that SDL, SDL_image and SDL_gfx seem to build and install the UNIX way (./configure &amp;&amp; make &amp;&amp; sudo make install) with no problems - at first I was worried by the lack of a .pkg installer for SDL but it seems to work fine so far. Cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7967487852190787314?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7967487852190787314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7967487852190787314' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7967487852190787314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7967487852190787314'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/01/installing-rsdl-on-os-x-i386-via.html' title='installing rsdl on OS X i386 via rubygems'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6138562796788913496</id><published>2010-01-12T09:17:00.002Z</published><updated>2010-01-12T09:33:51.225Z</updated><title type='text'>Schneier: "Stop the Panic on Air Security"</title><content type='html'>A &lt;a href="http://www.schneier.com/essay-304.html"&gt;good article&lt;/a&gt; by Bruce Schneier on the tendency for overreaction to dramatic and rare events, such as hijackings and attempted underwear bombings, while ignoring far more common dangers which don't make the news headlines.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;We're doing these things even though this particular plot was chosen precisely because we weren't screening for it; future al Qaeda attacks rarely look like past attacks; and the terrorist threat is far broader than attacks against airplanes. &lt;br /&gt;&lt;br /&gt;We're doing these things even though airplane terrorism is incredibly rare, the risk is no greater today than it was in previous decades, the taxi to the airport is still more dangerous than the flight, and ten times as many Americans are killed by lightning as by terrorists.&lt;br /&gt;...&lt;br /&gt;We can see the effects of this all the time. We fear being murdered, kidnapped, raped and assaulted by strangers, when it's far more likely that the perpetrator of such offenses is a relative or a friend. We fear school shootings, even though a school is almost always the safest place a child can be. We worry about shark attacks instead of fatal dog or pig attacks -- both far more common. In the U.S., over 38,000 people die each year in car crashes; that's as many deaths as 9/11 each and every month, year after year.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Nothing he hasn't really said before, but well stated and all the more significant these days, given the hilarious ban on &lt;i&gt;liquids&lt;/i&gt; and the &lt;a href="http://www.syracuse.com/news/index.ssf/2010/01/chinese_doctoral_student_arres.html"&gt;ridiculous fiasco&lt;/a&gt; of Newark Airport being temporarily shut down and causing hours of delays because an innocent Chinese student crossed a laughable rope barrier to give his girlfriend a goodbye kiss.&lt;br /&gt;Of course, instead of admitting that security was basically a joke (on the one hand, you're made to take off your shoes, be frisked, have your luggage X-rayed and possibly have someone examine your bits in a full-body scanner, then you enter the 'secure' area which is separated from the 'insecure' area by a cinema-waiting-line rope) and that they overreacted badly, New Jersey Sen. Frank Lautenberg stated that "what he did was a terrible injustice" to the thousands of people who were inconvenienced. Even though it was what airport security did that caused the inconvenience...&lt;br /&gt;&lt;br /&gt;Let's stop the panic!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6138562796788913496?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6138562796788913496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6138562796788913496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6138562796788913496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6138562796788913496'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/01/schneier-stop-panic-on-air-security.html' title='Schneier: &quot;Stop the Panic on Air Security&quot;'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2914578459263553166</id><published>2010-01-07T16:32:00.007Z</published><updated>2010-01-07T17:02:31.036Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='gammu'/><title type='text'>No Nokia PC Suite on the Mac? Try Gammu!</title><content type='html'>With almost every mobile device I've had, the amount of freedom to run arbitrary software (especially software you've written yourself) has been low. Obviously needlessly low, too.&lt;br /&gt;I once bought a USB datacable for my old Sagem X-5 to upload ringtones and Java programs without having to upload them to a webserver and download them with the Sagem over WAP/GPRS. I got ringtones working, but it turned out that it was &lt;i&gt;impossible&lt;/i&gt; to upload Java programs over the cable.&lt;br /&gt;Why? Well, there's no apparent technical reason for it - but it works out in the operator's favour, forcing you to download (from yourself) over their very expensive data service - at that time, it cost €0.02 per &lt;b&gt;kilobyte&lt;/b&gt; with Meteor, which works out at €20.48 per megabyte, a shocking waste of money!&lt;br /&gt;&lt;br /&gt;Similarly, when I bought my Nokia 6230i back in 2006, I soon discovered that while it could download Java applications with no problem, it was &lt;i&gt;impossible&lt;/i&gt; to install them via its MMC card. The JAR/JAD would appear in its filesystem browser, but it would declare it an "unrecognised format".&lt;br /&gt;Nokia did, however, release a package called the Nokia PC Suite, which was a reasonably comprehensive tool for doing lots of different things with the phone, including the installing of Java programs. And it worked via data cable and Bluetooth. Great!&lt;br /&gt;&lt;br /&gt;Except that now, I don't have a Windows PC (at least, one with Bluetooth or a data cable). And it only runs on Windows (surprise!). My Macbook has built-in Bluetooth and can send files via the built in utilities, but the same "unrecognised format" issue pops up.&lt;br /&gt;&lt;br /&gt;So that was the end of my frustrating search, until yesterday... enter &lt;a href="http://wammu.eu/gammu/"&gt;Gammu&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;This open-source program comes with a host of features for working with different types of phones, including my 6230i, and I was able to upload and install a Java application to the phone with Gammu over Bluetooth, finally!&lt;br /&gt;What's the catch? Well... Gammu itself is a command-line tool so installing a program looks like:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Jehannum:Downloads oisin$ gammu nokiaaddfile Application Bart1.4&lt;br /&gt;[snip debug warnings]&lt;br /&gt;Searching for phone folder: *********&lt;br /&gt;Information: Declared JAR file size is different than real. Fixed by Gammu.&lt;br /&gt;Adding "Bart" version  created by Bart&lt;br /&gt;Writing JAD file: 100 percent                              &lt;br /&gt;Writing JAR file: 100 percent&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And Gammu uses a textual configuration file - mine looks something like:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Jehannum:~ oisin$ cat .gammurc&lt;br /&gt;[gammu]&lt;br /&gt;&lt;br /&gt;port = 00:16:BC:xx:xx:xx&lt;br /&gt;model = 6230i&lt;br /&gt;connection = bluerfphonet&lt;br /&gt;synchronizetime = no&lt;br /&gt;logfile = /Users/oisin/gammu.log&lt;br /&gt;logformat = textall&lt;br /&gt;use_locking = no&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The port value can be found in Apple's "Bluetooth Explorer" in Devices-&gt;Show Device Discovery (cmd-D), under your phone's name (but replace the hyphens with colons).&lt;br /&gt;&lt;br /&gt;Also you have to build the program from source which requires installing CMake and MySQL, but these have automated installers which caused no brainache. Getting Bluetooth to work required a small fix to one of the build scripts, but this has since been fixed so the latest version should work out-of-box.&lt;br /&gt;&lt;br /&gt;So, if you have a Mac and a phone which requires Windows-only software to install applications, try Gammu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;. o O ( Now if I could only find a simple way to upload programs of my choosing to my iPod Touch without having to jailbreak the thing or &lt;b&gt;pay Apple, again&lt;/b&gt; :/)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2914578459263553166?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2914578459263553166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2914578459263553166' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2914578459263553166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2914578459263553166'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2010/01/no-nokia-pc-suite-on-mac-try-gammu.html' title='No Nokia PC Suite on the Mac? Try Gammu!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4979701984661562826</id><published>2009-12-29T17:51:00.003Z</published><updated>2009-12-29T18:07:22.706Z</updated><title type='text'>Re: "China Blames Online Games for Drugs, Murder, Teen Pregnancy"</title><content type='html'>Reposting for posterity here a comment I made on &lt;a href="http://www.cio.com/article/511814/China_Blames_Online_Games_for_Drugs_Murder_Teen_Pregnancy"&gt;this article&lt;/a&gt; in response to some guy asking &lt;span style="font-style:italic;"&gt;"When did your children were listening to Chaikovskiy or Shopen LAST TIME?"&lt;/span&gt; - implying that it's a positive and appropriate step for China to dictate how the people should entertain themselves because of some cultural degeneration that has taken place in the Western world due to our poor choice in music, computer games or whatever else:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;@Kolyan:&lt;br /&gt;&lt;br /&gt;There would be no Tchaikovsky, Chopin, Scriabin, Dave Brubeck, Debussy, Yoko Kanno, Freddie Mercury or other clever and creative composers if governments decided and enforced what everybody should enjoy or create.&lt;br /&gt;&lt;br /&gt;People DID commit murders, take drugs, get pregnant as teens and of course, piss their lives away, long before the age of digital computers. There were stupid, psychotic and unwise people among us throughout history - if you want to improve that then improve the education system (rather than making it a soulless rat-race) and improve social conditions (not least, healthy freedom of speech).&lt;br /&gt;&lt;br /&gt;And re: family life being damaged - are you kidding? The internet has served to bring people closer together that may have otherwise grown apart. I chat to cousins, aunts and uncles on Facebook who live in other countries and who I might not otherwise see for years.&lt;br /&gt;&lt;br /&gt;Sure, people get sucked into rubbish games and waste their lives, but this is a fault of the person, not the games (or pornography or whatever you want to blame). Perhaps without the social outlet of gaming, some of these people would end up addicted to heroin or committing suicide - what good could banning online gaming really do? At least these people have some sense of community and friendship.&lt;br /&gt;&lt;br /&gt;China, stop micromanaging the people and trying to tell them how they should (or should not) entertain themselves. It's absolutely none of your business, and a very inappropriate step into personal liberties.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4979701984661562826?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4979701984661562826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4979701984661562826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4979701984661562826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4979701984661562826'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/12/re-china-blames-online-games-for-drugs.html' title='Re: &quot;China Blames Online Games for Drugs, Murder, Teen Pregnancy&quot;'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4712025661227829074</id><published>2009-12-07T23:49:00.002Z</published><updated>2009-12-07T23:52:16.982Z</updated><title type='text'>PicArt</title><content type='html'>This video forced me to leave the room and crouch in the kitchen, doubled up and crying with laughter, for about 3 minutes. Even thinking about it is threatening to set me off again...&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/p7jbP1_H9sA&amp;hl=en_US&amp;fs=1&amp;color1=0x2b405b&amp;color2=0x6b8ab6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/p7jbP1_H9sA&amp;hl=en_US&amp;fs=1&amp;color1=0x2b405b&amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4712025661227829074?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4712025661227829074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4712025661227829074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4712025661227829074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4712025661227829074'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/12/picart.html' title='PicArt'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2833849176369231916</id><published>2009-12-02T17:35:00.003Z</published><updated>2009-12-02T17:50:05.882Z</updated><title type='text'>Desk Topography</title><content type='html'>The general arrangement of my desk:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The z-axis (which passes through the gravitational centre of the earth) is ordered such that, on average, higher items are more recent. Papers at the bottom of the z-axis are sometimes partially chemically bonded with the desk. &lt;i&gt;(That is to say, new shit is randomly piled upon old shit which is stuck to an eight month-old coffee stain)&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Although the x-/y-axis positions of items are extremely noisy, there is a tendency for locality to correspond with the degree to which papers are topically related. &lt;i&gt;(This means that everything is scattered all over the place, except for things that I had piled together for some unknown reason some months ago)&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rubbish follows a Gaussian distribution from the central boundary of a disc 10cm from the keyboard and ending at arm's reach... &lt;i&gt;(This implies that the rubbish bin is slightly out of arm's reach and is thus underutilised)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2833849176369231916?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2833849176369231916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2833849176369231916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2833849176369231916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2833849176369231916'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/12/desk-topography.html' title='Desk Topography'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2197611786672493939</id><published>2009-11-23T23:26:00.002Z</published><updated>2009-11-23T23:34:27.457Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='python idle'/><title type='text'>IDLE &amp; Python 2.6 escaping mishap</title><content type='html'>Here's an odd one that can catch out a newbie (well, me, at least):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;x = '\x0'&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Do that in the interpreter and it'll tell you "ValueError: invalid \x escape"... put it in a source file and execute it with F5 and nothing will happen, other than focus switching to the interpreter window. No message, no nothing. Had to do a binary(ish) search, commenting out the whole program minus one print statement and checking that it runs, then commenting out about half the file and homing in on the buggy line that way - I was writing a unit test which checked that the output of a particular function was a zero byte (the most trivial case of about 12 tests).&lt;br /&gt;&lt;br /&gt;When you do it in the IDLE/Python 3.1 bundle, you get a notification as expected, but not in the 2.6 version for the Mac. Pity pygame doesn't work in Python 3 yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2197611786672493939?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2197611786672493939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2197611786672493939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2197611786672493939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2197611786672493939'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/11/idle-python-26-escaping-mishap.html' title='IDLE &amp; Python 2.6 escaping mishap'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1104476648772660754</id><published>2009-11-15T17:33:00.002Z</published><updated>2009-11-15T17:37:42.622Z</updated><title type='text'>Children as a hardware stress test</title><content type='html'>Phoned Medion because their data CD for this el cheapo car GPS system was just ejecting after ~10 seconds when I put it in my Macbook. The guy says "well it's not designed to run on Apple computers, we can't support them. You'll need to use a Windows machine."&lt;br /&gt;So I says "wtf do you mean? All the computer is for, is to transfer map files from the CD onto an SD card which goes in the device. If it's not running any software on the computer then why would it matter what operating system I had?" and that was pretty much where I lost him. Figured it was some kind of completely braindead and needless copy protection that failed on OS X machines and went looking for torrents... unsuccessfully.&lt;br /&gt;&lt;br /&gt;Then stuck in a DVD today and the same thing happened - doh! - just the disk getting pulled in, faint clicking for 10 seconds then the disk ejects. I tilt the laptop and hear something sliding about in the drive. Shit! Did some belt or mounting snap off?&lt;br /&gt;Checking prices on eBay for a new 'superdrive' - cheapest is about €45 with postage, not bad but ouch, and opening the machine to swap DVD drives is a slog.&lt;br /&gt;Maybe I can at least shake the broken object out of the drive and see if it's really screwed or maybe a fragment of a broken CD or something...&lt;br /&gt;Hold the laptop with the DVD slot facing the floor, tap gently for 20 seconds, poke around in the slot with a playing card and what comes out?&lt;br /&gt;&lt;br /&gt;A poxy 2c coin. Children FTWTF. Works now tho!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1104476648772660754?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1104476648772660754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1104476648772660754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1104476648772660754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1104476648772660754'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/11/children-as-hardware-stress-test.html' title='Children as a hardware stress test'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-484128973064942213</id><published>2009-11-08T13:03:00.003Z</published><updated>2009-11-08T13:07:43.161Z</updated><title type='text'>Funny Chinese expression of the [arbitrary time period]</title><content type='html'>&lt;br/&gt;显怀 (xiǎnhuái): To look pregnant / Obviously pregnant&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-484128973064942213?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/484128973064942213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=484128973064942213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/484128973064942213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/484128973064942213'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/11/funny-chinese-expression-of-arbitrary.html' title='Funny Chinese expression of the [arbitrary time period]'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5473345996221005607</id><published>2009-10-29T18:58:00.003Z</published><updated>2009-10-29T19:07:43.525Z</updated><title type='text'>An entertaining exchange between Irish Youtubers</title><content type='html'>In a &lt;a href="http://www.youtube.com/watch?v=bvEyWxZM_OM"&gt;video&lt;/a&gt; of a Garda car apparently being burnt out while the Gardaí were busy raiding a house in Limerick (I guess?), a heated and very entertaining exchange on the subject of dole spongers and caviar developed. This is the kind of ridiculous but witty banter that I'd miss if I left Ireland:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;font face='Arial'&gt;&lt;font color='blue'&gt;chris2009xx&lt;/font&gt; (2 weeks ago) &lt;font color='green'&gt;+3&lt;/font&gt; &lt;br /&gt;sound like traveller dole skangers, we have to pay for your dole which you use to buy hash then you have loads of children for the child benefit and retire at 15 and go into fas centres then when 18 comes you sponge the dole then have﻿ children and the trend continues. you scum get council houses and wreck them we pay for them to be done up then. then you claim footwear allowance and use the money to buy more hash, then we pay to feed you in prison, you even get free runners/trainer shoes there&lt;br /&gt;&lt;br /&gt;&lt;font color='blue'&gt;eiregc09&lt;/font&gt; (2 days ago) &lt;font color='green'&gt;+1&lt;/font&gt;&lt;br /&gt;and you know all about it dont ye while your sitting at home drinkin your glass of champaigne and eating your caviar you sound like a right fuckin guard thinkin your all posh ye fuckin ignorant stuck up cunt im not even from limerick and its none of your business anyway proctor do ye know who proctor is remember that fool out of police academy the﻿ film&lt;br /&gt;&lt;br /&gt;&lt;font color='blue'&gt;richieobrien1&lt;/font&gt; (2 weeks ago)&lt;br /&gt;u wouldnt want to be talking bout me..im working full time since i left school at 18..ive a good job﻿ too.. &lt;br /&gt;&lt;br /&gt;&lt;font color='blue'&gt;gobsiter&lt;/font&gt; (1 week ago) &lt;font color='green'&gt;+1&lt;/font&gt;&lt;br /&gt;dealing is not﻿ a job&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5473345996221005607?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5473345996221005607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5473345996221005607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5473345996221005607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5473345996221005607'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/10/entertaining-exchange-between-irish.html' title='An entertaining exchange between Irish Youtubers'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4988911479566203415</id><published>2009-10-20T15:17:00.002+01:00</published><updated>2009-10-20T15:20:08.928+01:00</updated><title type='text'>Nice latency</title><content type='html'>&lt;pre&gt;Tracing route to www.l.google.com [66.102.9.147]&lt;br /&gt;over a maximum of 30 hops:&lt;br /&gt;&lt;br /&gt;  1     1 ms    &lt;1 ms    &lt;1 ms  136.206.48.254&lt;br /&gt;  2     1 ms    &lt;1 ms    &lt;1 ms  136.206.13.254&lt;br /&gt;  3     2 ms     1 ms     1 ms  193.1.244.37&lt;br /&gt;  4     1 ms    10 ms     1 ms  inex.google.com [193.242.111.57]&lt;br /&gt;  5     1 ms     1 ms     1 ms  72.14.239.132&lt;br /&gt;  6     1 ms     1 ms     1 ms  72.14.232.235&lt;br /&gt;  7     3 ms     2 ms     2 ms  64.233.174.18&lt;br /&gt;  8     1 ms     2 ms     2 ms  lm-in-f147.1e100.net [66.102.9.147]&lt;br /&gt;&lt;br /&gt;Trace complete.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Pinging boards.ie [89.234.66.107] with 32 bytes of data:&lt;br /&gt;Reply from 89.234.66.107: bytes=32 time=3ms TTL=60&lt;br /&gt;Reply from 89.234.66.107: bytes=32 time=2ms TTL=60&lt;br /&gt;Reply from 89.234.66.107: bytes=32 time=3ms TTL=60&lt;br /&gt;Reply from 89.234.66.107: bytes=32 time=3ms TTL=60&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;...Ok, it makes no noticeable difference that latency is 20ms lower here than at home, but it looks cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4988911479566203415?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4988911479566203415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4988911479566203415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4988911479566203415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4988911479566203415'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/10/nice-latency.html' title='Nice latency'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5216159669697780689</id><published>2009-09-09T00:31:00.002+01:00</published><updated>2009-09-09T00:43:45.238+01:00</updated><title type='text'>Speed reading: can we significantly increase reading rate without losing comprehension?</title><content type='html'>&lt;a href="http://www.learningassistance.com/2007/november/readingrate.html"&gt;No.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is no quick fix, according to current scientific evidence. The popular techniques suggested by speed reading books (e.g. elimination of subvocalisation, avoiding regressions or "back-skipping" by force of will or by hiding "already read" words with card, trying to take in more words per fixation and reducing the number of fixations) &lt;i&gt;all&lt;/i&gt; do more harm than good, either reducing comprehension, reading rate or both.&lt;br /&gt;&lt;br /&gt;Important tip: look for peer-reviewed scientific studies on the subject before accepting the claims of commercial pseudo-scientific books. Also, study skills websites often don't do this, and can publish suggestions which are actually harmful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5216159669697780689?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5216159669697780689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5216159669697780689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5216159669697780689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5216159669697780689'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/09/speed-reading-can-we-significantly.html' title='Speed reading: can we significantly increase reading rate without losing comprehension?'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5277330702488971161</id><published>2009-08-28T01:44:00.003+01:00</published><updated>2009-08-28T02:26:52.969+01:00</updated><title type='text'>Three annoying things</title><content type='html'>1. TV advertisements that say things like "eliminates &lt;b&gt;up to&lt;/b&gt; 100% of dandruff flakes" or "up to 100% grey coverage" - typically ads for shampoo and the like.&lt;br /&gt;Like, I can defeat &lt;i&gt;up to 100%&lt;/i&gt; of ninjas by doing nothing, since "up to 100% of ninjas" means "&lt;i&gt;x&lt;/i&gt; ninjas, where &lt;i&gt;0 &lt;= x &lt;= the total number of ninjas&lt;/i&gt;". A building could be &lt;i&gt;up to 100%&lt;/i&gt; demolished by throwing a large rock at it, which is to say that it will be only very slightly damaged. Saying that a shampoo removes "up to" 100% of dandruff is saying nothing.&lt;br /&gt;&lt;i&gt;Stupid wishy-washy meaningless-statement-making assholes.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;2. People who stand at a pedestrian crossing but don't hit the button, presumably on the assumption that they will automatically get a green light and the button does nothing but tell them to wait for the scheduled light change which would have happened anyway (which is only sometimes the case).&lt;br /&gt;&lt;br /&gt;There are some crossroads where the pattern is like:&lt;br /&gt;&lt;b&gt;(A)&lt;/b&gt; west turning south cars only (and pedestrians crossing between NW/NE or NE/SE &lt;b&gt;if&lt;/b&gt; the button was hit in the previous &lt;b&gt;A&lt;/b&gt;, &lt;b&gt;B&lt;/b&gt; or &lt;b&gt;C&lt;/b&gt;),&lt;br /&gt;&lt;b&gt;(B)&lt;/b&gt; east and west cars only,&lt;br /&gt;&lt;b&gt;(C)&lt;/b&gt; north and south cars only.&lt;br /&gt;&lt;br /&gt;If a pedestrian hits the light switch on the northwest, northeast or southeast corner, then they can cross at the next &lt;b&gt;A&lt;/b&gt;.&lt;br /&gt;What happens about 20% of the time, is that one or two plonkers stand at one of the lights and wait until &lt;b&gt;A&lt;/b&gt;, upon which they still don't get a signal to cross because they never hit the button. Then they frown in confusion and eventually jaywalk at the next opportunity, cursing the system. Or you arrive at the crossing, mash the button and grimace at them, having watched them stand there like a muppet for about 30 seconds and miss the crossing timeslot.&lt;br /&gt;&lt;i&gt;Dumb. If you're standing in front of the button, just fucking hit it.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;3. People who cross a road and casually hit the button as they walk past, even though they're not going to wait for a crossing signal. Instead, cars and cyclists have to stop and wait uselessly for &lt;i&gt;nobody&lt;/i&gt; to cross, since the guy who hit the button is already out of sight, back on the pavement.&lt;br /&gt;&lt;i&gt;If you're going to just cross the road anyway, DON'T hit the fucking button!&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5277330702488971161?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5277330702488971161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5277330702488971161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5277330702488971161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5277330702488971161'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/08/three-annoying-things.html' title='Three annoying things'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8456166608233497792</id><published>2009-08-20T15:57:00.002+01:00</published><updated>2009-08-20T16:13:30.796+01:00</updated><title type='text'>Software patents: broad, stifling and unfair</title><content type='html'>&lt;span style="font-size:85%;"&gt;(posted &lt;a href="http://talkback.zdnet.com/5208-10532-0.html?forumID=1&amp;threadID=67820&amp;messageID=1298331"&gt;comment&lt;/a&gt; on ZDNet article "&lt;a href="http://blogs.zdnet.com/BTL/?p=22595"&gt;Examine the patent that made selling Microsoft Word a crime&lt;/a&gt;")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem with patenting processes or algorithms - not necessarily even in computer software - is that we end up with extremely broad or obvious patents whose sole purpose is to allow the patent holder to eventually sue large companies and get (obscenely) rich, and not to safeguard investment in new inventions and products as was originally intended.&lt;br /&gt;&lt;br /&gt;If you write a program using simple common sense and happen to "re-invent" something that's patented, that's a strong hint that the patent is too general or obvious.&lt;br /&gt;&lt;br /&gt;This is why we have ridiculous patents on "not having to click on a control for it to display dynamic content in a web browser" (Eolas), or "method of &lt;b&gt;swinging on a swing&lt;/b&gt;" (&lt;i&gt;United States Patent 6368227&lt;/i&gt;, which in itself should be evidence that the US patent system needs to be destroyed and rebuilt by people with an IQ above 30).&lt;br /&gt;&lt;br /&gt;What's next? &lt;i&gt;"A method of lifting heavy objects by using one's legs, not one's back"&lt;/i&gt;? Or, following Eolas's lead, &lt;i&gt;"not having to say 'abracadabra' and turn around three times before turning on a computer"&lt;/i&gt;?&lt;br /&gt;And how is $280m a reasonable amount of "damages", when i4i has produced &lt;b&gt;nothing&lt;/b&gt; that could be damaged? Where is their competing product which is suffering in the marketplace due to competition with the patent-infringing Office?&lt;br /&gt;&lt;br /&gt;And to those arguing that Microsoft/everyone should do their "due diligence" by researching patents, have you ever written a computer program? Can you really imagine searching for patents that might cover every single aspect of the code you're writing?&lt;br /&gt;Programmers produce code that solves the problems at hand. They &lt;b&gt;do not&lt;/b&gt; think "hmm, maybe what we need is to store some text separately to where the formatting information for that text is stored. That makes sense. &lt;i&gt;Better check if that is software-patented!&lt;/i&gt;"&lt;br /&gt;Imagine trying to speak to someone while having to look up every individual word you use to check that it's not in some arbitrary blacklist. It would be an unproductive nightmare.&lt;br /&gt;And on top of that, patent search is extremely difficult because they're often worded in an inconsistent, generic or confusing way.&lt;br /&gt;&lt;br /&gt;Software patents do nothing good for anybody other than patent trolls and lawyers. For everyone else in the world, they only hold back science and progress. Get rid of software patents in the US &lt;i&gt;now&lt;/i&gt;, and keep them out of the EU too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8456166608233497792?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8456166608233497792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8456166608233497792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8456166608233497792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8456166608233497792'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/08/software-patents-broad-stifling-and.html' title='Software patents: broad, stifling and unfair'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-5422020758552818231</id><published>2009-08-19T00:18:00.007+01:00</published><updated>2009-08-19T01:40:36.347+01:00</updated><title type='text'>OS X panics</title><content type='html'>A recent kernel panic on my Macbook looks quite familiar - I think it's been happening now and then since I got the machine in late 2007. This time, and probably most of the other times, it was showing video on Youtube, which suggests there might be a bug in the video driver (or err... the video card :/), but there's not much information to base a confident guess on.&lt;br /&gt;&lt;br /&gt;The crash report looks like:&lt;br /&gt;&lt;pre&gt;Tue Aug 18 17:58:36 2009&lt;br /&gt;panic(cpu 1 caller 0x00194B15): "pmap_flush_tlbs() timeout: "&lt;br /&gt;"cpu(s) failing to respond to interrupts, pmap=0x46c7ae0 cpus_to_respond=0x1"&lt;br /&gt;@/SourceCache/xnu/xnu-1228.12.14/osfmk/i386/pmap.c:4582&lt;br /&gt;Backtrace (CPU 1), Frame : Return Address (4 potential args on stack)&lt;br /&gt;0x343f3be8 : 0x12b4c6 (0x45ec20 0x343f3c1c 0x13355c 0x0) &lt;br /&gt;0x343f3c38 : 0x194b15 (0x465018 0x46c7ae0 0x1 0x195234) &lt;br /&gt;0x343f3ca8 : 0x197eb4 (0x46c7ae0 0x26b46000 0x0 0x0) &lt;br /&gt;0x343f3d88 : 0x16087d (0x46c7ae0 0x26b46000 0x0 0x71f9) &lt;br /&gt;0x343f3de8 : 0x163170 (0x1c67c40 0x46c7ae0 0x26b46000 0x0) &lt;br /&gt;0x343f3f58 : 0x1ab39c (0x4f7983c 0x26b46000 0x0 0x3) &lt;br /&gt;0x343f3fc8 : 0x1a15fd (0x68b8900 0x0 0x1a40b5 0x68b8900) &lt;br /&gt;No mapping exists for frame pointer&lt;br /&gt;Backtrace terminated-invalid frame pointer 0xbfff7e88&lt;br /&gt;&lt;br /&gt;BSD process name corresponding to current thread: firefox-bin&lt;br /&gt;&lt;br /&gt;Mac OS version:&lt;br /&gt;9J61&lt;br /&gt;&lt;br /&gt;Kernel version:&lt;br /&gt;Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009;&lt;br /&gt;root:xnu-1228.12.14~1/RELEASE_I386&lt;br /&gt;System model name: MacBook2,1 (Mac-F4208CAA)&lt;br /&gt;&lt;br /&gt;System uptime in nanoseconds: 810215756731744&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A quick Google turned up mostly useless assertions on forums like "it's probably a faulty logic board or memory stick - reboot into single user mode and run memtest". In my experience, when memory goes bad, it's much more impressive than an occasional (something like once every month or two) panic. Searching a bit more carefully, I turned up some kernel source code released by Apple (cool!):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.opensource.apple.com/source/xnu/xnu-1228/osfmk/i386/pmap.c"&gt;xnu-1228/osfmk/i386/pmap.c&lt;/a&gt; -&gt; pmap_flush_tlbs(...)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;if (cpus_to_signal) {&lt;br /&gt;  deadline = mach_absolute_time() + LockTimeOut;&lt;br /&gt;  /*&lt;br /&gt;   * Wait for those other cpus to acknowledge&lt;br /&gt;   */&lt;br /&gt;  for (cpu = 0, cpu_bit = 1; cpu &lt; real_ncpus; cpu++, cpu_bit &lt;&lt;= 1) {&lt;br /&gt;   while ((cpus_to_signal &amp; cpu_bit) != 0) {&lt;br /&gt;           if (!cpu_datap(cpu)-&gt;cpu_running ||&lt;br /&gt;        cpu_datap(cpu)-&gt;cpu_tlb_invalid == FALSE ||&lt;br /&gt;        !CPU_CR3_IS_ACTIVE(cpu)) {&lt;br /&gt;            cpus_to_signal &amp;= ~cpu_bit;&lt;br /&gt;     break;&lt;br /&gt;    }&lt;br /&gt;    if (mach_absolute_time() &gt; deadline) {&lt;br /&gt;     force_immediate_debugger_NMI = TRUE;&lt;br /&gt;            panic("pmap_flush_tlbs() timeout: "&lt;br /&gt;        "cpu %d failing to respond to interrupts, pmap=%p cpus_to_signal=%lx",&lt;br /&gt;        cpu, pmap, cpus_to_signal);&lt;br /&gt;    }&lt;br /&gt;    cpu_pause();&lt;br /&gt;   }&lt;br /&gt;          if (cpus_to_signal == 0)&lt;br /&gt;           break;&lt;br /&gt;  }&lt;br /&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I won't make any pretense at understanding most of this, but it looks like, for that panic to occur, the condition &lt;font face="Courier"&gt;(!cpu_datap(cpu)-&gt;cpu_running || cpu_datap(cpu)-&gt;cpu_tlb_invalid == FALSE || !CPU_CR3_IS_ACTIVE(cpu))&lt;/font&gt; is never met, so we keep waiting and checking until our deadline passes.&lt;br /&gt;The timeout appears to be 12500000 mach time units, which apparently are equivalent to nanoseconds on my laptop - so 0.0125s, or 1/80th of a second.&lt;br /&gt;&lt;br /&gt;So if we revisit that condition, we can assume that we get to a stage where, for at least 1/80th of a second, the inverse of the test is always true (or happens to be, every time it's checked - could be a race condition I suppose?): &lt;font face="Courier"&gt;(cpu_running &amp;&amp; cpu_tlb_invalid &amp;&amp; CPU_CR3_IS_ACTIVE(cpu))&lt;/font&gt;...&lt;br /&gt;&lt;br /&gt;I'm too lazy to look up what CPU_CR3_IS_ACTIVE(cpu) (a macro that expands to ("(cpu_datap(cpu)-&gt;cpu_active_cr3 &amp; 1) == 0)") signifies, but the whole CR3 mess is some kind of i386 control register for dealing with virtual memory paging. Beyond these most basic observations, I'm pretty clueless about the problem, so would love to hear from anyone if you have any ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-5422020758552818231?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/5422020758552818231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=5422020758552818231' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5422020758552818231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/5422020758552818231'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/08/os-x-panics.html' title='OS X panics'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2667091334626412392</id><published>2009-05-18T13:20:00.002+01:00</published><updated>2009-05-18T14:02:41.782+01:00</updated><title type='text'>Torrenting on the Mac</title><content type='html'>After a few years of using Azureus (or Vuze now) without major problems other than kind of large CPU and especially RAM usage, a friend suggested I give µTorrent a try since they now have Mac builds. I did, and after the first two builds which suffered from a CPU hogging bug, was surprised to find version 0.9.1.2 running smoothly for a couple of days, using about 2-5% CPU and 22MB of RAM with DHT, Peer Exchange and &lt;i&gt;outgoing encryption&lt;/i&gt; enabled (before switching these on, it was taking about 0.6% CPU!).&lt;br /&gt;&lt;br /&gt;That's pretty impressive IMO - previous BT clients I'd tried (Tomato, Transmission and the built in one in the Opera web browser) either seemed a bit cut-down and/or just didn't seem to download at the same speeds Azureus had achieved. So far µTorrent has worked very quickly, and has the further benefit for me of reliably working with pasted torrent URLs - Azureus almost always times out when downloading .torrent files via HTTP (no idea why; maybe a Java thing, but it happened on both my Mac and Linux boxes).&lt;br /&gt;&lt;br /&gt;The only cons so far are that it's not open source, and that there's no Linux build... but I don't use my Linux box these days anyway. &lt;a href="http://www.utorrent.com/"&gt;Give it&lt;/a&gt; a try if you're exploring BT clients on the Mac!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2667091334626412392?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2667091334626412392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2667091334626412392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2667091334626412392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2667091334626412392'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/05/torrenting-on-mac.html' title='Torrenting on the Mac'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-8455651529872498047</id><published>2009-04-24T20:56:00.002+01:00</published><updated>2009-04-24T21:11:40.469+01:00</updated><title type='text'>media filler: 'offensive' Baby Shaker</title><content type='html'>(see &lt;a href="http://edition.cnn.com/2009/TECH/biztech/04/24/cnet.apple.baby.shaker.app/index.html?iref=mpstoryview"&gt;CNN article&lt;/a&gt;)&lt;br /&gt;The 'Baby Shaker' app is about as stupid as the 'controversy' over such a meaningless little thing.&lt;br /&gt;&lt;br /&gt;Typical media nonsense... 'outcry' from politically correct whingers, so what? There are always people who will get offended at something.&lt;br /&gt;It's equivalent to a teenager's poorly-scrawled graffiti - offensive to anyone who WANTS to get offended, but otherwise completely trivial.&lt;br /&gt;&lt;br /&gt;There are people being tortured and murdered, drink drivers doing hit'n'runs out there, and &lt;span style="font-style:italic;"&gt;THIS&lt;/span&gt; is what makes the news? That's just silly.&lt;br /&gt;&lt;br /&gt;Also silly is that Apple (and others in similar 'outcry' situations, like Youtube) respond so quickly and arbitrarily to take down applications like this. Not specifically in this case, because it is clearly a stupid and tasteless program, but in general when hosting providers like Youtube, Apple and some web hosts receive complaints about the 'offensive nature' of some content and they immediately (and perhaps without discussion with the author) take down the content - again, there are always going to be people out there who like to get offended at anything.&lt;br /&gt;What it boils down to is that sometimes free expression suffers due to politically correct or simply malevolent, loud complainers.&lt;br /&gt;Indeed, in probably all hosting provider contracts, they specifically assert the right to delete any content deemed offensive. How can this work, though, if offensiveness is in the eye of the beholder, which it most certainly is?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-8455651529872498047?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/8455651529872498047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=8455651529872498047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8455651529872498047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/8455651529872498047'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/04/media-filler-offensive-baby-shaker.html' title='media filler: &apos;offensive&apos; Baby Shaker'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3241920548919509550</id><published>2009-03-06T02:33:00.008Z</published><updated>2010-08-13T03:35:37.812+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x4550'/><category scheme='http://www.blogger.com/atom/ns#' term='os x'/><category scheme='http://www.blogger.com/atom/ns#' term='buggy'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='lexmark'/><title type='text'>Lexmark X4550 wireless woes with OS X, part DEUX</title><content type='html'>The Mac drivers for the Lexmark X4550 (listed as '3500-4500 series') are a little twitchy in that, after not using the printer/scanner for a while via its wireless interface (e.g. after the wireless router has restarted), it will no longer connect to the Mac to scan nor will the Mac connect to it to print. The typical case when trying to scan and upload to a computer on the network is that the printer will display "Downloading application list" on the LCD panel after you select the desired computer to scan to, and then after about a minute, "Cannot retrieve application list".&lt;br /&gt;&lt;br /&gt;Anyway, the scabby workaround for me is a little script which simply kills and restarts a pair of Lexmark driver services:&lt;br /&gt;&lt;br /&gt;&lt;font face="Courier New"&gt;&lt;blockquote&gt;&lt;i&gt;$ cat ~/bin/restart-lexmark-x4550.sh&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;killall LexmarkNetworkServices&lt;br /&gt;killall "3500-4500 Series Button Monitor"&lt;br /&gt;open "/Library/Application Support/Lexmark/LexmarkNetworkServices.app/"&lt;br /&gt;open "/Library/Application Support/Lexmark/3500-4500 Series Scanner.bundle/Contents/SharedSupport/3500-4500 Series Button Monitor.app/"&lt;/blockquote&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;This &lt;i&gt;seems&lt;/i&gt; to do the trick. Of course, it would be better if Lexmark would fix their drivers, but after the last phone calls I had with their tech support I don't think this is a big priority for them (it was an outsourced-to-India tech support line, where the guy did almost everything he could to pronounce that it was a problem with my router or my computer or something, rather than actually passing on information about a probable bug to the dev team... although he did seem to have a decent technical grasp of the troubleshooting steps he performed which makes him infinitely better than the Acer helpline which appears to go to a call centre in Scotland with lots of ignorant people in it. Whoops, my comment in parentheses is longer than the preceding paragraph, boo!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3241920548919509550?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3241920548919509550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3241920548919509550' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3241920548919509550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3241920548919509550'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/03/lexmark-x4550-wireless-woes-with-os-x.html' title='Lexmark X4550 wireless woes with OS X, part DEUX'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6559229632462355625</id><published>2009-02-16T17:36:00.003Z</published><updated>2009-02-16T17:50:23.527Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='AI'/><category scheme='http://www.blogger.com/atom/ns#' term='reasoning'/><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><title type='text'>Human logic is creativity</title><content type='html'>From &lt;a href="http://www.amazon.co.uk/Society-Mind-Touchstone-Book/dp/0671657135/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234806158&amp;amp;sr=8-1"&gt;The Society of Mind&lt;/a&gt;, Marvin Minsky's excellent book (Picador edition, p. 189):&lt;br /&gt;&lt;blockquote&gt;I do not mean to say that there is anything wrong with logic; I only object to the assumption that ordinary reasoning is largely based on it. What, then, &lt;i&gt;are&lt;/i&gt; the functions of logic? It rarely helps us get a new idea, but it often helps us to detect the weaknesses in old ideas. Sometimes it also helps us clarify our thoughts by refining messy networks into simpler chains. Thus, once we find a way to solve a certain problem, logical analysis can help us find the most essential steps. Then it becomes easier to explain what we've discovered to other people - and, also, we often benefit from explaining our ideas to ourselves. This is because, more often than not, instead of explaining what we actually did, we come up with a new formulation. Paradoxically, the moments in which we think we're being logical and methodical can be just the times at which we're most creative and original.&lt;/blockquote&gt;&lt;br /&gt;I think the last two sentences are enlightening and in strong contrast to the popular assumptions that "logical" thinking is an antithesis of creative thinking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6559229632462355625?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6559229632462355625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6559229632462355625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6559229632462355625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6559229632462355625'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/02/human-logic-is-creativity.html' title='Human logic is creativity'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1037979097910739218</id><published>2009-02-02T15:02:00.005Z</published><updated>2009-02-02T16:33:01.525Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='os x'/><category scheme='http://www.blogger.com/atom/ns#' term='Chinese'/><category scheme='http://www.blogger.com/atom/ns#' term='macbook'/><title type='text'>Chinese text input on OS X: ITABC vs FIT</title><content type='html'>After growing somewhat accustomed to (the disappointment of) the ITABC Pinyin Chinese input method that comes with OS X, I configured my Vista work box to add the MS Pinyin input method which I soon discovered was far superior to Apple's ITABC. Partly this is due to some crasher bugs in ITABC (which I've reported and never heard back about, so maybe it only happens on my Mac?) - for example, typing any string with "shish" in it will cause part of it to crash, so that SCIM must be manually killed to force the input method system to restart before Chinese can be typed again.&lt;br /&gt;More importantly however, it's just so much &lt;i&gt;easier&lt;/i&gt; to type in the input method for Windows. I can type a full sentence and, often enough, the whole thing will be interpreted as I intended, or the small number of corrections can be elegantly entered without deleting interceding correct characters. In the Apple ITABC method, it has a strange heuristic of trying to forcibly group pairs of characters at a time, even when two single characters are much more likely. This results in an erroneous offset which often propagates all the way through the sentence so that in practice one ends up correcting the input method every character or two (by hitting space and selecting the correct match) and/or accepting then going back and correcting input manually. Not only this, but some words like 儿 completely throw off the parser - if you type 'dianer' the result is '嗲呢日' (dia3 ne ri4) rather than the obvious '点儿'.&lt;br /&gt;&lt;br /&gt;After using the Microsoft Pinyin IME briefly in college and coming home to be stuck with this again, I decided enough was enough, and started searching for alternative input methods. My brief search took me to OpenVanilla, something else that didn't work well, and finally "Fun Input Toy", a beguilingly-named input method which I downloaded from &lt;a href="http://fit.coollittlethings.com/?page_id=3"&gt;here&lt;/a&gt;.&lt;br /&gt;After installing it mostly blind because my Chinese is absolutely not good enough to run programs or read technical documents (or, eh, any documents except for kids' books really) and wincing at the Chinese-only menus, I soon got it working (because the "Next" button in the installer wasn't translated, but you know the position it's in anyway :D). I was initially impressed, but decided to keep my enthusiasm somewhat checked before jumping to conclusions. Not for long though, because it soon became apparent that writing Chinese sentences with FIT is much easier and quicker than ITABC, and it's not as buggy.&lt;br /&gt;By way of comparison, here's the result of typing the string "zheshougemeiyounashougenamehaoting" in both input methods without corrections:&lt;br /&gt;ITABC: 折寿个没有拿手个那么 (4/12 -&gt; not gonna even try translating that mess)&lt;br /&gt;FIT: 这首歌没有那首歌那么好听。(12/12 -&gt; "This song is not as nice as that song.")&lt;br /&gt;&lt;br /&gt;Note that in ITABC, once I'd typed the pinyin string, I had to hit space once to start parsing, which yields 折寿, then space again for 个, again for 没有, again for 拿手 and so on. Note that it terminates after 那么 because it only accepts input of up to 10 characters, which means breaking mid-sentence (in practice, after only a few words because the parser gets so confused).&lt;br /&gt;Also note that I typed sentences like this a few times under both systems to allow any learning mechanisms to observe my use of less common words like 歌 (ge1: song).&lt;br /&gt;&lt;br /&gt;Also note how ITABC and FIT look once I've typed the entire string in and not hit space yet:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ITABC:&lt;/b&gt;&lt;br /&gt;&lt;img src="http://www.redbrick.dcu.ie/~exolon/image/itabc-input.png"&gt;&lt;/img&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fun Input Toy:&lt;/b&gt;&lt;br /&gt;&lt;img src="http://www.redbrick.dcu.ie/~exolon/image/fit-input.png"&gt;&lt;/img&gt;&lt;br /&gt;&lt;br /&gt;The FIT input window clearly shows much more information (such as the fact that it parses as much of the sentence as possible, with appropriate options for corrections, compared to ITABC only parsing a couple of characters at a time; usually two).&lt;br /&gt;&lt;br /&gt;In summary, ITABC is pretty awful, FIT is very nice. And it's free, so use it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1037979097910739218?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1037979097910739218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1037979097910739218' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1037979097910739218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1037979097910739218'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/02/chinese-text-input-on-os-x-itabc-vs-fit.html' title='Chinese text input on OS X: ITABC vs FIT'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-353945066709341435</id><published>2009-01-15T00:22:00.001Z</published><updated>2009-01-15T00:23:52.888Z</updated><title type='text'>Karma headlines</title><content type='html'>(two successive headlines on Digg)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Sex Offender Wins Lottery For Sex Abuse Victims &lt;br /&gt;Made popular 2 days ago &lt;br /&gt;www.huffingtonpost.com &lt;br /&gt;&lt;br /&gt;Sex Offender Who Won Alaska Lottery Beaten With Iron Pipe &lt;br /&gt;Made popular 3 hr 14 min ago &lt;br /&gt;www.mcclatchydc.com&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-353945066709341435?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/353945066709341435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=353945066709341435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/353945066709341435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/353945066709341435'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2009/01/karma-headlines.html' title='Karma headlines'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4552315954840101471</id><published>2008-12-28T01:33:00.003Z</published><updated>2008-12-28T01:50:44.051Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='women'/><category scheme='http://www.blogger.com/atom/ns#' term='maths'/><category scheme='http://www.blogger.com/atom/ns#' term='society'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>women and maths and chess...</title><content type='html'>Two New Scientist articles caught my attention recently:&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.newscientist.com/article/dn16331-the-lack-of-female-einsteins-is-all-down-to-numbers.html"&gt;first&lt;/a&gt; is a bit of mathematical obviousness which points out that: "There are few women at the top of science because there are so few women in science. It's simple statistics."&lt;br /&gt;It uses the German chess federation's statistics to support the theory: there, men outnumber women by 16 to 1 (so if all other (significant) things are equal, there should only be a (1 - 15/16 ** 3 = roughly 18%) chance of a woman being in the top three, if I understand rightly).&lt;br /&gt;Which begs the question, why are there so few women in chess/science/etc? Well, this is the subject of the &lt;a href="http://www.newscientist.com/article/dn10333-negative-stereotypes-make-women-worse-at-maths.html"&gt;second article&lt;/a&gt;...&lt;br /&gt;Which is about a study where they split the (all female) subjects into two groups. One group was told that women perform poorly at maths due to genetics, and the other group was told that women perform poorly at maths due to social factors. Then they gave both groups the same maths tests and found that the 'genes make women bad at maths' group answered half as many questions correctly as did the 'society makes women bad at maths'.&lt;br /&gt;This supports the idea that women being (statistically) worse at maths is probably wholly due to the negative, self-reinforcing erroneous stereotype that women are genetically predisposed to suck at it. Boo society!&lt;br /&gt;&lt;br /&gt;I must admit to allowing myself to openly stereotype people more often than I'd like (i.e. than never), but seeing the power of negative stereotypes to destroy the performance of the maths test subjects it's time to at least keep such preconceptions to myself as much as possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4552315954840101471?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4552315954840101471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4552315954840101471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4552315954840101471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4552315954840101471'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/12/women-and-maths-and-chess.html' title='women and maths and chess...'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2840394023574609030</id><published>2008-12-24T20:17:00.003Z</published><updated>2008-12-24T20:24:52.169Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='obviousness'/><category scheme='http://www.blogger.com/atom/ns#' term='mini cd'/><category scheme='http://www.blogger.com/atom/ns#' term='macbook'/><title type='text'>mini cd/dvd -&gt; Macbook -&gt; oops!</title><content type='html'>As I inserted the mini CD for the Tevion "Potent Pad" (which I was sure only contained Windows drivers anyway), I thought "uh, how will a slot loading drive pick up a mini CD?". After a few seconds of silence once I had inserted the disc (and poked it in further with an envelope, to bollox things up further), it became apparent that I should have stopped and thought about it, rather than simply thought about it and carried on regardless...&lt;br /&gt;&lt;br /&gt;A quick web search yielded predictable advice such as "power off the machine and use a paperclip to extract the disc" or "disassemble the machine and DVD drive to remove the disk". Since I wasn't keen on scratching the optical mechanism to ruin or dismantling the computer, I kept scrolling until I found the following blatantly obvious and blatantly sensible suggestion from 'ashleyman':&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"&lt;a href="http://forums.macnn.com/69/mac-notebooks/308477/macbook-slot-load-drive-mini-pocket/#post3273776"&gt;Or just tip it&lt;/a&gt; so the drive faces the floor and give it a few taps!!"&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;This served me well and I safely removed the CD within 5-10 seconds of gently shaking and tapping the laptop with the slot facing down. Sometimes the solution is so obvious that you can completely pass it by!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2840394023574609030?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2840394023574609030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2840394023574609030' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2840394023574609030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2840394023574609030'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/12/mini-cddvd-macbook-oops.html' title='mini cd/dvd -&gt; Macbook -&gt; oops!'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2890141565700693624</id><published>2008-12-03T00:39:00.002Z</published><updated>2008-12-03T00:45:36.558Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='os x'/><category scheme='http://www.blogger.com/atom/ns#' term='buggy'/><category scheme='http://www.blogger.com/atom/ns#' term='leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>OS X isn't all that great...</title><content type='html'>It seems like every week or so, OS X prompts me with some system updates that necessitate a reboot (usually Safari and iTunes - why the hell do I need to reboot my computer just because Safari was updated? This is the kind of behaviour people criticised Windows for in the past). I usually leave the dialogue box in the background for a couple of days until I'm ready to reboot, then go ahead.&lt;br /&gt;Every once in a while (month), when I allow it to restart to "finish" updating, nothing happens. I start manually closing programs after getting warnings that each individual program failed to close (although manually closing them causes no problems at all). This time, the Software Updater seemed to hang as well, even though I had already told it to restart my Mac.&lt;br /&gt;&lt;br /&gt;In the end, the machine seemed to shut down but the fan was still spinning. After hitting the power button a few times and waiting a minute or two, I held it to force a power-off and reboot. Then, instead of seeing the "Installing updates" dialogue you usually get when rebooting after installing updates, I just got my usual login screen, and sure enough, logging in as normal (after a ridiculous 4 minute delay before the Finder menu would respond to mouse clicks, WTF?) and opening the System Updater started the whole process from scratch.&lt;br /&gt;LAME. Absolutely lame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2890141565700693624?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2890141565700693624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2890141565700693624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2890141565700693624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2890141565700693624'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/12/os-x-isnt-all-that-great.html' title='OS X isn&apos;t all that great...'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7299451720382183575</id><published>2008-11-16T23:18:00.003Z</published><updated>2008-11-16T23:19:15.727Z</updated><title type='text'>Funny English expression of the day</title><content type='html'>&lt;blockquote&gt;&lt;i&gt;"Rarer than rocking horse shite."&lt;/i&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7299451720382183575?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7299451720382183575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7299451720382183575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7299451720382183575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7299451720382183575'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/11/funny-english-expression-of-day.html' title='Funny English expression of the day'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6739571886451720641</id><published>2008-11-16T14:23:00.004Z</published><updated>2008-11-16T14:44:31.011Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='bicycle'/><title type='text'>How to replace a bicycle tube/tyre ten times faster than I do</title><content type='html'>I hate dealing with punctures. I usually spend about 40 minutes dithering at the task, struggling to get the tube out of the wheel, locating the puncture, patching it carefully, leaving it for 5 minutes, coming back to find that I didn't apply it properly, cleaning it with sandpaper and then jamming the inner tube back in under the outer tyre.&lt;br /&gt;&lt;br /&gt;So I was a bit embarrassed to see these videos of a guy removing and inserting the tube (and outer tyre in the process, which seems to just speed things up) in about 80 seconds. I'm still a bit skeptical about dealing with the outer tyre, which seems much tighter and stiffer on my hybrid wheel, but I'll have to try it next time!&lt;br /&gt;&lt;br /&gt;Tube comes out&lt;br /&gt;&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=8104666426456148655&amp;hl=ga&amp;fs=true" style="width:400px;height:326px" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Tube goes in&lt;br /&gt;&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=-8487271963614609061&amp;hl=ga&amp;fs=true" style="width:400px;height:326px" allowFullScreen="true" allowScriptAccess="always" type="application/x-shockwave-flash"&gt; &lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;These videos come from the very useful &lt;a href="http://www.jimlangley.net/wrench/wrench.html"&gt;homepage of Jim Langley&lt;/a&gt;. &lt;font size=2&gt;(Note: Opera users such as myself may want to identify as Firefox or IE due to some outdated JS-crippling)&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6739571886451720641?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6739571886451720641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6739571886451720641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6739571886451720641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6739571886451720641'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/11/how-to-replace-bicycle-tubetyre-ten.html' title='How to replace a bicycle tube/tyre ten times faster than I do'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-4943718712892670101</id><published>2008-11-13T22:10:00.002Z</published><updated>2008-11-13T22:24:31.430Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='palm'/><category scheme='http://www.blogger.com/atom/ns#' term='pda'/><category scheme='http://www.blogger.com/atom/ns#' term='meteor'/><category scheme='http://www.blogger.com/atom/ns#' term='treo'/><category scheme='http://www.blogger.com/atom/ns#' term='mms'/><title type='text'>Meteor MMS on the Palm Treo 680</title><content type='html'>&lt;a href="http://www.meteor.ie"&gt;Meteor&lt;/a&gt; uses a system which pushes the WAP/MMS/etc configuration to your mobile phone, but strangely don't provide the details online for anybody with an unsupported phone. In fact, when I phoned their customer service I had to push the agent to speak to his supervisor and get the settings, since he had no idea what I was talking about (indicated by his question "Did you say I.T. address or I.P. address?").&lt;br /&gt;&lt;br /&gt;It's not possible to specify those settings completely in the Messaging program on the Treo 680; instead, you need to modify (or copy and use) the settings in (main) Prefs-&gt;Network. This configuration worked for us:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Service: Meteor MMS Copy&lt;br /&gt;Connection: GPRS&lt;br /&gt;User Name: my&lt;br /&gt;Password: mms&lt;br /&gt;APN: mms.mymeteor.ie&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Then in the Messaging program, go to the Preferences menu, select the Network tab, change "Network Configuration" to manual and enter the "Edit..." dialogue, where you can enter the following settings:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;Message centre number: +353857000000&lt;br /&gt;Email centre number: [blank]&lt;br /&gt;&lt;br /&gt;MMS HTTP Proxy: 10.85.85.85:8799&lt;br /&gt;MMS URL: http://mms.mymeteor.ie&lt;br /&gt;Network Profile: Meteor MMS Copy&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;This works for downloading MMS messages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-4943718712892670101?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/4943718712892670101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=4943718712892670101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4943718712892670101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/4943718712892670101'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/11/meteor-mms-on-palm-treo-680.html' title='Meteor MMS on the Palm Treo 680'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6415072704518216390</id><published>2008-11-11T02:07:00.003Z</published><updated>2008-11-11T02:15:57.946Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='GFA Basic'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>the arithmetic calculator exercise in GFA Basic</title><content type='html'>For a couple of reasons, I tried that arithmetic calculator exercise in &lt;a href="http://paste.lisp.org/display/70106"&gt;GFA Basic&lt;/a&gt; (v3.6 for the Atari ST; why not?), and although I selected a somewhat different approach, I think it's really like a non-recursive version of the recursive Lisp version I posted before; with state in variables which persist for the whole loop. This is where side-effects can get mysterious, compared to the neater encapsulation of state in each recursive call's parameters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6415072704518216390?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6415072704518216390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6415072704518216390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6415072704518216390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6415072704518216390'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/11/arithmetic-calculator-exercise-in-gfa.html' title='the arithmetic calculator exercise in GFA Basic'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6488724924159089104</id><published>2008-11-11T02:00:00.002Z</published><updated>2008-11-11T02:06:41.199Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='普通话'/><category scheme='http://www.blogger.com/atom/ns#' term='Chinese'/><title type='text'>randomly entertaining Chinese sentence</title><content type='html'>I check pretty much every new word I come across in my study materials on &lt;a href="http://dict.cn/肥.htm"&gt;dict.cn&lt;/a&gt;, which also lists example sentences containing the term.&lt;br /&gt;&lt;br /&gt;Here's a nice one I found when looking up the character 肥 (fei2), which according to my book means "(of clothes, shoes) loose*, (of animals) fat":&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;我被两个肥胖的女人紧紧地挤在中间，以致于要站起来下公共汽车都很难。 &lt;br /&gt;I was so tightly wedged between two fat women that it was difficult for me to get up and leave the bus.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;:D :D&lt;br /&gt;&lt;br /&gt;&lt;font size=2&gt;* although I couldn't substantiate the first meaning from the online dictionary..?&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6488724924159089104?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6488724924159089104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6488724924159089104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6488724924159089104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6488724924159089104'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/11/randomly-entertaining-chinese-sentence.html' title='randomly entertaining Chinese sentence'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-7001615590568242759</id><published>2008-11-08T15:55:00.004Z</published><updated>2008-11-08T16:05:22.249Z</updated><title type='text'>Common Lisp: arithmetic calculator exercise</title><content type='html'>Following a post on &lt;a href="www.atari-forum.com"&gt;the Atari ST forum&lt;/a&gt; I tried a little exercise to write an arithmetic expression parser for expressions like "24 - 3*9 + 9/3". I was surprised to find it a little difficult, taking about an hour even with the concessions I made (accepting input as a list rather than a string, and not checking for well-formedness of expressions). My code is on &lt;a href="http://paste.lisp.org/display/69960"&gt;paste.lisp.org&lt;/a&gt; and I'd love to see any improvements or tips. Embarrassingly, I took two semesters of the final year compiler construction course in DCU and did quite well at it; parsing of programs was a central topic on the course! I guess it's easy to take for granted your skills at 'abstract' coding and notice they need a bit of exercising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-7001615590568242759?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/7001615590568242759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=7001615590568242759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7001615590568242759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/7001615590568242759'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/11/common-lisp-arithmetic-calculator.html' title='Common Lisp: arithmetic calculator exercise'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-6083898731921384395</id><published>2008-10-25T16:33:00.004+01:00</published><updated>2008-10-25T16:55:27.672+01:00</updated><title type='text'>ntl's expanded internet pipe</title><content type='html'>Soon after moving here last year, we decided to get our TV, broadband and phone service through ntl rather than get TV from them and broadband/phone through Eircom or some reseller, since Ireland has apparently the most expensive line rental in the world (?? thanks, Tony O'Reilly for exploiting the competition-free market and Comreg/competition authority for allowing it).&lt;br /&gt;&lt;br /&gt;They recently retooled their broadband packages, so that the old 6mbit price now gets you 10mbit and for €10 more per month you can get 20mbit (I wouldn't bother with that unless I was sharing with a few people, though).&lt;br /&gt;I had to call up to get it though, since they weren't nice enough to automatically shift me over to the new package - this is really something ISPs should do when they improve their packages.&lt;br /&gt;&lt;br /&gt;It's working pretty good too - close to the quoted 10mb:&lt;br /&gt;&lt;img src="http://desty.110mb.com/img/ntl-speed.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-6083898731921384395?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/6083898731921384395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=6083898731921384395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6083898731921384395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/6083898731921384395'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/10/ntls-expanded-internet-pipe.html' title='ntl&apos;s expanded internet pipe'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3867875179853086230</id><published>2008-10-23T12:58:00.003+01:00</published><updated>2008-10-23T13:04:54.522+01:00</updated><title type='text'>Lexmark X4550 wireless woes with OS X</title><content type='html'>I picked up a fairly cheap Lexmark X4550 wireless printer/scanner/copier about 6 months ago and soon noticed that it stopped working every time I restarted the router.&lt;br /&gt;After a long conversation with a fairly patient technical support guy at Lexmark proved mostly fruitless, I dug a little further and ran a packet sniffer (Wireshark) over an attempted print job.&lt;br /&gt;&lt;br /&gt;This prompted me to double-check the printer settings, which showed a device URI of lexnet3://192.168.1.3:1. Which is certainly wrong, as the printer is at 192.168.1.4. I'm not sure why it doesn't just use DNS properly, but anyway.&lt;br /&gt;&lt;br /&gt;Trying to correct this, I stumbled across &lt;a href="http://discussions.apple.com/message.jspa?messageID=5852838#5852838"&gt;this post&lt;/a&gt; explaining how to modify the device URI via the CUPS web interface available on OS X. And it works! Good old Unix!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3867875179853086230?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3867875179853086230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3867875179853086230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3867875179853086230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3867875179853086230'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/10/lexmark-x4550-wireless-woes-with-os-x.html' title='Lexmark X4550 wireless woes with OS X'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-706845169310968820</id><published>2008-10-23T02:44:00.002+01:00</published><updated>2008-10-23T02:51:16.691+01:00</updated><title type='text'>article: "Early Childhood Education: The Key to  Success in Life"</title><content type='html'>Anyone who has or expects to have children should read &lt;a href="http://www.audiblox2000.com/early_childhood/early_education.htm"&gt;this article&lt;/a&gt; about preschool learning as soon as possible.&lt;br /&gt;&lt;br /&gt;After emphasising some of the importance and benefits of preschool education, it lists some basic and simple ways in which you can help educate your bairns. As usual with such material, there are 'obvious' things that never occurred to me - like placing a young baby face-down from even one month of age, because he will naturally want to raise his head which will help build up his back muscles which will improve general strength and co-ordination. The paper-crumpling trick is clever too.&lt;br /&gt;&lt;br /&gt;Well worth a read!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-706845169310968820?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/706845169310968820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=706845169310968820' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/706845169310968820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/706845169310968820'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/10/article-early-childhood-education-key.html' title='article: &quot;Early Childhood Education: The Key to  Success in Life&quot;'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3487204135708097041</id><published>2008-10-10T23:14:00.002+01:00</published><updated>2008-10-10T23:21:02.927+01:00</updated><title type='text'>classy typing tutor</title><content type='html'>This is the &lt;a href="http://free.macgames.jp/2031/fuck-typing/"&gt;funniest-looking educational game&lt;/a&gt; I've ever seen. Check out the screenshot :D The description for the game calls it "an educational children’s casual game". It certainly would have appealed to my childhood self.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;. o O ( "Cop smearer"?? )&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3487204135708097041?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3487204135708097041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3487204135708097041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3487204135708097041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3487204135708097041'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/10/classy-typing-tutor.html' title='classy typing tutor'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-1941851262968770781</id><published>2008-08-24T12:59:00.002+01:00</published><updated>2008-08-24T13:39:47.657+01:00</updated><title type='text'>Ireland's gradual transformation to a police state</title><content type='html'>&lt;p&gt;Well, here we are. The Department of Justice, Equality and Law Reform have made it so that all migrants to Ireland from outside the EU &lt;a href="http://www.irlgov.ie/crimecouncil/FingerprintIdentification.html"&gt;must be fingerprinted&lt;/a&gt; (and their &lt;a href="http://www.garda.ie/news/Launch%20of%20Garda%20Automatic%20Fingerprint%20Identification%20System%20231107.doc"&gt;details shared&lt;/a&gt; with who knows how many foreign agencies). And of course, the costs for this are &lt;a href="http://www.independent.ie/national-news/50pc-hike-in-fees-for--migrants-threatens-business-1461717.html"&gt;passed on to&lt;/a&gt; the migrants themselves - they will pay another €50 on top of the old €100 "registration" fee to lose their privacy. I have to wonder what practical use there will really be for the fingerprinting.&lt;/p&gt;&lt;p&gt;The "Land of the 100000 welcomes" is long dead and buried by this point. What disturbs me is all the people who feel that all foreigners &lt;i&gt;should&lt;/i&gt; be fingerprinted and they're lucky they're not just sent home immediately anyway. What if all Irish citizens had to be fingerprinted? Would that be okay? No? So why the double-standard, and where does it stop?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-1941851262968770781?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/1941851262968770781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=1941851262968770781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1941851262968770781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/1941851262968770781'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/08/irelands-gradual-transformation-to.html' title='Ireland&apos;s gradual transformation to a police state'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-2093048692215172605</id><published>2008-08-23T01:21:00.002+01:00</published><updated>2008-08-23T01:25:17.250+01:00</updated><title type='text'>Refactoring threats</title><content type='html'>Entertaining quote of the week (a comment on an article about a newbie employee running a "NEVER RUN THIS" database recreation script after being told not to) from a user on thedailywtf.com:&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Re: Do not run this script, ever!&lt;br /&gt;2008-01-25 15:45 • by morry (unregistered)  173406&lt;/strong&gt;&lt;br /&gt;I've always thought it's better to put these things into the positive, i.e. don't use "don't". For example:&lt;br /&gt;&lt;br /&gt;RUN THIS SCRIPT WHEN YOU WANT TO BE FIRED&lt;br /&gt;&lt;br /&gt;EXECUTE THIS PROGRAM WHEN LIFE NO LONGER HAS MEANING FOR YOU&lt;br /&gt;&lt;br /&gt;IF YOU LIKE EVERYONE HATING YOU, THEN START THIS JOB&lt;br /&gt;&lt;br /&gt;MAKING TOO MUCH MONEY? DO THIS TO REDUCE YOUR PAYCHECK TO 0!&lt;br /&gt;&lt;br /&gt;GET ESCORTED OUT BY MERELY PUSHING THIS SHINY RED BUTTON&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-2093048692215172605?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/2093048692215172605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=2093048692215172605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2093048692215172605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/2093048692215172605'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/08/refactoring-threats.html' title='Refactoring threats'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22238331.post-3100060932507301948</id><published>2008-08-14T18:51:00.002+01:00</published><updated>2008-08-14T18:53:43.911+01:00</updated><title type='text'>Stupid thing of the day</title><content type='html'>&lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; (the popular Java IDE) has an update manager which allows it to automatically fetch and install or upgrade new versions of various components and plugins.&lt;br /&gt;However, it can't upgrade &lt;b&gt;itself&lt;/b&gt; from version 3.3.2 to 3.3.4.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;WTF.&lt;/b&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/22238331-3100060932507301948?l=vaguevagaries.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vaguevagaries.blogspot.com/feeds/3100060932507301948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=22238331&amp;postID=3100060932507301948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3100060932507301948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22238331/posts/default/3100060932507301948'/><link rel='alternate' type='text/html' href='http://vaguevagaries.blogspot.com/2008/08/stupid-thing-of-day.html' title='Stupid thing of the day'/><author><name>Oisín</name><uri>http://www.blogger.com/profile/14940197011612073631</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
