<?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-2297930581307730725</id><updated>2011-08-05T09:48:35.876-07:00</updated><category term='motivation'/><category term='te:2'/><category term='exercise'/><category term='te:5'/><category term='beer'/><category term='travel'/><category term='te:3'/><category term='ireland'/><category term='distance:short'/><category term='tdc'/><category term='howto'/><category term='haskell'/><category term='te:4'/><category term='internet'/><category term='programmming'/><category term='tasting'/><category term='cycling'/><category term='alc'/><category term='wine'/><category term='website design'/><category term='dublin'/><category term='distance:medium'/><title type='text'>My Awesome Blag</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2785512760907961501</id><published>2007-12-11T07:23:00.001-08:00</published><updated>2008-06-24T15:33:41.940-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Let's work on your timing</title><content type='html'>Our cable internet is down as I &lt;del&gt;right&lt;/del&gt; write this, so I'm on hold with Comcast.  Perhaps they should put a little thought into what they advertise on the phone.  After I had selected the choices for "problem with internet" -&gt; "no connection," they still wanted to advertise their phone service and online troubleshooting feature.  Really?  They think I'm going to be receptive to getting phone service when my internet service is completely unavailable?  And an online troubleshooter, as &lt;a href="http://www.linkstew.org/2007/07/the-website-is-not-designed-for-interactive-use/"&gt;interactive&lt;/a&gt; as it is, is not going to be of use if I CAN'T GET ONLINE.&lt;br /&gt;&lt;br /&gt;In other news, &lt;a href="http://comcastmustdie.com/"&gt;comcastmustdie.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2785512760907961501?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2785512760907961501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2785512760907961501' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2785512760907961501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2785512760907961501'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/12/lets-work-on-your-timing.html' title='Let&apos;s work on your timing'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-4691731357298712003</id><published>2007-11-14T18:54:00.000-08:00</published><updated>2007-11-14T21:21:00.130-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>OK, let's try this again</title><content type='html'>Here's an update:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tour d'Organics&lt;/span&gt;: A bike ride with the AIDS/Lifecycle crew.  We were one of the few groups to do the century option, so when we finished the food was almost gone.  This would have been disappointing, except all the food was vegan in addition to organic.  Where's the beef?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/jimblomo/1436820918/" title="Washington Monument by Jim.Blomo, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1339/1436820918_dde4bd6332.jpg" alt="Washington Monument" height="500" width="375" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;S and I went to &lt;span style="font-weight: bold;"&gt;Washington DC&lt;/span&gt; to visit her brother.  I was surprised how collegiate the city felt, students scurrying to class were much more prevalent than the suits I imagined.  Seeing how slowly people drove during off-hours, I can see why traffic becomes such a nightmare with more people on the road.&lt;br /&gt;&lt;br /&gt;S, D, R and I went to the &lt;span style="font-weight: bold;"&gt;Ghiradelli Chocolate Festival&lt;/span&gt;.  We "conservatively" got 45 tastings between the 4 of us and by the end of the day swore off chocolate for a week.  My favorite was mousse brownies.  On the way back we stopped by an art gallery.  I asked one of the docents, "I saw a painting of a campfire on a beach when I was here a few months ago.  Do you have the name of the artist?"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.franklinbowlesgallery.com/Shared_Elements/ArtistPages/Horowitz/pages/oils/HORO2340C.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px;" src="http://www.franklinbowlesgallery.com/Shared_Elements/ArtistPages/Horowitz/pages/oils/HORO2340C.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Within minutes S and I found ourselves in the "viewing room" with the docent, who had fetched the painting from an upstairs office, and the manager.  Dimming the lights to show the layers of the painting, the manager explained Larry Horowitz's techniques for painting, his history, and how this gallery had found him.  Soon after hearing the $3500 price tag, though, we had to say goodbye.&lt;br /&gt;&lt;br /&gt;Later that week, I saw the &lt;span style="font-weight: bold;"&gt;Oakland A's&lt;/span&gt; lose for the second time this season.  Getting a hotdog in that stadium is tortuous: an extremely inefficient serving process combined with unmotivated workers means that you have to spend an inning waiting for precooked food.&lt;br /&gt;&lt;br /&gt;Closing out September was a trip to &lt;span style="font-weight: bold;"&gt;Yosemite&lt;/span&gt;.  As we summited a trail that had passed Vernal falls and topped out at Nevada falls, it began to hail. Back at Curry Village that night, we celebrated with beer and pizza.  Before leaving, we did a hike to Tafte Point, stopping for a pleasant sit on one of the crevasses.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/jimblomo/1436887698/" title="Scenic seating by Jim.Blomo, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1262/1436887698_b6b3074948.jpg" alt="Scenic seating" height="375" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In November I saw friends from out of town, as well as went out of town to visit &lt;span style="font-weight: bold;"&gt;family&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Last week I celebrated my birthday at one of my favorite bars, Zeitgeist.  It was a lively night; interesting conversations over a medium tasty beers and punctuated with rounds of "Happy Birthday."  In recovery mode over that weekend, S revealed her surprise: a getaway to &lt;span style="font-weight: bold;"&gt;Santa Cruz&lt;/span&gt;.  Secluded bed and breakfast, watching surfing competitions, spa and sauna, beer and wine tasting, a hike through a monarch habitat to the beach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/kudaker/1712749690/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px;" src="http://farm3.static.flickr.com/2079/1712749690_891c6239d9.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-4691731357298712003?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/4691731357298712003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=4691731357298712003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/4691731357298712003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/4691731357298712003'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/11/ok-lets-try-this-again.html' title='OK, let&apos;s try this again'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1339/1436820918_dde4bd6332_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-4307808733827272969</id><published>2007-08-22T21:21:00.000-07:00</published><updated>2007-08-30T12:07:24.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>As Promised</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/hinathan/sets/72157601407283980/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm2.static.flickr.com/1234/1102864573_ee7cc2edfb_d.jpg" alt="" border="0" /&gt;&lt;/a&gt;This was my office for a week in Niwot, Colorado.  We played, we brainstormed, we drank, we recovered from a datacenter power outage; it was a blast.&lt;br /&gt;&lt;br /&gt;This week I got my bike tuned up and I'm preparing for my first big ride since AIDS/Lifecycle.  Today I took &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;amp;geocode=&amp;saddr=Central+Expy+%26+Farley+St,+Mountain+View,+CA+94043&amp;amp;daddr=Alameda+de+Las+Pulgas+%4037.431790,+-122.201520+to:Alameda+de+Las+Pulgas+%4037.507410,+-122.288570+to:Crystal+Springs+Rd+%4037.555260,+-122.336630+to:Occidental+Ave+%4037.569560,+-122.349040+to:Occidental+Ave+%4037.576360,+-122.352420+to:California+Dr+%4037.585030,+-122.357570+to:California+Dr+%4037.597730,+-122.385090+to:Broadway+%4037.599650,+-122.390140+to:Palmito+Dr+%4037.612300,+-122.404440+to:Santa+Teresa+Way+%4037.612560,+-122.407270+to:903+Sneath+Ln,+San+Bruno,+CA+94066&amp;mrcr=0&amp;amp;mra=pe&amp;sll=37.593832,-122.389069&amp;amp;sspn=0.103509,0.136642&amp;ie=UTF8&amp;amp;z=11&amp;amp;om=1"&gt;this route&lt;/a&gt; up to work.  If you don't mind a few surprise hills, Alameda provides an interesting route north.  Varied neighborhoods, car free stretches, and a number of chances to get out of the saddle, today's ride was doubly rewarding.  Sunday's ride is the &lt;a href="http://www.tourdorganics.com/"&gt;Tour d'Organics&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-4307808733827272969?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/4307808733827272969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=4307808733827272969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/4307808733827272969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/4307808733827272969'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/08/as-promised.html' title='As Promised'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-7942113075100095939</id><published>2007-08-07T07:17:00.000-07:00</published><updated>2007-08-07T08:02:34.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Traveling</title><content type='html'>Looks like it's been a while.  I've mostly been traveling.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Boston&lt;/span&gt;&lt;br /&gt;S was finishing her rotational program at J&amp;J, so I went out to visit.  The &lt;a href="http://maps.google.com/maps?f=q&amp;amp;amp;amp;hl=en&amp;geocode=&amp;amp;q=39+Dalton+St,+Boston,+MA+02199&amp;sll=42.345033,-71.084815&amp;amp;sspn=0.004227,0.008229&amp;amp;ie=UTF8&amp;ll=42.351218,-71.083174&amp;amp;spn=0.016904,0.032916&amp;z=15&amp;amp;amp;amp;amp;iwloc=addr&amp;om=1"&gt;hotel&lt;/a&gt; was nicely situated between Fenway, MIT, and the Boston Public Gardens, all of which I got to visit while walking around.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/pearbiter/144035733/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/54/144035733_688bdb0377.jpg" alt="" border="0" /&gt;&lt;/a&gt;We had to wait 45 minutes to go on the Sam Adams brewery tour, but the beer at the end made it worth it.  The tour itself was pretty short, but the host was funny and knowledgeable.  The real standouts of the trip were our two meals at &lt;a href="http://www.yelp.com/biz/Z-B8gnI3yiulysG2QphooQ"&gt;Neptune Oyster&lt;/a&gt; where we had raw oysters from all over the country and some of the best fish I've ever had.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Forest Hill&lt;/span&gt;&lt;br /&gt;A friend I've known since 3rd grade got married over the weekend, and I was a bridesmaid :)  I don't have any pictures of the wedding up yet, but here's a preview (a different wedding):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm2.static.flickr.com/1220/872073095_5325cf0dc3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm2.static.flickr.com/1220/872073095_5325cf0dc3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;She has such a great group of friends and I had fun from the rehearsal through the after parties.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Colorado&lt;/span&gt;&lt;br /&gt;I'm writing this from Niwot, CO where PBwiki is having a strategery retreat.  Pictures will also be coming from much better photographers than I.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-7942113075100095939?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/7942113075100095939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=7942113075100095939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7942113075100095939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7942113075100095939'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/08/traveling.html' title='Traveling'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/54/144035733_688bdb0377_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-7559581629388719361</id><published>2007-06-27T23:50:00.000-07:00</published><updated>2007-06-27T23:51:57.564-07:00</updated><title type='text'>Orwell, PBWiki, and more biking</title><content type='html'>OK, this will be a scatter shot post since I have a few things to talk about, but not enough time to write full entries.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Orwell&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.orwell.ru/library/essays/politics/english/e_polit"&gt;&lt;br /&gt;This is the best essay&lt;/a&gt; I've read in a while, though after reading and agreeing with it, one is constantly in fear of violating it's advice.  What I like most about the essay is Orwell's ability to demonstrate the alternative to dreary writing: he tells of an author using "an accumulation of stale phrases [that] chokes him like tea leaves blocking a sink" and a sentence in which "A mass of Latin words falls upon the facts like soft snow, blurring the outline and covering up all the details."&lt;br /&gt;&lt;br /&gt;I would love for artists to apply this advice to their lyrics and songs.  I don't need to hear another &lt;a href="http://s3.amazonaws.com/jims_public/nickelbacksucks.mp3"&gt;identical&lt;/a&gt; song asking me to "hold on to me, and never let me go."  Does that make you envision anything unique or memorable?  To contrast, "a kiss on your molten eyes" is a wonderful line from the Shins that engages many senses to make the song more intimate.  "Love is watching someone die" is a direct lyric from Death Cab for Cutie that begs for discussion and thought.  Postal Service gives even cliched metaphors more realism with "Will someone please call a surgeon \Who can crack my ribs and repair this broken heart."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pbwiki.com/"&gt;&lt;span style="font-size:130%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PBWiki&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I changed &lt;a href="http://blog.pbwiki.com/2007/06/26/welcome-to-our-newest-engineer-jim-blomo/"&gt;jobs&lt;/a&gt;!  This is my second week at a start up that hosts websites that anyone can edit.  Running a &lt;a href="http://drewbookclub.pbwiki.com/"&gt;book club&lt;/a&gt;, &lt;a href="http://poisoniivy.pbwiki.com/SouthAmerica"&gt;coordinating travel plans&lt;/a&gt;, or &lt;a href="http://haskell-tetris.pbwiki.com/cs347"&gt;taking notes&lt;/a&gt; for your CS class?  Make a wiki and let me know how it goes.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Rescomp&lt;/span&gt; and my various small projects are like living alone: you get to have almost complete control over your situation, but it's somewhat lonely.  A9 was like living with your family: you have a lot of resources, but always have someone looking over your shoulder, telling you how &lt;span style="font-style: italic;"&gt;they&lt;/span&gt; want it done.  I don't know what &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;PBWiki's&lt;/span&gt; metaphor will be, which is exactly the experience I wanted; "Fight the temptation to choose the clear, safe course. That path leads ever down into stagnation."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;In the saddle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One thing that has not changed is my enthusiasm for biking.  J and I completed the Page Mill-Skyline-La Honda loop, with the obligatory stop at Alice's.  I've started a more varied, aerobic workout that I hope will increase my sprinting abilities.  I'll let you know how the Old La Honda test goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-7559581629388719361?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/7559581629388719361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=7559581629388719361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7559581629388719361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7559581629388719361'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/05/orwell-pbwiki-and-more-biking.html' title='Orwell, PBWiki, and more biking'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-5675703177785023339</id><published>2007-06-18T23:05:00.000-07:00</published><updated>2007-08-07T08:05:35.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='te:2'/><category scheme='http://www.blogger.com/atom/ns#' term='distance:short'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>Bay Trail</title><content type='html'>I wanted to take it easy my first time back on the bike after the ride, so I set out to explore some of the &lt;a href="http://www.baytrail.org/"&gt;San Fransisco Bay Trail&lt;/a&gt;.  The Southbay has a lot of surprises: Sunday I discovered a little park that overlooked the bay, complete with picnickers, a small lake with kayakers, and many families on bike.  Unfortunately, the path behind Mofit Field is incomplete, so I had to take the long way around to get to the Sunnyvale sections.&lt;br /&gt;&lt;br /&gt;Riding this loop was quite a difference.  For starters, the trail is gravel, which I foolishly believed would just be temporary.  I road on, simultaneously hoping for smooth asphalt and trying to convince myself that this could be justification for buying a mountain bike.  The loop takes you by the lovely water treatment plant, with it's accompanying lovely smells of sewage.  Asphalt is most useful spread on the ground for your riding comfort, not piled up on the side of the road, which is where I finally came across it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/jimblomo/567651002/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm2.static.flickr.com/1420/567651002_adaaee97b3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Yes, that's correct: the road had actually been de-paved.  My &lt;a href="http://www.performancebike.com/shop/Profile.cfm?SKU=21122"&gt;carbon renforced&lt;/a&gt; tires prevailed, though, and despite some fierce crosswinds I completed the loop without an accident.  Without being pooped on either: I managed to disturb a huge flock of seagulls who proceeded to circle over me.  Continuing the bird theme, I surprised a hawk while biking by its hiding place.  What do hawks hide from?  Well, as soon as it was out in the open, a group of crows started cawing and diving at it, chasing it 3 blocks along my route.  "Common, you're a &lt;span style="font-weight: bold;"&gt;hawk&lt;/span&gt;," I wanted to yell, "end those jerks."  Oh well, sorry about that, Mr. Hawk.&lt;br /&gt;&lt;br /&gt;Even with some misadventures, being back on the bike was a great feeling.  I look forward to navigating the rest of the Bay Trail soon.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-5675703177785023339?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/5675703177785023339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=5675703177785023339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/5675703177785023339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/5675703177785023339'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/06/bay-trail.html' title='Bay Trail'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1420/567651002_adaaee97b3_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-7847239760268599954</id><published>2007-06-12T17:41:00.000-07:00</published><updated>2007-06-12T20:11:51.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alc'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>I've Returned!</title><content type='html'>The AIDS/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Lifecycle&lt;/span&gt; was an amazing experience again.  I met another great set of people, stayed free of injuries, and felt much more confident on the bike this year.  Here are a few interesting things I discovered on this year's ride:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I didn't miss TV at all.  Talking with new people let me hear all the interesting stories I could want.&lt;/li&gt;&lt;li&gt;It's weird not seeing yourself for a long time.  I only shaved twice on the trip, which were also the only two times I saw myself in a mirror.  It was a strange feeling realizing you're not sure what you look like after all the sun and riding.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm2.static.flickr.com/1197/541901394_e2c35d8ace.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm2.static.flickr.com/1197/541901394_e2c35d8ace.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;People can snore really loudly.  At one point two people seemed to be having a snore war; I don't know how they are even breathing hard enough to produce noise at that volume.&lt;/li&gt;&lt;li&gt;I always looked forward to riding.  I'm taking this week off to let my butt recover, but I'm looking forward to the next time I'm in the saddle.&lt;/li&gt;&lt;/ul&gt;Thanks again to everyone who donated and supported me.  I look forward to riding with many of you in the future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-7847239760268599954?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/7847239760268599954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=7847239760268599954' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7847239760268599954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7847239760268599954'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/06/ive-returned.html' title='I&apos;ve Returned!'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1197/541901394_e2c35d8ace_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-8569416187634322837</id><published>2007-05-19T17:29:00.001-07:00</published><updated>2007-05-20T12:04:32.019-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='te:3'/><category scheme='http://www.blogger.com/atom/ns#' term='alc'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><category scheme='http://www.blogger.com/atom/ns#' term='distance:medium'/><title type='text'>Are You Ready?</title><content type='html'>Last year, not knowing what to expect on the ride, I was over prepared.  This turned out to be great, though: I was able to have fun on the ride, lead a lot of drafting lines, and do harder &lt;a href="http://www.santacruzcycling.org/scmc/2006/index.shtml"&gt;events&lt;/a&gt; later in the year.  This year, I have not had as much time to prepare, but I still feel ready.&lt;br /&gt;&lt;br /&gt;Yesterday, J and I did &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;amp;saddr=Central+Expy+%26+Farley+St,+Mountain+View,+CA+94043&amp;daddr=130+Lytton+Ave,+Palo+Alto,+CA+94301+to%3ASand+Hill+Rd+%26+Whiskey+Hill+Rd,+Menlo+Park,+California+94025+to%3AJefferson+Ave+%26+Canada+Rd,+Redwood+City,+California+94062+to%3A80+canada+road,+94061+to%3Ahwy+35+%26+hwy+92,+san+mateo,+ca+to%3Askyline+and+hayne,+san+mateo,+ca&amp;amp;mrcr=3&amp;sll=37.524975,-122.214661&amp;amp;sspn=0.249957,0.479279&amp;ie=UTF8&amp;amp;ll=37.471043,-122.216721&amp;spn=0.250137,0.479279&amp;amp;z=11&amp;om=1"&gt;50 mile ride&lt;/a&gt; up to the Crystal Springs Reservoirs.  Today, in an effort to practice back-to-back days on the saddle, I'm going try &lt;a href="http://maps.google.com/maps?f=d&amp;amp;hl=en&amp;saddr=Farley+%26+central+expy,+CA+94043&amp;amp;daddr=130+Lytton+Ave,+Palo+Alto,+CA+94301+to%3Aalameda+de+las+pulgas+%26+woodside,+woodside,+ca+to%3Atunitas+creek+%26+skyline,+woodside,+ca+to%3Atunitas+creek+%26+hwy+1,+san+gregorio,+ca+to%3Ahwy+1+%26+pescadero+creek,+pescadero,+ca+to%3Apescadero+creek+%26+dearborn+park,+loma+mar,+ca+to%3Askyline+%26+page+mill,+palo+alto,+ca+to%3AFarley+%26+central+expy,+CA+94043&amp;mrcr=7&amp;amp;sll=37.35273,-122.25002&amp;sspn=0.250533,0.479279&amp;amp;ie=UTF8&amp;ll=37.352693,-122.25174&amp;amp;spn=0.250533,0.479279&amp;z=11&amp;amp;om=1"&gt;this ride&lt;/a&gt; out to the Pacific.  Riding these distances is very liberating; with planning, I can basically travel anywhere in the Bay area without relying on anything other than my bike and my own legs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-8569416187634322837?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/8569416187634322837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/8569416187634322837'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/05/are-you-ready.html' title='Are You Ready?'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-3658338093445313756</id><published>2007-05-09T19:56:00.000-07:00</published><updated>2007-05-29T20:44:00.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmming'/><title type='text'>What We Do</title><content type='html'>"I'm programming in the Bay Area," I usually reply.  This superficial answer is unfortunately about as deep as non-tech people want to hear.  Computer science has the dubious distinction of being the most popular profession that most people don't understand.  It's certainly not helped by a media image of a loan hacker sitting in front of a glowing screen in a dark room.  I'm going to try to boil it down so that my mom and sister can understand the basic areas of the computer profession.  I try to avoid metaphors because I want people to understand what I *do* do, not what I "like" do.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Coders&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, maybe not the best group to start with, since this group includes the load hacker in the dark room.  But more commonly, these are the folks that write detailed instructions which tell the computer how to handle specific situations.  For example, at Amazon, when you search for products, the words you type in the box have certain rules applied to them.  When you type "shirts" products labeled with "shirt" need to come up, so you need a rule to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;singularize&lt;/span&gt;&lt;/span&gt; the words.  But think about the English language: this isn't easy.  Boxes, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;hoodies&lt;/span&gt;&lt;/span&gt;, shoes.  So a coder needs to come up with instructions to handle all of these cases, the rule to "remove the last 's' from words that end in s" will only be a part of it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Engineers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Computer engineers take real world problems, break them down into smaller sub-problems, and describe a general way to solve them.  Coders take that general solution and write specific instructions to the computer to solve the sub-problem.  Continuing the search example, engineers took a problem -- how can people find products they're looking for? -- and broke it into sub-problems: if people tell us what they're looking for, how can we give them suggestions? if we have a list of suggestions, how can we show them?  Then they arrive at a general solution: people type in a short description of the desired product to tell us, we make a list of products that have all of the words they're looking for in their description, then we show some of the products on the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;web page&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Operations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is my group.  'Ops' is in charge of keeping the software running.  Sometimes programs crash; we develop software called 'cradles' which can restart a program in the event of a failure.  Sometimes programs get overloaded when everyone logs in at once to begin their Christmas shopping; we set up new computers and faster networks to handle increased number of users.  Sometimes software mysteriously starts running slower than usual; we discover assumptions that coders or engineers made that aren't valid and try to work around them.  One example is if a machine runs out of disk space.  We either produce software that detects this and removes old files, or do it manually.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Quality Assurance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;QA&lt;/span&gt;&lt;/span&gt; teams develop and run tests against the software.  They make sure that a search for 'shoes' matches products with 'shoe,' not '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;sho&lt;/span&gt;&lt;/span&gt;.'  Many techniques are involved in this: regression (comparing a new version of the software to the old), unit test (compare each part of the software, for example just feeding words into the part of the software the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;singularizes&lt;/span&gt;&lt;/span&gt;), corner cases (what happens in weird situations like using foreign languages).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Scientist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Computer scientists usually write two types of research: papers which solve hypothetical problems, or papers which analyze a class of solutions.  The hope is that hypothetical problems will eventually become real problems for the former, or that by analyzing a class of solutions, an improved solution to an existing problem will make itself apparent.  For the class I am taking, an example of the former is papers from the 1980s which try to solve how computers should keep in sync with each other: when I transfer money to your bank account, that money shouldn't disappear, it should either be in my account or yours.  However, the techniques that were proposed at that time aren't working so well, so more recent papers are analyzing the techniques that engineers ended up implementing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Now You Understand Completely&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, not really.  It turns out that most jobs are a combination on these fields.  Engineers often code the specific instructions after they describe the general solution.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;QA&lt;/span&gt;&lt;/span&gt; folks have to understand what real world problems a program is trying to solve in order to think of test cases.  Scientists work with companies to develop solutions for specific problems.&lt;br /&gt;&lt;br /&gt;Additionally, this is just a taxonomy I wrote down after a little thought.  Certainly there can be other ways to organize the field, and you won't get a definitive answer if you ask people "what category are you in?"  Hopefully, though, this can give you a background for some of the issues that are discussed around the computer industry.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Outsourcing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Coding jobs are the main target of outsourcing.  Because the process of coding is often closed -- general solution in, computer instructions out -- coding teams can be separated from the end customer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Schools&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Universities want to produce engineers, but often they produce a mix of the worst qualities of  scientists and coders.  They produce a scientist's attention to implementation details and a coder's attention to the overall problem being solved.  Classroom projects are run in an academic setting and don't need to worry about security, portability, or decade long &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;maintenance&lt;/span&gt; issues.  Without a bigger picture, coders can product instructions that are technically correct, but which fail to anticipate customer needs and implicit requirements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;"Why aren't you programming?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Graduate classes in computer science focus on the science aspect, not coding.  That's why my assignments don't involve programming and why professors often need help setting up their Windows computer.  When programming is involved, it is used to assess how well you understand a problem.  If you can write instructions to the computer for every situation in a problem space, then you've demonstrated good comprehension of the problem and solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Story Continues?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agree, disagree?  Write comments :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-3658338093445313756?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/3658338093445313756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=3658338093445313756' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/3658338093445313756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/3658338093445313756'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/05/what-we-do.html' title='What We Do'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-48965354101193499</id><published>2007-05-06T16:13:00.000-07:00</published><updated>2007-05-06T16:50:56.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alc'/><title type='text'>Take that, AIDS!</title><content type='html'>First, the awesome news: because of the generosity of many people, we broke the $7000 mark for &lt;a href="http://www.aidslifecycle.org/6239"&gt;AIDS ride fundraising&lt;/a&gt;!  I'm so glad I decided to do the ride again this year, because my experience already has been very different.  Last year, I started fundraising and training much earlier.  Donations came in from mostly close friends and relatives: a steady stream that was encouraging.  This year I began late, but if anything that seems to have made folks &lt;span style="font-style: italic;"&gt;more&lt;/span&gt; motivated!  I have been getting donation from a wider range of people, and my repeat sponsors are giving inspiring amounts.&lt;br /&gt;&lt;br /&gt;For those who haven't had a chance to donate yet, even though we've surpassed my fundraising goal, I want to point out that we still haven't met the goal of defeating an epidemic that has killed 25 million people. Your support is still needed and appreciated! &lt;br /&gt;&lt;br /&gt;Second is a change in plans.  &lt;a href="http://myawesomeblag.blogspot.com/2007/04/on-road-again.html"&gt;Earlier&lt;/a&gt; this year I had really wanted to do the &lt;a href="http://tour.diabetes.org/"&gt;Tour de Cure&lt;/a&gt;, 1 day cycling rides that raise funds and awareness for diabetes.  Unfortunately, because of scheduling conflicts, I won't be able to do these rides this year.  I encourage the other cyclists who read this blog to look into them, though, as I think charity rides are a great way to take the next step in the sport.&lt;br /&gt;&lt;br /&gt;Thanks again for everyone's support!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-48965354101193499?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/48965354101193499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=48965354101193499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/48965354101193499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/48965354101193499'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/05/take-that-aids.html' title='Take that, AIDS!'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2717634248983736416</id><published>2007-04-29T00:06:00.000-07:00</published><updated>2007-04-29T00:51:07.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='te:5'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><category scheme='http://www.blogger.com/atom/ns#' term='distance:medium'/><title type='text'>Beautiful Backyard</title><content type='html'>Thank you for the donations so far, guys.  I got a late start this year, so if you're thinking of &lt;a href="https://www.aidslifecycle.org/donate/6239"&gt;donating&lt;/a&gt;, don't delay!  Today I completed a big training ride around the Open Spaces area.  The weather was awesome, the hills were green, and I got to meet a bunch of people.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;amp;saddr=Central+Expy+%26+Farley+St,+Mountain+View,+CA+94043&amp;daddr=el+monte+%26+el+camino,+mountain+view,+ca+to:el+monte+%26+moody,+los+altos,+ca+to:pescadero+rd+%26+alpine+rd,++la+honda,+ca+to:la+honda+%26+skyline,+woodside,+ca+to:Sand+Hill+Rd+%26+Santa+Cruz+Ave,+Menlo+Park,+California+94025+to:foothill+%26+edith+ave,+los+altos,+ca+to:Central+Expy+%26+Farley+St,+Mountain+View,+CA+94043&amp;amp;amp;layer=&amp;mrcr=6&amp;amp;sll=37.393619,-122.113981&amp;sspn=0.03846,0.062571&amp;amp;amp;ie=UTF8&amp;z=12&amp;amp;ll=37.358151,-122.173805&amp;spn=0.153912,0.250282&amp;amp;om=1"&gt;The route.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think Moody is easier than the lower part of Page Mill because it slowly elevates before the big hills. Page Mill was very challenging, as usual: I think I set a new record on my heart rate monitor: 194bpm.  Here's my favorite turn on Page Mill, taken last year:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/jimblomo/139585220/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/54/139585220_78722950fd.jpg" alt="Page Mill Switchback" height="375" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There's a Y in the road where Alpine turns West that I like to stop and eat my snacks.  Today there were a couple of bikers hanging out there as well, so I stopped to chat.  They had driven from the Central Valley just to do this ride with a few friends.  "You have a beautiful backyard here," they said.  I'd have to agree, I can't think of a better place to train and improve.  The hills are hard, but the scenery, bay views, and redwoods make every turn exciting.&lt;br /&gt;&lt;br /&gt;There used to be this random water fountain on the south side of Page Mill.  It was great because there are basically no other places to get water up on Skyline.  It was removed some time during the winter, though, and all that's left is PVC pipe sticking up out of the ground.  Luckily, though, I ran into a ranger who, when asked where the nearest fountain was, offered two of his own water battles.  After ensuring that he didn't need them, I talked to him while I refilled my bottles.  Apparently a rancher had set up the fountain for folks passing by, but the cold snaps we had last winter broke the water lines.&lt;br /&gt;&lt;br /&gt;Coming back up La Honda, I stopped at my favorite burger place, Alice's, for refueling.  The tables are big picnic tables, so I happened to sit with some mountain bikers.  After a delicious burger and ale, I swooped back down the mountain, passing a couple slow cars that were polite enough to move over.&lt;br /&gt;&lt;br /&gt;I do need to concentrate on training in the next couple weeks: ALC is only 5 weeks away!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2717634248983736416?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2717634248983736416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2717634248983736416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2717634248983736416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2717634248983736416'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/04/beautiful-backyard.html' title='Beautiful Backyard'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/54/139585220_78722950fd_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-7714569604573232693</id><published>2007-04-12T23:35:00.000-07:00</published><updated>2007-04-12T23:42:57.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>By Accident</title><content type='html'>This post was from February of last year.  Miraculously, I manged to correctly navigate all of last year's AIDS ride.  I still rely on S to get me back on track when I get turned around, but luckily those request have become much more infrequent.  Without further ado:&lt;br /&gt;&lt;br /&gt;I was chased by a dog today for the first time!  Luckily it was a smallish dog... with stubbly legs.  OK, it wasn't really a threat, but it was exciting.  I was doing my longest ride yet, a &lt;a href="http://www.gmap-pedometer.com/?r=39790"&gt;loop&lt;/a&gt; around the South Bay.  I made a little detour around mile 19, mistakenly thinking it would reconnect with my route.  As I was turning around, I heard the barking of a dog preparing to protect it's territory.  Rather than get off the bike and trying to settle the dog down, possibly involving small teeth embedded in my skin, I took off.  Its instinct aroused, the dog gave chase.  Winding through a small park, I eventually lost him as the park path connected to the street.  I'm not saying that I look forward to my next canine encounter, but surprises like this turn out to be essential parts of my training, pushing me a little harder than I would on my own.&lt;br /&gt;&lt;br /&gt;One of my most common surprise is the wrong turn.  The Sand Hill/Alpine/Page Mill region around Portolla Valley still manages to confound me.  My &lt;a href="http://www.gmap-pedometer.com/?r=32414"&gt;medium commute&lt;/a&gt; was originally going to be shorter, cutting into Palo Alto on Alpine Rd. instead of going around to Sand Hill.  However, the "wrong" turn I made on my inaugural trip ended up being a much better morning workout; my original route would have shortchanged me.&lt;br /&gt;&lt;br /&gt;Of course, the next time I rode, I missed the Arestradero turn, and ended up stuggling up Page Mill.  After about 800 feet of climbing, and no real idea of when it would end, I decided to turn back.  The climb was a great challenge, though; pushing yourself up hills like these are the best way to really increase the body's ability to process oxygen.&lt;br /&gt;&lt;br /&gt;Last weekend's ride was determined en route as well.  Rolling out of bed at 9, I realized that I had missed nearly all of the weekly AIDS training rides.  Hastily I decided I could make the 9:30 roll out time for the South Bay group, but driving up to the Union City meet point, I saw the big group already cycling down the rode.  Foolishly undeterred, I parked and hopped on my bike.  Not knowing the route, though, I was never able to catch up to the main group.  Riding in a southern direction, my best guess as to the route, I found myself serendipitously in S's neighborhood.  After a quick consult of Google maps, and a good-luck kiss, I was back on the rode, solo.  I don't think I would have attempted such a long route without having taken that first stumble forward.  So, while next time I hope to be better prepared for a ride, I'm thankful for all of my surprises so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-7714569604573232693?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/7714569604573232693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=7714569604573232693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7714569604573232693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7714569604573232693'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/04/by-accident.html' title='By Accident'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-4877654068232623509</id><published>2007-04-04T08:59:00.000-07:00</published><updated>2007-04-04T09:31:56.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alc'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><category scheme='http://www.blogger.com/atom/ns#' term='tdc'/><title type='text'>On the Road Again</title><content type='html'>It's official: I'm riding in this year's AIDS/Lifecycle!  Last year I road almost 550 miles, slept in 6 new cities in a tent with a stranger, met hundreds of awesome people, popped 4 spokes, and raised $5,000 for the SF AIDS foundation.  It was an amazing experience, and I knew I had to do it again this year.  You can sign up to &lt;a href="http://www.aidslifecycle.org/6239"&gt;sponsor me&lt;/a&gt; now!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/jimblomo/169368931/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/56/169368931_5428e48f06.jpg" alt="Paceline Crew" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This year, I'm also planning on doing two &lt;a href="http://tour.diabetes.org/"&gt;Tour de Cure&lt;/a&gt; rides, so I'll post details about that when I sign up.  My fund raising goals are $3500 for &lt;acronym title="AIDS/Lifecycle"&gt;ALC&lt;/acronym&gt; and $750 for each &lt;acronym title="Tour de Cure"&gt;TdC&lt;/acronym&gt;.  (For the curious, this is approximately the ratio of days I'll be spending on each ride.)&lt;br /&gt;&lt;br /&gt;I'll be reposting my entries from last year's ride, and keeping everyone up to date on my training.  Thanks for your support.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-4877654068232623509?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/4877654068232623509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=4877654068232623509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/4877654068232623509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/4877654068232623509'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/04/on-road-again.html' title='On the Road Again'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/56/169368931_5428e48f06_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-8453865688654325468</id><published>2007-03-24T17:35:00.000-07:00</published><updated>2008-12-09T19:00:14.764-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmming'/><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>OpenGL Tetris in Haskell</title><content type='html'>Over the past couple weekends I've tried putting my new language interest, Haskell, through the paces by witting a version of Tetris with HOpenGL bindings.  Herein is an overview of my progress, and a call for help from the more experienced in the Haskell community to show me and other newbies how this can be improved and why.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_wDxK4f5G5wA/RggslzqD0hI/AAAAAAAAAAM/gU4kJ3d7boE/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_wDxK4f5G5wA/RggslzqD0hI/AAAAAAAAAAM/gU4kJ3d7boE/s320/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5046332410502042130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Good&lt;/span&gt;&lt;br /&gt;As noted, um, &lt;a href="http://programming.reddit.com/search?q=haskell&amp;s=highscore"&gt;everywhere&lt;/a&gt;, Haskell is a really deep language.  As a beginner, the features that have struck me are the ease of defining functions, pattern matching in definitions, currying, and the seemingly endless stream of higher order functions.&lt;br /&gt;&lt;br /&gt;Making function definitions as easy as variable assignments in other languages encourages me to break apart logic and leads to cleaner code.  Defining functions in the `where` clause I've found to be especially handy and elegant.  Unlike imperative programming, where code with very similar functionality can hide in a jungle of statements, repeating code in Haskell is easy to pick out and convenient to factor out.&lt;br /&gt;&lt;br /&gt;Pattern matching in function definitions has been incredibly handy.  In Perl, I'll often use a hash to map things like tetris shapes to their set of points.  Haskell's version is more useful because I can define a function which takes a shape and returns a set of points associated with it.  The difference is I can pass this function around or use it in higher order functions without using extra syntax to do the lookup.&lt;br /&gt;&lt;br /&gt;Currying without any extra syntax is a big contributer to Haskell's clarity.  Now that I've experienced it's usefulness, I don't think I could go back to languages like Scheme without constantly complaining about its absence.&lt;br /&gt;&lt;br /&gt;Besides the standard `fold` and `map`, I find myself thinking "Wow, that will be usefull" whenever I look through Haskell's standard libraries.  Functions like `zipWith` or `unionsWith` make even the most useful Java classes look barbaric.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Bad&lt;/span&gt;&lt;br /&gt;When I first started writing Haskell, the thing I found most annoying was the big change in associativity.  The downside of functions being treated exactly like data is that it becomes impossible for the compiler to correctly predict how you want things grouped.  It didn't take long to become accustomed to Haskell's rules, but for whatever reason learning to use $ and . correctly took a bit time.&lt;br /&gt;&lt;br /&gt;Monads obviously need to be included in this list, but I found understanding the simple monads such as IO, Maybe, and Either simple enough to quickly make progress.  I have not implemented my own, and I suspect my Tetris code could be significantly improved with better understanding, so I'll be digging into this area again soon.&lt;br /&gt;&lt;br /&gt;Typing has &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; been a problem for me.  Haskell's typing inference system works great, and the times I've run into typing errors have been either an error in my code (most frequently), or, in my belief, a bad framework for what I was trying to accomplish.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Ugly&lt;/span&gt;&lt;br /&gt;I've basically run into the same problem with libraries and setup documented by &lt;a href="http://blogs.nubgames.com/code/?p=17"&gt;Eric&lt;/a&gt;.  Documentation of libraries could also use a lot of improvement.  Here's an example of documentation for a function in some introspective code that I was trying to understand:&lt;br /&gt;&lt;blockquote&gt;mkConstr :: DataType -&gt; String -&gt; [String] -&gt; Fixity -&gt; Constr&lt;br /&gt;Constructs a constructor&lt;/blockquote&gt; Not very helpful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What About Tetris?&lt;/span&gt;&lt;br /&gt;First off, I don't think that Tetris and OpenGL map onto Haskell very easily.  OpenGL in particular is very stateful, and even setting up a simple animation requires using Monads to work around Haskell's lack of side effects.  I think this excersize is still useful, though, because in pushing a language to it's boundaries and forcing you to use it's less hyped features, you can often getter a better understanding of it's strengths and limitations.  Before starting this project, I read over &lt;a href="http://blog.mikael.johanssons.org/archive/2006/09/opengl-programming-in-haskell-a-tutorial-part-1/"&gt;Michi's&lt;/a&gt; &lt;a href="http://blog.mikael.johanssons.org/archive/2006/09/opengl-programming-in-haskell-a-tutorial-part-2/"&gt;posts&lt;/a&gt;.  In fact, his cube generation code is largely unchanged in mine.&lt;br /&gt;&lt;br /&gt;What I'd like to see happen is for the amazingly helpful Haskell community (seriously, check out #haskell some time, it is the nicest, most helpful channel I've visited) to take my crappy code, explain why it sucks, and show me and other timid beginners how to do better.  Just add a comment to where people should look for improved versions.&lt;br /&gt;&lt;br /&gt;My code is available at &lt;a href="http://haskell-tetris.pbwiki.com/Main"&gt;PBWiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Tetris.hs&lt;/span&gt;&lt;br /&gt;This is the code that kicks off the OpenGL loop.  Callback functions are used to display objects, coordinate movements, and set state.  You can see by the number of &lt;a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Data-IORef.html#v%3AnewIORef"&gt;newIORef&lt;/a&gt; calls how much state is being passed around to each callback.  The most confusing line here is probably the assignment to curMatrix.  curMatrix keeps track of the matrix transformations that occur when the mouse is moved so you can use a "glass ball" type interface to rotate the tetris board around.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Display.hs&lt;/span&gt;&lt;br /&gt;This file contains the display call backs that render the pieces and board.  To implement the mouse interface, the display matrix is reset with &lt;a href="http://haskell.org/ghc/docs/latest/html/libraries/OpenGL/Graphics-Rendering-OpenGL-GL-CoordTrans.html#v%3AloadIdentity"&gt;loadIdentity&lt;/a&gt;.  The new translations from the most recent mouse movement are applied, then the previous matrix is applied.&lt;br /&gt;&lt;br /&gt;dropPiece drops the current piece, or sets the fallen piece and starts a new one.&lt;br /&gt;&lt;br /&gt;idle is a callback that is continually called and it simply asks OpenGL to redisplay the screen in it's next loop.  This is the alternative to calling postRedisplay after all movement changes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;TetrisPiece.hs&lt;/span&gt;&lt;br /&gt;This file contains the code that keeps the coordinates for shapes and instructions on how to render them.  translatedPoints is a function which can take the default coordinates of a shape and apply the transformations that the displayed shape receives so that collision detection can be done.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;TetrisBoard.hs&lt;/span&gt;&lt;br /&gt;Setup for the shape of the board and the boundary initialization are done here.  tableMap is basically an array of all the (x,y) coordinates with False inside the boundaries (because there are no fallen pieces yet), and True along the boarders.&lt;br /&gt;&lt;br /&gt;clearLines takes a board and clears any full lines; basically, the purpose of Tetris.  Using foldl, it iterates over a list of lines given by their 'y' coordinate.  For a given line, if that line is at or above 'y', it takes the contents of the line above it.  The base cases are the boarders of the board, which should keep their boundaries.&lt;br /&gt;&lt;br /&gt;Sorry for the mixed naming, by the way.  'board', 'b', 'tableMap', 'boarder' are all generally the same thing: the mapping of the contents of the Tetris board, ie the fallen pieces.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Bindings.hs&lt;/span&gt;&lt;br /&gt;keyboardAct defines how a key press can move a shape on the board, while movePiece determines if this movement is valid.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Translations.hs&lt;/span&gt;&lt;br /&gt;These functions are used to calculate translated points for collision detection and the "tetris unit" is defined here.  Using `tunit` not only helps to keep things in correct proportion, but it also helps Haskell's typing inference when used as a unit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-8453865688654325468?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/8453865688654325468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=8453865688654325468' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/8453865688654325468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/8453865688654325468'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/03/opengl-tetris-in-haskell.html' title='OpenGL Tetris in Haskell'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_wDxK4f5G5wA/RggslzqD0hI/AAAAAAAAAAM/gU4kJ3d7boE/s72-c/Picture+2.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-847510687288054307</id><published>2007-03-15T09:57:00.000-07:00</published><updated>2007-03-17T11:20:16.057-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmming'/><title type='text'>Lessons from Ops</title><content type='html'>I am a programmer who enjoys working "only slightly removed from pure thought-stuff."  But when I left college I chose a job that was decidedly oriented toward beating this thought-stuff into the ground of reality.  I wanted to learn the details of how to program large-scale, heterogeneous systems that were possible, if not easy, to maintain.  Not "maintain" in the programmer sense of the word (ease of adding new features, finding bugs, etc.), but maintain as in enabling users to understand, control, build upon, and rely on the system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Oh, That's Typical&lt;/span&gt;&lt;br /&gt;I'm going to stay away from the &lt;a href="http://www.pragmaticprogrammer.com/ppbook/extracts/rule_list.html"&gt;common recommendations&lt;/a&gt; such as DRY because I'd like give specific pointers that apply to the situations I've seen.  The hope is when I write programs in the future, the tips herein will pop back into my mind and I'll produce systems that are easy to debug, understandable by people uninvolved in the development, and predictable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Doesn't Play with Others&lt;/span&gt;&lt;br /&gt;A data problem was reported to our team the other day.  Typically, finding the source problem requires a large amount of domain knowledge: where are the files that configure the various transformations that this data goes through?  Who typically publishes this data type?  Where are the logs that may have information about this document?  The path to resolution is like a little known covered wagon trail through the Sierras: you need an expert guide and most of the time you get stuck at Donner pass.  What should be provided is a yellow brick road: it may require a little work to get there, but you know where you need to take your next step.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Introspective vs. Transparent&lt;/span&gt;&lt;br /&gt;At it's root, debugging is about figuring out what happened and why.  To provide an easily debuggable system, simply provide the what and why at every step that business rules are applied.  Just as importantly, provide it as a service in the same way that interested parties normally interact with your system.  Adding `printf`s to your code is great for programmers who usually interact with a service on the command line or `tail` files, but it is nearly useless for clients.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/175/396533788_170986e2d9.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/175/396533788_170986e2d9.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Boudin bakery in San Francisco is transparent, literally.  You can see them mix the dough, cut bread, and bake it.  But that doesn't let me understand any of the decisions they've made; I couldn't go home a bake delicious sour dough in which to put clam chowder.  In order to do that, I'd need to interact with the cooks in the normal way: ask questions, have them explain what's going on.&lt;br /&gt;&lt;br /&gt;Except for the most basic services, data transparency is not that helpful.  Think about the questions you'll get from users.  When did this data change?  Who changed it?  Where did it come from and how did it get transformed?  How would the system react in different situations?  These are the questions that need to be answerable in a straightforward manner.&lt;br /&gt;&lt;br /&gt;If you're worried about performance, or exposing too much information to customers, keep in mind that introspection is a system property.  It doesn't have to live in your main service, especially when lots of historical data is desired.  It would be nice, since people don't have to learn a system with more components, but it's not a requirement.  Unique identifiers (database keys, document IDs, URLs) should be usable across the system so a story can be put together programmatically.  A coworker of mine suggested that the public password for a system we are developing should be the URL of a wiki page they should read before using the service.  I love this idea because it eliminates an often fruitless search for information and directly ties the wiki service into the overall design.  Think how useful it would be to have wiki links for each error your service produces along with the ID of the data that was involved in the problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;You From Around Here?&lt;/span&gt;&lt;br /&gt;Even programs with great documentation can't cover all of the potential questions from a new user.  Often users can't express their issue in the jargon that would enable them to find and understand the solution.  Providing a way to "show and tell" what's going on gives users a chance to understand from experience.  Just as languages with an interactive shell and introspection let users get an intuitive feel, systems should provide users with meta-information that they can manipulate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;To Be Continued&lt;/span&gt;&lt;br /&gt;This turned out longer than expected, so I'll continue in a later post.  Leave comments so I can improve my writing and ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-847510687288054307?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/847510687288054307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=847510687288054307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/847510687288054307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/847510687288054307'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/03/lessons-from-ops.html' title='Lessons from Ops'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/175/396533788_170986e2d9_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-416706028276413686</id><published>2007-03-14T11:47:00.000-07:00</published><updated>2007-03-14T12:05:24.928-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='te:4'/><category scheme='http://www.blogger.com/atom/ns#' term='distance:short'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>Medium Work Route with Shortcut</title><content type='html'>This &lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;amp;saddr=Central+Expy+%26+Farley+St,+Mountain+View,+CA+94043&amp;daddr=alpine+%26+Arastradero+Rd+CA+94022+to:lytton+and+alma,+palo+alto,+ca&amp;amp;layer=&amp;sll=37.420208,-122.178783&amp;amp;sspn=0.07621,0.104542&amp;ie=UTF8&amp;amp;z=13&amp;ll=37.410392,-122.14222&amp;amp;spn=0.07622,0.104542&amp;om=1"&gt;bike route&lt;/a&gt; to work takes me through Arastradero Open Space Reserve.  This year I have only ridden the route with the Alpine shortcut.  The ride takes about an hour at a strong pace.  Two quick but steep climbs make the ride good for training even given its short length.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/114/279555974_949708b0dc.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/114/279555974_949708b0dc.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since last year, they've repaved many of my common routes.  Especially improved is the Ellen Fletcher bike boulevard that I take home from work.  All last year I had to worry about flat tires, hidden potholes, and a generally jarring ride on a road supposedly&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; &lt;span style="font-style: italic;"&gt;designed for bikers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;With the weather getting up to the 80s, my whole house now a fan of cycling, and increasing time pressure to get ready for the AIDS ride, I hope to get out a lot more in the coming weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-416706028276413686?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/416706028276413686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=416706028276413686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/416706028276413686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/416706028276413686'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/03/medium-work-route-with-shortcut.html' title='Medium Work Route with Shortcut'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/114/279555974_949708b0dc_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-7517615883116047994</id><published>2007-03-06T13:13:00.000-08:00</published><updated>2007-03-06T14:37:06.130-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='te:5'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><category scheme='http://www.blogger.com/atom/ns#' term='distance:medium'/><title type='text'>Cycling the Saratoga Loop</title><content type='html'>J and I decided to bike out to Saratoga, he to get to I's house, and me to burn off some of the cookies I'd had at my folks' place over the weekend.  We started off a moderate pace, and J, champion that he is, requested we kick it up a notch.  Soon we were at the top of our first hill overlooking the Steven's Creek Reservoir.  Here's the map on &lt;a href="http://tinyurl.com/26rwba"&gt;Google Maps.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The climb up to the Reservoir is about 250 feet, and the view is pretty nice up there.  I've been meaning to have a picnic by the river in the valley; it's very lush and peaceful.  Next was Mt. Eden, a tough hill for anyone, especially a beginning cyclist.  In fact, it was about 1 year and 1 month ago that I had climbed this hill as a newbie and was so tired afterward that S came to pick me up from Saratoga.  It's also about 300 feet, but squeezed into a single mile.  But it too was conquered, and we wound our way down the hill and made it to I's house in about 1 hour.  There I made my questionable decision to take a different route back.&lt;br /&gt;&lt;br /&gt;With J dropped off, I decided I wanted to take a loop back.  An additional draw was the fact that I hadn't taken the Hwy 9 to Hwy 35 route before, but I knew it had great views of San Jose and wound through the forest most of the way.  The climb up 9 turns out to be just over 2000 feet.  Who knew?  Well, I do now, and it was pretty painful.  It's good to know that I haven't lost too much cycling power over my break, but I think it would have been healthier for me to work up to rides like this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-7517615883116047994?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/7517615883116047994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=7517615883116047994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7517615883116047994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7517615883116047994'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/03/cycling-saratoga-loop.html' title='Cycling the Saratoga Loop'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2639683131695735716</id><published>2007-02-21T08:58:00.000-08:00</published><updated>2007-02-22T01:13:13.393-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tasting'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><title type='text'>Wine Tasting in Livermore</title><content type='html'>S and I went to Livermore to do some wine tasting.  Yes, I'm sure it was wine, not bootleg grape juice brewed in the basement of a suburban sprawl home and run across the county line by a soccer mom in her SUV.  We got a late start on President's Day so we only made it to three wineries instead of the dozen or so&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amazon.com/gp/product/0942053435?ie=UTF8&amp;tag=myawesomeblag-20&amp;amp;linkCode=as2&amp;camp=1789&amp;amp;creative=9325&amp;creativeASIN=0942053435"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 68px; height: 91px;" src="http://images.amazon.com/images/P/0942053435.01._AA_SCMZZZZZZZ_.jpg" alt="" border="0" /&gt;&lt;/a&gt; we were hoping for.  I made a notebook of these &lt;a href="http://google.com/notebook/public/10757165415562580959/BDSBaSwoQ347dtY0i"&gt;Southbay Wineries&lt;/a&gt;. or you can buy my source, &lt;a href="http://www.amazon.com/gp/product/0942053435?ie=UTF8&amp;tag=myawesomeblag-20&amp;amp;linkCode=as2&amp;camp=1789&amp;amp;creative=9325&amp;creativeASIN=0942053435"&gt;The Best&lt;/a&gt;&lt;a href="http://www.amazon.com/gp/product/0942053435?ie=UTF8&amp;amp;tag=myawesomeblag-20&amp;linkCode=as2&amp;amp;amp;amp;amp;amp;amp;amp;amp;camp=1789&amp;creative=9325&amp;amp;creativeASIN=0942053435"&gt; of the Wine Country&lt;/a&gt;.  &lt;span style="font-size:85%;"&gt;WARNING:&lt;/span&gt; The following contains extreme yuppyism, for I am about to discuss wine.  Please resist the urge to punch me in the face after reading this to restore your street cred.&lt;br /&gt;&lt;span class="AttributeText"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://retzlaffwinery.com/"&gt;Retzlaff&lt;span id="gn_ncpid"&gt;&lt;/span&gt; Winery&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Because of it's small size and smooth wines, this was a good place to start.  When we arrived, the hostess was the only person in the tasting room.  After tasting a few wines, I readily admitted that we were fairly new to the wine tasting circuit.  This started a pattern that would repeat itself for the rest of the day: the hostess completely opened up, took us on a tour of the aging rooms, and let us sample different vintages, from the casks, for free.  It was a great to see the evolution of the wine, starting with an '06 recently picked, to a dark '01.  The thing that surprised me most was how much the wine changes in the first year ('06 compared to the '05).  It was another example of the last 10% improvement costing the most.&lt;br /&gt;&lt;br /&gt;Neither S nor I like Chardonnay, but the version here was very clean and didn't have the dry oaky flavor that normally turns me away.  The reds were also clean; too clean actually.  I prefer the bolder wines we found later that day.&lt;br /&gt;&lt;span class="AttributeText"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://www.concannonvineyard.com/"&gt;Concannon Vinyard&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Quite a contrast to Retzalff, Concannon had a large storehouse and tasting room.  The medium sized parking lot was full, so we were looking forward to a different experience.  President's Day weekend the winery opened its  reserve wines for tasting, pouring them at different stations complemented by cheese or chocolate. Again I started asking newbie questions at one of the later stages and struck up a conversation with the folks behind the table.  Before I knew what was happening, S and I were whisked away and had started a private tour of the winery.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/25/58198637_895c6c3edf.jpg?v=0"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/25/58198637_895c6c3edf.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="AttributeText"&gt;We started outside, looking at the hoppers which separate the grapes from the stems and leaves.  Taken through the distillers, mixers, and filters we asked questions and got to poke our heads into some of the empty steel containers. Andrew, our host, gave us a few lessons on how they buy, care for, and use the wine casks.  The above picture is one of the original grape presses that was used by the founder, James Concannon.&lt;br /&gt;&lt;br /&gt;Jim Concannon is the grandson, and now runs the vineyard.  We met him in the storage room, where the casked wine was held at a constant 54 degrees.  Jim told us about climbing around the old room when he was young, pointed out the grooves in the floor where the draft horses used to haul full casks in or press grapes, and explained that the winery was only able to stay open during the prohibition thanks to the communion wine needed by the local churches.&lt;br /&gt;&lt;br /&gt;Petite Syrah is the Concannon specialty.  For me, though, this wine ended very abruptly.  The "full" Syrah was more enjoyable and the Merlot was excellent: very bold.  They had a new-to-me Spanish style wine, Contenello (?), that was nice and spicy.  The whites were disappointing.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://crookedvinewinery.com/"&gt;&lt;span style="color: rgb(51, 51, 0);font-family:Georgia,Times New Roman,Times,serif;" &gt;C&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:Georgia,Times New Roman,Times,serif;font-size:85%;"  &gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://crookedvinewinery.com/"&gt;rooked              Vine&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Crooked had an enlightening barrel tasting scheme: there were three casks, two different types of grapes, and two different types of wood.  I was surprised that the type of wood, French Oak versus American, had already altered the taste of the wine.  These casks were also '06 wines, so they hadn't been aging long.  We talked with the hostess about the job of the head winemaker: how do they know when a wine is done?  What are they looking for?  How do they blend?  The answer to all the questions is basically "whatever feels right to him/her."  This drove the personalization of the wine home for me: with so many ways for a grape to interact with its soil and environment, the resulting juice to interact with its cask, the resulting wine to be tweaked and aged by a wine expect, and the end product to interact with the taster, no wonder there are so many variations.&lt;br /&gt;&lt;br /&gt;I highly recommend a trip to this area, and you'll be reading about my next one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2639683131695735716?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2639683131695735716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2639683131695735716' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2639683131695735716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2639683131695735716'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/02/wine-tasting-in-livermore.html' title='Wine Tasting in Livermore'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2504197416871228161</id><published>2007-02-17T10:29:00.000-08:00</published><updated>2007-02-17T12:22:42.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='ireland'/><category scheme='http://www.blogger.com/atom/ns#' term='dublin'/><title type='text'>2 Nights in Dublin</title><content type='html'>B is going to Dublin, Ireland for two nights, so I thought I'd write a schedule.  I visited Dublin this last December, sent by work.  I had an amazing time and was able to pick up a lot about the city from walking around, talking to people, and visiting the museums.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The main part of the city is quite small, which makes walking around easy.  If you have time, you don't really need a schedule since you can just walk to wherever you feel like visiting next.  Additionally, walking around makes it easier to &lt;span style="font-style: italic;"&gt;find&lt;/span&gt; the place you're going.  There's approximately 50 million small streets in Dublin, and if that wasn't enough, the main through streets change their name every couple of blocks.  I suspect this is why I never found any Mapquest equivalents for Dublin.&lt;br /&gt;&lt;br /&gt;I think the best way to enjoy Dublin is to appreciate the contrast the city has.  Visit an old museum, then sit in a bar talking to locals.  Visit &lt;a href="http://en.wikipedia.org/wiki/Kilmainham_Gaol"&gt;Kilmainham&lt;/a&gt; then view some modern art.  One of the reasons visiting other counties is so interesting is because that kind of contrast doesn't really exist in America.&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Schedule&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, I'll stop rambling now.  If you're there for two days, here's what I'd pack in.&lt;br /&gt;&lt;br /&gt;Day 1 Morning&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check into the &lt;a href="http://www.paramounthotel.ie/"&gt;Paramount&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Walk through the &lt;a href="http://www.dublinks.com/index.cfm/loc/5-33/pt/0/spid/0154E617-49C7-47D8-8310F034872CCF26.htm"&gt;street market&lt;/a&gt;, get some breakfast at the food square at the beginning of Temple Bar district&lt;/li&gt;&lt;li&gt;Walk back past Paramount, take tour of &lt;a href="http://www.cccdub.ie/"&gt;Christchurch&lt;/a&gt;, including the &lt;a href="http://flickr.com/search/?q=christchurch+crypts&amp;s=int"&gt;crypts&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Day 1 Noon&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/73/179660430_fdb58c67dc_b.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/73/179660430_fdb58c67dc_b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Walk to &lt;a href="http://www.guinness-storehouse.com/"&gt;Guinness Storehouse&lt;/a&gt;, take the tour, have a pint in the Gravity Bar&lt;/li&gt;&lt;li&gt;Look across the street, see the Digital Hub which is where the Amazon office is&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Have lunch at Nash's, aka DUB0, on Thomas St.; order Guinness' seasonal beer&lt;/li&gt;&lt;/ul&gt;Day 1 Afternoon&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Walk to &lt;a href="http://www.dublincastle.ie/"&gt;Dublin Castle&lt;/a&gt;, take tour&lt;/li&gt;&lt;li&gt;Catch the green &lt;a href="http://www.dublinbus.ie/sightseeing/cityTour.aspx"&gt;Hop-on-Hop-off bus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Get off at Kilmainham Goal stop.  Move quickly through modern art Museum, take the &lt;a href="http://www.heritageireland.ie/en/HistoricSites/DublinArea/KilmainhamGaolDublin/"&gt;tour&lt;/a&gt; at the jail&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Day 1 Evening&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Catch last Hop-on-Hop-off bus, get off at &lt;a href="http://www.dublintourist.com/details/the_old_jameson_distillery.shtml"&gt;Jameson's Whiskey&lt;/a&gt; stop&lt;/li&gt;&lt;li&gt;Buy tickets for Jameson tour (discount with bus ticket), buy an Irish Coffee while you wait&lt;/li&gt;&lt;li&gt;Sit in the front row during Jameson tour movie, immediately raise your hand when guide asks who wants to be a special taster&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/20/71307175_e767406176_o.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/20/71307175_e767406176_o.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;After tour, cross back over the river on Hapenny bridge and eat at Guel&lt;/li&gt;&lt;li&gt;Walk to &lt;a href="http://www.dublinks.com/index.cfm/loc/11/pt/0/spid/43936C61-7CF4-48E7-887B20650CDFA7C2.htm"&gt;Peter's Pub&lt;/a&gt; off Graffton, sit at the bar, talk to people, try Green Spot, drink Guinness&lt;/li&gt;&lt;li&gt;After 10:30p, go to &lt;a href="http://www.odonoghues.ie/"&gt;O'Donoghue's&lt;/a&gt; watch great live music&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Stumble back to &lt;a href="http://www.porterhousebrewco.com/"&gt;Porterhouse&lt;/a&gt;, across the street from Paramount, drink more&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you're hungry, eat at Zaytunes&lt;/li&gt;&lt;li&gt;Sleep&lt;/li&gt;&lt;/ul&gt;Day 2 Morning&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Have an Irish Breakfast&lt;/li&gt;&lt;li&gt;Catch Hop-on-Hop-off bus, listen to tour&lt;/li&gt;&lt;li&gt;Hop off at Stephen's Green, walk around&lt;/li&gt;&lt;li&gt;Buy Green Spot at &lt;a href="http://www.celticwhiskeyshop.com/"&gt;Celtic Whiskey&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Walk along Nassau street, buy things&lt;/li&gt;&lt;/ul&gt;Day 2 Noon&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to Dawson's Lounge, have pint(s) and lunch (if you are hungrier than a sandwich, eat at &lt;a href="http://www.kilkennygroup.com/shops_rest/dublin2.htm"&gt;Kilkenny's cafe&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Walk through Trinity College, see &lt;a href="http://www.culturevulture.net/ArtandArch/Trinity.htm"&gt;Book of Kells&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Day 2 Afternoon&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/50/141622887_63e6f8e355_o.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px;" src="http://farm1.static.flickr.com/50/141622887_63e6f8e355_o.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Go to &lt;a href="http://www.museum.ie/archaeology/overview.asp"&gt;National Museum of Ireland - Archaeology &amp; History&lt;/a&gt;, take tour&lt;/li&gt;&lt;li&gt;Hop on bus, go to &lt;a href="http://www.museum.ie/decorative/"&gt;Collin's Barracks&lt;/a&gt;, go through museums&lt;/li&gt;&lt;li&gt;Hop on bus to &lt;a href="http://www.stpatrickscathedral.ie/"&gt;St. Patrick's Cathedral&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Day 2 Evening&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get fish &amp;amp; chips at &lt;a href="http://www.frommers.com/destinations/dublin/D44344.html"&gt;Leo Burdock&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;Go to Bar Restaurant on St. George's St., get a Guinness and a brownie at the bar&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Walk through Temple Bar, get a cocktail at one of the sleek hotel bars&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go back to your favorite bar, or for a longer walk, go to &lt;a href="http://www.mulligans.ie/"&gt;Mulligan's&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Day 3 Morning&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pack and take cab to airport&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Have pint and go home.  Good job!&lt;/li&gt;&lt;/ul&gt;What did I misss?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2504197416871228161?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2504197416871228161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2504197416871228161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2504197416871228161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2504197416871228161'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/01/2-nights-in-dublin.html' title='2 Nights in Dublin'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/73/179660430_fdb58c67dc_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2819936435571047546</id><published>2007-02-13T14:40:00.000-08:00</published><updated>2007-02-13T16:02:20.370-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><title type='text'>OK, This Is Very Exciting</title><content type='html'>Sam Adams has developed a &lt;a href="http://www.samueladams.com/Promotions/glassware/default.html"&gt;new beer glass.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.samueladams.com/Promotions/glassware/images/default_r1_c1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.samueladams.com/Promotions/glassware/images/default_r1_c1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As my beer snobbishness grows, I find myself unable to drink out of plastic cups any longer.  I suppose it's not long till I can't drink out of glasses not &lt;a href="http://beeradvocate.com/beer/101/glassware.php"&gt;specifically designed&lt;/a&gt; for the type of beer I'm drinking.  Frankly, I already have a hard time drinking out of glasses that have a Bud or Coors label on them.  As a geek in general, I'm also particularly attracted to using the "do one thing and do it well" philosophy, so specialized glasses appeal to me.&lt;br /&gt;&lt;br /&gt;I view Sam Adams as a middling microbrew that hit it big.  The beer is still &lt;a href="http://www.slate.com/id/33771/"&gt;better&lt;/a&gt; than the rest in its class, but its class isn't great.  I respect them for trying to raise the level of national American beers and maybe serving as a "gateway beer" for many people.  Of light beers, Sam Adams is the best (probably because it was developed by the inventor of light beer), but again: not a class of beer I enjoy.&lt;br /&gt;&lt;br /&gt;I like seeing companies using their popularity and profits to do interesting things that advance their field.  Google is an obvious example.  The glasses are on their way to me now, so I'll let you know if Sam Adams is now an example, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2819936435571047546?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2819936435571047546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2819936435571047546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2819936435571047546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2819936435571047546'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/02/ok-this-is-very-exciting.html' title='OK, This Is Very Exciting'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2487424757613568540</id><published>2007-02-08T13:43:00.000-08:00</published><updated>2007-02-08T14:10:39.383-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='website design'/><title type='text'>"Internet as a Computer"</title><content type='html'>Along the lines of my "&lt;a href="/2007/01/website-as-language.html"&gt;Website as a Language&lt;/a&gt;" post, &lt;a href="http://yahoo.com"&gt;Yahoo!&lt;/a&gt; just released something called "&lt;a href="http://pipes.yahoo.com"&gt;Pipes&lt;/a&gt;" that promises to bring together websites in an organized way.  A &lt;span style="font-style: italic;"&gt;syntax,&lt;/span&gt; if you will, for whatever &lt;span style="font-style: italic;"&gt;types&lt;/span&gt; your website uses.  I suspect this idea, if not Pipes itself, will be very big this year because it holds the promise of brining together all the cool tools from different sites that people use.&lt;br /&gt;&lt;br /&gt;Right now, it is the small minority, even here in the Valley, that use tools like &lt;a href="http://basecamphq.com"&gt;Basecamp,&lt;/a&gt; &lt;a href="http://www.google.com/calendar"&gt;Google Calendar&lt;/a&gt;, or &lt;a href="http://pbwiki.com"&gt;PBWiki&lt;/a&gt;.  I suspect some of this is a barrier that many websites don't consider: just remembering what the address is and what the website can do.  My mom doesn't remember &lt;a href="http://youtube.com"&gt;YouTube&lt;/a&gt; when thinking about Super Bowl commercials, and my dad still uses McNally maps when planning a car trip.  With new tools such as Pipes, though, only one site will be needed to combine all of these small applications.  Basecamp milestones will show up on your &lt;a href="http://kiko.com"&gt;Kiko&lt;/a&gt; calendar, and &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt; can track data for your work's status report.&lt;br /&gt;&lt;br /&gt;This will likely have two effects: eliminate the advantage that Google has in combining their offerings into suites, and exploding the market that small companies can reach.  One of the reasons that Kiko &lt;a href="http://paulgraham.infogami.com/blog/kiko"&gt;cited&lt;/a&gt; for it's collapse was the integration with Gmail that Google Calendar offered.  Heck, it's one of the main reasons &lt;span style="font-style: italic;"&gt;I&lt;/span&gt; use it.  Unless Google goes the Microsoft route and starts protecting it's products with proprietary formats, users in the future will be able to integrate their &lt;a href="http://hotmail.com"&gt;Hotmail&lt;/a&gt; addresses with Google Calendar just as easily.  The second effect follows from the prediction that it will be easier for "normal" folks to use the small but useful tools scattered about the Internet.&lt;br /&gt;&lt;br /&gt;Interestingly, sites are going to have to become more vulnerable in order to take advantage of these effects.  If websites can become interchangeable for certain functions, usability and features become more important than stickiness.  But if websites take that risk, design themselves to be expanded, enable themselves to be programatically processed, then a whole new market opens up to them.&lt;br /&gt;&lt;br /&gt;So far, though, I'm just speaking in hypotheticals.  I'll try to send an update when I actually try out Pipes.  Very exciting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2487424757613568540?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2487424757613568540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2487424757613568540' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2487424757613568540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2487424757613568540'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/02/internet-as-computer.html' title='&quot;Internet as a Computer&quot;'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-1584306741418685432</id><published>2007-01-31T16:59:00.000-08:00</published><updated>2007-02-01T17:50:13.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmming'/><category scheme='http://www.blogger.com/atom/ns#' term='website design'/><title type='text'>A Website as a Language</title><content type='html'>Websites should be domain specific languages.  The most popular sites are those which allow people to most easily communicate, so it seems like describing a website as a language is an excellent way to think about its design.  Social sites like MySpace have an obvious communication slant, but even searches on Google are done to request that information be communicated to you.  The whole notion of "Web 2.0" sites is predicated on communication between users.  I am interested in more than "helping users communicate," however. How can designers build a website that &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; a "domain specific language" which lets its users express concepts and ideas that the original architects haven't even thought of yet?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;No, That's Not What I Meant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm not talking about adding a forum to your website and calling it a night.  I'm not talking about adding private messages between users.  These features only extend English across the web.  The very fact that they can be used across wildly different situations excludes them being domain specific.  Specificity is important because it limits and simplifies communication.  If you know that I'm talking about the Internet, I don't have to describe what type of "site" I'm talking about; you know I mean website.  Specificity makes communication easier and more succinct.  What I &lt;span style="font-style: italic;"&gt;am&lt;/span&gt; talking about is making concepts in your domain easily communicated, manipulated, and related.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Can You Give Me an Example?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.performancebike.com/"&gt;PerformanceBike.com&lt;/a&gt; has reviews in a specific format.  Check out &lt;a href="http://www.performancebike.com/shop/Profile.cfm?SKU=21351&amp;item=40-2406&amp;amp;slitrk=search&amp;slisearch=true"&gt;my helmet&lt;/a&gt;: it has 6 reviews, like a typical site, but at the top of the reviews it has "Customers most agreed on the following attributes".  It is a very useful aggregate of opinions not easily communicated by standard review formats.  If you click on " Write a Review," you can see that these agreed upon attributes are added by the reviewer in a particular format.  People don't normally communicate this way; if I was talking with a friend I wouldn't say, "Strengths: light-weight, good ventilation, looks cool."  But in this domain, it is useful to enforce a more specific syntax to express concepts about the helmet.  If reviewers use this language, they get the benefit of getting their opinion of the product through to another person.&lt;br /&gt;&lt;br /&gt;A counter example is &lt;a href="http://craigslist.org/"&gt;craigslist&lt;/a&gt;: it uses natural language, and while it has some catageories to narrow down what you're looking for, it does little to help people express themselves.  If you have ever searched for a specific product in your area, you know that there's not much the site helps you with.  Even if I know that I want the &lt;a href="http://ikea.shoplocal.com/ikea/default.aspx?action=detail&amp;storeid=2499966&amp;amp;rapid=0&amp;listingid=-2094682175&amp;amp;offerid="&gt;Malm Ikea bed&lt;/a&gt;, there's no easy way to easily express this.  There are no built in language constructs for "products," much less "beds" or styles of beds.  This may be by Craig's design, but I suspect it has more to do with the trade-off involved in improving the site (needing to hire more people, needing to start charging for listings, etc.).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Why Should I Think About It This Way?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Designing a website like a language can make it truly extensible. Extensibility often happens by mistake: &lt;a href="http://www.baselinemag.com/article2/0,1540,2082936,00.asp"&gt;MySpace didn't know&lt;/a&gt; what it was getting itself into when it allowed users to totally customize their pages.  Even though it's a big headache for them now, allowing it's users to better communicate to others was one of the main drivers of the site.  Thinking about what users wanted to express, then building up a safe "language" for them to do so would have saved MySpace many headaches and avoided the &lt;a href="http://www.mikeindustries.com/blog/archive/2006/04/hacking-myspace-layouts"&gt;CSS nightmare&lt;/a&gt; that has ensued.&lt;br /&gt;&lt;br /&gt;Steve Yegge's &lt;a href="http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html"&gt;post&lt;/a&gt; earlier this month also pointed to the importance of extensibility.  His essential properties for great systems all point in one direction: being able to express concepts and continually build new ideas in your system.  I believe many of his properties (command shell, extension language, plugin system, introspection) all derive from the same thing: a language that can express ideas in a domain, &lt;span style="font-style: italic;"&gt;including itself&lt;/span&gt;.  Preventing reboots is second nature to websites: you never see Amazon clearing all reviews from its website so it can start from scratch.&lt;br /&gt;&lt;br /&gt;Secondly, developing a language that visitors can use forces you to think about what concepts &lt;span style="font-style: italic;"&gt;they&lt;/span&gt; &lt;span style="font-style: italic;"&gt;want&lt;/span&gt; to use.  It's easy to think of features to add to a website: labels, user pictures, comments; but in order to understand what is &lt;span style="font-style: italic;"&gt;useful&lt;/span&gt; to a user, you need understand what they're trying to communicate.  This is similar to Joel Spolsky's &lt;a href="http://www.joelonsoftware.com/uibook/chapters/fog0000000065.html"&gt;activity planning&lt;/a&gt; except you need to go a little bit further and understand what a user is trying to say rather than what they're doing.&lt;br /&gt;&lt;br /&gt;Amazon has added the ability to tag products, but it's barely getting any usage.  Why?  I think it's because customers are trying to categorize products much less frequently than they want to learn about the differences between similar products.  Right now Amazon can't communicate comparisons to customers because it has no language to talk about the properties that customers care about.  Which shoe is more durable?  Which book is more useful for my research?  There's no way for a reviewer to express these ideas in a way that can be combined with the opinions of others, compared to another item, and understood by a buyer.  Instead of spending time implementing tags because other Web 2.0 companies had them, I would recommend developing something similar to PerformanceBike's reviews and letting customers compare them in ways they care about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;How Do I Develop This Language?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Domain specific languages, or DSLs, are relatively well known in the programming world.  Martin Fowler has a good &lt;a href="http://martinfowler.com/articles/languageWorkbench.html"&gt;article&lt;/a&gt; on the subject.  My advice on how to proceed starts like most other pieces of advice: know your audience.  What are the basic ideas in your domain?  For &lt;a href="http://yelp.com/"&gt;Yelp&lt;/a&gt; it's a business and its quality.  For a &lt;a href="http://twoplustwo.com/"&gt;poker forum&lt;/a&gt; its hands, bets, and cards.  Now, how are customers trying to use these basic concepts to build more complex ones?  What makes a restaurant appealing?  What makes a a hand strong in a certain situation?  Enable users to describe these ideas succinctly: a "star" rating is a good example.  With a simple click, users can summarize their feelings about a place.&lt;br /&gt;&lt;br /&gt;What questions are users asking?  Can they express them on your site?  Simple search is not good enough in most cases because its domain is too wide.  Yelp has a separate box to express location because when searching for a business, users need to communicate what area they're interested in.&lt;br /&gt;&lt;br /&gt;It's important to stay focused on flexibility during the design of your language.  PerformanceBike reviews don't have a set number of check boxes for product attributes; they let users decide on their own.  You're trying to provide the building blocks to users so they can build what work best for them, not build up a house you think they'll want to live in.  Abstract upwards the types you think will important: programming languages have "integers" not the individual concepts of "1", "2", "3", "4".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Getting More Advanced&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'd like to be able to express more complex idea on websites I use.  When a Yelp review has another business in it, it should be recognized as a specific object that the sites language knows about.  I should be able to click on that business to learn about it, continuing the conversation.  I want to easily ask a question: "What should I do for fun Saturday in San Francisco?"  &lt;span style="font-style: italic;"&gt;I&lt;/span&gt; is a concept that should be comparable to other people.  &lt;span style="font-style: italic;"&gt;San Francisco&lt;/span&gt; is a concept of a location in which to search.  &lt;span style="font-style: italic;"&gt;fun&lt;/span&gt; is a description of what type of businesses I am looking for.&lt;br /&gt;&lt;br /&gt;Just like programming languages today, the website needs to be implemented.  Perhaps my question will be translated into a database query that searches for businesses that have been highly reviewed by people who have rated other businesses similarly to me, constrained to San Francisco and with a tag of &lt;span style="font-style: italic;"&gt;fun&lt;/span&gt;.  The point is that I have a language to express my desire and the website has a way to express its response.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Feedback&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So what sites do you feel expressive on?  Why?  What are you doing to enable your users to communicate?  Yegge said, "Features for non-technical end-users don't contribute to a system's lifespan. In the fullness of time, I believe programming fluency will become as ubiquitous as literacy, so it won't matter."  Are your users literate in your website?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-1584306741418685432?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/1584306741418685432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=1584306741418685432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/1584306741418685432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/1584306741418685432'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/01/website-as-language.html' title='A Website as a Language'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2103640490073417673</id><published>2007-01-29T09:33:00.000-08:00</published><updated>2007-01-29T10:27:07.614-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>New Bike?</title><content type='html'>J is buying a new bike, so I thought I'd post some of the resources I've used this past year for bicycling.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cptips.com/"&gt;CPTips.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By &lt;span style="font-style: italic;"&gt;far&lt;/span&gt; the most useful resource I have found has been this website. For buying a new bike specifically, check out the &lt;a href="http://cptips.com/bkefit.htm"&gt;sizing section&lt;/a&gt;.  The site is useful because it summarizes a lot of researched information, and not just personal experiences and antidotes.  I especially like how it cites other articles that you can go read for more in depth info.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bicycling.com/"&gt;Bicycling Magazine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Like most hobby magazines, this has a lot of hype and fawning reviews for expensive products.  If you just stick to their "best" awards, like the Editor's Choice Awards, then you can extract some useful information out of it.  For example, &lt;a href="http://www.bicycling.com/article/1,6610,s1-1-2-14625-6,00.html"&gt;Best Entry-Level Road Bike&lt;/a&gt; has some useful recommendations.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roadbikereview.com/"&gt;RoadBikeReview&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've found this site to have the best coverage in product reviews.  Nice simple interface, too, compared to the Minotaur&lt;b&gt; &lt;/b&gt;lair that is bicycling magazine.&lt;br /&gt;&lt;br /&gt;Try Out Everything&lt;br /&gt;&lt;br /&gt;Each bike store or chain carries different brand bikes.  Since frame geometry differs between brands, I highly recommend riding as many bikes that are in your price range as possible.  Ride a couple out of your price range, too, for comparison.  Then ride the ones you like again to make sure you remember them correctly.  Buy the bike that feels best, however you define it: comfortable, fast, pretty, etc.  Buy a bike you'll &lt;span style="font-style: italic;"&gt;want&lt;/span&gt; to ride.&lt;br /&gt;&lt;br /&gt;There's three stores I recommend checking out in the South Bay area.  &lt;a href="http://www.performancebike.com"&gt;Performance Bike&lt;/a&gt;: the low cost leader in the field, I bought my bike here with lifetime minor service.  I've been happy with their service, prices, and online store.  I've received personal (and personable) help from the mechanics, including picking out new wheels and making fitting adjustments on my bike.  When I ordered a cleaning kit from their website that failed to show up after they had shipped it, they expressed me another one no-questions-asked.  &lt;a href="http://www.mikesbikes.com"&gt;Mike's Bikes&lt;/a&gt;: I have a couple female friends that have had good experiences here because they carry a lot of women's frames.  They also carry some sort of adjustments package, but you should ask them about it when you buy the bike.  &lt;a href="http://www.PaloAltoBicycles.com"&gt;Palo Alto Bicycles&lt;/a&gt;: these are great folks, but the store is a little pricey.  The store also has free clinics about cleaning and riding your bike that I recommend no matter where you end up buying.&lt;br /&gt;&lt;br /&gt;Price Differences&lt;br /&gt;&lt;br /&gt;Most people are surprised that a good road bike can now cost you $1,000 or more.  Even the lowest end road bikes will set you back around $550.  The big jumps in price are because of the frame and wheels.  The incremental jumps are from the components (shifters, derailers, brakes, etc.)  Higher quality components will last longer, which is important if you are riding hundreds of miles a week.  The frame and wheels affect the weight and "feel" of a bike.  The weight is only important if you are concerned about racing.  The "feel" of the bike should be judged when you ride it, since the saddle, seat, and fork can all affect the "feel" of the bike more than the frame material.  Again, pick what you enjoy riding the most.&lt;br /&gt;&lt;br /&gt;Have you recently purchased a bike?  Any suggestions?  Are you buying a bike?  Any questions?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2103640490073417673?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2103640490073417673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2103640490073417673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2103640490073417673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2103640490073417673'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/01/new-bike.html' title='New Bike?'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-6157219457554152683</id><published>2007-01-23T17:29:00.000-08:00</published><updated>2007-01-25T11:27:58.327-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motivation'/><title type='text'>Superpowers?</title><content type='html'>Why do all these comic book characters want a "normal" life?  When I look at their powers I think to myself, "Man, if I had *any* power, I would specialize the hell out of it."   If all I could do was make purple dots appear on walls, I would practice till I could play purple movies on a big screen.  Forget that boring "normal" life!  Never mind what I would do with really interesting powers like Spider-Man's.  But then I see stories like &lt;a href="http://www.teamhoyt.com/"&gt;Team Hoyt&lt;/a&gt; and realize that everyone has superpowers, but they also choose a "normal" life.  So what am I doing to take advantage of my powers?&lt;br /&gt;&lt;br /&gt;One of my biggest achievements is last year's &lt;a href="http://www.aidslifecycle.com/"&gt;AIDS/Lifecycle&lt;/a&gt; ride.  When I tell people that I biked from San Francisco to LA they look at me in surprise, wondering if such a thing is possible.  The thing that made it super for me, though, was the amount of money raised for the SF AIDS foundation.  I've talked to people that this foundation has literally saved from death.  The question "If you had the power to save people's lives, would you do it?" isn't hypothetical for most people, including me.  That's why I'm starting to practice and improve my bicycling skills: I want to do more this year.&lt;br /&gt;&lt;br /&gt;Just &lt;span style="font-style: italic;"&gt;having&lt;/span&gt; extra money would probably be considered a superpower by over 1.1 billion people living on a couple dollars a day.  Many people don't have money to just give away, but there are places such as &lt;a href="http://www.kiva.org/"&gt;Kiva&lt;/a&gt; that you let your spare money do a lot of good.  (I'm not a financial adviser, or even know what the word financial means, so as always be careful where you put your money).  &lt;a href="http://www.kiva.org/"&gt;Kiva&lt;/a&gt; lets you give out loans to folks in or bordering on poverty.  Unlike giving money to one of your buddies, you can be sure that your loan will be going to something useful ;)  Like your buddies, you can bet that it'll be returned so you can use that money on yourself afterwards.&lt;br /&gt;&lt;br /&gt;The fact is, just like superheroes, most people don't really want to use their powers; they just want a normal life.  Unlike the worlds in comic books and TV, though, everyone has powers here.  You don't need super-strength if there are no super-monsters.  We do need normal compassion when people are dying from "normal" hunger.  That means everyone can live a normal life &lt;span style="font-style: italic;"&gt;while &lt;/span&gt;achieving the same things as your favorite super-team.  Even Wolverine likes his beer at a local bar, so using your powers doesn't require giving up everything you love.  So let's make "normal" super, and have fun with the powers we've got.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-6157219457554152683?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/6157219457554152683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=6157219457554152683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/6157219457554152683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/6157219457554152683'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/01/superpowers.html' title='Superpowers?'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-7452409159363903725</id><published>2007-01-17T10:22:00.000-08:00</published><updated>2007-01-19T09:58:19.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exercise'/><category scheme='http://www.blogger.com/atom/ns#' term='motivation'/><title type='text'>Just Do It (for 5 minutes)</title><content type='html'>A cliche phrase now, but no less important.  There are so many things people put off because they can't do it "right:" they don't have the newest equipment, haven't finished all of their preconceived requirements, or there's not enough time. Why do we have this notion that accomplishing something perfectly is the only justification for trying?  It's helpful to take a more evolutionary mindset: start with &lt;span style="font-style: italic;"&gt;something&lt;/span&gt; then improve during your next iteration.&lt;br /&gt;&lt;br /&gt;I'm trying to start my cycling training early this year.  When I get home, though, I mostly just want to sit on the couch and make up excuses as to why it's not a good idea to get on the trainer.  (The rest of me wants a delicious beer.)  "It's too cold outside," "I'm too tired," "Riding without hills doesn't help much anyway," I rationalize.   In these cases it's helpful to use a "5 minute rule."  Just do it for 5 minutes; if I'm still tired, quit. At the end of 5 minutes on the bike I realize it's not too cold, I'm feeling pretty invigorated, and am getting a great workout without hills.&lt;br /&gt;&lt;br /&gt;You can't apply the exact 5 minute rule to everything, but the concept extends beyond exercise.  Slate wrote an &lt;a href="http://www.slate.com/id/3604/"&gt;article&lt;/a&gt; about toothpaste and one sentence really jumped out at me: "How regularly and how attentively you brush matters far more than what you brush with."  What he's saying is "Just do it!"  Spend that 10 minutes at Safeway trying to decide what brand of toothpaste to buy and just brush your teeth everyday this week.&lt;br /&gt;&lt;br /&gt;My buddy's personal finance site, &lt;a href="http://iwillteachyoutoberich.com/"&gt;"I Will Teach You To Be Rich,"&lt;/a&gt; has a lot of advice about where to invest, the difference between stocks and mutual funds, and all kinds of everyday savings tips.  But do you know his most important tip?  "Just do it."  Start saving &lt;span style="font-style: italic;"&gt;something&lt;/span&gt; automatically.  Do you realize later that your checking account is not earning enough interest?  Evolve your saving strategy and invest in a mutual fund.  But that second step is a lot easier once you got the first 5 minutes of saving out of the way.&lt;br /&gt;&lt;br /&gt;So sit down and spend 5 minutes on your startup even if you don't think it's the "&lt;a href="http://www.paulgraham.com/ideas.html"&gt;perfect idea&lt;/a&gt;."  Put on some tennis shoes and go for a 5 minutes jog and see how you feel.  Spend 5 minutes writing the first post on that blog you've been meaning to start for 3 years (hmm, or is that just me?).  Once you've started you can look back and tweak your process, but get rid of those nonsense rationalizations and just &lt;span style="font-style: italic;"&gt;start&lt;/span&gt;. What are you spending 5 minutes on?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-7452409159363903725?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/7452409159363903725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=7452409159363903725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7452409159363903725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/7452409159363903725'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/01/just-do-it-for-5-minutes.html' title='Just Do It (for 5 minutes)'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-2955778450407883643</id><published>2007-01-12T10:45:00.000-08:00</published><updated>2007-01-19T10:01:16.637-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cycling'/><title type='text'>Smells</title><content type='html'>One of the things I like about biking home from work is the variety of smells along the way.  Mostly it's families cooking dinner.  Lots of Indian food smells, some generic savory smells, and BBQ when it was warmer.  There's also the smell of wood fires which remind me of the few my family built back in Sacramento.  During the spring, there's a corner you turn near a park, and you reliably get a wonderful blast of  flowers.&lt;br /&gt;&lt;br /&gt;What are the little things you enjoy while biking or jogging?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-2955778450407883643?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/2955778450407883643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=2955778450407883643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2955778450407883643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/2955778450407883643'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2007/01/smells.html' title='Smells'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2297930581307730725.post-5588539171556300205</id><published>2004-01-27T14:57:00.000-08:00</published><updated>2007-02-08T15:03:23.945-08:00</updated><title type='text'>Be Happy?</title><content type='html'>My dad sent me &lt;a href="http://www.opinionjournal.com/columnists/pdupont/?id=110004581"&gt;this article&lt;/a&gt;, and I sent back a response that turned out longer than I expected.  I think it is a good example of how reading something critically can be very important.&lt;br /&gt;&lt;br /&gt;&gt; Don't Worry, Be Happy There's no reason to be pessimistic about life&lt;br /&gt;&gt; in America.&lt;br /&gt;&gt;&lt;br /&gt;&gt; BY PETE DU PONT Wednesday, January 21, 2004 12:01 a.m. EST=&lt;br /&gt;&gt;&lt;br /&gt;&gt; In 1958 liberal economist John Kenneth Galbraith's best-selling "The&lt;br /&gt;&gt; Affluent Society" assured us that living standards had risen so far&lt;br /&gt;&gt; they couldn't rise any further.&lt;br /&gt;&lt;br /&gt;This is almost certainly false.  I have not read Mr. Galbraith's book,&lt;br /&gt;but have done research and read a few summaries of this book.  The main&lt;br /&gt;premise of the book, is "how many early economic ideas were created in&lt;br /&gt;periods of scarcity, and that the notion of scarcity may not appropriate&lt;br /&gt;for today's age of mass affluence. Those with vested interests in&lt;br /&gt;production (i.e. large businesses) still cling to the "conventional&lt;br /&gt;wisdom" that increased production equals progress, even though goods are&lt;br /&gt;now abundant and our basic material needs have been satisfied."  He goes&lt;br /&gt;on to discuss how to better balance public and private spending.  In an&lt;br /&gt;a time period just prior to exposes like "Silent Spring," it seems his&lt;br /&gt;book would have been remarkably on target.  The fact that he is&lt;br /&gt;proposing ways to improve the life of Americans directly contradicts the&lt;br /&gt;statement that he believed "living standards ... couldn't rise any&lt;br /&gt;further."&lt;br /&gt;&lt;br /&gt;&gt; In 1960 Prof. Paul Erlich concluded&lt;br /&gt;&gt; that 65 million Americans would perish from famine in the 1980s and&lt;br /&gt;&gt; food riots would kill millions more.&lt;br /&gt;&lt;br /&gt;I'll assume that this article is talking about Prof. Paul *Ehrlich* who&lt;br /&gt;published "Population Bomb" in *1968*.  Apparently, at the time the book&lt;br /&gt;was published it was regarded as fringe material containing a variety&lt;br /&gt;of flawed assumptions.  Even overpopulation.com is highly critical of his&lt;br /&gt;work, which of course points to the conclusion that this example is&lt;br /&gt;contrived, even excusing the date and spelling inaccuracies.&lt;br /&gt;&lt;br /&gt;&gt; Scientific American predicted in&lt;br /&gt;&gt; 1970 that in 20 years the world would be out of lead, zinc, tin, gold&lt;br /&gt;&gt; and silver.&lt;br /&gt;&lt;br /&gt;I'll have to go to the library to find this article, which may prove&lt;br /&gt;difficult given the lack of any citation except for a year, a concept&lt;br /&gt;which has already proved difficult for this author to grasp.&lt;br /&gt;&lt;br /&gt;&gt; And Jimmy Carter's 1980 "Global 2000" report forecast that&lt;br /&gt;&gt; mass starvation and superplagues would ravage the globe in the final&lt;br /&gt;&gt; year of the millennium.&lt;br /&gt;&lt;br /&gt;Hmm, this one is pretty hard to get a hold of, too.  Amazon sells it,&lt;br /&gt;but offers no reviews or summaries.  I can only find its first&lt;br /&gt;paragraph: "If present trends continue, the world in 2000 will be more&lt;br /&gt;crowded, more polluted, less stable ecologically, and more vulnerable to&lt;br /&gt;disruption than the world we live in now."  My knowledge of what&lt;br /&gt;constituted "present trends" in that area is hazy, but I think I would be&lt;br /&gt;safe in assuming some of Carter's actions such as support for Habitat&lt;br /&gt;for Humanity and the Sasakawa Africa Association's projects in Ghana go&lt;br /&gt;against those trends.   However, I would not be surprised if the&lt;br /&gt;majority of Gobal 2000's predictions were wrong.&lt;br /&gt;&lt;br /&gt;&gt; They all more or less agreed with English&lt;br /&gt;&gt; philosopher Thomas Hobbes that our lives would be "solitary, nasty,&lt;br /&gt;&gt; brutish, and short."&lt;br /&gt;&lt;br /&gt;Ok, this is just _completely_ out of context.  Any introductory course&lt;br /&gt;on philosophy will reveal that Hobbes used that famous phrase to&lt;br /&gt;describe conditions in a hypothetical "state of nature" that preceded&lt;br /&gt;the formation of civil society. Hobbes' words are a description of the&lt;br /&gt;past, not a forecast for the future.  Mr. DuPont is using this quote in&lt;br /&gt;the exact opposite way it was intended, and I am not convinced it was&lt;br /&gt;wholly unintentional.&lt;br /&gt;&lt;br /&gt;&gt; And they were all dead wrong. Gregg Easterbrook's new book, "The&lt;br /&gt;&gt; Progress Paradox, How Life Gets Better While People Feel Worse,"&lt;br /&gt;&gt; documents the opposite&lt;br /&gt;&gt;&lt;br /&gt;&gt;     Almost everything about American and European life is getting&lt;br /&gt;&gt;     better for almost everyone. Public health is improving by almost&lt;br /&gt;&gt;     every measure. . . . Environmental trends are nearly all&lt;br /&gt;&gt;     positive. . . . Drinking, smoking and most forms of drug use are&lt;br /&gt;&gt;     declining. Teen pregnancy is declining. Welfare rolls are&lt;br /&gt;&gt;     shrinking without increase in poverty. . . . Crime has declined.&lt;br /&gt;&gt;     . . . Education levels keep rising. . . . Armed conflict and&lt;br /&gt;&gt;     combat deaths worldwide are in a cycle of decline. Global&lt;br /&gt;&gt;     democracy is rising, military dictatorship and communism are on&lt;br /&gt;&gt;     the run.&lt;br /&gt;&gt;&lt;br /&gt;&gt; Mr. Easterbrook's data on the escalating quality of American and&lt;br /&gt;&gt; global life are broad and deep, and if you are a CNN/New York Times&lt;br /&gt;&gt; buff, astonishing and irritating. Optimists have turned out to be&lt;br /&gt;&gt; fully correct; pessimists alarmingly misguided:&lt;br /&gt;&gt;&lt;br /&gt;&gt; * Life expectancy in America has increased from 41 years at the&lt;br /&gt;&gt; beginning of the 20th century to 77 in 2000; we live almost twice as&lt;br /&gt;&gt; long as we did a century ago. And both longevity and health are bound&lt;br /&gt;&gt; to get better. Infant mortality is down 45% since 1980,&lt;br /&gt;&lt;br /&gt;While both are interesting statistics, it is important to note that they&lt;br /&gt;are not independent.  Fewer infant deaths means higher average lifespan.&lt;br /&gt;Obviously improvements have been made, but they may not be as wide&lt;br /&gt;ranging as the author would like to think.&lt;br /&gt;&lt;br /&gt;&gt; and we spent&lt;br /&gt;&gt; 50% more on health care per person in 2002 than in 1982. For example,&lt;br /&gt;&gt; there were 200,000 knee replacements in 2001 at an average cost of&lt;br /&gt;&gt; $26,000. That's $5.2 billion for a health-care procedure that didn't&lt;br /&gt;&gt; exist a decade ago.&lt;br /&gt;&lt;br /&gt;Good point, I'll assume its been adjusted for inflation.&lt;br /&gt;&lt;br /&gt;&gt; * Incomes are up. Inflation-adjusted per capita income has doubled&lt;br /&gt;&gt; since 1960. And we're working less for more money. The average&lt;br /&gt;&gt; American worked 66 hours a week in 1850, 53 hours in 1900 and 42&lt;br /&gt;&gt; today. The total number of working hours in the average lifetime has&lt;br /&gt;&gt; declined linearly for 15 consecutive decades. In 1880 the typical&lt;br /&gt;&gt; American spent two hours a week relaxing; today it is 40.&lt;br /&gt;&lt;br /&gt;This statistic is very misleading.  I believe you will find that while&lt;br /&gt;the average income has gone up, this is mainly because the upper 2% or&lt;br /&gt;so has vastly increased their wealth.  I'd be interested to see the data&lt;br /&gt;from which he derived his answers. Unfortunately, I only have time for&lt;br /&gt;quick forays into cyberspace, and came up with this: "the wages of&lt;br /&gt;low-skilled workers, the "working poor," have been stagnant or falling&lt;br /&gt;through much of the past three decades. And at the very top, the share&lt;br /&gt;of income going to the richest 1 percent of Americans has nearly doubled&lt;br /&gt;from about 8 percent in the late '70s to about 15 percent today-not&lt;br /&gt;counting capital gains!"&lt;br /&gt;(http://www.scu.edu/ethics/publications/ethicsoutlook/2003/income_wealth_disparities.html)&lt;br /&gt;Which is backed by statistics here:&lt;br /&gt;http://www.inequality.org/factsfr.html  Obviously we'd have to do some&lt;br /&gt;closer analysis of these conclusions, but it should be clear that the&lt;br /&gt;fact the "average" American is doing significantly better is&lt;br /&gt;questionable at best.&lt;br /&gt;&lt;br /&gt;&gt; * Poverty is down. Twenty-two percent of Americans lived in poverty in&lt;br /&gt;&gt; 1960; by 2001 that rate had declined to 11.7%. Mr. Easterbrook&lt;br /&gt;&gt; concludes that to avoid becoming poor in the U.S. "you must do three&lt;br /&gt;&gt; things: graduate from high school, marry after the age of 20, and&lt;br /&gt;&gt; marry before having your first child." Only 8% of those who do all&lt;br /&gt;&gt; three become poor; 79% of the poor failed to do them. Contrary to&lt;br /&gt;&gt; pessimist mantra, democratic capitalism forces poverty on no one.&lt;br /&gt;&lt;br /&gt;First we need to accept that the poverty level is set by a government&lt;br /&gt;whose interest is in keeping the number of people officially in poverty&lt;br /&gt;very low.  I'm not suggesting a massive conspiracy, merely saying we&lt;br /&gt;need to keep it in mind for this statistic.  Second, Mr. Easterbrook&lt;br /&gt;makes the cardinal statistics mistake: confusing correlation with&lt;br /&gt;causation.  Perhaps Mr. DuPont is misquoting Mr. Easterbrook (he already&lt;br /&gt;misquoted earlier in the article), but it seems pretty clear that&lt;br /&gt;conclusions are being drawn from statistics without any sort of&lt;br /&gt;causative proof.  Mr. DuPont is apparently trying to sneak this last&lt;br /&gt;line past the reader in the hopes that, blinded by these "great"&lt;br /&gt;statistics, we will believe that a) all "pessimists" are saying the same&lt;br /&gt;thing (which it is clear they are not by reading the first couple&lt;br /&gt;paragraphs), b) we are living in a perfectly democratic, capitalistic&lt;br /&gt;state which is arguable, and c) "no one" is affected by our growth&lt;br /&gt;without discussing any statistics on people outside the US, such as&lt;br /&gt;the massive environmental damage caused by companies like Shell and Exxon&lt;br /&gt;(Latin America and Nigeria come to mind, among others).&lt;br /&gt;&lt;br /&gt;&gt; We are not running out of any resource--oil, natural gas, copper,&lt;br /&gt;&gt; aluminum or anything else.&lt;br /&gt;&lt;br /&gt;This is an incredible statement.  We are running out of oil: it is not&lt;br /&gt;being produced at nearly the rate it is being consumed.  We cannot reuse&lt;br /&gt;it after it has been consumed.  Am I missing something here?&lt;br /&gt;&lt;br /&gt;&gt; Pollution is down; today's new cars emit&lt;br /&gt;&gt; "less than 2% as much pollution per mile as a car of 1970."&lt;br /&gt;&lt;br /&gt;Why is pollution down?  Is it because of people like Mr. DuPont who&lt;br /&gt;believe that our current situation is perfectly acceptable or because of&lt;br /&gt;"pessimists" how have pushed for cutting pollution in both the&lt;br /&gt;automotive and industrial industries?  The amount of pollution per car&lt;br /&gt;is an interesting statistic but says nothing toward the overall amount&lt;br /&gt;of pollution.  How many additional cars are in use?  How much pollution&lt;br /&gt;is actually caused by cars?  Many of the most polluted cities in the&lt;br /&gt;world have relatively low car ownership rates.  In addition, studies&lt;br /&gt;have shown that the amount of carbon dioxide, not typically classified&lt;br /&gt;as a pollutant, is having an increasing effect on the planet.&lt;br /&gt;&lt;br /&gt;&gt; Man and&lt;br /&gt;&gt; technology are not the enemies of the natural environment.&lt;br /&gt;&lt;br /&gt;This statement is a non-sequiter.  None of the "pessimists" the author&lt;br /&gt;has referred to are of the opinion that technology is an evil.  Quite the&lt;br /&gt;contrary, I'll bet, as many have argued that we need to do *more*&lt;br /&gt;research into technologies that can help the world.  I'm sure Scientific&lt;br /&gt;American, for one, was advocating better use of technology to help&lt;br /&gt;recycle or reuse the elements they were worried about.  So quite the&lt;br /&gt;contrary,&lt;br /&gt;&lt;br /&gt;&gt; In&lt;br /&gt;&gt; Connecticut the population tripled and agricultural production&lt;br /&gt;&gt; quadrupled in the 20th century, yet the state is 59% forested today&lt;br /&gt;&gt; compared with 37% in the 19th century.&lt;br /&gt;&lt;br /&gt;Forestation statistics are frequently misleading, due to the tendency to&lt;br /&gt;count tree farms which lack most ecological benifits (and in fact&lt;br /&gt;sometimes interfere with them) as forested land.  I'd have to see the&lt;br /&gt;statistics the author used.  In any case, I doubt Connecticut can be&lt;br /&gt;used as a microcosm for the world, where we see old growth and tropical&lt;br /&gt;forests disappearing at an alarming rate.&lt;br /&gt;&lt;br /&gt;&gt; * Illegal drug use, alcohol consumption, teen pregnancy and the&lt;br /&gt;&gt; divorce rate are all down.&lt;br /&gt;&lt;br /&gt;These are good signs, I think.  The only comment I have here is that&lt;br /&gt;"divorce rate," if it refers to the number of people getting divorced,&lt;br /&gt;is not quite accurate since the number of marriages has also been&lt;br /&gt;decreasing.&lt;br /&gt;&lt;br /&gt;&gt; Crime is substantially down. Food&lt;br /&gt;&gt; production, educational attainment (12.3 years on average, the highest&lt;br /&gt;&gt; in the world),&lt;br /&gt;&lt;br /&gt;I think its interesting to note that increasing the availability of&lt;br /&gt;education was one of Galbraith's main suggestions for how to reverse the&lt;br /&gt;growing gap between the poor and wealthy.&lt;br /&gt;&lt;br /&gt;&gt; white-collar jobs (which now outnumber blue-collar&lt;br /&gt;&gt; ones) and house size and ownership (70% own their own homes today,&lt;br /&gt;&gt; compared with 20% a century ago) are all up.&lt;br /&gt;&gt;&lt;br /&gt;&gt; * The goods available to us are overwhelming, and getting cheaper all&lt;br /&gt;&gt; the time. Mr. Easterbrook notes there were 11 million cell phones in&lt;br /&gt;&gt; the world in 1990; there are now more than a billion. Regular gasoline&lt;br /&gt;&gt; costs the same in real terms as it did in 1950. Cheeseburgers that&lt;br /&gt;&gt; cost 30 minutes of work at typical wages when the first McDonald's&lt;br /&gt;&gt; opened now can be bought for three minutes of work. The 1880s prairie&lt;br /&gt;&gt; farmer knew little of what was happening in the outside world; today&lt;br /&gt;&gt; television and the Internet give him hourly access to global&lt;br /&gt;&gt; information on the economy, war and peace and the NFL playoffs, and of&lt;br /&gt;&gt; course he can see every fire, crime, disaster and political accusation&lt;br /&gt;&gt; produced.&lt;br /&gt;&lt;br /&gt;I'd question the benifits of fast food culture, but concede that as&lt;br /&gt;technology has improved, more goods are available to all.  I think one&lt;br /&gt;of the main reasons the Internet is such a wonderful place is because&lt;br /&gt;people can now act as producers themselves.  The popularity of things&lt;br /&gt;like blogs, Open Source software, and peer-to-peer networks have turned&lt;br /&gt;many industries on their ear.  The separation of consumers and producers&lt;br /&gt;is decreasing, which is very encouraging.  We saw this during the&lt;br /&gt;beginning stages of both television and radio, which are now dominated by&lt;br /&gt;fewer and fewer participants.  Hopefully, the Internet can stay&lt;br /&gt;free and fend off "hostile tackovers."&lt;br /&gt;&lt;br /&gt;&gt; All this progress is not just in America or wealthy nations.&lt;br /&gt;&gt; Middle-class men and women in Europe and America live better than&lt;br /&gt;&gt; 99.4% of humans who have ever lived.&lt;br /&gt;&lt;br /&gt;This is an odd pair of sentences.  The author tries to make a point&lt;br /&gt;about poor nations, then follows up with a statistic about not just&lt;br /&gt;America and the relatively rich continent of Europe, but by the&lt;br /&gt;middle-class of such countries.  As I mentioned earlier, this also fails&lt;br /&gt;to address the fact that these middle-class citizens are growing fewer&lt;br /&gt;by the year, as the gap in wealth continues to increase.&lt;br /&gt;&lt;br /&gt;&gt; In 1975 the average income in&lt;br /&gt;&gt; developing nations was $2,125 per capita; today (inflation adjusted)&lt;br /&gt;&gt; it is $4,000. Global adult literacy was 47% in 1970; 30 years later it&lt;br /&gt;&gt; was 73%.&lt;br /&gt;&lt;br /&gt;I think this literacy statistic is perhaps the most encouraging of all.&lt;br /&gt;&lt;br /&gt;&gt; And democratic capitalism triumphed over communism without a shot&lt;br /&gt;&gt; being fired. The best governmental and economic system the world has&lt;br /&gt;&gt; ever known simply crushed the century's worst idea.&lt;br /&gt;&lt;br /&gt;I think the author is referring as much to the political idea of&lt;br /&gt;communism as he is the leaders of those communist countries that fell.&lt;br /&gt;Certainly we can say that the US won the Cold War, but the fact that we&lt;br /&gt;still have communist countries that are managing to survive leads me to&lt;br /&gt;question if we have really "triumphed over communism."  And I don't see&lt;br /&gt;how communism was that century's idea at all, much less its worst idea.&lt;br /&gt;Marx and others obviously solidified most Communist thought by the late&lt;br /&gt;1800's.  The use of the atom bomb, the resulting arms race (which we&lt;br /&gt;have yet to see the conclusion of) might be a better candidate for "worst&lt;br /&gt;idea."&lt;br /&gt;&lt;br /&gt;&gt; Mr. Easterbrook identifies problems that remain, from poverty that&lt;br /&gt;&gt; shouldn't exist at all in such a prosperous America to the fact that&lt;br /&gt;&gt; one-third of us are obese today, vs. 12% in 1960--the latter a&lt;br /&gt;&gt; byproduct of prosperity.&lt;br /&gt;&lt;br /&gt;This conclusion is really uncalled for, and can be easily be questioned&lt;br /&gt;by looking at the dramatic increase in prosperity in Japan and their&lt;br /&gt;steady 3% obesity rate&lt;br /&gt;(http://www.oecdobserver.org/news/fullstory.php/aid/1046/Weighty_problem.ht=&lt;br /&gt;ml).&lt;br /&gt;&gt; Yet with all the progress we have enjoyed,&lt;br /&gt;&gt; why aren't we happier about it? He concludes that our genetic&lt;br /&gt;&gt; pessimism--an internal bad-news bias--plus the championing of&lt;br /&gt;&gt; victimhood by elites, intellectuals and the media, along with the&lt;br /&gt;&gt; material abundance that pressures us to seek more abundance, are the&lt;br /&gt;&gt; reasons that people don't feel better off.&lt;br /&gt;&lt;br /&gt;Doesn't it seem more likely that wealth != happiness?  The author has&lt;br /&gt;been very explicit in stating that we are "better off" in terms of the&lt;br /&gt;amount of money we are making, the length of life we are living, the&lt;br /&gt;number of products we can buy, and the quantity of cheesburgers we can&lt;br /&gt;eat but is confused why we aren't happier.  Do you have a better time&lt;br /&gt;eating and the family run Italian place down the street or the more&lt;br /&gt;economically thriving McDonalds in the mall?  Do you enjoy chatting with&lt;br /&gt;the owner of a small antique shop or the cashier at CostCo?&lt;br /&gt;&lt;br /&gt;&gt; But feeling worse and being worse are two different things, and&lt;br /&gt;&gt; calamities are no more around the corner in 2004 that they were four&lt;br /&gt;&gt; decades ago in Messrs. Galbraith's and Erlich's minds.&lt;br /&gt;&lt;br /&gt;I'll concede and say that 1970's predictions of famine's and&lt;br /&gt;superpleagues (though I would be tempted to classify AIDS in the&lt;br /&gt;category) were highly unlikely.  But I think the likelihood of a group&lt;br /&gt;or nation using atomic weapons is still higher, however low it might be&lt;br /&gt;itself.&lt;br /&gt;&lt;br /&gt;&gt; But elitist&lt;br /&gt;&gt; global pessimism lives on--recall that in the 1992 presidential&lt;br /&gt;&gt; campaign Al Gore stated that America "faced the greatest calamity in&lt;br /&gt;&gt; the history of man."&lt;br /&gt;&lt;br /&gt;Given the penchant of this author for misquoting others, as well as the&lt;br /&gt;fact that this statement is seen nowhere on the internet (despite&lt;br /&gt;numerous sites documenting Gore's verbal slips) makes me question its&lt;br /&gt;authenticity.  I also if the author would agree that Bush's statements&lt;br /&gt;about the danger posed by Iraq should be put in the same category.&lt;br /&gt;&lt;br /&gt;&gt; There are calamities--terror attacks, earthquakes, volcanic&lt;br /&gt;&gt; eruptions--but they are not caused by global progress or democratic&lt;br /&gt;&gt; capitalism.&lt;br /&gt;&lt;br /&gt;Why do terrorists attack the US?  I haven't heard any arguments, from&lt;br /&gt;either the right ("they hate our lifestyle") to the left ("we use force&lt;br /&gt;to enforce our global will") that *doesn't* at its root involve global progress&lt;br /&gt;or democratic capitalism.  Placing terror attacks in that category makes&lt;br /&gt;it seem like a natural phenomenon, something that can't be understood.&lt;br /&gt;This seems suspiciously convenient for someone who does not wish to&lt;br /&gt;think about the consequences of an increasingly consumerist culture and&lt;br /&gt;blames our worries on "genetic pessimism."&lt;br /&gt;&lt;br /&gt;&gt; Today's America can be improved--and is constantly&lt;br /&gt;&gt; improving--but that is no reason to insist falsely that it is&lt;br /&gt;&gt; calamitous, dysfunctional, or doomed. Rather than nasty, brutish and&lt;br /&gt;&gt; short, 21st century life is good, comfortable and long, and getting&lt;br /&gt;&gt; better all the time.&lt;br /&gt;&lt;br /&gt;Change occurs when people are not satisfied with their current&lt;br /&gt;situation.  Some have the foresight to see that certain trends, if not&lt;br /&gt;retarded or reversed, will lead to dissatisfaction in the future.  When&lt;br /&gt;a President lies to his country about reasons for attacking another&lt;br /&gt;country, I consider that calamitous.  When a media conglomerate sues at&lt;br /&gt;12-year-old for over $12,500 I consider that dysfunctional.  When I see&lt;br /&gt;a trend in which the top %1 of people will end up having almost all of a&lt;br /&gt;nation's wealth, I consider that nation doomed.  Disregarding the&lt;br /&gt;inaccurate Hobbes reference, the 21st century has a long way to go&lt;br /&gt;before a majority of the population can say that.&lt;br /&gt;&lt;br /&gt;Thanks for sending the article, I think the issues it brings up, while&lt;br /&gt;not supporting the author's thesis, were interesting in and of&lt;br /&gt;themselves.  I hope my response is clear and cogent, because instead of&lt;br /&gt;rereading it I am going to go to bed :)  Good night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2297930581307730725-5588539171556300205?l=myawesomeblag.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://myawesomeblag.blogspot.com/feeds/5588539171556300205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2297930581307730725&amp;postID=5588539171556300205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/5588539171556300205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2297930581307730725/posts/default/5588539171556300205'/><link rel='alternate' type='text/html' href='http://myawesomeblag.blogspot.com/2004/01/be-happy.html' title='Be Happy?'/><author><name>Jim</name><uri>http://www.blogger.com/profile/06269113793600381839</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
