<?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-7232678821280376479</id><updated>2011-12-22T07:58:15.315-08:00</updated><category term='moving'/><category term='google+'/><category term='technology'/><category term='wiki'/><category term='Euan'/><category term='SCFX'/><category term='graduation'/><category term='cricket'/><category term='fonts'/><category term='Harry Potter'/><category term='gwt'/><category term='northern rock'/><category term='Intelligent Book'/><category term='parsing'/><category term='conference'/><category term='politic'/><category term='Apple'/><category term='JavaOne'/><category term='ALT-C'/><category term='chrome'/><category term='Cambridge'/><category term='speculation'/><category term='Australia'/><category term='PhD'/><category term='trivia'/><category term='bond'/><category term='bus'/><category term='administrivia'/><category term='science'/><category term='humor'/><category term='facebook'/><category term='idea belt'/><category term='OSGi'/><category term='Google Wave'/><category term='hci'/><category term='google developer day'/><category term='politics'/><category term='humour'/><category term='XML'/><category term='entrepreneurship'/><category term='ai-class'/><category term='bbc'/><category term='google gears'/><category term='April fool'/><category term='Java'/><category term='radeox'/><category term='JavaFX'/><category term='Deathly Hallows'/><category term='copyright'/><category term='economics'/><category term='twitter'/><category term='santa claus'/><category term='docwit'/><category term='NHS'/><category term='personal incompetence'/><category term='#bijava'/><category term='health'/><category term='LaTeX'/><category term='gmail'/><category term='google'/><title type='text'>Will Billingsley</title><subtitle type='html'>Dr William Billingsley is a computer scientist, formerly with Cambridge University, now with a research centre in Australia.  Of course that doesn't stop him from having opinions about everything else too...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-6465463581491512385</id><published>2011-12-21T22:43:00.000-08:00</published><updated>2011-12-22T07:58:15.331-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intelligent Book'/><category scheme='http://www.blogger.com/atom/ns#' term='ai-class'/><title type='text'>Stanford AI Class</title><content type='html'>I was one of the many thousands who took part in the online&amp;nbsp;&lt;a href="http://ai-class.com/"&gt;Stanford AI class&lt;/a&gt;&amp;nbsp;-- in my case as much to find out about how they'd make the class work as in order to learn some of the AI topics I missed out on as an undergrad way back when. &amp;nbsp;Now that it's over, here are a few thoughts:&lt;br /&gt;&lt;br /&gt;I'll put my conclusion first. Large online classes like these won't replace local university courses; they will transform them. More and more, university lecturers are going to become content curators and facilitators, and they're going to need to write less and less of their own presentation material.&lt;br /&gt;&lt;br /&gt;Of course, mine is a slightly biased view as &lt;a href="http://www.theintelligentbook.com/"&gt;the Intelligent Book&lt;/a&gt;,&amp;nbsp;the interactive cloud teaching software I've been developing, makes it very easy to incorporate third party material like this into a lecture course. &amp;nbsp;And as you read through this, you'll sense a certain "this is why we need Intelligent Books" theme in my comments!&lt;br /&gt;&lt;br /&gt;Anyway, into detail on what I thought of the course...&lt;br /&gt;&lt;br /&gt;The video lectures, which were like video-recorded personal tutorials, worked very well indeed. They were clear, concise, engaging, and had the feel of being in a small class rather than a large one. Thrun and Norvig are excellent communicators and very interesting to listen to. The fact that it was an ongoing course (everyone working to a schedule), was good motivation to make time to watch the videos and do the quizzes. &amp;nbsp;That's the good news, and it really is very very good news indeed.&lt;br /&gt;&lt;br /&gt;But every class has its flaws. &amp;nbsp;So what were this one's?&lt;br /&gt;&lt;br /&gt;Well, the class interaction and quizzes were simplistic, both in style and content. &amp;nbsp;For instance, some of the final exam's questions on computer vision weren't about artificial intelligence at all, but were simple early high school physics questions about the optics. An object that's yay big is yay distant from a camera with a focal length of such-and-such, what's the size of the image on the image plane? Here are three objects in a scene; this camera sees them in this order, what order do they appear to be in to these other cameras that are looking at the scene from different angles?&lt;br /&gt;&lt;br /&gt;I tend to think that while the videos are very effective for presenting a topic, they aren't so efficient for quizzes and reference. &amp;nbsp;For reference, looking up that formula just to check you've got it right, seeking within a video to find the point it was on-screen is much slower than flicking back through text. &amp;nbsp;For quizzes, the format they used only supported tick-the-box and fill-in-the-box questions, but nonetheless required the lecturers to spend time recording a video introduction for each question.&lt;br /&gt;&lt;br /&gt;(So, this is already one area where I see the Intelligent Book bringing an advantage -- it helps courses to use a plurality of different kinds of content. &amp;nbsp;Hop from the video to the notes, to the quiz, to the advice...)&lt;br /&gt;&lt;br /&gt;The interaction between class-members was essentially limited to forums and whatever students organised off-line. The videos were pre-recorded, so of course there wasn't much in the way of to-and-fro between the lecturers and the class, except in the "office hours" on Google Hang-outs.&lt;br /&gt;&lt;br /&gt;This is unfortunate, as interactive teaching is very beneficial and is starting to gain traction in universities. &amp;nbsp;&lt;a href="http://mazur.harvard.edu/emdetails.php"&gt;Eric Mazur&lt;/a&gt;, &lt;a href="http://www.ncsu.edu/PER/beichner.html"&gt;Bob Beichner&lt;/a&gt;, &lt;a href="http://www4.ncsu.edu/unity/lockers/users/f/felder/public/Rich.html"&gt;Rich Felder&lt;/a&gt;, and others in science and engineering education have been trying to encourage lecturers to interact with their classes more, and move beyond simple one-way transmission of material. &amp;nbsp;Having taught a class last semester using the Intelligent Book, with the students chatting, discussing, and giving feedback &lt;a href="http://theintelligentbook.blogspot.com/2011/05/just-gave-lecture-with-live-chat-on.html"&gt;live on the lecture screen&lt;/a&gt;, and &lt;a href="http://theintelligentbook.blogspot.com/2011/10/social-practice-questions-part-1.html"&gt;answering and discussing questions as a class&lt;/a&gt;, I genuinely missed the interaction.&lt;br /&gt;&lt;br /&gt;So what do I think will happen next -- how do I think/hope this will change university engineering and science education?&lt;br /&gt;&lt;br /&gt;Well, the videos really are excellent. So the first&amp;nbsp;thing that will happen is that other universities will want to use these videos and others like them in their courses. Rather than Dr Joe Bloggs spend another two hours working on his PowerPoint slides for a class, he might be better off finding and showing an excellent video by famous presenters, and then spending his energy interacting with the class to further their understanding.&lt;br /&gt;&lt;br /&gt;And I think that trend -- to use more third party prerecorded material and spend more time interacting with the class rather than preparing material&amp;nbsp;-- will grow very quickly. Lecturers won't just enjoy easy access to good material; they'll realise that the lecturers who recorded these videos get a great deal of exposure and can become famous teachers -- producing the next great teaching video will become another route to increasing your academic profile. I think we'll quickly see lecturers competing to get their videos used in other people's classes.&lt;br /&gt;&lt;br /&gt;And that, I think, means that traditional lectures will change. Short videos punctuated by class discussions and exercises, and linked to rich sets of notes and social material, will become far more common than they are now. But then, I'm biased, because that's just the sort of thing that &lt;a href="http://www.theintelligentbook.com/about"&gt;the Intelligent Book makes easy&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&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/7232678821280376479-6465463581491512385?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/6465463581491512385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=6465463581491512385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6465463581491512385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6465463581491512385'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/12/stanford-ai-class.html' title='Stanford AI Class'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8306516231441032394</id><published>2011-12-14T23:43:00.000-08:00</published><updated>2011-12-14T23:43:54.362-08:00</updated><title type='text'>Metrics for Intelligent Books</title><content type='html'>There's a post on metrics in Intelligent Books gone up over on the&amp;nbsp;&lt;a href="http://theintelligentbook.blogspot.com/2011/12/metrics.html"&gt;Intelligent Book's blog.&lt;/a&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8306516231441032394?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8306516231441032394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8306516231441032394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8306516231441032394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8306516231441032394'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/12/metrics-for-intelligent-books.html' title='Metrics for Intelligent Books'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7968562264018130712</id><published>2011-11-25T19:35:00.001-08:00</published><updated>2011-11-25T19:47:25.040-08:00</updated><title type='text'>Intelligent Book, Australian Innovation Challenge</title><content type='html'>I'm delighted to have been picked as a &lt;a href="http://www.theaustralian.com.au/innovationchallenge/not-only-walking-but-talking-with-dinosaurs/story-fn9dkrp5-1226206277890"&gt;finalist in the education category of The Australian Innovation Challenge 2011&lt;/a&gt; for the Intelligent Book. &amp;nbsp;(See the Weekend Australian today.)&lt;br /&gt;&lt;br /&gt;The use of it on the Software Studio course this semester has been pretty successful, and the next step is to encourage others to use it on their couses too.  More info is over on &lt;a href="http://theintelligentbook.com/"&gt;theintelligentbook.com&lt;/a&gt; and the &lt;a href="http://theintelligentbook.blogspot.com/"&gt;About the Intelligent Book blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7968562264018130712?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7968562264018130712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7968562264018130712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7968562264018130712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7968562264018130712'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/11/intelligent-book-australian-innovation.html' title='Intelligent Book, Australian Innovation Challenge'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8872994433920906961</id><published>2011-09-07T05:31:00.000-07:00</published><updated>2011-09-07T05:31:33.550-07:00</updated><title type='text'>Intelligent Book - now on a real course</title><content type='html'>&lt;p&gt;This year I've helping out doing some teaching for the University of Queensland in software engineering subjects. During my PhD, I developed some teaching technology, and some of the (less rarified and academic) parts have turned out to be useful in teaching the course. Even better, there was an educational reason why the way we intended to deliver the course meant that we needed to use it -- so I don't need to feel too guilty about foisting my own technology onto the course.&lt;/p&gt;&lt;p&gt;Anyway, I've been blogging about some of the features and how they've been useful on a blog for the technology: &lt;a href="http://theIntelligentBook.blogspot.com/"&gt;theIntelligentBook&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So far, I've been happy with the progress - as features have gone in (I've been updating the technology in my spare time) it's turned out that yes they really are needed.  Now, the next challenge will be to convince someone else they want to use it on their course too...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8872994433920906961?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8872994433920906961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8872994433920906961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8872994433920906961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8872994433920906961'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/09/intelligent-book-now-on-real-course.html' title='Intelligent Book - now on a real course'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-5868092584762776022</id><published>2011-07-25T19:56:00.000-07:00</published><updated>2011-08-06T22:30:17.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speculation'/><category scheme='http://www.blogger.com/atom/ns#' term='google+'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Google+, Facebook, Twitter... is it going to be like the early days of IM?</title><content type='html'>I've been reading a few news articles about whether Google+ will manage to defeat Facebook or render Twitter obsolete. Here's a bit of speculation, but I wonder if it's going to be more like the early days of instant messaging (IM).  &lt;br /&gt;&lt;br /&gt;In those days, some of my colleagues were on ICQ or AOL but some were on Yahoo Messenger but some were on MSN but some had started to move to Skype etc. And that meant a lot of people had to have accounts with all of them because of course you can't control which of those systems the person you need to speak to likes to use.  And tools like Kopete would spring up to help you deal with your many different messaging accounts.&lt;br /&gt;&lt;br /&gt;It's pure speculation, but I think that's the direction I see the major networks going in. Already there are people who are Facebook friends whose Facebook status updates come from their Twitter app. Meanwhile many Twitter posts are there to point me to blog articles on blogs that I could also individually follow using RSS and Google Reader. And the rise of those social communities hasn't, for instance, stopped me from sometimes needing to use much older forms of community: forums, mailing lists, even (for a course I've been teaching) newsgroups.&lt;br /&gt;&lt;br /&gt;So one more social network does not necessarily mean death to the rest. At the moment, I don't see Twitter and Facebook following Bebo and MySpace into relative insignificance. Instead to me it means another system I'll need to have an account on &lt;strike&gt;(well, if someone sends me an invite)&lt;/strike&gt; because people I'll need or want to listen to use it.&lt;br /&gt;&lt;br /&gt;(Edit: Thank you, I am now on Google+.  Dominic, I can't seem to message you to say I'd already accepted an invitation just before yours came through; thanks for repeatedly inviting me, you are in my circles.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-5868092584762776022?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/5868092584762776022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=5868092584762776022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5868092584762776022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5868092584762776022'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/07/google-facebook-twitter-is-it-going-to.html' title='Google+, Facebook, Twitter... is it going to be like the early days of IM?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2561673141829332403</id><published>2011-05-05T02:16:00.000-07:00</published><updated>2011-05-05T02:16:25.451-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politic'/><title type='text'>AV referendum</title><content type='html'>Here are my (last minute) thoughts on Alternative Vote versus First-Past-the-Post, as someone who's lived and voted under both systems -- I've lived in both the UK and Australia.&lt;br /&gt;&lt;br /&gt;First, if I was in the UK I would vote YES in the referendum.&lt;br /&gt;&lt;br /&gt;The reason is that AV lets me vote for who I &lt;i&gt;want&lt;/i&gt; to win, without worrying about whether I think they &lt;i&gt;can &lt;/i&gt;win. &amp;nbsp;No more &lt;i&gt;"Oh but in this&amp;nbsp;constituency, its always been a two-horse race between X and Y so a voting for Z would be wasting your vote"&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;To knock out one myth, in theory it's not the extreme parties that benefit from AV -- it's the independents. &amp;nbsp;Extreme parties (pretty much by definition) don't have broad support, so they don't pick up many second preferences. &amp;nbsp;That should mean it's &lt;i&gt;harder&lt;/i&gt; for an extreme candidate to get elected than a moderate candidate that everyone might put second. &amp;nbsp;But under First-Past-the-Post, a moderate well-liked independent candidate faces a daunting task persuading voters that he stands any chance at all of winning against the major parties, so under first-past-the-post many people who might &lt;i&gt;want&lt;/i&gt; to vote for him won't because they think their vote will be wasted. &amp;nbsp;For me, that makes AV more democratic as the independent then stands or falls on the issues, not on gamesmanship about whether or not he can get enough other votes to be worth getting my vote too.&lt;br /&gt;&lt;br /&gt;The side effect you do get in AV is the "How To Vote" card. &amp;nbsp;In Australia, parties don't just care that you put them first, they also care about who you might list second, third, fourth, and so on. &amp;nbsp;For example, Australian Labor (yes, it's spelt without the 'u') would much prefer you voted for the Greens second rather than the Nationals as a Green MP would be much more likely to support a Labor government in parliament. &amp;nbsp;So each party has activists stand outside the polls giving you pamphlets telling you not just who they'd like you to put first, but the numbers all the way down the list. &amp;nbsp;"How to Vote Labor", "How to Vote Liberal", "How to Vote Green", and other glossy pamphlets are thrust upon you on the way into to the polling station, in the hope of influencing your second and third preferences as well as your first. &amp;nbsp;And the parties do some deals with each other (especially with the minor parties) around where they put each other on the "How to vote" cards&lt;br /&gt;&lt;br /&gt;But the thing is, as a voter, I can completely ignore those "How To Vote" cards. &amp;nbsp;So the side effect of AV is completely under control of the individual voter. &amp;nbsp;But the side effect of first-past-the-post (&lt;i&gt;"Will enough other people vote for this guy that he's even in the race? &amp;nbsp;Am I wasting my vote here?"&lt;/i&gt;) is bigger than any one voter and so there's nothing an individual voter can do about it.&lt;br /&gt;&lt;br /&gt;In other words, you as an individual voter can stop the gamesmanship around AV, but you can't stop the gamesmanship around First-Past-the-Post. &amp;nbsp;To me, that again makes AV more democratic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2561673141829332403?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2561673141829332403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2561673141829332403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2561673141829332403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2561673141829332403'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/05/av-referendum.html' title='AV referendum'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-273724909390718181</id><published>2011-03-10T15:31:00.000-08:00</published><updated>2011-03-10T15:31:46.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Unfortunate juxtaposition...</title><content type='html'>For some reason, the front page of the online &lt;a href="http://www.telegraph.co.uk"&gt;Telegraph&lt;/a&gt; decided to run a pictorial on criminals' hairstyles today.  Check out who looks like they're in the third row...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Btv0i7slVGU/TXleURvjSgI/AAAAAAAAAD0/YBrCvmr7po4/s1600/Screen%2Bshot%2B2011-03-11%2Bat%2B09.23.42.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="255" width="320" src="http://4.bp.blogspot.com/-Btv0i7slVGU/TXleURvjSgI/AAAAAAAAAD0/YBrCvmr7po4/s320/Screen%2Bshot%2B2011-03-11%2Bat%2B09.23.42.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I mean, I know the Telegraph might not like Obama or Jobs, but what did the labrador do?&lt;br /&gt;&lt;br /&gt;I guess the question is did they accidentally put it that bit too close to the images of their video items, or did someone slip a prank past the editor?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-273724909390718181?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/273724909390718181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=273724909390718181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/273724909390718181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/273724909390718181'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/03/unfortunate-juxtaposition.html' title='Unfortunate juxtaposition...'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Btv0i7slVGU/TXleURvjSgI/AAAAAAAAAD0/YBrCvmr7po4/s72-c/Screen%2Bshot%2B2011-03-11%2Bat%2B09.23.42.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4905934403080718202</id><published>2011-01-06T21:24:00.000-08:00</published><updated>2011-01-06T21:24:24.984-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='santa claus'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Humour: Children's belief in Santa is scientific</title><content type='html'>There's a famous cliché that gets bandied around if anyone has a hunch they can't quite prove: "Well, you might as well believe in Santa Claus".  But here's the shocking flip side that for some reason we all seem to forget: &lt;b&gt;When children believe in Santa, they are actually following the scientific process pretty well&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;What? Surely that's ridiculous?&lt;/b&gt;&lt;/i&gt;  Well, this is a humorous anecdote, but think about it for a second:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Every year, they conduct a falsifiable objective experiment: they put out an empty sock, a glass of milk (or something stronger), and a cookie.  And every year they get a positive result.&lt;/li&gt;&lt;li&gt;They conduct peer review, asking each other the results of their experiments ("Did you get anything from Santa?") and all their fellow experimenters are also getting positive results.&lt;/li&gt;&lt;li&gt;They even validate their experiment against the reports of esteemed experts who have conducted experiments many times in the past (their parents, teachers, and other grown-ups).&lt;/li&gt;&lt;li&gt;And these days many of them have even set up cameras, and then seen video evidence of Santa consuming the cookies and milk that they put out.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Without fail, the experiment has always been a resounding success in every independent trial - far better than you can say, frankly, for a lot of real academic published experiments!  &lt;br /&gt;&lt;br /&gt;And of course the only reason they get the wrong result is because this time there &lt;b&gt;&lt;i&gt;really is&lt;/i&gt;&lt;/b&gt; a grand world-wide ongoing conspiracy to interfere with their experiments and falsify their results, and everyone is in on it!  Forged videos and secret disguises! Evidence tampering, as Dad wolfs down that cooke! Deception by respected senior scientists (parents) they thought they could trust on a global scale!&lt;br /&gt;&lt;br /&gt;Maybe there's a good cautionary tale for budding scientists in this. One seemingly sound but wrong assumption ("Surely not &lt;i&gt;everyone&lt;/i&gt; I trust would lie to me about this?") can sink your whole experiment and leave you with an embarrassingly wrong result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4905934403080718202?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4905934403080718202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4905934403080718202' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4905934403080718202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4905934403080718202'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2011/01/humour-childrens-belief-in-santa-is.html' title='Humour: Children&apos;s belief in Santa is scientific'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-6593742642172240942</id><published>2010-10-21T21:42:00.000-07:00</published><updated>2010-10-24T06:12:28.380-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Apple's Java runtime "deprecated": less news than we might think?</title><content type='html'>Web news outlets have picked up on a comment in the release notes for the latest Apple Java update saying that Apple's version of Java is now &lt;a href="http://developer.apple.com/library/mac/#releasenotes/Java/JavaSnowLeopardUpdate3LeopardUpdate8RN/NewandNoteworthy/NewandNoteworthy.html#//apple_ref/doc/uid/TP40010380-CH4-DontLinkElementID_2"&gt;deprecated&lt;/a&gt; and will receive less frequent updates. The new Mac App Store doesn't permit Java applications, so some, including &lt;a href="http://www.theregister.co.uk/2010/10/21/apple_threatens_to_kill_java_on_the_mac/"&gt;The Register&lt;/a&gt;, have concluded that Apple is trying to kill Java on the Mac.&lt;br /&gt;&lt;br /&gt;This time, I think they are seeing conspiracy theories unnecessarily. (For all I know, Apple might well want to kill Java, but this change makes sense even if they don't.)&lt;br /&gt;&lt;br /&gt;When The Register first published their story, the author conflated "Java" with "Swing".  The original version of the story, when trying to describe the few desktop apps that require Java, linked to a list of apps that use the Swing toolkit.  And so, for instance, didn't include significant applications like Adobe's Flash Builder 4, which uses SWT not Swing.  (The Reg has edited the story since then.)&lt;br /&gt;&lt;br /&gt;Why does that matter? Well, at JavaOne Oracle trumpeted JavaFX not Swing as the way of the future for Java user interfaces. Oracle's &lt;a href="http://javafx.com/roadmap"&gt;JavaFX roadmap&lt;/a&gt; promises a Java plug-in that runs JavaFX without even starting the old abstract windowing toolkit (or, consequently, Swing). But the most visible part of Apple's investment in their own Java runtime has been making Swing look nice and work well on Apple desktops. So it sounds like Oracle effectively deprecated a lot of Apple's work for them!&lt;br /&gt;&lt;br /&gt;Just under where Apple's release notes say "Java Deprecation", it immediately headlines "Third Party JVM Support" (effectively, making it easier to put Oracle's Java runtime on the Mac instead of Apple's.) &lt;br /&gt;&lt;br /&gt;Meanwhile, the SWT toolkit that Eclipse and Adobe Flash Builder 4 use already the Mac's "Cocoa" bindings even when not using Apple's Java runtime.  So those guys, including a lot of Java developers who use Eclipse, probably won't even notice a bump -- their interfaces should look identical on Oracle's runtime or on Apple's.&lt;br /&gt;&lt;br /&gt;All in all, it seems as though deprecating the Apple Java runtime is an attempt to move Mac users to the Oracle Java runtime, not actually a nefarious "kill Java" machination after all.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit:&lt;/b&gt; The thing I'm trying to speculate, without overstepping the mark (it is just speculation), is that I reckon Oracle might have wanted this change to happen. Oracle's recently announced JavaFX roadmap promises a new browser plug-in. The browser plug-in for Java is normally part of the JRE. That suggests to me that Oracle would already have been thinking about whether they needed to take over providing the Mac JRE in order to deliver on their roadmap fast enough. &lt;br /&gt;&lt;br /&gt;That could still be very worrying news for Swing/AWT on Mac, though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-6593742642172240942?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/6593742642172240942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=6593742642172240942' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6593742642172240942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6593742642172240942'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/10/apples-java-runtime-deprecated-less.html' title='Apple&apos;s Java runtime &quot;deprecated&quot;: less news than we might think?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3337852804807824106</id><published>2010-10-19T19:45:00.000-07:00</published><updated>2010-10-19T19:45:34.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>Another JavaFX mistake: LoggerFactory.getLogger(this.getClass())</title><content type='html'>Every now and then I come across a mistake in our code (either mine or someone else's on the team) that demonstrates something about the JavaFX compiler -- a behaviour that breaks a hidden assumption that programmers sometimes have.  Here's another one:&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: html"&gt;&lt;![CDATA[package au.com.nicta.cose.comlex.fx;public class AlignedContainer {    def logger:Logger = LoggerFactory.getLogger(this.getClass());    ...]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;That code's got a potential mistake in it -- if you instantiate a subclass of AlignedContainer, the logger's name won't be AlignedContainer, but the name of the subclass. In JavaFX, the compiler generates subclasses for object literals, and you'll find that many of your loggers are named after generated classes.&lt;br /&gt;&lt;br /&gt;So, in this particular case the logger ended up being&lt;br /&gt;  &lt;br /&gt;&lt;code&gt;au.com.nicta.cose.comlex.fx.TimelineGui$1AlignedContainer$ObjLit$17&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Which is a more awkward to turn on or off individually using log4j.properties (notice that one of the generated parts of the name, "TimelineGui$1", comes before "AlignedContainer"). Why is this the case? Well, the AlignedContainer was instantiated using an object literal:&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: html"&gt;&lt;![CDATA[package au.com.nicta.cose.comlex.fx;public class TimelineGui extends CustomNode, FXReorientable, Resizable, FXHasCommonAxis {        ...        trackHeadersContainer = AlignedContainer {            styleClass: "trackHeadersContainer"            content: bind trackSpaceHeaderNodes;            orientation: bind orientation;            gap: 2;        }       ...]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The JavaFX compiler neatly generates an inner class extending AlignedContainer to implement this object literal:&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: html"&gt;&lt;![CDATA[package au.com.nicta.cose.comlex.fx;final class TimelineGui$1AlignedContainer$ObjLit$17 extends au.com.nicta.cose.comlex.fx.AlignedContainer    implements com.sun.javafx.runtime.FXObject{]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;So then it makes sense that &lt;code&gt;this.getClass()&lt;/code&gt; does not return the AlignedContainer class but this anonymous inner class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3337852804807824106?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3337852804807824106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3337852804807824106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3337852804807824106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3337852804807824106'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/10/another-javafx-mistake.html' title='Another JavaFX mistake: LoggerFactory.getLogger(this.getClass())'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4124843432206301946</id><published>2010-09-29T18:34:00.000-07:00</published><updated>2010-09-29T18:50:09.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>JavaFX Script isn't in JavaFX 2.0 - what's the practical impact for working with JavaFX now?</title><content type='html'>&lt;i&gt;from my JavaOne talk.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;At JavaOne, it was announced that &lt;a href="http://fxexperience.com/2010/09/javafx-2-0/"&gt;JavaFX 2.0 won't support JavaFX Script&lt;/a&gt;. (Or at least, Oracle won't be updating the JavaFX Script compiler for JavaFX 2.0.) Although Oracle had kindly given partners and speakers a little advanced warning of this, I met quite a few people at JavaOne who were taken by surprise. And at face value, the situation today is a little odd:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JavaFX 1.3.1 &lt;i&gt;requires&lt;/i&gt; you to write in JavaFX Script&lt;/li&gt;&lt;li&gt;JavaFX 2.0 &lt;i&gt;won't let&lt;/i&gt; you write in JavaFX Script&lt;/li&gt;&lt;li&gt;(and 2.0 isn't out until next year)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;And many people find themselves in a dilemma: &lt;i&gt;Does that mean all code for 1.3.1 has to be thrown away? What do you do until 2.0 is available if you can't just "wait a year" -- 2.0 code can't be written yet but 1.3.1 code would be wasted?&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After rejigging my talk a little, I inserted a few slides on what I think the practical impact on our project is in the short term. After all, my team has a JavaFX 1.3.1 client. How has this announcement affected us?&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Well, the first thing to say is that even today a lot of a JavaFX client can be written in Java. I ran some rough line counts on our JavaFX client -- the client I demo'ed at JavaOne -- and it came up as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;27% JavaFX Script&lt;/li&gt;&lt;li&gt;&lt;b&gt;73% plain ol' Java&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;So the impact for us is a bit smaller than it appears. Part of that is because I was very cautious about committing the client to JavaFX. JavaFX 1.2, which we had to cope with until April 2010, had some very awkward bugs in it -- and there seemed to be a lot of risk with the Oracle buy-out and JavaFX gaining little market-share. So I kept as much of our code as possible in Java, ready to jump ship from JavaFX if we needed to. The libraries, model, data handling, and most of the guts of our code aren't written in JavaFX Script but just in Java. And it seems that's just as well. I realise other projects might not be in that situation though.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So this seems to be rule 1 for working with JavaFX at the moment:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;If a class doesn't have to be written in JavaFX Script, write it in Java, Scala, Groovy or some other JVM language.&lt;/b&gt; Save yourself the effort of converting it later.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Various talks at JavaOne described possibilites for working in a JavaFX-Script-like way in JavaFX 2.0:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stephen Chin is keen to get an open source project going to update the JavaFX Script compiler so it can target 2.0&lt;/li&gt;&lt;li&gt;Jonathan Giles and Stephen Chin showed how code in Scala, Groovy, or Clojure can look very similar indeed to JavaFX Script&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;In my view, it's too early to assess whether it will be easy to convert non-trivial JavaFX Script code to Scala or another JVM language. The 2.0 libraries are still being written, and nobody has much experience converting non-trivial apps yet -- even some of Oracle's demos in Richard Bair's JavaFX 2.0 talk were still written in JavaFX Script code; they hadn't been converted yet. It should be straightforward -- the 2.0 libraries are supposed to contain all the functionality of the existing JavaFX, so it should just be a matter of converting syntax, not redesigning your client. But let's wait and see on that.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It's also to early to assess whether the open source project to update the JavaFX Script compiler will be successful or not. Again, it should be. The JavaFX Script compiler always compiled to Java, and under 2.0 it'll have some libraries to target that will be a very close mapping to its language features.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So what can you do now?&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;JavaFX 1.3.1 is a production release. And it works pretty well. (Unlike, say, 1.2!) So in the short term, targeting an app at 1.3.1 isn't so bad.&lt;/li&gt;&lt;li&gt;JavaFX Script is still very fast for prototyping. Many of our visualisations were written in hours, not days. If you are doing prototyping or scientific experimentation where the results and the design decisions are more valuable than the code, JavaFX Script is still a pretty good choice.&lt;/li&gt;&lt;li&gt;If you do keep most of your model code in Java, then the JavaFX Script code you write will usually be fairly simple. That means it's going to be less complicated to convert to another language if you decide to.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;For my project, in fact, JavaFX Script not being supported in 2.0 makes very little difference. Government-funded research projects get fixed funding periods, and our current funding round finishes before 2.0 will be released. So we couldn't target 2.0 anyway. (If our hospital partners' experiments are successful, and more funding is won to take it further, that'd come with more development funding to deal with productisation issues -- including upgrading from 1.3.1 to 2.0. We'll make that as easy as possible to do, but we don't have to pencil it into the calendar yet.)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4124843432206301946?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4124843432206301946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4124843432206301946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4124843432206301946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4124843432206301946'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/09/javafx-script-isnt-in-javafx-20-whats.html' title='JavaFX Script isn&apos;t in JavaFX 2.0 - what&apos;s the practical impact for working with JavaFX now?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7356510477162534382</id><published>2010-09-28T19:37:00.000-07:00</published><updated>2010-09-29T03:20:08.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='#bijava'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Checked and unchecked exceptions in Java</title><content type='html'>Over on &lt;a href="http://www.jroller.com/scolebourne/entry/checked_exceptions_bijava"&gt;Stephen Colebourne's blog&lt;/a&gt;, there's a discussion on whether checked exceptions in Java were a bad idea.&lt;br /&gt;&lt;br /&gt;It seems to me that if you declare an exception as being a checked exception, you're effectively making three claims:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;You can't programmatically prevent this exception from occurring.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Declaring checked exceptions requires you to put in code to recover from the exception. &amp;nbsp;It makes no allowance for code that actually won't ever cause the exception in the first place. &amp;nbsp;You can swear blind &lt;i&gt;"No that can't throw a MalformedUrlException because I already know http://www.twitter.com is well formed"&lt;/i&gt;, but the compiler will require you to catch a MalformedUrlException nonetheless. &amp;nbsp;(That trivial example could, for instance, be irritating if you've got a little throwaway app where you want to declare a URL as a static final constant. &amp;nbsp;The checked exception gets in the way even though it will never be thrown.)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;You're so likely to forget to handle this case, and it is likely enough and serious enough to occur, that I'm going to force you to decide how you're going to deal with it right now ...&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;... but it's not so terminal or abnormal that most applications shouldn't try to catch it&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;(That's Error.)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Item 1 in that list makes me think checked exceptions should be rare. &amp;nbsp;Prevention is sometimes better than cure, but checked exceptions force you always to write a cure -- even if you've already prevented it.&lt;br /&gt;&lt;br /&gt;But rare is not the same thing as non-existant. &amp;nbsp;Personally, I think File IO exceptions being checked is reasonable, for example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7356510477162534382?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7356510477162534382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7356510477162534382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7356510477162534382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7356510477162534382'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/09/checked-and-unchecked-exceptions-in.html' title='Checked and unchecked exceptions in Java'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-5142342129201492696</id><published>2010-09-22T18:48:00.000-07:00</published><updated>2010-09-22T19:00:45.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>JavaOne slides &amp; Thanks for listening</title><content type='html'>I just wanted to say thank you to all who came to my talk today.  Especially as I know there was a much higher profile JavaFX Graphics talk going on in another room at the same time. (Yes, that was a bit demoralising!)&lt;br /&gt;&lt;br /&gt;I deliberately skipped some of the technical slides in the presentation -- this is because they are particular to JavaFX Script (deprecated in 2.0).  The slides were the top few most hair-pulling bugs we came across in our JavaFX Script code.  Things my team wished someone had told us before we started.&lt;br /&gt;&lt;br /&gt;But to make sure you don't hit the same issues if you do any JavaFX Script, I have uploaded all the slides (including those) to Slideshare.  The code examples should explain the problems reasonably well, and if not then please do ask.&lt;br /&gt;&lt;br /&gt;Those slides are tucked in at the end of the presentation (91-106!).  No, I didn't really expect to have time to show them -- when the 2.0 changes were announced, I thought it would be more useful to talk about the practical impact of the "death of Script", rather than talk about some technical traps in a language that's been discontinued.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_5263705"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/wbillingsley/javaone" title="Javaone"&gt;Javaone&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse5263705" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javaone-100922203821-phpapp01&amp;stripped_title=javaone&amp;userName=wbillingsley" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse5263705" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javaone-100922203821-phpapp01&amp;stripped_title=javaone&amp;userName=wbillingsley" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/wbillingsley"&gt;wbillingsley&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-5142342129201492696?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/5142342129201492696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=5142342129201492696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5142342129201492696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5142342129201492696'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/09/javaone-slides-thanks-for-listening.html' title='JavaOne slides &amp; Thanks for listening'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3738593272122530116</id><published>2010-09-21T11:19:00.000-07:00</published><updated>2010-09-21T11:29:25.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>Things to expect in my JavaOne talk on JavaFX, OSGi, and the science of good (medical) conversation</title><content type='html'>Things to expect in my talk on Wednesday at JavaOne:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Wed 22nd Sept, 16:45 Hilton San Francisco, Golden Gate 3:&lt;br /&gt;&lt;b&gt;&lt;i&gt;Visualizing the Science of Conversation with JavaFX and OSGi to Save Lives.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;William Billingsley, senior research engineer, NICTA&lt;br /&gt;Session S313951&lt;/blockquote&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;A JavaFX demo that isn't yet another video wall.&lt;/b&gt;&amp;nbsp;&amp;nbsp;Not even wrapped around a big ball and rolling down a slide into &lt;i&gt;yet another&lt;/i&gt; video wall.&lt;/li&gt;&lt;li&gt;&lt;b&gt;The fastest, and hopefully clearest, introduction to OSGi. &amp;nbsp;&lt;/b&gt;We use OSGi on the client&lt;/li&gt;&lt;li&gt;&lt;b&gt;A little commentary on the JavaFX 2.0 changes.&lt;/b&gt; &amp;nbsp;How to sensibly use JavaFX 1.3 given it requires you to use JavaFX Script and that's going away next version. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Programming as experimentation.&lt;/b&gt; &amp;nbsp;What do you do when it's actually a requirement that your requirements are unknown, and the goal of your software is to mine how your non-yet-users think.&lt;/li&gt;&lt;li&gt;&lt;b&gt;What the picture below means, and why JavaFX on Mac finds it &lt;/b&gt;&lt;i&gt;&lt;b&gt;harder&lt;/b&gt;&lt;/i&gt;&lt;b&gt; than a video wall.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_lEDRu33bVO4/TJjtRaQ5_WI/AAAAAAAAACk/TqPLL7RCeB0/s1600/Screen+shot+2010-09-21+at+10.36.16+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="138" src="http://1.bp.blogspot.com/_lEDRu33bVO4/TJjtRaQ5_WI/AAAAAAAAACk/TqPLL7RCeB0/s200/Screen+shot+2010-09-21+at+10.36.16+AM.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;How OSGi lets us build the great wall of science...&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_lEDRu33bVO4/TJj1zn3yooI/AAAAAAAAAC8/rUuqBrg1m-w/s1600/Screen+shot+2010-09-21+at+11.12.29+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://3.bp.blogspot.com/_lEDRu33bVO4/TJj1zn3yooI/AAAAAAAAAC8/rUuqBrg1m-w/s200/Screen+shot+2010-09-21+at+11.12.29+AM.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;...&lt;i&gt;how&lt;/i&gt; this picture knows what you're talking about...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_lEDRu33bVO4/TJj0AefW1ZI/AAAAAAAAAC0/Y8IFPDT6KIo/s1600/Screen+shot+2010-09-21+at+11.03.19+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://2.bp.blogspot.com/_lEDRu33bVO4/TJj0AefW1ZI/AAAAAAAAAC0/Y8IFPDT6KIo/s200/Screen+shot+2010-09-21+at+11.03.19+AM.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;...and how this one knows how hard you were thinking when you said it.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_lEDRu33bVO4/TJjzzzbBRrI/AAAAAAAAACs/Vlc6BrZEA4c/s1600/Screen+shot+2010-09-21+at+11.02.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/_lEDRu33bVO4/TJjzzzbBRrI/AAAAAAAAACs/Vlc6BrZEA4c/s200/Screen+shot+2010-09-21+at+11.02.31+AM.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3738593272122530116?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3738593272122530116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3738593272122530116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3738593272122530116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3738593272122530116'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/09/things-to-expect-in-my-javaone-talk-on.html' title='Things to expect in my JavaOne talk on JavaFX, OSGi, and the science of good (medical) conversation'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lEDRu33bVO4/TJjtRaQ5_WI/AAAAAAAAACk/TqPLL7RCeB0/s72-c/Screen+shot+2010-09-21+at+10.36.16+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1617469598184577074</id><published>2010-09-18T13:08:00.000-07:00</published><updated>2010-09-18T13:30:01.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaOne'/><title type='text'>Science, JavaFX, and OSGi: appearing this week at JavaOne</title><content type='html'>On Wednesday, I'm giving a talk at JavaOne on how my team is using JavaFX to analyse and visualise medical conversations -- JavaFX in a scientific app, all pluggable and extensible via OSGi.&lt;br /&gt;&lt;blockquote&gt;Wed 22nd Sept, 16:45 Hilton San Francisco, Golden Gate 3:&lt;br /&gt;&lt;b&gt;&lt;i&gt;Visualizing the Science of Conversation with JavaFX and OSGi to Save Lives.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;William Billingsley, senior research engineer, NICTA&lt;br /&gt;Session S313951&lt;/blockquote&gt;There have been a few lists of interesting JavaFX talks at JavaOne posted to Twitter and on the Web, and a few of those lists haven't included my talk. How to scare a speaker in one easy step: post a list of interesting talks on his topic and don't include his!&lt;br /&gt;&lt;br /&gt;So,&amp;nbsp;I just wanted to reassure anyone who's thinking of coming to my talk that yes it is on, and it should be relevant and interesting. (Or if it's not interesting, tell me off!)&lt;br /&gt;&lt;br /&gt;A little later, I'll post more on what you can expect to hear at my talk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1617469598184577074?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1617469598184577074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1617469598184577074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1617469598184577074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1617469598184577074'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/09/science-javafx-and-osgi-appearing-this.html' title='Science, JavaFX, and OSGi: appearing this week at JavaOne'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2036328579074215260</id><published>2010-03-31T17:46:00.000-07:00</published><updated>2010-03-31T23:18:05.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='April fool'/><title type='text'>Scientific rumours from CERN</title><content type='html'>As you may be aware, the CERN large hadron collider performed it's first high energy collisions just the other day.  The official statements are that it will take many months or even years to collect and analyse the data.  However, early data already suggests some interesting findings.&lt;br /&gt;&lt;br /&gt;Not one not one but two kinds of strangelet appear to have been created.  The first turns other particles into strangelets as it contacts them.  This might have caused a world-ending reaction had it not been for the second kind.  Once a sufficient density of the first strangelets exists in an area, a kind of anti-strangelet appears.  This exerts a strong attraction force on other particles, and causes the first strangelets to revert back to normal matter.  The strong attraction force suggests this might be an unexpectedly different form of the long sought-after Higgs particle, though this is yet to be confirmed.&lt;br /&gt;&lt;br /&gt;The scientists have informally dubbed the first strangelets as "wise particles" or "cluons" as they mimic the way knowledge is passed from person to person.  The opposite strangelets' flocking behaviour and cancellation effect on wise particles has led to them being dubbed "fools".  &lt;br /&gt;&lt;br /&gt;So, today &lt;a href="http://en.wikipedia.org/wiki/April_Fools%27_Day"&gt;April 1st&lt;/a&gt;, scientists can claim to have identified &lt;a href="http://en.wikipedia.org/wiki/Bozo"&gt;Higg's Bozo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2036328579074215260?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2036328579074215260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2036328579074215260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2036328579074215260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2036328579074215260'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/03/scientific-rumours-from-cern.html' title='Scientific rumours from CERN'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2878935815017171224</id><published>2010-03-29T00:54:00.000-07:00</published><updated>2010-03-29T02:01:49.840-07:00</updated><title type='text'>Programmer interviews and coding tests</title><content type='html'>Jeff Atwood has another blog post up about how &lt;a href="http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html"&gt;"the vast majority of programmers can't program at interview"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Having interviewed programmers, and having thought about this problem from a human factors perspective, I've usually come to the conclusion that coding tests at interview are, in the end, almost useless.&lt;br /&gt;&lt;br /&gt;Let's describe this using a slightly different story...&lt;br /&gt;&lt;br /&gt;Suppose I was interviewing someone -- let's call him Bert --  for a human factors job.  I ask him: &lt;br /&gt;&lt;blockquote&gt;"Bert, why do you think programming interview candidates usually fail simple coding tests, even when all the other empirical evidence (their career thus far, references, and degree from a top rated university) suggests they should be competent?"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And Bert responds: &lt;br /&gt;&lt;blockquote&gt;"Because they're just all that dumb; top tier university professors are fools who can't assess students; the exam results are all fake; and  programmers' bosses are all just bozos that can't see whether any code is being produced even if they are programmers themselves.  The empirical evidence from the rest of their careers is wrong and my toy interview question asked by an untrained interviewer over the telephone is right!"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Bert would not be getting the job.  (However much the grumpy misanthrope in me might want to cheer him on in railing against the world!)&lt;br /&gt;&lt;br /&gt;Like it or not, coding at interview is very different from coding on a job.  To use a loose analogy: a great many people struggle at public speaking -- shove a microphone in front of them and ask them to talk for a minute about rain, and they say "Um, er, um... Mummy can I go home now?".  That does not mean they don't know English or what rain is.  Dumbing the question down to "Ok, just talk about &lt;i&gt;water&lt;/i&gt; then" doesn't solve the problem - because it wasn't the topic that was the problem in the first place. &lt;br /&gt;&lt;br /&gt;In an interview, we have a fake task (nobody wants to use the code), in a fake setting (an interview), via a false interaction (over the telephone!), with a false assessment (one interviewer whose word is final, no compiler, no user, no sales, no code metrics or unit tests), a fake timeframe (a few minutes on each 'project'), false pressures (your job depends on the next ten lines of code), and somehow we expect to have valid results.  Speaking as a scientist, that's just nuts.&lt;br /&gt;&lt;br /&gt;At this point, most people reply "Sure, but we don't care about missing out on good candidates, only not hiring bad ones."   I have worse news for you.  You are probably still hiring as many bad candidates as if you selected your candidates by rolling dice.  Most interview coding tasks are so over-simplified that they no longer select for programming or thinking skills at all -- the "programming on stage" skill dominates completely.  The irony is that by selecting for "skill at interview coding tasks" you might find yourself effectively selecting for people who have done a lot of interviews and honed that skill -- but you actually want to hire the person who has hardly done any interviews because no company ever wants to let him leave.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2878935815017171224?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2878935815017171224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2878935815017171224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2878935815017171224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2878935815017171224'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/03/programmer-interviews-and-coding-tests.html' title='Programmer interviews and coding tests'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4944820977920810265</id><published>2010-03-09T17:53:00.001-08:00</published><updated>2010-03-09T18:24:37.694-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>JavaFX initialisation order (solved?)</title><content type='html'>The semantics of JavaFX's initialisation order can be hard to find, and in a previous post, I was finding it gave some odd effects.  Having looked on the &lt;a href="http://javafx-jira.kenai.com/"&gt;JavaFX bug tracker&lt;/a&gt;, it turns out it the issue is fairly simple, but needs trumpeting from the hills because it is still unexpected.&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: html"&gt;&lt;![CDATA[&lt;br /&gt;class A {&lt;br /&gt;    var one = 1;&lt;br /&gt;}&lt;br /&gt;class B extends A {&lt;br /&gt;  def two = 2;&lt;br /&gt;  override var one = two;&lt;br /&gt;}&lt;br /&gt;]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;B.one&lt;/code&gt; will be &lt;code&gt;null&lt;/code&gt;.  How is that possible?  Because of what override means -- it changes the definition but not the "order of declaration".&lt;br /&gt;&lt;br /&gt;A naive person might think that &lt;code&gt;B.one&lt;/code&gt; would first be set to &lt;code&gt;1&lt;/code&gt; (in the initialisation of &lt;code&gt;A&lt;/code&gt;) and then to 2 (in the initialisation of &lt;code&gt;B&lt;/code&gt;).  Or they might think that &lt;code&gt;B.two&lt;/code&gt; will be set before &lt;code&gt;B.one&lt;/code&gt; because it comes first in &lt;code&gt;B&lt;/code&gt;'s script.  But that's not how JavaFX does it.  The variable &lt;code&gt;one&lt;/code&gt; is initialised first because it is declared first (in &lt;code&gt;A&lt;/code&gt;'s class declaration, which comes before &lt;code&gt;B&lt;/code&gt;'s.)  But it is set to &lt;code&gt;B.two&lt;/code&gt; because only the override initialiser takes place.  Unfortunately, this means it is set to &lt;code&gt;B.two&lt;/code&gt; before &lt;code&gt;B.two&lt;/code&gt; has actually been defined -- so it gets set to null.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The moral of the story&lt;/span&gt;: Don't use &lt;code&gt;override var&lt;/code&gt; if you want to set the variable to refer to another member variable.  It's a forward reference.  Even if the member variable you want to refernce also comes from a superclass, it could still be a forward reference (because you don't know what the order of declaration was in the superclass).&lt;br /&gt;&lt;br /&gt;If in doubt, set it in the &lt;code&gt;init&lt;/code&gt; block.  That always happens in the order that you specify in the block, after everything else has happened.  It's boring and more Java-like, but at least you can even step through it with a debugger and put log messages in if you need to!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4944820977920810265?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4944820977920810265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4944820977920810265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4944820977920810265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4944820977920810265'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/03/javafx-initialisation-order-solved.html' title='JavaFX initialisation order (solved?)'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2241939351157479591</id><published>2010-03-02T00:28:00.001-08:00</published><updated>2010-03-09T18:27:53.336-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>JavaFX initialisation craziness</title><content type='html'>&lt;span style="font-weight:bold;"&gt;UPDATE:  &lt;a href="http://wbillingsley.blogspot.com/2010/03/javafx-initialisation-order-solved.html"&gt;Another post describes the solution.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JavaFX is Sun/Oracle's new user interface platform for Java.  It has many features that are quite nice.  But it has a few oddments that are hair-pullingly irritating.&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: html"&gt;&lt;![CDATA[&lt;br /&gt;public class MyControl extends Control {&lt;br /&gt;  override var skin = MySkin { };&lt;br /&gt;  override var onMousePressed =&lt;br /&gt;    (skin.behavior as MyBehaviour).onMousePressed;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class MySkin extends Skin {&lt;br /&gt;  override var behavior = MyBehaviour{ };&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class MyBehaviour extends Behavior {&lt;br /&gt;  public-read def onMousePressed =&lt;br /&gt;    function(event:MouseEvent):Void {&lt;br /&gt;      println("MOUSE PRESSED");&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The naïve among us might think that pushing the mouse button would indeed be wired through to MyBehaviour.onMousePressed, and "MOUSE PRESSED" would be printed.  Apparently not.  &lt;br /&gt;&lt;br /&gt;In the language reference, there is this irritating line &lt;a href="http://openjfx.java.sun.com/current-build/doc/reference/InstanceInitialization.html"&gt;when it describes the initialisation order&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;The values of the object literal's instance variable initializers are computed (but not set).&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;"but not set".  Of all the evil villainous schemes...  The MySkin and MyBehaviour objects are created, but MyControl.skin isn't actually assigned until later, so the following line wiring the mouse events to it breaks.&lt;br /&gt;&lt;br /&gt;I keep finding that JavaFX is wonderfully concise, but really tricky to debug, and irritatingly fragile as many of its conventions don't do what you'd expect (like let you refer to an assignment you made in the previous line during initialisation, as in this example).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2241939351157479591?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2241939351157479591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2241939351157479591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2241939351157479591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2241939351157479591'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/03/javafx-initialisation-craziness.html' title='JavaFX initialisation craziness'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-5100071820510628388</id><published>2010-02-25T03:57:00.000-08:00</published><updated>2010-02-25T04:13:18.148-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Australian Internet Filter</title><content type='html'>Senator Kate Lundy &lt;a href="http://apcmag.com/senator-kate-lundy-proposes-internet-filter-lite.htm"&gt;has made an alternative proposal for an Australian internet filter&lt;/a&gt;, bringing it back into the news again.  However, her suggested opt-outs have not appeased everyone who is opposed to there being a government filter at all.&lt;div&gt;However, another kind of internet filter -- one that already exists and seeks to restrict access to sites -- has been remarkably successful and has not had the same kind of fuss made about it.  That is the filter that modern browsers have built into them to block phishing and other fraudulent sites.  Many browsers check a blacklist of URLs and if you try to visit a page on the blacklist, you'll have to click through a very serious warning first.&lt;div&gt;However, surely this also makes the gradual introduction of an optional government filter rather easy.  If the government simply maintains a database of sites and the social or legal reasons why they might be inadvisable, the browser manufacturers could be nudged into showing appropriate warning boxes for them too.  The rationale would be that if a person visited a site that had been officially declared a source of illegal material they'd find it hard to argue that they didn't know it was a bad site.  So the browser publishers might start to feel they should protect their users from legal trouble just as they currently protect them from fraud.  &lt;/div&gt;&lt;div&gt;I suspect a warning along the lines of "keep visiting this site and the police will be after you" is one that few people would ignore.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-5100071820510628388?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/5100071820510628388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=5100071820510628388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5100071820510628388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5100071820510628388'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2010/02/australian-internet-filter.html' title='Australian Internet Filter'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1483476754286056645</id><published>2009-08-20T16:55:00.001-07:00</published><updated>2009-08-20T17:03:34.338-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cricket'/><title type='text'>The problem with cricket</title><content type='html'>The Ashes have been on, and, while I don't often watch cricket, I couldn't pass up the chance to watch at least some of the series, given I'm a citizen of both countries involved.  It's been tight and entertaining, but I can't help feel that too much of it comes down to the luck of the umpiring decision.  In the match England won, at Lords, three Australian batsmen were incorrectly given out in their last innings when replays showed they shouldn't have been.  And in this deciding match at The Oval, two of England's top order (Strauss and Bell) have been given out off what should have been no-balls.  In a game where there can be fifty or a hundred runs between wicket-taking balls, that potentially makes a match-changing difference.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's just that irritating sense of pointlessness behind the game when umpiring mistakes are as likely to decide the game as the skill of any of the players.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1483476754286056645?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1483476754286056645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1483476754286056645' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1483476754286056645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1483476754286056645'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/08/problem-with-cricket.html' title='The problem with cricket'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-5657892984070224718</id><published>2009-07-12T19:19:00.000-07:00</published><updated>2009-07-12T19:40:02.288-07:00</updated><title type='text'>Ponting not happy (again)</title><content type='html'>It seems our Australian cricket captain &lt;a href="http://foxsports.com.au/story/0,,25770382-5009880,00.html"&gt;isn't happy again&lt;/a&gt;.  In 2005, he hit the papers complaining about England using substitute fielders (&lt;a href="http://www.guardian.co.uk/sport/2005/aug/28/ashes2005.ashes1"&gt;especially when he was run out by one&lt;/a&gt;).  This year, he's stepped things up a gear.   It's only the first test of the series and already he's complained about Cardiff hosting the first test, wides being called wide, and James Anderson changing his glove a second time after he spilt his drink on the first fresh one.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Punter, Australia is a country whose cricketers are (sadly) famous for sledging and shoulder-barging, and you're angry that changing a wet glove isn't in the spirit of the game?  I think you might just be having a bit of a whinge.  And in most of the newspaper coverage, you're reported as saying:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;"I won't be saying anything about it."&lt;/blockquote&gt;Well, maybe not to the match referee, but if you've been quoted in all the newspapers on both sides of the planet, I think you've said something about it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-5657892984070224718?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/5657892984070224718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=5657892984070224718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5657892984070224718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5657892984070224718'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/07/ponting-not-happy-again.html' title='Ponting not happy (again)'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1708412528684319092</id><published>2009-06-04T00:11:00.000-07:00</published><updated>2009-06-04T00:16:19.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trivia'/><title type='text'>A selfish reason for liking Bing.com</title><content type='html'>Every now and then a new search engine comes out, and (I suspect like everyone else) the first thing I try searching for is my own name.  And, woohoo, the top link using Microsoft's new &lt;a href="http://www.bing.com"&gt;bing.com&lt;/a&gt; is my own website.  I'm only second and third in the search results on Google.  I like Bing :)&lt;br /&gt;&lt;br /&gt;Well, at least until it finds out about that much more famous pottery-painting &lt;a href="http://en.wikipedia.org/wiki/William_Billingsley_%28artist%29"&gt;William Billingsley &lt;/a&gt;and, quite rightly, dethrones me from the listings the way Google did!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1708412528684319092?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1708412528684319092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1708412528684319092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1708412528684319092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1708412528684319092'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/06/selfish-reason-for-liking-bingcom.html' title='A selfish reason for liking Bing.com'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-6130244909114754742</id><published>2009-06-02T21:59:00.000-07:00</published><updated>2009-06-02T23:05:37.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intelligent Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='SCFX'/><title type='text'>XML modifications in Google Wave and SCFX</title><content type='html'>So, a few of the technical bits of &lt;a href="http://wave.google.com/"&gt;Google Wave&lt;/a&gt; remind me of some things I looked at briefly during my PhD a few years ago (but only a few, and solving a different problem -- I'm not claiming to have "invented Google wave" like those people who claim Harry Potter was really their idea).&lt;br /&gt;&lt;br /&gt;A part of Google Wave's &lt;a href="http://www.waveprotocol.org/draft-protocol-spec#element-delta"&gt;protocol&lt;/a&gt; is way of sending changes to an XML document, so that changes you make locally are reflected on the "canonical" server copy of the document and can be broadcast out to other viewers.  This was something I looked at too -- albeit in a "good enough is good enough" sort of way -- so I was interested to see how the problems we faced differ, and what Google's solution looks like.&lt;br /&gt;&lt;br /&gt;Well,  Wave has to solve a few extra problems: their documents are edited by many people at once, so the change format has to be transformable, so that different people's changes can be reconciled.  (In the Intelligent Book, even though pages are concurrently editable, exercises are usually worked on by students individually, so I could duck this issue.)  They also have to deal with federated servers, security, etc.  So, they've been looking at a much harder problem than I was with my little change format.  And while their solution is still being refined, so far it looks pretty good.&lt;br /&gt;&lt;br /&gt;However, from my very brief look, there was something that made me think "hmm, maybe you've missed a trick here".  Google Wave's deltas are explicitly defined as an XML format.  With SCFX (Simple Change Format for XML), which was my remote XML change API, I decided just to define function calls for each kind of modification -- including a "with" call for wrapping multiple calls into a transaction -- and to avoid defining a serialisation.  In other words, I avoided specifying any particular XML schema.  Why?  Well, I realised that the function calls to my API were going to be made both locally and remotely.  In the local case, it's inefficient to go writing and reading XML just to make a call to change a document.  And in the remote case, whichever Web RPC format you use &lt;span style="font-weight: bold;"&gt;already defines a format for serialising a function call into text&lt;/span&gt;.  If I use XML-RPC, then the XML-RPC stub itself will turn my function calls into a piece of XML to send over the Web.  The same happens if I use SOAP.  So, by refusing to define an XML format, I could just say "here are the functions, call them using any of the following RPC technologies".  So, for instance, I could pass changes from the server back to the browser marked up as Javascript code if I liked.  And I wasn't tied to this extra step of deserialising my own special XML format.&lt;br /&gt;&lt;br /&gt;Apart from that -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wave's protocol looks like just a diff -- add and delete of content -- whereas SCFX also included larger operations such as move and copy, so that for instance an app that used a tree of complex GUI components to show a tree of XML elements could just move them rather than having to recreate them afresh if the XML element at the top was moved.&lt;/li&gt;&lt;li&gt;Google Wave relies on a particular character layout of the XML -- for instance there must be no empty tags (&lt;foo&gt;&amp;lt;foo /&amp;gt;), and all the clients need to treat whitespace identically.  SCFX used XPaths to address content, so this wasn't so fragile.  (But an XPath would be difficult to transform).&lt;br /&gt;&lt;/foo&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/7232678821280376479-6130244909114754742?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/6130244909114754742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=6130244909114754742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6130244909114754742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6130244909114754742'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/06/xml-modifications-in-google-wave-and.html' title='XML modifications in Google Wave and SCFX'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3065829777647632826</id><published>2009-06-01T22:32:00.000-07:00</published><updated>2009-06-02T22:52:08.158-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intelligent Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><title type='text'>"Everything's going my way"* (ramblings on Google Wave)</title><content type='html'>&lt;span style="font-style: italic;"&gt;* The title of this post is just because I had "Oh What A Beautiful Morning" stuck in my brain at the time I wrote this!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;During my PhD (2003-2007) I developed a system called "The Intelligent Book" &lt;a href="http://www.theintelligentbook.com/"&gt;(public demo returning soon)&lt;/a&gt;.  One aspect of it is a collaboratively edited textbook that let you embed graphical gadgets into the pages -- circuits etc -- and as students worked with them, intelligent components on the server would interact with them, add annotations, and offer their advice right back into the page.  And it all used lightweight open protocols (the communication was around XML-RPC and Javascript), but allowed the graphical components to be applets because doing graphical stuff in HTML was tough back then.  It even used a message format describing changes to an XML document.&lt;br /&gt;&lt;br /&gt;In 2007, I noticed some of the movement within &lt;a href="http://www.sakaiproject.org/"&gt;Sakai&lt;/a&gt; (an open source Courseware Management System) was towards a similar easily-edited gadget-embeddable structure.  A book chapter I've written -- &lt;a href="http://www.igi-pub.com/reference/details.asp?ID=34434&amp;amp;v=tableOfContents"&gt;chapter 13 of this book&lt;/a&gt; -- discusses some of the economic effects that I think are pushing learning products in this direction.&lt;br /&gt;&lt;br /&gt;Last week, Google announced &lt;a href="http://wave.google.com/"&gt;Google Wave&lt;/a&gt;.  This isn't aimed at education -- they're pitching it as a grand attempt to replace email, instant messaging, and all other forms of Web communication (good luck!).  But within it, it has collaboratively edited content, with graphical gadgets that can be embedded at the client, and intelligent robots that can be embedded at the server.  The communication is about changes to XML documents, and the robots mark changes back up into the original page...&lt;br /&gt;&lt;br /&gt;Of course, there was more to the thesis of the Intelligent Book than just gadgets, robots, and editable pages -- and of course Google Wave solves many different and bigger issues than I've described here.  But it's always quite reassuring to see commercial software endeavours heading in similar directions to ones I've advocated in my research, even if only in small ways and in unexpected fields.  Makes me feel as if maybe I'm not just a lone nutcase baying in the wilderness after all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3065829777647632826?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3065829777647632826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3065829777647632826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3065829777647632826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3065829777647632826'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/06/everythings-going-my-way-ramblings-on.html' title='&quot;Everything&apos;s going my way&quot;* (ramblings on Google Wave)'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7830246174096067319</id><published>2009-05-19T21:35:00.000-07:00</published><updated>2009-05-19T22:12:42.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>CNN story on teen pregnancy</title><content type='html'>A &lt;a href="http://www.cnn.com/2009/HEALTH/05/19/latinas.pregnancy.rate/index.html"&gt;story on the CNN website&lt;/a&gt; started with this very emotive statement:&lt;br /&gt;&lt;blockquote&gt;She had many plans for the future: to go to college, start a career, meet the man of her dreams, raise a family -- when the time was right.  It was all cut off by an unexpected pregnancy. The baby became her life, consuming her energy and forcing her dreams to the back burner of her life.  She is 19 or younger and Latina, and has had her first baby.&lt;/blockquote&gt;I wonder whether, socially, Western countries have set up a double standard.  Legally we consider the young women involved to have the right to get pregnant and have a child (they are over the age of consent), but then very often we deride and scorn them if they do.  &lt;span style="font-style: italic;"&gt;"They've thrown away&lt;span style="font-style: italic;"&gt; their future&lt;/span&gt;&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;college, a chance of a good career&lt;/span&gt;", we lament.  We don't seem to think for a moment &lt;span style="font-style: italic;"&gt;"Hang on, if this country has decided that is an acceptable age to engage in sex and fall pregnant, then logically we should ensure that social structures such as college do not excessively disadvantage people with children".&lt;/span&gt;  If college is so discriminatory and unsupportive that having a child "cuts off" a mother's chances of going to college and having a career, why don't we fix it so it doesn't?&lt;br /&gt;&lt;br /&gt;As it stands, there is a massive social pressure for young mothers to have a termination.  Effectively, we're pushing the message that children are a blight, a curse, and something young mothers should not be having (though we consider it a sign of healthy normality if they engage in the activity that creates them).  Twenty years later, when the same mother is struggling to conceive through IVF in her late thirties, as she's now in a financially better situation to take a career break, of course we moan &lt;span style="font-style: italic;"&gt;"why didn't you have your children earlier?"&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;In short we seem to have a duplicitous social model at the moment where we polish our liberal halos proclaiming &lt;span style="font-style: italic;"&gt;"We don't try to push religious morals onto secular young women.  (But if they don't fit our social norms of what they do and at what age, boy are we going to disadvantage them for it.)"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7830246174096067319?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7830246174096067319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7830246174096067319' title='39 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7830246174096067319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7830246174096067319'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/05/cnn-story-on-teen-pregnancy.html' title='CNN story on teen pregnancy'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2501463964704475780</id><published>2009-05-15T01:41:00.001-07:00</published><updated>2009-05-15T06:04:04.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='health'/><category scheme='http://www.blogger.com/atom/ns#' term='NHS'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>A whinge about the Australian health system</title><content type='html'>At the moment, there's a bit of a ding-dong battle going on between Australian Labor and the Liberals over healthcare.  The usual accusations are that Liberals want to do away with public healthcare and push everyone onto private insurance, while the Liberal supporters moan that Labor wants to do away with private insurance and have socialised healthcare.  The two parties' supporters, of course, often have arguments about it on forums and in comments about news articles.  I'm not especially political, but there's a rhetorical attack, borrowed from Republicans in the US, that gets used quite often on forums: "be warned, if they socialise medicine, it'll turn into something like the NHS"&lt;br /&gt;&lt;br /&gt;Well, in case any Australians happen to read this post, perhaps via Google, I'd just like to express this personal opinion:&lt;br /&gt;&lt;br /&gt;Every British ex-pat I know in Australia, my own family included, longs for the Australian system to become more like the NHS.  Under the NHS we had a home water-birth attended by two midwives; no cost.  (In Brisbane, from what we can tell, that would be prohibitively expensive.)  Midwives or health visitors then came round frequently as a matter of course over the next few weeks to check things were well, help with breastfeeding, etc, regularly over the following.  No cost.  And no having to search for one.  All the GPs were trained in how to do six-week baby checks (except of course we flew to Aus before then), and the local practice had nurses trained in many of the regular adult checks, so somethings that you'd get charged $100 for a doctor's appointment in Aus wouldn't even require a doctor's appointment under the NHS.&lt;br /&gt;&lt;br /&gt;Everyday healthcare in Brisbane involves cost and a fair amount of inconvenience.  A week or two ago, the campus practice nurse suspected I might have measles, which is a notifiable disease and is important to diagnose quickly for public health reasons.  But they had no appointments, so I had to catch a bus (yup a nice crowded one where I could spread it around) an hour across Brisbane to get to a GP who would be able to give me an appointment that day.  (Thankfully, it wasn't measles.)   Our child's GP, meanwhile, is on the other side of the city from where we live, because apparently it's really hard to get a pediatrician, and that's the closest GP we heard about who was taking on patients and was known to do six-week baby checks.&lt;br /&gt;&lt;br /&gt;Meanwhile, it seems Australians are pressured into taking out expensive private insurance that from what I can tell reading the small print, doesn't actually seem to cover much of anything.  Although it keeps stressing how important it is you check whether your doctor participates in this particular company's GapCover scheme and what their copayments are, yadda yadda, whole bunch of small print economics details I really won't want to be thinking about if I ever need an operation.&lt;br /&gt;&lt;br /&gt;The key difference seems to be that in a socialised healthcare system like the NHS, it is a government responsibility to ensure that doctors and healthcare are readily available and easy to deal with, and so the public at least has some possibility of holding them to account.  Under a private provision system, even with Medicare, if medical services are not available or not easy to deal with "well, you'd have to take that up with the private company in question".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2501463964704475780?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2501463964704475780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2501463964704475780' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2501463964704475780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2501463964704475780'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/05/whinge-about-australian-health-system.html' title='A whinge about the Australian health system'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1861807644657551332</id><published>2009-01-28T19:26:00.000-08:00</published><updated>2009-01-28T19:36:53.560-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moving'/><category scheme='http://www.blogger.com/atom/ns#' term='Australia'/><title type='text'>in Australia</title><content type='html'>Between Facebook, email, and all the other forms of electronic communication, almost everyone who might read this already knows, but Fiona, Euan, and I arrived safely in Brisbane two weeks ago.  The first couple of weeks has been a mish-mash of trying to sort out Euan's citizenship, re-enrolling in Medicare, looking for a house and car, and all the rest of moving into a new country.&lt;br /&gt;&lt;br /&gt;I've just about got over the panic of "how are we going to look after Euan in such a hot country?", but there are still many things I'm trying to get back used to.  Like hills, and heat.  My role here is nominally three years, and I'm aware that Brisbane is a fairly small economy for people in computing, so it's likely we'll be back in Cambridge some time soon -- and there are many things and people I miss.  But for the moment it's great that Euan's grandparents will get to see him regularly in his early years, and our family and friends here have been very supportive in helping us to make the move.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1861807644657551332?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1861807644657551332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1861807644657551332' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1861807644657551332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1861807644657551332'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/01/in-australia.html' title='in Australia'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4121063429655848869</id><published>2009-01-21T22:33:00.001-08:00</published><updated>2009-01-21T22:33:55.368-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal incompetence'/><title type='text'>Oops wrong blog</title><content type='html'>Is it clumsiness? Dyslexia? Some Freudian notion that tries to turn one topic into another? Whatever it is, I keep finding myself making posts to &lt;span style="font-style: italic;"&gt;the wrong blog&lt;/span&gt;. A personal post about my son briefly showing up on a work blog, or a work post on my own blog. Ah, it's a befuddled world in Billingsleyland at the moment. Thankfully, it's fairly quick to delete them, but I do wonder if the early adopters out there, using RSS readers that eagerly grab the updates, end up still reading material posted in the wrong place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4121063429655848869?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4121063429655848869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4121063429655848869' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4121063429655848869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4121063429655848869'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2009/01/oops-wrong-blog.html' title='Oops wrong blog'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4651762270696342441</id><published>2008-12-22T13:37:00.000-08:00</published><updated>2008-12-22T13:40:00.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Euan'/><title type='text'>Euan</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lEDRu33bVO4/SVAJEiWDolI/AAAAAAAAABk/QBpjTjFZtHY/s1600-h/euan.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_lEDRu33bVO4/SVAJEiWDolI/AAAAAAAAABk/QBpjTjFZtHY/s320/euan.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5282732336449036882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;My son Euan was born a week and a half ago.  Unusually, given his dad's a computer scientist, the Internet was among the last to know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4651762270696342441?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4651762270696342441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4651762270696342441' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4651762270696342441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4651762270696342441'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/12/euan.html' title='Euan'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lEDRu33bVO4/SVAJEiWDolI/AAAAAAAAABk/QBpjTjFZtHY/s72-c/euan.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1035118993253958854</id><published>2008-10-23T08:18:00.000-07:00</published><updated>2008-10-23T08:31:31.766-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><title type='text'>The Parable of the Unforgiving Banks?</title><content type='html'>In the news today, the banks the UK government have been bailing out and providing emergency loans to are reportedly being less than helpful when small businesses approach them for loans, and &lt;a href="http://www.telegraph.co.uk/finance/newsbysector/banksandfinance/3243531/Alistair-Darling-and-Lord-Mandelson-to-get-tough-with-banks.html"&gt;the UK Chancellor and the Business Secretary are unhappy about it&lt;/a&gt;.  An odd thought popped into my head that this sounds rather like &lt;a href="http://www.biblegateway.com/passage/?search=Matthew+18:23-35"&gt;an old parable&lt;/a&gt; playing out in real life (though I can't really imagine the UK government changing its mind about rescuing the banks).  But I can just imagine Alistair Darling thinking "Maybe I should ask the Archbishop of Canterbury to pop round to RBS and have a word".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1035118993253958854?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1035118993253958854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1035118993253958854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1035118993253958854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1035118993253958854'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/10/parable-of-unforgiving-banks.html' title='The Parable of the Unforgiving Banks?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1311838711339670993</id><published>2008-10-15T15:48:00.000-07:00</published><updated>2008-10-15T15:50:55.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='docwit'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Docwit</title><content type='html'>Coming soon to &lt;a href="http://www.theintelligentbook.com"&gt;the Intelligent Book&lt;/a&gt; is an update to the way that content is edited to support real-time collaborative editing. If two people edit the same page at the same time, they will see each other's changes as they happen. (Well, with maybe a 30 second delay.) This is a way of editing that users have become used to with sites like Live Workspace, Acrobat.com, and Google Docs. &lt;br /&gt;&lt;br /&gt;The code is actually already in the Intelligent Book, I just haven't turned it on yet. One way of thinking about it is that it does docs with &lt;a href="http://tinymce.moxiecode.com/"&gt;TinyMCE&lt;/a&gt;. The same code is also intended to go into the &lt;a href="http://www.sakaiproject.org"&gt;Sakai 3&lt;/a&gt; content management system, so I've set up an open source project for it called &lt;a href="http://docwit.sourceforge.net"&gt;Docwit&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1311838711339670993?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1311838711339670993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1311838711339670993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1311838711339670993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1311838711339670993'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/10/docwit.html' title='Docwit'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3904736509409771660</id><published>2008-09-28T13:15:00.000-07:00</published><updated>2008-09-28T14:29:48.408-07:00</updated><title type='text'>CSS, still not great</title><content type='html'>After being in the too-comfortable position of being able to develop and demo &lt;a href="http://www.theintelligentbook.com"&gt;the Intelligent Book&lt;/a&gt; on a Mac, I finally had to bite the bullet and sort out the layout for various different browsers.  Sadly, it seems that cross-browser CSS is still just as much of a pain as it ever was.&lt;br /&gt;&lt;br /&gt;Some of the wrinkles (as "notes to self"):&lt;br /&gt;&lt;br /&gt;Firefox 2 does not understand inline-block.  IE7 does, but only for inline elements (not 'div's and 'li's).  One solution to this is to make almost everything a span, and then:&lt;br /&gt;&lt;blockquote&gt;display: table-cell;&lt;br /&gt;display: inline-block;&lt;br /&gt;&lt;/blockquote&gt;Firefox 2 will default to table-cell (skipping the following inline-block).  Most other browsers will use inline-block.&lt;br /&gt;&lt;br /&gt;IE8, even though it has better support, gets things wrong with resized images in inline-blocks.  Specifically, if you resize the image by setting just the height, although it readjusts the width of the image as it displays, it still uses the old image width when calculating the size of the block (meaning lots of excess whitespace).&lt;br /&gt;&lt;br /&gt;Chrome (so perhaps also Safari) has an odd effect when you try to work around browser differences by lining inline-blocks up as &lt;blockquote&gt;diplay: table-cell&lt;/blockquote&gt; A paragraph placed in the code above nested table content within the table-cell will often appear underneath the table-cell instead of above it.  This can be fixed by setting the paragraph as &lt;blockquote&gt;display: table-caption&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3904736509409771660?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3904736509409771660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3904736509409771660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3904736509409771660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3904736509409771660'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/09/css-still-not-great.html' title='CSS, still not great'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7510136960879239109</id><published>2008-09-18T01:30:00.000-07:00</published><updated>2008-09-18T01:42:12.632-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Redirecting</title><content type='html'>I don't use Google's Chrome browser very often, but today I did and I noticed that in the home page (that shows little square snapshots of your most visited sites), the square snapshot of the GMail login page is shown with the title "Redirecting" rather than Gmail.  Just thought it was curious that happened for one of Google's own products.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lEDRu33bVO4/SNIUAPfXE4I/AAAAAAAAAAQ/Io5sn5DL3KA/s1600-h/Capture.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_lEDRu33bVO4/SNIUAPfXE4I/AAAAAAAAAAQ/Io5sn5DL3KA/s320/Capture.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5247278510230672258" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7510136960879239109?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7510136960879239109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7510136960879239109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7510136960879239109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7510136960879239109'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/09/redirecting.html' title='Redirecting'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lEDRu33bVO4/SNIUAPfXE4I/AAAAAAAAAAQ/Io5sn5DL3KA/s72-c/Capture.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8986601971273691210</id><published>2008-09-01T11:37:00.000-07:00</published><updated>2008-09-01T12:04:15.160-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Chrome</title><content type='html'>So apparently Google is working on it's own browser, and they have produced probably &lt;a href="http://blogoscoped.com/google-chrome/"&gt;the least funny comic in history&lt;/a&gt; to let the world know.  Apart from the technical reasons for the browser, that are trumpeted in the cartoon, I imagine the business types at Google are also interested in solving the little issue that while most of the world use Google's search platform, they mostly do it using their arch-competitor's browser (Internet Explorer).  Despite extensive funding from Google, Mozilla have never had the brand presence to undo Microsoft's browser-dominance as much as Google would, no doubt, like.&lt;br /&gt;&lt;br /&gt;Google's project is planned to be open source, make all the technical bloggers very happy people.  But it's worth remembering that "open source" does not mean "democratic".  We can reasonably expect Google's browser to be designed carefully around Google's services.  This is a branded browser that it likely to be promoting GMail over, say, Hotmail or Yahoo, and GTalk over Skype, AIM, or Facebook's instant messaging.&lt;br /&gt;&lt;br /&gt;But then, the chances are that even Google's brand presence will not push out IE in the near term -- how do you market a "better browser" to an end-user who doesn't know any of the technical reasons?  Especially when you can't afford to stop giving the browser they're already using great support?  However, a Google Browser probably could out-compete Mozilla's Firefox.  (And for how long will Google continue to fund Mozilla?  They are by far the biggest financial contributor at the moment.)   That in turn could help Google dominate some of the competition in Web-based applications -- the losers from this might well be AOL, Skype, and Adobe.&lt;br /&gt;&lt;br /&gt;And then there's the small matter of upcoming competition -- competing for the next generation of apps.  Adobe AIR threatens to take Web applications out of the browser, and provides a rich application environment without some of the hassles of HTML.  That could become a compelling story, and Adobe have a history of getting their product out to a large userbase (Flash has around a 90% install-base).  And they have an online-documents suite that is a minor competitor to Google Docs, but that could easily become more compelling.   So, it is very much in Google's interests to improve the HTML+Javascript experience of the browser, since that is where all of their business is based.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8986601971273691210?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8986601971273691210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8986601971273691210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8986601971273691210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8986601971273691210'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3067307626739718591</id><published>2008-08-20T11:02:00.000-07:00</published><updated>2008-08-20T11:58:04.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>Width and readability</title><content type='html'>I've just switched the "theme" of this blog to a fixed width theme.  As screens get wider, it can be awkward if lines of text are too long because it's too easy to lose your place when your eyes flick back to find the start of the next line.&lt;br /&gt;&lt;br /&gt;Related odd thought:  I remember reading (I forget where -- I think somewhere in the documentation for the LaTeX publishing system) that the Times font was designed specifically for narrow columns of text, as you get in the Times newspaper, and there was a warning that it could look awkward for documents with much wider single-column formats.  However, it's been the default in Word for a decade (though they changed it in Word 2007), and probably most of the documents any of us have printed have used it, without it seeming awkward.  Anything else looks unusual.  So does that mean that the warning was wrong, or just that we've got so used to it we don't notice any more?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3067307626739718591?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3067307626739718591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3067307626739718591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3067307626739718591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3067307626739718591'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/08/width-and-readability.html' title='Width and readability'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4061149175110912912</id><published>2008-08-16T15:18:00.000-07:00</published><updated>2008-08-16T15:35:13.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>"Prove it's unsafe"</title><content type='html'>UK Environment minister Phil Woolas has &lt;a href="http://news.bbc.co.uk/1/hi/uk/7566012.stm"&gt;supposedly claimed it's now up to the opponents of GM to prove that it is unsafe&lt;/a&gt;.  This seems like fairly disingenious phrasing -- either it has been proven safe or it hasn't.  If it has, then surely that's what he should focus on.  If it hasn't, then effectively saying "well, we're stumped; let's put the burden on proving there's going to be a problem" doesn't sound like a sensible approach.  It was very difficult to definitively prove there would be a problem with feeding processed cow-remains to living cows (we can kill all the bacteria and viruses), until the BSE crisis hit (oops, we forgot about prions).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4061149175110912912?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4061149175110912912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4061149175110912912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4061149175110912912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4061149175110912912'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/08/prove-its-unsafe.html' title='&quot;Prove it&apos;s unsafe&quot;'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2411645752224427103</id><published>2008-06-25T17:57:00.000-07:00</published><updated>2008-06-25T18:34:09.489-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>LaTeX, monospace, bold, computer modern, bera</title><content type='html'>&lt;div&gt;This isn't exactly "general interest", but if any other person trying to format their thesis has hit the same issue, it's useful to have this up there for Google to pick it up:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I've just been reformatting my PhD thesis (approved and graduated last year) as a technical report for the Computer Laboratory.  It's formatted in LaTeX, which is the typesetting system lots of computer science graduate students still use rather than stretchy rubber.  If you use the Times font package, you might find that its monospaced font (something a bit like Courier) is rather wide, and looks very odd if you put a keyword in monospace in the middle of some Times prose.  The Computer Modern monospace font is a much less clashing size, much narrower than the other monospaced fonts I could find, and so that's what I used in my PhD when I printed it for submission.  Only it doesn't have a bold.  There's a trick on the Internet to put a bold monospace (typewriter) Computer Modern font in – but it's only good for print documents because it ends up being a bitmap font (looks blurry in most PDF viewers when viewed at the wrong size on the screen).  So, no good for the PDF technical report.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After some hunting around – Latin Modern is very similar to Computer Modern and does have a bold typewriter font – but not a bold italic monospace font – so bold italic ends up looking odd compared to not-bold italic.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After more searching around, a solution.  The Bera (Bitstream Vera) package has a small note in its documentation, in a file called bera.txt, saying: &lt;br /&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Times;"&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap; "&gt;\usepackage[scaled]{...}    selects a default scaling of 90%, which makes the Bera fonts approximately match the size of the Computer Modern fonts.&lt;/pre &gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;(Actually I find scaled=0.88 fits better with surrounding Times text)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In otherwords, if you do \usepackage[scaled]{beramono} you'll have a monospace font that doesn't jar quite so much with surrounding Times text, and does have bold and bold italics, etc.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Oh, theres also a note saying Bera only works with T1 encoding, so you need:&lt;pre style="word-wrap: break-word; white-space: pre-wrap; "&gt;\usepackage[T1]{fontenc}&lt;br /&gt;\usepackage{textcomp}&lt;/pre&gt;as well (I put it before the \usepackage[scaled=0.88]{beramono}.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2411645752224427103?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2411645752224427103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2411645752224427103' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2411645752224427103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2411645752224427103'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/06/latex-monospace-bold-computer-modern.html' title='LaTeX, monospace, bold, computer modern, bera'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3699672656006779866</id><published>2008-06-14T12:56:00.001-07:00</published><updated>2008-06-14T13:48:07.313-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='idea belt'/><title type='text'>CUE Business Plan Grand Final</title><content type='html'>&lt;div&gt;A few months ago, three of us (Ed Schofield, Wallis Motta, and myself) made a last minute decision to enter the &lt;a href="http://www.cue.org.uk/"&gt;Cambridge University Entrepreneurs (CUE)&lt;/a&gt; Business Plan Competition. It's a very successful competition, having spun out companies that are now worth more than £40-million, so we always knew it was going to be tough.  Our team was "The Idea Belt", a company to sell innovation management software to mid-sized companies.  It's a software category that is coming into vogue, there aren't many vendors (and they're mostly small), and we'd spotted a better way of doing it. &lt;/div&gt;&lt;div&gt;Happily for us, we made it through to the Grand Final, which was last Wednesday night, appropriately enough just a few hours before Sir Alan Sugar picked his latest Apprentice on the telly.  We didn't win – we were beaten by some absolutely fantastic teams (if you have a few pounds spare, &lt;a href="http://www.cue.org.uk/node/1328"&gt;Microantenna&lt;/a&gt; looks like a fabulous investment!).  But I was very happy we made it into the final. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3699672656006779866?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3699672656006779866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3699672656006779866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3699672656006779866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3699672656006779866'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/06/cue-business-plan-grand-final.html' title='CUE Business Plan Grand Final'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-626292309487056152</id><published>2008-04-30T12:24:00.000-07:00</published><updated>2008-06-14T15:18:11.300-07:00</updated><title type='text'>Richard Stallman in Cambridge</title><content type='html'>&lt;div&gt;Oops, this remained unpublished for a while...&lt;/div&gt;&lt;div&gt;Richard Stallman, notable of the Free Software Foundation, was in Cambridge in April speaking at the Computer Lab's &lt;a href="http://www.cl.cam.ac.uk/research/security/seminars/"&gt;Wednesday Seminar&lt;/a&gt;. Stallman is one of computing's true eccentrics.  I bumped into him, only very briefly, a couple of times when visiting MIT as a PhD student, but even those short meetings gave me no doubt that he is a quite an unusual character – the last time I'd seen him, he was ever so pleased that by passing some wire over his neck and tying it to the sides of his laptop, he'd been able to arrange it so he could type standing up, a bit like a cinema ice cream salesman – the only tiny hitch being that the plastic coated wire he'd used kept unknotting itself, and the laptop kept nearly crashing to the floor!&lt;/div&gt;&lt;div&gt;But I have to say he's a very witty speaker, and someone it's well worth hearing speak if you get the chance – even if you disagree with everything he says, you will probably enjoy the talk.  In this talk, he had grand plans to change the world of copyright by categorising every book in the world as being a personal account, a work of art, or having practical value as a work of instruction (eg, a recipe book), and then giving everything but the artistic books away free.  There was a slight lack of realism to his vision – Gordon Ramsay agreeing his recipes are artless? Harold Pinter agreeing his "purely artistic" work has no instructive value?  And anyone agreeing to this regime in the first place?  But Stallman's humour worked in a way that seemed somehow reminiscent of Jimmy Carr, and the audience was entertained both by the content and his manner.&lt;/div&gt;&lt;div&gt;There were a few odd moments of course.  He was particularly irked by the projectionist wanting to dim the house lights for the talk ("do you want me to go to sleep?", he objected).  And at the end of the talk he insisted people should queue for the microphone rather than waiting for it to be passed to them, because it's so much more efficient.  Normally this might work, but with the very long benches and tight seats of the Computer Lab lecture theatre it meant audience members were having to climb over each other or ask half a dozen other people to stand up so they could squeeze past each other to reach the aisle.  Half the room was shuffling itself around and uttering "excuse me" like a regular chant, and Stallman was blissfully oblivious to it and happy with his efficient solution.  But, as I say, these turn out to be very humorous moments to watch rather than awkward.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-626292309487056152?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/626292309487056152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=626292309487056152' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/626292309487056152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/626292309487056152'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/04/richard-stallman-in-cambridge.html' title='Richard Stallman in Cambridge'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4316369134349291601</id><published>2008-04-23T04:21:00.000-07:00</published><updated>2008-04-23T10:47:25.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><title type='text'>Credit cycle</title><content type='html'>George Osborne made a &lt;a href="http://www.conservatives.com/tile.do?def=news.story.page&amp;amp;obj_id=143499"&gt;speech&lt;/a&gt; at Harvard about changing the way we control the economy.  For the last decade or two, the UK and US have tried to control the boom-bust cycle by using one lever (interest rates) to try to control one variable (retail inflation).  When retail inflation goes up, the governments raise interest rates to bring it back down again.  But, Osborne says, there has been a second, hitherto ignored cycle: house prices ("asset inflation") and credit.  House prices and consumer debt has risen while inflation has remained low, and now the credit crunch is in a sense a credit-led-bust rather than an inflation-led-bust.  Osborne suggests trying to control this new credit cycle by controlling how much money banks are allowed to lend as a ratio of their assets.&lt;div&gt;Osborne seems to have missed a more general point: the credit cycle is partly an artificial problem.  It is precisely because the government (actually the Monetary Policy Committee) frequently changes interest rates that we get credit booms and busts.  The mortgages that are in trouble in the UK got into trouble because of six consecutive interest rate rises.  And the rush for credit was caused by so many interest rate reductions in the years beforehand.  If interest rates were generally constant, it would take a lot of the speculation out of the property market, and house prices would have a chance to settle at a level and growth rate that is determined much more by supply and demand.  Constant interest rates would remove the "fear of missing the boat" that when interest rates are lowered and house prices skyrocket, a house that is nearly affordable today will be far too expensive tomorrow.  And they'd remove the terror of negative equity from house price crashes when rates rise.  It is those sentiments that drive the booms and crashes in the property market.&lt;/div&gt;&lt;div&gt;It also strikes me that for controlling retail demand (in order to control retail inflation), interest rates are a very inefficient and inequitable lever to pull.  They disproportionately affect the people with the biggest mortgage-to-salary ratios (ie, first time buyers), and have fairly little effect on almost everybody else.  Renters don't see rent rises until six months to a year later, and those who have had mortgages for a long time have a much bigger cushion because inflation and career growth have raised their salaries compared to their repayments.&lt;/div&gt;&lt;div&gt;Surely rather than having a massive effect on just a few people, the lever to pull to control retail demand would be one that effects every consumer, not just homeowners with large mortgages?  Perhaps sales tax (VAT) or by varying part of income tax (which could be reflected in the PAYE system very quickly allowing short-term changes)?&lt;/div&gt;&lt;div&gt;Just a thought&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4316369134349291601?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4316369134349291601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4316369134349291601' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4316369134349291601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4316369134349291601'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/04/credit-cycle.html' title='Credit cycle'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8655601273554701579</id><published>2008-03-31T06:29:00.000-07:00</published><updated>2008-04-16T16:27:57.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hci'/><category scheme='http://www.blogger.com/atom/ns#' term='bbc'/><title type='text'>BBC site redesign, px font sizes (edited - inaccurate)</title><content type='html'>The &lt;a href="http://news.bbc.co.uk/"&gt;BBC news website&lt;/a&gt; has changed its style this morning, and now has the greyish text and increased line spacing that is all the rage on Web 2.0 sites.  &lt;div&gt;In an idle moment, I had a look at the stylesheet.  I'm not a web styling expert, but I need to sort out the stylesheets for &lt;a href="http://www.theIntelligentBook.com/"&gt;theIntelligentBook.com&lt;/a&gt;.  Interestingly, the BBC's font size and line height are specified in pixels – years ago that was said to be a no-no because 13px might not be so readable on a denser display or a handheld.  But trying to use "em" measurements or anything like that was horribly incompatible between browsers.  These days, Safari and Firefox still happily resize text smaller or larger when asked (Ctrl-+), even if it is specified in pixels.  So I wonder if the "old pixel" has become the new standard resolution-independent measurement: "how big would this have looked on an old SVGA monitor"?  &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;EDITED:&lt;/span&gt; Oops, as bods commented, it is mostly em-based after all (but with occasional stray px font-sizes for parts like ".storyextra h2" that I happened to hit in my initial idle look)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8655601273554701579?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8655601273554701579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8655601273554701579' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8655601273554701579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8655601273554701579'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/03/bbc-site-redesign-px-font-sizes.html' title='BBC site redesign, px font sizes (edited - inaccurate)'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-3269714866918399256</id><published>2008-02-18T09:41:00.000-08:00</published><updated>2008-02-18T10:19:07.659-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='northern rock'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Northern Rock nationalised – what an opportunity</title><content type='html'>The government is going to &lt;a href="http://news.bbc.co.uk/1/hi/business/7250023.stm"&gt;nationalise Northern Rock&lt;/a&gt;, but the opposition think this is a "disaster" and takes us "back to the policies of the 1970s".  &lt;div&gt;I think it's a fabulous move, and a very capitalist one.  The difference between the 1970s and now is that in the 1970s, the government felt it needed to own industries as a whole and there was no private competition.  In the 1980s, the government changed plan and backed off industry entirely, relying just on regulation and competition.  I think now there's an opportunity to realise that governments can do something slightly more than just regulation: they can get their feet wet in the market and &lt;span class="Apple-style-span" style="font-style: italic;"&gt;be&lt;/span&gt; competition.&lt;/div&gt;&lt;div&gt;What would this do for the everyday citizen?  It's a very effective way of ensuring consumer minimum standards in an industry – much faster than regulation, and potentially more effective.&lt;/div&gt;&lt;div&gt;For example in Australia there is a problem with bank fees – not just for overdrafts, but just for accessing your money.  And these bank fees, as always, hit lower income earners hardest.  The Australian government would have a hard time pushing through regulations to outlaw bank fees – there would be law suits for judicial review complaining loudly that it's "not a viable commercial model".  But what if the Australian government still owned a bank (it used to own the Commonwealth Bank), and told it not to charge bank fees?  The private sector, just to compete for customers, would have to drop their bank fees too.  And by running a profit-making non-fee-charging bank, the government would prove that it is a commercially viable model.&lt;/div&gt;&lt;div&gt;Competition can be more effective than regulation, but if the public wants to drive the industry in its direction, then the public sector has to get its feet wet.&lt;/div&gt;&lt;div&gt;And now that Northern Rock has had to be nationalised, I hope the UK government will realise just how useful it could be to them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-3269714866918399256?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/3269714866918399256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=3269714866918399256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3269714866918399256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/3269714866918399256'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/02/northern-rock-nationalised.html' title='Northern Rock nationalised – what an opportunity'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7814326421513790348</id><published>2008-01-25T07:22:00.000-08:00</published><updated>2008-01-25T07:38:07.820-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bond'/><category scheme='http://www.blogger.com/atom/ns#' term='trivia'/><title type='text'>Quantum of Solace</title><content type='html'>My goodness, it's the most exciting name for a new Bond film, is it? &lt;br /&gt;&lt;br /&gt;Apparently it comes from a short story that Ian Fleming wrote, which of course is why the producers chose it.  On the other hand, the short story never had to stand on its own - it was published in a much more excitingly titled collection, and in a popular magazine (Cosmopolitan).&lt;br /&gt;&lt;br /&gt;I keep imagining that gravelly American voiceover they always have on movie trailers trying to announce the title dramatically:  "Danger... excitement...  QUANTUM ... OF SOLACE".  Will I be able to keep a straight face?  Unless of course the villain is a very nerdy academic physicist in which case it all makes sense!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7814326421513790348?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7814326421513790348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7814326421513790348' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7814326421513790348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7814326421513790348'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2008/01/quantum-of-solace.html' title='Quantum of Solace'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2390384011335925897</id><published>2007-10-16T09:39:00.000-07:00</published><updated>2007-10-19T06:34:36.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='parsing'/><category scheme='http://www.blogger.com/atom/ns#' term='radeox'/><title type='text'>Wiki parsers (this post is a bit technical)</title><content type='html'>I've been changing the wiki engine the Intelligent Book uses -- I had been using a slightly altered version of JSPWiki -- and the question of what makes a good wiki engine has come up.  For the moment, I've been putting something together using &lt;a href="http://radeox.org"&gt;Radeox&lt;/a&gt;, since that seems to be the most commonly used library.  But I really don't like it. &lt;br /&gt;&lt;br /&gt;Part of my prejudice is that the documentation has fallen off the web because the project lead (&lt;a href="http://stephan.reposita.org/"&gt;Stephan Schmidt&lt;/a&gt;) has left his employer (Fraunhofer) and is still negotiating the rights to the code.   But more essentially, I'm not a fan of its design: each piece of syntax recognises a kind of regular expression, replaces it in the text with some output, and then passes it on to the next filter or macro in the chain.  This sounds nice and simple, but some annoying things can happen -- for example, a macro that outputs HTML including Javascript is very likely to get trodden on by later filters: characters like "[" and "]" in the Javascript can be misinterpreted as link tags by the later Wiki filters.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.megacz.com/"&gt;Adam Megacz&lt;/a&gt; at Berkeley has produced a formal scannerless parser that can be configured to parse Wiki markup (most parser generators cannot) -- but it's a little bit like cobbly PhD software, and in practice it seems to be very slow parsing its grammar file.  Also, requiring wiki installations to define formal grammars for their markup just doesn't sound right.  Formal grammars are the exclusive domain of computer scientists; wikis are supposed to be more accessible than that.&lt;br /&gt;&lt;br /&gt;I'm getting tempted to go down a different route (I have a cunning plan for a much better approach!) but for the moment I don't have time, so I guess I'll struggle on with Radeox and just keep grumbling for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2390384011335925897?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2390384011335925897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2390384011335925897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2390384011335925897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2390384011335925897'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/10/wiki-parsers-this-post-is-bit-technical.html' title='Wiki parsers (this post is a bit technical)'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7529306587656739447</id><published>2007-09-21T09:00:00.001-07:00</published><updated>2007-10-01T10:41:25.147-07:00</updated><title type='text'>Elections, elections, bureaucracies</title><content type='html'>So it seems as thought both Australia and (perhaps) the UK are heading into elections.  I've always found it curiously comical that although the UK and Australia have usually had the opposite party in power since the late 70s, the outcomes have all been pretty similar -- interest rates have tracked largely the same in both countries, as have employment figures, and the political agenda (crises about petrol prices and illegal immigration being on the agenda in both countries at similar times...).&lt;br /&gt;&lt;br /&gt;It reminds me of Michael Portillo's comment on &lt;font style="font-style:italic;"&gt;This Week&lt;/font&gt; a year or so ago.  He was asked his opinion about why Blair ended up being at odds with Europe when before 1997 he'd campaigned so vigorously that Britain should co-operate more with the EU.  Portillo said that he wasn't surprised because he [Portillo] has always been "a great believer in bureaucracies" -- in other words, the issue is always bigger than the politician.  It doesn't matter if Tony was pro-Europe in his heart, when he was in power he was there to argue for Britain's interests and they were different from France's interests and so, sure enough, he ended up having rows with Chirac all the time.&lt;br /&gt;&lt;br /&gt;But this leaves me feeling vaguely powerless at the polls.  Not only won't my vote make much difference (because I live in a "safe seat"), but even if I did change the government, the outcome would be pretty similar.  On reflection, maybe I'll go back to pretending that whether Darling or Osborne (and Costello or Swan) is chancellor is going to determine whether I'll be wealthy or destitute in five years time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7529306587656739447?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7529306587656739447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7529306587656739447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7529306587656739447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7529306587656739447'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/09/elections-elections-bureaucracies.html' title='Elections, elections, bureaucracies'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2657960164256823923</id><published>2007-09-18T02:54:00.001-07:00</published><updated>2007-09-18T03:13:33.342-07:00</updated><title type='text'>Blog comments</title><content type='html'>I noticed a curious thing with Blogger's comment system -- although there are "anonymous" and "leave a name, but I don't have a log-in" options, it defaults to asking you to log in.  I wonder how many people click "comment", see the log-in box, and run away, never noticing they don't have to log in after all.  &lt;br /&gt;&lt;br /&gt;Naturally I wonder this mostly for other blogs -- the five or so people who read this one wouldn't make much of a sample! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2657960164256823923?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2657960164256823923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2657960164256823923' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2657960164256823923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2657960164256823923'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/09/blog-comments.html' title='Blog comments'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8104478617052136302</id><published>2007-09-18T02:38:00.000-07:00</published><updated>2007-09-18T02:53:17.381-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='ALT-C'/><category scheme='http://www.blogger.com/atom/ns#' term='PhD'/><title type='text'>ALT-C, My presentation</title><content type='html'>My presentation slot was at 9am on the final morning of the conference.  Happily I had an interested audience (if a little small), and made some contacts to follow up on after the talk.  &lt;br /&gt;&lt;br /&gt;I'd been slightly worried that with the conference dinner going late into the evening before, and having to clear out of our accommodation by 10am, maybe there'd only be me and the other presenter in the room as everyone would either have stayed in bed, been packing their bags, or already have hit the road homewards.  Thankfully, learning technology conference attendees are more dedicated than that though!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8104478617052136302?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8104478617052136302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8104478617052136302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8104478617052136302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8104478617052136302'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/09/alt-c-my-presentation.html' title='ALT-C, My presentation'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8231980470675270457</id><published>2007-09-17T05:50:00.000-07:00</published><updated>2007-09-18T02:38:12.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALT-C'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>ALT-C, Peter Norvig's keynote</title><content type='html'>A couple of weeks ago, Peter Norvig, Google's director of research, gave the closing keynote at the ALT-C keynote.  For his background reading, he spoke to Hal Abelson, who happens also to have been involved in the Intelligent Book project my PhD came out of.  So, of course I was ever so interested because there was lots of common ground with my research and I had a personal link to the background.  And I thought it was an entertaining talk.  However, talking to a two other attendees (with backgrounds in education) in the cab on the way to the train station, they surprised me by saying they didn't find it very relevant.  Well, of course you can't please everyone, but I had to ponder what it was about the talk that left them unenthused and me entertained.&lt;br /&gt;&lt;br /&gt;I wondered if perhaps by keeping the talk non-technical, Norvig maybe ended up focusing on material they already knew.  Like many AI researchers when they look at teaching technology, Norvig took Bloom's "Two Sigma Problem" as his cue.  This is the "problem" that tutoring students one-to-one is much more effective than teaching them in a traditional classroom (specifically, a 1980s US high school classroom) but is also much more expensive.  Rather than focus too much on technical matters, he unpacked the outcomes of Bloom's research and what it means for teaching pedagogy, and where technology might fit.  This is all interesting stuff for technologists looking at educational technology, even if I'd already come to similar conclusions from reading Bloom's Two Sigma Problem paper myself.  But this made me wonder -- the teachers and education researchers in the audience are probably already very familiar with Bloom and his research: he's one of the biggest names in the field.  And perhaps, seeing that the keynote was by the director of research at Google, they expected to hear more about what new kinds of technology might be around the corner, how it could benefit teaching, and how to prevent technology from chewing up all their time in learning how to use and administer it?&lt;br /&gt;&lt;br /&gt;Or maybe the two people I spoke to were just having a bad day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8231980470675270457?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8231980470675270457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8231980470675270457' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8231980470675270457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8231980470675270457'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/09/alt-c-peter-norvigs-keynote.html' title='ALT-C, Peter Norvig&apos;s keynote'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-1699021730196917898</id><published>2007-09-04T12:27:00.000-07:00</published><updated>2007-09-04T13:06:39.722-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALT-C'/><title type='text'>"Digital native" -- the most overused term?</title><content type='html'>After the first day of the &lt;a href="http://www.alt.ac.uk/altc2007"&gt;ALT-C&lt;/a&gt; (learning technology) conference, one common theme is that almost every talk I have been to has at some point mentioned "digital natives and digital immigrants".  And many of the speakers have talked about their teenage children understanding the Web 2.0 world so much better...  Maybe it's the reactionary in me, but I think the "digital native/immigrant" term might be becoming a hindrance -- it seems to be prompting people sometimes to think about today's undergraduates as an alien culture they cannot easily relate to or understand.  And I don't think that's true.  Most of the "digital native" phenomena seem perfectly rational and understandable from an HCI perspective, whether it be using Facebook instead in preference to email for personal communication (no spam, less formal, no need to write down email addresses, etc etc...) or the texting culture.  &lt;br /&gt;&lt;br /&gt;In fact, if the world wasn't locked into email by network effects ("everyone else uses email and expects me to have email" or "work expects me to have email") I wonder if any of us would really chose email as our method of choice any more, given it is 90% spam now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-1699021730196917898?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/1699021730196917898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=1699021730196917898' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1699021730196917898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/1699021730196917898'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/09/digital-native-most-overused-term.html' title='&quot;Digital native&quot; -- the most overused term?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-4983235287883729900</id><published>2007-08-31T09:02:00.000-07:00</published><updated>2007-08-31T09:18:26.976-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='ALT-C'/><category scheme='http://www.blogger.com/atom/ns#' term='PhD'/><title type='text'>ALT-C</title><content type='html'>Next week I'm heading to ALT-C, a conference on learning technology.  It's in Nottingham, just up the motorway, so not quite such an exotic location as Takamatsu, Mumbai, or Madrid.  It's the last paper from my PhD, so it's got a slight "end of an era" feel about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-4983235287883729900?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/4983235287883729900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=4983235287883729900' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4983235287883729900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/4983235287883729900'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/08/alt-c.html' title='ALT-C'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2445438222277638085</id><published>2007-07-16T09:53:00.000-07:00</published><updated>2007-07-16T10:30:38.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copyright'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>A Penny Saved is a ...</title><content type='html'>Well, if you're one of the economists David Cameron is listening to, it's not "a penny earned" but "a loss to the economy"!&lt;br /&gt;&lt;br /&gt;One of Cameron's  sillier policies is to extend copyright from 50 years to 70 years.  He claims that this would "add £3.3 billion to the economy".  Unfortunately, this is one of those nasty things: a penalty dressed up as a benefit.  Why?  Because actually the size of the economy is a measure of &lt;span class="Apple-style-span" style="font-style: italic;"&gt;penalty to people&lt;/span&gt;, not &lt;span class="Apple-style-span" style="font-style: italic;"&gt;benefit to people&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;In simple terms, it's obvious: the size of the economy is &lt;span class="Apple-style-span" style="font-style: italic;"&gt;the sum total of cash leaving people's wallets!&lt;/span&gt;  If I keep an extra £1 in my wallet, the economy is £1 smaller.  Strangely, though, I feel £1 better off, not worse off because the economy is that little bit smaller...&lt;br /&gt;&lt;br /&gt;So why is "growing the economy" normally seen as a good thing.  Well, usually it is an indirect measure of benefit:&lt;br /&gt;&lt;br /&gt;Economists can't actually measure the benefit someone gets from something -- eg, a cup of tea -- directly.   (Nobody has yet invented the "aaah"-ometer.)  So instead economists have to assume the price you were willing to pay for that cup of tea is a measure of its value to you.  If you were willing to pay 20p, then you've presumably received at least twenty pence worth of benefit from it.  Market forces also help to make sure things balance up nicely.  And so the amount of money being spent in the economy is an approximate measure of the benefit people are receiving from the economy.  Usually.&lt;br /&gt;&lt;br /&gt;But say the government issues a licence to Oxygen, Inc that allows them to charge £1 per person per day for the air we breathe.  Instantly the economy has jumped by £1 × 365 × 60 million = £21.9bn.  But has anyone achieved any actual benefit?  Well, no, the air is still exactly the same, it's just the public now has £21.9bn less to spend on other things.  &lt;br /&gt;&lt;br /&gt;So this is the problem: the economists assume "cost = benefit" and measured the economy accordingly.  But they can't measure the benefit of things you get for free.  So if the government makes something that would be free (eg: air, or 51 year old music) suddenly have a cost, it looks like the economy has grown (hurrah!) but all that has really happened is people are more out of pocket for no extra benefit (boo!).&lt;br /&gt;&lt;br /&gt;Irritatingly, Mr Cameron seems to be going for the "look it'll grow the economy" boondoggle, hoping nobody will notice extending copyright is just taking extra cash from our pockets for no extra benefit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2445438222277638085?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2445438222277638085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2445438222277638085' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2445438222277638085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2445438222277638085'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/07/penny-saved-is.html' title='A Penny Saved is a ...'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8123867067122831970</id><published>2007-07-12T09:34:00.000-07:00</published><updated>2007-07-12T09:36:37.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PhD'/><title type='text'>Conditional approval...</title><content type='html'>Today I received the official letter from BoGS (that fabulous acronym that stands for Board of Graduate Studies) saying I've been conditionally approved to be awarded the PhD.  "Conditional" is subject to giving them a hardbound copy of my thesis for the library, so it's not a very onerous condition...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8123867067122831970?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8123867067122831970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8123867067122831970' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8123867067122831970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8123867067122831970'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/07/conditional-approval.html' title='Conditional approval...'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-6938780830167518144</id><published>2007-07-06T04:40:00.001-07:00</published><updated>2007-07-06T05:17:03.609-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Web Toolkit (GWT)'s cunning plan?</title><content type='html'>Languages like Java and Python compile it to an intermediate semi-digested form called "p-code" or "bytecode".  Google Web Toolkit (GWT) takes Java source and compiles it into cross-browser JavaScript.  Effectively, GWT uses JavaScript as its p-code.&lt;br /&gt;&lt;br /&gt;But how good is JavaScript at being a p-code?  Probably not great, because it wasn't designed as one -- it was designed as a general purpose programming language.  Programming languages are designed to cater for the fact that programs are written by people.  So, they have lots of syntactic sugar and usability features.  P-code, meanwhile, is never written by hand and so needs no usability features.  P-code is something designed to be quick and easy for a virtual machine to interpret and optimise. (See any course on compilers for the sorts of changes compilers make when converting source code to an intermediate representation.)  &lt;br /&gt;&lt;br /&gt;If JavaScript was an efficient p-code language, and if the "virtual machines" for it (the browsers) were efficient, then GWT applications would perform as well as Java or .NET applications.  And yet, GWT actually feels a little sluggish.&lt;br /&gt;&lt;br /&gt;So how could Google get around this issue?  Well, it's in a uniquely good position to introduce a &lt;span style="font-weight:bold;"&gt;new&lt;/span&gt; p-code into browsers: a proper intermediate representation of JavaScript.  The new p-code would be put into Firefox first presumably.  GWT would then include some code in the sites it generates to see if the browser supports this new p-code.  If it does, it would ask the server for blazing fast new p-code; if it doesn't, it would ask for sluggish old JavaScript.  And if GWT sites (like most of Google) were blazing fast on Firefox and sluggish on IE or Safari, it wouldn't take the other browser manufacturers long to say "we'd like some of this new p-code goodness too please".&lt;br /&gt;&lt;br /&gt;And then Google would have moved some way towards their goal of the Web being their "universal application platform", rather than the slightly hacky, messy, not quite fit-for-purpose application platform that browsers have always been so far.&lt;br /&gt;&lt;br /&gt;Of course all this is purely speculation...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-6938780830167518144?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/6938780830167518144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=6938780830167518144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6938780830167518144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6938780830167518144'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/07/google-web-toolkit-gwts-cunning-plan.html' title='Google Web Toolkit (GWT)&apos;s cunning plan?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-6819632805993299998</id><published>2007-07-04T04:45:00.000-07:00</published><updated>2007-07-04T04:53:46.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graduation'/><category scheme='http://www.blogger.com/atom/ns#' term='Harry Potter'/><category scheme='http://www.blogger.com/atom/ns#' term='PhD'/><title type='text'>21 July</title><content type='html'>So I'm arranging to graduate (subject of course to the official result of my viva), and it turns out the next university Congregation is on 21st July, the day the final Harry Potter book comes out.  Which just makes it slightly odd reading lines on the graduation forms about gowns and hoods and how academical dress can be hired from any robemaker in Cambridge...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-6819632805993299998?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/6819632805993299998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=6819632805993299998' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6819632805993299998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/6819632805993299998'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/07/21-july.html' title='21 July'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-5635241335788722133</id><published>2007-06-27T09:41:00.001-07:00</published><updated>2008-11-19T03:05:32.990-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deathly Hallows'/><category scheme='http://www.blogger.com/atom/ns#' term='Harry Potter'/><title type='text'>Harry Potter prediction (couldn't resist)</title><content type='html'>Oh well, I got that one wrong! (Prediction removed).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-5635241335788722133?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/5635241335788722133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=5635241335788722133' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5635241335788722133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5635241335788722133'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/06/harry-potter-prediction-couldnt-resist.html' title='Harry Potter prediction (couldn&apos;t resist)'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2969729634118370693</id><published>2007-06-23T04:43:00.000-07:00</published><updated>2007-06-23T04:50:51.140-07:00</updated><title type='text'>Viva survivor</title><content type='html'>I had my &lt;a href="http://en.wikipedia.org/wiki/Thesis#Thesis_defense"&gt;viva&lt;/a&gt; (thesis defence) for my PhD on Thursday.  I came out smiling.  (Though officially I won't get told the result for a few days.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2969729634118370693?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2969729634118370693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2969729634118370693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2969729634118370693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2969729634118370693'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/06/viva-survivor.html' title='Viva survivor'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-8194653684615437612</id><published>2007-06-14T09:43:00.000-07:00</published><updated>2007-06-14T10:13:17.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bus'/><category scheme='http://www.blogger.com/atom/ns#' term='Cambridge'/><title type='text'>No more 50p bus fares</title><content type='html'>For about a year, Cambridge has run a trial scheme where university members could catch busses around the city for 50p.  But the bus company has just announced this is ending on June 30th.  This is a big shame, because for a brief while it meant that it actually made financial sense to catch the bus.  The usual bus fare for a return ticket is £2.70, using the discounted "day rider".  For the journeys my wife and I make, that's &lt;span class="Apple-style-span" style="font-style: italic;"&gt;more than twice the cost of driving&lt;/span&gt; (Cambridge is a small city).  And that's assuming only one person in the car.  Put two people in the car, and catching the bus would be utterly profligate...  (not to mention slow and unreliable).&lt;br /&gt;&lt;br /&gt;On the up-side, I tend to cycle to work in town.  And with bus fares at £2.70 per day, it's now that much harder for me to justify being lazy and catching the bus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-8194653684615437612?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/8194653684615437612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=8194653684615437612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8194653684615437612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/8194653684615437612'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/06/no-more-50p-bus-fares.html' title='No more 50p bus fares'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-2452164342126391396</id><published>2007-06-14T09:36:00.000-07:00</published><updated>2007-06-14T09:42:52.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PhD'/><title type='text'>One Week to Viva...</title><content type='html'>&lt;div&gt;Next Thursday, the 21st, I have my &lt;span class="Apple-style-span" style="font-style: italic;"&gt;viva voce&lt;/span&gt; examination for my PhD -- where two examiners who've read my dissertation come and ask me all sorts of tricky questions about it.  (Or as one person put it &lt;span class="Apple-style-span" style="font-style: italic;"&gt;"where two lucky people who already have their PhDs tell you whether or not they'll let you join the club"&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;).&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-2452164342126391396?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/2452164342126391396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=2452164342126391396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2452164342126391396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/2452164342126391396'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/06/one-week-to-viva.html' title='One Week to Viva...'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-5701462310106451269</id><published>2007-05-31T15:08:00.000-07:00</published><updated>2007-05-31T16:21:24.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google developer day'/><category scheme='http://www.blogger.com/atom/ns#' term='google gears'/><title type='text'>Google Gears -- useful, but a couple of early limitations?</title><content type='html'>I just got back from the Google Developer Day in London, where one of the "big announcements" was Google Gears -- a way for AJAX applications, to work locally on your computer even when offline.  Gears keeps a local copy of the web data an application would use in an SQLite database on your PC; the local data is synced with the remote web data whenever you are online.&lt;br /&gt;&lt;br /&gt;There seem to be a couple of yet-to-be solved issues that some apps will strike:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Merging conflicts&lt;/li&gt;&lt;li&gt;Knowing what data you need ahead of time&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Merging conflicts. &lt;/span&gt;&lt;br /&gt;Imagine if Wikipedia was an AJAX site, working offline.  Algernon and Berty could both edit the GoogleGears entry, and then when they both go online, who's edit will be uploaded to the site?  Algernon's?  Berty's?  Or will an error happen?&lt;br /&gt;&lt;br /&gt;The Gears team are pretty up-front that they haven't solved this yet.  Unfortunately, they're not so clear on what will actually happen at the moment -- I asked one of the developers whether there was at least any way for an application to find out which tables or rows are in conflict, but the answer was a pretty blank "we haven't added anything for that, there's just whatever SQL provides".  So I guess that means at the moment the last upload wins (and nothing will even know there was ever a conflict).  Maybe there's some way to check a lastUpdate timestamp on the server though...?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Knowing how much data you'll need&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Storing the data locally will only work for applications that know what data they want to store -- for example your email or calendar.   That sounds pretty obvious and unavoidable.  But for one recent craze (that Google's keen on) this could be problematic: "mashups of mashups" -- letting users combine information from multiple sites and functionality from multiple mashups.&lt;br /&gt;&lt;br /&gt;For example, let's start with a TV guide.  Let's call its data &lt;span style="font-weight: bold; font-style: italic;"&gt;t&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now let's use a mashup that links the TV guide to some reviews from rottentomatoes.  Now we need data&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;t, r(t)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's also use a mashup that uses the IMDB or the BBC's program data to find out what other tv shows the actors have been in.  "Open All Hours": Granville is played by David Jason who you'd know from "A Touch of Frost" and "Dangermouse"&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;t, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;p(t)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;But hang on, I don't want it telling me "Open All Hours": Customer Number 3 is played by Joe Bloggs who appeared in "RubbishProgrammeX".  I only want to hear about actors who were in quality shows.  So let's use the review site again, and combine the mashups so I only hear about the good shows the actors were in.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;t, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;r(t), p(t)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;r(p(t))&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That last one looks a little big in off-line mode.   A user might click on any show in the guide today, and the app needs to check the reviews of all the other shows each actor has been in.  That's probably ok to do online for one show that the user has just clicked on.  It means checking about a thousand reviews (say 20 actors, each having 50 other roles).  But for the mashup to work off-line, well the user might click on any show on any of 40 channels today.  Let's say there are 1,000 shows on tv today.  We need to pre-fetch around a thousand reviews for each of those shows.  Suddenly we're pre-fetching a million reviews!  (Ok, minus a significant number of overlaps).&lt;br /&gt;&lt;br /&gt;To work offline, a mashup-of-mashups could have to do a number of joins across multiple sites, and pre-cache the (quite large) result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-5701462310106451269?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/5701462310106451269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=5701462310106451269' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5701462310106451269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/5701462310106451269'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/05/google-gears-useful-but-couple-of-early.html' title='Google Gears -- useful, but a couple of early limitations?'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7232678821280376479.post-7097655104405941644</id><published>2007-05-25T09:46:00.000-07:00</published><updated>2007-05-25T09:54:29.106-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='administrivia'/><title type='text'>First post</title><content type='html'>I submitted my PhD recently, and with a fresh stage of life comes a fresh blog!  More to the point, I wanted to change the address from the rather cryptic '&lt;span style="font-style: italic;"&gt;whb21&lt;/span&gt;' to the more comprehensible '&lt;span style="font-style: italic;"&gt;wbillingsley&lt;/span&gt;'.  I'll leave the old one there for now, though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7232678821280376479-7097655104405941644?l=wbillingsley.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wbillingsley.blogspot.com/feeds/7097655104405941644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7232678821280376479&amp;postID=7097655104405941644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7097655104405941644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7232678821280376479/posts/default/7097655104405941644'/><link rel='alternate' type='text/html' href='http://wbillingsley.blogspot.com/2007/05/first-post.html' title='First post'/><author><name>William Billingsley</name><uri>https://profiles.google.com/113602527344989662173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-ug1E5io901Q/AAAAAAAAAAI/AAAAAAAAAFI/rcilB5SrRZ4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
