<?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-7021685</id><updated>2011-07-19T10:22:26.654-04:00</updated><category term='regex'/><category term='theft'/><category term='security'/><category term='comics'/><category term='intellectual property'/><category term='bsd'/><category term='realtime'/><category term='cardspace'/><category term='cs452'/><category term='ece493'/><category term='cookieinjector'/><category term='moo'/><category term='vim'/><title type='text'>colin dellow's bln</title><subtitle type='html'>Consider this a diary (but it's not daily), so perhaps a journal (but it's not regular), so maybe a record (but it's not permanent), so a palimpsest containing the thoughts and experiences of me, Colin Dellow.
&lt;br&gt;
Out-of-date notice 1: For summer 2008, check &lt;a href="http://nerdsineurope.blogspot.com"&gt;Nerds in Europe&lt;/a&gt;.
&lt;br&gt;Out-of-date notice 2: For 2009 onwards, Jenn and I now blog at &lt;a href="http://nerdsinseattle.blogspot.com"&gt;Nerds in Seattle&lt;/a&gt;.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default?start-index=101&amp;max-results=100'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>220</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7021685.post-3587032879885301826</id><published>2008-06-16T21:35:00.005-04:00</published><updated>2008-06-16T21:47:44.544-04:00</updated><title type='text'>NAFTA: Finally doing something for me</title><content type='html'>I bummed a ride to Buffalo and got my TN status today: the official start of my career in computer security...or is it?&lt;br /&gt;&lt;br /&gt;The process was pretty seamless.  In fact, I didn't get fingerprinted, I didn't get grilled, and I didn't have to explain to the officer what to put on the form and where to sign it: it was easier than J-1 status!&lt;br /&gt;&lt;br /&gt;The worst question was: "Any criminal record, arrests, or things we should know about?"&lt;br /&gt;&lt;br /&gt;Since I got the TN status, you may infer that I answered no.  But I had to give it some thought, especially after receiving my graduation gift from my parents this weekend:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cldellow.com/images/letter-from-school.pdf"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand; border:1px solid black" src="http://4.bp.blogspot.com/_YY17AFO4QNs/SFcWKJn6yAI/AAAAAAAAALk/VILgYO_851U/s320/letter-from-school.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5212659457342490626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes, it's a copy of my middle-school suspension notice, informing my parents that I had been suspended for computer hacking.&lt;br /&gt;&lt;br /&gt;Apparently, I had the distinction of being the first student to be suspended for violating computer rules.  It shows:  my crime (keylogging a variety of computers) is described as violating copyright; the school's system administrator had a dictionary-attackable password; and, after a stern talking-to, the school librarian returned the floppy disk with the erased keylog file.&lt;br /&gt;&lt;br /&gt;A few clicks later, and I had resurrected the list of usernames and passwords that she had erased.  Mmmm, data.&lt;br /&gt;&lt;br /&gt;So is my TN the official start of my career?  Or is it just the next logical step, which will defeat attacks as naive as simple keylogging?  I look forward to finding out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3587032879885301826?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3587032879885301826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3587032879885301826' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3587032879885301826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3587032879885301826'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2008/06/nafta-finally-doing-something-for-me.html' title='NAFTA: Finally doing something for me'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YY17AFO4QNs/SFcWKJn6yAI/AAAAAAAAALk/VILgYO_851U/s72-c/letter-from-school.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5226654204832281941</id><published>2008-04-23T14:59:00.003-04:00</published><updated>2008-04-23T15:05:54.269-04:00</updated><title type='text'>1 degree of separation</title><content type='html'>&lt;img src="http://www.bulletin.uwaterloo.ca/images/2006/0914elpe.jpg"&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;I wrote my last exam, ever!  Fittingly, it was of the cattle-herding variety in the PAC.  Far from making me feel that my university experience was a generic, one-size-fits-all dehumanizing experience, this fact rejuvenated me:  even downed cows get dragged off to market to be sold for beef.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5226654204832281941?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5226654204832281941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5226654204832281941' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5226654204832281941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5226654204832281941'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2008/04/1-degree-of-separation.html' title='1 degree of separation'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5265985608797213374</id><published>2008-04-18T15:41:00.003-04:00</published><updated>2008-04-18T15:42:28.509-04:00</updated><title type='text'>Tripping in Europe</title><content type='html'>Check out our &lt;a href="http://nerdsineurope.blogspot.com"&gt;travel blog&lt;/a&gt; for the trip Jenn and I are taking this summer.&lt;br /&gt;&lt;br /&gt;(That's right - now I have two blogs to neglect!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5265985608797213374?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5265985608797213374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5265985608797213374' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5265985608797213374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5265985608797213374'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2008/04/tripping-in-europe.html' title='Tripping in Europe'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-463819309847718743</id><published>2008-01-28T00:28:00.000-05:00</published><updated>2008-01-28T00:29:10.403-05:00</updated><title type='text'>Life-altering decisions</title><content type='html'>&lt;blockquote&gt;Please note that you might think that making life-altering decisions, like selling your home, breaking a lease, taking a trip abroad before starting your new job, or giving notice might be logical and immediate steps after receiving an offer from Microsoft, but if you are a visa-dependent candidate, these types of decisions can cause problems in the immigration process.&lt;br /&gt;&lt;br /&gt;Please wait to may any life-altering decision until after you have spoken with our immigration team for advice.  This will ensure a smooth transition to Microsoft.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Oops.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-463819309847718743?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/463819309847718743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=463819309847718743' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/463819309847718743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/463819309847718743'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2008/01/life-altering-decisions.html' title='Life-altering decisions'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-753337389503303702</id><published>2008-01-14T16:51:00.000-05:00</published><updated>2008-01-14T17:08:19.307-05:00</updated><title type='text'>Windows CardSpace and me</title><content type='html'>I've accepted a job with Microsoft, where I will be working on &lt;a href="http://en.wikipedia.org/wiki/Windows_CardSpace"&gt;Windows CardSpace&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-753337389503303702?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/753337389503303702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=753337389503303702' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/753337389503303702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/753337389503303702'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2008/01/windows-cardspace-and-me.html' title='Windows CardSpace and me'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5275392385847499098</id><published>2007-12-29T17:30:00.000-05:00</published><updated>2007-12-29T17:56:37.456-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comics'/><category scheme='http://www.blogger.com/atom/ns#' term='moo'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='intellectual property'/><category scheme='http://www.blogger.com/atom/ns#' term='theft'/><category scheme='http://www.blogger.com/atom/ns#' term='bsd'/><title type='text'>Cows, part 2</title><content type='html'>In Grade 9, I wrote a &lt;a href="http://colin_dcomix.tripod.com/Screenshots.html"&gt;program to download comics and newspapers from the web&lt;/a&gt;&lt;sup&gt;&lt;a href="#80s"&gt;[1]&lt;/a&gt;&lt;/sup&gt; and display them in a whiz-bang DHTML page (that's right, back in my day we called it DHTML, you young whippersnappers, none of this new-age &lt;i&gt;AJAX&lt;/i&gt; crap.)  &lt;br /&gt;&lt;br /&gt;Anyway, to drive this, I realized I could write a bunch of painstaking code to generate the URLs to download the images, or I could write some sort of text-based configuration file that would drive the program.&lt;br /&gt;&lt;br /&gt;That worked well for simple cases.  Over time, distributors got tricky:  the URL for their image had some custom string in it that you could only get if you loaded a specific page on the given day.  And you had to have a specific Referer, too!  This required a complex pattern matching system.  I realized I could write a bunch of painstaking code to match the patterns I needed... or I could look into this thing called regular expressions that I had kept seeing people use on the MOO.&lt;br /&gt;&lt;br /&gt;As always, I didn't have a &lt;a href="http://www.cs.uwaterloo.ca/current/courses/course_descriptions/cDescr/CS241.shtml"&gt;deep understanding of what they were&lt;/a&gt;, but seeing what they could do pretty much blew my 14-year-old mind away.&lt;br /&gt;&lt;br /&gt;And thus, I committed my first act of (unintentional!) intellectual property theft by including the regexpr package from the LambdaMOO server into my program wholesale. "Attribution? What's that?"  Consider this a mea culpa and a fix after the fact.&lt;br /&gt;&lt;br /&gt;&lt;a name="80s"&gt;&lt;/a&gt;&lt;b&gt;[1]&lt;/b&gt; &lt;i&gt;I now understand how older folks feel when they say "it was the 70s," as if the date somehow excuses their pastel leisure suits. It was the 90s: back then, if you were on the web and didn't have enough popups and banner ads to induce seizures in rates competitive with modern Japanese anime, you were a nobody.  &lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5275392385847499098?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5275392385847499098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5275392385847499098' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5275392385847499098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5275392385847499098'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/12/cows-part-2.html' title='Cows, part 2'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6060726080966786394</id><published>2007-12-29T00:46:00.001-05:00</published><updated>2007-12-29T01:14:44.816-05:00</updated><title type='text'>Cows, part 1</title><content type='html'>I first learned to hack code in BASIC and Pascal, but the language that truly brought me into the inner circle of real programmers was the MOO language.  Invented at the famous Xerox PARC facility, MOOs were programmable, object-oriented, networkable, multi-user, concurrent, distributed environments.  Every nerd's wet dream.&lt;br /&gt;&lt;br /&gt;An icon of MOO days was yduJ ("rhymes with fudge"), who wrote a few tutorials on the inner workings of MOOs.  I am convinced that if a CS grad cannot explain all the concepts touched on in the &lt;a href="http://www.hayseed.net/MOO/yduj_lore.txt"&gt;MOO Lore Pamphlet&lt;/a&gt;, they should get a hard spanking and a stern talking-to.  Although I didn't realize it at the time, the pamphlet mentions:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;network latency&lt;/li&gt;&lt;li&gt;usenet&lt;/li&gt;&lt;li&gt;virtual memory and paging&lt;/li&gt;&lt;li&gt;concurrency&lt;/li&gt;&lt;li&gt;timeslicing&lt;/li&gt;&lt;li&gt;caching (and arguably, memoization)&lt;/li&gt;&lt;li&gt;event-based programming&lt;/li&gt;&lt;li&gt;heritability of security permissions&lt;/li&gt;&lt;li&gt;setuid&lt;/li&gt;&lt;li&gt;spoofing attacks&lt;/li&gt;&lt;li&gt;stack walking&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Sadly, &lt;a href="http://www.moo.ca/"&gt;the MOO where I truly learned to code&lt;/a&gt; is now basically a museum relic - it's once-youthful population has reached old age (i.e., kicked out of our parents' basements) and has moved on.  Mostly to Google, it seems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6060726080966786394?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6060726080966786394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6060726080966786394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6060726080966786394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6060726080966786394'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/12/cows-part-1.html' title='Cows, part 1'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-8754402880188923412</id><published>2007-12-28T02:09:00.000-05:00</published><updated>2007-12-29T02:13:33.967-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>Stupid VIM tricks, part 1</title><content type='html'>To insert a GUID into your document simply by typing 'guid', toss this into your .vimrc:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;imap guid &amp;lt;esc&amp;gt;:r! C:\path\to\uuidgen.exe&amp;lt;cr&amp;gt;k$Jx40la&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The k$Jx40la does as follows:&lt;br /&gt;&lt;br /&gt;k -&gt; move up one line&lt;br /&gt;$ -&gt; go to end of line&lt;br /&gt;J -&gt; concatenate line below with this one&lt;br /&gt;x -&gt; delete the space that concatenation created&lt;br /&gt;40l -&gt; move cursor right 40 spaces (length of a guid)&lt;br /&gt;a -&gt; return to insert mode, with cursor positioned where it was before we started&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-8754402880188923412?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/8754402880188923412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=8754402880188923412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/8754402880188923412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/8754402880188923412'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/11/stupid-vim-tricks-part-1.html' title='Stupid VIM tricks, part 1'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4765581996065885287</id><published>2007-12-21T20:07:00.000-05:00</published><updated>2007-12-22T16:20:18.799-05:00</updated><title type='text'>A momentous occasion</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;April 30th, 2008.&lt;br /&gt;&lt;br /&gt;I greatly dislike your company.  The quality of your service is subpar at best, and your website is an exemplar of the sort of functionality that a 12-year-old with FrontPage 97 could provide if you bought him off with a crisp twenty dollar bill.&lt;br /&gt;&lt;br /&gt;I cannot wait until the day that I am free from your company’s shackles -- that day will be April 30th.  It will be a joyous day, marked with tales around the now-silent TV, amid the unblinking glow of the LEDs of a router that is no longer connected to the intarwebs.  There will be champagne for the adults and fizzy ginger ale for the kids.  In fact, my fiancee and I are contemplating changing our anniversary to April 30th to forever remember the most special day in our lives.  It's either that or get married on that day -- as math majors, the symmetry of us joining together while simultaneously dissolving our union with you has a certain aesthetic to the two of us.  Whatever we choose, the champagne is chilling and the fireworks are waiting (in a cold, dry storage area - your concerns for our safety are noble, but we’ll live to see the day we sever our ties with Rogers if it kills us). &lt;br /&gt;&lt;br /&gt;That said, I want to pay you hundreds of dollars!&lt;br /&gt;&lt;br /&gt;Sorry... did that seem like I wasted a lot of time just so I could pay you money?  Yup, that’s about how I feel every month when I try to pay you.&lt;br /&gt;&lt;br /&gt;Anyway, I would love to pay you, but I can't! Apparently, since signing up for a Rogers Home Phone account, I am unable to view/pay bills for my Rogers services until I link my Rogers Wireless account on to my One Bill.  &lt;br /&gt;&lt;br /&gt;I don't get it - I don't have a Rogers Wireless account.  Oh, I see.  The Home Phone, which is not a wireless phone in any sense of the word, is a Wireless account.  Duh.  So I click on Combine Your Bills.  Uh oh - 500 Internal Server Error.  Let’s try that again.  Hey it worked!  In fact, it worked really well: "The Wireless and Cable accounts you have registered to this User ID are already subscribed to Rogers One Bill."&lt;br /&gt;&lt;br /&gt;Oh, I see.  I have to register my Wireless account with my One Bill.  It’s part of the One Bill, just not registered with the One Bill.  Duh.&lt;br /&gt;&lt;br /&gt;I phoned your customer support number to get the information needed to register my account.  That was fun.  "Home phone."  "Billing." "Home phone."  "Human."  "Billing."  "Home phone." Clearly, the 12 year-old felt $20 was too much payment for the website, so he chipped in on the classy speech-recognition part of your telephone system.&lt;br /&gt;&lt;br /&gt;The one redeeming point of this could have been your customer service rep:  she was almost able to answer my question: "what’s my account number?"  Sadly, we got sidetracked with updating my contact information - do I have an email address?  Do I have a phone number?  &lt;br /&gt;&lt;br /&gt;Yes, Cathy, I do have a phone number.  Now that I’ve paid my bill, I’ll have a phone number for another 131 days.&lt;br /&gt;&lt;br /&gt;Colin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4765581996065885287?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4765581996065885287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4765581996065885287' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4765581996065885287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4765581996065885287'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/12/momentous-occasion.html' title='A momentous occasion'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-8065377443767378349</id><published>2007-11-26T21:12:00.000-05:00</published><updated>2007-11-26T21:26:57.357-05:00</updated><title type='text'>Rock Band</title><content type='html'>I was stranded in Vancouver on my return from Toronto this weekend.  Luckily, &lt;a href="http://sarah.andyc.org/gallery/day1/IMG_0195"&gt;Sarah &amp; Andy&lt;/a&gt; put me up overnight and I got a ride back with Andy, arriving just in time for Monday's team meeting at 1PM.&lt;br /&gt;&lt;br /&gt;During the pre-meeting chitchat, a colleague was talking about the highly-anticipated Rock Band game that he had just managed to get a copy of this weekend.  After some back and forth about how cool the game was, I noted...&lt;br /&gt;&lt;br /&gt;"Funny.  I, too, purchased a &lt;a href="http://cldellow.com/images/ring.jpg"&gt;rock band&lt;/a&gt; this weekend..."&lt;br /&gt;&lt;br /&gt;Jenn and I are engaged as of November 22, 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-8065377443767378349?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/8065377443767378349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=8065377443767378349' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/8065377443767378349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/8065377443767378349'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/11/rock-band.html' title='Rock Band'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-3974369873478205609</id><published>2007-11-23T17:53:00.001-05:00</published><updated>2007-11-23T17:53:22.928-05:00</updated><title type='text'>How do you recognize a good programmer, part 1</title><content type='html'>...he catches exceptions without even trying.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3974369873478205609?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3974369873478205609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3974369873478205609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3974369873478205609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3974369873478205609'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/11/how-do-you-recognize-good-programmer.html' title='How do you recognize a good programmer, part 1'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6571583196637772072</id><published>2007-11-15T09:37:00.000-05:00</published><updated>2007-11-15T09:45:54.991-05:00</updated><title type='text'>Zune 2: Wow</title><content type='html'>Zune 1 was a standard V1 offering:  clunky hardware, software that was a bloated reskin of Windows Media Player 11.  I understand.&lt;br /&gt;&lt;br /&gt;Zune 2 is a total revamp.  Custom software written on the UI framework that powers Windows Media Center.  It looks amazing.  And, for a subscription music fiend like me... it rocks to have all this music at your fingertips.  (Click the thumbnail to get a bigger version.)&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;strong&gt;Music collection, viewing songs by R.E.M.&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.eng.uwaterloo.ca/~cldellow/zuneREM.jpg"&gt;&lt;img src="http://www.eng.uwaterloo.ca/~cldellow/tZuneREM.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Music marketplace, main page&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.eng.uwaterloo.ca/~cldellow/zuneMarketplace.jpg"&gt;&lt;img src="http://www.eng.uwaterloo.ca/~cldellow/tZuneMarketplace.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Music marketplace, viewing songs by Rolling Stones&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.eng.uwaterloo.ca/~cldellow/zuneRollingStones.jpg"&gt;&lt;img src="http://www.eng.uwaterloo.ca/~cldellow/tZuneRollingStones.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Now playing mode (warning:  full screen on a pretty big monitor)&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://www.eng.uwaterloo.ca/~cldellow/zuneNowPlayingMode.jpg"&gt;&lt;img src="http://www.eng.uwaterloo.ca/~cldellow/tZuneNowPlaying.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6571583196637772072?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6571583196637772072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6571583196637772072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6571583196637772072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6571583196637772072'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/11/zune-2-wow.html' title='Zune 2: Wow'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-178479595312685365</id><published>2007-11-12T04:52:00.001-05:00</published><updated>2007-11-12T04:57:25.781-05:00</updated><title type='text'>Rogers really sucks</title><content type='html'>I got an email from Rogers -- I can get a sneak preview of their new website!&lt;br /&gt;&lt;br /&gt;Naturally, I assumed this was because of my &lt;a href="http://cldellow.blogspot.com/2007/03/why-i-dont-have-cellphone.html"&gt;well-known love&lt;/a&gt; of &lt;a href="http://cldellow.blogspot.com/2007/09/joy-of-being-globetrotting-uw-co-op.html"&gt;their&lt;/a&gt; &lt;a href="http://cldellow.blogspot.com/2007/11/rogers-sucks.html"&gt;current website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The new website?  It starts by asking you to identify your province.&lt;br /&gt;&lt;br /&gt;In a Flash applet.&lt;br /&gt;&lt;br /&gt;Well done, Rogers.&lt;br /&gt;&lt;br /&gt;PS - If you visit the current rogers.com in Firefox with JavaScript disabled, you get a 500 Server Error.  Seriously?  Seriously.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-178479595312685365?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/178479595312685365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=178479595312685365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/178479595312685365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/178479595312685365'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/11/rogers-really-sucks.html' title='Rogers really sucks'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1764405044353874606</id><published>2007-11-05T03:44:00.000-05:00</published><updated>2007-11-05T03:46:42.046-05:00</updated><title type='text'>Rogers sucks</title><content type='html'>I hate Rogers.&lt;br /&gt;&lt;br /&gt;Just &lt;a href="http://www.google.ca/search?hl=en&amp;q=i+hate+rogers&amp;meta="&gt;casting another vote&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(Yup, "We are currently experiencing system problems. Please try again later, or call one of our Rogers e-Care repesentatives at 1-877-343-5745."  Nice use of the word "currently", to imply there's some sort of ephemerality to the situation.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1764405044353874606?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1764405044353874606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1764405044353874606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1764405044353874606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1764405044353874606'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/11/rogers-sucks.html' title='Rogers sucks'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6244669888551747077</id><published>2007-10-29T03:25:00.001-04:00</published><updated>2007-10-29T03:36:19.595-04:00</updated><title type='text'>Random Thoughts from a Weekend in Cleveland</title><content type='html'>Congratulations &lt;a href="http://www.rickandlindsay.com/"&gt;Rick and Lindsay&lt;/a&gt; on a year of marriage and your official start as a Catholic couple this past weekend.&lt;br /&gt;&lt;br /&gt;The wedding mass was very nice and was followed up with some very heartfelt toasts at the reception.  In particular, I was impressed by the toast of the best man -- Rick's high school buddy, Mike Bishara -- who told of having to relay the details of Lindsay's almost-four-hour-long triple-overtime Harvard game to a smitten Rick when his internet went down.&lt;br /&gt;&lt;br /&gt;Congrats, you two - you'll have to post an update when you have your wedding photos ready for public distribution!&lt;br /&gt;&lt;br /&gt;Colin&lt;br /&gt;&lt;br /&gt;PS - Security theatre took place at the Cleveland airport as TSA officials tried to convert millilitres to ounces.  "75 ml.   It don't look too big."  "Au floristat?"  "Is this 3.4 ounces?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6244669888551747077?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6244669888551747077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6244669888551747077' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6244669888551747077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6244669888551747077'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/10/random-thoughts-from-weekend-in.html' title='Random Thoughts from a Weekend in Cleveland'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6912283007866633172</id><published>2007-09-19T08:30:00.000-04:00</published><updated>2007-09-19T14:32:14.542-04:00</updated><title type='text'>Heard at NEO</title><content type='html'>At Microsoft's New Employee Orientation, they were impressing upon us the diversity of the company.   "What country are you from?"&lt;br /&gt;&lt;br /&gt;"Canada"&lt;br /&gt;"Trinidad and Tobago"&lt;br /&gt;"Iran"&lt;br /&gt;"England"&lt;br /&gt;"Quebec"&lt;br /&gt;&lt;br /&gt;...about half the room got the joke, but not the presenter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6912283007866633172?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6912283007866633172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6912283007866633172' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6912283007866633172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6912283007866633172'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/09/heard-at-neo.html' title='Heard at NEO'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-359681469167497508</id><published>2007-09-17T00:55:00.000-04:00</published><updated>2007-09-17T01:11:48.457-04:00</updated><title type='text'>The Joy of Being a Globetrotting UW Co-op Student</title><content type='html'>Money is a giant pain in the ass - why can't it all be a lot smoother? &lt;br /&gt;&lt;br /&gt;I'm writing this because I'm sitting down to pay the month's bills.  Comcast, Rogers, Puget Sound Energy, BRE Trails, Visa cards, and ISTA, oh my!  And, of course, Rogers's website is down.  Again.&lt;br /&gt;&lt;br /&gt;When (if?) I successfully pay these bills, I will get to go forth and scatter bills for the amount paid via social money management tools, such as my favourite, BillMonk.&lt;br /&gt;&lt;br /&gt;In the two years that we've used BillMonk to track the shared expenses in our households, I've racked up $46,723.83 of "stuff".  That's not necessarily $46,723.83 of expenses, mind you.  Some of it is, of course: rent, utilities, entertainment, food, furniture.  But some of it is just paperwork to shuffle debt from person A to person B to make settling up easier -- these line entries can add up, as person-to-person lines of credit often get close to four figures during a semester.  Some of it is neither expense nor accounting acrobatics:  BillMonk is currently tracking multiple security deposits that I jointly hold with four other people totalling $1,921.16.&lt;br /&gt;&lt;br /&gt;Why do we even have to think about this stuff?  Where's the infrastructure to allow multiple people to commit to expenses jointly and seamlessly?  Failing that, where's the infrastructure for people to autoapprove bank transfers to specified individuals (not corporations) up to specific dollar amounts?&lt;br /&gt;&lt;br /&gt;The Pareto principle likely excludes me from getting the kind of banking and money management scenario I want, since I suspect my experience is pretty far outside the bell curve of normal.  Relocating (with new housemate, nonetheless) every four months has its downsides.  I can't wait for this to be over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-359681469167497508?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/359681469167497508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=359681469167497508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/359681469167497508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/359681469167497508'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/09/joy-of-being-globetrotting-uw-co-op.html' title='The Joy of Being a Globetrotting UW Co-op Student'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5024131577500431366</id><published>2007-09-12T23:37:00.000-04:00</published><updated>2007-09-12T23:40:27.920-04:00</updated><title type='text'>Comments on Amazon</title><content type='html'>One great thing about the Internet is you can rarely tell strictly from the text whether a person is being gut-wrenchingly sincere or devilishly deadpan.  Take, for example, this review for the boardbook Guess How Much I Love You:&lt;br /&gt;&lt;blockquote&gt;A minor concern: The characters are Little Nutbrown Hare and Big Nutbrown Hare. For those of us with mild dyslexia, it is too easy to refer to them as Little Brown Nut-Hair and Big Brown Nut-Hair, which is very different and considerably changes the tone of the story. I accept that this may be my personal problem, and I don't even believe it is appropriate to share it in in this format.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5024131577500431366?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5024131577500431366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5024131577500431366' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5024131577500431366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5024131577500431366'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/09/comments-on-amazon.html' title='Comments on Amazon'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-31129367895520300</id><published>2007-09-02T02:39:00.000-04:00</published><updated>2007-09-02T02:45:42.270-04:00</updated><title type='text'>Win the battle, lose the war</title><content type='html'>I've chatted in the past year with my father and Dan about merchants asking for photo ID when making Visa purchases.  Turns out, this is against Visa's &lt;a href="http://usa.visa.com/download/merchants/rules_for_visa_merchants.pdf"&gt;Rules for Merchants&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, while making a purchase today, I refused the clerk's request for photo ID.  In his ignorance of the rules, he would not permit the transaction to go through.  However, after escalating the issue to his manager, I successfully made the purchase without showing ID.&lt;br /&gt;&lt;br /&gt;On the downside, this was done in the US.  And to get in to the US, I was incorrectly asked to present my fingerprints and smiling face for the record.  As I didn't have the balls to challenge Mr. R. Chai, the friendly customs officer, my biometric data is now sitting in one more database.  Thanks, Department of Homeland Security -- that's one more terrorist that will never slip through your borders!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-31129367895520300?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/31129367895520300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=31129367895520300' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/31129367895520300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/31129367895520300'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/09/win-battle-lose-war.html' title='Win the battle, lose the war'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4433227860313156883</id><published>2007-08-17T07:58:00.000-04:00</published><updated>2007-08-17T08:05:24.783-04:00</updated><title type='text'>Customer service done right</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nickelbrook.com/"&gt;Better Bitters Brewery&lt;/a&gt;&lt;blockquote&gt;Despite being a small microbrewery, Better Bitters (maker of the tasty Nickel Brook Green Apple Pilsner) was eager to give us a tour.  Or rather, the owner, who was a very affable guy named John Romano, was eager.  Despite being busy, John walked us through the process they used to create great beers and even included a sampling of how beer tastes at various stages in the production process.  Consummate small business attention to the customer throughout -- we've since finished the six cases we picked up from him.  I wonder if they have Nickel Brook in the States? ;) &lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.feedjit.com"&gt;Feedjit&lt;/a&gt;&lt;blockquote&gt;Feedjit is some new whiz bang web 2.0 thang. What kind of thang in particular is not important.&lt;p&gt;What is important is that after e-mailing the creator about a bug, I got a response confirming the existence of the bug and apologizing for it within 2 minutes. The bug was fixed within an hour.  I received an email from the creator notifying me within an hour of that.  Impressive!&lt;/blockquote&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/7021685-4433227860313156883?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4433227860313156883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4433227860313156883' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4433227860313156883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4433227860313156883'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/customer-service-done-right.html' title='Customer service done right'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7563725782475358263</id><published>2007-08-15T15:12:00.000-04:00</published><updated>2007-08-15T15:26:08.710-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cardspace'/><category scheme='http://www.blogger.com/atom/ns#' term='cookieinjector'/><title type='text'>CookieInjector, part 4</title><content type='html'>Having demonstrated how CookieInjector &lt;a href="http://cldellow.blogspot.com/2007/08/cookieinjector-part-3.html"&gt;works on a day-to-day basis&lt;/a&gt;, the next question is: how do you tell CookieInjector what your passwords are?  How do you get that snazzy Cookie Monster card?&lt;br /&gt;&lt;br /&gt;By using the CookieInjector Configuration tool, as demonstrated in the following screencast.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://cldellow.com/files/CookieInjector_Config.wmv"&gt;&lt;img src="http://cldellow.com/images/cookieinjector_config_demo.jpg"&gt;&lt;/a&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7563725782475358263?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7563725782475358263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7563725782475358263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7563725782475358263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7563725782475358263'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/cookieinjector-part-4.html' title='CookieInjector, part 4'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7383422542871235841</id><published>2007-08-14T13:15:00.000-04:00</published><updated>2007-08-14T13:28:31.937-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cardspace'/><category scheme='http://www.blogger.com/atom/ns#' term='cookieinjector'/><title type='text'>CookieInjector, part 3</title><content type='html'>I've got a first cut of an end-to-end CookieInjector session - check out a sample video below, where I log in to Gmail and Quest (my university's student management system).  When logging in to Gmail, I actually log in twice, to demonstrate that separate sessions are being created.&lt;br /&gt;&lt;br /&gt;Note that the Cookie Jar claim value holds all the cookies needed to log in, but the display value is simply a hash of the cookies.  It's basically a placebo for the user so they know that &lt;i&gt;something&lt;/i&gt; happened.&lt;br /&gt;&lt;br /&gt;When logging in to Quest, I skip the preview/retrieve steps and do a one-click log in.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://cldellow.com/files/cookieinjector_gmail_quest.wmv"&gt;&lt;img src="http://cldellow.com/images/cookieinjector_demo_wmv.jpg"&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;This demo should illustrate the concrete improvements that CookieInjector and CardSpace give us:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;consistent UI for authentication to different websites&lt;/li&gt;&lt;li&gt;centralized tracking of authentication&lt;br /&gt;&lt;ul&gt;&lt;li&gt;...you can't see it, but my IP/STS records every time I authenticate to a specific service&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;and, of course, you never need to enter a primary, long-lived password at a web site!&lt;ul&gt;&lt;li&gt;...this has other ramifications, too:  if I want to allow my housemates access to the online portals that show our internet, cable, and power bills, I can do that by granting them their own cards that are allowed to authenticate to a subset of my accounts&lt;/li&gt;&lt;/ul&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/7021685-7383422542871235841?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7383422542871235841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7383422542871235841' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7383422542871235841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7383422542871235841'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/cookieinjector-part-3.html' title='CookieInjector, part 3'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6147910668293262006</id><published>2007-08-12T23:37:00.000-04:00</published><updated>2007-08-12T23:40:13.873-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookieinjector'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='ece493'/><title type='text'>ECE 493: Security</title><content type='html'>While studying for my ECE 493 exam, I accidentally stumbled on to two large security holes at a major multinational utility provider and a major multinational bank.&lt;br /&gt;&lt;br /&gt;I wouldn't care, but c'mon, with revenues like they have, surely they can afford a code review or two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6147910668293262006?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6147910668293262006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6147910668293262006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6147910668293262006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6147910668293262006'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/ece-493-security.html' title='ECE 493: Security'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7038355453128170936</id><published>2007-08-12T15:59:00.001-04:00</published><updated>2007-08-12T16:17:09.121-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookieinjector'/><title type='text'>CookieInjector, part 2</title><content type='html'>CookieInjector can now log me in to Bank of America, Bloglines, DreamHost, Facebook, Gmail, RBC and TD Canada Trust.  I am deeply indebted to Eric Lawrence for his &lt;a href="http://www.fiddler2.com"&gt;Fiddler &lt;/a&gt;HTTP/S traffic sniffer.&lt;br /&gt;&lt;br /&gt;One major lesson I have learned:  banks have convoluted, mostly-broken web sites.&lt;br /&gt;&lt;br /&gt;So far, I just have two of the components functioning:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The library component to securely store passwords, authenticate to sites, and return the list of cookies&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The browser helper object to recognize when we are at a site for which my system can handle authentication&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Still to do:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Extend the BHO to invoke CardSpace using my CodeCompete SSL cert&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write an IP/STS that shreds incoming requests, invokes the appropriate authentication, and returns the cookie&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Now that CardSpace has an official icon, supported webpages automatically get the following overlay when the more secure form of authentication is available:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://cldellow.com/images/bho.jpg"&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7038355453128170936?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7038355453128170936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7038355453128170936' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7038355453128170936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7038355453128170936'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/cookieinjector-part-2.html' title='CookieInjector, part 2'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-529797134874312944</id><published>2007-08-10T00:08:00.001-04:00</published><updated>2007-08-10T00:25:55.876-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cardspace'/><category scheme='http://www.blogger.com/atom/ns#' term='cookieinjector'/><title type='text'>CookieInjector: The Idea</title><content type='html'>Three things you may know about me:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;My UW password (and thus, my GMail, TD Canada Trust, Bank of America, and cldellow.com passwords) were recently exposed by the &lt;a href="http://cldellow.blogspot.com/2007/08/shame.html"&gt;ineptitude&lt;/a&gt; of my &lt;a href="http://ist.uwaterloo.ca/security/vulnerable/20070801.shtml"&gt;university&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I dislike &lt;a href="http://cldellow.blogspot.com/2007/07/security-through-more-fucking-work-for.html"&gt;multi-factor authentication schemes&lt;/a&gt; that have become popular at banks recently.  They aren't truly multi-factor and they result in more work for me.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;CodeCompete, which started in &lt;a href="http://cldellow.blogspot.com/2007/05/codecompete-goes-live.html"&gt;May&lt;/a&gt;, is now &lt;a href="http://codecompete.ca/archive/2007/05/30/15.aspx"&gt;finished&lt;/a&gt;, so I have a spare SSL certificate kicking around.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Granted, the widespread nature of (1) is my own fault.  I trusted my university not to expose my password, and thus I was sloppy and used the same password in multiple places.  Bottom line: accidents happen, passwords get leaked. Plan for it.&lt;br /&gt;&lt;br /&gt;So, once bitten, twice shy. . .&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://cldellow.com/images/cookieinjector_big.png"&gt;&lt;img src="http://cldellow.com/images/cookieinjector.png"&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;The above is my vision of a tool I've named the Cookie Injector.  It is composed of two parts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;An IP/STS residing on my machine, that knows all of my passwords and has the ability to automatically talk to web-based authentication servers (e.g., google.com, uwaterloo.ca) to exchange my passwords for HTTP session cookies; and&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A C#.NET application that can invoke CardSpace to retrieve a token from the above IP/STS, extract the session cookies, and inject them into Internet Explorer on the given computer&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Ideally, this will allow me to:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;have different passwords for google.com, microsoft.com, tdcanadatrust.com, bankofamerica.com, and uwaterloo.ca; and&lt;/li&gt;&lt;br /&gt;&lt;li&gt;not remember a single password, ever; which means:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'll never type a high-value or long-lived password into an untrusted machine&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'll have complex, hard-to-remember passwords&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;...which can change on a weekly basis, automatically&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;I'll be tinkering with this over the next month or so, and will publish any interesting progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-529797134874312944?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/529797134874312944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=529797134874312944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/529797134874312944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/529797134874312944'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/cookieinjector-idea.html' title='CookieInjector: The Idea'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1909461727219390107</id><published>2007-08-09T12:02:00.000-04:00</published><updated>2007-08-09T12:04:16.166-04:00</updated><title type='text'>Shame</title><content type='html'>UW has a tool called Kiwi that allows you to authenticate to federated systems as a UW student.&lt;br /&gt;&lt;br /&gt;Unfortunately, Kiwi logs your userid and password to a file when you log in.&lt;br /&gt;&lt;br /&gt;Unfortunately, Kiwi's logs were world-readable.&lt;br /&gt;&lt;br /&gt;Yep, we sure are good at that there CS thang.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1909461727219390107?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1909461727219390107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1909461727219390107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1909461727219390107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1909461727219390107'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/shame.html' title='Shame'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1503425115052664246</id><published>2007-08-05T01:29:00.001-04:00</published><updated>2007-08-05T01:29:31.567-04:00</updated><title type='text'>I got my American tax refund!</title><content type='html'>...21 weeks after I filed it, and right before I start working again.  Thanks for nothing, USA!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1503425115052664246?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1503425115052664246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1503425115052664246' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1503425115052664246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1503425115052664246'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/08/i-got-my-american-tax-refund.html' title='I got my American tax refund!'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1394201645821169858</id><published>2007-07-31T18:48:00.000-04:00</published><updated>2007-07-31T18:50:32.538-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cs452'/><category scheme='http://www.blogger.com/atom/ns#' term='realtime'/><title type='text'>I make a lot of graphs...</title><content type='html'>How do you know your OS has priority inversion problems?  You draw a graph.  Don't tell Brad!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cldellow.com/files/graph.gif"&gt;&lt;img src="http://cldellow.com/files/graph_small.gif"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1394201645821169858?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1394201645821169858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1394201645821169858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1394201645821169858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1394201645821169858'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/07/i-make-lot-of-graphs.html' title='I make a lot of graphs...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1242018927122591345</id><published>2007-07-31T13:59:00.000-04:00</published><updated>2007-07-31T14:02:00.984-04:00</updated><title type='text'>Life's a bitch</title><content type='html'>Is the title of this blog sexist?&lt;br /&gt;&lt;br /&gt;I don't know, and neither would anyone else in the SE faculty, apparently.&lt;br /&gt;&lt;br /&gt;I just received my fourth (and final!) workterm report back from marking.&lt;br /&gt;&lt;br /&gt;On Page 1, Reviewer A notes in pencil that my use of the politically-correct term "he or she" is awkward and has no place in a technical document.&lt;br /&gt;&lt;br /&gt;On Page 5, Reviewer B notes in pen that my use of the term "man-month" is sexist and I should strive to find a gender-neutral term.&lt;br /&gt;&lt;br /&gt;Fuck it, I passed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1242018927122591345?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1242018927122591345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1242018927122591345' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1242018927122591345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1242018927122591345'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/07/lifes-bitch.html' title='Life&apos;s a bitch'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2843461728972068964</id><published>2007-07-29T22:35:00.001-04:00</published><updated>2007-07-29T22:48:23.489-04:00</updated><title type='text'>CS452: Real-time Operating Systems</title><content type='html'>I've spent far too much of the last three months in the trains lab (well, also in the phones lab programming &lt;a href="http://www.math.uwaterloo.ca/mfcf/operations/TourOld/TourPics/nortelswitch.jpg"&gt;this monstrosity&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;What were we doing in the trains lab? Writing a &lt;a href="http://en.wikipedia.org/wiki/Microkernel"&gt;microkernel&lt;/a&gt; operating system for the &lt;a href="http://en.wikipedia.org/wiki/X86"&gt;x86 architecture&lt;/a&gt; (what most people have inside their computers). This was different from ECE354, where we wrote a &lt;a href="http://en.wikipedia.org/wiki/Monolithic_kernel"&gt;monolithic&lt;/a&gt; operating system for the &lt;a href="http://en.wikipedia.org/wiki/68k"&gt;M68K architecture&lt;/a&gt; (the ones that powered early Macintosh PowerPCs).&lt;br /&gt;&lt;br /&gt;The course is broken down into 7 assignments: 1 introductory one, 3 where you build the OS, and 3 where you write user programs to run on the OS to track trains and do something cool with them. Our final project was a 911 dispatch service that estimate train arrival times at callee locations. The final thing was on the order of 20,000 lines of code and took several hundred hours of development time.&lt;br /&gt;&lt;br /&gt;Since two our of three of the group members were MSFT interns, we stole a few motifs from our corporate masters, inclulding this common sight during the early days of coding:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cldellow.com/files/bsod.jpg"&gt;&lt;img src="http://cldellow.com/files/bsod_small.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Our console window:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cldellow.com/files/console.JPG"&gt;&lt;img src="http://cldellow.com/files/console_small.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The track:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cldellow.com/files/track.jpg"&gt;&lt;img src="http://cldellow.com/files/track_small.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of our group members, Nima, wrote some beautiful code that applied artificial intelligence (in the form of &lt;a href="http://en.wikipedia.org/wiki/Bayesian_network"&gt;Bayesian networks&lt;/a&gt;) to give us a very robust, accurate train tracking subprocess that could even learn about the trains it was tracking over time. This &lt;a href="http://cldellow.com/files/trains.wmv"&gt;video shows our OS tracking 7 trains simultaneously&lt;/a&gt; -- which is pretty damned impressive.&lt;br /&gt;&lt;br /&gt;Real-time was a lot of work, but definitely one of the most satisfying courses I've taken. I attribute both to its "messiness" -- interacting with real-world, unreliable systems made the course a lot more difficult, but also a lot more rewarding.&lt;br /&gt;&lt;br /&gt;That's not to say there weren't several times that I ended up saying "I hate my life" (usually, this would be during a 30-hour marathon of coding/debugging.)  And I'm not the only one -- prior students have &lt;a href="http://buddy.bbsg.ca/pics/cs452/pos-code.txt"&gt;composed songs &lt;/a&gt;to express their frustration with the course requirements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2843461728972068964?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2843461728972068964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2843461728972068964' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2843461728972068964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2843461728972068964'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/07/cs452-real-time-operating-systems.html' title='CS452: Real-time Operating Systems'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-8802717139770366724</id><published>2007-07-16T11:28:00.000-04:00</published><updated>2007-07-16T11:29:27.174-04:00</updated><title type='text'>Ah, the long-beaked echidna</title><content type='html'>&lt;blockquote&gt;"Fears that one of the world’s rarest creatures had been driven to extinction have been allayed by a tribesman who told conservationists he had recently eaten one."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-8802717139770366724?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/8802717139770366724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=8802717139770366724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/8802717139770366724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/8802717139770366724'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/07/ah-long-beaked-echidna.html' title='Ah, the long-beaked echidna'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7319841919748143904</id><published>2007-07-09T03:03:00.000-04:00</published><updated>2007-07-09T03:35:31.954-04:00</updated><title type='text'>Richard M Stallman</title><content type='html'>RMS spoke at Waterloo recently.  His topic:  the role of copyright in light of advances in computer networks.&lt;br /&gt;&lt;br /&gt;RMS is an engaging speaker.  One thing I noticed immediately was his lack of hesitation - no ums or ahs to be heard anywhere during the 90 minute talk.  He pointed out many flaws in arguments for prolonged copyright, chiefly that there is very little marginal incentive for the artist -- they're liable to be dead and won't care if their works are copyrighted.&lt;br /&gt;&lt;br /&gt;That said, RMS is also a dangerous speaker.  Not because his views don't mesh with mine, but because he doesn't play fair:  he used rhetoric better suited to Internet trolls than to someone who has contributed so much to the computer science community.&lt;br /&gt;&lt;br /&gt;Lines in particular that stood out:&lt;br /&gt;&lt;br /&gt;- he asserted that Microsoft put in a backdoor for the NSA in Windows, circa 1999.  This was widely debunked, including by noted cryptologist Bruce Schneier.&lt;br /&gt;&lt;br /&gt;- he called the United States government a terrorist organization.&lt;br /&gt;&lt;br /&gt;- he claimed Linus Torvalds wasn't interested in the rights and freedoms of users (while Linus doesn't see sufficient value in GPL v3 over GPL v2 to change the kernel licensing terms, surely that alone doesn't merit such a blanket statement?)&lt;br /&gt;&lt;br /&gt;- he redefined "Digital Rights Management" as "Digital Restrictions Management"&lt;br /&gt;&lt;br /&gt;- he suggested it should be a crime to cease supporting I/O devices&lt;br /&gt;&lt;br /&gt;He also used the standard communications techniques -- negative, anthropomorphic words when describing things he didn't like (kill, strangle, tighten the chains).&lt;br /&gt;&lt;br /&gt;Beyond the words, there was the content of his lecture, which seemed about on par for what I have read about RMS.&lt;br /&gt;&lt;br /&gt;Firstly, he spent about fifteen minutes discussing why Linux should be called GNU/Linux.  This part contained the accusation that Linus doesn't care about users' freedoms as well as calling the kernel only a smart part of an operating system.  While it is technically true that the kernel is but one piece of the overall system, calling a 6,000,000 line piece of code "small" was ironically petty.&lt;br /&gt;&lt;br /&gt;He then discussed his plans for copyright reform, motivating it through frequent reference to occasions when artists were not protected by copyright, but rather were harmed by their production company wielding a contract over their head.  I fail to see how shortening the duration of copyright protects people from signing dangerously one-sided contracts.&lt;br /&gt;&lt;br /&gt;He also proposed that copyright basically not be enforced for non-commercial, person-to-person sharing of music and videos.  He claimed this would not harm Hollywood because &lt;br /&gt;&lt;br /&gt;a) theatres and airlines, being commercial entities, would still pay royalties; &lt;br /&gt;b) Hollywood's costs are artificially inflated (see Hollywood accounting on Wikipedia for more)&lt;br /&gt;c) most Hollywood movies are crap, and use expensive special effects to cover up this fact.  If movies earned less, they'd be forced to be less crap.  I'm quoting him when I use the word crap.&lt;br /&gt;&lt;br /&gt;I question the validity of the statement that says royalties will not be harmed.  The triple release format of movies is what makes them profitable -- going first to theatres, then to rentals, then on sale.  Since RMS advocates replacing advertising budgets with people advertising for the company -- by playing the work of art to their friends -- I assume this triple release model must be done away with.  Instead, the work will be released to theatres and to the public simultaneously.&lt;br /&gt;&lt;br /&gt;Which, in my mind, means people will set up free, public screenings with projectors.  Which means no one will go to the theatres.  Which means no income for the movie.  (Unless, ironically, it used lots of special effects which would be best enjoyed in a theatre.)&lt;br /&gt;&lt;br /&gt;Overall, the audience of some 300 students seemed to enjoy his talk.  I enjoyed his alternative views but he came off as too much of a demagogue for me to take his views seriously.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7319841919748143904?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7319841919748143904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7319841919748143904' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7319841919748143904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7319841919748143904'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/07/richard-m-stallman.html' title='Richard M Stallman'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6889466111956501337</id><published>2007-07-09T02:49:00.000-04:00</published><updated>2007-07-09T03:02:16.402-04:00</updated><title type='text'>Security through more-fucking-work-for-the-user</title><content type='html'>Bank of America and TD Canada Trust have recently started using security questions to authenticate users in online sessions.&lt;br /&gt;&lt;br /&gt;If you're not familiar with these, they go along the lines of this:&lt;br /&gt;&lt;br /&gt;"Warning.  We have detected you are trying to access your bank account.  Please enter the name of your best man."&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;"Warning.  We have detected you are trying to withdraw money.  Please enter the city you were married in."&lt;br /&gt;&lt;br /&gt;These questions are not only poorly chosen (thanks, BoA - lots of diversity with the wedding questions), they are often fairly weak as well (what university did you attend?).&lt;br /&gt;&lt;br /&gt;When it comes down to it, they're still shared secrets.&lt;br /&gt;&lt;br /&gt;And let's face it - this is a security measure meant to save us after a nefarious person has commandeered the following pieces of information:&lt;br /&gt;&lt;br /&gt;1) the name of your bank&lt;br /&gt;2) your username at the bank&lt;br /&gt;3) your password for that account&lt;br /&gt;&lt;br /&gt;The most likely way this person got my information was a keylogger they've quietly installed on my machine.  If they can install software on my machine, they can just redirect me to a man-in-the-middle attack, and presto, my cocoon of security is gone.&lt;br /&gt;&lt;br /&gt;But, "wait!" you cry, "it's not so bad!  An MITM attack would show up as a phishy URL".&lt;br /&gt;&lt;br /&gt;Unless they poisoned my DNS -- they have software running on my box, remember?&lt;br /&gt;&lt;br /&gt;"But they couldn't spoof the SSL!"&lt;br /&gt;&lt;br /&gt;Sure they could.  They have software running on my box.  They'll just whip up a key and shove it in the trusted store.  They can even add a new Thawte certificate to sign it, while they're at it.&lt;br /&gt;&lt;br /&gt;"But wait! You'd notice that they were asking you for your security question again!  Since security questions are only used to verify suspicious activity, surely this would tip you off!"&lt;br /&gt;&lt;br /&gt;Are you kidding me?  In today's click-through world, no one thinks twice before replying to a prompt.  And if you bothered to question it, you'd notice this little gem: "Notice:  In response to a recent security analysis, we have flushed our cache of authentication and credential information.  You may be prompted to enter your security question again.  If you have any concerns, please call Bank of America at 1-(800)-EVIL-GUY."&lt;br /&gt;&lt;br /&gt;The average user's eyes would glaze over, and they'd mindlessly tap in all their secrets.&lt;br /&gt;&lt;br /&gt;I really, really can't wait until CardSpace becomes more accepted.  In the meantime, I'd rather not have the hassle of extra hoops that provide a very thin veneer of security.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6889466111956501337?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6889466111956501337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6889466111956501337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6889466111956501337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6889466111956501337'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/07/security-through-more-fucking-work-for.html' title='Security through more-fucking-work-for-the-user'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7017419075817474759</id><published>2007-06-29T00:31:00.001-04:00</published><updated>2007-06-29T00:48:53.746-04:00</updated><title type='text'>Speakers on campus</title><content type='html'>Attending UW has been a great opportunity to hear some very influential speakers in the world of computer science, including:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Bill_Gates"&gt;Bill Gates&lt;/a&gt;, on the future of computing&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Richard_Stallman"&gt;Richard Stallman&lt;/a&gt;, on the future of copyright&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"&gt;Andy Tanenbaum&lt;/a&gt;, on the future of kernel design&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Vinton_Cerf"&gt;Vint Cerf&lt;/a&gt;, on the future of the Internet&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Bjarne_Stroustrup"&gt;Bjarne Stroustrup&lt;/a&gt;, on the future of C++&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure what it says about our industry that people only ever want to talk about its future, and never about its current state.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7017419075817474759?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7017419075817474759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7017419075817474759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7017419075817474759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7017419075817474759'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/06/speakers-on-campus.html' title='Speakers on campus'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7558972213006061542</id><published>2007-06-28T12:24:00.001-04:00</published><updated>2007-06-28T12:25:06.752-04:00</updated><title type='text'>Tim Sherwood, CS prof at UC Santa Barbara</title><content type='html'>&lt;blockquote&gt;"... [the] human side of the equation is not understood to people outside the field ... they think we're all Monty Python quoting, Star Trek loving, Cheetos eating, caffeine addicted, girlfriendless freaks ... when in fact most CS people barely eat any Cheetos."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7558972213006061542?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7558972213006061542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7558972213006061542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7558972213006061542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7558972213006061542'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/06/tim-sherwood-cs-prof-at-uc-santa.html' title='Tim Sherwood, CS prof at UC Santa Barbara'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6390161172512394159</id><published>2007-05-08T05:56:00.000-04:00</published><updated>2007-05-08T06:03:03.079-04:00</updated><title type='text'>Last Work Term Report Ever!</title><content type='html'>My &lt;a href="http://cldellow.com/images/wtr4.png"&gt;last work term report&lt;/a&gt; ever is done.  Assuming it passes, that is.  And why shouldn't it?  It's a beautiful piece of crap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6390161172512394159?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6390161172512394159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6390161172512394159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6390161172512394159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6390161172512394159'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/05/last-work-term-report-ever.html' title='Last Work Term Report Ever!'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7067921916334302355</id><published>2007-05-07T12:34:00.000-04:00</published><updated>2007-05-07T12:35:48.041-04:00</updated><title type='text'>CodeCompete Goes Live</title><content type='html'>University of Waterloo student?  Check.&lt;br /&gt;&lt;br /&gt;Want free stuff?  Check.&lt;br /&gt;&lt;br /&gt;Register at &lt;a href="http://codecompete.ca/"&gt;CodeCompete&lt;/a&gt; in time for the early bird drawing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7067921916334302355?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7067921916334302355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7067921916334302355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7067921916334302355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7067921916334302355'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/05/codecompete-goes-live.html' title='CodeCompete Goes Live'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7794986781489264194</id><published>2007-04-16T00:07:00.000-04:00</published><updated>2007-04-16T00:10:10.912-04:00</updated><title type='text'>Microsoft Intern Game 2007 Beta</title><content type='html'>40 hours of no sleep.  40 hours of the &lt;a href="http://interngame.com"&gt;Microsoft Intern Game&lt;/a&gt;'s 2007 beta.&lt;br /&gt;&lt;br /&gt;One word: amazing.  There was &lt;span style="background-color:black; color:black;"&gt;xxxxxxx xxxx&lt;/span&gt;, a &lt;span style="background-color:black; color:black;"&gt;xxxx xxxxxx&lt;/span&gt; of &lt;span style="background-color:black; color:black;"&gt;xxxxxxxxxxxxx&lt;/span&gt;, &lt;span style="background-color:black; color:black;"&gt;xxxx&lt;/span&gt; and my personal favourite: &lt;span style="background-color:black; color:black;"&gt;xxxxxx&lt;/span&gt;.  And so much more.&lt;br /&gt;&lt;br /&gt;Of course, it's all a secret -- but interns at Microsoft this summer should keep an eye out for the hidden invitation to play!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7794986781489264194?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7794986781489264194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7794986781489264194' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7794986781489264194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7794986781489264194'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/04/microsoft-intern-game-2007-beta.html' title='Microsoft Intern Game 2007 Beta'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4399458326445628262</id><published>2007-04-08T05:24:00.000-04:00</published><updated>2007-04-08T06:46:53.683-04:00</updated><title type='text'>Machinima</title><content type='html'>Lately, I've been coming across a number of well-done machinimas.  Machinima is a portmanteau for machine animation -- animations made using computer programs that were designed for consumer entertainment, not multimedia suite. Examples of source programs include the Halo video game series, the Sims and World of Warcraft.&lt;br /&gt;&lt;br /&gt;By well-done, I mean simply that it's astonishing what some artists have created using stock tools plus the odd hack to get additional textures or models.  Yes, it looks like a video game.  World of Warcraft machinimas in particular are limited and can feel very repetitive, since they are by nature set in a fantasy world which must conform to a rigid idea of what fantasy should be.  Most WoW machinimas are music videos for spoof songs -- which seems like a good fit.&lt;br /&gt;&lt;br /&gt;However, as games become more photorealistic and rich 3D models enter the public domain, even better opportunities will present themselves.&lt;br /&gt;&lt;br /&gt;I've collected a list of a few good examples of the genre below.  Some were made by people as young as 12.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Instructional Videos&lt;/span&gt;&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=3_Zf3SUc8FU"&gt;Men's Washroom Ettiquette&lt;/a&gt; (the Sims)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=1AE5tfJi3NU"&gt;&amp;quot;Outtakes&amp;quot; from the above&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Music Videos&lt;/span&gt;&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=0atu-itr-aw"&gt;I Loved Her First&lt;/a&gt; (Sims)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=v4Wy7gRGgeA"&gt;Code Monkey&lt;/a&gt; (World of Warcraft)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=IltuqJhftzI"&gt;First of May&lt;/a&gt; (World of Warcraft, NSFW)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=LeZIIgbPzzI"&gt;Sk8er Boi&lt;/a&gt; (Sims)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=qPTnxrZeCWE"&gt;The Internet is for Porn&lt;/a&gt; (World of Warcraft, NSFW) &lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=gZEPyMBDS-k"&gt;I'm Too Sexy&lt;/a&gt; (World of Warcraft)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=MqClKirUz88"&gt;You're Beautiful&lt;/a&gt; (Sims)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=DUy4CrlEtvA"&gt;Mandy&lt;/a&gt; (Sims)&lt;br /&gt;* &lt;a href="http://www.youtube.com/watch?v=SN546pMybGg"&gt;Jesse's Girl&lt;/a&gt; (Sims)&lt;br /&gt;&lt;br /&gt;A side note to those who debate the 'artness' of this, the Washington Post recently ran an &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2007/04/04/AR2007040401721.html"&gt;article&lt;/a&gt; that claims art is... in the eye of the beholder.  Their test?  They had &lt;a href="http://en.wikipedia.org/wiki/Joshua_Bell"&gt;Joshua Bell&lt;/a&gt; and his $3,500,000 Stradivarius violin play on the subway during rush hour.  He earned 32 dollars and change from all the passersby -- less than a third the cost of a ticket to one of his performances; six people stopped to listen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4399458326445628262?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4399458326445628262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4399458326445628262' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4399458326445628262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4399458326445628262'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/04/machinima.html' title='Machinima'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2308713332897910594</id><published>2007-03-30T04:01:00.000-04:00</published><updated>2007-03-30T04:13:17.091-04:00</updated><title type='text'>Tragically, I've gone deaf</title><content type='html'>I went to the Tragically Hip's concert at Moore theatre in Seattle tonight.&lt;br /&gt;&lt;br /&gt;It was a really, really great show and the audience was definitely doing its best to match Gord Downie's energy level.&lt;br /&gt;&lt;br /&gt;Also, you couldn't escape the feeling that everyone in the crowd was an expat.  In every cluster of four or more people, there'd be one with a maple leaf, or a hockey jersey, or something.  &lt;br /&gt;&lt;br /&gt;Oh, and while waiting for an encore, the audience broke into a loud O Canada.  I think tonight was the first time I've actually heard an anthem truly being sung -- you could practically feel the groupthink in the room.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2308713332897910594?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2308713332897910594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2308713332897910594' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2308713332897910594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2308713332897910594'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/tragically-ive-gone-deaf.html' title='Tragically, I&apos;ve gone deaf'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4303688754097377854</id><published>2007-03-28T23:39:00.000-04:00</published><updated>2007-03-28T23:42:11.142-04:00</updated><title type='text'>Metapedia</title><content type='html'>Wikipedia's a great resource.  Usually, it's a good starting point for research.  And the bits it's missing are usually called out with "stub templates".&lt;br /&gt;&lt;br /&gt;I never realized how childish I was until, the other day, when Sarah was researching &lt;a href="http://en.wikipedia.org/wiki/Phalloplasty"&gt;phalloplasty&lt;/a&gt;, I burst out laughing.  Ah, metahumour.  The best kind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4303688754097377854?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4303688754097377854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4303688754097377854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4303688754097377854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4303688754097377854'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/metapedia.html' title='Metapedia'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2151423057063047306</id><published>2007-03-25T10:14:00.000-04:00</published><updated>2007-03-25T10:26:16.574-04:00</updated><title type='text'>Cohen on Howard: Final Thoughts</title><content type='html'>So, there you have it.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If I were the person at Microsoft responsible for allowing books to be released I would not have approved the book by Michael Howard and David LeBlanc.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In essence, this is a book about how Microsoft has screwed up security in their programming practices over the years and how they are trying to fix it.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;It also implies accountability, which is, as far as I can tell, a new thing at Microsoft in terms of software development.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;That's right, Microsoft does not want backward compatability, but we all knew that a long time ago.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;While this is a good business model, it is a poor information protection approach. Which may be the real reason that Microsoft does so poorly in this arena. They tell us that the most valuable part of a bank is its vault - did they miss the information age somewhere? They probably never worked on bank security. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The book is almost 800 pages, by the way, and it does have a solid 40 pages of worthwhile content, not a bad bloat ratio for some software products.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This is consistent with their expressed view of applying theory where appropriate - that you should never do so. That's part of why they will continue to make big stupid mistakes from time to time. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[...] but careful is not a word I would attribute to the authors of this book in their writing style. They approach the issues with reckless abandon, and that's entertaining at a minimum.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In Part 3, my hopes were dashed. Yes, part 2 continues in part 3. The separation is apparently only a trick to meet an administrative requirement of maximum section sizes, or perhaps a limitation of Word based on an integer overrun.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I think that the lack of time and attention to the underlying issues, the lack of organization and models, and the inconsistencies and poor advice are all related to spending too little time thinking through the issues and organization of the book. This is reflective of the same corporate culture that led to the problems with security at Microsoft and in other software vendors.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A better name might be something like: "How poor quality programmers at Microsoft have produced hundreds of instances of the same 10 big mistakes in their code, and how they can do their jobs a little bit better". &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Is that the state of discussion in the software engineering community?  Cohen's writing is frequently hindered by poor logic and unchecked facts.  There seemed to have been more than a few ad hominem attacks on the authors simply because they worked for Microsoft.&lt;br /&gt;&lt;br /&gt;In my view, there were two good criticisms to come from his review:&lt;br /&gt;&lt;br /&gt;1 - the book is poorly organized&lt;br /&gt;2 - the section on input checking proposes regexes as the be-all, end-all for input validation&lt;br /&gt;&lt;br /&gt;It seems to me that could have been said much more succinctly than 5,400 words.  Perhaps a chunk of the words freed up by being more direct could have been used to educate others on the areas he felt were poorly treated.&lt;br /&gt;&lt;br /&gt;Disappointing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2151423057063047306?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2151423057063047306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2151423057063047306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2151423057063047306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2151423057063047306'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-final-thoughts.html' title='Cohen on Howard: Final Thoughts'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-3464449709016048811</id><published>2007-03-25T10:07:00.000-04:00</published><updated>2007-03-25T10:14:11.214-04:00</updated><title type='text'>Cohen on Howard: Chapter 24</title><content type='html'>&lt;i&gt;Chapter 24 covers writing security documentation and error messages.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;But the problems in this chapter start early. On the second page they tell us not to use security through obscurity, after having told us in the prior chapter not to tell attackers anything.&lt;/blockquote&gt;&lt;br /&gt;This is nitpicking on the part of Cohen.  Yes, security through obscurity is a doomed tactic.  That doesn't mean attackers shouldn't have to work for every bit of information.  Why should we reduce the attackspace for them by providing them with useful information?&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;A few pages later, they tell us to not reveal anything sensitive in error messages, then give us what they think is a good example of telling the attacker that the password they just tried was wrong only because some of the characters were in the wrong case. Of course this eliminates the value of using case sensitive passwords in the first place, telling the attacker a great deal of useful information by reducing the search space by several orders of magnitude, but they seem to have missed that.&lt;/blockquote&gt;&lt;br /&gt;Cohen seems to not only have missed the thrust of this part of the book, but also seems to be labouring under the false impression that Windows passwords are case-insensitive.&lt;br /&gt;&lt;br /&gt;This section of the chapter is trying to say that error messages should empower legitimate users to solve problems while not giving away useful attack information.  For example, rather than saying "Your password is incorrect." you can say "Your password is incorrect.  Remember, passwords are case sensitive." to hint that the user needs to pay extra attention.  It does not in any way propose that you say "Your password is incorrect.  However, if you uppercased the 3rd letter, it would be correct."&lt;br /&gt;&lt;br /&gt;Cohen's line of reasoning would have made more sense had he complained that they told the user the password was wrong -- thus implying that the username was correct and reducing the attacker's work by several orders of magnitude.  But he seems to have missed that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3464449709016048811?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3464449709016048811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3464449709016048811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3464449709016048811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3464449709016048811'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-24.html' title='Cohen on Howard: Chapter 24'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4118889988710300019</id><published>2007-03-25T10:02:00.000-04:00</published><updated>2007-03-25T10:33:52.938-04:00</updated><title type='text'>Cohen on Howard: Chapter 23</title><content type='html'>&lt;i&gt;Chapter 23 is a grab bag of good practices.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;In general, Cohen's review of this chapter is fair-minded.  He criticizes the grab bag approach as indicative of the book's overall lack of organization.  Seems fair: Chapter 23 is the "General Good Practices" chapter in "Part IV: Special Topics" (not to be confused with "Part II: Secure Coding Techniques" or "Part III: Even More Secure Coding Techniques").&lt;br /&gt;&lt;br /&gt;One thing I must point out from having worked on Microsoft CardSpace is the following line in Cohen's review:&lt;br /&gt;&lt;blockquote&gt;They are right, we should have and use standards that allow representation to be product independent, but of course Microsoft is the company that brings you proprietary versions of everything to keep you from buying other vendor products. &lt;/blockquote&gt;&lt;br /&gt;Microsoft CardSpace works on the WS-* protocols, which are open, freely licensed, and jointly developed by many contributors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4118889988710300019?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4118889988710300019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4118889988710300019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4118889988710300019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4118889988710300019'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-23.html' title='Cohen on Howard: Chapter 23'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-3542798666466299551</id><published>2007-03-25T09:56:00.000-04:00</published><updated>2007-03-25T10:00:56.961-04:00</updated><title type='text'>Cohen on Howard: Chapter 22</title><content type='html'>&lt;i&gt;Chapter 22 covers privacy legislation and concerns that need to be addressed by secure software.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Chapter 22 is about legal issues in privacy, but it doesn't even do that well. All it really does is pile more mindless data on the reader without the context to apply it well.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Chapter 22 outlines US and EU privacy legislation (EU directives on Data Protection, Computer Fraud and Abuse Act, Gramm-Leach Bliley Act, Health Information Portability Accountability Act, and the Children's Online Privacy Protection Act) that might make certain demands on your software.&lt;br /&gt;&lt;br /&gt;It discusses privacy policies for software and websites and how to integrate with the Platform for Privacy Preferences standards.  It warns about making bold statements about privacy that you can't back up because of trust issues with business partners or business processes.&lt;br /&gt;&lt;br /&gt;It is hard to know exactly what Cohen takes offense at in this chapter, but his review seems unjustified.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3542798666466299551?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3542798666466299551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3542798666466299551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3542798666466299551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3542798666466299551'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-22.html' title='Cohen on Howard: Chapter 22'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2606426488464090113</id><published>2007-03-25T09:50:00.000-04:00</published><updated>2007-03-25T09:56:06.757-04:00</updated><title type='text'>Cohen on Howard: Chapter 21</title><content type='html'>&lt;i&gt;Chapter 21 covers securing the software installation experience.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Then comes the really hokey advice. Like that systems administrators should be able to alter application programs. Really? Since when should users who are the "administrators" on their computers be able to alter the binary code of an executable from a vendor?&lt;/blockquote&gt;&lt;br /&gt;Again, Cohen doesn't offer a source for this statement.  I don't believe the chapter said this.&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;And why should we put keys to codes in the system-wide registry file instead of a file that is protected from read by others?&lt;/blockquote&gt;&lt;br /&gt;The chapter doesn't advocate this, either.  Instead, it points out that registry can be a nicer choice than a file since it offers fine-grained access control, per-value, whereas files can only offer security per-file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2606426488464090113?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2606426488464090113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2606426488464090113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2606426488464090113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2606426488464090113'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-21.html' title='Cohen on Howard: Chapter 21'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7034106981875083664</id><published>2007-03-25T09:44:00.000-04:00</published><updated>2007-03-25T09:45:30.917-04:00</updated><title type='text'>Cohen on Howard: Chapter 20</title><content type='html'>&lt;i&gt;Chapter 20 covers performing a security review, mostly via code reviews.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen doesn't have much to say about Chapter 20 -- which is fair, given that the chapter amounts to only 13 pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7034106981875083664?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7034106981875083664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7034106981875083664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7034106981875083664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7034106981875083664'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-20.html' title='Cohen on Howard: Chapter 20'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6067076491047163268</id><published>2007-03-25T09:39:00.000-04:00</published><updated>2007-03-25T09:43:57.427-04:00</updated><title type='text'>Cohen on Howard: Chapter 19</title><content type='html'>&lt;i&gt;Chapter 19 covers penetration testing, including fuzzing techniques.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen grudgingly accepts this chapter, noting that "finally, they start to begin to put a model on the security issue".  Is he perhaps referring to the in depth descriptions of the STRIDE technique, first presented back in Chapter 4?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6067076491047163268?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6067076491047163268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6067076491047163268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6067076491047163268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6067076491047163268'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-19.html' title='Cohen on Howard: Chapter 19'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1210346989916779332</id><published>2007-03-25T09:37:00.000-04:00</published><updated>2007-03-25T09:39:41.140-04:00</updated><title type='text'>Cohen on Howard: Chapter 18</title><content type='html'>&lt;i&gt;Chapter 18 focuses on security features built into the .NET common language runtime.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;In chapter 18 we are told how to write secure .NET code, but of course it ignores all of the previous lessons and tells us to use security features that extend trust from domain to domain without a good basis. Ah well, what should I have expected from the last chapter in this section. They would have done better to cut this whole section out. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, Cohen's review of this chapter is light on specifics but generally pans the chapter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1210346989916779332?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1210346989916779332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1210346989916779332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1210346989916779332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1210346989916779332'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-18.html' title='Cohen on Howard: Chapter 18'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2960623776957485046</id><published>2007-03-25T09:32:00.000-04:00</published><updated>2007-03-25T09:36:18.545-04:00</updated><title type='text'>Cohen on Howard: Chapter 17</title><content type='html'>&lt;i&gt;Chapter 17 covers preventing denial of service attacks against common resources.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;It also gives us a really bad example of using software performance profiling instead of complexity analysis to find possible denial of service exploits. This is the worst example yet of ignoring academic results in favor of inferior industry methods. In particular, a junior programmer is told to ignore all that complexity theory he was taught in the University and simply test each of the routines under different inputs, find the slow routines, and speed them up. Of course in a denial of service scenario, if there is a high complexity function that is fast in almost all cases, a good attacker will find the worst case input sequences and exploit them while the testing scheme will almost certainly miss these cases unless they do complexity analysis. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In the context of the quote, it is clear that they're discussing how to improve CPU performance issues on a specific codebase, not how to detect and fix CPU denial of service attacks.  Asymptotic algorithm complexity analysis is costly and leaves out a lot of context that is needed when determining how to improve performance (e.g., how often is this code path executed).  The pragmatic programmer in me has no problem with using a profiler against a system running under a broad set of expected loads to figure out where the low-hanging fruit is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2960623776957485046?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2960623776957485046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2960623776957485046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2960623776957485046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2960623776957485046'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-17.html' title='Cohen on Howard: Chapter 17'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-3093104591255888326</id><published>2007-03-25T09:22:00.000-04:00</published><updated>2007-03-25T09:28:52.187-04:00</updated><title type='text'>Cohen on Howard: Chapter 16</title><content type='html'>&lt;i&gt;Chapter 16 covers securing RPC, ActiveX and DCOM code.&lt;/i&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Chapter 16 tells us 50 variables to set to specific values in RPC and Kerberos code (why they don't set these by default I don't know, but expecting Microsoft to do what the authors advise is expecting too much)&lt;/blockquote&gt;&lt;br /&gt;It's unclear what Kerberos code Cohen is referring to -- perhaps the flag which specifies using Kerberos as the authentication method for RPC?  &lt;br /&gt;&lt;br /&gt;The chapter presents a number of useful flags when programming RPC code and details the trade-offs of each choice.&lt;br /&gt;&lt;br /&gt;As well, the chapter presents information on disabling previously-released ActiveX code with security flaws.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3093104591255888326?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3093104591255888326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3093104591255888326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3093104591255888326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3093104591255888326'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-16.html' title='Cohen on Howard: Chapter 16'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4825058010165090456</id><published>2007-03-25T09:15:00.000-04:00</published><updated>2007-03-25T09:20:44.024-04:00</updated><title type='text'>Cohen on Howard: Chapter 15</title><content type='html'>&lt;i&gt;Chapter 15 covers security for networks.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;In Part 3, my hopes were dashed. Yes, part 2 continues in part 3. The separation is apparently only a trick to meet an administrative requirement of maximum section sizes, or perhaps a limitation of Word based on an integer overrun.&lt;/blockquote&gt;&lt;br /&gt;Cohen's joke is especially funny when you realize that David LeBlanc, a co-author of the book, produced the SafeInt library to prevent integer overflow attacks...while working for Microsoft Office.&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Chapter 15 does a poor job of handling network issues with the exception of providing some reasonable advice on building firewall-friendly applications.&lt;/blockquote&gt;&lt;br /&gt;Cohen's review does a poor job of describing what is missing here.  The chapter covers how to prevent local applications from hijacking a server's port, limiting attack surface by binding as narrowly as possible to an interface and the insecurities of DNS as well as how to write firewall-friendly applications, amongst other things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4825058010165090456?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4825058010165090456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4825058010165090456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4825058010165090456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4825058010165090456'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-15.html' title='Cohen on Howard: Chapter 15'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2123902288248462750</id><published>2007-03-25T09:07:00.000-04:00</published><updated>2007-03-25T09:14:43.945-04:00</updated><title type='text'>Cohen on Howard: Chapters 12 to 14</title><content type='html'>&lt;i&gt;Chapters 12 to 14 deal with more canonicalization issues: database input, web input and internationalization via Unicode.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Chapters 12 and 13 are the same thing as chapter 11, repeated in the context of databases and web servers. In other words, they only give more examples of the same mistakes producing the same sorts of errors in different application environments. Useful for those who didn't get it the first 10 times, redundant for the rest of us.&lt;/blockquote&gt;&lt;br /&gt;I dispute that these sections are not useful:  they cover real-world attacks and tell you how to prevent them.  This is much more actionable than saying "input validation and canonicalization issues exist in the web and database environments as well."&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Finally, thankfully, chapter 14 tells us to use Unicode for representing everything. Of course this is based on internationalization issues, not security issues, and ends this section of the book. After 325 pages, I found myself wanting more for less. &lt;/blockquote&gt;&lt;br /&gt;If you accept that canonicalization is a security issue, how is internationalization canonicalization not a security issue?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2123902288248462750?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2123902288248462750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2123902288248462750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2123902288248462750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2123902288248462750'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapters-12-to-14.html' title='Cohen on Howard: Chapters 12 to 14'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-9083289687820871053</id><published>2007-03-25T09:03:00.000-04:00</published><updated>2007-03-25T09:07:38.779-04:00</updated><title type='text'>Cohen on Howard: Chapter 11</title><content type='html'>&lt;i&gt;Chapter 11 addresses the issue of input validity given canonical representation issues.  e.g., http://127.1 is equivalent to http://127.0.0.1 and to http://2130706433&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Again, Cohen's comments are accurate.  Formal languages and well-defined standard representations would solve the problem; meanwhile, the book presents best practices and suggestions for how to canonicalize input.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-9083289687820871053?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/9083289687820871053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=9083289687820871053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/9083289687820871053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/9083289687820871053'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-11.html' title='Cohen on Howard: Chapter 11'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-724188481333482950</id><published>2007-03-25T09:00:00.000-04:00</published><updated>2007-03-25T09:03:44.079-04:00</updated><title type='text'>Cohen on Howard: Chapter 10</title><content type='html'>&lt;i&gt;Chapter 10 presents issues in untrusted input and methods to check input for validity and safety.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;You may not believe this, but the book fails to address sequential machine issues across the board and focuses entirely on combinatorics issues under stateless machine assumptions. This is not by intent, as there is no underlying model in the book. They just missed the basic notion that we are dealing with sequential machines. And of course asynchronous issues between communicating sequential machines never even hits their radar. We are told to check input validity by verifying syntax, but the use of redundant values on input to cross check validity is ignored. Input syntax is addressed, but semantics are ignored, and more particularly, we are not told how to build syntax filters that allow different syntactic elements based on previous inputs and program states.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Spot on.  There are more advanced techniques that are better than what the book presents.  One could nitpick that "they just missed the basic notion that we are dealing with sequential machines" and instead chose to present simpler techniques that are within the grasps of all computer programmers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-724188481333482950?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/724188481333482950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=724188481333482950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/724188481333482950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/724188481333482950'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-10.html' title='Cohen on Howard: Chapter 10'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6314972321362128183</id><published>2007-03-25T08:29:00.000-04:00</published><updated>2007-03-25T08:46:19.317-04:00</updated><title type='text'>Cohen on Howard: Chapter 9</title><content type='html'>&lt;i&gt;Chapter 9 deals with encryption and protecting secret data.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.securecoding.cert.org/confluence/download/attachments/2426/kurios119.jpg" align="right" /&gt;Cohen largely approves of Chapter 9. In particular, he likes the fact that the authors state knowledge of cryptography and mathematics is not sufficient: you must apply it in a way that makes sense. (For a way that doesn't make sense, see the picture to the right.)&lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;CryptGenRandom gets its randomness, also known as system entropy, from many sources in Windows 2000 and later, including the following: [...lists on the order of 100 counters...]&lt;br /&gt;The resulting byte stream is hashed with SHA-1 to produce a 20-byte seed value that is used to generate random numbers according to FIPS 186-2 appendix 3.1.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;The authors rightly spend a substantial amount of time on generating decent pseudo-random numbers [...] Of course their solution is a Microsoft system call that they assert does it right. I should note that the parameters they claim to use to generate their random seeds contain some very predictable values and sets of values that, while individually may not be very predictable may be more predictable together. For example, when we add the CPU, User, and I/O time it may come to a predictable value (100%) even if each is not very predictable on their own. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Yes -- if you add CPU, user and I/O time it will come close to 100%.  However, the authors make it clear that they concatenate the values rather than sum then.  Even so, due to issues with representing numbers in computer systems, CPU + user + I/O time may not always sum to 100 depending on Microsoft's internal representation.&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;They do tell us to use salts for hash functions to store things like passwords. Their inability to get the job done at Microsoft shines through when we realize that the password scheme used in Microsoft products didn't use salts for their hashes and resulted in a widely published dictionary-based attack based on this weakness. It saddens me to see that even when the authors get it right the company gets it wrong.&lt;/blockquote&gt; &lt;br /&gt;&lt;br /&gt;Cohen does not indicate which Microsoft product is storing passwords unsalted.  Doubtless, many earlier Microsoft products had this problem before it was well understood to be a problem.  Indeed -- many Linux distributions of a bygone time didn't &lt;a href="http://tldp.org/HOWTO/Shadow-Password-HOWTO-2.html"&gt;shadow their passwd files&lt;/a&gt;, even though /etc/passwd was world-readable and had a small saltspace.  Even today, &lt;a href="http://www.wordpress.org"&gt;Wordpress &lt;/a&gt;doesn't salt user passwords -- and uses the &lt;a href="http://trac.wordpress.org/ticket/2394"&gt;insecure MD5 hash&lt;/a&gt; to boot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6314972321362128183?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6314972321362128183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6314972321362128183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6314972321362128183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6314972321362128183'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-9.html' title='Cohen on Howard: Chapter 9'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6983101076178333060</id><published>2007-03-25T08:20:00.000-04:00</published><updated>2007-03-25T08:28:50.223-04:00</updated><title type='text'>Cohen on Howard: Chapters 5 to 8</title><content type='html'>&lt;i&gt;Chapters 5 to 8 cover buffer overruns, access control lists, least privileges, and basic cryptography errors.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Cohen's review of chapters 5 to 8 is lumped together into 3 paragraphs, ending with:&lt;br /&gt;&lt;blockquote&gt;If you don't know why C leads to off-by-one errors that lead to storage errors that lead to programs doing bad things, these chapters are worth reading. If you like examples without all the facts to make the point, but lots of lines of code showing how to set access controls in Windows, this section of the book is for you. It is not for the same people that section 1 was for, but the audience shift should be obvious enough for most readers to ignore one part or the other appropriately. My summary note on these chapters says "Bad design + bad programmers =&gt; Bad code". I think that is telling.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;While some of the code samples are definitely very Windows-specific (e.g., how to modify your execution token to restrict your operating permissions so as to restrict the value of exploiting your program), some of the samples and concepts are technology agnostic and very important.&lt;br /&gt;&lt;br /&gt;Chapter 5, for example, focuses on buffer overruns and their ilk.  These constantly feature on the &lt;a href="http://www.sans.org/top20/"&gt;SANS Institute's Annual Top 20 Security Attack Targets&lt;/a&gt; list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6983101076178333060?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6983101076178333060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6983101076178333060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6983101076178333060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6983101076178333060'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapters-5-to-8.html' title='Cohen on Howard: Chapters 5 to 8'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-3252005663178067878</id><published>2007-03-25T08:02:00.000-04:00</published><updated>2007-03-25T08:14:24.846-04:00</updated><title type='text'>Cohen on Howard: Chapter 4</title><content type='html'>&lt;i&gt;Chapter 4 is on modelling threats to software by breaking it down into components and analyzing each part's vulnerabilities.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Chapter 4 introduces modelling techniques for decomposing your applications, including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Data_flow_diagram"&gt;Data Flow Diagrams (DFDs)&lt;/a&gt; - modelling how data flows through your application to understand how parts can be attacked&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/STRIDE_%28security%29"&gt;STRIDE&lt;/a&gt; - a way to categorize threats based on what risk they permit: spoofing, tampering of data, repudiation of actions, information disclosure, denial of service or escalation or privileges&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa302419.aspx#c03618429_011"&gt;DREAD&lt;/a&gt; - a way of rating priority of threats based on damage potential, reproducibility, exploitability, affected users, and discoverability.&lt;/ul&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;It also tells us that STRIDE and DREAD are the models of threats and consequences they use at Microsoft - which helps me to understand why they miss the boat so often. You need to get the book for more details because I need to cut down on the content of my review before we all run out of patience with it and the book. The book is almost 800 pages, by the way, and it does have a solid 40 pages of worthwhile content, not a bad bloat ratio for some software products.&lt;/blockquote&gt;&lt;br /&gt;Cohen seems to suggest that STRIDE and DREAD are inferior modelling techniques.  Inferior to what?  He proposes no alternative.&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Chapter 4 is also very important to understanding where Microsoft still misses the boat in security. They didn't spend the time needed to do basic modeling and, as a result, their views and processes are incomplete, inconsistent, and lacking in a systematic approach.&lt;/blockquote&gt;&lt;br /&gt;It is unclear to me how a chapter explaining how to do basic modelling consistently and completely in a systematic fashion supports this view.&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;This is consistent with their expressed view of applying theory where appropriate - that you should never do so. That's part of why they will continue to make big stupid mistakes from time to time. &lt;/blockquote&gt;&lt;br /&gt;I don't believe they've said this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3252005663178067878?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3252005663178067878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3252005663178067878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3252005663178067878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3252005663178067878'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-4.html' title='Cohen on Howard: Chapter 4'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5973620756475765024</id><published>2007-03-25T07:36:00.000-04:00</published><updated>2007-03-25T08:14:16.595-04:00</updated><title type='text'>Cohen on Howard: Chapter 3</title><content type='html'>&lt;em&gt;Chapter 3 is on good security principles to live by.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;A protocol you designed is insecure in some manner. Five years and nine versions later, you make an update to the application with a more security protocol.  However, the protocol is not backward compatible with the old version of the protocol, and any computer that has upgraded to the current protocl will no longer communicate with any other version of your application.  The chances are slim indeed that your clients will upgrade their computers anytime soon, especially as some clients will still be using version 1, others version 2, and so on.  Hence, the weak version of the protocol lives forever!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;It tells us to remember that backward compatibility will always give you grief, which is why they discourage it. That's right, Microsoft does not want backward compatability, but we all knew that a long time ago. Of course the lack of backward compatability also implies that they didn't do it right in the first place and won't do it right now, or alternatively that there is no right, just eternal change. While this is a good business model, it is a poor information protection approach.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Nowhere in the text do the authors discourage backwards compatibility.  They just point out that it is a major problem when insecure protocols are discovered.  They propose a solution:  make the newer protcols configurably backwards compatible, such that they can run in the less secure mode in a low-risk environment and in the more secure mode in a high-risk environment.&lt;br /&gt;&lt;br /&gt;This is a common problem that people need to face.  The book cites attacks on the SMB protocol that required a breaking change to the protocol.  Other real-life examples exist as well:  SSH1 had a design flaw and needed to be superceded by SSH2.&lt;br /&gt;&lt;br /&gt;To say "the lack of backward compatability also implies that they didn't do it right in the first place and won't do it right now" is also incorrect.  Sometimes protocols become weak due to unknown flaws in the underlying algorithms becoming known as they are cryptanalyzed by the research community, for example protocols which relied on &lt;a href="http://en.wikipedia.org/wiki/MD4"&gt;MD4&lt;/a&gt;.  At the time of creation, it may have been generally accepted to use these algorithms --  is it fair to say they didn't do it right in the first place?  I doubt it.&lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;When was the last time you entered a bank to see a bank teller sitting on the floor in a huge room next to a massive pile of money.  Never! To get to the big money in a bank requires that you get to the bank vault, which requires that you go through multiple layers of defense.  Here are some examples of the defensive layers: [...cites examples of multiple layers of defense against vault robbery...]&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;They tell us that the most valuable part of a bank is its vault - did they miss the information age somewhere? They probably never worked on bank security. These days, the computers have far more value than the vaults (except the vaults that hold the computers of course). &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Nowhere does Howard say the most valuable part of a bank is the vault.  Rather, he motivates the need for multiple layers of defense in computer programs by relating how other industries protect their assets.  It's certainly true that access to the software and data controlling the management of the bank's money is very important -- but this is the very thing he's trying to motivate through his analogy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5973620756475765024?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5973620756475765024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5973620756475765024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5973620756475765024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5973620756475765024'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-3.html' title='Cohen on Howard: Chapter 3'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-7782545079240757072</id><published>2007-03-25T07:23:00.000-04:00</published><updated>2007-03-25T08:14:09.965-04:00</updated><title type='text'>Cohen on Howard: Chapter 2</title><content type='html'>&lt;em&gt;Chapter 2 describes how to weave security into the traditional software development lifecycle from start to end, including training.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Chapter 2 misses by so much it's not even funny. The authors give fundamental misimpressions, for example, that secure software is equivalent to risk management.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;At some level, secure software &lt;i&gt;is&lt;/i&gt; risk management.  As you secure software, you frequently make the software harder to use or less functional.  Sometimes, you can get more security without sacrificing ease of use or functionality; but usually it's a balance that the authors of the code get to pick.&lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;Don't add any ridiculous code to your application that gives a list of all the people who contributed to the application.  If you don't have time to meet your schedule, how can you meet the schedule when you spend many hours working on an Easter egg?  I have to admit that I wrote an Easter Egg in a former life, but it was not in the core product.  It was in a sample application.  I would not write an Easter Egg now, however, because I know that users don't need them and, frankly I don't have the time to write one!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;They tell us that no more Trojan Horses will be allowed in Microsoft software. It took them long enough, they used to call them "Easter Eggs", a public relation stunt to make it seem palatable, and one that worked in the large for many years. But this is a good thing and I am glad they finally decided to do this.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;In computer lore, words have very specific meaning.  The &lt;a href="http://catb.org/~esr/jargon/html/go01.html"&gt;Jargon File&lt;/a&gt; is a definitive lexicon for nerd speak.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://catb.org/~esr/jargon/html/T/Trojan-horse.html"&gt;trojan horse &lt;/a&gt;: a malicious security-breaking program that is disguised as something benign&lt;br /&gt;&lt;a href="http://catb.org/~esr/jargon/html/E/Easter-egg.html"&gt;easter egg&lt;/a&gt;: a message, graphic, or sound effect emitted by a program in response to some undocumented set of commands or keystrokes&lt;br /&gt;&lt;br /&gt;Cohen's use of the very negative phrase "Trojan horse" almost suggests that his review is a &lt;a href="http://catb.org/~esr/jargon/html/T/troll.html"&gt;troll&lt;/a&gt; (conveniently defined on the page after "Trojan horse" in the Jargon File).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-7782545079240757072?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/7782545079240757072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=7782545079240757072' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7782545079240757072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/7782545079240757072'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-2.html' title='Cohen on Howard: Chapter 2'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5251433572821610188</id><published>2007-03-25T07:06:00.000-04:00</published><updated>2007-03-25T08:14:01.160-04:00</updated><title type='text'>Cohen on Howard: Chapter 1</title><content type='html'>&lt;em&gt;Chapter 1 motivates the need for secure systems, and provides tips on how to convince your organization of the need.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;As the Internet grows in importance, applications are becoming highly interconnected.  In the "good old days," computers were usually islands of functionality, with little, if any, interconnectivity.  In those days, it didn't matter if your application was insecure -- the worst you could do was attack yourself -- and so long as an application performed its task successfully, most people didn't care about security.&lt;/blockquote&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;The misinformation on the book starts in the 2nd sentence of the first paragraph of chapter 1 when we are told that security wasn't important before the Internet grew in importance and that the worst result would be that people could attack themselves. The first network-based global computer virus reached mainframes around the world in the late 1980s - and it did not involve the &lt;em&gt;Internet&lt;/em&gt;. [emphasis mine] &lt;/blockquote&gt;&lt;br /&gt;Cohen has a point:  The introduction of networks is what caused the shift in focus in computer security, and, as the Internet is just one such network, Howard's point is technically incorrect.  Is it misinformation?  Hardly.  That implies some malice or motive.&lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;[...] So where do you begin instilling security in your organization?  The best place is at the top, which can be hard work.  It's difficult because you'll need to show a bottom-line impact to your company, and security is generally considered something that "gets in the way" and costs money while offering little or no financial return.  Selling the idea of building secure products to management requires tact and sometimes requires subversion.  Let's look at each approach.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;Indeed, chapter 1 demonstrates just how poor the internal culture at Microsoft is. Such awareness activities as getting the boss to send an email and nominating an evangelist are really not about writing secure code as much as internally about convincing Microsoft to do what you want. It is valuable for salespeople no doubt.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;It is unclear what Cohen draws on to support his statement about the poor internal culture at Microsoft -- indeed, the foreword to the book talks about the 2002 trustworthy computing directive from Bill Gates motivating the change in culture.  &lt;br /&gt;&lt;br /&gt;Howard:&lt;br /&gt;&lt;blockquote&gt;Principle #1: The defender must defend all points; the attacker can choose the weakest point.&lt;br /&gt;Principle #2: The defender can defend only against known attacks; the attacker can probe for unknown vulnerabilities.&lt;br /&gt;Principle #3: The defender must be constantly vigilant; the attacker can strike at will.&lt;br /&gt;Principle #4: The defender must play by the rules; the attacker can play dirty.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen:&lt;br /&gt;&lt;blockquote&gt;The lack of a basis for design shows up in Chapter 1 and it permeates the book. The four principles selected in the book are hardly what I would choose, but then I was not choosing. "Principle 2 - the defender can defend only against known attacks; the attacker can probe for unknown vulnerabilities" - an excellent example of why you need a design basis and how the lack of one leads you down the wrong path. "Principle 4 - The defender must play by the rules; that attacker can play dirty!" - what rules are those? My view is that this lack of a design basis, the lack of deep understanding of issues and a way to approach dealing with them, and the lack of a theory and a practice underlies the problem that Microsoft and much of the current programming community has with writing secure code. This book does nothing to solve these problems.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cohen introduces the phrase 'design basis', but doesn't define it -- though he does lament the lack of them in most software.  He complains that the principles presented are not those he would present -- but doesn't offer his own principles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5251433572821610188?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5251433572821610188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5251433572821610188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5251433572821610188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5251433572821610188'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-chapter-1.html' title='Cohen on Howard: Chapter 1'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5345770760393121667</id><published>2007-03-25T06:53:00.000-04:00</published><updated>2007-03-25T08:13:48.622-04:00</updated><title type='text'>Cohen on Howard: Introduction</title><content type='html'>&lt;a href="http://all.net/resume/resume.html"&gt;Fred Cohen&lt;/a&gt; is a well-respected computer science researcher and professor in the security field.  &lt;a href="http://www.microsoft.com/MSPress/books/authors/auth5957.aspx"&gt;Michael Howard and David LeBlanc&lt;/a&gt; are well-respected software engineers in the security field.&lt;br /&gt;&lt;br /&gt;They wrote Writing Secure Code, a book on computer programming security.&lt;br /&gt;&lt;br /&gt;Cohen wrote a &lt;a href="http://www.ieee-security.org/Cipher/BookReviews/2003/Howard_by_fcohen.html"&gt;review of the book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The review is posted on the IEEE Computer Society's Technical Committee on Security and Privacy website.  That's a mouthful -- but it's also one of the most respected institutions in software engineering.&lt;br /&gt;&lt;br /&gt;The review is 5,400 words long.  It analyzes the book chapter by chapter and finishes with a suggestion for what the book ought to have been called:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"How poor quality programmers at Microsoft have produced hundreds of instances of the same 10 big mistakes in their code, and how they can do their jobs a little bit better". &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The software engineering profession is often criticized for a perceived lack of rigor and professionalism.  Read the review.  Analyze it in context:  one researcher criticizing another researcher's work, published on an electronic journal read by their peers.  Doesn't say much for software engineering, does it?&lt;br /&gt;&lt;br /&gt;This is the first of a series of blog posts.  I am going to go through Cohen's review, chapter-by-chapter, and give the point-of-view of a 4th year software engineering student, who has interned at Microsoft on &lt;br /&gt;&lt;ul&gt;&lt;li&gt;a Trustworthy Computing team, working on the same team as David LeBlanc&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the Microsoft CardSpace team, working on Microsoft's digital identity and privacy software&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I actually received a free copy of the book when I joined Microsoft.  It is also a required text for one of my school courses.  When you read my commentary, remember my biases, and also remember my youth -- I am criticizing a man who has been in the field for 30 years.  If I can find so many questionable points in his review, what does that say about our field?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5345770760393121667?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5345770760393121667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5345770760393121667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5345770760393121667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5345770760393121667'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/cohen-on-howard-introduction.html' title='Cohen on Howard: Introduction'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-202739534646266074</id><published>2007-03-20T13:49:00.000-04:00</published><updated>2007-03-20T13:51:50.165-04:00</updated><title type='text'>ATEs at Waterloo</title><content type='html'>Thanks, Waterloo!&lt;br /&gt;&lt;br /&gt;From the short list of courses that meet the ATE requirements for me to graduate intersected with the set offered this semester complemented with the times of core SE courses, there are three courses I want/can take:&lt;br /&gt;&lt;br /&gt;* ECE 493: Special Topics in ECE, 7th offering: Security&lt;br /&gt;* ECE 454: Distributed Systems&lt;br /&gt;* CS 452: Real-Time Operating Systems (The "Trains" Course)&lt;br /&gt;&lt;br /&gt;The ECE courses require course overrides because I'm an SE student, and the CS course has only 6 spots for SE students (but 34 for CS -- even though at present there are only 6 CS students signed up for it).&lt;br /&gt;&lt;br /&gt;What a treat!  I knew this is why I signed up for SoftEng at UW!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-202739534646266074?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/202739534646266074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=202739534646266074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/202739534646266074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/202739534646266074'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/ates-at-waterloo.html' title='ATEs at Waterloo'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4733088048191150707</id><published>2007-03-15T04:05:00.000-04:00</published><updated>2007-03-15T04:06:06.059-04:00</updated><title type='text'>I hate you Comcast</title><content type='html'>Do you want my money or not?!&lt;br /&gt;&lt;br /&gt;Last time it was: "Unknown error. Call 1-800-COMCAST."&lt;br /&gt;&lt;br /&gt;This time it's: "Unable to localize to your account at this time. Please try again later."&lt;br /&gt;&lt;br /&gt;What the hell do you have to localize?! Your site is English, I speak English.  NO LOCALIZATION NECESSARY! GRRRRR!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4733088048191150707?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4733088048191150707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4733088048191150707' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4733088048191150707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4733088048191150707'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/i-hate-you-comcast.html' title='I hate you Comcast'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-4565679195617044543</id><published>2007-03-13T00:53:00.000-04:00</published><updated>2007-03-13T01:08:22.199-04:00</updated><title type='text'>Entropy</title><content type='html'>At Payless Shoesource:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Phone number, please," says the clerk at Payless Shoes to my housemate, Sarah.&lt;br /&gt;&lt;br /&gt;"Umm, why do you need my phone number?"&lt;br /&gt;&lt;br /&gt;"It's so we can track how well shoes sell at given stores."&lt;br /&gt;&lt;br /&gt;Me now, "That makes no sense. Can you just type in 10 random digits?"&lt;br /&gt;&lt;br /&gt;"Err, yeah, I could. But, really, given chaos theory, is anything really random?"&lt;br /&gt;&lt;br /&gt;Well, actually, yes. "Well, actually, yes. The &lt;a href="http://www.fourmilab.ch/hotbits/how3.html"&gt;interarrival time of radioactive decay events&lt;/a&gt; are random." And from what little I know, I think &lt;a href="http://en.wikipedia.org/wiki/Chaos_theory"&gt;chaos theory&lt;/a&gt; just says that some things that appear random, aren't random.&lt;br /&gt;&lt;br /&gt;"Oh, but it just looks that way because the sample size is small. Taken over infinity, patterns would start to occur."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Twitch, twitch.&lt;br /&gt;&lt;br /&gt;This reminds me of the time I phoned NET10 tech support.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Can we have your email address, sir?"&lt;br /&gt;&lt;br /&gt;"Why?"&lt;br /&gt;&lt;br /&gt;"It's so we can email you advertisements about the product."&lt;br /&gt;&lt;br /&gt;"I don't want to give you my email address, then."&lt;br /&gt;&lt;br /&gt;"You don't have an email address?"&lt;br /&gt;&lt;br /&gt;"No, I just don't want to give it to you so you can spam me."&lt;br /&gt;&lt;br /&gt;"You don't have an email address?"&lt;br /&gt;&lt;br /&gt;"That's correct."&lt;br /&gt;&lt;br /&gt;"And your birthdate, sir?"&lt;br /&gt;&lt;br /&gt;"June 14, 1911."&lt;br /&gt;&lt;br /&gt;"Thank you."&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-4565679195617044543?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/4565679195617044543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=4565679195617044543' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4565679195617044543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/4565679195617044543'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/entropy.html' title='Entropy'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-6369317866279483387</id><published>2007-03-07T23:26:00.000-05:00</published><updated>2007-03-07T23:28:14.190-05:00</updated><title type='text'>Frugality</title><content type='html'>Why don't I get a haircut? Why don't I have a cell phone? Why don't I have pants that aren't 3+ years old and full of holes?&lt;br /&gt;&lt;br /&gt;Because I'm cheap.&lt;br /&gt;&lt;br /&gt;Apparently, it's a common affliction in CS types.  An acquaintance who works at Google finally &lt;a href="http://insanecats.com/cgi-bin/single.py?month=mar07&amp;msg=07"&gt;upgraded her TV&lt;/a&gt; after getting maximum value out of the old one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-6369317866279483387?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/6369317866279483387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=6369317866279483387' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6369317866279483387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/6369317866279483387'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/frugality.html' title='Frugality'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-2771315279404373885</id><published>2007-03-05T06:45:00.000-05:00</published><updated>2007-03-05T06:47:54.318-05:00</updated><title type='text'>Standing water</title><content type='html'>The insurance tags on my long-term rental from Avis just expired.&lt;br /&gt;&lt;br /&gt;So I got it replaced, and now me and my housemates are the -- er, proud? -- drivers of a Chevy HHR.&lt;br /&gt;&lt;br /&gt;This car feels like such a piece of garbage. It is a study in how now to do user interfaces.&lt;br /&gt;&lt;br /&gt;Things are in all the wrong places. The driver's drinkholder is well behind his seat. The window controls are at about calf level. The most prominent dial on the instrument panel is the &lt;em&gt;tachometer&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;Oh, and the glove box is full of fetid water.  That might be factory default, might be the performance package; I didn't ask.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-2771315279404373885?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/2771315279404373885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=2771315279404373885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2771315279404373885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/2771315279404373885'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/standing-water.html' title='Standing water'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-1664585381261679049</id><published>2007-03-05T04:49:00.000-05:00</published><updated>2007-03-05T05:35:14.340-05:00</updated><title type='text'>Agape</title><content type='html'>This past Saturday, I learned the true meaning of the word agape.  And I don't mean the &lt;a href="http://en.wikipedia.org/wiki/Agape"&gt;brotherly love&lt;/a&gt; kind.&lt;br /&gt;&lt;br /&gt;Since coming to Seattle, I've heard a great deal about the local strip clubs.  There's a &lt;a href="http://seattlepi.nwsource.com/local/290659_fourfoot01.html"&gt;war against adult entertainment going on&lt;/a&gt;, they say.  No alcohol can be served - and this is just the first sortie.  If those upright folk in City Hall get their way, strip clubs will be brightly lit, strippers will be behind a railing several feet away from the closest patron, tipping will be illegal, etc, etc.&lt;br /&gt;&lt;br /&gt;Clearly, I had to experience this before it got legislated out of existence or I crossed into the land of the betrothed.&lt;br /&gt;&lt;br /&gt;Thus, it was after obtaining business sign off from our significant others that Simon, Dan and I trotted off to Showgirls on Seattle's 1st Avenue.&lt;br /&gt;&lt;br /&gt;Giddy on the naughtiness of it all, we seated ourselves and awaited untold dark, erotic adventures.  As it turned out, we'd have a long time to wait and the adventures would remain untold.&lt;br /&gt;&lt;br /&gt;&lt;img align="right" src="http://upload.wikimedia.org/wikipedia/en/d/dd/Cletus.gif"&gt;Each dancer seemed to have about 90 seconds on stage to do her bit.  Sex isn't hot when you're rushing to beat the clock -- turns out, stripping's the same way.  It was a race to kick off the clothes, avoid making eye contact with the patrons, and get the hell off the stage.  I couldn't help but compare it to &lt;a href="http://www.thecancan.com/"&gt;Can Can&lt;/a&gt;, where parts of the cabaret-style entertainment were much, much more sensual.  (Oh, and forget the no-touching rule:  at Can Can, they invite you up on the stage to dance and get up close and personal.  Granted, the person whose behind I had the unique opportunity to knead was a bit sweaty. And hairy. And male.  But I digress.)&lt;br /&gt;&lt;br /&gt;I get the feeling that there were only two folks at Showgirls who got their money's worth:  Dan, who took a nap and a rather dimwitted-looking fellow in the front row who seemed unable to close his mouth for the duration of the time we were there.&lt;br /&gt;&lt;br /&gt;PS:  Kudos to &lt;a href="http://backguy.livejournal.com/"&gt;Rodney&lt;/a&gt;, who, when informed that the plans for the evening included a strip club, simply said "no thanks, I don't agree with that and I don't want to do that".  And congrats on your job offer!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-1664585381261679049?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/1664585381261679049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=1664585381261679049' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1664585381261679049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/1664585381261679049'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/agape.html' title='Agape'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5227094980953962041</id><published>2007-03-05T04:25:00.000-05:00</published><updated>2007-03-05T05:44:14.287-05:00</updated><title type='text'>Karatsuba</title><content type='html'>I'm pretty sure I owe Jenn an apology for something like this when I was in CS 134 and implementing a class that could handle arbitrarily large integers with the common operations (addition, subtraction, multiplication, division, exponentiation).&lt;br /&gt;&lt;br /&gt;I wanted to implement Karatsuba multiplication. It's marginally faster than gradeschool long multiplication. Yup, you heard right: marginally faster. And there was no bonus marks to be had. And hell, implementing multiplication was only worth like .1% of your final mark. And I was trying to optimize *JAVA*. Definitely a missing-the-forest-for-the-trees moment. I didn't end up seeing the results I expected, so fine, I said, fuck it!&lt;br /&gt;&lt;br /&gt;And I went on to other pursuits.&lt;br /&gt;&lt;br /&gt;But then... like the crescendo of a great concerto, the explosion of a whole sky's worth of fireworks and the crash of thunder all at once, it became clear to me:  I was being sloppy with object creation in a tight loop!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://imgs.xkcd.com/comics/hamiltonian.png"&gt;&lt;br /&gt;&lt;br /&gt;And I think I also owe Jenn similar apologies for SE 141 (fastest clock rate on the Xilinx boards for project #3), CS 241 (removing the arbitrary restriction on the number of local variables supported by my implementation of SL) and ECE 354 (corner case where A5 gets destroyed on the MCF5307 when context switching).&lt;br /&gt;&lt;br /&gt;Side note:  Jenn and I had an epiphany after seeing a bike store on Hamilton Street in Vancouver.  If we ever live in Hamilton, we will dispense with our cumulative 8 years of study of math and engineering to be the proprietors of a bike shop named the Hamiltonian Cycle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5227094980953962041?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5227094980953962041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5227094980953962041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5227094980953962041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5227094980953962041'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/karatsuba.html' title='Karatsuba'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-3056565083857908768</id><published>2007-03-05T04:18:00.000-05:00</published><updated>2007-03-05T04:21:51.600-05:00</updated><title type='text'>Surgeons in a Half-Shell</title><content type='html'>A friend of mine commented a couple years ago that we're going to be flooded with Hollywood remakes of the shows of our childhoods, since the kids who enjoyed the shows back then are now the artists producing the movies.&lt;br /&gt;&lt;br /&gt;I guess medical school takes longer than film school, since just last week the xkcd guy produced this gem:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://imgs.xkcd.com/comics/nintendo_surgeon.png"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-3056565083857908768?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/3056565083857908768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=3056565083857908768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3056565083857908768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/3056565083857908768'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/surgeons-in-half-shell.html' title='Surgeons in a Half-Shell'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-5710736085231963394</id><published>2007-03-05T04:05:00.000-05:00</published><updated>2007-03-05T04:16:32.012-05:00</updated><title type='text'>Why I don't have a cellphone</title><content type='html'>My parents yell at me because I don't have a phone.&lt;br /&gt;&lt;br /&gt;I tell them it's because cell phones are overpriced monstrosities, VOIP phones don't work and landlines charge outrageous installation fees for people who move around every 4 months.&lt;br /&gt;&lt;br /&gt;In reality, it's because all these giant megacorps don't understand the Internet.&lt;br /&gt;&lt;br /&gt;I mean, hey, it's only been around since '&lt;a href="http://www.faqs.org/rfcs/rfc1.html"&gt;69&lt;/a&gt;. I begin to doubt how Telus knows that "&lt;a href="http://www.telus.com/cgi-ebs/jsp/selectRegion.jsp"&gt;the future is friendly&lt;/a&gt;" when they're still trying to catch up to the events of the 1960s. Hell, computers don't even remember what 69 is anymore. Because of the Y2K problem, if you told Telus's mainframe that you were born in "69", it'd think you were born in 2069. It probably wouldn't let you open an account and that would be a blessing in disguise.&lt;br /&gt;&lt;br /&gt;Because, you see, with every account comes the bill. Every month.&lt;br /&gt;&lt;br /&gt;Let's see here... that's potentially 1 internet bill, 1 cable bill, 1 phone bill, 1 hydro bill, 1 rent bill, 1 water/sewage bill, and 1 furniture rental bill, all of which need to be paid for every abode.&lt;br /&gt;&lt;br /&gt;And if you're a &lt;a href="http://www.cecs.uwaterloo.ca/students/prospective/"&gt;lucky co-op student&lt;/a&gt; (what sort of interview is that smiling, squatting student preparing for? Porcelain Receptable Quality Assurance Engineer?), you have two houses. In different countries, too, where the megacorps involved are different, so you can't even consolidate bills for the same services.&lt;br /&gt;&lt;br /&gt;Each month, I am either the primary recipient or co-recipient of 8 bills. And no-one uses the same billing cycle, so every 4 days, I get a new bill.&lt;br /&gt;&lt;br /&gt;I'm happy to delegate the authority to dip into my bank accounts in the US or Canada. Despite working for a &lt;a href="http://windowshelp.microsoft.com/Windows/en-US/Help/7dc9c520-9d16-473d-b21b-413ac7226fb61033.mspx"&gt;team&lt;/a&gt; that wants to make Internet transactions secure and traceable, I'm happy to release the keys to the kingdom. I'm happy to say, "Checking acct #602-1481-4, transit 1085, PIN 5152. Enjoy!"&lt;br /&gt;&lt;br /&gt;But the megacorps's websites all seem to have the reliability of an emo, teenaged McDonald's worker. "Error #1048: Please call 1-800-COMCAST." "Sorry, PSE is down for scheduled maintenance!" "Cannot find tenant account." "The balance due for Rogers customer 600194018, as of Mar 5, is NOT AVAILABLE." "Can't validate your identity."&lt;br /&gt;&lt;br /&gt;Fine, some of these are transient problems. But Rogers and Comcast -- ironically, both Internet service providers -- reliably fuck up.&lt;br /&gt;&lt;br /&gt;For me, when deciding which services to subscribe to, I balance the high cost of remitting payment against the service's usefulness. Having a place to sleep? Sure. Being able to take a crap? Sure. Being able to take a call while doing either of these? Nah.&lt;br /&gt;&lt;br /&gt;So, mom and dad, that's why I don't have a cell phone.&lt;br /&gt;&lt;br /&gt;PS:  Comcast, how can you have the gall to charge a $129 activation fee for VOIP service?  Norrmally, I don't care about the one-time fees.  It's the recurring fees I hate.  But an activation fee for an &lt;em&gt;Internet-based service&lt;/em&gt;?!&lt;br /&gt;&lt;br /&gt;Let's see... if I remember my databases course rightly, that's something like...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;INSERT INTO voip_customers VALUES ('Colin Dellow');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What is that, $2.30 per keystroke?  At least with traditional phone service I can envision my beefy activation fee producing a hearty *THUNK* as a lever is pulled somewhere and the vacuum tubes are linked together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-5710736085231963394?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/5710736085231963394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=5710736085231963394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5710736085231963394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/5710736085231963394'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/03/why-i-dont-have-cellphone.html' title='Why I don&apos;t have a cellphone'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-116999061959488579</id><published>2007-01-28T08:21:00.000-05:00</published><updated>2007-01-28T08:35:02.423-05:00</updated><title type='text'>Lindsay Slapdowns</title><content type='html'>The Shoemaker quote reminded me of another time Lindsay pointed out the error of my ways.  This time it was my misplaced belief in the existence of centrifugal force.&lt;br /&gt;&lt;br /&gt;Clearly, the author of the xkcd webstrip had a similar experience in his formative years:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://imgs.xkcd.com/comics/centrifugal_force.png"&gt;&lt;br /&gt;&lt;br /&gt;They're not all quite so nerdy.  Well, they're all pretty nerdy.  But &lt;a href="http://www.xkcd.com/c185.html"&gt;some&lt;/a&gt; &lt;a href="http://www.xkcd.com/c175.html"&gt;of&lt;/a&gt; &lt;a href="http://www.xkcd.com/c197.html"&gt;them&lt;/a&gt; &lt;a href="http://www.xkcd.com/c200.html"&gt;are&lt;/a&gt; &lt;a href="http://www.xkcd.com/c202.html"&gt;good&lt;/a&gt; nonetheless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-116999061959488579?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/116999061959488579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116999061959488579' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116999061959488579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116999061959488579'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/01/lindsay-slapdowns.html' title='Lindsay Slapdowns'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-116999031467334155</id><published>2007-01-28T07:35:00.000-05:00</published><updated>2007-01-28T08:18:34.693-05:00</updated><title type='text'>A blog post.</title><content type='html'>So, &lt;a href="http://www.dellow.ca"&gt;some&lt;/a&gt; of the &lt;a href="http://www.mc79hockey.com/"&gt;powers&lt;/a&gt; that be are demanding that &lt;a href="http://mighspace.blogspot.com/2007/01/new-years-resolution-make-new-years.html"&gt;I blog more&lt;/a&gt;. My bad.&lt;br /&gt;&lt;br /&gt;What's on my mind?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rapid Changes in Technology Scare Me&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;LI&gt;Lindsay has a website.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Actually, over half of the Dellow family have websites.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tyler is asking me questions about how to wire up websites to SQL databases.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;My mom has &lt;a href="http://ifets.ieee.org/past_archives/archiv_260200_070201/0527.html"&gt;contributed to a mailing list&lt;/a&gt; run by the IEEE.&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I'm Really Bad About the Name Changes Weddings Cause&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Not content to yell at me from her own blog, my sister recently left a comment over here saying &lt;a href="http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116669412378910365"&gt;I should post more&lt;/a&gt;.  She signed it "LG".  I thought: that idiot, she typoed her own initials.&lt;br /&gt;&lt;br /&gt;Oops.&lt;br /&gt;&lt;br /&gt;Kinda like that one school year when I looked over the list of teachers at Central Middle School and asked, "Who's Mrs. Shoemaker?" and Lindsay asked me if I remembered attending Ms. Fleming's wedding.&lt;br /&gt;&lt;br /&gt;Oops.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Frying Pan... Fire?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I interned on Microsoft Office last summer.  I wasn't sure I liked the idea of working for people who hadn't shipped anything since the end of 2003.&lt;br /&gt;&lt;br /&gt;So now I'm on the Microsoft Windows group.  Windows XP was shipped in 2001.&lt;br /&gt;&lt;br /&gt;Oops.&lt;br /&gt;&lt;br /&gt;Oh, and the specific team that I'm on was conceived after the spectacular failure of Microsoft's Hailstorm project, whose &lt;a href="http://mark-lucovsky.blogspot.com/2005/02/shipping-software.html"&gt;architect&lt;/a&gt; famously declared that Microsoft "doesn't know how to ship software anymore" before jumping ship for Google.&lt;br /&gt;&lt;br /&gt;Oops?&lt;br /&gt;&lt;br /&gt;Well, probably not.  Here's a description of his new life at Google:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This week at Google, I spent three days in Mountain View, and the last two days working from home. My team includes guys in our New York Times Square Engineering office as well as folks in Mountain View. On Monday, I flew up to Mountain View and arrived in the office at 10am. I worked until 3am and guess what. I wasn't the last one in my area of the building the leave! There was plenty of company. All these guys are proud of their work, love what they are doing, and wanted to nail their deadlines and then take a few days off for the holidays. At 330am I arrived at my apartment, slept for a few hours, and then arrived at the office at 8am, grabbed a free hot breakfast, and put in another full day leaving work at 4am. Again, i was not the last one to leave. I work in an area where a team is preparing for an upcoming launch and 90% of that team was there when I left at 4am, and they were there when I returned at 830am the next day. On wednesday, I had a short day. I arrived at 8am and had to leave to catch my flight at 7:30pm. Those guys that were there at 4am when I left the morning before were still there, heading down for dinner when I left at 7:30pm. For me, thursday was a normal 12 hour day, and friday was the reward. We met our quarterly milestone and met our launch. I am confident that my friends who pulled a few all nighters this week will also lauch on time.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Mmmm, staying up til 4AM working for the man.  Enjoying a "short" 12-hour day.  If you're gonna do that, may as well be a &lt;s&gt;lawyer&lt;/s&gt; articling student.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-116999031467334155?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/116999031467334155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116999031467334155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116999031467334155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116999031467334155'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2007/01/blog-post.html' title='A blog post.'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-116669412378910365</id><published>2006-12-21T04:19:00.000-05:00</published><updated>2006-12-21T04:42:03.803-05:00</updated><title type='text'>Bwahahahaha, University of Windsor's 4th year ECE courses...</title><content type='html'>...are shameful.&lt;br /&gt;&lt;br /&gt;A final exam for the summer 2003 offering of ECE 446 (Advanced Computer Software Systems) can be found &lt;a href="http://www.engsoc.uwindsor.ca/exambank/Electrical/88-446_final-S03(El-Feghi).pdf"&gt;here (PDF)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I wish my fourth year courses had this kind of piffle. Examples of the questions:&lt;br /&gt;&lt;br /&gt;Multiple Choice&lt;br /&gt;1.   "Java programs must be saved with the following extension:" (choices: .java, .doc, .txt, .xls)&lt;br /&gt;&lt;br /&gt;Fill In the Blank&lt;br /&gt;1. Class _______ provides methods for drawing.&lt;br /&gt;...&lt;br /&gt;6. The ________ method of the Graphics class draws a line between two points.&lt;br /&gt;7. GUI is an acronym for ________.&lt;br /&gt;&lt;br /&gt;Answer to 1: Graphics.&lt;br /&gt;Answer to 6: drawLine.&lt;br /&gt;Answer to 7: graphical user interface.&lt;br /&gt;&lt;br /&gt;A 4th-year core course with 4 questions that _anyone_ can answer?  Ridiculous.  And if you took a Java programming class in high school - no worries, you'd ace this exam.&lt;br /&gt;&lt;br /&gt;Even if you didn't, the exam is full of poorly-worded questions that would allow language lawyers to argue for marks as well as redundant questions that would allow students to hedge their bets.&lt;br /&gt;&lt;br /&gt;I'd say it was pathetic if I could convince myself this was for real.  Here's the course description:&lt;br /&gt;&lt;br /&gt;"88-446. Advanced Computer Software Systems&lt;br /&gt;Operating systems; batch systems; multi-programmed batched systems; time-sharing systems; parallel systems; distributed systems; virtual machines; real-time systems; designing real-time systems; concurrent programming; exceptions and exceptions handling; message-based synchronization and communication; memory management; system threats; threat monitoring; encryption. (Prerequisite: fourth-year standing) (3 lecture, 1.5 laboratory/tutorial hours or equivalent a week.)"&lt;br /&gt;&lt;br /&gt;Odd - sounds like a real course, not a "Teach Yourself Java in 21 Lectures(tm)" course.  In fact, sounds a lot like ECE354 at Waterloo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-116669412378910365?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/116669412378910365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116669412378910365' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116669412378910365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116669412378910365'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/12/bwahahahaha-university-of-windsors-4th.html' title='Bwahahahaha, University of Windsor&apos;s 4th year ECE courses...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-116592697385052312</id><published>2006-12-12T07:18:00.000-05:00</published><updated>2006-12-12T07:36:13.926-05:00</updated><title type='text'>The Canadian Engineering Accrediation Board sucks...</title><content type='html'>...for requiring 4 mandatory natural science courses in an undergraduate engineering curriculum.&lt;br /&gt;&lt;br /&gt;I'm all for science, but it seems that scientists can't write textbooks for shit.&lt;br /&gt;&lt;br /&gt;Example: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"We become aware of the importance of rivers in human history and economy as we name the major ones: Nile, Danube, Tigris, Euphrates, Yukon, Indus, Tiber, Mekong, Ganges, Rhine, Mississippi, Missouri, Yangtze-Kiang, Amazon, Seine, Zaire, Volga, Thames, Rio Grande. The names of these rivers, and many others great and small, ring with a thousand images of history, geography and poetry.  The importance of rivers to human history, ecology, and economy is inestimable.  However, river ecology has lagged behind the ecological study of lakes and oceans and is one of the youngest of the many branches of aquatic ecology.  In the past couple of decades, however, river ecology has, as all youthful sciences do, exploded with published research, competing theories, controversies, and international symposia and now claims a well-earned place beside its more mature cousins."&lt;/i&gt;&lt;br /&gt;&lt;p&gt;M. Molles, &lt;u&gt;Ecology: Concepts and Applications, 3rd Ed.&lt;/u&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;Just in case you couldn't make it through that paragraph, here's a summary:&lt;br /&gt;&lt;br /&gt;# of commas: 31&lt;br /&gt;# of rivers painstakingly listed by name: 19.  Nineteen.&lt;br /&gt;# of times you are told rivers are important: 2&lt;br /&gt;# of references to international drinking parties: 1&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"The names of these rivers, and many others great and small, ring with a thousand images of history, geography and poetry."&lt;/i&gt;  What right does that sentence have to exist at all, much less exist in a textbook?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"In the past couple of decades, however, river ecology has, as all youthful sciences do, exploded with published research, competing theories, controversies, and international symposia and now claims a well-earned place beside its more mature cousins."&lt;/i&gt;  Durrrhh... science causes debate! Ironically, the conclusion to the paragraph is the only thing that's textbook material - and then only as an example of how to pad out your word count by saying nothing meaningful with lots of words.&lt;br /&gt;&lt;br /&gt;Even though it tries to be lyrical and full of imagery, the paragraph isn't very engaging to read.  Let's rewrite it the way one would expect an expository paragraph in an engineering textbook to read:&lt;br /&gt;&lt;br /&gt;"Rivers are important.  River ecology is also important.  However, as a relatively young branch of ecology, it's full of theories that no-one agrees about."&lt;br /&gt;&lt;br /&gt;Much less painful -- and only 2 commas!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-116592697385052312?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/116592697385052312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116592697385052312' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116592697385052312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116592697385052312'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/12/canadian-engineering-accrediation.html' title='The Canadian Engineering Accrediation Board sucks...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-116478556094332744</id><published>2006-11-29T02:28:00.000-05:00</published><updated>2006-11-29T02:32:41.040-05:00</updated><title type='text'>Software quality metrics</title><content type='html'>I bet you the software world is the only one which allows the makers of one product to claim that its competition's product is only &lt;a href="http://www.findarticles.com/p/articles/mi_pwwi/is_200010/ai_mark01017402"&gt;0.000000002%&lt;/a&gt; as good of a product?&lt;br /&gt;&lt;br /&gt;I used to think it was stupid that people claimed Windows 2000 was 50 times more reliable than Windows 98 -- such precision! such a bold, factual statement! -- but to claim your product is 4,900,000 times better?  That's messed up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-116478556094332744?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/116478556094332744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116478556094332744' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116478556094332744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116478556094332744'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/11/software-quality-metrics.html' title='Software quality metrics'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-116389028523909059</id><published>2006-11-18T17:40:00.000-05:00</published><updated>2006-11-18T17:51:25.253-05:00</updated><title type='text'>Shock and Awe</title><content type='html'>Mostafa Tabatabainejad, a student at UCLA, was using the university's library when he was asked to prove that he was indeed a student.  This is a standard and well-known security policy that is in effect during the evenings.  &lt;br /&gt;&lt;br /&gt;Mostafa refused to present ID, and refused to leave when asked.  Police officers attempting to remove him by force met resistance:  he was tasered, handcuffed and dragged out of the library.&lt;br /&gt;&lt;br /&gt;En route and in handcuffs, he was tasered at least twice more by the police officers.  Outraged students videoed it with their cellphones -- you can see it &lt;a href="http://www.youtube.com/results?search_query=powell+library&amp;search=Search"&gt;here&lt;/a&gt; if you really want.&lt;br /&gt;&lt;br /&gt;I just think it's funny that the next day the student paper describes the student population as being "shocked and frustrated".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-116389028523909059?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/116389028523909059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=116389028523909059' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116389028523909059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/116389028523909059'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/11/shock-and-awe.html' title='Shock and Awe'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-115836547184998330</id><published>2006-09-15T19:25:00.000-04:00</published><updated>2006-09-15T20:13:12.573-04:00</updated><title type='text'>Boo Air Canada</title><content type='html'>Well, I'm back in Waterloo.&lt;br /&gt;&lt;br /&gt;Furfle, however, is not.  The ever graceful baggage handlers at Air Canada broke his CPU mount in transit from Dawson Creek to Toronto.  $800 later and I have a computer which is the third incarnation of Furfle.  However, it contains no original Furfle parts.&lt;br /&gt;&lt;br /&gt;On the plus side, this gave me an excuse to get a computer that was powerful enough to run Windows Vista.  This is good for two reasons: one, I need it to prepare myself for my next work term; and two, it has snazzy speech recognition features.&lt;br /&gt;&lt;br /&gt;In fact, as you might expect, this entry was dictated.&lt;br /&gt;&lt;br /&gt;The ultimate test, however, will be using it to dictate my work term report.  That looks to be the next 48 hours of my life -I'll let you know how it went on Monday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-115836547184998330?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/115836547184998330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=115836547184998330' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115836547184998330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115836547184998330'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/09/boo-air-canada.html' title='Boo Air Canada'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-115554461539963972</id><published>2006-08-14T03:56:00.000-04:00</published><updated>2006-08-14T04:36:55.926-04:00</updated><title type='text'>I'm a bad blogger</title><content type='html'>I'm a crappy blogger.   I've had an amazing summer in Redmond, and I've posted exactly 3 times.  Is my posting in peril?  Am I banishing blogging?  Excel to the rescue!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://cldellow.com/images/blog-posts-graph.png" /&gt;&lt;br /&gt;&lt;br /&gt;(note: graph made in Excel 2000.  Not Excel 2007.  Not Excel 2003.  Not even Excel XP.  Don't tell my bosses, they'll fire me.)&lt;br /&gt;&lt;br /&gt;The general trend seems to be that I post a lot towards the end of terms, and usually mostly on work terms.  So why not this work term?  Didn't I do anything cool?&lt;br /&gt;&lt;br /&gt;Let's see, here the list o' stuff I did in the last 3 months:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mission Impossible: III (&lt;b&gt;May 13&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Took the Underground Tour, and learned about Seattle's origins (&lt;b&gt;May 20&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Watched the Cirque du Soleil's Varekai (&lt;b&gt;May 25&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Attended Bob's 60th birthday party in Vancouver (&lt;b&gt;May 27&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Gave Dad a whirlwind tour of MSFT (&lt;b&gt;May 28&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Climbed the Grouse Grind (&lt;b&gt;June 3&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Watch the 9-o'clock cannon go off in Stanley Park (&lt;b&gt;June 4&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Watched the Twins at the Mariners; extra innings &amp; 2 grand slams (&lt;b&gt;June 7&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; I made Jennifer's day (&lt;b&gt;June 8&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Attended Mike &amp;amp; Adrian's wedding in Saskatoon (&lt;b&gt;June 30-July 2&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Pirates of the Caribbean (&lt;b&gt;July 7&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Microsoft Intern Puzzleday (&lt;b&gt;July 15&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Turned legal drinking age for the 3rd time (&lt;b&gt;July 20&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Jenn visited! During a heatwave, though!  Still, we did:&lt;/li&gt;&lt;ul&gt;&lt;li&gt; The Experience Music Project (&lt;b&gt;July 21&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; The Science Fiction Museum (&lt;b&gt;July 21&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Pike Place Market &amp;amp; the Seattle Festival (&lt;b&gt;July 22-23&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Doubletake Exhibit (&lt;b&gt;July 21&lt;/b&gt;) &lt;/li&gt;&lt;li&gt; Dinner at The Nicest Restaurant We've Ever Eaten At (&lt;b&gt;July 24&lt;/b&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Trivia Night @ Red Hook Brewery (&lt;b&gt;July 26&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Microsoft Intern Game (&lt;b&gt;July 29-30&lt;/b&gt;)&lt;/li&gt;&lt;li&gt; Saw the Blue Angels (&lt;b&gt;August 5&lt;/b&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And, of course, my job, where I coded &lt;b&gt;the Reaper&lt;/b&gt;.  With a name like that, you know it's gotta be cool.&lt;br /&gt;&lt;br /&gt;PS:  Hints for my twisted puzzle from last time:  They're paintings (note that one of them is the Mona Lisa, and the title refers to Holland Berkley, a painter).  The comments next to them are important for two different reasons.  There is an intentional mistake in the labelling of La Gioconda.  And the editor I'm using is VIM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-115554461539963972?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/115554461539963972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=115554461539963972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115554461539963972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115554461539963972'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/08/im-bad-blogger.html' title='I&apos;m a bad blogger'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-115311997468437732</id><published>2006-07-17T02:43:00.000-04:00</published><updated>2006-07-17T03:12:29.070-04:00</updated><title type='text'>9 hours later...</title><content type='html'>I just took part in my first Intern Puzzleday.&lt;br /&gt;&lt;br /&gt;Puzzleday is a themed competition where interns form teams of 10-12 people and attempt to solve 34 puzzles.  The answers to these 34 puzzles are the keys to a 35th puzzle which leads you to the grand solution - for this year, it was King Solvs Afew's missing crown and sword.  Our team was one of the 12 (out of a total of 43) teams to complete the whole solution in the 7 hours allotted.  It was a blast - and probably the tipping point for me in viewing Microsoft as a cool place to work.&lt;br /&gt;&lt;br /&gt;Which is kinda weird.  You'd think having the keys to the kingdom of Watson would be enough, but it turns out it's the crazy people dressed up in robes and tights that did it for me.&lt;br /&gt;&lt;br /&gt;It was total fun - I'll try to blog the highlights of it later, but for the moment, here's an open challenge to anyone who's nerdy enough to solve it:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Colin's Version of Holland Berkley's Announcement&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://cldellow.com/images/ColinsPuzzle.gif" /&gt;&lt;br /&gt;&lt;br /&gt;Apologies for the quick mockup in VIM.  I'm not much of a painter.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Tip for new puzzlers&lt;/b&gt;: Extract a description of the picture.  Then anagram it to something that relates to the title of the puzzle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-115311997468437732?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/115311997468437732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=115311997468437732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115311997468437732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115311997468437732'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/07/9-hours-later.html' title='9 hours later...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-115091207416001124</id><published>2006-06-21T13:47:00.000-04:00</published><updated>2006-06-21T13:47:54.176-04:00</updated><title type='text'>You know things are bad when...</title><content type='html'>...you need to use a 4-processor server with 4GB of RAM to use Excel 2007 effectively.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-115091207416001124?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/115091207416001124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=115091207416001124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115091207416001124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115091207416001124'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/06/you-know-things-are-bad-when.html' title='You know things are bad when...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-115014466894352186</id><published>2006-06-12T16:36:00.001-04:00</published><updated>2006-06-12T16:37:48.956-04:00</updated><title type='text'>SharePoint Designer 2007...</title><content type='html'>makes me want to cry.  It's so close to being super sexy, but it's not quite there. :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-115014466894352186?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/115014466894352186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=115014466894352186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115014466894352186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/115014466894352186'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/06/sharepoint-designer-2007_12.html' title='SharePoint Designer 2007...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114775964721221421</id><published>2006-05-16T02:01:00.000-04:00</published><updated>2006-05-16T02:07:27.226-04:00</updated><title type='text'>Bank of America credit card numbers...</title><content type='html'>can be generated by applying a simple algorithm if you know the person's Bank of America account number.&lt;br /&gt;&lt;br /&gt;And guess how you activate a brand new credit card?  By making a purchase with it.&lt;br /&gt;&lt;br /&gt;Dan and Sarah have received their cards; I haven't.  We're going to see if I can make a purchase with my credit card without having laid eyes on it -- now if only I can find something to buy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114775964721221421?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114775964721221421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114775964721221421' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114775964721221421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114775964721221421'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/05/bank-of-america-credit-card-numbers.html' title='Bank of America credit card numbers...'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114629181486269734</id><published>2006-04-29T02:19:00.000-04:00</published><updated>2006-04-29T03:50:45.030-04:00</updated><title type='text'>For the love of code</title><content type='html'>A lot of programming is CRUD, create/read/update/delete -- the usual operations for business applications.  A lot of programming is also crud -- ugly.&lt;br /&gt;&lt;br /&gt;However, some programming is beautiful.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.nyx.net/~gthompso/quine.htm"&gt;Quines&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;A quine is a source code listing which, when compiled and run, outputs... itself.  Its self-referential aspect and the intellectual challenge of creating such a beast makes it a joy to create.&lt;br /&gt;&lt;br /&gt;e.g., try the following LISP quine out at &lt;a href="http://www.ugcs.caltech.edu/~rona/tlisp/index.html"&gt;this online interpreter&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;    ((lambda (x)&lt;br /&gt;       (list x (list (quote quote) x)))&lt;br /&gt;      (quote&lt;br /&gt;         (lambda (x)&lt;br /&gt;           (list x (list (quote quote) x)))))&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;The Medium is the Message&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;Sometimes, programmers take the idea of programming as an artform too literally.  Can you guess what code to display and allow a user to interact with a maze might look like?  If you guessed something like &lt;a href="http://www.notdot.net/ioccc/maze/prog.c"&gt;this&lt;/a&gt;, you're right!&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Spam Filtering&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;For years programmers tried to deal with spam filtering with a HUGE set of hand-crafted rules based on trial-and-error.  These engines would run into the thousands of lines of code. In 2002, Paul Graham proposed a statistical approach to spam filtering.&lt;br /&gt;&lt;br /&gt;Its engine?  Included below.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-family:Courier,monospace"&gt;&lt;br /&gt;(let ((prod (apply #'* probs))) (/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x)) probs)))))&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Freedom of Speech&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;There was a little bit of a kerfluffle in the world of computers in 2000.  A Norwegian man wrote some code that broke the encryption of DVD videos, allowing them to be freely playable on non-licensed computers (e.g., computers with alternative operating systems).  This also allowed people to make non-encrypted copies for backup and stealing to give away to their friends.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/c-anonymous.c"&gt;small chunk of code&lt;/a&gt;, known as DeCSS, flew around the world.  The United States of America moved to quash the reproduction and sharing of this code as it violated the Digital Millennium Copyright Act's provisions that no one should try to circumvent copyright systems.  Surprisingly, hackers obeyed -- they didn't share the original source code.  Instead, they shared &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/qrpff.pl"&gt;this version&lt;/a&gt;, &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/qrpff-fast.pl"&gt;this version&lt;/a&gt;, &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/hannum-efdtt-source.txt"&gt;this version&lt;/a&gt;, and &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/bowley-efdtt-dvdlogo.html"&gt;this version&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To be fair, these last four links are still all code.  Surely, they too must be in violation of the DMCA?&lt;br /&gt;&lt;br /&gt;But what about this -- a &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/decss-haiku.txt"&gt;haiku&lt;/a&gt; which intermingles a poetic description of the decryption procedure with analysis of the ongoing legal problems?&lt;br /&gt;What about a &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/css_descramble_joe_wecker.mp3"&gt;song&lt;/a&gt; describing the procedure?&lt;br /&gt;What about a &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/Castleman/css_descramble.mid"&gt;melody&lt;/a&gt;, created by mapping the characters of the decrypt function onto musical notes?&lt;br /&gt;&lt;br /&gt;(All resources shamelessly stolen from &lt;a href="http://www.cs.cmu.edu/~dst/DeCSS/Gallery/"&gt;here&lt;/a&gt;.)&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114629181486269734?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114629181486269734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114629181486269734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114629181486269734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114629181486269734'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/for-love-of-code.html' title='For the love of code'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114629080842151056</id><published>2006-04-29T02:02:00.000-04:00</published><updated>2006-04-29T02:06:48.443-04:00</updated><title type='text'>Isn't this one good looking  llama?</title><content type='html'>He just looks so damned content.  Clearly, he's a worldly llama, too -- this is the standard tourist-in-front-of-impressive-landmark picture seen everywhere.  If he were in Maui, he'd have a gorgeous lei on his neck and a pina colada nestled between his forelegs.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://philip.greenspun.com/images/200404-ecuador-peru/200405-machu-picchu/llama-on-patio-3.4.jpg"&gt;&lt;img src="http://philip.greenspun.com/images/200404-ecuador-peru/200405-machu-picchu/llama-on-patio-3.2.jpg"&gt;&lt;/a&gt;&lt;br&gt;&lt;i&gt;Click for larger version.&lt;/i&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114629080842151056?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114629080842151056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114629080842151056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114629080842151056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114629080842151056'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/isnt-this-one-good-looking-llama.html' title='Isn&apos;t this one good looking  llama?'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114608440385750249</id><published>2006-04-26T16:44:00.000-04:00</published><updated>2006-04-26T16:46:43.880-04:00</updated><title type='text'>WatPubs</title><content type='html'>Waterloo people heading out of town for the summer:  Sign up for &lt;a href="http://watpubs.uwaterloo.ca/"&gt;WatPubs&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;It's basically a convenient way for someone to organize social opportunities for interested students.  I'm the WatPub co-ordinator (I think...) for Redmond for summer 2006 - so especially if you're working for MS or Amazon, sign up!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114608440385750249?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114608440385750249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114608440385750249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114608440385750249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114608440385750249'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/watpubs.html' title='WatPubs'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114554601028210932</id><published>2006-04-20T11:12:00.000-04:00</published><updated>2006-04-20T11:13:30.293-04:00</updated><title type='text'>3A is over!</title><content type='html'>Yay!  With CS457's exam done, 3A is finally over and it's time to pack up and head for home.&lt;br /&gt;&lt;br /&gt;Note - a course where 1/3 of the students fail the midterm is a good course.  It means the final exam has questions like: "For 16%, is 10 less than 14?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114554601028210932?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114554601028210932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114554601028210932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114554601028210932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114554601028210932'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/3a-is-over.html' title='3A is over!'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114541914615069558</id><published>2006-04-18T23:57:00.000-04:00</published><updated>2006-04-19T00:00:09.416-04:00</updated><title type='text'>Immigration papers</title><content type='html'>My immigration papers came today.&lt;br /&gt;&lt;br /&gt;I was relieved to see the USA possesses the full complement of alphabetic bureaucratic crap.  I'm the proud owner of a J-1 visa, complete with the DS-2019, G-28, I-94 and I-901 forms to prove it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114541914615069558?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114541914615069558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114541914615069558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114541914615069558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114541914615069558'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/immigration-papers.html' title='Immigration papers'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114420569486439483</id><published>2006-04-04T22:53:00.000-04:00</published><updated>2006-04-04T22:54:54.880-04:00</updated><title type='text'>Microsoft internship</title><content type='html'>So I'll be working in the Office Shared Services group.  Part of this group's mandate is the Error Reporting features you see in Microsoft products (Oops -- your computer crapped itself!  Shall we yell at people at Microsoft for you?)&lt;br /&gt;&lt;br /&gt;I sure hope I'm not working on testing the &lt;span style="font-weight:bold;"&gt;new&lt;/span&gt; Error Reporting features: &lt;a href="http://www.metacafe.com/watch/88657/share_the_pain/"&gt;http://www.metacafe.com/watch/88657/share_the_pain/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114420569486439483?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114420569486439483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114420569486439483' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114420569486439483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114420569486439483'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/microsoft-internship.html' title='Microsoft internship'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114413064940404539</id><published>2006-04-04T01:38:00.000-04:00</published><updated>2006-04-04T02:04:09.456-04:00</updated><title type='text'>User interfaces -- making Windows suck less</title><content type='html'>Windows sucks.  Don't get me wrong, all the other OSes suck, too.&lt;br /&gt;&lt;br /&gt;Why?  Let's talk about MOOs.  They were invented 16 years ago by Pavel Curtis in a research laboratory.  To give you some historical context, this was just before Windows 3.0 was released.  Linux was yet to be created; MacOS was sitting at System 7.  MacOS 7 and Windows 3.0 sucked - they were largely static beasts with little ability to configure them and make them react intelligently to the user.&lt;br /&gt;&lt;br /&gt;MOOs, on the other hand, were amazing beasts.  A MOO is a virtual world on the Internet, divided into rooms and populated with people and the objects they create.  Forget MSN Messenger -- just use the in-MOO paging system.  Forget e-mail and mailing lists -- just use the in-MOO mailing system.&lt;br /&gt;&lt;br /&gt;But what I think was truly the drawing point of MOOs for many of us was the control over your environment that they offered.  &lt;br /&gt;&lt;br /&gt;Want to be in more than one place at once?  Code up some minions to park themselves in other rooms and provide a two-way communications link.  Need discretion?  Code up some detection countermeasures -- but don't get caught, as "bugging" rooms is usually grounds for excommunication from the virtual society.&lt;br /&gt;&lt;br /&gt;Do you find yourself frequently chatting to the same people?  Screw typing repetitive commands over and over again -- bang out some code to have the system remember your last contacts and redirect conversations accordingly.  Not interested in hearing what one person has to say?  Rewrite your communications code to throw everything they send your way into the garbage can.&lt;br /&gt;&lt;br /&gt;So what does this have to do with user interfaces in the context of Windows and its friends?  Well, as I've said, MOOs let you mediate your reality and pretty much every MOOer with a programmer flag had custom routines to interact with their virtual world.  They could do this because they had the confidence that when they logged in, regardless of whether or not they came from school, home or an Internet cafe, they would have the same commands available to them.  The benefits of customizing your reality are limited if you can't get consistency -- indeed, one of the punishments of the virtual society was not banishment from the realm, but rather temporary banishment from your character and its customizations.&lt;br /&gt;&lt;br /&gt;Windows, 16 years later, can't offer me this.  When I'm working on code and need to switch computers, not only do I lose the environment I have customized and launched, but sometimes I lose access to the underlying tools themselves!&lt;br /&gt;&lt;br /&gt;Why can't I take a snapshot of my computer -- including what applications are open, where windows are positioned -- and then transfer it to another computer?  Hell, why can't I define certain contexts, and switch amongst them while working? e.g. a banking context (launch Firefox and log in to TD and RBC); a CS assignment context (load up my editors, connect to the UNIX terminal servers, load up any reference docs I had open).&lt;br /&gt;&lt;br /&gt;Hey, why can't I define contexts on the fly as tasks come to me?  Relevant examples lately in my life:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Apartment search in Redmond&lt;/b&gt; - including websites about Microsoft housing benefits, apartment complexes in Redmond, Gmail virtual folder including all correspondence, notepad with notes about deadlines and next steps&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Finalizing Microsoft intern contracts&lt;/b&gt; - documents to be filled out and faxed, important contacts at Microsoft, receipts that I will need to get reimbursed in a month's time&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Within this context, I can track my ongoing tasks very easily and switch between them effortlessly by calling up their contexts.  When there's no work left to be done in a context, delete it.  Simple as that!&lt;br /&gt;&lt;br /&gt;I'm currently coding up a set up programs that provide this basic functionality -- and that can reside on a USB key, thus allowing me to have my contexts accessible to me on any Windows XP computer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114413064940404539?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114413064940404539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114413064940404539' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114413064940404539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114413064940404539'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/04/user-interfaces-making-windows-suck.html' title='User interfaces -- making Windows suck less'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114298193642675230</id><published>2006-03-21T17:56:00.000-05:00</published><updated>2006-03-21T17:58:56.436-05:00</updated><title type='text'>I'm unhip because I didn't pimp a Web 2.0 product until it was in public beta</title><content type='html'>To prove my hipness, &lt;a href="http://www.riya.com/groundTruth"&gt;Riya's private beta signup link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Oh, and you're in it.&lt;br /&gt;&lt;br /&gt;(Actually, I wonder how that works.  If you register with carbolicsmokeball, will they grant you access to my private photos of you?  Hrm...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114298193642675230?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114298193642675230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114298193642675230' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114298193642675230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114298193642675230'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/03/im-unhip-because-i-didnt-pimp-web-20.html' title='I&apos;m unhip because I didn&apos;t pimp a Web 2.0 product until it was in public beta'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114270838025711079</id><published>2006-03-18T13:58:00.000-05:00</published><updated>2006-03-18T13:59:40.270-05:00</updated><title type='text'>Pandora</title><content type='html'>Do you like music?&lt;br /&gt;&lt;br /&gt;Then check out &lt;a href="http://www.pandora.com"&gt;Pandora.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(Thanks, Jingyuan!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114270838025711079?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114270838025711079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114270838025711079' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114270838025711079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114270838025711079'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/03/pandora.html' title='Pandora'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114211617508155217</id><published>2006-03-11T17:27:00.000-05:00</published><updated>2006-03-11T17:29:35.100-05:00</updated><title type='text'>Dan's addiction</title><content type='html'>My friend Daniel has a problem.  He's got an addiction.  He has incessant cravings.  He just can't get enough... books.&lt;br /&gt;&lt;br /&gt;Yesterday we sat down and tabulated the books that he either owns or has been loaned at gunpoint and told to read.&lt;br /&gt;&lt;br /&gt;The tally sits at just under 10,000 pages contained in 36 books.  Have fun, Dan!  May I recommend David Allen's &lt;a href="http://www.amazon.com/gp/product/0142000280/002-6543716-0544039?v=glance&amp;n=283155"&gt;classic&lt;/a&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114211617508155217?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114211617508155217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114211617508155217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114211617508155217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114211617508155217'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/03/dans-addiction.html' title='Dan&apos;s addiction'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114048005914108222</id><published>2006-02-20T18:55:00.000-05:00</published><updated>2006-02-20T19:00:59.153-05:00</updated><title type='text'>Dvorak keyboards</title><content type='html'>So, I have made one more ergo tweak:&lt;br /&gt;&lt;br /&gt;I have begun typing on a Dvorak keyboard.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mwbrooks.com/dvorak/layout.html"&gt;It's weird&lt;/a&gt;.  But, it offers much more balance between left and right hands as well as much less hand motion in general (think like 50% less).&lt;br /&gt;&lt;br /&gt;But, bah, muscle memory is hard to override!&lt;br /&gt;&lt;br /&gt;(This post took four minutes to type.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114048005914108222?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114048005914108222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114048005914108222' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114048005914108222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114048005914108222'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/dvorak-keyboards.html' title='Dvorak keyboards'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114042349767053212</id><published>2006-02-20T03:17:00.000-05:00</published><updated>2006-02-20T03:18:17.680-05:00</updated><title type='text'>Addendum</title><content type='html'>Also, I've stopped cracking my knuckles.  Although not related to the commoner RSI symptoms, cracking knuckles can apparently cause weakened grip strength.  &lt;br /&gt;&lt;br /&gt;The more you know, eh?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114042349767053212?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114042349767053212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114042349767053212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114042349767053212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114042349767053212'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/addendum.html' title='Addendum'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114041898371624371</id><published>2006-02-20T01:41:00.000-05:00</published><updated>2006-02-20T02:07:30.846-05:00</updated><title type='text'>Tingly Numbness</title><content type='html'>So last week I had this tingling feeling in my hands.&lt;br /&gt;&lt;br /&gt;And occasionally my fingers felt kinda numb.&lt;br /&gt;&lt;br /&gt;And typing was difficult -- my fingers weren't as nimble as they should have been.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do you know how scary that is?  You do -- great! Now imagine you're me.  I exist through my computer.  It's how I communicate, how I learn, and how I do my work.  It  is probably the most consistent source of joy in my life.  Call me a nerd, but I love seeing what technology can do.  I love how it connects people.  My computer, but more so my ability to type, is largely, horribly, irreversibly tangled up in my definition of self.&lt;br /&gt;&lt;br /&gt;Now picture this scenario if you were me: the one tool that has defined you since you were 5 and you cannot use it.  Even though you have the knowledge within your brain to make great things happen, you cannot force your hands to make real the impulses you have.  The nerves just aren't doing their job.  Sorry, Colin: no love for you today!  Try sleeping... maybe tomorrow the problem will just magically go away!&lt;br /&gt;&lt;br /&gt;And for a week, I did just that.  I slept, and I hoped.  I slept, and I hoped.  I slept, and I hoped.  I slept, and I hoped.  By the time I got in to see the doctor, the problem had (mostly) gone away.  The doctor told me I had aggravated my ulnar nerve likely based on how I sit.  Nothing to worry about, just pay more attention.  And today, I feel mostly back to normal.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But for a week, I was silently scared shitless.  Know the feeling you get when you whack your funny bone?  That's because you've pissed off your ulnar nerve.  So, while it was great to hear that I probably don't have RSI, I was, to repeat myself, absolutely scared shitless.  Living with a lifelong buzzing in my arms is NOT what I envisioned when I was young.&lt;br /&gt;&lt;br /&gt;So I'm treating this as an enormously lucky break and the world's loudest wake-up call.  I've done a lot of research into RSI and ergonomics.  I'm ditching my &lt;a href="http://www.hi-ho.ne.jp/vine/keyboard/image/kb0133/1.jpg"&gt;$10 existing keyboard&lt;/a&gt; for a &lt;a href="http://keyovation.com/images/Product/large/17.jpg"&gt;$130 ergonomically happy keyboard&lt;/a&gt;.  &lt;span style="font-weight:bold;"&gt;The benefits&lt;/span&gt;:  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Less force to depress individual keys&lt;/li&gt;&lt;li&gt;Much more neutral pronation in the wrists&lt;/li&gt;&lt;li&gt;Non-alphanumeric keys are distributed equally over left/right hands (e.g. function keys, arrow keys, page down/up, home/end)&lt;/li&gt;&lt;li&gt;Narrower profile on desk, enabling mouse to be closer to body&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I'm also going to pick up a $10 &lt;a href="http://www.canadacomputers.com/ProductImages/001031/377.jpg"&gt;gel mousepad with wrist support&lt;/a&gt;.  My &lt;a href="http://www.jdr.com/images/products/L/logi-mx500.jpg"&gt;mouse&lt;/a&gt; is a moderately ergonomic one, and I think with wrist support and being that much closer to my body due to the new keyboard's reduced profile, it'll be just fine.  Plus it was a Valentine's day gift from Jenn -- it's got sentimental value!&lt;br /&gt;&lt;br /&gt;As well, I've installed &lt;a href="http://www.workrave.org/welcome/"&gt;Workrave&lt;/a&gt;.  It's a free program for Windows, Mac and Linux to remind you to take rest breaks as well as micropauses throughout the day.  It'll even lock your computer to encourage recalcitrant people to take breaks.&lt;br /&gt;&lt;br /&gt;Lastly, I'm doing research into &lt;a href="http://www.mydailyyoga.com/full_body_stretch.html"&gt;daily stretches&lt;/a&gt; I can do strengthen the weaker muscles in my hands, wrists and arms.&lt;br /&gt;&lt;br /&gt;If you're a computer nerd and you've had any of the symptoms of RSI -- weak grip, tingling, numbness, clumsiness, difficulty sleeping due to your wrists/hands, pain in the upper arms, pain in the forearms -- go see a doctor!  And start doing research on typing injuries!  And if you're not in pain now... remember this blog post just in case something happens in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114041898371624371?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114041898371624371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114041898371624371' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114041898371624371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114041898371624371'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/tingly-numbness.html' title='Tingly Numbness'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114007198173451063</id><published>2006-02-16T01:21:00.000-05:00</published><updated>2006-02-16T01:39:41.746-05:00</updated><title type='text'>Google Groups</title><content type='html'>so, in case any one of my loyal readers should go snooping on Google Groups, let me address some issue that will doubtless pop up.&lt;br /&gt;&lt;br /&gt;The issue is about &lt;a href="http://groups.google.com/group/k12.ed.tag/browse_thread/thread/b127fd81f1950003/559a1054fcb48b82?lnk=st&amp;q=colin+dellow&amp;rnum=76#559a1054fcb48b82"&gt;this message right here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lemme quote what "Colin Dellow" said: &lt;blockquote&gt;I feel that the government is spending too much money on things that we can gert by without. People are living without necessities due to the goverments taxes. Its time to start cutting out some things which aren't vitally important. These kids will still be able to find work.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now, sure, I was raised in a &lt;a href="http://en.wikipedia.org/wiki/Prince_George%E2%80%94Peace_River#Election_results"&gt;rather conservative part of Canada&lt;/a&gt;. And hey, I'm a precocious kid -- look at me &lt;a href="http://groups.google.com/group/comp.os.msdos.djgpp/browse_thread/thread/10a8e5c5b0f21007/b879e05fa72d13a6?lnk=st&amp;q=colin+dellow&amp;rnum=70#b879e05fa72d13a6"&gt;here&lt;/a&gt;, age 13, asking a group of C programmers which is the better TCP library to use:  Waterloo's stack or DJ Delorie's.&lt;br /&gt;&lt;br /&gt;But come on.  I'm suggesting we should cut funding for gifted programs at age &lt;span style="font-weight:bold;"&gt;EIGHT&lt;/span&gt; ?  That puts me in grade three.  In a school that doesn't even receive funding for gifted programs.  Now sure, perhaps my adolescent self was royally embittered at the bastards in the public system, with their marble urinals, their gold-plated drinking fountains and their 5-to-1 teacher-to-student ratio.&lt;br /&gt;&lt;br /&gt;Or maybe my brother "typoed" his name.  For crying out loud, this wasn't even sent on Usenet -- it was sent on FidoNet.  If you're not a big techie nerd, an analagous statement would be: &lt;i&gt;For crying out loud, this wasn't even transmitted via telephonic wires -- it was sent via carrier pigeon.&lt;/i&gt; Hell, I'm surprised "Colin" didn't have a Flock of Seagulls lyric in his signature block.  And a mullet.  And clothes in neon orange and green hues.  And the middle name Paul.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114007198173451063?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114007198173451063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114007198173451063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114007198173451063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114007198173451063'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/google-groups.html' title='Google Groups'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-114007084512883723</id><published>2006-02-16T01:17:00.000-05:00</published><updated>2006-02-16T01:20:45.140-05:00</updated><title type='text'>OARBS gets a news article</title><content type='html'>OARBS recently got &lt;a href="http://cldellow.com/files/metro-page28.pdf"&gt;a positive article (warning: pdf)&lt;/a&gt; in the &lt;a href="http://www.metronews.ca/"&gt;Toronto Metro&lt;/a&gt;, a commuter paper with an estimated circulation of 400,000.  &lt;br /&gt;&lt;br /&gt;The story's basically a hometown-kid-does-good fluff piece on Dan and has already generated 3 inquiries today.  Huzzah!&lt;br /&gt;&lt;br /&gt;For some reason though, the thing that makes me most giddy is the fact that I now have &lt;a href="http://news.google.com/news?svnum=10&amp;hl=en&amp;lr=&amp;tab=in&amp;ie=UTF-8&amp;q=colin+dellow&amp;btnG=Search+News"&gt;a hit on Google News&lt;/a&gt; in addition to my hits on Googles Web, Local, Images and Groups  (can you tell?  Google is my Pokemon.  Collect them all!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-114007084512883723?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/114007084512883723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=114007084512883723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114007084512883723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/114007084512883723'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/oarbs-gets-news-article.html' title='OARBS gets a news article'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-113919318106576055</id><published>2006-02-05T21:31:00.000-05:00</published><updated>2006-02-05T21:33:01.080-05:00</updated><title type='text'>Seattle</title><content type='html'>What do two procrastinating nerds do with Google Earth, a broadband internet connection, high school algebra, PERL and a variety of songs?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.danielmarantz.com/fun/seattle.wmv"&gt;They make a video&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-113919318106576055?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/113919318106576055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=113919318106576055' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/113919318106576055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/113919318106576055'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/seattle.html' title='Seattle'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7021685.post-113911079185872491</id><published>2006-02-04T22:33:00.000-05:00</published><updated>2006-02-04T22:39:51.866-05:00</updated><title type='text'>The Corporate Monopoly That Refreshes</title><content type='html'>...it's like &lt;a href="http://local.live.com/default.aspx?v=2&amp;ss=1%20microsoft%20way%2c%20redmond~1%20microsoft%20way%2c%20redmond%2c%20wa&amp;cp=47.64327~-122.124979&amp;style=o&amp;lvl=2&amp;scene=3729994&amp;sp=adr.1%20Microsoft%20Way%2c%20Redmond%2c%20WA%2098052"&gt;they knew I was coming&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Other cool things that Dan and I found on the Microsoft campus:&lt;br /&gt;* &lt;a href="http://local.live.com/default.aspx?v=2&amp;cp=47.641927~-122.126143&amp;style=o&amp;lvl=1&amp;scene=3729994&amp;sp=adr.1%20Microsoft%20Way%2c%20Redmond%2c%20WA%2098052"&gt;Very foresty parking lots&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://local.live.com/default.aspx?v=2&amp;cp=47.642125~-122.12903&amp;style=o&amp;lvl=1&amp;scene=3729994&amp;sp=adr.1%20Microsoft%20Way%2c%20Redmond%2c%20WA%2098052"&gt;Beach volleyball courts, soccer fields and baseball diamonds&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7021685-113911079185872491?l=cldellow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cldellow.blogspot.com/feeds/113911079185872491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7021685&amp;postID=113911079185872491' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/113911079185872491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7021685/posts/default/113911079185872491'/><link rel='alternate' type='text/html' href='http://cldellow.blogspot.com/2006/02/corporate-monopoly-that-refreshes.html' title='The Corporate Monopoly That Refreshes'/><author><name>Colin!</name><uri>http://www.blogger.com/profile/15116594874775755604</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='22' src='http://cldellow.com/images/colin-at-cn-tower.jpg'/></author><thr:total>1</thr:total></entry></feed>
