<?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-1293116210631635220</id><updated>2011-07-28T14:48:34.988-07:00</updated><category term='congratulations'/><category term='pirates'/><category term='conditioning'/><category term='shenanigans'/><category term='DIY'/><category term='NRC'/><category term='problem-solving'/><category term='algorithms'/><category term='time management'/><category term='Ottawa'/><category term='caffeine'/><category term='trains'/><category term='git'/><category term='pwnage'/><category term='gas'/><category term='video'/><category term='WTF'/><category term='morning'/><category term='c++'/><category term='public transit'/><category term='work'/><category term='training'/><category term='cars'/><category term='facebook'/><category term='scripting'/><category term='halloween'/><category term='visualization'/><category term='pong'/><category term='wifi'/><category term='success'/><category term='graphics'/><category term='humour'/><category term='injury'/><category term='growth'/><category term='government'/><category term='rave'/><category term='computers'/><category term='sf'/><category term='online'/><category term='introspection'/><category term='delicious'/><category term='arrrr'/><category term='stability'/><category term='optimization'/><category term='bands'/><category term='terrain'/><category term='y_0'/><category term='project'/><category term='duck typing'/><category term='LISP'/><category term='google'/><category term='education'/><category term='technology'/><category term='domains'/><category term='profanity'/><category term='Public Service Academy'/><category term='co-op'/><category term='worley noise'/><category term='advertising'/><category term='wine'/><category term='open learning'/><category term='hookah'/><category term='sleep'/><category term='LARP'/><category term='ATV'/><category term='time-wasting'/><category term='valkyrie'/><category term='cycling'/><category term='perlin noise'/><category term='productivity'/><category term='canada'/><category term='settlers'/><category term='SMT'/><category term='usability'/><category term='hardware'/><category term='tequila'/><category term='recycling'/><category term='RIAA'/><category term='arrrrr'/><category term='music'/><category term='crawling'/><category term='real-time'/><category term='pranks'/><category term='neil'/><category term='montreal'/><category term='databases'/><category term='gonzo'/><category term='wikipedia'/><category term='copyright'/><category term='procedural generation'/><category term='data structures'/><category term='wireless'/><category term='euler'/><category term='unix'/><category term='twitter'/><category term='EFF'/><category term='coffee'/><category term='Ubuntu'/><category term='film'/><category term='machine learning'/><category term='finditoffcampus'/><category term='writing'/><category term='fitness'/><category term='mobile'/><category term='calendar'/><category term='templates'/><category term='beer'/><category term='synergy'/><category term='DNS'/><category term='gatineau'/><category term='RAID'/><category term='cyberpunk'/><category term='fecal matter'/><category term='longboard'/><category term='CTF'/><category term='subdivision'/><category term='thanksgiving'/><category term='art'/><category term='braintrust'/><category term='home'/><category term='travel'/><category term='css'/><category term='spring'/><category term='family'/><category term='DRM'/><category term='sheep'/><category term='file-sharing'/><category term='month of death'/><category term='misadventure'/><category term='voicemail'/><category term='OpenGL'/><category term='exercise'/><category term='tree generation'/><category term='reports'/><category term='camera'/><category term='pi day'/><category term='retrospective'/><category term='engrish'/><category term='security'/><category term='semantic web'/><category term='fall'/><category term='school'/><category term='bash'/><category term='arrr'/><category term='redesign'/><category term='housing'/><category term='speech recognition'/><category term='errors'/><category term='web design'/><category term='waterloo'/><category term='role-playing'/><category term='debugging'/><category term='apple'/><category term='IT'/><category term='map'/><category term='new term'/><category term='winter'/><category term='photos'/><category term='funding cuts'/><category term='acrostics'/><category term='quebec'/><category term='python'/><category term='crime'/><category term='meritocracy'/><category term='the pirate bay'/><category term='goodbye'/><category term='textures'/><category term='parkour'/><category term='internet'/><category term='five'/><category term='driving'/><category term='in silico'/><category term='vector'/><category term='stl'/><category term='FLOSS'/><category term='presentations'/><category term='burninate'/><category term='computer science'/><category term='DHS'/><category term='trogdor'/><category term='bucket'/><category term='operating systems'/><category term='research'/><category term='personal'/><category term='stress'/><category term='HCI'/><category term='programming'/><category term='random'/><category term='startup crawl'/><category term='nutritious'/><category term='sorting'/><category term='interrupts'/><category term='goals'/><category term='entrepreneurship'/><category term='knuth'/><category term='bill nye'/><category term='terrorism'/><category term='nanowrimo'/><category term='french'/><category term='social life'/><category term='ICANN'/><category term='economics'/><category term='blogger'/><category term='heisenbugs'/><category term='food'/><category term='search'/><category term='raytracer'/><category term='japan'/><category term='anime'/><category term='fail'/><category term='user interfaces'/><category term='data'/><category term='snow'/><category term='LaTeX'/><category term='all-nighters'/><title type='text'>quizzical quincunx</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default?start-index=101&amp;max-results=100'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>120</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4302187066115532228</id><published>2009-12-01T14:36:00.000-08:00</published><updated>2009-12-01T14:36:33.549-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='goodbye'/><title type='text'>Goodbye, World.</title><content type='html'>This will be my last post here.&lt;br /&gt;&lt;br /&gt;Wait, what?&lt;br /&gt;&lt;br /&gt;That's right - I'm moving my blog to &lt;a href="http://blog.evanstratford.com/"&gt;blog.evanstratford.com&lt;/a&gt;, in an effort to rule its layout and content with a silicon fist. The Blogger version will remain alive purely for historical interest; future posts will be uploaded at the new site.&lt;br /&gt;&lt;br /&gt;Once more: the blog has moved to &lt;a href="http://blog.evanstratford.com/"&gt;blog.evanstratford.com&lt;/a&gt; - update your bookmarks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4302187066115532228?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4302187066115532228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/12/goodbye-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4302187066115532228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4302187066115532228'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/12/goodbye-world.html' title='Goodbye, World.'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2898138506965252411</id><published>2009-11-29T11:42:00.000-08:00</published><updated>2009-11-29T11:42:10.946-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><category scheme='http://www.blogger.com/atom/ns#' term='recycling'/><title type='text'>Recyclists of SF</title><content type='html'>San Francisco - nexus for the industries of silicon and logic, erstwhile hub for countless wide-eyed Flower Children and their pharmacopoeia of psychedelics, and home to the most efficient army of hunter-gatherer recyclers known to mankind. These scavengers rove about the city filling carts of all descriptions with aluminum, plastic, and glass gold, pausing only to swig the last dregs of partially re-fermented beer from that hastily-discarded PBR. There's a lesson in here somewhere about economics: by raising its bottle deposits to the point where serial bottle-returning becomes a decent source of quick cash, California has effectively crowd-sourced recycling. As a result, they're able to post &lt;a href="http://www.cawrecycles.org/issues/bottle_bill/recycling_rates"&gt;74% recycling of beverage containers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(I can hear the Hounds howling - this wealth-redistribution racket is straight-up capital-C Communism, a conspiracy perpetrated by Obama and his sleeper-agent terrorist-Jew-Illuminati cohort ever since the Dark Time of Marx to pave the way for such unimaginable horrors as public health care and tighter bank regulations!)&lt;br /&gt;&lt;br /&gt;The bottle deposit is an effective tax on laziness, which is perfectly fine by me. After all, it's a fair bet that even if we taxed the beverage companies for making these containers in the first place, polluter-pays style, we'd end up paying this portion anyways (unless, in accounting for the total cost of production, that can of Coke became prohibitively expensive...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2898138506965252411?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2898138506965252411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/11/recyclists-of-sf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2898138506965252411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2898138506965252411'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/11/recyclists-of-sf.html' title='Recyclists of SF'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7852533243856570919</id><published>2009-11-26T04:00:00.000-08:00</published><updated>2009-11-26T04:00:53.159-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='thanksgiving'/><category scheme='http://www.blogger.com/atom/ns#' term='gonzo'/><title type='text'>Fear and Loathing in Philadelphia</title><content type='html'>6:00 am. There is something brutal and savage about stepping off a red-eye flight into the flickering fluorescent wash at Philadelphia to the tune of stock classical music, like a low-budget stage production of Clockwork Orange - any second now, I fear, my generally unorthodox wardrobe will spark senseless violence and mayhem. Then again, anyone voluntarily leaving California - especially as we begin this inevitable march towards Winter - is clearly expecting a rude shock to the system. Cats meow from somewhere in the open-concept holding cell known as The Waiting Area; before my sleep-deprived sensory apparatus has time to square this with the whole airport thing, a woman starts jerkily dancing along with the classical fare over out front of Gate B-13. There is a scent of rank feral desperation about the place, augmented by the ringtone interjections of crudely-produced hip-hop. The double shot of bourbon back in SFO has long worn off, leaving me woefully unequipped to handle the sort of ultraviolence that is surely headed my way. I hear they still have Public Lynchings in those pleasant atavistic backwaters of this fine country, and I can certainly muster enough blasphemy to make the ticket...&lt;br /&gt;&lt;br /&gt;God Jesus! It seems the spirit of Hunter S. Thompson has crept into my brain, a direct frontal assault from the pages of my newly-finished copy of Fear and Loathing: On the Campaign Trail '72. If you would claim to understand the intricate meanderings of politics, read this book - a better account of the haphazard chaos behind your average televised presidential campaign has never been given. No major newspaper could print this with a straight face without immediately forcing the termination of half their editorial staff, with the heads to be mailed to Washington for public display...and it seems my connecting flight is boarding, judging by the impatient queue slowly lurching towards the open gate. More to follow...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7852533243856570919?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7852533243856570919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/11/fear-and-loathing-in-philadelphia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7852533243856570919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7852533243856570919'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/11/fear-and-loathing-in-philadelphia.html' title='Fear and Loathing in Philadelphia'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8992414149800940797</id><published>2009-11-21T13:20:00.000-08:00</published><updated>2009-11-21T13:20:56.543-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tequila'/><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneurship'/><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><category scheme='http://www.blogger.com/atom/ns#' term='startup crawl'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><title type='text'>In San Francisco, Startup == Pub</title><content type='html'>Any event where you wake up the next morning with two free shirts, a deck of cards, a jar of bubble soap, a stack of business cards, and a &lt;a href="http://www.facebook.com/video/video.php?v=667818330777&amp;amp;ref=nf"&gt;video of yourself ziplining across an office hallway&lt;/a&gt; is a resounding success. Enter &lt;a href="http://www.startupcrawl.com/"&gt;Startup Crawl&lt;/a&gt;, an open house on some of San Francisco's hottest startups. It's part pub crawl, part power-speed-networking, part tech-speak geekout session, and 100% SF-style general hilarity. Where else can some lowly Canadian undergrads walk in off the street - in jeans and T-shirts, no less - and end up throwing back Don Julio with the CEO over talk about scalability and the startup life within the half hour? Where else can you climb out a window to have rooftop beers with high-wired entrepreneurs preparing for next morning's &lt;a href="http://ycombinator.com/"&gt;Y Combinator&lt;/a&gt; pitch? The list of such meritocratic hedonist enclaves is short indeed.&lt;br /&gt;&lt;br /&gt;This event deserves to be ported elsewhere - where's the beef, Waterloo?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8992414149800940797?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8992414149800940797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/11/in-san-francisco-startup-pub.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8992414149800940797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8992414149800940797'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/11/in-san-francisco-startup-pub.html' title='In San Francisco, Startup == Pub'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1950285310555042910</id><published>2009-11-20T13:40:00.000-08:00</published><updated>2009-11-20T13:50:17.465-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='online'/><category scheme='http://www.blogger.com/atom/ns#' term='knuth'/><title type='text'>Mean Streets of Silicon Valley</title><content type='html'>Mean/variance calculation is ridiculously commonplace in data analysis, yet most programmers have never seen this gem from &lt;a href="http://www-cs-faculty.stanford.edu/%7Eknuth/taocp.html"&gt;TAoCP&lt;/a&gt;:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;def online_mean_and_variance(data):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n, mu, s2 = 0, 0, 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for x in data:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n += 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delta = x - mu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mu += delta/n&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s2 += delta*(x - mu)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if n &amp;gt; 1:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield (mu, s2/(n-1))&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="de1" style="font-family: inherit;"&gt;Unlike the standard two-pass algorithm, this one is online; it also happens to be more stable.&lt;br /&gt;If that's not enough, I've given it to you here as a Python generator. Enjoy!&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1950285310555042910?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1950285310555042910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/11/mean-streets-of-silicon-valley.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1950285310555042910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1950285310555042910'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/11/mean-streets-of-silicon-valley.html' title='Mean Streets of Silicon Valley'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5691062518344164480</id><published>2009-10-28T13:31:00.000-07:00</published><updated>2009-10-28T13:31:07.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>iPwned</title><content type='html'>It was only a matter of time before Google did &lt;a href="http://gizmodo.com/5391408/google-maps-navigation-a-free-ass+kicking-turn+by+turn-mobile-app"&gt;this&lt;/a&gt; - let the &lt;a href="http://www.theiphoneblog.com/2009/10/17/verizon-attack-ads-claim-iphone-idoesnt-android-droid/"&gt;battle&lt;/a&gt; begin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5691062518344164480?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5691062518344164480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/10/ipwned.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5691062518344164480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5691062518344164480'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/10/ipwned.html' title='iPwned'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2487737155823505937</id><published>2009-10-28T09:36:00.000-07:00</published><updated>2009-10-28T09:36:54.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><title type='text'>802.11x In The City</title><content type='html'>Another morning, another wireless hotspot courtesy of the thriving West Coast coffee-shop culture. This one is located within the confines of Cup Of Java, a fairly standard joint that just so happens to have a &lt;a href="http://www.casio.com/products/archive/Musical_Instruments/Portable/CTK-471/"&gt;Casio CTK-471&lt;/a&gt; sitting around - any instrument on the keyboard-piano spectrum, even a cheap MIDI-spewing plastic-encased Casio, earns bonus points. I order the Greek Omelet, which comes nestled between a bed of -&lt;br /&gt;&lt;br /&gt;Actually, never mind that. I'm no food critic; that's what we have &lt;a href="http://www.yelp.com/biz/cup-of-java-san-francisco"&gt;Yelp&lt;/a&gt; for. (Hooray for externalized memory!)&lt;br /&gt;&lt;br /&gt;In San Francisco, every coffee shop comes with its very own resident Bluetooth headset-wearing intravenous-caffeine-drip work-from-home maven; the more popular ones boast entire armies of these laptop-toting soldiers, each one vying for a slice of the ether. (I'm taking more than my fair share with &lt;a href="http://www.transmissionbt.com/"&gt;Transmission&lt;/a&gt; (more proof that the highly publicized takedown and subsequent sale of The Pirate Bay does jack-all to staunch the, er, torrential (yeah, I winced too, but it seemed like most appropriate adjective) flow of information), and am watching nervously over my shoulder for the legions of RIAA men-in-black that are no doubt waiting to haul my recidivist pirate ass into court.) I'm half tempted to whip out &lt;a href="http://www.wireshark.org/"&gt;Wireshark&lt;/a&gt; to see what exactly these people are doing, but that would most likely cross the line between harmless curiosity and feline genocide.&lt;br /&gt;&lt;br /&gt;...and I'm off to scour a couple of thrift stores before grabbing the bus into work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2487737155823505937?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2487737155823505937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/10/80211x-in-city.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2487737155823505937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2487737155823505937'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/10/80211x-in-city.html' title='802.11x In The City'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7305846779113394133</id><published>2009-10-27T22:17:00.000-07:00</published><updated>2009-10-27T22:17:03.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='halloween'/><category scheme='http://www.blogger.com/atom/ns#' term='hookah'/><category scheme='http://www.blogger.com/atom/ns#' term='profanity'/><category scheme='http://www.blogger.com/atom/ns#' term='ATV'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><category scheme='http://www.blogger.com/atom/ns#' term='acrostics'/><title type='text'>The Gubernator Strikes Back</title><content type='html'>Need one more reason to be proud of your elected officials? &lt;a href="http://www.sfbg.com/blogs/politics/2009/10/arnold_to_sf_fuck_you.html"&gt;Here you go&lt;/a&gt;. While we're at it, here's another &lt;a href="http://www.mercurynews.com/traffic/ci_13654929"&gt;epic fail&lt;/a&gt; courtesy of our beloved civil engineers.&lt;br /&gt;&lt;br /&gt;What else? I went ATVing at the &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=pismo+beach&amp;amp;sll=37.77493,-122.419416&amp;amp;sspn=0.248575,0.617294&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Pismo+Beach,+San+Luis+Obispo,+California&amp;amp;ll=35.053538,-120.61821&amp;amp;spn=0.03218,0.077162&amp;amp;z=14"&gt;Pismo Dunes State Vehicular Recreation Area&lt;/a&gt;, an unnecessarily obtuse moniker for what amounts to a giant outdoor sandbox filled with off-road vehicles of every description. As a testament to its rugged nature, the area is rife with Second-Amendment freaks on oversized rollcages-with-wheels proudly festooned with Southern Confederate flags. If you've ever wanted to live out those Mad Max post-apocalyptic fantasies of petrol-fueled villainy, this is most definitely the place.&lt;br /&gt;&lt;br /&gt;Found a super-chill haven of hippie-dom sandwiched between Mission and Valencia. The Oz Hookah Lounge delivers drunk revelry, multiflavoured smoke haze, cushions, and a panoply of psychedelic patterns at nearly every hour of the night. This particular visit was punctuated by a host of inebriated Iranian expats carrying beer-laden ice buckets and gin-and-tonics from a nearby bar, which they promptly distributed amongst the crowd.&lt;br /&gt;&lt;br /&gt;Halloween's coming - get your costumes together! &lt;a href="http://www.urbandictionary.com/define.php?term=pics%20or%20it%20didn%27t%20happen"&gt;Photographic evidence is requested, lest the veracity of your respective accounts be called into question&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7305846779113394133?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7305846779113394133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/10/gubernator-strikes-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7305846779113394133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7305846779113394133'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/10/gubernator-strikes-back.html' title='The Gubernator Strikes Back'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5397941048250119371</id><published>2009-10-20T21:26:00.000-07:00</published><updated>2009-10-20T21:26:41.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goals'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='training'/><category scheme='http://www.blogger.com/atom/ns#' term='fitness'/><title type='text'>Eye of the Sloth</title><content type='html'>It's &lt;a href="http://www.youtube.com/watch?v=W8xHjC27YvM"&gt;training time&lt;/a&gt; - my general fitness took a proverbial beating from the demons of stress, work, and take-out cuisine last term, and I'm just now starting to rectify that. (Of course, there's no snow here, so I'll have to settle for Cali sun and SF fog. Woe is me.) To that end, I'm making a commitment to hit the gym at least tri-weekly; encouragement (and light berating, if that's more your style) is, er, encouraged. I'm hoping to make it out to some of the &lt;a href="http://www.sfparkour.com/"&gt;SFPK&lt;/a&gt; meets as well. Naturally, I'll be concocting my own personal brand of inspiration - if this cryptic remark has you puzzled (as well it should) you'll just have to keep posted for more details!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5397941048250119371?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5397941048250119371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/10/eye-of-sloth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5397941048250119371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5397941048250119371'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/10/eye-of-sloth.html' title='Eye of the Sloth'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1108449157345701919</id><published>2009-10-19T09:13:00.000-07:00</published><updated>2009-10-19T09:13:11.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='y_0'/><category scheme='http://www.blogger.com/atom/ns#' term='thanksgiving'/><category scheme='http://www.blogger.com/atom/ns#' term='fall'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Putting the Ignoble in Vignoble</title><content type='html'>Had the chance to wine and dine in the famed wine-producing region of &lt;a href="http://picasaweb.google.com/evan.stratford/Napa"&gt;Napa Valley&lt;/a&gt; this last Saturday. I decided to don my only suit jacket (and no socks - hey, it's laundry day) for the occasion so as to meet the requisite minimum standard of pomposity. (I should really source a monocle, kerchief, pocket watch, and top hat. As a general rule, you don't argue with anyone who is actively employing all these objects in the service of highbrowdom.)&lt;br /&gt;&lt;br /&gt;The Stanford Canadian Club Thanksgiving dinner was a resounding success as measured by the excess of available foodstuffs; there was turkey, stuffing, mashed potatoes, and pumpkin pie in abundance. Yum. Maybe this whole gastronomic shindig should be a weekly affair (or fortnightly, at the very least.) In true seasonal fashion, the leaves are Monty-Python-style suicide-diving off the trees in droves; the air is crisp with that familiar decay-scent, something I had not expected to find this far south.&lt;br /&gt;&lt;br /&gt;Important news flash: I just saw a rainbow out the shuttle window. If I were inclined to believe in such nonsense, I'd say that was a good omen for the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1108449157345701919?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1108449157345701919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/10/putting-ignoble-in-vignoble.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1108449157345701919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1108449157345701919'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/10/putting-ignoble-in-vignoble.html' title='Putting the Ignoble in Vignoble'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7548963940540472445</id><published>2009-10-16T11:16:00.000-07:00</published><updated>2009-10-16T11:16:05.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shenanigans'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>My One Lunar Cycle No-Post-iversary</title><content type='html'>Yeah, it's been that long. 28 Days Later, stuffs and things at varying orbitals of excitement have been happening with acceptable regularity:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Not only am I the proud owner of a &lt;a href="http://qx5.blogspot.com/2009/09/board-in-sf.html"&gt;longboard&lt;/a&gt;, but this particular plank of my comprehensive transportation platform now bears the inimitable insignia of one Randall Munroe. (I can only wonder what joyous blasphemies #666 will bring.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finally made it out to the infamous &lt;a href="http://www.dnalounge.com/"&gt;DNA Lounge&lt;/a&gt;; this SF institution has the peculiar distinction of being owned by ex-Netscape programmer &lt;a href="http://www.catb.org/%7Eesr/jargon/html/Z/Zawinskis-Law.html"&gt;Jamie Zawinski&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Canadian Thanksgiving shindig, complete with full turkey and pumpkin pie. Need I say more? (No, but I should probably add this: there's another Canadian Thanksgiving dinner this Sunday hosted by the &lt;a href="http://www.stanford.edu/group/cdnclub/"&gt;Stanford Canadian Club&lt;/a&gt;; despite what their (apparently infrequently updated) site says, it really is this weekend.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.prettylightsmusic.com/"&gt;Pretty Lights&lt;/a&gt; at The Independent last night. If you haven't seen them, you really should.&lt;/li&gt;&lt;/ul&gt;How's Facebook? (Come on - if you care enough about me to read my pithy musings, you're probably expecting an answer to this question.) Intense. It pains me to say it, but Facebook has so far provided much more in the way of personal development and work-related awesomeness than Google ever did. How can that be? It comes down to recruiting strategy: Google casts as wide a net as possible, hoping to grab what it considers to be the best of the best before someone else does. In my opinion, this strategy is bound to backfire. You end up with a zillion interns and, well, less than a zillion interesting and/or useful projects; it doesn't take a math major to see that you can't pair each intern up with something worthwhile to work on. (It does take a math major, however, to look at the whole situation and start rambling about bijections.) Here's the point: half of the interns coming out of Google are extremely wary of returning, and that can't be good. ("Half" here is an extremely unscientific guesstimate, but several co-interns (who will obviously remain nameless in such a public forum as The Internet) have expressed similar sentiments.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7548963940540472445?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7548963940540472445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/10/my-one-lunar-cycle-no-post-iversary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7548963940540472445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7548963940540472445'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/10/my-one-lunar-cycle-no-post-iversary.html' title='My One Lunar Cycle No-Post-iversary'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4283486673693927300</id><published>2009-09-19T14:13:00.000-07:00</published><updated>2009-09-19T14:13:26.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pirates'/><category scheme='http://www.blogger.com/atom/ns#' term='the pirate bay'/><category scheme='http://www.blogger.com/atom/ns#' term='arrrrr'/><category scheme='http://www.blogger.com/atom/ns#' term='arrrr'/><category scheme='http://www.blogger.com/atom/ns#' term='arrr'/><title type='text'>The Pirates United Will Never Be Defeated</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zjh2tzCvVVE/SaYH71keB6I/AAAAAAAACE0/DAEzq1N5wl8/s1600/piratebay.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zjh2tzCvVVE/SaYH71keB6I/AAAAAAAACE0/DAEzq1N5wl8/s320/piratebay.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"We have, ourselves, full confidence that if all do their duty, if nothing is neglected, and if the best arrangements are made, as they are being made, we shall prove ourselves once more able to defend our Internets, to ride out the storm of war, and to outlive the menace of tyranny, if necessary for years, if necessary alone.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Even though large parts of Internets and many old and famous trackers have fallen or may fall into the grip of the Ifpi and all the odious apparatus of MPAA rule, we shall not flag or fail. We shall go on to the end, we shall fight in France, we shall fight on the ef-nets and darknets, we shall fight with growing confidence and growing strength in the air, we shall defend our Internets, whatever the cost may be, we shall fight on the beaches, we shall fight on the baywords.org, we shall fight on the /. and on the digg, we shall fight in the courts; we shall never surrender, and if, which I do not for a moment believe, the Internets or a large part of it were subjugated and starving, then our Empire beyond the seas, armed and guarded by the Anon Fleet, would carry on the struggle, until, in Cerf's good time, the New World, with all its power and might, steps forth to the rescue and the liberation of the old."&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4283486673693927300?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4283486673693927300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/09/pirates-united-will-never-be-defeated.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4283486673693927300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4283486673693927300'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/09/pirates-united-will-never-be-defeated.html' title='The Pirates United Will Never Be Defeated'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zjh2tzCvVVE/SaYH71keB6I/AAAAAAAACE0/DAEzq1N5wl8/s72-c/piratebay.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1019951311850477910</id><published>2009-09-15T16:04:00.000-07:00</published><updated>2009-09-15T16:04:58.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='growth'/><title type='text'>Onwards and Upwards</title><content type='html'>&lt;a href="http://blog.facebook.com/blog.php?post=136782277130"&gt;Congratulations&lt;/a&gt;, Facebook! Now for the other &lt;a href="http://www.google.com/search?q=population%20of%20the%20world"&gt;6.4 billion&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(Side note: looks like Google's playing &lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt;'s game. Round Two: fight!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1019951311850477910?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1019951311850477910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/09/onwards-and-upwards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1019951311850477910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1019951311850477910'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/09/onwards-and-upwards.html' title='Onwards and Upwards'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8929327819538240916</id><published>2009-09-14T23:18:00.000-07:00</published><updated>2009-09-14T23:50:51.899-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='longboard'/><category scheme='http://www.blogger.com/atom/ns#' term='housing'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><title type='text'>The Ongoing Saga of Evan's Search For Housing in San Francisco</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/Sq8a8RDClaI/AAAAAAAACAY/PUYUvXOEMpQ/s1600-h/IMG_0009.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_tc_ymrJn2SU/Sq8a8RDClaI/AAAAAAAACAY/PUYUvXOEMpQ/s320/IMG_0009.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I've finally uploaded a &lt;a href="http://picasaweb.google.com/evan.stratford"&gt;couple of albums&lt;/a&gt;, as promised - one for our intern-squad trip to LA, one for &lt;span style=";font-family:&amp;quot;;" &gt;random.choice()&lt;/span&gt; style samplings of SF. The latter album will hopefully expand as the term progresses!&lt;br /&gt;&lt;br /&gt;The small handful of people that actually read this thing might have noticed a considerable lull in post volume - and not without good reason. For illustration, here's a timeline of my weekend:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Friday, 9 pm: pass out from exhaustion. Turns out I still haven't caught up on sleep from the month of death, a fact which late-night mid-week meanderings in Mission can only exacerbate.&lt;/li&gt;&lt;li&gt;Saturday, 9 am: wake up, foot it to Lower Haight for breakfast.&lt;/li&gt;&lt;li&gt;Saturday, 11 am: still at breakfast place, firing salvos of Craigslist replies. Aiming for the clusterbomb strategy; the housing search in San Francisco is not exactly easy, especially when you're a male international student looking for something short-term.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Saturday, 12 pm: moved on to Upper Haight, where I score myself a longboard.&lt;/li&gt;&lt;li&gt;Saturday, 1 pm: running laps around &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;ll=37.770435,-122.466788&amp;amp;spn=0.003833,0.009538&amp;amp;z=17"&gt;here&lt;/a&gt; to the dismay of tourists and local art cognoscenti alike. Still need practice before I can take this thing to the streets.&lt;/li&gt;&lt;li&gt;Saturday, 2 pm: finally work up enough confidence to book it down to Stockton and Market, where I've got an overpriced screen-repair appointment at the not-so-aptly-named Genius Bar.&lt;/li&gt;&lt;li&gt;Saturday, 4 pm: with everything in working order, I work my way back to the hostel.&lt;/li&gt;&lt;li&gt;Saturday, 5 pm: keycard doesn't work. Uh oh.&lt;/li&gt;&lt;li&gt;Saturday, 5:30 pm: I learn that, contrary to my understanding, &lt;a href="http://www.elementshotel.com/"&gt;the hostel&lt;/a&gt; has fubar'd my reservation; I was supposed to check out this morning. At least they're nice enough not to charge me for the privilege.&lt;/li&gt;&lt;li&gt;Saturday, 6:50 pm: after a hasty sack-packing and another ear-grinding leg on the BART, I'm standing on the San Jose-bound platform at Millbrae Caltrain. The plan? Lug myself to the office, drop my stuff off, and find a nice comfortable couch to crash on. Oh, and I just missed the train.&lt;/li&gt;&lt;li&gt;Saturday, 8:30 pm: I finally get to the office.&lt;/li&gt;&lt;li&gt;Saturday, 9 pm: I check my email, where I find a welcome bit of good news - one of the Craigslist postings actually responded.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Saturday, 9:30 pm: One of my coworkers happens to be working late on a rush job; he kindly offers me a place to crash for the night.&lt;/li&gt;&lt;li&gt;Saturday, 11 pm: I'm watching Clash of the Titans. Hey, this nomad business isn't half bad.&lt;/li&gt;&lt;li&gt;Sunday, 11 am: me, my longboard, and I make it out to the Caltrain for a trip back into SF. Not having a place to stay, I ping &lt;a href="http://thejefffiles.com/blog/"&gt;jverkoeyen&lt;/a&gt;; he volunteers the services of his fine floor for the cause. Random discovery - turns out there's a farmers' market right outside California Ave. Caltrain every Sunday.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sunday, 2 pm: standing at Embarcadero and Market. The Craigslist poster rings me; I've arranged a viewing at 4 pm. Between then and now, I've got to find Jeff and get my ass across most of downtown SF to the far side of Mission. Whatever will I do?&lt;/li&gt;&lt;li&gt;Sunday, 3 pm: turns out Jeff and his girlfriend Emily shelled out for a mattress and bedframe off Craigslist and need help moving it. In return, they'll ship me across town in a Zipcar pickup truck and pass off a set of keys so I can get into their place.&lt;/li&gt;&lt;li&gt;Sunday, 3:40 pm: I reach the room I'm viewing with time to spare. The tenants show me around. Good vibes all around; these people are exactly the kind of laid-back I need right now.&lt;/li&gt;&lt;li&gt;Sunday, 5 pm: eating in some supposedly Cambodian restaurant near Mission.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sunday, 8 pm: a meal, a spot of rainy longboarding, a none-too-quick bus ride, and a short hike later, I reach Jeff's place. It's exactly as sparsely furnished as I had imagined.&lt;/li&gt;&lt;li&gt;Sunday, 9 pm: I find a corner supermarket with the help of a map Jeff left on the counter.&lt;/li&gt;&lt;li&gt;Sunday, 9:30 pm: I'm eating a hasty meal of baguette, cheese, turkey, pasta salad, nectarine, and orange juice under Bay Bridge.&lt;/li&gt;&lt;li&gt;Sunday, 11:30 pm: restless, I take a brief promenade about the apartment complex grounds. Nice pool; there's something pleasantly surreal about living in the shadow of an enormous bridge.&lt;/li&gt;&lt;li&gt;Sunday, 12 am: lights out. Too much busy-work roaming for one weekend.&lt;/li&gt;&lt;/ul&gt;And that was it. Gasp. I must have covered the whole city a zillion times.&lt;br /&gt;&lt;br /&gt;On the upside, I've landed a place to live for the rest of the term; I'm bunking up in my favourite hostel in SF until move-in. That, and I have yet to injure myself longboarding. (Depending on who you ask, that's either a good sign or an indication that I'm not doing it right. We'll see - I've got plenty of time and hills to reverse this trend with.)&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8929327819538240916?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8929327819538240916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/09/photogeny-of-nomadic-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8929327819538240916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8929327819538240916'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/09/photogeny-of-nomadic-life.html' title='The Ongoing Saga of Evan&apos;s Search For Housing in San Francisco'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/Sq8a8RDClaI/AAAAAAAACAY/PUYUvXOEMpQ/s72-c/IMG_0009.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2619165718149295929</id><published>2009-09-12T15:32:00.000-07:00</published><updated>2009-09-12T15:32:45.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='longboard'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><title type='text'>Board in SF</title><content type='html'>Shelled out a wad of cash today for a longboard, which I've been (painlessly (so far, at least)) riding around SF on. My goal is to cut door-to-door times in the city core by 60-75% compared to the estimated walking time on Google Maps. (I'd estimate 80-90% for cycling, but this is immeasurably cooler - not to mention far more prone to catastrophic failure.)&lt;br /&gt;&lt;br /&gt;And, yeah, I promised pics a few days back. I have yet to deliver on that promise, but I'll definitely post here when I do!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2619165718149295929?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2619165718149295929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/09/board-in-sf.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2619165718149295929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2619165718149295929'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/09/board-in-sf.html' title='Board in SF'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8800783199165591889</id><published>2009-09-10T21:48:00.000-07:00</published><updated>2009-09-10T21:48:30.750-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pranks'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='sf'/><title type='text'>You've Been Facebook'd</title><content type='html'>Where "you" is &lt;a href="http://www.techcrunch.com/2009/09/10/yeah-ok-so-facebook-punkd-us/"&gt;TechCrunch&lt;/a&gt;. Long live engineer humour!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8800783199165591889?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8800783199165591889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/09/youve-been-facebookd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8800783199165591889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8800783199165591889'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/09/youve-been-facebookd.html' title='You&apos;ve Been Facebook&apos;d'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8248887321133001359</id><published>2009-09-03T13:52:00.000-07:00</published><updated>2009-09-03T13:52:22.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Where Two Files Meet</title><content type='html'>(Note: I &lt;i&gt;promise&lt;/i&gt; that I'll post something more generally interesting before this day draws to a close, for non-technical values of generally interesting.)&lt;br /&gt;&lt;br /&gt;Let's say that you have two large unsorted files, each of which is essentially a long list of strings, and you want to find their intersection. There's the simple brute-force way:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;while read line; do grep "$line" file2; done &amp;lt; file1&lt;/div&gt;&lt;br /&gt;There's a problem - this is quadratic! Fortunately, we can cut this down pretty easily with the old time-memory tradeoff:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sort file1 &amp;gt; file1.sorted&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sort file2 &amp;gt; file2.sorted&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sort -m file1.sorted file2.sorted &amp;gt; combined&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;diff combined &amp;lt;(uniq combined)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8248887321133001359?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8248887321133001359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/09/where-two-files-meet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8248887321133001359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8248887321133001359'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/09/where-two-files-meet.html' title='Where Two Files Meet'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4129311083417442551</id><published>2009-08-13T08:52:00.000-07:00</published><updated>2009-08-13T08:52:58.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='introspection'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Denouement</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;i&gt;"It is criminal to steal a purse, daring to steal a fortune, a mark of greatness to steal a crown. The blame diminishes as the guilt increases." &lt;/i&gt;-- Schiller&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I was sitting in the City Cafe (accent intended) Bakery (held in slightly-above-average esteem by &lt;a href="http://www.cs.uwaterloo.ca/%7Eplragde/food/kw-food.html"&gt;the professor who brought Waterloo's CS frosh such delights as Scheme&lt;/a&gt;), taking a quick breakfast with &lt;a href="http://www.youtube.com/user/undergroundIII"&gt;my brother&lt;/a&gt;; this quote was written on their blackboard. City Cafe is an economic enigma. They have no cashiers, opting instead for a self-serve honour-system model; you deposit your payment into a bus fare box (Cleveland Transit, I'm told, although I've never verified this) before leaving.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Question of the day: why does this work? By traditional economic theories, the dominant strategy is to eat and run. One theory holds that this is a form of the &lt;a href="http://www.abc.net.au/science/slab/tittat/story.htm"&gt;tit-for-tat strategy&lt;/a&gt;: the City Cafe Bakery places trust in its customers, who then feel compelled (perhaps because reciprocity helps maintain social norms) to pay. Another possibility is that the players are maximizing self-interest according to a different payoff function. There might be quantifiable reward in keeping the bakery open or in appearing honest to one's friends. (It is notable that customers often leave tips - maybe it is psychologically easier to tip when the register and tip jar are combined into one receptacle!) There is also the novelty factor; by following an unorthodox business model, they generate a certain amount of word-of-mouth buzz.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;(According to Schiller, your best strategy is to grab &lt;i&gt;everything&lt;/i&gt; in the bakery and run - that way, you minimize blame!)&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Denouement (again, accent intended) comes from the French &lt;i&gt;noeud&lt;/i&gt; for knot; the literal translation is "unknotting". I'll leave that open to interpretation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4129311083417442551?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4129311083417442551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/08/denouement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4129311083417442551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4129311083417442551'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/08/denouement.html' title='Denouement'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5053299329726025328</id><published>2009-08-07T13:11:00.000-07:00</published><updated>2009-08-07T13:11:23.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='time-wasting'/><title type='text'>Context-Free Blogging</title><content type='html'>&lt;a href="http://xkcd.com/236/"&gt;My hobby&lt;/a&gt;: thinking up weird pseudo-science-sounding phrases and investigating the resulting Google harvest. This time around, a search for context-free schooling (thought process: take &lt;a href="http://www.cs.uwaterloo.ca/%7Ebreic/cs360/20-samplefinal.pdf"&gt;CS 360&lt;/a&gt;, add various ruminations on the state of modern education, bring to simmer) returned a list of links to &lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6WJ9-4S2VG5N-1&amp;amp;_user=1067412&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;_docanchor=&amp;amp;view=c&amp;amp;_acct=C000051246&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=1067412&amp;amp;md5=013eb164a6e5da56bac3c321e1a72f42"&gt;this paper&lt;/a&gt; on the impact of education on contextual information processing. (The original absolute/relative tasks are described in greater detail &lt;a href="http://crab.rutgers.edu/%7Eseduffy/KitDuffKawLar.pdf"&gt;here&lt;/a&gt;.) The question of how much you can &lt;i&gt;really &lt;/i&gt;extrapolate from drawing lines in boxes is left open; in any case, we may be able to include big-picture connection-building among the &lt;a href="http://www.ted.com/talks/lang/eng/ken_robinson_says_schools_kill_creativity.html"&gt;victims of traditional schooling&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Oh, and the Internet has finally invented &lt;a href="http://thenethernet.com/"&gt;meta-time-wasting&lt;/a&gt;. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5053299329726025328?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5053299329726025328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/08/context-free-blogging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5053299329726025328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5053299329726025328'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/08/context-free-blogging.html' title='Context-Free Blogging'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2066989349196640320</id><published>2009-07-26T15:10:00.000-07:00</published><updated>2009-07-26T15:10:33.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='valkyrie'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>The Eleventh Hour</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/SmzPW4lX8WI/AAAAAAAAB4Q/q-V4aU3Zemc/s1600-h/envtest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tc_ymrJn2SU/SmzPW4lX8WI/AAAAAAAAB4Q/q-V4aU3Zemc/s320/envtest.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aside from being the title of an &lt;a href="http://en.wikipedia.org/wiki/The_Eleventh_Hour_%28book%29"&gt;awesome children's book&lt;/a&gt; (which may or may not still reside on my shelves), this phrase adequately sums up my situation here. I've got slightly under 72 hours to polish and document my Graphics project, touch up an essay on Church's solution to the &lt;i&gt;Entscheidungsproblem&lt;/i&gt; of Hilbert's Program, and - of course! - push the trains struggle as far as possible. &lt;br /&gt;&lt;br /&gt;(Yes, I know you can see the edges of the skybox in the above image. I probably won't have time to change that before the Graphics demo.)&lt;br /&gt;&lt;br /&gt;On the real-time front, we've had a very fortunate breakthrough; the sensor polling bug fell before a quick debugging sprint yesterday morning. We're driving hard to get route-finding working tonight, as this will leave us all of Tuesday (as mentioned, I have other things to worry about tomorrow!) to put together our final demo. Given the time constraints, we'll likely have to go with something almost braindead-simple; the plan currently being floated around is to hack together a cat-and-mouse game using the trains.&lt;br /&gt;&lt;br /&gt;But enough about schoolwork! I'm off to &lt;a href="http://awesomehaus.blogspot.com/"&gt;Germany&lt;/a&gt; on the 30th. Let's hope I manage to drag my bedraggled body to Pearson in time!&lt;br /&gt;&lt;br /&gt;Final note: this blog has been &lt;i&gt;very&lt;/i&gt; one-dimensional over the last month. Given my situation, this is perhaps understandable; nevertheless, I shiver with antici-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Delay(60);&amp;nbsp;&amp;nbsp;&amp;nbsp; // pause for 3s (one tick == 50 ms)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-pation at the prospect of having something other than Graphics or Real-Time to talk about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2066989349196640320?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2066989349196640320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/eleventh-hour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2066989349196640320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2066989349196640320'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/eleventh-hour.html' title='The Eleventh Hour'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/SmzPW4lX8WI/AAAAAAAAB4Q/q-V4aU3Zemc/s72-c/envtest.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6872126312359160960</id><published>2009-07-23T16:07:00.000-07:00</published><updated>2009-07-23T16:07:06.795-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Ore for Wood</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/SmjkxQPLhEI/AAAAAAAAB4I/FbuPvWtt0oQ/s1600-h/reflections.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/SmjkxQPLhEI/AAAAAAAAB4I/FbuPvWtt0oQ/s320/reflections.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;5 days to go - I've missed a few here. Graphics is going reasonably well; the past day or so has seen the addition of skyboxes, proper terrain clamping, texture blending on the terrain (albeit a hacked-together software version), smooth normals, water reflection, and a few test scenes to my project. Above: a test scene that shows the use of the skybox (rendered in garish colours for maximum obviousness!), one tree (with eight levels of branching), and a few randomly positioned rocks (two levels of subdivision each).&lt;br /&gt;&lt;br /&gt;Real-Time, on the other hand, is coming to an inauspicious close. Our program suffers from a showstopper bug: sensor polling freezes. We managed to hack around this to complete most of the first train control objective, but the second control objective will remain elusive until this is resolved. The PsychOS team is running out of time rapidly, but we still have a few more tricks up our sleeves:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We can redesign sensor polling. The current plan is to extend the kernel's event-handling structures to support software events as well; this way, the SensorManager() can trigger EVENT_NEW_SENSOR (or something like that) whenever a new sensor comes along.&lt;/li&gt;&lt;li&gt;We can attempt adding a chain of couriers (or similar data-passing tasks) to the train input server. If the problem lies in dropped bytes, this might resolve the issue.&lt;/li&gt;&lt;li&gt;Failing all else, we can add some NOPs (or the C equivalent: a busy-wait for loop - our TA actually did this when he took the course.) The mere thought of adding such a blatant hack induces violent fits of cringing, but we'll do it if we need to.&lt;/li&gt;&lt;/ul&gt;If we can get past this, we already have systems in place to find routes and reserve track sections - they just need to be tested and used.&lt;br /&gt;&lt;br /&gt;Personal notes: it is now quite obvious that the month is drawing to a close. This has been a bizarre ride of ups and downs, of hope and despair, of sleeplessness and take-out meals and 16-hour debugging sprints. I'm feeling strangely calm as I enter the final stretch, in stark contrast to the near-complete-breakdowns that some of those Real-Time sprints drove me to. Not even the possibility of missing the final Real-Time demo fazes me; regardless of what happens with the project, I've learned an incredible amount about hardware, low-level programming, and operating system design - and it's all &lt;i&gt;practical&lt;/i&gt; knowledge, especially given that we've been working with the ARM architecture.&lt;br /&gt;&lt;br /&gt;If I had to pinpoint the source of our problems, I'd put it down to hubris. The early assignments were relatively easy, the test programs rather trivial; we simply wrote the required code and then went off to take care of our other assignments, working on the assumption that everything would continue to go well. This is &lt;i&gt;never&lt;/i&gt; good practice, not even in the classroom. We implemented proper error-checking about three weeks ago, something we should have done three &lt;i&gt;months&lt;/i&gt; ago. We should have rigorously tested our kernel, bombarding it with interrupts and I/O and requests and everything else that could possibly bring it to its knees; we did some of that, but it was too little and far too late.&lt;br /&gt;&lt;br /&gt;Despite the above tirade - which looks suspiciously like a pre-emptive post-mortem - I should add that I &lt;i&gt;refuse&lt;/i&gt; to give up. Once I get Graphics out of the way, we'll dig our heels in this weekend to try anything and everything that might work. Keep posted!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6872126312359160960?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6872126312359160960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/ore-for-wood.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6872126312359160960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6872126312359160960'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/ore-for-wood.html' title='Ore for Wood'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/SmjkxQPLhEI/AAAAAAAAB4I/FbuPvWtt0oQ/s72-c/reflections.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2546129843917445048</id><published>2009-07-18T12:11:00.000-07:00</published><updated>2009-07-18T12:11:20.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='tree generation'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Trees!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/SmIZ4eSXFLI/AAAAAAAAB4A/oDo3yWgOyk8/s1600-h/orchard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tc_ymrJn2SU/SmIZ4eSXFLI/AAAAAAAAB4A/oDo3yWgOyk8/s400/orchard.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;10 days to go. After plowing through the first few sections of Prusinkiewicz and Lindenmayer's &lt;a href="http://algorithmicbotany.org/papers/#abop"&gt;The Algorithmic Beauty of Plants&lt;/a&gt;, I hacked together a quick tree renderer. The above image was generated by randomizing the parameters in Figure 2.8, with slightly higher branching angles to fake downward tropism. (Yeah, I know that's not how it's really done - but it's dead simple.)&lt;br /&gt;&lt;br /&gt;At this point, I need to start trying to mash things together. I could spend several days tweaking my texture, terrain, rock, and plant generators to near-perfection, but I just don't have the time - especially when I've also got to slap in texture mapping, a skybox background, a simple water plane with stencil buffer reflection, interaction (I've got the keyboard working, but I haven't implemented mouselook yet), terrain clamping, and collision detection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2546129843917445048?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2546129843917445048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/trees.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2546129843917445048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2546129843917445048'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/trees.html' title='Trees!'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/SmIZ4eSXFLI/AAAAAAAAB4A/oDo3yWgOyk8/s72-c/orchard.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3185409287100593523</id><published>2009-07-17T16:56:00.000-07:00</published><updated>2009-07-17T16:56:56.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='success'/><category scheme='http://www.blogger.com/atom/ns#' term='bill nye'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Phoenix Down</title><content type='html'>11 days to go. No picture this time, but I don't need one: we fixed the kernel, thus &lt;a href="http://en.wikipedia.org/wiki/Gameplay_of_Final_Fantasy"&gt;reviving&lt;/a&gt; ourselves just in time for the final sprint. Depending on how the next couple of days go, we may even be able to make the Train Control 2 deadline on Monday. This milestone - the last before the final project - requires groups to track the motion of two trains while preventing collisions.&lt;br /&gt;&lt;br /&gt;Graphics front? Nothing for today. I'll be putting in a sprint tomorrow, which will hopefully furnish me with more flashy images to post here on qx5. I'm treating myself to a break this evening; given that I've been putting in 10-14 hour workdays every day &lt;i&gt;including weekends &lt;/i&gt;this fortnight prior, such a well-needed pause could prove instrumental in averting catastrophic burnout.&lt;br /&gt;&lt;br /&gt;(For the more observant reader: yes, the days-to-go counts over the last three posts have been inconsistent. This one is correct; I'm counting down to the Graphics project deadline. I'd wish myself good luck, but &lt;a href="http://www.facebook.com/people/David-Tam/28115943"&gt;dtam&lt;/a&gt; says luck is for chumps...so I'll wish myself good skill instead.)&lt;br /&gt;&lt;br /&gt;Well, I'm off to go eat pizza and watch Bill Nye with our friendly neighbourhood &lt;a href="http://www.csclub.uwaterloo.ca/"&gt;CSC&lt;/a&gt;. Keep posted!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3185409287100593523?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3185409287100593523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/phoenix-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3185409287100593523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3185409287100593523'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/phoenix-down.html' title='Phoenix Down'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6209363817612695494</id><published>2009-07-15T18:45:00.000-07:00</published><updated>2009-07-15T18:45:11.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='exercise'/><category scheme='http://www.blogger.com/atom/ns#' term='subdivision'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Catmulligatawny</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_tc_ymrJn2SU/Sl5_Ls79CfI/AAAAAAAAB34/KjFHhdrB2gs/s1600-h/catmull-clark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_tc_ymrJn2SU/Sl5_Ls79CfI/AAAAAAAAB34/KjFHhdrB2gs/s320/catmull-clark.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;13 days to go (I missed one in my daily reporting - blasphemous!) Above: a quick mockup of Catmull-Clark subdivision surfaces on a cube. As you can see, the face normals are still slightly off; nevertheless, the general technique appears to be mostly working (although, &lt;a href="http://en.wikipedia.org/wiki/Catmull%E2%80%93Clark_subdivision_surface"&gt;as promised&lt;/a&gt;, the quads produced are predominantly non-coplanar.)&lt;br /&gt;&lt;br /&gt;Why would I bother doing this? Simple - I'm going to make rocks! I'll start with a "random" cube formed by taking a point from each octant. Toss in a couple of Catmull-Clark iterations, perturb the face and edge vertices, and hopefully the end result will be vaguely boulder-esque. I'm also planning to implement stochastic OL-systems for trees and plants. (Trust me: although these sound impressive, they're actually quite easy to piece together.)&lt;br /&gt;&lt;br /&gt;On the Real-Time front: we've &lt;i&gt;finally&lt;/i&gt; discarded enough hubris to implement proper fail-fast error checking. We now panic on every buffer overflow and system call error with a very informative message detailing as much of the system state as possible. This approach - something that we should have implemented long ago! - has already located several serious issues. For each one we fix, two more pop up; nevertheless, not all hope is lost. If we can excise enough of these pesky critters by, say, four days before the project deadline, I still think we can cobble together a working demo.&lt;br /&gt;&lt;br /&gt;Personal front: I've been aiming for a renewed adherence to my previous plan of proper sleep, decent nutrition, and exercise over the past three days. The result? My stress levels have plummeted, my mood has improved measurably, and I once more regard my projects as fascinating challenges rather than onerous obstacles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6209363817612695494?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6209363817612695494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/catmulligatawny.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6209363817612695494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6209363817612695494'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/catmulligatawny.html' title='Catmulligatawny'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tc_ymrJn2SU/Sl5_Ls79CfI/AAAAAAAAB34/KjFHhdrB2gs/s72-c/catmull-clark.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5506569826569007290</id><published>2009-07-12T08:43:00.000-07:00</published><updated>2009-07-12T08:43:07.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WTF'/><category scheme='http://www.blogger.com/atom/ns#' term='social life'/><category scheme='http://www.blogger.com/atom/ns#' term='trains'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><title type='text'>Rude Interruptions</title><content type='html'>16 days to go. The increased I/O demands of sensor polling and interface updating have uncovered a heretofore hidden weakness in our Real-Time kernel - our UART communication routines are most definitely dropping characters. Fortunately, this sort of thing is comparatively easier to tackle than the obscure context switching snafus that dogged us earlier; I've already made some progress in re-enabling the FIFOs on UART1, which is used for communication with the train controller. I'm going through a quick I/O optimization sprint this morning (and early afternoon!) with the aim of improving this part to the point where we can reliably gather timing data from the track.&lt;br /&gt;&lt;br /&gt;Personal notes: I currently have no life. I'm spending upwards of 10 hours a day either actively programming or thinking about programming, and my buttocks have become a quasi-permanent fixture in the Real-Time lab. I did manage to pop out briefly for a couple of pints on Friday, but only after putting in a solid day plus overtime. I've got a few forms that need to be filled out, a couple of unpaid parking tickets, an encroaching tide of facial hair, and piles of unwashed dishes in both kitchen sinks (though, to my credit, I am wearing freshly washed clothes.) And you know what? The experience is actually kind of &lt;i&gt;fun&lt;/i&gt;, in a more-than-masochistic brain-grinding teeth-clenching sort of way. I'll be able to look back on this as the most intense month of undergrad CS at Waterloo. (I note wryly that Real-Time &lt;a href="http://birdcourses.com/course.php?courseid=144"&gt;is listed on birdcourses.com&lt;/a&gt; - "earning credits for playing around with trains, how easy is that!?")&lt;br /&gt;&lt;br /&gt;So far, Real-Time is proving to be decidedly more involved than Graphics; the former provides much more potential for those delicious WTF moments that all hackers learn to simultaneously cherish and loathe. I still remember the first Real-Time assignment with an odd mixture of nostalgia and vomitous aversion. The busy-wait I/O libraries provided by the prof to help us down our well-intentioned path contained a fatal flaw: the baud rate divisors for UART1 were taken from the previous Intel architecture, and were therefore quite wrong. That was the first of many potent WTF moments - if you can't trust the provided starter code, what &lt;i&gt;can&lt;/i&gt; you trust?&lt;br /&gt;&lt;br /&gt;Anyways, I should probably get back to work. Keep posted!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5506569826569007290?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5506569826569007290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/rude-interruptions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5506569826569007290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5506569826569007290'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/rude-interruptions.html' title='Rude Interruptions'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7584358960667655178</id><published>2009-07-11T14:59:00.000-07:00</published><updated>2009-07-11T14:59:07.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='procedural generation'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Joseph and the Amazing Technicolor Terrain Patch</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/SlkJfayIirI/AAAAAAAABt0/i9mS42XM0Ow/s1600-h/heightmap_lighting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tc_ymrJn2SU/SlkJfayIirI/AAAAAAAABt0/i9mS42XM0Ow/s320/heightmap_lighting.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now in colour! With semi-decent lighting! The random white patches are triangles pointed directly at the sun (or directional light, whichever you prefer); for this test render, I'm only calculating face normals and calling &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;glNormal3d()&lt;/span&gt; once before each triangle. One way to get vertex normals is to average over the neighbouring face normals.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7584358960667655178?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7584358960667655178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/joseph-and-amazing-technicolor-terrain.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7584358960667655178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7584358960667655178'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/joseph-and-amazing-technicolor-terrain.html' title='Joseph and the Amazing Technicolor Terrain Patch'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/SlkJfayIirI/AAAAAAAABt0/i9mS42XM0Ow/s72-c/heightmap_lighting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1684408211506749225</id><published>2009-07-11T13:42:00.000-07:00</published><updated>2009-07-11T13:42:22.021-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Topographically Speaking</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_tc_ymrJn2SU/Slj2mPanVOI/AAAAAAAABts/36RGWYrtWzI/s1600-h/heightmap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_tc_ymrJn2SU/Slj2mPanVOI/AAAAAAAABts/36RGWYrtWzI/s320/heightmap.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;17 days to go. As promised, I've hacked together heightmap functionality; this one is based off the diamond-square algorithm. Next up: lighting, texturing, keyboard and mouse interaction, and some kind of sky (I'll probably go with skybox for that one.) Real-Time is coming along, albeit not as quickly as I had hoped. We're now working out an issue with the sensor modules; either the modules don't always send the right number of bytes, or we're dropping bytes somewhere in our serial drivers. Either way, we've got to figure this out and reliably track the movements of a single train to within a few centimetres by Monday.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1684408211506749225?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1684408211506749225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/topographically-speaking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1684408211506749225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1684408211506749225'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/topographically-speaking.html' title='Topographically Speaking'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tc_ymrJn2SU/Slj2mPanVOI/AAAAAAAABts/36RGWYrtWzI/s72-c/heightmap.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5518279958616108140</id><published>2009-07-08T17:28:00.000-07:00</published><updated>2009-07-08T17:28:34.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='worley noise'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Voronoi the Paranoid Android</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_tc_ymrJn2SU/SlU1QsPIIfI/AAAAAAAABW0/oTAegnJ2hvE/s1600-h/worley.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_tc_ymrJn2SU/SlU1QsPIIfI/AAAAAAAABW0/oTAegnJ2hvE/s320/worley.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Above: a cellular-based texture, Worley-style. Still implementing cool textures for my procedural content generation project; so far, I've got a couple of noise basis functions along with a framework for combining them into more complex textures. Next up: terrain generation. This will involve a few steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generate a heightmap. For a first pass rendering, midpoint displacement is dead easy to implement. Since heightmaps &lt;i&gt;are&lt;/i&gt; textures, I can even slap this into my texture framework as another basis function (albeit one with a relatively heavy initialization time (although the midpoint values could be generated on demand!))&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Set up the OpenGL window. We've been using &lt;a href="http://www.gtkmm.org/"&gt;gtkmm&lt;/a&gt; for previous assignments; I see no reason to break that trend, as I can save time by slapping our old window setup code into the project.&lt;/li&gt;&lt;li&gt;Issue OpenGL commands to render the heightmap. In its most basic form, this is just a series of GL_QUADS. If I was going after static rendering, I'd probably put the whole thing into a display list and use GL_QUAD_STRIPS instead; however, this will be interactive, so I'll need to do something smarter than shoving the whole terrain patch into a display list.&lt;/li&gt;&lt;/ul&gt;There are other considerations as well. For example, I might want to dynamically load blocks of terrain as the user walks around. Randomly generated terrain becomes a bit of a problem in this case - unless the blocks are "aware" of each other, there will be discontinuous jumps! I'll leave those problems for later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5518279958616108140?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5518279958616108140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/voronoi-paranoid-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5518279958616108140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5518279958616108140'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/voronoi-paranoid-android.html' title='Voronoi the Paranoid Android'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tc_ymrJn2SU/SlU1QsPIIfI/AAAAAAAABW0/oTAegnJ2hvE/s72-c/worley.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7090321059969401743</id><published>2009-07-08T14:41:00.000-07:00</published><updated>2009-07-08T14:41:51.098-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='heisenbugs'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>15 Minutes of Fame</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/SlUO3fUiYqI/AAAAAAAABWs/pe1qzF9t1BM/s1600-h/image3-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/SlUO3fUiYqI/AAAAAAAABWs/pe1qzF9t1BM/s320/image3-1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;20 days to go, and it is with the utmost pride that I post the above image. What is it? Look closely in the upper-left corner and you'll see what looks like a timer reading just over 15 minutes.&lt;br /&gt;&lt;br /&gt;That's right - yesterday around 9:30 pm, after &lt;a href="http://code.google.com/p/psych-os/wiki/UberBug"&gt;four days of debugging&lt;/a&gt;, we posted &lt;a href="http://code.google.com/p/psych-os/source/detail?r=143"&gt;this commit&lt;/a&gt; to the SVN repo. While we fixed several other glaring issues with our context switch during this marathon of frustration, this was the one to finally extirpate a nasty Heisenbug that all but stopped development on our Real-Time project. The above image is proof that, with this bug removed, our system can now run for 15 minutes without crashing - the same 15 minutes that will be required of us during our final project demonstrations. More importantly, this allows us to continue on with more interesting aspects - like figuring out how to reliably track the location of a train in the face of highly fallible hardware and malicious switch-flipping sensor-triggering TAs.&lt;br /&gt;&lt;br /&gt;For me, this renews the confidence that I had &lt;a href="http://qx5.blogspot.com/2009/07/score-and-four-to-go.html"&gt;called into question&lt;/a&gt; not four days ago. It's hard to stress the importance of this enough when you're up against a formidable challenge - and the combination of Graphics and Real-Time is most certainly that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7090321059969401743?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7090321059969401743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/15-minutes-of-fame.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7090321059969401743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7090321059969401743'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/15-minutes-of-fame.html' title='15 Minutes of Fame'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/SlUO3fUiYqI/AAAAAAAABWs/pe1qzF9t1BM/s72-c/image3-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1907583641008776467</id><published>2009-07-06T20:38:00.000-07:00</published><updated>2009-07-06T20:38:57.304-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raytracer'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='stability'/><title type='text'>Catch-22</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/SlLC-w6nPbI/AAAAAAAABWI/8T_fg2ZoclY/s1600-h/sample.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/SlLC-w6nPbI/AAAAAAAABWI/8T_fg2ZoclY/s320/sample.png" /&gt;&lt;/a&gt;&lt;/div&gt;22 days to go, and I'm putting the finishing touches on my raytracer. Above: my sample image, which features implicit surfaces and adaptive anti-aliasing. (Technical details? Bounded Newton-Raphson iterations, gradients for normal vectors. Simple. I'm told &lt;a href="http://en.wikipedia.org/wiki/False_position_method"&gt;regula-falsi&lt;/a&gt; is preferred; if I had another day, I'd pop that in there. As for the adaptive anti-aliasing, I'm applying a Sobel operator to the luminance values from the first pass and randomly supersampling pixels above a certain threshold.) Unfortunately, the images seem to suffer from a good deal of noise; in raytracing, this is a sign of numerical instability. If I was pursuing a raytracer-based final project, I would investigate further and fix it, probably along these lines of attack:&amp;nbsp; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The problem worsens with distance from the camera. This might be fixed by applying a projective transformation, but that would FUBAR angles for shadows and reflection.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some of the mesh models have wonky normals; it might be worth the time to recalculate them to the outside.&lt;/li&gt;&lt;li&gt;I could probably eliminate a few spurious divisions and normalizations.&lt;/li&gt;&lt;/ul&gt;That said, I don't have time, so noisy images it is. Let's hope my final project is free of such trite errors!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1907583641008776467?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1907583641008776467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/catch-22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1907583641008776467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1907583641008776467'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/catch-22.html' title='Catch-22'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/SlLC-w6nPbI/AAAAAAAABWI/8T_fg2ZoclY/s72-c/sample.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2639609234378562222</id><published>2009-07-05T07:11:00.000-07:00</published><updated>2009-07-05T07:11:16.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Z</title><content type='html'>23 days to go. After reflecting upon the virtues of getting proper amounts of sleep and not eating takeout Chinese or Pita Factory twice a day, I've decided that my approach to this month has to change. From now on, I'll be experimenting with a strict 11-7 sleep schedule. I've also stocked up on snacks of the apples-and-carrots variety, and I took some time aside last night to concoct container-loads of &lt;i&gt;pasta e fagioli&lt;/i&gt; and salad. I'll also try to set some time aside in my daily breaks for exercise.&lt;br /&gt;&lt;br /&gt;The hypothesis is that, if applied correctly, this will increase my general alertness and productivity. As a side effect, it will likely contribute to a more psychologically-balanced state. This seems obvious; I'd wager, however, that most students faced with crushing workloads panic and go the graveyard-shift route, a path which I had been following up until last night.&lt;br /&gt;&lt;br /&gt;So - 23 days to go, and may each be better than the last!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2639609234378562222?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2639609234378562222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/z.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2639609234378562222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2639609234378562222'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/z.html' title='Z'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5573849727071946884</id><published>2009-07-04T16:30:00.000-07:00</published><updated>2009-07-04T16:30:03.116-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='time management'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Score and Four To Go</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/Sk_fD27kbvI/AAAAAAAABWA/m3lVt1xC0_4/s1600-h/simple_cows.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tc_ymrJn2SU/Sk_fD27kbvI/AAAAAAAABWA/m3lVt1xC0_4/s320/simple_cows.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That's right - 24 days left. Current status:&lt;br /&gt;&lt;br /&gt;Raytracer's almost finished. I just have to put a flag in to render bounding boxes, speed things up a little, and render a custom scene (unlike the one at top, which was provided by the TAs as a test.) I'll also put a bit more effort into stamping out numerical instability - especially for ray-polygon intersection - and I'll perform random supersampling to smooth things out a bit. Once I get that done, I can finally get back to my end-of-term project!&lt;br /&gt;&lt;br /&gt;We've hit a snag in Real-Time land. System call parameters occasionally get corrupted, and it's somehow related to timer interrupts. (For full details, see &lt;a href="http://code.google.com/p/psych-os/wiki/UberBug"&gt;here&lt;/a&gt;.) So far, the bug has proven itself to be highly resistant to our debugging efforts. Not all is lost, however; I'm planning to branch the repo, pare down the system to only those parts necessary to reproduce it, and tweak around until this thing is fixed. While it might cost us some short-term assignment marks, we still have time to rewrite the thing from scratch - and I'm fully prepared to do so in the absence of effective alternatives. (It's worth noting that at least one other group has followed this precipitous path!)&lt;br /&gt;&lt;br /&gt;On a more personal note, this is the most demanding sustained workload I've ever faced. Until this month is over, weekends and holidays mean nothing to me. I'm holding up so far; the Real-Time bug brought me close to the breaking point, but I've since regained my self-confidence. The bottom line is this: I enjoy what I do. I like the challenge of it, the reward of writing something abstract to get a very concrete result. If I didn't, I would have ditched CS long ago for less silicon-encrusted pastures. If I have to remind myself of that when I'm chugging away another 10-hour stint in the Trains Lab, so be it. I'll make it through these 24 days one way or another - Evan will prevail!&lt;br /&gt;&lt;br /&gt;That said, I'm always open to receiving words of encouragement, advice, or anything else positive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5573849727071946884?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5573849727071946884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/score-and-four-to-go.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5573849727071946884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5573849727071946884'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/score-and-four-to-go.html' title='Score and Four To Go'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/Sk_fD27kbvI/AAAAAAAABWA/m3lVt1xC0_4/s72-c/simple_cows.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4412835671275778040</id><published>2009-07-02T19:27:00.001-07:00</published><updated>2009-07-02T19:27:56.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='all-nighters'/><category scheme='http://www.blogger.com/atom/ns#' term='interrupts'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>Once More Unto the Breach, Dear Trains, Once More</title><content type='html'>26 days to go. It's approaching 10:30 pm (despite what the timestamp says!) and I'm currently tackling the last known problem in our kernel: interrupt-based terminal I/O. 12 hours to go before the due date - wish me luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4412835671275778040?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4412835671275778040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/once-more-unto-breach-dear-trains-once.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4412835671275778040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4412835671275778040'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/once-more-unto-breach-dear-trains-once.html' title='Once More Unto the Breach, Dear Trains, Once More'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5583984553077480335</id><published>2009-07-01T07:19:00.000-07:00</published><updated>2009-07-01T07:19:39.745-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='all-nighters'/><category scheme='http://www.blogger.com/atom/ns#' term='time management'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>T -27 days</title><content type='html'>One day in. I'm ahead of schedule so far - the next Theory of Computation assignment only took 2.5 hours instead of the 5 I had allotted. Today: History of Math and Real-Time sprints, with a dash of raytracing if time permits. If everything proceeds in similar fashion, I might actually be able to pull this off without all-nighters...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5583984553077480335?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5583984553077480335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/07/t-27-days.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5583984553077480335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5583984553077480335'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/07/t-27-days.html' title='T -27 days'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6304502791104586903</id><published>2009-06-30T05:10:00.000-07:00</published><updated>2009-06-30T05:10:54.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='time management'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><category scheme='http://www.blogger.com/atom/ns#' term='month of death'/><title type='text'>The Ultimate Showdown</title><content type='html'>So this is it - the final make-or-break stretch of my most demanding term at the University of Waterloo. Over the next 28 days, I will either successfully complete Real-Time and Graphics concurrently or consign myself to a pseudorandom location within the Bermuda Triangle of exhaustion, insanity, and despair trying. In typical fashion, I've done some preliminary number crunching: assuming roughly 8 hours of productive time per day - including weekends! - I have 224 hours in which to complete four Theory of Computation assignments, an essay about Church's approach to the &lt;a href="http://en.wikipedia.org/wiki/Entscheidungsproblem"&gt;Entscheidungsproblem&lt;/a&gt;, a raytracer, two more Real-Time train control milestones, one last midterm...and both my Real-Time and Graphics projects. I believe that this feat is tractable, albeit barely so - but time will be the judge of how well my wetware handles NP-complete scheduling problems!&lt;br /&gt;&lt;br /&gt;The clock is ticking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6304502791104586903?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6304502791104586903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/ultimate-showdown.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6304502791104586903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6304502791104586903'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/ultimate-showdown.html' title='The Ultimate Showdown'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8406315249556518894</id><published>2009-06-29T13:10:00.000-07:00</published><updated>2009-06-29T13:47:34.207-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='textures'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='procedural generation'/><category scheme='http://www.blogger.com/atom/ns#' term='perlin noise'/><title type='text'>Following Procedure</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/Skkacl-16uI/AAAAAAAABV4/gftHRja2_Do/s1600-h/perlin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/Skkacl-16uI/AAAAAAAABV4/gftHRja2_Do/s320/perlin.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;What does three hours of work get you? A &lt;a href="http://www.math.sci.hiroshima-u.ac.jp/%7Em-mat/MT/emt.html"&gt;Mersenne Twister&lt;/a&gt;, the above image, and the revelation that, according to &lt;a href="http://books.google.com/books?id=GWQ_hz2sIMcC&amp;amp;lpg=PP1&amp;amp;pg=PA343"&gt;this book&lt;/a&gt;, Perlin is blissfully unaware of the finer points of &lt;a href="http://en.wikipedia.org/wiki/Knuth_shuffle"&gt;Knuth shuffling&lt;/a&gt;. (This should not be construed as an attack on the rest of Perlin's work, which is responsible for much general awesomeness in subsequent cinematography.)&lt;br /&gt;&lt;br /&gt;Graphics geeks will recognize this immediately; for the other 99.99% of humanity, it's an example of &lt;a href="http://www.noisemachine.com/talk1/"&gt;Perlin noise&lt;/a&gt;. This is the first intelligible thing to come out of my graphics term project, in which I plan to explore the exciting world of &lt;a href="http://pcg.wikidot.com/"&gt;procedural generation&lt;/a&gt;. CG artists will commonly blend several instances of Perlin noise at different frequencies (16 pixels for my test image) to generate more complex textures. These textures are then applied to objects in the scene.&lt;br /&gt;&lt;br /&gt;Why did I bother implementing a more complicated random number generator? Let me count the reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The default implementation uses the full 32-bit integer range and provides an incredibly long period.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I now know exactly how my RNG works. (To be fair, I'm a bit fuzzy on the details of all those bit-shifts...but it feels good to roll your own!)&lt;/li&gt;&lt;li&gt;&lt;a href="http://cer.freeshell.org/renma/LibraryRandomNumber/#LibraryRandomNumber_sec_python"&gt;Python uses it&lt;/a&gt; since Python 2.3, which is a ringing endorsement in my books. (I'm told it has become something of a defacto standard.) &lt;/li&gt;&lt;/ul&gt;The bottom line is this: I'm going to be generating a lot of random numbers in the course of my project, so I might as well get a good (but still algorithmic - no &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/dev/urandom&lt;/span&gt; reads!) source of them.&lt;br /&gt;&lt;br /&gt;Next up: I'll probably tackle Voronoi cell textures and attempt to actually texture-map a procedural texture in OpenGL. I'll also be continuing to post raytracer updates here, so keep posted! For information on the ever-changing state of my team's Real-Time Programming project, see the &lt;a href="http://uw-psychos.blogspot.com/"&gt;PsychOS blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8406315249556518894?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8406315249556518894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/following-procedure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8406315249556518894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8406315249556518894'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/following-procedure.html' title='Following Procedure'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/Skkacl-16uI/AAAAAAAABV4/gftHRja2_Do/s72-c/perlin.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4311671406796363672</id><published>2009-06-22T09:17:00.000-07:00</published><updated>2009-06-22T09:17:26.844-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rave'/><category scheme='http://www.blogger.com/atom/ns#' term='raytracer'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Shady Business</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_tc_ymrJn2SU/Sj-k1Jd0g-I/AAAAAAAABT0/qXAkppgckAk/s1600-h/simple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_tc_ymrJn2SU/Sj-k1Jd0g-I/AAAAAAAABT0/qXAkppgckAk/s320/simple.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Here's the same picture as before, with one important difference: the spheres look, well, spherical. Between dancing under the stars (and early-morning fog!) and class, I've somehow managed to find both the time and requisite sanity to implement Phong shading. Given libraries for vector operations, this is a relatively trivial task; nevertheless, it adds a whole new dimension (yeah, I couldn't resist) to rendered images. I'm also computing shadow rays to get the nice (albeit somewhat pixelated) shadows on the occluded parts of spheres. Next up: box and mesh intersections, supersampling, and hierarchical rendering. I'll keep posting progress images as I go along. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4311671406796363672?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4311671406796363672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/shady-business.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4311671406796363672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4311671406796363672'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/shady-business.html' title='Shady Business'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tc_ymrJn2SU/Sj-k1Jd0g-I/AAAAAAAABT0/qXAkppgckAk/s72-c/simple.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8324317687505103179</id><published>2009-06-20T10:13:00.000-07:00</published><updated>2009-06-22T08:56:44.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='raytracer'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Here's Shooting a Ray at You, Kid</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/Sj0NN8RkCOI/AAAAAAAABTs/HIcoy4htKyc/s1600-h/simple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_tc_ymrJn2SU/Sj0NN8RkCOI/AAAAAAAABTs/HIcoy4htKyc/s320/simple.png" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;(Yes, I finally saw &lt;a href="http://www.imdb.com/title/tt0034583/"&gt;Casablanca&lt;/a&gt; a couple of weeks ago.) Exhibit A: the first meaningful image produced by my raytracer for &lt;a href="http://www.student.cs.uwaterloo.ca/%7Ecs488/a4.pdf"&gt;CS 488 Assignment 4&lt;/a&gt;. It's a binary intersection image; it shoots a single ray from the eye through each pixel, rendering it white iff the ray intersects an object. I'll tackle &lt;a href="http://en.wikipedia.org/wiki/Phong_shading"&gt;Phong lighting&lt;/a&gt; next. For those outside the Graphics/CS bubble, Phong lighting is a relatively crude but efficient way to model the way light interacts with objects. As you can see from the Wikipedia page, it allows us to shade surfaces, thereby giving the impression of depth.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In general, raytracing is an attempt to model the way vision works. Production-quality raytracers will model reflection, refraction, transparency, scattered reflection from rough surfaces, and any number of other real-world phenomena to impart as much realism as possible to the final image. Maybe I'm strange, but I think that's &lt;i&gt;cool&lt;/i&gt; - thanks to CS 488, I now have an appreciation for exactly how much programmer effort and CPU time go into, say, Pixar's rendering pipeline. (6-90 CPU-hours per frame, according to &lt;a href="http://www.pixar.com/howwedoit/index.html"&gt;their site&lt;/a&gt;!)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;One last note: although the raytracer project is by no means large, it's hefty enough that ad-hoc &lt;span style=";font-family:&amp;quot;;" &gt;cp -r&lt;/span&gt; source control won't cut it. To that end, I've decided to give &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; a spin. First impressions are positive: it's &lt;i&gt;fast&lt;/i&gt; in all the ways that Subversion isn't, and it's &lt;a href="http://blog.commonthread.com/2008/4/14/setting-up-a-git-server"&gt;ridiculously easy&lt;/a&gt; to set up over SSH.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8324317687505103179?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8324317687505103179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/heres-shooting-ray-at-you-kid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8324317687505103179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8324317687505103179'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/heres-shooting-ray-at-you-kid.html' title='Here&apos;s Shooting a Ray at You, Kid'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/Sj0NN8RkCOI/AAAAAAAABTs/HIcoy4htKyc/s72-c/simple.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5923155519027704996</id><published>2009-06-17T05:48:00.001-07:00</published><updated>2009-06-17T05:57:10.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='trogdor'/><title type='text'>On the Right Trackball</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_tc_ymrJn2SU/SjjmTriZycI/AAAAAAAABTg/SUc7-zJutPQ/s1600-h/Screenshot-Advanced+Ergonomics+Laboratory.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_tc_ymrJn2SU/SjjmTriZycI/AAAAAAAABTg/SUc7-zJutPQ/s320/Screenshot-Advanced+Ergonomics+Laboratory.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;And here is the completed spherical Trogdor (of uniform density?) You might notice a circle drawn across his beautiful &lt;a href="http://books.google.com/books?id=wOt9IBunyrkC&amp;amp;pg=PA726&amp;amp;lpg=PA726&amp;amp;dq=blinn-phong+shading&amp;amp;source=bl&amp;amp;ots=GTe4EEllo6&amp;amp;sig=vLGM_glD30ZdsnussOgtW9H2-uk&amp;amp;hl=en&amp;amp;ei=i-Y4SpXYNpnAM9mPlY0N&amp;amp;sa=X&amp;amp;oi=book_result&amp;amp;ct=result&amp;amp;resnum=9"&gt;Phong-shaded&lt;/a&gt; polygons; that's part of a &lt;a href="http://viewport3d.com/trackball.htm"&gt;virtual trackball&lt;/a&gt;. Roughly speaking, this allows you to rotate the model as though the scene were contained in a sphere. (Also: that site uses a rather inefficient way to get the angle between the two projected vectors - can you think of a fast approximation?) Other user-interface goodies: you can select individual joints and rotate them, causing Trogdor to coil up or flex his shapely back-arm. You can also move Trogdor around.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Just remember: if you hear from me only sporadically this term, it's because I'm doing super-fantastic-awesome things like modelling Trogdor and driving model trains. All in the pursuit of higher education!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5923155519027704996?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5923155519027704996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/on-right-trackball.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5923155519027704996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5923155519027704996'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/on-right-trackball.html' title='On the Right Trackball'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tc_ymrJn2SU/SjjmTriZycI/AAAAAAAABTg/SUc7-zJutPQ/s72-c/Screenshot-Advanced+Ergonomics+Laboratory.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5626139389847952712</id><published>2009-06-15T23:23:00.000-07:00</published><updated>2009-06-15T23:23:52.946-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='all-nighters'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='burninate'/><category scheme='http://www.blogger.com/atom/ns#' term='trogdor'/><title type='text'>Burninate the Graphics Lab</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_tc_ymrJn2SU/Sjc5N4fdqGI/AAAAAAAABTY/2SLTaOo_ytg/s1600-h/trogdor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_tc_ymrJn2SU/Sjc5N4fdqGI/AAAAAAAABTY/2SLTaOo_ytg/s320/trogdor.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;It's CS 488 Assignment 3 time, which means I get to play around with hierarchical modelling - and what better way to do so than to construct the very likeness of &lt;a href="http://www.homestarrunner.com/trogdor.html"&gt;Trogdor&lt;/a&gt;? (Yeah, it's a stretch. &lt;i&gt;You&lt;/i&gt; try modelling anything with only transformed spheres.) BURNINATE!!!!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5626139389847952712?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5626139389847952712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/burninate-graphics-lab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5626139389847952712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5626139389847952712'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/burninate-graphics-lab.html' title='Burninate the Graphics Lab'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tc_ymrJn2SU/Sjc5N4fdqGI/AAAAAAAABTY/2SLTaOo_ytg/s72-c/trogdor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4603392385281593481</id><published>2009-06-04T05:56:00.000-07:00</published><updated>2009-06-04T05:56:51.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cyberpunk'/><category scheme='http://www.blogger.com/atom/ns#' term='LISP'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='anime'/><title type='text'>Serial Experiments Lisp</title><content type='html'>I was watching &lt;a href="http://www.animenewsnetwork.com/encyclopedia/anime.php?id=166"&gt;Serial Experiments Lain&lt;/a&gt; when I noticed a &lt;a href="http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/defun.html"&gt;certain LISP keyword&lt;/a&gt; scroll across the screen. A few posters have uploaded the &lt;a href="http://lemonodor.com/archives/000921.html"&gt;still frame&lt;/a&gt;. Reminds me of the &lt;a href="http://www.theregister.co.uk/2003/05/16/matrix_sequel_has_hacker_cred/"&gt;nmap cameo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4603392385281593481?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4603392385281593481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/serial-experiments-lisp.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4603392385281593481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4603392385281593481'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/serial-experiments-lisp.html' title='Serial Experiments Lisp'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6549753092210039730</id><published>2009-06-01T12:39:00.000-07:00</published><updated>2009-06-01T12:39:02.419-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='government'/><title type='text'>Data Abort</title><content type='html'>Found an &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/05/31/AR2009053102340.html?hpid=sec-tech"&gt;interesting article&lt;/a&gt;, from which I'll pull two excerpts for comparison:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"White House officials now want to make government data sets available for citizens to use however they see fit."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"The problem is figuring out how to organize and display the data in a useful and informative way, instead of forcing people to sift through heaps of mind-numbing spreadsheets."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The first is a visionary statement. It amounts to crowdsourcing data analysis, something that (if applied correctly) could rescue our governments from the technophobic morass they have so willingly plunged into. At the same time, it would provide a spectacular resource for future machine learning research.&lt;br /&gt;&lt;br /&gt;The second, if taken at face value, is &lt;a href="http://www.facepalm.org/"&gt;facepalm&lt;/a&gt;-worthy. Why? If you want a gesture like this to be effective, &lt;i&gt;you have to supply the raw data&lt;/i&gt;. Standard graphs and charts aren't enough; let us decide how we want to visualize your data. Let us rip your datasets apart with state-of-the-art statistical analyses and classification algorithms. Better yet - allow us to upload our homebrew visualizations, hold an online voting process, and host the best examples.&lt;br /&gt;&lt;br /&gt;Imagine this simple gesture taken to its logical conclusion: complete data transparency of government actions. There would be no room for nepotism, pork-barrel spending, and other forms of shady backroom politics. We would finally have the power to inspect the inner workings of our government, much as our intelligence agencies now monitor us. After all, it is extremely improbable that the likes of CSIS and NSA will give up the incredible power offered by telecommunications, much as it is laughable to expect the world's nuclear powers to spontaneously and permanently renounce their missile stocks; the technology is there, the knowledge is there, and nothing short of the complete destruction of mankind will change that. &lt;i&gt;The best we can do is to level the playing field.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This sort of talk immediately raises national security concerns. Should it? What if every citizen had the ability to assess national security threats, much as every Wikipedia user has the ability to stop malicious edits in their tracks? Which &lt;a href="http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar"&gt;model&lt;/a&gt;, in the end, is more robust - the cathedral of centralized government, or the bazaar of direct democracy?&lt;br /&gt;&lt;br /&gt;Enough ranting from me; I've got some &lt;a href="http://www.student.cs.uwaterloo.ca/%7Ecs488/a2.pdf"&gt;projective geometry&lt;/a&gt; to tackle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6549753092210039730?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6549753092210039730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/06/data-abort.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6549753092210039730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6549753092210039730'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/06/data-abort.html' title='Data Abort'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8302795937773503890</id><published>2009-05-27T07:18:00.000-07:00</published><updated>2009-05-27T07:18:13.475-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='calendar'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><title type='text'>Thanks, Calendar</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/Sh1I9TmaSJI/AAAAAAAABQI/2lO6jVv36oI/s1600-h/Screenshot-Server+Error+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/Sh1I9TmaSJI/AAAAAAAABQI/2lO6jVv36oI/s320/Screenshot-Server+Error+-+Mozilla+Firefox.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; I'm not sure if I should be confused or flattered that Google thinks I speak all the above languages, despite the fairly clear linguistic limitations set up in my user settings. (Update: the problem was quite temporary; not 30 seconds later, everything appears in order.)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In other news: I've been spending an unhealthy amount of time in the Real-Time lab hacking away at an ARM context switch. As a result, our kernel now has a successful kernel exit along with a valid kernel entry point in the jump table. Unfortunately, all hell (well, 16 registers of hell, at least, plus or minus a few mode-specific versions of said registers) breaks loose upon re-entry; we're hoping to resolve this by today so that we can cap off this part of the kernel spec and get on with real life.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8302795937773503890?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8302795937773503890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/thanks-calendar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8302795937773503890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8302795937773503890'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/thanks-calendar.html' title='Thanks, Calendar'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/Sh1I9TmaSJI/AAAAAAAABQI/2lO6jVv36oI/s72-c/Screenshot-Server+Error+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4368929590832515490</id><published>2009-05-22T10:40:00.000-07:00</published><updated>2009-05-22T11:04:27.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operating systems'/><category scheme='http://www.blogger.com/atom/ns#' term='problem-solving'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><title type='text'>Real-Time Psychotics</title><content type='html'>I'm now gearing up to tackle the implementation of &lt;a href="http://www.cgl.uwaterloo.ca/%7Ewmcowan/teaching/cs452/pdf/kernel.pdf"&gt;this specification&lt;/a&gt; for an embedded microkernel in the infamous Real-Time Programming course at the University of Waterloo. To share the masochism, our team has started the &lt;a href="http://uw-psychos.blogspot.com/"&gt;PsychOS blog&lt;/a&gt;. We'll be posting about our exploits - favourable, frustrating, &lt;a href="http://en.wikipedia.org/wiki/No_Pants_Day"&gt;pants-less&lt;/a&gt;, or otherwise - there, so keep posted! I'll try to mirror particularly poignant posts here at Quizzical Quincunx as well.&lt;br /&gt;&lt;br /&gt;In other news, I've solved &lt;a href="http://www.facebook.com/careers/puzzles.php?puzzle_id=5"&gt;We Are The Swarm&lt;/a&gt; from Facebook's &lt;a href="http://www.facebook.com/careers/puzzles.php"&gt;Engineering Puzzles&lt;/a&gt; site. This one is pleasantly devious; out of respect for the puzzle-solving spirit, I'll refrain from posting any hints. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4368929590832515490?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4368929590832515490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/real-time-psychotics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4368929590832515490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4368929590832515490'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/real-time-psychotics.html' title='Real-Time Psychotics'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3418939685897327777</id><published>2009-05-16T16:20:00.000-07:00</published><updated>2009-05-16T16:20:24.994-07:00</updated><title type='text'>Two Weeks And Still Alive</title><content type='html'>Okay. It's been a while since I last posted here. Some of you may know that I've applied more than a little masochism to my course selection this term - I'm taking &lt;a href="http://www.cgl.uwaterloo.ca/%7Ewmcowan/teaching/cs452/s09/index.html"&gt;Real-Time&lt;/a&gt; &lt;i&gt;and&lt;/i&gt; &lt;a href="http://www.student.cs.uwaterloo.ca/%7Ecs488/"&gt;Graphics&lt;/a&gt;, both of which are notorious for heavy project workloads. I've made it through the first Real-Time assignment shaken but still intact, and should be on track to get Graphics (Tetris + OpenGL == fun!) finished for Thursday. Point being: if you don't hear from me, I'm not dead; I'm just in the Real-Time lab cursing at model trains.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aside from that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I did make it out to see Star Trek, which was nothing special.&lt;/li&gt;&lt;li&gt;I'm almost finished reading through &lt;a href="http://en.wikipedia.org/wiki/Zen_and_the_Art_of_Motorcycle_Maintenance"&gt;Zen and the Art of Motorcycle Maintenance&lt;/a&gt;, which presents a bizarre mix of quasi-autobiographical rambling, philosophical criticism of romantic-classic duality, and wanderlust. I'll reserve full judgment until I've reached the end.&lt;/li&gt;&lt;li&gt;The "official" Campus Rec parkour group (as if anything about parkour could truly be official!) has started up for the term. First meet was, er, wet.&lt;/li&gt;&lt;li&gt;I've signed up for the &lt;a href="http://www.manulife.ca/canada/canada1.nsf/public/bikeandhike"&gt;Bike and Hike&lt;/a&gt; - I think I'll opt for the 25 km bike.&lt;br /&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/1293116210631635220-3418939685897327777?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3418939685897327777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/two-weeks-and-still-alive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3418939685897327777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3418939685897327777'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/two-weeks-and-still-alive.html' title='Two Weeks And Still Alive'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2832211332680168443</id><published>2009-05-07T06:47:00.000-07:00</published><updated>2009-05-07T06:47:00.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><category scheme='http://www.blogger.com/atom/ns#' term='advertising'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>AdSense + LaTeX = Fail</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/SgLlwTMTH1I/AAAAAAAABPo/Hhz3ZUnMAu8/s1600-h/Screenshot-LaTeX+Commands+for+Mathematical+Symbols+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tc_ymrJn2SU/SgLlwTMTH1I/AAAAAAAABPo/Hhz3ZUnMAu8/s400/Screenshot-LaTeX+Commands+for+Mathematical+Symbols+-+Mozilla+Firefox.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Point being: semantic analysis is hard. Simple keyword matching just doesn't cut it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2832211332680168443?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2832211332680168443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/adsense-latex-fail.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2832211332680168443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2832211332680168443'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/adsense-latex-fail.html' title='AdSense + LaTeX = Fail'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/SgLlwTMTH1I/AAAAAAAABPo/Hhz3ZUnMAu8/s72-c/Screenshot-LaTeX+Commands+for+Mathematical+Symbols+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3208821098778562623</id><published>2009-05-07T06:10:00.000-07:00</published><updated>2009-05-07T06:10:52.070-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open learning'/><category scheme='http://www.blogger.com/atom/ns#' term='school'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>Death From Above</title><content type='html'>(Or &lt;a href="http://en.wikipedia.org/wiki/Deterministic_finite_state_machine"&gt;this&lt;/a&gt; DFA - whichever you prefer.)&lt;br /&gt;&lt;br /&gt;I'm writing this in the middle of an especially sluggish induction proof in CS 360. I've decided to make a few minor but hopefully positive changes in the way I approach class:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'll try to make it to as many of them as possible - even those pesky 8:30 am ones that have marred my attendance track record in previous terms. (Not that anyone keeps track, but still...)&lt;/li&gt;&lt;li&gt; I'm keeping semi-rigorous notes for any lectures that don't have nice preformatted course slides available online.&lt;/li&gt;&lt;li&gt;I'm keeping those notes...in LaTeX.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The idea with the latter step is that having legible notes will encourage me to revisit them, a process that lies in stark contrast with my longstanding practice of keeping sporadic write-only notes. We'll see how that one goes. In either case, I'll endeavour to make the notes publicly available, thus driving a further spike in various efforts initiated by the University of Waterloo administration to &lt;a href="https://uwangel.uwaterloo.ca/uwangel/default.asp"&gt;lock up&lt;/a&gt; our course materials. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Final note: if you are concerned about the privatization of knowledge, I strongly urge you to do the same. Keep notes, make PDFs, and distribute like crazy. Help us bridge our ingenuity gap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3208821098778562623?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3208821098778562623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/death-from-above.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3208821098778562623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3208821098778562623'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/death-from-above.html' title='Death From Above'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1150643342586883973</id><published>2009-05-06T07:24:00.000-07:00</published><updated>2009-05-06T07:24:47.637-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='engrish'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='reports'/><title type='text'>Waterloo Sunset</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_tc_ymrJn2SU/SgGb8G-swGI/AAAAAAAABPg/5Kj4SITteTc/s1600-h/image7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_tc_ymrJn2SU/SgGb8G-swGI/AAAAAAAABPg/5Kj4SITteTc/s320/image7.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;Work Term Reports - why?&lt;/i&gt;&lt;br /&gt;&lt;i&gt;The utter pointlessness is&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Rather annoying.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;(Decided I'd, er, borrow a motif from &lt;a href="http://nextto666.blogspot.com/"&gt;vasavage&lt;/a&gt;.) Spring is here in Waterloo - the sound of construction in the air, the cranes in full bloom! At least the ensuing fracas has contributed the above sign, redolent of the kind of neon-coloured cartoon-character Engrish prevalent in Japan, to our collective student consciousness. I've snapped a couple of pics of my room, as well as a few around campus; they're up in my nascent &lt;a href="http://picasaweb.google.com/evan.stratford/Waterloo"&gt;Waterloo album&lt;/a&gt;. As for me, I'm scrambling to get this work term report done so I can get on with life - for high-course-workload values of life, that is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1150643342586883973?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1150643342586883973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/waterloo-sunset.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1150643342586883973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1150643342586883973'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/waterloo-sunset.html' title='Waterloo Sunset'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tc_ymrJn2SU/SgGb8G-swGI/AAAAAAAABPg/5Kj4SITteTc/s72-c/image7.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8350843015313379174</id><published>2009-05-05T19:51:00.000-07:00</published><updated>2009-05-05T19:51:51.124-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='co-op'/><category scheme='http://www.blogger.com/atom/ns#' term='retrospective'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Retrospectively Yours</title><content type='html'>One more co-op term down, one to go. What have I learned? Since I don't have any similar record for previous co-op terms, I'll flesh that out as well:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Spring 2006: Rational Robot sucks, as does most "business intelligence" software. There's no way I'm doing testing again. Working with other co-op students is fun. Working in Waterloo during the summer is not.&lt;/li&gt;&lt;li&gt;Winter/Fall 2007: Startup culture is refreshingly dynamic and fast-paced. That said, the almost complete lack of process produces crap quickly. Pair programming works. Food is adequate compensation for late-night project stints. The Salad King chilli scale is a game you can't win. Concurrency is always harder than you think. It's important to contribute in meetings - if you can't, you're not preparing enough.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Spring 2008: Big-company culture is a living contradiction. Perks are awesome. Silicon Valley is a bubble world in all the best possible senses of the term. Testing is a crucial skill in software development. Reviews are a Good Thing, no matter how irate they make you at first. Sleep is optional. Do more better. Warm climates permit vibrant cities. Never rent a place before you meet the landlord.&lt;/li&gt;&lt;li&gt;Winter 2009: Optimizing without a profiler is like driving with a nightshade on. Optimizing with a profiler will surprise you. Testing &lt;i&gt;is a crucial skill in software development&lt;/i&gt;. Do less better. Like everything, parkour requires dedication. Like everything, building a computer is surprisingly easy once you actually do it. Presentations are less nerve-wracking than most imagine. People respect your efforts to speak their language.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Naturally, these observations are somewhat abridged, and I've more than likely forgotten 90% of the salient (and/or salacious) tidbits. If you really want to know, you'll have to ask me in person...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8350843015313379174?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8350843015313379174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/retrospectively-yours.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8350843015313379174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8350843015313379174'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/retrospectively-yours.html' title='Retrospectively Yours'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5547044804686304647</id><published>2009-05-04T05:58:00.000-07:00</published><updated>2009-05-04T05:58:33.256-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='caffeine'/><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='stress'/><category scheme='http://www.blogger.com/atom/ns#' term='new term'/><title type='text'>Panic! At the 401</title><content type='html'>After an epic journey down the 401 involving 5-6 coffee cups worth of caffeine, 2 hospitals, 12 hours (7 or so of which were spent either in said hospitals or in an ambulance headed thereto), and 3 carpopedal spasms (these resulting from panic attacks, which in turn were most likely induced by the aforementioned dose of caffeine), I finally made it back up to Waterloo in one piece. I'm most definitely avoiding caffeinated beverages from now on...&lt;br /&gt;&lt;br /&gt;On a more positive note, I'll be living &lt;a href="http://maps.google.com/maps?q=10+Roslin+Ave+S,+Waterloo,+ON,+Canada"&gt;here&lt;/a&gt; for the next four months. (That said, my decision to take the infamous &lt;a href="http://www.student.cs.uwaterloo.ca/%7Ecs452/"&gt;Real-Time&lt;/a&gt; and &lt;a href="http://www.student.cs.uwaterloo.ca/%7Ecs488/"&gt;Graphics&lt;/a&gt; project courses concurrently may very well minimize the time I get to spend in my new digs!) I've got a decent room setup which will only get better with a few key investments in hardware - pics to follow.&lt;br /&gt;&lt;br /&gt;I'll post some kind of winter term retrospective in the near future; for now, however, I'm off to tackle some nagging errands.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5547044804686304647?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5547044804686304647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/05/panic-at-401.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5547044804686304647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5547044804686304647'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/05/panic-at-401.html' title='Panic! At the 401'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2851188762928828163</id><published>2009-04-30T07:49:00.000-07:00</published><updated>2009-04-30T07:49:02.392-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FLOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>Meta-Work</title><content type='html'>The birds are singing, the sun is bright, the days are getting ever-longer - and I have to write another work term report. Ugh. Fortunately, a quick Google search brought up &lt;a href="http://thomasdimson.com/work_reports.html"&gt;this&lt;/a&gt;. It's not the cleanest bit of LaTeX code, but it gets the job done! (Yes, I know I could use &lt;a href="http://www.churchofsatan.com/"&gt;Word&lt;/a&gt;. I'll consider it next time I want to spend 90% of my time format-tweaking to obtain a layout that I can't easily reuse and share.)\&lt;br /&gt;&lt;br /&gt;Also: the same &lt;a href="http://www.google.com/search?q=waterloo%20latex%20work%20report"&gt;search&lt;/a&gt; unearthed &lt;a href="http://code.google.com/p/uw-work-report/"&gt;this&lt;/a&gt; (unfortunately nascent) effort to create a public repository of work report templates! Hooray for open source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2851188762928828163?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2851188762928828163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/meta-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2851188762928828163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2851188762928828163'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/meta-work.html' title='Meta-Work'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2236803251060586022</id><published>2009-04-30T06:11:00.000-07:00</published><updated>2009-04-30T06:11:42.756-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><category scheme='http://www.blogger.com/atom/ns#' term='valkyrie'/><category scheme='http://www.blogger.com/atom/ns#' term='five'/><title type='text'>Little 5</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/SfmhZMxLqmI/AAAAAAAABMU/82axGE0mU-U/s1600-h/image2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/SfmhZMxLqmI/AAAAAAAABMU/82axGE0mU-U/s320/image2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;(Not to be confused with &lt;a href="http://en.wikipedia.org/wiki/Big5"&gt;Big5&lt;/a&gt;.) 5 hours of plane travel each way (despite the fact that a direct flight would probably take less than 2.) 5 &lt;a href="http://picasaweb.google.com/evan.stratford/Little5"&gt;pictures&lt;/a&gt; (four of airports and one of the best beer selection I've seen since...so I forgot to take real pictures. Oops.) 5 ten-spots laid out for extended-stay parking at &lt;a href="http://www.ottawa-airport.ca/"&gt;YOW&lt;/a&gt;. 5 pancakes shuttled down my gaping maw. (At least I think it was 5. Really, the pan-sized ones can count for anywhere between 2 and 3 - say, &lt;i&gt;e&lt;/i&gt; pancakes.) 5 bottles/cans of beer partaken of in the weekend. Coincidence? I think so. Anyways, &lt;a href="http://www.velonews.com/article/91100"&gt;Little 5&lt;/a&gt; weekend was an absolute blast - I'd write more about it, but that's &lt;a href="http://nextto666.blogspot.com/2009/04/brief.html"&gt;already been done&lt;/a&gt; for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2236803251060586022?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2236803251060586022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/little-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2236803251060586022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2236803251060586022'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/little-5.html' title='Little 5'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/SfmhZMxLqmI/AAAAAAAABMU/82axGE0mU-U/s72-c/image2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6076511694634570567</id><published>2009-04-29T20:57:00.000-07:00</published><updated>2009-04-29T20:57:38.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='quebec'/><category scheme='http://www.blogger.com/atom/ns#' term='LARP'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><category scheme='http://www.blogger.com/atom/ns#' term='role-playing'/><title type='text'>Nobles Paroles, Seigneur Gardakan!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/SeyDT3U9bxI/AAAAAAAABJk/fWBwpMKDOqY/s1600-h/image26.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/SeyDT3U9bxI/AAAAAAAABJk/fWBwpMKDOqY/s320/image26.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;a href="http://draft.blogger.com/goog_1241061872808"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://qx5.blogspot.com/2009/01/another-term.html"&gt;A while back&lt;/a&gt;, I promised some basic regularity in my postings here. I've been somewhat lax with that, so here's the first in a rapid succession of updates covering my numerous activities this previous fortnight.&lt;br /&gt;&lt;br /&gt;The weekend of April 17-19 brought me the inestimable bewilderment and pleasure of two lifetime firsts. It was my first visit to the beautiful bastion of historical import that is Quebec City. I only received a cursory overview of the city proper, however; the bulk of my weekend was spent engaging in the sort of faux-chicanery alluded to by the above snapshot. (I've got a few more &lt;a href="http://picasaweb.google.com/evan.stratford/Imagika"&gt;here&lt;/a&gt;, among other random photos.) Yes - it was also my first time engaging in the bizarre yet alluring world of &lt;a href="http://en.wikipedia.org/wiki/Live_action_role-playing_game"&gt;Live Action Role-Playing&lt;/a&gt;, which translates in French to the somewhat more poetic &lt;i&gt;Grandeur Nature&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Imagine a weekend-long costume party where the attendees actually put in some effort, throw in some overtones of medieval fantasy, toss it all together with a heavy dose of guerilla theatre, and garnish lightly with pencil-and-paper role-playing geekdom. That gives some idea of the atmosphere here.&lt;br /&gt;&lt;br /&gt;Of course, &lt;a href="http://www.imagika.org/index.php"&gt;Imagika&lt;/a&gt; is one of the more politically-involved games out there, and so I spent much of my time randomly milling about while grasping desperately for some context as to how exactly a debate on slavery, a war against the descendants of dragons, the birth of a new god, a wayward monk whose teachings instilled madness, a roving band of necromantic cultists, and countless other subplots were connected. Owing to my status as a weak newcomer, I also spent a good deal of time faking death while awaiting the kindness of capable healers. &lt;i&gt;Peu importe&lt;/i&gt; - it was still loads of fun, and I might even consider taking part in &lt;a href="http://www.waterloo-by-night.net/index.php?page=faq"&gt;Waterloo By Night&lt;/a&gt; if my habitually overloaded schedule permits!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6076511694634570567?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6076511694634570567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/nobles-paroles-seigneur-gardakan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6076511694634570567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6076511694634570567'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/nobles-paroles-seigneur-gardakan.html' title='Nobles Paroles, Seigneur Gardakan!'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/SeyDT3U9bxI/AAAAAAAABJk/fWBwpMKDOqY/s72-c/image26.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7516100828991674459</id><published>2009-04-20T12:31:00.000-07:00</published><updated>2009-04-20T12:31:56.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science'/><category scheme='http://www.blogger.com/atom/ns#' term='knuth'/><title type='text'>Speaking of Essential Research...</title><content type='html'>...here's a &lt;a href="http://www.cs.utexas.edu/users/arvindn/misc/knuth_song_complexity.pdf"&gt;gem&lt;/a&gt; from the pen of Knuth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7516100828991674459?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7516100828991674459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/speaking-of-essential-research.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7516100828991674459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7516100828991674459'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/speaking-of-essential-research.html' title='Speaking of Essential Research...'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4959350149826484891</id><published>2009-04-20T12:29:00.000-07:00</published><updated>2009-04-20T12:29:13.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funding cuts'/><category scheme='http://www.blogger.com/atom/ns#' term='canada'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><title type='text'>Lights Out On Parliament Hill</title><content type='html'>For those who can read French: &lt;a href="http://www.cyberpresse.ca/opinions/chroniqueurs/alain-dubuc/200904/17/01-847427-la-grande-noirceur-conservatrice.php"&gt;here&lt;/a&gt;. For those who can't, a brief summary:&lt;br /&gt;&lt;br /&gt;As the Obama administration pours billions into scientific research, Harper and his cronies are busy slashing funding for "non-essential" research left and right in favour of programs that will net immediate jobs - this, shortly after &lt;a href="http://www.cbc.ca/news/canadavotes/story/2008/09/24/artist-protests.html"&gt;announcing cuts in support for the arts&lt;/a&gt;. Between this and the appointment of a &lt;a href="http://www.garygoodyear.com/"&gt;creationist&lt;/a&gt; as Minister of Science, it's evident that Harper is, er, heaven-bent on ensuring that we remain shackled by Bush-era ideals. Let's hope that the &lt;a href="http://dontleavecanadabehind.wordpress.com/open-letter-to-the-prime-minister-and-leader-of-the-opposition/"&gt;common sense of over 2000 of Canada's top scientists and researchers&lt;/a&gt; can sway the issue, and that subsequent governments have the foresight to protect Canada's position in the modern global economy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4959350149826484891?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4959350149826484891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/lights-out-on-parliament-hill.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4959350149826484891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4959350149826484891'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/lights-out-on-parliament-hill.html' title='Lights Out On Parliament Hill'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2115681262154782764</id><published>2009-04-16T19:26:00.000-07:00</published><updated>2009-04-16T19:26:55.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gatineau'/><category scheme='http://www.blogger.com/atom/ns#' term='delicious'/><category scheme='http://www.blogger.com/atom/ns#' term='nutritious'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>Something To Chew On</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;To please certain of my readers, I furnish you with this bilingual gem from the hinterlands of Gatineau - enjoy.&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/_tc_ymrJn2SU/SefoRXigZ1I/AAAAAAAABF4/hBJAhh1rUys/s1600-h/image11-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/SefoRXigZ1I/AAAAAAAABF4/hBJAhh1rUys/s320/image11-3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2115681262154782764?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2115681262154782764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/something-to-chew-on.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2115681262154782764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2115681262154782764'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/something-to-chew-on.html' title='Something To Chew On'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/SefoRXigZ1I/AAAAAAAABF4/hBJAhh1rUys/s72-c/image11-3.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7875651296955652874</id><published>2009-04-16T09:32:00.000-07:00</published><updated>2009-04-16T09:42:30.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>Original Thug Life</title><content type='html'>&lt;a href="http://brownsharpie.courtneygibbons.org/?p=169"&gt;Proof&lt;/a&gt;, if needed, that LaTeX is the &lt;a href="http://www.urbandictionary.com/define.php?term=shiv"&gt;shiv&lt;/a&gt; of academics worldwide. Now get outta my way before I get all &lt;a href="http://geekz.co.uk/shop/store/show/knuth-tshirt"&gt;Knuth&lt;/a&gt; on your ass.&lt;br /&gt;&lt;br /&gt;(Oh, and bonus points if you get the reference in the comic/song.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7875651296955652874?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7875651296955652874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/original-thug-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7875651296955652874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7875651296955652874'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/original-thug-life.html' title='Original Thug Life'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-779345728776323709</id><published>2009-04-16T07:59:00.000-07:00</published><updated>2009-04-16T07:59:37.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='co-op'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTeX'/><title type='text'>Safe Computing 101: Use LaTeX</title><content type='html'>&lt;div style="font-family: inherit;"&gt;I'm plunging into that dreaded final stretch of the work term, where everything is due concurrently and you suddenly realize you have approximately &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;numeric_limits&amp;lt;&lt;/span&gt;&lt;span class="kw" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;::max()&lt;/span&gt; things to properly wrap up. Top of the end-of-term priority queue: give two presentations tomorrow morning explaining how exactly I spent the three months prior. Most people would reach for PowerPoint at this, er, juncture. I, however, am a &lt;i&gt;CS student&lt;/i&gt; with a &lt;a href="http://www.tuxpaint.org/stamps/stamps/animals/birds/cartoon/tux.png"&gt;Tux&lt;/a&gt;-genuflecting, &lt;a href="http://www.catb.org/%7Eesr/halloween/"&gt;Redmond&lt;/a&gt;-execrating reputation to uphold, and therefore by socialization rendered immune to such manifestations of pure evil. I'm with &lt;a href="http://slacktivist.blogspot.com/2002_09_01_slacktivist_archive.html#85419668"&gt;these&lt;/a&gt; &lt;a href="http://www.norvig.com/Gettysburg/"&gt;people&lt;/a&gt; on this one, and so I reach for something completely different: &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt; with &lt;a href="http://sourceforge.net/projects/prosper/"&gt;Prosper&lt;/a&gt;. As a result, I can nimbly sidestep the format-tweaking cruft of PowerPoint and cut to the meat of the matter - the content. Not only that, but my content becomes easily reusable if, say, I want to draft some papers. Even better, I can quickly render PDFs, PostScript, or &lt;i&gt;whatever I want&lt;/i&gt; out of the LaTeX files, all the while remaining smugly assured that my presentation will work on pretty much any computer - for free. Try doing&lt;i&gt; that&lt;/i&gt; with those arcane and proprietary MS formats.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;Long story short: if you have an urge to use MS Office, there's usually a better way.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-779345728776323709?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/779345728776323709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/safe-computing-101-use-latex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/779345728776323709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/779345728776323709'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/safe-computing-101-use-latex.html' title='Safe Computing 101: Use LaTeX'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1410932892549389160</id><published>2009-04-15T11:18:00.000-07:00</published><updated>2009-04-15T11:18:37.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='crime'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>The Twitter Olympics</title><content type='html'>The Waterloo Regional Police Service has recently joined the ranks in &lt;a href="http://twitter.com/WRPSMediaRel"&gt;using Twitter&lt;/a&gt; to broadcast updates, incident reports, and other information - 37 followers and counting. Now if only the rest of our public services could follow suit...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1410932892549389160?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1410932892549389160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/twitter-olympics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1410932892549389160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1410932892549389160'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/twitter-olympics.html' title='The Twitter Olympics'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8859475741147604607</id><published>2009-04-14T06:03:00.000-07:00</published><updated>2009-04-14T06:03:32.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pirates'/><category scheme='http://www.blogger.com/atom/ns#' term='training'/><category scheme='http://www.blogger.com/atom/ns#' term='sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='morning'/><title type='text'>Rise and Shine</title><content type='html'>6:40 am - a record unmatched in the three months and change since I rolled off a plane from Tokyo directly into the flesh-piercing depths of the infamous Ottawa winter, only to greet the then-prolonged night at the sprightly hour of 4 am. This is not really impressive by any means - back in &lt;a href="http://www.utschools.ca/"&gt;high school&lt;/a&gt; (a suitably Germanic name for it) I would routinely hoist myself from betwixt my covers ragdoll-physics style around 6:30 am to make the train for band practice.&lt;br /&gt;&lt;br /&gt;Also a first for this term: pre-work training. I've started adding weight to my squats and situps, and am adding one-legged calf raises and &lt;a href="http://www.youtube.com/watch?v=MLBAbqEZIeU"&gt;pistols&lt;/a&gt; to my routine - as far as bodyweight exercises go, the unbalanced motions are spectacular for both strength and stability.&lt;br /&gt;&lt;br /&gt;And now for something completely different: I made a trip over to Value Village this weekend to pick up some garb such as might befit one with a taste for the piratical. I'll explain later - say, about a week from now - in lurid detail both visual and prosaic. I will remark, however, that it has proven nigh impossible to source a &lt;a href="http://www.excaliburleather.com/catalog/images/Tricorn2.jpg"&gt;tricorn&lt;/a&gt; in Ottawa, whereas a quick perusal of the Kensington-Chinatown stretch back in Toronto would effortlessly net me my sought-after accoutrements. Oh well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8859475741147604607?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8859475741147604607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/rise-and-shine.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8859475741147604607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8859475741147604607'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/rise-and-shine.html' title='Rise and Shine'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3590367449649511568</id><published>2009-04-08T10:54:00.000-07:00</published><updated>2009-04-08T10:54:53.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problem-solving'/><category scheme='http://www.blogger.com/atom/ns#' term='IT'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Best Malpractices</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;i&gt;"I learned very early the difference between knowing the name of something and knowing something." -- Richard Feynman&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;With that in mind, here's a well-reasoned &lt;a href="http://www.satisfice.com/blog/archives/27"&gt;rant against Best Practices&lt;/a&gt;. The IT world is replete with buffoons - programmers, managers, CS students, whatever - who toss around terms like AJAX, ORM, XP/Agile, Web 2.0, RDBMS, DRY, NIH, and OOP without ever pausing to ask the &lt;i&gt;real&lt;/i&gt; questions. What do they mean? What do they do? Where do they succeed - and where do they fall short?&lt;br /&gt;&lt;br /&gt;Consider this: Google &lt;a href="http://googleblog.blogspot.com/2004/07/racking-up-honor.html"&gt;does&lt;/a&gt; &lt;a href="http://code.google.com/p/protobuf/"&gt;not&lt;/a&gt; &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;follow&lt;/a&gt; &lt;a href="http://labs.google.com/papers/bigtable.html"&gt;Best&lt;/a&gt; &lt;a href="http://research.google.com/archive/sawzall.html"&gt;Practices&lt;/a&gt;. They solve problems. Period.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3590367449649511568?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3590367449649511568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/best-malpractices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3590367449649511568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3590367449649511568'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/best-malpractices.html' title='Best Malpractices'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-508663468363399690</id><published>2009-04-08T09:10:00.000-07:00</published><updated>2009-04-08T09:10:55.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='film'/><title type='text'>Dark Night</title><content type='html'>Stayed up late (for work-term-acceptable values of "late") last night to watch &lt;a href="http://www.imdb.com/title/tt0372784/"&gt;Batman Begins&lt;/a&gt;. It's a fairly solid flick, but...while scientific snafus don't bother me as much as &lt;a href="http://www.intuitor.com/moviephysics/"&gt;some&lt;/a&gt;, I draw the line somewhere before targeted microwave weapons capable of vaporizing a city's water supply while leaving nary a scratch on millions of human bystanders.&lt;br /&gt;&lt;br /&gt;Speaking of water, it's hovering around freezing point here in Ottawa for the third day in a row. It's &lt;i&gt;spring&lt;/i&gt; now - didn't you get the memo?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-508663468363399690?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/508663468363399690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/dark-night.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/508663468363399690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/508663468363399690'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/dark-night.html' title='Dark Night'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5712781038388692910</id><published>2009-04-06T20:31:00.000-07:00</published><updated>2009-04-06T20:31:39.526-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='goals'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='fitness'/><category scheme='http://www.blogger.com/atom/ns#' term='conditioning'/><title type='text'>Brute Force Attack</title><content type='html'>Somewhere back near the beginning of this term, I set myself a &lt;a href="http://qx5.blogspot.com/2009/02/monkeying-around.html"&gt;goal&lt;/a&gt;. Today, I made some very definite progress towards that goal by completing three (non-consecutive, alas) muscle-ups on one of the bars at OGC. Of course, I'm sticking to the wording of the goal, which means this only counts as one in a row; that said, they take a fair amount of dedication to build up to, so I'm quite proud of myself right now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5712781038388692910?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5712781038388692910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/brute-force-attack.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5712781038388692910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5712781038388692910'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/brute-force-attack.html' title='Brute Force Attack'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1901280720666159444</id><published>2009-04-06T06:23:00.000-07:00</published><updated>2009-04-06T10:56:49.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ottawa'/><category scheme='http://www.blogger.com/atom/ns#' term='winter'/><category scheme='http://www.blogger.com/atom/ns#' term='snow'/><category scheme='http://www.blogger.com/atom/ns#' term='fecal matter'/><title type='text'>Winter, Still</title><content type='html'>It's snowing - rather fiercely, too. I'd provide proof, but I don't have my camera and the &lt;a href="http://www.ottawakiosk.com/hill_cam.html"&gt;Hill Cam&lt;/a&gt; is down.&lt;br /&gt;&lt;br /&gt;Edit: Our wintry sentence has recently been commuted to a blustery blanket of barely-liquid rain. I now fully appreciate the benefits of living a mere two-minute walk away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1901280720666159444?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1901280720666159444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/winter-still.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1901280720666159444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1901280720666159444'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/winter-still.html' title='Winter, Still'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8955754631509440135</id><published>2009-04-06T05:47:00.000-07:00</published><updated>2009-04-06T06:30:33.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='public transit'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Bric-A-Brac, Post-Weekend Style</title><content type='html'>Decided to try waking up earlier this week. Today: 7:20 am after one false start at &lt;a href="http://www.youtube.com/watch?v=1hDYIkWiDUI"&gt;7:07&lt;/a&gt; am. (Yes, I really do set my alarm clock for times like this - my favourite time is &lt;a href="http://en.wikipedia.org/wiki/TR-808"&gt;8:08&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Sugar is wonderful, maple sugar all the more so. I had the inimitable pleasure of visiting a sugar bush on Saturday along with the rest of my office; turns out the uncle of &lt;a href="http://www.cs.toronto.edu/%7Ejoanis/"&gt;one of our programmer-analysts&lt;/a&gt; runs the operation, now in its 27th season of business. Nothing like maple sugar, maple syrup, and maple taffy in one day to mount a buffer overflow attack on your sweet taste buds.&lt;br /&gt;&lt;br /&gt;Just found &lt;a href="http://vimeo.com/1865789"&gt;this cool animation&lt;/a&gt; off a link posted in a &lt;a href="http://twitter.com/chrisgahan"&gt;tweet from an ex-coworker&lt;/a&gt;; as explained on the video page, it uses data from &lt;a href="http://myttc.ca/"&gt;this site&lt;/a&gt;. My $.02: I think all public services, utilities, etc. should be releasing data APIs for the general public to hack on. They could even release the data under a GPL-ish licence that requires any resulting apps to be made publicly available. They could even go one step further - simply hold an online vote to pick the top apps, then host them free of charge on their website. Help us to help you...&lt;br /&gt;&lt;br /&gt;Edit: I forgot to post links to the sugar bush photos! &lt;a href="http://picasaweb.google.ca/evan.stratford/SugarBush"&gt;Here they are&lt;/a&gt;. Additionally, &lt;a href="http://picasaweb.google.ca/pierre.joanis/CabaneAPierrePhotosParLiDanBoxing"&gt;here's some more pics&lt;/a&gt; as taken by coworker &lt;a href="http://www1.i2r.a-star.edu.sg/%7Ebxchen/"&gt;Boxing Chen&lt;/a&gt; and uploaded by the owner, Pierre Joanis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8955754631509440135?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8955754631509440135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/bric-brac-post-weekend-style.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8955754631509440135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8955754631509440135'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/bric-brac-post-weekend-style.html' title='Bric-A-Brac, Post-Weekend Style'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2792936061353036573</id><published>2009-04-04T20:17:00.000-07:00</published><updated>2009-04-04T20:17:17.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Quod Libet: First Day</title><content type='html'>Some thoughts/observations so far:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'm enjoying the automatic rating plugin, and expect it will be very useful in filtering out the detritus from my CBC Radio 3 crawls - just listen on shuffle for a while, then drop the worst-rated files.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The default rating settings are weird - 4 notes? Usually 5 or 10 is standard.&lt;/li&gt;&lt;li&gt;I haven't found a way to properly refresh the library without restarting - newly downloaded songs don't show up. Not a deal breaker, but annoying nonetheless.&lt;/li&gt;&lt;li&gt; Relatively seamless transitions between songs. I like. Also, the interface is snappy in general - no slowdown when I rescan the watch directories, no strange loading pauses.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The built-in config GUI hides most options from me. Why? Is it that hard to provide an advanced settings toggle?&lt;/li&gt;&lt;li&gt;The Amazon album-cover-grabbing plugin is barfing on me with some &lt;a href="http://docs.python.org/library/pyexpat.html"&gt;expat&lt;/a&gt; errors. Not cool. (As an aside: there's a bewildering proliferation of XML-parsing libraries for Python. It's no wonder that the Python standard library has taken the "here's some reasonable defaults, plug your own in if you want" route.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Overall, it's a positive first impression - most things work as they should, save for some minor gripes with plugins and general style.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2792936061353036573?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2792936061353036573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/quod-libet-first-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2792936061353036573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2792936061353036573'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/quod-libet-first-day.html' title='Quod Libet: First Day'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6799145499198390332</id><published>2009-04-04T14:33:00.000-07:00</published><updated>2009-04-04T14:33:08.350-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Anything Goes</title><content type='html'>A growing music collection demands a powerful media player. While &lt;a href="http://www.videolan.org/vlc/"&gt;VLC&lt;/a&gt; will play just about anything you throw at it, it seems to choke regularly on larger libraries. I'm giving &lt;a href="http://code.google.com/p/quodlibet/"&gt;Quod Libet&lt;/a&gt; a spin for now:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# apt-get install quodlibet quodlibet-plugins&lt;/div&gt;&lt;br /&gt;(The plugins aren't strictly necessary, but they include some nice features like album cover grabbing and &lt;a href="http://manpages.ubuntu.com/manpages/intrepid/man1/vux.1.html"&gt;automatic rating systems&lt;/a&gt;.) So far, the experience is pretty seamless, though I've only got about 2000 songs loaded into the library; I'll be chiefly looking for scalability as I put my &lt;a href="http://qx5.blogspot.com/2009/03/raiders-of-nuked-fridge.html"&gt;1.5 TB RAID 5&lt;/a&gt; to good use!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6799145499198390332?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6799145499198390332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/anything-goes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6799145499198390332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6799145499198390332'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/anything-goes.html' title='Anything Goes'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3739189873886305705</id><published>2009-04-04T13:06:00.000-07:00</published><updated>2009-04-04T13:06:41.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Scripted Reality</title><content type='html'>As &lt;a href="http://qx5.blogspot.com/2009/04/sound-of-scraping.html"&gt;promised&lt;/a&gt;, &lt;a href="http://www.student.cs.uwaterloo.ca/%7Eestratfo/share/cbc3.tar"&gt;here&lt;/a&gt; are the scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3739189873886305705?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3739189873886305705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/scripted-reality.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3739189873886305705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3739189873886305705'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/scripted-reality.html' title='Scripted Reality'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6787354195629665150</id><published>2009-04-03T21:30:00.000-07:00</published><updated>2009-04-03T21:30:08.255-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='crawling'/><title type='text'>The Sound of Scraping</title><content type='html'>After sitting on my &lt;a href="http://qx5.blogspot.com/2009/03/and-total-is.html"&gt;CBC Radio 3 metadata&lt;/a&gt; for just over a week, I finally got around to throwing together a decent downloading script. Actually, the scraper/downloader is a loose federation of scripts, deliberately kept in separate modules so as to allow nice things like, say, running multiple copies thereof concurrently. I'll post a link to the source in the near future, along with a few words of explanation. Maybe I'll even write a README - after all, although CBC Radio 3 is &lt;a href="http://radio3.cbc.ca/blogs/2009/03/Thanks-For-Your-Help-In-Keeping-CBC-Radio-3-Alive"&gt;afloat for now&lt;/a&gt;, there's no telling how long it will survive the budget axes of doom.&lt;br /&gt;&lt;br /&gt;(And, to prevent the inevitable smartasses from chiming in with "you forgot &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;wget&lt;/span&gt;, &lt;a href="http://www.youtube.com/watch?v=oHg5SJYRHA0"&gt;n00b&lt;/a&gt;" - nope, it's in there somewhere. That said, I think you'll find these scripts go a tiny bit further...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6787354195629665150?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6787354195629665150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/sound-of-scraping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6787354195629665150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6787354195629665150'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/sound-of-scraping.html' title='The Sound of Scraping'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3837049905998172734</id><published>2009-04-02T07:06:00.000-07:00</published><updated>2009-04-02T07:06:31.684-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='duck typing'/><title type='text'>If It Floats Like An Octopus</title><content type='html'>&lt;i&gt;"C++: an octopus made by nailing extra legs onto a dog."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;C++ is often referred to as a statically-typed language - it aggressively checks types at compile time (and, in the case of anything STL-related, spews out monstrous-looking errors.) By comparison, many "scripting" languages (and I use that word cautiously, since these are proving to be powerful application development languages in their own right!) such as Python and PHP support what is known as &lt;a href="http://en.wikipedia.org/wiki/Duck_typing"&gt;duck typing&lt;/a&gt;. Many &lt;a href="http://beust.com/weblog/archives/000269.html"&gt;rail&lt;/a&gt; &lt;a href="http://www.mattwoodward.com/blog/index.cfm?event=showEntry&amp;amp;entryID=019336D7-FC46-5419-55392AB467A2D4C5"&gt;against&lt;/a&gt; &lt;a href="http://www.alittlemadness.com/?p=28"&gt;this&lt;/a&gt;, arguing that it leads to unmaintainable code and nasty runtime errors.&lt;br /&gt;&lt;br /&gt;That aside, C++ &lt;i&gt;does&lt;/i&gt; have support for duck typing - in its template system. Consider:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;template &amp;lt;class T&amp;gt; void p(const T&amp;amp; t) { t.print(); }&lt;br /&gt;struct A { void print() const { cout &amp;lt;&amp;lt; "A!" &amp;lt;&amp;lt; endl; } };&lt;br /&gt;struct B { void print() const { cout &amp;lt;&amp;lt; "B!" &amp;lt;&amp;lt; endl; } };&lt;br /&gt;struct C { };&lt;br /&gt;int main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; A a; B b; C c;&lt;br /&gt;&amp;nbsp;&amp;nbsp; p(a);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // "A!"&lt;br /&gt;&amp;nbsp;&amp;nbsp; p(b);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // "B!"&lt;br /&gt;&amp;nbsp;&amp;nbsp; //p(c);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // compile-time error&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/div&gt;&lt;br /&gt;The global function &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p()&lt;/span&gt; enforces no type restrictions on the template class T; all it requires is that T implement &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void T::print() const&lt;/span&gt;, as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;B&lt;/span&gt; do. Also, note that &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p(c)&lt;/span&gt; causes a &lt;i&gt;compile-time&lt;/i&gt; error, not a runtime error! There is a tradeoff, naturally: the compiler creates a separate copy of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;p()&lt;/span&gt; for each type that it's invoked with (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;g++ -S&lt;/span&gt; for the gory details!), so extensive use of this technique can easily balloon your object files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3837049905998172734?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3837049905998172734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/if-it-floats-like-octopus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3837049905998172734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3837049905998172734'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/if-it-floats-like-octopus.html' title='If It Floats Like An Octopus'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5768139192672228569</id><published>2009-04-01T08:54:00.000-07:00</published><updated>2009-04-01T08:54:47.525-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Oh, Google</title><content type='html'>In the grand annual tradition - &lt;a href="http://googleblog.blogspot.com/2009/04/cadie-awakens.html"&gt;enjoy&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5768139192672228569?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5768139192672228569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/04/oh-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5768139192672228569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5768139192672228569'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/04/oh-google.html' title='Oh, Google'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1160724308354432161</id><published>2009-03-31T11:44:00.000-07:00</published><updated>2009-03-31T11:44:22.500-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='valkyrie'/><category scheme='http://www.blogger.com/atom/ns#' term='settlers'/><category scheme='http://www.blogger.com/atom/ns#' term='pwnage'/><title type='text'>Pwnage: A Dish Best Served With Sheep and Wheat</title><content type='html'>I should add, in response to &lt;a href="http://nextto666.blogspot.com/2009/03/winnings.html"&gt;this post&lt;/a&gt;, that I soundly returned the favour. We'll have to settle this over a &lt;i&gt;real&lt;/i&gt; match...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1160724308354432161?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1160724308354432161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/pwnage-dish-best-served-with-sheep-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1160724308354432161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1160724308354432161'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/pwnage-dish-best-served-with-sheep-and.html' title='Pwnage: A Dish Best Served With Sheep and Wheat'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3785601642162479662</id><published>2009-03-31T11:13:00.000-07:00</published><updated>2009-03-31T11:13:34.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='montreal'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><title type='text'>Mediaglyphic Evidence</title><content type='html'>Well, not quite - but here's the &lt;a href="http://www.youtube.com/watch?v=MXI-s5wpyRg"&gt;Montreal session video&lt;/a&gt;. The more I train, the longer the path ahead...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3785601642162479662?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3785601642162479662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/mediaglyphic-evidence.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3785601642162479662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3785601642162479662'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/mediaglyphic-evidence.html' title='Mediaglyphic Evidence'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1583474493750789540</id><published>2009-03-31T10:08:00.000-07:00</published><updated>2009-03-31T10:08:35.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='SMT'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>Who Says You Can't Swear in C++?</title><content type='html'>I currently have the pleasure of using &lt;a href="http://www.fjoch.com/"&gt;Och&lt;/a&gt;'s &lt;a href="http://www.fjoch.com/YASMET.html"&gt;YASMET&lt;/a&gt; tool for maximum entropy model optimization. (Quick background primer: maximum entropy is really a simple concept - assume nothing about the data beyond what you're given. In slightly more technical terms, you want the most uniform distribution that fits the constraints.) Looking at the source code is akin to reading one too many &lt;a href="http://en.wikipedia.org/wiki/Just_another_Perl_hacker"&gt;JAPH&lt;/a&gt; snippets or sifting through Google's obfuscated JavaScript - it's an experience both awe-inspiring and twitch-inducing. Of course, it's GNU GPL'd, so anyone who can navigate the mess of two-letter variable names, magic numbers, and minimally-whitespaced text is free to modify it! (A &lt;a href="http://en.wikipedia.org/wiki/GNU_indent"&gt;re-indenting utility&lt;/a&gt; might help here - though a quick run against the K&amp;amp;R style expands it to 362 lines and reveals the terrifying depth of the conditional statements lurking within. Fair warning.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1583474493750789540?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1583474493750789540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/who-says-you-cant-swear-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1583474493750789540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1583474493750789540'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/who-says-you-cant-swear-in-c.html' title='Who Says You Can&apos;t Swear in C++?'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8631537057459493116</id><published>2009-03-30T06:15:00.000-07:00</published><updated>2009-03-30T06:15:00.768-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='montreal'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Ow, My Hands</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_tc_ymrJn2SU/SdDB-KIFoDI/AAAAAAAAA_U/e_rYVJRM5UE/s1600-h/image24-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_tc_ymrJn2SU/SdDB-KIFoDI/AAAAAAAAA_U/e_rYVJRM5UE/s320/image24-2.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;A few of us here in Ottawa (well, only three) hit up Montreal this last weekend to get a session in with some of the &lt;a href="http://www.pkqc.ca/forum/viewforum.php?f=7"&gt;local traceurs&lt;/a&gt;. The Stade Olympique (less than fondly referred to as the "Big O", both for its shape and for the enormous debt incurred from its construction) is unsightly to most - and an absolute paradise for skateboarders, BMXers, and traceurs of all skill levels. The photos are up &lt;a href="http://picasaweb.google.com/evan.stratford/PKCCMontreal"&gt;here&lt;/a&gt;. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In other news: if you haven't done so already, check out &lt;a href="http://www.prettylightsmusic.com/"&gt;Pretty Lights&lt;/a&gt;. Who says you can't give away the music PWYC-style &lt;i&gt;and&lt;/i&gt; make a good run of things? Oh, right - &lt;a href="http://www.riaa.com/"&gt;these thugs&lt;/a&gt; do.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8631537057459493116?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8631537057459493116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/ow-my-hands.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8631537057459493116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8631537057459493116'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/ow-my-hands.html' title='Ow, My Hands'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tc_ymrJn2SU/SdDB-KIFoDI/AAAAAAAAA_U/e_rYVJRM5UE/s72-c/image24-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5673345669966530059</id><published>2009-03-26T19:07:00.000-07:00</published><updated>2009-03-26T19:07:02.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>And the total is...</title><content type='html'>76302. Of course, this is just the metadata - I wouldn't be so reckless as to hammer the CBC Radio 3 servers with 200 GB worth of download requests in a day! (Nor would my bandwidth permit me to suck down that much data in anything less than a couple of weeks. Oh well.) Next up: filter it down to a list of songs that I might actually want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5673345669966530059?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5673345669966530059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/and-total-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5673345669966530059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5673345669966530059'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/and-total-is.html' title='And the total is...'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8444899843778346242</id><published>2009-03-26T06:45:00.000-07:00</published><updated>2009-03-26T06:47:55.897-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='crawling'/><title type='text'>2017 Songs and Counting</title><content type='html'>Your guess as to what this does:&lt;br /&gt;&lt;br /&gt;&lt;div face="&amp;quot;"&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/bash&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;for i in `seq 0 25`; do&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo "http://radio3.cbc.ca/nmc/artists.aspx?offset=${i}"&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;done | tee -a artists.log |\&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./url-dumper 1.0 |\&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;egrep -o "/bands/[^\"]*" | uniq |&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;while read line; do&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;b=`basename "$line"`&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo "/play/band/${b}"&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;done | uniq | tee -a bands.log | ./cbc3-get-music-info 1.0 &lt;/div&gt;&lt;/div&gt;&lt;div face="&amp;quot;"&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;(Yes, I've left out some details - like what exactly those scripts &lt;i&gt;do&lt;/i&gt; under the covers. I'll post about that when it's finished!)&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;Better make that 3156 songs. And counting. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8444899843778346242?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8444899843778346242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/2017-songs-and-counting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8444899843778346242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8444899843778346242'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/2017-songs-and-counting.html' title='2017 Songs and Counting'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7246987224210582444</id><published>2009-03-24T05:19:00.000-07:00</published><updated>2009-03-24T05:19:48.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='congratulations'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><category scheme='http://www.blogger.com/atom/ns#' term='neil'/><title type='text'>Brothers From, er, The Same Mother</title><content type='html'>I'd like to congratulate my brother &lt;a href="http://www.youtube.com/user/undergroundIII"&gt;Neil&lt;/a&gt; on his acceptance into both Technical Illustration at Sheridan and Industrial Design at Humber. He's definitely one of the most talented artists I know, and I'm sure he'll make the most out of whichever program he chooses. So: congratulations!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7246987224210582444?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7246987224210582444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/brothers-from-er-same-mother.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7246987224210582444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7246987224210582444'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/brothers-from-er-same-mother.html' title='Brothers From, er, The Same Mother'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2067891385347464044</id><published>2009-03-23T17:16:00.000-07:00</published><updated>2009-03-23T17:16:00.033-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><category scheme='http://www.blogger.com/atom/ns#' term='synergy'/><title type='text'>Synergy: Now Useful</title><content type='html'>&lt;a href="https://help.ubuntu.com/community/SynergyHowto"&gt;This&lt;/a&gt; synergy, that is. (Thanks to &lt;a href="http://thejefffiles.com/blog/"&gt;Jeff Verkoeyen&lt;/a&gt; for the app tip.) Installation is absolutely painless, especially with the APT repos on Ubuntu; in less than five minutes I was happily swerving my mouse around my newly augmented screen real estate.&lt;br /&gt;&lt;br /&gt;Oh, and the installation pics are up. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2067891385347464044?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2067891385347464044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/synergy-now-useful.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2067891385347464044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2067891385347464044'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/synergy-now-useful.html' title='Synergy: Now Useful'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4317377269545574410</id><published>2009-03-23T12:46:00.000-07:00</published><updated>2009-03-23T12:46:16.003-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='RAID'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>RAIDers of the Nuked Fridge</title><content type='html'>After following &lt;a href="https://help.ubuntu.com/community/Installation/SoftwareRAID"&gt;these directions&lt;/a&gt;, my new Ubuntu 8.04 system with 1.5 TB RAID 5 is operational! Bonus: GRUB installed and ran without incident, suggesting that some effort had been put into fixing the mentioned bugs even before the Intrepid release. Moreover, I'm impressed to see that 1680x1050 resolution works out of the box. Ubuntu has come a long way since I &lt;a href="https://wiki.ubuntu.com/DapperDrake"&gt;started using it&lt;/a&gt;. Windows users take note: if you wrote off this increasingly popular distro, you owe it to yourself to give it another shot.&lt;br /&gt;&lt;br /&gt;I'll post the partitioning and installation pics to my &lt;a href="http://picasaweb.google.com/evan.stratford/Computers"&gt;Computers album&lt;/a&gt; after work. Next up: development utilities, minor config tweaks, and a bit of A/V "testing" with some &lt;a href="http://www.imdb.com/title/tt0213338/"&gt;Cowboy Bebop&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4317377269545574410?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4317377269545574410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/raiders-of-nuked-fridge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4317377269545574410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4317377269545574410'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/raiders-of-nuked-fridge.html' title='RAIDers of the Nuked Fridge'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3278307576060681137</id><published>2009-03-22T17:51:00.000-07:00</published><updated>2009-03-22T17:51:34.187-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>Computer Pics</title><content type='html'>&lt;a href="http://picasaweb.google.com/evan.stratford/Computers"&gt;Here they are&lt;/a&gt;. (Yes, it's a complete mess of cables. Yes, that's a microATX board in an ATX case. Yes, there's a giant opening in the front - I'm thinking about slapping in a fan above the optical drive. Yes, I put four hard drives in there - I'm going to put them in RAID 5, with a small RAID 1 partition on each to accomodate GRUB.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3278307576060681137?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3278307576060681137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/computer-pics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3278307576060681137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3278307576060681137'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/computer-pics.html' title='Computer Pics'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1335032733123840032</id><published>2009-03-22T14:25:00.000-07:00</published><updated>2009-03-22T14:25:07.899-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Ordinateur!</title><content type='html'>Just finished building my first computer this morning, and am now using it (off &lt;a href="https://help.ubuntu.com/community/LiveCD/"&gt;Live CD&lt;/a&gt;!) to write this post. If you haven't tried putting together your own box before, I can assure you that it really is as straightforward as your friendly neighbourhood unwashed computer geek insists it is. There are several &lt;a href="http://en.wikibooks.org/wiki/How_To_Assemble_A_Desktop_PC"&gt;guides&lt;/a&gt; available online, though for most first-time builders the useful advice is easily summarized:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Decide what the computer is for. Is it a workstation? A gaming rig? A webserver? Or are you just using it to surf and type? This will dictate what parts you need.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Research your parts: get specs, find user reviews, make sure everything is compatible, pick up the necessary tools (read: precision screwdrivers.)&lt;/li&gt;&lt;li&gt;Static = bad: don't build on carpet, and either ground yourself frequently or pick up an anti-static wrist strap - they're a lot cheaper than your parts (unless you snatched them from a scrap pile somewhere.)&lt;/li&gt;&lt;li&gt;Cooling = good: not enough and your system dies a very pungent death, too much and...well, there is &lt;a href="http://www.ubergizmo.com/photos/2007/9/oilcooled-pc.jpg"&gt;no&lt;/a&gt; &lt;a href="http://www.windowsnetworking.com/img/upl/image0031195732156906.jpg"&gt;such&lt;/a&gt; &lt;a href="http://gizmodo.com/368334/armari-extreme-concept-prototype-is-liquid-nitrogen-cooled-pc-beast"&gt;thing&lt;/a&gt;. The CPU fan/heatsink is &lt;b&gt;&lt;i&gt;absolutely necessary&lt;/i&gt;&lt;/b&gt;, and most people recommend having both intake and outtake fans for decent airflow.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And that's about it. I'm no designer, so I didn't go the case modding route for this one - but now that I've caught the hardware bug, I might be compelled to give it a shot. I seem to recall having a few plexiglass sheets tucked away somewhere...&lt;br /&gt;&lt;br /&gt;I'll post some photographic evidence to my &lt;a href="http://picasaweb.google.com/evan.stratford"&gt;Picasa albums&lt;/a&gt; shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1335032733123840032?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1335032733123840032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/ordinateur.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1335032733123840032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1335032733123840032'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/ordinateur.html' title='Ordinateur!'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-5991713026378897526</id><published>2009-03-21T09:06:00.000-07:00</published><updated>2009-03-21T09:06:15.554-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ottawa'/><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><title type='text'>In Search of Wireless</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_tc_ymrJn2SU/ScUJykopPeI/AAAAAAAAAxY/76gMTVvypEA/s1600-h/image11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_tc_ymrJn2SU/ScUJykopPeI/AAAAAAAAAxY/76gMTVvypEA/s320/image11.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Last night, my search for free wireless in Ottawa brought me by bike across the Pont des &lt;span style="font-size: small;"&gt;Chaudières&lt;/span&gt; to the &lt;a href="http://elmdaletavern.com/"&gt;Elmdale House Tavern&lt;/a&gt;, an old standby out in Hintonburg that (somewhat anachronistically) is one of the only non-coffee-shop places where you can satisfy your connectivity urges without leeching off the poor suckers who still haven't set a network password. (Said suckers: I have no qualms with "borrowing" your bandwidth. It's dead easy to fix.) The joint has a deliciously no-frills ambience, and they serve up a decent pint of &lt;a href="http://elmdaletavern.com/beaus-beer/"&gt;Beau's&lt;/a&gt; from nearby &lt;a href="http://maps.google.com/maps?q=Vankleek+Hill,+Champlain,+ON,+Canada"&gt;Vankleek Hill&lt;/a&gt;. &lt;i&gt;Vive les microbrasseries!&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-5991713026378897526?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/5991713026378897526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/in-search-of-wireless.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5991713026378897526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/5991713026378897526'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/in-search-of-wireless.html' title='In Search of Wireless'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tc_ymrJn2SU/ScUJykopPeI/AAAAAAAAAxY/76gMTVvypEA/s72-c/image11.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-285933522915441481</id><published>2009-03-20T18:23:00.001-07:00</published><updated>2009-03-20T18:23:55.784-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='pong'/><category scheme='http://www.blogger.com/atom/ns#' term='sheep'/><title type='text'>I'll Trade My Ore For These Sheep</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=ZDAM5lSPCwk"&gt;Sheep Pong&lt;/a&gt;? OMG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-285933522915441481?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/285933522915441481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/ill-trade-my-ore-for-these-sheep.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/285933522915441481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/285933522915441481'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/ill-trade-my-ore-for-these-sheep.html' title='I&apos;ll Trade My Ore For These Sheep'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6288684978380122378</id><published>2009-03-20T12:01:00.000-07:00</published><updated>2009-03-20T12:01:18.021-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Miscellaneous Perverse Tree Tricks</title><content type='html'>&lt;a href="http://labs.google.com/papers/bigtable.html"&gt;Unless&lt;/a&gt; &lt;a href="http://code.google.com/p/protobuf/"&gt;you're&lt;/a&gt; &lt;a href="http://research.google.com/archive/sawzall.html"&gt;Google&lt;/a&gt;, SQL-based relational databases are the &lt;i&gt;de facto&lt;/i&gt; standard for storing web application data. Trouble is, MySQL &lt;i&gt;et al.&lt;/i&gt; are great at storing relations - lists and sets, essentially - and are absolutely horrible for everything else, right?&lt;br /&gt;Well, not quite. Tree structures are easily and efficiently stored using &lt;a href="http://www.sitepoint.com/article/hierarchical-data-database/"&gt;modified preorder traversal&lt;/a&gt;, which relies on nested intervals. This alone is enough to tackle many problems, like &lt;a href="http://lemoncake.wordpress.com/2007/07/15/using-aclbehavior-in-cakephp-12/"&gt;ACL-style permissions&lt;/a&gt;. I've seen the adjacency list method in use - if you like scalability, don't do it.&lt;br /&gt;&lt;br /&gt;(For the truly masochistic: you can even pull off a decent &lt;a href="http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx"&gt;directed acyclic graph implementation&lt;/a&gt; by computing the &lt;a href="http://en.wikipedia.org/wiki/Transitive_closure"&gt;transitive closure&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6288684978380122378?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6288684978380122378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/miscellaneous-perverse-tree-tricks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6288684978380122378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6288684978380122378'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/miscellaneous-perverse-tree-tricks.html' title='Miscellaneous Perverse Tree Tricks'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-641654420605488881</id><published>2009-03-20T06:26:00.000-07:00</published><updated>2009-03-20T06:26:45.155-07:00</updated><title type='text'>Public Service FUD</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tc_ymrJn2SU/ScOXTcaKG1I/AAAAAAAAAwc/xj76Mxwu9Dk/s1600-h/image0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tc_ymrJn2SU/ScOXTcaKG1I/AAAAAAAAAwc/xj76Mxwu9Dk/s320/image0.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Just when you thought &lt;a href="http://en.wikipedia.org/wiki/Public_service_announcement"&gt;PSAs&lt;/a&gt; couldn't get any more &lt;a href="http://www.youtube.com/watch?v=-Xfqkdh5Js4"&gt;ridiculous&lt;/a&gt;, they roll this out. If you can't make out the text above, here it is in all its glory:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Sodium kills 30 Canadians each day. Get the facts!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Sick of it? &lt;a href="http://sodium101.ca/"&gt;Sodium101.ca&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-641654420605488881?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/641654420605488881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/public-service-fud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/641654420605488881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/641654420605488881'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/public-service-fud.html' title='Public Service FUD'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tc_ymrJn2SU/ScOXTcaKG1I/AAAAAAAAAwc/xj76Mxwu9Dk/s72-c/image0.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6607838076997971177</id><published>2009-03-20T06:14:00.000-07:00</published><updated>2009-03-20T06:15:09.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='NRC'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>Yay for Efficiency!</title><content type='html'>(Caveat: This post is somewhat C++-centric, but its main points translate to any language.)&lt;br /&gt;&lt;br /&gt;I've been continuously optimizing &lt;a href="http://qx5.blogspot.com/2009/01/level-3-almost.html"&gt;my first project&lt;/a&gt; so that I can run ever-larger &lt;a href="http://qx5.blogspot.com/2009/01/level-3-almost.html"&gt;&lt;/a&gt;experiments. The project boils down to two main problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;searching a list of high-dimensional sparse vectors for nearest-neighbour pairs; and&lt;/li&gt;&lt;li&gt;keeping track of the sets generated by merging those pairs.&lt;/li&gt;&lt;/ul&gt;In the process, I've cut the runtime for runs against the GALE 2008 Chinese-English corpus from something like millions of years to a couple of hours.&lt;br /&gt;&lt;br /&gt;(If the preceding part made absolutely no sense, you might want to stop reading now.)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lesson The, er, Zeroth.&lt;/b&gt; Take advantage of sparse data.&lt;br /&gt;&lt;br /&gt;This should be obvious - if I can ignore the holes in my data rather than trudging through each one, it can only help efficiency.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lesson The First.&lt;/b&gt; boost::tr1::unordered_map is not always preferable to map.&lt;br /&gt;&lt;br /&gt;The latter beats the former hands-down in iteration, and the ordering property of a map permits more efficient linear sweeps for a variety of iteration-based algorithms - sparse-vector arithmetic, for example. In some cases, a sorted array might be better still.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lesson The Second.&lt;/b&gt; Use the structure that fits the problem best.&lt;br /&gt;&lt;br /&gt;The second problem above is a classic use case for the &lt;a href="http://en.wikipedia.org/wiki/Disjoint-set_data_structure"&gt;disjoint sets structure&lt;/a&gt;. Using anything else is a recipe for gross inefficiency - you can't beat the amortized inverse &lt;a href="http://en.wikipedia.org/wiki/Ackermann_function"&gt;Ackermann&lt;/a&gt; cost for all operations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lesson The Third.&lt;/b&gt; You &lt;i&gt;can&lt;/i&gt; make file output faster.&lt;br /&gt;&lt;br /&gt;std::endl flushes the write buffer - unless you need the output immediately, use "\n" instead. Dump large structures in compact binary formats where possible. If you go this route, test that your read/write operations undo each other; this sanity check prevents most nasty surprises. If you're really in a pinch, use &amp;lt;cstdio&amp;gt; instead of &amp;lt;iostream&amp;gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lesson The Fourth.&lt;/b&gt; Consider using heuristics.&lt;br /&gt;&lt;br /&gt;Do you really &lt;i&gt;need&lt;/i&gt; an exact answer? Most of the time - especially when dealing with massive datasets - the answer is no. Look for small assumptions or shortcuts that work for your dataset. For instance, when performing the nearest-pair search, I only consider pairs that have non-zeros in the same coordinate at least once. This works well with the sparse representation, allowing me to search over a sub-quadratic number of pairs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6607838076997971177?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6607838076997971177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/yay-for-efficiency.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6607838076997971177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6607838076997971177'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/yay-for-efficiency.html' title='Yay for Efficiency!'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4026315483985482625</id><published>2009-03-19T06:52:00.000-07:00</published><updated>2009-03-19T06:52:15.626-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ottawa'/><category scheme='http://www.blogger.com/atom/ns#' term='CTF'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='injury'/><title type='text'>Ouch.</title><content type='html'>Twisted my ankle last night at OGC - I pulled off a monkey vault over one of their balance beams, only to have my right foot make a supremely graceful landing in the weak spot between two mats. Oops. Of course, one might contend that this sort of thing is bound to happen when you leap, vault, and climb over everything in sight for fun. I don't disagree - minor scrapes, bruises, and sprains are relatively commonplace in parkour. Major injuries, however, are not; these usually result from trying to show off or exceeding one's limits.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Parkour is &lt;a href="http://www.brandrepublic.com/bulletins/media/article/490575/critics-highlight-role-television-ads-freerunning-death/"&gt;&lt;b&gt;NOT&lt;/b&gt; a rooftop sport&lt;/a&gt;. I repeat: it's &lt;a href="http://www.news24.com/News24/World/News/0,,2-10-1462_1752341,00.html"&gt;&lt;b&gt;NOT&lt;/b&gt; a rooftop sport&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, the more spectacular manoeuvres garner the most press, with the inevitable result that teenagers court serious injury and &lt;a href="http://www.mirror.co.uk/news/tm_objectid=15843312&amp;amp;method=full&amp;amp;siteid=94762&amp;amp;headline=roof-horror--name_page.html"&gt;death jumping roof gaps&lt;/a&gt; because they think it's parkour. It's not. Every single experienced traceur that I've spoken with says the same thing. It reminds me of the rules from our CTF games on the University of Waterloo campus:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Don't cheat! If you get hurt, you're cheating. If you're cheating, you're likely to get hurt."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So - don't cheat on your training! The people you see leaping between buildings - and making it, every time - have the confidence, power, and consistency that come from years of diligent practice.&lt;br /&gt;&lt;br /&gt;(As an aside: I see that there is a &lt;a href="http://capturetheflag.meetup.com/cities/ca/on/waterloo/"&gt;good level for demand for starting an informal CTF league in Waterloo&lt;/a&gt;. I'm game - if nobody creates this group before I get back to campus, I'll do it myself. In the meantime, there's always &lt;a href="http://www.manhunt-waterloo.com/"&gt;Manhunt&lt;/a&gt;.)&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4026315483985482625?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4026315483985482625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/ouch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4026315483985482625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4026315483985482625'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/ouch.html' title='Ouch.'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-4369859004558003159</id><published>2009-03-17T05:56:00.000-07:00</published><updated>2009-03-17T05:56:51.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ottawa'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>And One Reason To Love It</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_tc_ymrJn2SU/Sb-YYYh_MfI/AAAAAAAAAuk/7onTPaodlUQ/s1600-h/image61.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_tc_ymrJn2SU/Sb-YYYh_MfI/AAAAAAAAAuk/7onTPaodlUQ/s320/image61.jpg" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;It's biking season! For the first time yesterday, I eschewed four wheels for two in my semi-weekly Westboro adventures, thereby bringing a whole new level of pain to this morning's post-gym-session awakening. For what it's worth, it's heartening to see at least a half-decent network of bike lanes.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;Another good thing: every time I head to a gym session or outdoor meet, I see new faces. This bodes well for the parkour community here in Ottawa - personally, I'd like to see it survive forever, well past the next wave of graduations. As inspiration, I'll post a video: &lt;a href="http://www.youtube.com/watch?v=_d1AxUPPcF8"&gt;Stephane Vigroux on parkour&lt;/a&gt;. Memorable quote:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;"None of the founders supported the previous '&lt;a href="http://www.worldfreerun.com/"&gt;World Freerun Championship&lt;/a&gt;'. None of us support this. Let's make it clear."&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Wise words from one of parkour's most skilled practitioners, and a strong indicator that the community aspect of parkour may very well survive the hype brewing around it. Let's hope it can. No - let's make it that way, each and every last one of us.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-4369859004558003159?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/4369859004558003159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/and-one-reason-to-love-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4369859004558003159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/4369859004558003159'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/and-one-reason-to-love-it.html' title='And One Reason To Love It'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tc_ymrJn2SU/Sb-YYYh_MfI/AAAAAAAAAuk/7onTPaodlUQ/s72-c/image61.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8724982283901286647</id><published>2009-03-16T13:32:00.000-07:00</published><updated>2009-03-16T13:32:58.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ottawa'/><category scheme='http://www.blogger.com/atom/ns#' term='coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><title type='text'>Another Reason to Hate Ottawa</title><content type='html'>&lt;a href="http://www.startupottawa.com/?p=119"&gt;Where's the wifi?&lt;/a&gt; I might have to start frequenting coffee shops, especially now that I've got a bike up here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8724982283901286647?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8724982283901286647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/another-reason-to-hate-ottawa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8724982283901286647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8724982283901286647'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/another-reason-to-hate-ottawa.html' title='Another Reason to Hate Ottawa'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-327595127820217283</id><published>2009-03-16T10:13:00.000-07:00</published><updated>2009-03-16T11:53:34.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Post-Emptive Strike</title><content type='html'>Yes, I blocked Wikipedia at work by overriding &lt;a href="http://www.mvps.org/winhelp2002/hosts.htm"&gt;HOSTS&lt;/a&gt;. (Yes, NRC uses Windows for internal purposes, with the inevitable result that everyone installs Cygwin to avoid incurring undue mental trauma when working with our UNIX clusters.) I look forward to reaching unprecedented heights of productivity - starting, naturally, with spending 5 minutes blogging about it.&lt;br /&gt;&lt;br /&gt;Update: In the same vein, I've decided to install the &lt;a href="http://groups.google.com/group/gmail-labs-help-email-addict/topics"&gt;Email Addict&lt;/a&gt; feature from Gmail Labs. Any other thoughts on reducing distractions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-327595127820217283?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/327595127820217283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/post-emptive-strike.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/327595127820217283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/327595127820217283'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/post-emptive-strike.html' title='Post-Emptive Strike'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1125930176777005968</id><published>2009-03-16T06:24:00.000-07:00</published><updated>2009-03-16T06:24:01.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ottawa'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>Life on Film</title><content type='html'>Well, not quite - but I have started uploading my photos &lt;a href="http://picasaweb.google.com/evan.stratford"&gt;here&lt;/a&gt;. (Yes, my other account &lt;a href="http://picasaweb.google.com/dj.nave"&gt;still exists&lt;/a&gt;.) So far, the Parkour album contains nary but a couple of shots of the &lt;a href="http://picasaweb.google.com/evan.stratford/Parkour#5313771620940525314"&gt;OGC gym floor&lt;/a&gt; and various downtown Ottawa hotspots; I have yet to grab any action shots, which may disappoint those of you expecting to see photographic evidence of my accumulating injuries. I haven't quite started living by my camera yet, and routinely forget to bring it along for photo-worthy events. Hopefully the act of keeping this blog will change that!&lt;br /&gt;&lt;br /&gt;Other than that: I'm back in Ottawa, this time with a bike, a &lt;a href="http://en.wikipedia.org/wiki/Djembe"&gt;djembe&lt;/a&gt;, and a mostly-finished computer in tow. If I ever figure out how to use all three concurrently, I'll let you know. (Maybe if I strap the tower to my rear pannier rack with bungee cords and excessive amounts of duct tape...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1125930176777005968?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1125930176777005968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/life-on-film.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1125930176777005968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1125930176777005968'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/life-on-film.html' title='Life on Film'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-6172304527860248580</id><published>2009-03-14T06:51:00.000-07:00</published><updated>2009-03-14T06:51:47.114-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pi day'/><category scheme='http://www.blogger.com/atom/ns#' term='driving'/><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>@~</title><content type='html'>I'm at home for the weekend, basking in the almost imperceptibly warmer Oakville-Toronto weather before booking it up to Waterloo. Pleasant drive down here, if uneventful - absolutely magnificent sunset, French-edition CBC Radio discussions on the &lt;i&gt;caisse populaire&lt;/i&gt; and our troubled economic times, slices of Bowie, and some much-needed mid-term reflections.&lt;br /&gt;&lt;br /&gt;Also: it's Pi Day! Unfortunately, the Math Department decided to give the requisite pie out yesterday, so it looks like I'll miss out on that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-6172304527860248580?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/6172304527860248580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/blog-post.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6172304527860248580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/6172304527860248580'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/blog-post.html' title='@~'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-2111828805205276575</id><published>2009-03-12T09:02:00.000-07:00</published><updated>2009-03-12T09:02:43.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speech recognition'/><category scheme='http://www.blogger.com/atom/ns#' term='voicemail'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Vox Populi</title><content type='html'>Not even voicemail can escape Big G, &lt;a href="http://www.reuters.com/article/technologyNews/idUSTRE52B0U720090312"&gt;it seems&lt;/a&gt; - &lt;a href="http://googleblog.blogspot.com/2009/03/here-comes-google-voice.html"&gt;Google Voice&lt;/a&gt;, built off &lt;a href="http://www.grandcentral.com/"&gt;Grand Central&lt;/a&gt;'s technology, will transform your voice messages into email transcripts. In the era of mobile computing this could be a wise move indeed, although it will certainly enrage privacy advocates.&lt;br /&gt;&lt;br /&gt;At heart, this is a fairly basic application of speech recognition software; simply strap together a &lt;a href="http://cmusphinx.sourceforge.net/"&gt;recognition engine&lt;/a&gt;, a mailing script, and something to monitor your phone and you've got a working replacement. Replace the phone with Skype (or, better yet, open-source equivalent &lt;a href="http://wiki.ekiga.org/index.php/Asterisk_and_Voicemail"&gt;Ekiga&lt;/a&gt;) and the monitoring step becomes a great deal easier - you could even use it to archive &lt;i&gt;all&lt;/i&gt; your phone calls. For the paranoid, you could toss in an extra pass through PGP and skip the mailing script, archiving instead to a &lt;a href="http://www.truecrypt.org/"&gt;TrueCrypt&lt;/a&gt;'d partition. (Of course, you'd have to &lt;a href="http://draft.blogger.com/"&gt;encrypt your calls&lt;/a&gt; in the first place.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-2111828805205276575?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/2111828805205276575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/vox-populi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2111828805205276575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/2111828805205276575'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/vox-populi.html' title='Vox Populi'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3519959993781556444</id><published>2009-03-11T12:23:00.000-07:00</published><updated>2009-03-11T12:23:29.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='housing'/><category scheme='http://www.blogger.com/atom/ns#' term='waterloo'/><category scheme='http://www.blogger.com/atom/ns#' term='finditoffcampus'/><title type='text'>Food, Water, Air, ...</title><content type='html'>Okay, so I haven't posted in a week - five days of parkour/conditioning/rock-climbing does that to you. So sue me. (Then watch as I nimbly elude your litigious minions.)&lt;br /&gt;&lt;br /&gt;It's mid-March. There's nothing special about mid-March &lt;i&gt;per se&lt;/i&gt;; it's just close enough to the Spring 2009 term to finally kick off the housing search. If anyone cares, I'm looking for something: close to Uptown Waterloo, at most $350/month, non-smoking, decent kitchen, with broadband and at least passably sociable roommates. I'd prefer laundry and relatively secure bike storage, but I'll take what I can get. Now to set up a properly-weighted LP and crunch the available housing data...&lt;br /&gt;&lt;br /&gt;I've tried a number of approaches in the student housing market. Cluster-bombing Craigslist, Kijiji, and Facebook Marketplace allowed me to sublet out my previous digs with relative ease. On the other side, I've always had decent success sifting through &lt;a href="http://www.och.uwaterloo.ca/"&gt;Off-Campus Housing&lt;/a&gt;. I tried &lt;a href="http://finditoffcampus.com/"&gt;finditoffcampus&lt;/a&gt;; the interface is zippy, the idea is good, but there's still a couple of missing pieces. The selection is somewhat limited (only 220 listings!) You can search for housing near the universities/colleges, but you can't search by proximity to, say, Uptown or Waterloo Park. The &lt;a href="http://finditoffcampus.com/site/adv_search"&gt;Advanced Search form&lt;/a&gt; fails to fill in sensible defaults - try filling in just the upper limit for rent, and you get &lt;a href="http://finditoffcampus.com/site/adv_search?min_rent=&amp;amp;max_rent=350&amp;amp;distance%5Bvalue%5D=&amp;amp;school%5Bid%5D=1&amp;amp;min_vacancies=&amp;amp;max_total_tenants=&amp;amp;tmp_property%5Bbuilding_type%5D=&amp;amp;tmp_property%5Btenant_type%5D=&amp;amp;tmp_property%5Bcommon_area_type%5D=&amp;amp;tmp_property%5Blaundry_type%5D=&amp;amp;tmp_property%5Bkitchen_type%5D=&amp;amp;tmp_property%5Blevel_type%5D=&amp;amp;tmp_property%5Boccupant_type%5D=&amp;amp;tmp_property%5Bpreferred_gender%5D=&amp;amp;tmp_property%5Bunit_type%5D=&amp;amp;tmp_property%5Bfurnishing%5D=&amp;amp;tmp_property%5Bparking%5D=&amp;amp;tmp_property%5Bbathroom%5D=&amp;amp;tmp_property%5Bhigh_speed%5D=&amp;amp;tmp_property%5Bair_conditioning%5D=&amp;amp;available_date1=Start+Date&amp;amp;available_date2=End+Date&amp;amp;tmp_property%5Bmin_term%5D=&amp;amp;tmp_property%5Bmax_term%5D=&amp;amp;checkbox_set_1%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_2%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_3%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_4%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_5%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_6%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_7%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_8%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_9%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_10%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_11%5Bcheckbox_option_id%5D=0&amp;amp;checkbox_set_12%5Bcheckbox_option_id%5D=0&amp;amp;commit=Search"&gt;this&lt;/a&gt;. These are mostly minor annoyances, though, and it could easily cure me of my board-sifting ways with just a touch more work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-3519959993781556444?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3519959993781556444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/food-water-air.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3519959993781556444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3519959993781556444'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/food-water-air.html' title='Food, Water, Air, ...'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-8867042827564919907</id><published>2009-03-03T15:35:00.000-08:00</published><updated>2009-03-03T15:35:27.284-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='parkour'/><category scheme='http://www.blogger.com/atom/ns#' term='introspection'/><title type='text'>On a More Personal Note</title><content type='html'>My posts have been fairly tech/rant-heavy over the last while, so I figured I'd take a breather and bring everyone up to date on, well, me.&lt;br /&gt;&lt;br /&gt;I've been madly posting to the &lt;a href="http://pkcc.pkto.ca/"&gt;PKCC&lt;/a&gt; &lt;a href="http://pkto.ca/webboard/viewforum.php?f=43"&gt;sessions&lt;/a&gt; and &lt;a href="http://pkto.ca/webboard/viewforum.php?f=44"&gt;regional talk&lt;/a&gt;, doing my part to help revive the Ottawa parkour scene. Yesterday, fainjoe (one of the PKCC regulars) and I paid a visit to the &lt;a href="http://www.ottawagymnasticscentre.ca/"&gt;Ottawa Gymnastics Centre&lt;/a&gt; for their open gym session; apparently &lt;i&gt;this&lt;/i&gt; is where all the traceurs are hiding, and no wonder - there's plenty of equipment and floor space to play around with. I'm confident that we can turn this into a cohesive and highly active group again. In the meantime, I'll be hitting up OGC and &lt;a href="http://www.verticalreal.com/"&gt;Vertical Reality&lt;/a&gt; (thanks for the tip, fainjoe!) as much as possible, aiming for my (possibly foolhardy) term goal of 5 consecutive muscle-ups.&lt;br /&gt;&lt;br /&gt;Aside from that, I've been trying to knock all those menial but necessary items off my to-do list - things like filing taxes (in both the US and Canada!), making sure I can graduate on time (despite my propensity for taking the hardest classes possible), and finally firing off some essential emails. Not so exciting, but it &lt;i&gt;will&lt;/i&gt; be nice once I have these weights off my shoulder.&lt;br /&gt;&lt;br /&gt;I did manage to come up with a decent approach to my current project at NRC. I could tell you what it is, but - well, you know.&lt;br /&gt;&lt;br /&gt;I'll be in Indiana for the last weekend in April - prepare your lynch mobs now, Hoosiers! As we Canadian pirates say, ehhhhhrrrrrrrrrrrrrrrrr!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-8867042827564919907?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/8867042827564919907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/on-more-personal-note.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8867042827564919907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/8867042827564919907'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/on-more-personal-note.html' title='On a More Personal Note'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7050572114012610552</id><published>2009-03-03T07:36:00.000-08:00</published><updated>2009-03-04T13:21:08.250-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Public Service Academy'/><category scheme='http://www.blogger.com/atom/ns#' term='braintrust'/><category scheme='http://www.blogger.com/atom/ns#' term='government'/><category scheme='http://www.blogger.com/atom/ns#' term='meritocracy'/><title type='text'>Public Service Announcement</title><content type='html'>The concept of an &lt;a href="http://uspublicserviceacademy.org/"&gt;academy for public service&lt;/a&gt; is solid, but the public sector needs more than manpower - it desperately needs brainpower, and top brainpower at that. We need judges and patent officers who grok current technologies, and qualified IT specialists who will apply that technology to reforming paper-form bureaucracy. We need urban planners who understand green design principles, and legislators who will update our building and zoning codes to accept those principles. We need ministers and advisors with expertise in addressing environmental and economic issues. We need math teachers &lt;i&gt;who know math&lt;/i&gt;. We need education advisors who believe in the value of music, of art, of physical education. The list is endless.&lt;br /&gt;&lt;br /&gt;Bottom line: the public sector is bloated and rife with nepotism, so much so that the very people who could reform it avoid it like the plague. After all, why spend years banging your head against red tape when Company X will put your skills to use immediately &lt;i&gt;and&lt;/i&gt; pay you more for the privilege?&lt;br /&gt;&lt;br /&gt;I'm going to make a controversial assertion: we need "braintrust conscription." We need to &lt;i&gt;force&lt;/i&gt; our world's most knowledgeable and respected experts to spend two years using their skills in the service of the public good. We need to &lt;i&gt;force&lt;/i&gt; our most experienced workers to become teachers. Conversely, we need to &lt;i&gt;force&lt;/i&gt; our public servants to hold relevant qualifications.&lt;br /&gt;&lt;br /&gt;I'm slowly becoming convinced that this is the only way to address our current problems. Our political circles are awash in so-called "leaders" - alpha-male types who git 'er done like blind (American) football players, conniving backroom puppetmasters, and a smattering of determined yet relatively impotent do-gooders. Enough. It's high time to bring meritocracy to politics. &lt;a href="http://en.wikipedia.org/wiki/If_and_only_if"&gt;Iff&lt;/a&gt; the Public Service Academy can do that, I'm all for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7050572114012610552?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7050572114012610552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/public-service-announcement.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7050572114012610552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7050572114012610552'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/public-service-announcement.html' title='Public Service Announcement'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-1147439661770260217</id><published>2009-03-01T18:38:00.000-08:00</published><updated>2009-03-01T18:39:18.440-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copyright'/><category scheme='http://www.blogger.com/atom/ns#' term='file-sharing'/><category scheme='http://www.blogger.com/atom/ns#' term='the pirate bay'/><title type='text'>Pirates of the World, Arrrrr!</title><content type='html'>&lt;span&gt;&lt;i&gt;"First they ignore you, then they ridicule you, then they fight you, then you win."&lt;/i&gt; -- &lt;/span&gt;&lt;span&gt;Mahatma Gandhi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Judging by the &lt;a href="http://trial.thepiratebay.org/"&gt;absolute chaos&lt;/a&gt; going down in Sweden, I'd say we're well into the fighting stage. &lt;a href="http://torrentfreak.com/warner-confesses-pirate-bay-cop-compromised-080605/"&gt;Conflicts&lt;/a&gt; &lt;a href="http://mashable.com/2008/06/05/warner-pirate-bay-cop-compromised/"&gt;of&lt;/a&gt; &lt;a href="http://torrentfreak.com/ifpi-expert-witness-in-pirate-bay-case-worked-for-ifpi-080424/"&gt;interest&lt;/a&gt; are popping up like &lt;a href="http://torrentfreak.com/pirate-bay-witness-wife-overwhelmed-with-flowers-090227/"&gt;flowers&lt;/a&gt;, the FUDslingers are in &lt;a href="http://www.boingboing.net/2006/08/16/mpaas-mymoviemuse-su.html"&gt;full&lt;/a&gt; &lt;a href="http://torrentfreak.com/images/mpaagraph.jpg"&gt;swing&lt;/a&gt;, and The Pirate Bay's pagehits are &lt;a href="http://www.quantcast.com/thepiratebay.org"&gt;skyrocketing&lt;/a&gt;. The RIAA/MPAA are backed against a wall, their remaining options few; to vanquish file-sharing, the Internet would need to be transformed from an information free-for-all to something akin to Vista's DRM pipelines. Failing that, they would need the compliance of every last government and ISP on Earth. Even that might not do it; throw mobile mesh networks and increasingly popular (and cheap!) netbooks into the mix, and you've got a recipe for file-sharing flash mobs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The recording industry might win this battle, but they won't win the war. TPB's outright defiance is building a critical mass of support, and all the budget-horror pyramid charts in the world can't do a lick of good against that.&lt;br /&gt;&lt;br /&gt;(As an aside: your opinion of him regardless, rms has a Pretty Good Plan for reasonable copyright laws - far more sensible than his protracted debate over the semantics of Linux vs. GNU/Linux. &lt;a href="http://www.gnu.org/philosophy/copyright-and-globalization.html"&gt;Check it out&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-1147439661770260217?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/1147439661770260217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/03/pirates-of-world-arrrrr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1147439661770260217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/1147439661770260217'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/03/pirates-of-world-arrrrr.html' title='Pirates of the World, Arrrrr!'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-3828700491439332901</id><published>2009-02-26T12:54:00.000-08:00</published><updated>2009-02-28T21:08:18.039-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>In Soviet Russia, Website Uses You!</title><content type='html'>I could go on for days about how government websites are hopelessly mired in a funk of ancient design practices and proprietary databases - or I could just point you &lt;a href="http://usability.gov/"&gt;here&lt;/a&gt;, where the U.S. Department of Health &amp;amp; Human Services has kindly made my point for me. Among the snafus:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Three separate stylesheets. &lt;i&gt;Three&lt;/i&gt;: one for IE, one for Navigator 5 and up, and one for the rest - plus the browser detection code is crude. &lt;/li&gt;&lt;li&gt;Those image links are killing me. They're ugly, they're unnecessary, the rollovers don't even line up properly. Worse, they're backed up by some horrendous-looking JavaScript that could be rewritten in about five lines even without pulling in anything like &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Searching the site for CSS turns up...no results. How do you write about website usability &lt;i&gt;without once mentioning CSS!?&lt;/i&gt; Simple: throw in a bunch of process jargon. And you wonder why these government websites never finish their usability reviews...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;That aside, finding &lt;i&gt;anything&lt;/i&gt; on this site is a bit of a chore. Either I go with Search and receive what I'll refer to as "context-free results", or I poke through their gangly tab-list-hyperlink structure. Wait, never mind - &lt;a href="http://www.usability.gov/process.html"&gt;this&lt;/a&gt; makes everything so much clearer, right? &lt;br /&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/1293116210631635220-3828700491439332901?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/3828700491439332901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/02/in-soviet-russia-website-uses-you.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3828700491439332901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/3828700491439332901'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/02/in-soviet-russia-website-uses-you.html' title='In Soviet Russia, Website Uses You!'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1293116210631635220.post-7493232075229927663</id><published>2009-02-26T06:12:00.000-08:00</published><updated>2009-02-26T06:12:29.320-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>And...</title><content type='html'>...we're back to relative sanity here at Quizzical Quincunx, now that the new CSS has been plugged in. With that out of the way, I might delve into the widget content itself (free time pending, as always!)&lt;br /&gt;&lt;br /&gt;Note to Blogger: editing HTML directly through your editor is a &lt;i&gt;terrible&lt;/i&gt; experience. So terrible, in fact, that I resorted to saving a local copy and vim-&lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; double-teaming it. Make it easier to quickly see the results of my changes and start supporting things like, you know, &lt;i&gt;the tab key&lt;/i&gt;. Ugh.&lt;br /&gt;&lt;br /&gt;Note to everyone else (yes, all three of you): comments? thoughts? gripes? minor sticking points? Feedback is always appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1293116210631635220-7493232075229927663?l=qx5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qx5.blogspot.com/feeds/7493232075229927663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://qx5.blogspot.com/2009/02/and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7493232075229927663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1293116210631635220/posts/default/7493232075229927663'/><link rel='alternate' type='text/html' href='http://qx5.blogspot.com/2009/02/and.html' title='And...'/><author><name>Evan Stratford</name><uri>http://www.blogger.com/profile/08257743823151744794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_tc_ymrJn2SU/SX8tKPuXiXI/AAAAAAAAAks/aoW7slyjjis/S220/DSC00338.jpg'/></author><thr:total>0</thr:total></entry></feed>
