<?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-5280271148370184481</id><updated>2011-11-27T17:14:52.361-08:00</updated><category term='aperture'/><category term='lightroom'/><category term='ui'/><category term='copyright'/><category term='iphone'/><category term='python'/><category term='canadian'/><category term='photography'/><category term='flickr'/><category term='zooomr'/><category term='rails'/><category term='livejournal'/><category term='watch'/><category term='sixapart'/><category term='foreign devils'/><category term='wow'/><category term='IO2008'/><category term='stackless python'/><category term='typepad'/><category term='joost'/><category term='Programming'/><category term='nerdery'/><category term='Erlang'/><title type='text'>Ryan in Seattle</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default?start-index=101&amp;max-results=100'/><author><name>Ryan</name><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>123</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-7365864981957907209</id><published>2008-10-13T01:54:00.001-07:00</published><updated>2008-10-13T01:55:24.683-07:00</updated><title type='text'>This is it</title><content type='html'>Well folks, this is it. Seeing as I don't actually live in Seattle anymore, my blog name (and url) would be a lie within a lie.  As previously promised, here is my new blog:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ryantwopointoh.blogspot.com/"&gt;http://ryantwopointoh.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7365864981957907209?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7365864981957907209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7365864981957907209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7365864981957907209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7365864981957907209'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/10/this-is-it.html' title='This is it'/><author><name>Ryan</name><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-5280271148370184481.post-8248539025743278990</id><published>2008-08-01T19:18:00.000-07:00</published><updated>2008-08-01T20:18:12.864-07:00</updated><title type='text'>Upcoming: Ryan 2.0</title><content type='html'>Wherein I move to San Francisco (the city itself) and take a new job at Stumbleupon leaving my time in corporate giants (first Amazon, then Google) and kick ass and take names in a 35 person company. &lt;br /&gt;&lt;br /&gt;Look forward to philosophical discussions about software construction, production creation, the innovators dillema and the joys of getting things done without meetings.&lt;br /&gt;&lt;br /&gt;New web destination upcoming, look for it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8248539025743278990?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8248539025743278990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8248539025743278990' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8248539025743278990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8248539025743278990'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/08/upcoming-ryan-20.html' title='Upcoming: Ryan 2.0'/><author><name>Ryan</name><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-5280271148370184481.post-3969611563953169590</id><published>2008-06-14T23:58:00.000-07:00</published><updated>2008-06-16T21:54:00.400-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>The post wherein I trash Rails and make many new friends</title><content type='html'>So I've been coding Web &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;UIs&lt;/span&gt; with this &lt;a href="http://steve-yegge.blogspot.com/2007/06/rhino-on-rails.html"&gt;nifty port of Rails&lt;/a&gt; my coworker did. It's great - really great, a solid productive environment, Javascript is great to program in, and things are mostly working out well.  Except when they aren't, and lately I've come to realize that the programmatic model that Rails foists on to you is not at all suitable for advanced web &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;UIs&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;When I talk about advanced web UIs I'm talking about single-page type of web apps.  The goal of such apps is not to provide an progressively degraded experience, but to push the envelope of what is even possible in a browser. I'm talking about the gmails, the Google Analytics, etc.&lt;br /&gt;&lt;br /&gt;One &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;fundamental&lt;/span&gt; problem is that Rails provides a really really good server-side &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;templating&lt;/span&gt;.  This is great when you are doing a simple form-and-post with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;remoting&lt;/span&gt; type of application.  The structure tends to lead you to an architecture where you end up passing snippets of HTML between the server and doing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;innerHTML&lt;/span&gt; replacements on the client.&lt;br /&gt;&lt;br /&gt;The problem with this is it's hard to disentangle the server and client presentation side of things. Sometimes your server composes the text - and handles the i18n issues - and sometimes you need to compose text and DOM on the client side.  The latter can happen when you are handling errors during AJAX events - you don't want to handle an AJAX error by calling the server.  So now you need to pass string tables or hidden divs with your messages in the original page.  This isn't a great and integrated i18n development method.&lt;br /&gt;&lt;br /&gt;If your goal is to create a single-page client-side &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;stateful&lt;/span&gt; application, you will quickly run in to the situation where you require some form of client-side UI generation. One example is dialogs - generally they use floating divs and the JavaScript APIs tend to require HTML text snippets. Your choice is to either do some kind of client-side templating, or use the server side to pre-render in to hidden elements.&lt;br /&gt;&lt;br /&gt;The former strategy is valid, and there are many frameworks to help you.  However, this does not use the strengths of Rails.  You are bypassing the entire html and model binding code, tossing away major strengths and self-crippling Rails.  So why use Rails?&lt;br /&gt;&lt;br /&gt;The second strategy is also valid, but becomes difficult to manage. You tend to need unique IDs when using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;fieldsets&lt;/span&gt;, but you'll end up having several copies of the same nodes in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;dom&lt;/span&gt;. So now you need to swizzle IDs or move elements around. If this is starting to sound like assembly language work that is because it is.&lt;br /&gt;&lt;br /&gt;Taking the two approaches and using i18n, you now have more issues.  In the client-side templating you now need to selectively download string tables and do substitution at run time to internationalize your application.  There are matters of performance - extra functional calls, hash lookups, extra HTTP gets. &lt;br /&gt;&lt;br /&gt;In the server-generated option, things get substantially more complicated.  The server-side Rails i18n situation is not entirely clear, and it still doesn't provide a framework for client-side translated strings.  You can do things like JSON data from the server, but you end up manually shuttling all the strings you need from the server to the client in hidden elements or script blocks.  Internationalization is hard enough without doing lots of manual work by hand.&lt;br /&gt;&lt;br /&gt;The problem isn't that Rails isn't a productive framework, or that it doesn't do what it does well - it certainly does.  The problem I found is the framework leads you to writing hybrid server-generated UIs. Furthermore, the framework tends to encourage full page refreshes.  It's a matter of what is easy to do - then when you are under the gun, you do what is easiest and you end up in a multi-page application (like ours) when you really wanted a single page application.  The path forward is not clear, and Rails isn't really helping here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3969611563953169590?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3969611563953169590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3969611563953169590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3969611563953169590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3969611563953169590'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/06/post-wherein-i-trash-rails-and-make.html' title='The post wherein I trash Rails and make many new friends'/><author><name>Ryan</name><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-5280271148370184481.post-6746351201614237127</id><published>2008-06-13T17:42:00.000-07:00</published><updated>2008-06-13T17:47:51.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IO2008'/><title type='text'>Google I/O Videos</title><content type='html'>The Google I/O 2008 sessions are &lt;a href="http://sites.google.com/site/io/"&gt;now online.&lt;/a&gt; Included are slides and Youtube videos of a variety of topics, including Android, Open Social, GWT, Javascript and Maps. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you were unable to attend, I highly recommend the videos.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out GWT extreme as an exciting example of the kinds of things you can do with JS and browsers:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2ScPbu8ga1Q&amp;amp;hl=en"&gt;&lt;embed src="http://www.youtube.com/v/2ScPbu8ga1Q&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6746351201614237127?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6746351201614237127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6746351201614237127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6746351201614237127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6746351201614237127'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/06/google-io-videos.html' title='Google I/O Videos'/><author><name>Ryan</name><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-5280271148370184481.post-8270446206223659375</id><published>2008-06-03T21:40:00.000-07:00</published><updated>2008-06-04T10:17:13.437-07:00</updated><title type='text'>CSS Performance</title><content type='html'>I have been reading &lt;a href="http://www.cssmastery.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CSS&lt;/span&gt; Mastery&lt;/a&gt; lately - its a great medium/advanced guide to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CSS&lt;/span&gt;. If you know roughly about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CSS&lt;/span&gt; but you need serious helping turning that in to mastery, then this book is for you. The book provides both a quick introduction and specific solutions. However, the book provides advice that may be at odds with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Firefox&lt;/span&gt; performance guidelines.&lt;br /&gt;&lt;br /&gt;The book starts with a quick introduction, and then delves in to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CSS&lt;/span&gt; box model, then straight in to rounded corner techniques. It provides pragmatic advice along the way - such as what works on which browsers and making design cross-browser.&lt;br /&gt;&lt;br /&gt;However, the book recommends avoiding the use of too many classes - calling that design "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;classitus&lt;/span&gt;". By using the descent selector you can target your styles without using too many classes. If you read the &lt;a href="http://developer.mozilla.org/en/docs/Writing_Efficient_CSS"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;mozilla&lt;/span&gt; developer guide to efficient &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;CSS&lt;/span&gt;&lt;/a&gt;, the advice there is substantially different.&lt;br /&gt;&lt;br /&gt;The guide advises, among other things, that the descendant selector has poor performance. They recommendation is to use targeted class styles instead. This may lead to an expanded use of classes in your application, but the performance increase may be worth it. The best strategy is to measure. Since querying certain properties will block until the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;CSS&lt;/span&gt; styling is finished, you can measure the performance with code like so:&lt;br /&gt;&lt;br /&gt;var start = new Date().&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;getTime&lt;/span&gt;();&lt;br /&gt;element.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;innerHTML&lt;/span&gt; = 'a ton of html and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;css&lt;/span&gt;';&lt;br /&gt;var w = element.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;offsetWidth&lt;/span&gt;;&lt;br /&gt;var end = new Date().&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;getTime&lt;/span&gt;();&lt;br /&gt;alert(end - start);&lt;br /&gt;&lt;br /&gt;Thanks to my Nameless Coworker who shared those tips via email.&lt;br /&gt;&lt;br /&gt;Remember: always measure before you attempt any performance optimizing. That way you can be sure your hard work has ultimately benefited the end user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8270446206223659375?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8270446206223659375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8270446206223659375' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8270446206223659375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8270446206223659375'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/06/css-performance.html' title='CSS Performance'/><author><name>Ryan</name><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-5280271148370184481.post-6320204182494953963</id><published>2008-06-03T21:33:00.000-07:00</published><updated>2008-06-03T21:38:11.014-07:00</updated><title type='text'>On GWT - Welcome Visitors</title><content type='html'>Hi visitors from onGWT.com!  I see my lowly blog has about 30x the traffic it normally does. I guess I struck a nerve a bit.&lt;br /&gt;&lt;br /&gt;Currently I'm still investigating GWT. I haven't started production coding, and it may be a few months before I get prod GWT code out there, but it will happen at some point.&lt;br /&gt;&lt;br /&gt;In the mean time, I hope to post tips and hints about my GWT experience and how to achieve elegant and performant web UIs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6320204182494953963?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6320204182494953963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6320204182494953963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6320204182494953963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6320204182494953963'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/06/on-gwt-welcome-visitors.html' title='On GWT - Welcome Visitors'/><author><name>Ryan</name><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-5280271148370184481.post-6265449603666153593</id><published>2008-06-02T20:35:00.000-07:00</published><updated>2008-06-06T17:08:01.766-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IO2008'/><title type='text'>Google I/O recap and summary</title><content type='html'>Well Google I/O is over.  Hopefully there will be another one next year - the conference was great value, and had scores of smart people talking about interesting web things. I attended in part to learn about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;GWT&lt;/span&gt;&lt;/span&gt;. Initially I was very sceptical about the value proposition of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;GWT&lt;/span&gt;&lt;/span&gt; - compiling Java to JavaScript? Get real! Programming in a static language like Java? Two steps backwards!&lt;br /&gt;&lt;br /&gt;Despite these disadvantages, I have come full circle and I now firmly believe that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;GWT&lt;/span&gt;&lt;/span&gt; is an excellent platform for advanced web apps. There are a few reasons why I now strongly believe this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;GWT&lt;/span&gt;&lt;/span&gt; has a form of late binding - allowing &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;differing&lt;/span&gt; implementations for each browser platform.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;GWT&lt;/span&gt;&lt;/span&gt; has good optimized support (in 1.5) for overlaying Java objects on to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;JSON&lt;/span&gt;&lt;/span&gt; objects, providing an elegant and efficient method of consuming &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;JSON&lt;/span&gt;&lt;/span&gt; data.&lt;/li&gt;&lt;li&gt;Excellent and complex products are being produced in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;GWT&lt;/span&gt;&lt;/span&gt;, the kind I'd like to develop.&lt;/li&gt;&lt;li&gt;Good abstraction over browser quirks in a optimizing manner, as well as allowing for writing code in a abstract way.&lt;/li&gt;&lt;/ul&gt;Most of the benefits are not as a result of Java, but as a result of the Java to JavaScript method. By abstracting the non-portable aspects of JavaScript and resolving them at compile-time, you get run-time &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;efficiency&lt;/span&gt; without losing your abstractions.&lt;br /&gt;&lt;br /&gt;Most &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;JS&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;libraries&lt;/span&gt; that abstract browser differences do so by adding adapter layers, or annotating the built-in prototypes to create a new development approach. However, the practical realities of JavaScript performance don't encourage the use of extra function calls or closures.  Using a Prototype example:&lt;br /&gt;&lt;br /&gt;$('&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ul&lt;/span&gt;&lt;/span&gt;#&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;myList&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;li&lt;/span&gt;&lt;/span&gt;').each(function(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;li&lt;/span&gt;&lt;/span&gt;) {&lt;br /&gt;   // do something with each list element, possibly using a closed over variable&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;While elegant, this is not nearly as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;performant&lt;/span&gt;&lt;/span&gt; as more basic code:&lt;br /&gt;var &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;myList&lt;/span&gt;&lt;/span&gt; = document.getElementById('myList').getElementsByTagName('li');&lt;br /&gt;for (var i = 0, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;il&lt;/span&gt;&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;myList&lt;/span&gt;&lt;/span&gt;.length; i &lt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;il&lt;/span&gt;&lt;/span&gt; ; i++) {&lt;br /&gt;  // do something with each list element, no closure necessary.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;While in theory 'each' should know about the best way to loop over an array, you also incur the cost of two user function calls, and a closure. These are not free, even as they improve the code - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;mis&lt;/span&gt;&lt;/span&gt;-coding loops is a major cause of bugs.&lt;br /&gt;&lt;br /&gt;Given that most JavaScript &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;runtimes&lt;/span&gt;&lt;/span&gt; are interpreted (we are starting to see the rumbles of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;VMs&lt;/span&gt;&lt;/span&gt; for JavaScript), adding extra calls and object allocations is not free. Add these up and eventually the weight of your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;JS&lt;/span&gt;&lt;/span&gt; application will grind browsers to a halt.&lt;br /&gt;&lt;br /&gt;While nothing is ultimately a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;panacea&lt;/span&gt; - better tools are always better. Increasing the level of your abstractions and letting the computer do the work for you is always better.  It seems like JavaScript is becoming the new assembly language - and we all know how much demand there is for assembly language programmers these days.&lt;br /&gt;&lt;br /&gt;If you found this useful, maybe my article on &lt;a href="http://ryan-in-seattle.blogspot.com/2008/06/css-performance.html"&gt;making &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;CSS&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;performant&lt;/span&gt;&lt;/a&gt; might interest you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6265449603666153593?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6265449603666153593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6265449603666153593' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6265449603666153593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6265449603666153593'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/06/google-io-recap-and-summary.html' title='Google I/O recap and summary'/><author><name>Ryan</name><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-5280271148370184481.post-544612012436504772</id><published>2008-05-28T13:07:00.001-07:00</published><updated>2008-05-28T13:08:26.126-07:00</updated><title type='text'>Google I/O: OpenSocial</title><content type='html'>Here are my "raw" notes from the OpenSocial intro session at 11:15am:&lt;br /&gt;&lt;br /&gt;Open Social.&lt;br /&gt;&lt;br /&gt;Introduction. How to build OpenSocial Apps.  OS Containers.  (more)&lt;br /&gt;&lt;br /&gt;Patrick: Intro.&lt;br /&gt;&lt;br /&gt;Make the web better: by making it social.  What does 'social' mean?  Ask kids. His daughter: We look at each other, we talk, we laugh, we help each other, we read together, we do projects together. (cute kid pictures)&lt;br /&gt;&lt;br /&gt;Raoul - kids toy, the "social object" - take home from school, do things with it, take pictures, create a social event around it.&lt;br /&gt;&lt;br /&gt;Jaiku's Jyri Engeström's 5 rules for social networks: social projects&lt;br /&gt;&lt;br /&gt;1. what is your object?&lt;br /&gt;2. what are your verbs?&lt;br /&gt;3. how can people share the objects?&lt;br /&gt;4. what is the gift in the invitation?&lt;br /&gt;5. are you charging the publishers or the spectators?&lt;br /&gt;http://tinyurl.com/yus8gw&lt;br /&gt;&lt;br /&gt;How do we socialize objects online without having to create yet another social network?&lt;br /&gt;&lt;br /&gt;OpenSocial is a straightforward application of chapters 8 and 9 of his 1998 book "Information Rules". &lt;br /&gt;&lt;br /&gt;"Standards change competition for a market to competition within a market."&lt;br /&gt;&lt;br /&gt;OpenSocial Foundation - http://opensocial.org/  Keep the specification open.  Discussed in public forum.  Evolves in a open source community process.&lt;br /&gt;&lt;br /&gt;80% of your code is common to every site/network.  The other 20% are specializing for each site.&lt;br /&gt;&lt;br /&gt;Standards based: html+javascript+rest+oauth&lt;br /&gt;&lt;br /&gt;Chris Schalk:  How to build an OpenSocial application.&lt;br /&gt;&lt;br /&gt;Javascript API: &lt;br /&gt;- People &amp;amp; Friends. &lt;br /&gt;- Activities&lt;br /&gt;- Persistence&lt;br /&gt;-- provide state without a server.&lt;br /&gt;-- share data with your friends&lt;br /&gt;-- up to container (ie: site)&lt;br /&gt;&lt;br /&gt;Key concept: OpenSocial "container" - basically a website where your OpenSocial application runs. Provides services to your application.&lt;br /&gt;&lt;br /&gt;Async APIs - make request, provide callback, use data.&lt;br /&gt;&lt;br /&gt;Data storage: Async hashmap system. Callback function provides notice of success.&lt;br /&gt;&lt;br /&gt;REST API uses Atom format.&lt;br /&gt;&lt;br /&gt;Establish a "home" site where gadget can phone home to retrieve data.  Hosted on various sites, including AppEngine.&lt;br /&gt;&lt;br /&gt;Kevin Marks: OpenSocial Containers.&lt;br /&gt;&lt;br /&gt;Apps are hosted in Containers.  What are they?&lt;br /&gt;&lt;br /&gt;Containers don't choose users.  Containers set up the social model, users choose to join.&lt;br /&gt;- They grow through homophily and affinity&lt;br /&gt;- network effect can bring unexpected userbases&lt;br /&gt;&lt;br /&gt;Not just Social Network Sites:&lt;br /&gt;- profiles and home pages&lt;br /&gt;- personal dashboards&lt;br /&gt;- sites based around a social object&lt;br /&gt;- corporate CRM systems&lt;br /&gt;- any website&lt;br /&gt;&lt;br /&gt;Owner and Viewer are defined by Container&lt;br /&gt;- The application gets IDs and connections to other IDs.&lt;br /&gt;&lt;br /&gt;Owner need not be a person. &lt;br /&gt;- could be an organization or a social object.&lt;br /&gt;&lt;br /&gt;Kinds of container - social network sites&lt;br /&gt;- profile pages&lt;br /&gt; -- owner is profile page owner&lt;br /&gt; -- view may not be known, may be owner or other member&lt;br /&gt;- home page&lt;br /&gt;  -- owner is Viewer (must be logged in to see)&lt;br /&gt;&lt;br /&gt;Examples: myspace, hi5, orkut&lt;br /&gt;&lt;br /&gt;Kinds of container - Personal dashboard:&lt;br /&gt;- like hom pages&lt;br /&gt; -- owner is viewer (must be logged in)&lt;br /&gt;- friends may not be defined&lt;br /&gt;&lt;br /&gt;Examples: iGoogle, MyYahoo&lt;br /&gt;&lt;br /&gt;Kinds of container: Social object site&lt;br /&gt;- Pages reflect the object - movie, picture, product&lt;br /&gt;- owner is the pboject&lt;br /&gt;- owner friends are people connected to the object&lt;br /&gt; - may be authors or fans&lt;br /&gt;- viewer is looking at it, viewer friends are people you may want to share with.&lt;br /&gt;Example:...&lt;br /&gt;&lt;br /&gt;Kinds of container - CRM system&lt;br /&gt;- pages reflect the customer&lt;br /&gt;-- owner is the customer&lt;br /&gt;-- owner friends are people connected to the customer&lt;br /&gt; --- may be colleagues or other customers&lt;br /&gt;-- viewer is you&lt;br /&gt;&lt;br /&gt;Kinds of container - any website&lt;br /&gt;- owner is site&lt;br /&gt; -- owner friends are site users&lt;br /&gt;- viewer is you&lt;br /&gt; -- viewer friends are your friends who have visited this site&lt;br /&gt;Example: Google Friend Connect.&lt;br /&gt;&lt;br /&gt;Container Sites control Policy.&lt;br /&gt;&lt;br /&gt;Meet the containers (next session).&lt;br /&gt;Best practices for spreading your app (tomorrow).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Chris Schalk: Becoming an OpenSocial Container&lt;br /&gt;&lt;br /&gt;Apache Shindig&lt;br /&gt;- What is shindig?&lt;br /&gt;-- open source software that allows you to host OpenSocial applications.&lt;br /&gt;- is currently an apache software incubator project&lt;br /&gt;- heavy partner involvement (Ning, hi5...)&lt;br /&gt;- services as open source reference implementation of OpenSocial &amp;amp; gadgets technology&lt;br /&gt;&lt;br /&gt;http://incubator.apache.org/shindig&lt;br /&gt;&lt;br /&gt;- Example of shindig.&lt;br /&gt;- Shindig is in CVS, can't download tarballs (yet).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-544612012436504772?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/544612012436504772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=544612012436504772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/544612012436504772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/544612012436504772'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/05/google-io-opensocial.html' title='Google I/O: OpenSocial'/><author><name>Ryan</name><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-5280271148370184481.post-5217438589042132195</id><published>2008-05-28T11:24:00.000-07:00</published><updated>2008-05-28T11:45:40.368-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IO2008'/><title type='text'>Google I/O</title><content type='html'>At Google I/O in San Francisco this week.  A two day developer conference covering Google's public tools and APIs. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/2531084529/" title="IMG_1236 by ryanobjc, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3023/2531084529_eb7a295bc1.jpg" width="500" height="375" alt="IMG_1236" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5217438589042132195?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5217438589042132195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5217438589042132195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5217438589042132195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5217438589042132195'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/05/google-io.html' title='Google I/O'/><author><name>Ryan</name><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://farm4.static.flickr.com/3023/2531084529_eb7a295bc1_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-6343394145556763277</id><published>2008-04-27T23:11:00.000-07:00</published><updated>2008-04-29T00:56:38.891-07:00</updated><title type='text'>Email organization in GMail (Aka the Zen of Gmail)</title><content type='html'>I keep on getting friends who complain about GMail and pine for the "good old days" of Outlook.&lt;br /&gt;&lt;br /&gt;I've received hundreds of emails a day for over 7 years.  Now that I am able to use Gmail as my primary work email every day, the situation is thousands, nay, millions of times better than the "good old Outlook days".  Or as they say, Outlook, not so good.&lt;br /&gt;&lt;br /&gt;I think part of the problem is people take an email-organization mindset from Outlook and try to apply it to Gmail.  The results - comedy abounds!  The solution?  Shed your old ways, and embrace the new!&lt;br /&gt;&lt;br /&gt;The first thing about Gmail is it's noticeable lack of folders.  Combined with a massive inbox from years of not archiving, this can quickly overwhelm people in to believing that it's impossible to organize.  The problem is in the mindset, and you have to break yourself of the past.&lt;br /&gt;&lt;br /&gt;The way to think of email is instead of 'messages' there are 'conversation threads'.  All the replies and replies to replies are bound together as a single unit (the conversation) that is always available.  Someone replies to a year old conversation?  They whole bundle is presented so you can go back in time and check on what someone said, or maybe remind yourself of your own words (as painful as that can be sometimes).  This is really the key organizational mechanism, and one I wished for many times under Outlook.  This ensures you have maximum context at all times.&lt;br /&gt;&lt;br /&gt;To organize these threads, Gmail presents a list on the right hand side. Instead of folders, think of these as 'views'.  Views are always by default sorted by date. Let's run through what each one means:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_sum4DaW_lLQ/SBVuEKRhVAI/AAAAAAAAAWA/EHtW8IOBW78/s1600-h/gmail-views.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_sum4DaW_lLQ/SBVuEKRhVAI/AAAAAAAAAWA/EHtW8IOBW78/s320/gmail-views.png" alt="" id="BLOGGER_PHOTO_ID_5194178762998109186" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Inbox - these are the conversations labeled with the 'Inbox' label. All new email gets tagged with this label by default. So a conversation previously out of the inbox will come back when someone replies to it.&lt;/li&gt;&lt;li&gt;Starred - all conversations with a star on any of the individual messages.&lt;/li&gt;&lt;li&gt;Chats - some conversations are literally that, and take place via gtalk. They are easily accessible here. Offline gtalk messages come in to your inbox as well.&lt;/li&gt;&lt;li&gt;Sent mail - all conversations you've replied to, or sent to. They are sorted by the time and date you replied.&lt;/li&gt;&lt;li&gt;Drafts - those conversations you've saved a draft to.  If you were replying to an existing conversation, the whole thing appears here (maximum context at all times).&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sum4DaW_lLQ/SBVwq6RhVBI/AAAAAAAAAWI/t_kVN39WfpM/s1600-h/gmail-delete-message.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_sum4DaW_lLQ/SBVwq6RhVBI/AAAAAAAAAWI/t_kVN39WfpM/s320/gmail-delete-message.png" alt="" id="BLOGGER_PHOTO_ID_5194181627741295634" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;All Mail - this is every conversation you have.&lt;/li&gt;&lt;li&gt;Spam - This is slightly special, since Spams don't appear in your Inbox or All Mail. They are auto-nuked every 30 days. Gmail has one of the best spam filters.&lt;/li&gt;&lt;li&gt;Trash - Those conversations and messages you've deleted. Yes you can delete a single message out of a conversation, that option is available in the drop down menu. Messages are permanently deleted after 30 days.&lt;/li&gt;&lt;/ul&gt;With the basics down, here is now I organize my work email:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I create a label for each major focus area and mailing list.  I use a single label for each project I'm involved in. As I move to new projects, I create a new label for each one.  This way I can get a comprehensive project-wide view by clicking on the label views on the left-hand side of the user interface.&lt;/li&gt;&lt;li&gt;Every major mailing list gets it's own label.  I can bundle several mailing lists in to a single label - for example every apple and mac oriented mailing list I'm on (about 4) are labeled 'apple'. I also have a label for each major announcement list.&lt;/li&gt;&lt;li&gt;Use filters for auto-labeling mailing lists. This is critical, since labeling every single message would use all day. If you want to label a mailing list, you can do so by entering "list:foobar-announce" in the 'Has the words:' field. You can then have gmail apply a label.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sum4DaW_lLQ/SBVzQ6RhVCI/AAAAAAAAAWQ/GWbIPaDqg7E/s1600-h/gmail-filter-example.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_sum4DaW_lLQ/SBVzQ6RhVCI/AAAAAAAAAWQ/GWbIPaDqg7E/s320/gmail-filter-example.png" alt="" id="BLOGGER_PHOTO_ID_5194184479599580194" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use the 'skip the inbox' feature for high volume mailing lists.  Combined with 'Apply the label' option, you can quickly view those messages later without dealing with the daily flood of messages in your inbox. I use this for conversation lists that aren't important but I'd like to stay on so I can lurk when I have the time.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sum4DaW_lLQ/SBVzr6RhVDI/AAAAAAAAAWY/acIjSKcw1Mk/s1600-h/gmail-filter-options-ex.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_sum4DaW_lLQ/SBVzr6RhVDI/AAAAAAAAAWY/acIjSKcw1Mk/s320/gmail-filter-options-ex.png" alt="" id="BLOGGER_PHOTO_ID_5194184943456048178" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;My team has a team-address, so it gets a filter to automatically give it the project label. Individual messages just to me, not cc'ed need to be manually applied. Given that most emails are CCed to the team list, this doesn't happen as often as you might think.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The 'list:name' search operator is extremely powerful. Few people know about it, but it is a power-tool for those on many mailing lists. The thing that makes this a solid knock-out is that the 'name' is actually a substring match!  So for example if my team is named 'foo' then I might have the mailing lists:  foo-dev, foo-reviews, foo-alerts, foo-questions.  If I create a filter that applies the label 'Foo' to messages that have the words "list:foo" then all 4 mailing lists are hit with the same label.&lt;/li&gt;&lt;li&gt;The other important thing about "list:" is it uses the "List-Id" header (and a few others). Compare to using a search term like "to:mailing-list" - if someone Bcc's the list, it will slip through the filter. Using "list:" and you will have an airtight set up.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eschew organization over search - since Gmail search is so powerful and fast, it's often better to have larger organization 'units' over being super-precise about folders and taxonomy. My super-search tips below will super-charge your Gmail experience.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sum4DaW_lLQ/SBV1pqRhVEI/AAAAAAAAAWg/fvzP7Y84vDg/s1600-h/gmail-filter-colors.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_sum4DaW_lLQ/SBV1pqRhVEI/AAAAAAAAAWg/fvzP7Y84vDg/s320/gmail-filter-colors.png" alt="" id="BLOGGER_PHOTO_ID_5194187103824598082" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Gmail now lets you give colours to labels.  This is a great way to automatically apply labels to incoming messages and they will stand out in your inbox. For example, incoming bills from your bank or cable company can be easily identified by the subject or 'from' address. Announcement lists are another good candidate for colours.&lt;/li&gt;&lt;li&gt;I have a label I call "@to-me" which is automatically attached to all messages with a filter.  The filter has "to:ryan@foo.com" as the criteria. Any emails that has me on the To or CC line gets this label.  This way I can quickly identify those conversations that were sent to ME versus conversations that reached me via a mailing list. This is a good way to pay attention to the most important things first.  And thanks to the "@" symbol it is at the top of the label list.&lt;/li&gt;&lt;li&gt;Labels are not folders.  This is very important, since a conversation can have multiple labels, you don't have to worry about careful taxonomies that are broken by messy forwards or when email conversations cross over.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use task-oriented labels - if you are in to GTD you can create various GTD labels for your email, without affecting the aforementioned classification mechanism.  Labels such as "@to-me", "To-Reply", "Reply-At-Home" can coexist peacefully.  You can also use labels as a way of classifying across many lines, without copying messages to multiple places, or breaking existing classification mechanisms.  For example if you had a label called "Praise" which you attached to all messages where people praised your work, you would be able to find those again when review time comes around. In outlook-land I would have to copy messages or move them and I might lose messages or context.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;With these labels in place, you are now ready for power of Gmail - search. One of the important things to realize is you can do more than just do full text search.  This is where inbox as-a-label becomes important.  Here are some common searches I do:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;label:project from:joe - this looks for all emails from Joe in my project. Since Joe is a pretty common name, doing the search "from:Joe" would return too many messages. Since I know Joe is my team-mate and I was looking for that message he sent me a few weeks ago on that new feature, this cuts to the chase.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;l:inbox -l:project - this uses two major features, the "l:" shortcut for "label:", and the other is negative term-search.  This returns all messages in my Inbox and that are NOT for my project.  This is a good way to catch all the other "junk" (not literally, the Spam filter is pretty good) in my inbox.  I can then select all the messages and archive them out of the Inbox easily.&lt;/li&gt;&lt;li&gt;list:bar-announce - I don't always have labels for every single mailing list. This pulls them out of my mail in a single fast search. Even if people Bcc your mailing list, or if mailing lists are chained, this still works.&lt;/li&gt;&lt;li&gt;l:inbox list:bar-announce - pick those stray messages out of your inbox and archive them easily.&lt;/li&gt;&lt;li&gt;l:project l:@to-me after:2008/01/01 - all messages I sent on my project since Jan 1, 2008. You can also use "before:" as well.&lt;/li&gt;&lt;li&gt;has:attachment, is:starred, filename:*.jpg - find mails with attachments, with stars, with specific filenames.  These become powerful combined with previous tips. For example: "l:project filename:*.ppt from:joe" - find that presentation Joe sent you.  &lt;/li&gt;&lt;li&gt;By default Gmail uses and - so when you say "from:joe l:project" it means from Joe AND labeled "project".  You can use "OR" (all-caps is important here) to built those complex expressions.&lt;/li&gt;&lt;li&gt;Here is one I used:  "l:project (subject:Code Review OR subject:Bug) -to:me".  This gives messages in my project with the subject "Code Review" or "Bug" that were not addressed to me.  I set this up in a filter and had these messages automatically archived so I never saw them in my inbox.  This project recieved far too many code reviews and bug reports, and I only needed the ones directly addressed to me.&lt;/li&gt;&lt;li&gt;Don't forget oldies but goodies such as "subject:party" and "plain old" full text search. You can search your massive mailbox in seconds for any keyword or phrase (use double-quotes).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The next step to Gmail Zen is keyboard shortcuts. Some gmail users know about the "y" key, which is a very dangerous key.  The problem with the "y" key is it means "remove from current view".  Most people are in the "Inbox" view which means "y" = "archive".  But, if you use "y" in any other view, it removes the conversation from that view!  Which means it will remove a label from conversation(s)!  This is usually not the expected behaviour and not what you generally want.&lt;br /&gt;&lt;br /&gt;Instead, use the "e" key which always &lt;span style="font-weight: bold;"&gt;always&lt;/span&gt; archives a conversation, no matter where you are. And given how easy it is to type on the left hand side of the keyboard, you can hit it while your right hand is on the mouse - left hand mousers, sorry it doesn't work out!&lt;br /&gt;&lt;br /&gt;The other key I use constantly is "u" - this is used when viewing a message, and takes you back to the previous view.  Back to search results, to the inbox or some other list view of conversations. This is easier than finding the "back to search results" link or the "back to label" or other link. &lt;br /&gt;&lt;br /&gt;The final keys I sometimes use is "[" and "]".  These move you from one message to the next archiving them as you go.  If you want to start at the top of your inbox and read on downwards, this is a great way to avoid visiting the list-view between every message.&lt;br /&gt;&lt;br /&gt;With these tips, it becomes easy to clear messages out of your inbox.  You can search with the additional term "l:inbox" to find messages that are in the inbox, but match any other pattern.  I get livejournal notices to my inbox, so every so often I search "l:inbox livejournal", then I click on "All" - if I have more than 1 page of messages, a little message appea&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sum4DaW_lLQ/SBWAP6RhVFI/AAAAAAAAAWo/0-BVvFaK-wk/s1600-h/gmail-select-all.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_sum4DaW_lLQ/SBWAP6RhVFI/AAAAAAAAAWo/0-BVvFaK-wk/s320/gmail-select-all.png" alt="" id="BLOGGER_PHOTO_ID_5194198756070872146" border="0" /&gt;&lt;/a&gt;rs and asks me if I want to select every message. This way I can affect thousands of messages.  You can use this to delete or archive or apply new labels to large numbers of messages at once.&lt;br /&gt;&lt;br /&gt;I hope these tips can help you achieve serious Gmail zen. They help me manage my massive mailbox (27,000 conversations in ~ 18 months) with minimal stress. I don't need to spend much time setting up a complex taxonomy or detailed filing mechanism, instead I can just arrange my things in to broad piles and let search help me.  I have found that I personally can remember circumstances, and that is enough to let me find messages using the above search-and-organization tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6343394145556763277?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6343394145556763277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6343394145556763277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6343394145556763277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6343394145556763277'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/04/email-organization-in-gmail.html' title='Email organization in GMail (Aka the Zen of Gmail)'/><author><name>Ryan</name><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://bp0.blogger.com/_sum4DaW_lLQ/SBVuEKRhVAI/AAAAAAAAAWA/EHtW8IOBW78/s72-c/gmail-views.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-4658427665041630292</id><published>2008-04-10T02:46:00.001-07:00</published><updated>2008-04-10T02:47:52.529-07:00</updated><title type='text'>Java Programmers</title><content type='html'>&lt;blockquote&gt;I haven't met a "java programmer" who only knows Java that is &lt;i&gt;awesome&lt;/i&gt;. They are the new VB programmers - hooking up up Java components in to amalgams of crap.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;- Me, in chat to a fellow developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4658427665041630292?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4658427665041630292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4658427665041630292' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4658427665041630292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4658427665041630292'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/04/java-programmers.html' title='Java Programmers'/><author><name>Ryan</name><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-5280271148370184481.post-1929768999884189203</id><published>2008-02-04T16:57:00.000-08:00</published><updated>2008-02-04T16:59:12.851-08:00</updated><title type='text'>5MT: Java hating</title><content type='html'>This is not really a 5 minute thought, but more like a brief Java rant from someone else:&lt;br /&gt;&lt;br /&gt;"I hate Java. As a programmer, I hate Java, the language, for what it has done to the field of programming. As a journalist, I hate the relentless hyping of Java by its supporters, as well as their unending excuses as to why Java has failed to deliver. And as a technologist who has been involved with three major projects that have used Java, I hate the complications that Java has caused."&lt;br /&gt;&lt;br /&gt;-- &lt;a href="http://archive.salon.com/tech/col/garf/2001/01/08/bad_java/index.html"&gt;source&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1929768999884189203?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1929768999884189203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1929768999884189203' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1929768999884189203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1929768999884189203'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/02/5mt-java-hating.html' title='5MT: Java hating'/><author><name>Ryan</name><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-5280271148370184481.post-7210792221611463918</id><published>2008-01-22T23:55:00.001-08:00</published><updated>2008-01-22T23:59:04.379-08:00</updated><title type='text'>jPod</title><content type='html'>I've been watching the jPod TV adaptation.  And while it deviates from the book in many important ways, it does maintain the same sense of insanity as the book.&lt;br /&gt;&lt;br /&gt;Also an awesome Google sneak was in tonight's episode, I entered &lt;a href="http://www.google.com/search?q=kambamthankyoumaam"&gt;kambamthankyoumaam&lt;/a&gt; in to Google and I was rewarded with an awesome page that was &lt;a href="http://www.vancityplayers.com/players/profile.html?id=kambamthankyoumaam"&gt;straight out of the episode.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Obviously as a result of this posting I'm hoping to show up in that search results, which as of right now (11:55pm PST) is showing exactly 1 result, that being the one I linked to.  Van city players, indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7210792221611463918?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7210792221611463918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7210792221611463918' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7210792221611463918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7210792221611463918'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/01/jpod.html' title='jPod'/><author><name>Ryan</name><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-5280271148370184481.post-2437158498067495657</id><published>2008-01-21T14:19:00.000-08:00</published><updated>2008-01-22T14:37:59.878-08:00</updated><title type='text'>5MT: Why US Debit Cards are Bunk</title><content type='html'>I was reminded yesterday about how bad debit cards are here in the US.  Let me count the ways thee make me mad.  Firstly is thine insistence on being a "visa" card.  This is particularly bad because credit cards do not require online verification.  Clerks are supposed to compare signatures to card signatures, but I rarely see this happen.  It is totally possible for a fraudster with just your card number (maybe even guessed?) to create a new fake card and run some off-line transactions.&lt;br /&gt;&lt;br /&gt;Secondly is thine non-credit card status.  &lt;a href="http://www.fdic.gov/regulations/laws/rules/6500-500.html#6500170"&gt;There are laws that protect&lt;/a&gt; credit card holders from fraud and limit their liability to $50.  While most banks are fully willing to refund and replace money promptly when fraud amounts are low, they generally take a bit longer when the amounts are significantly high.    Most credit card companies can take upwards of 90 days to resolve fraud charges in the $3-5000 range.  &lt;br /&gt;&lt;br /&gt;The root of the problem is banks are not liable for fraud on credit cards.  The responsibility lies completely with the merchant.  In addition to the 3% transaction fees they pay, card companies regularly "charge back" to the merchant.  Charge backs can be as high as 5% of the transaction cost.  So now your cost of doing business is 8% - and there is no easy way to increase security.&lt;br /&gt;&lt;br /&gt;The solution?  Turn debit cards in to real debit cards that only take online PIN-authenticated transactions.  This will reduce costs for everyone since the 3% credit card charge is built in to all prices even if you pay cash.&lt;br /&gt;&lt;br /&gt;Added:&lt;br /&gt;My friend &lt;a href=""&gt;Sacha&lt;/a&gt; points out that PIN transactions are not immune from professional fraudsters.  This reminds me that the problem with "secure" systems that really aren't is convincing the powers that be of the legitimacy of your fraudulent transaction.  &lt;a href="http://www.wired.com/wired/archive/14.08/carkey_pr.html"&gt;A real life example is the "anti theft" car systems&lt;/a&gt; that aren't undefeatable - despite manufacturer claims.  At this point you are in an uphill fight to regain your week's meal money.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-2437158498067495657?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/2437158498067495657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=2437158498067495657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2437158498067495657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2437158498067495657'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/01/5mt-why-us-debit-cards-are-bunk.html' title='5MT: Why US Debit Cards are Bunk'/><author><name>Ryan</name><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-5280271148370184481.post-7563816854131663715</id><published>2008-01-17T15:57:00.000-08:00</published><updated>2008-01-17T16:22:51.649-08:00</updated><title type='text'>Five minute thoughts</title><content type='html'>Thanks to the internet and TV I have a 5 minute attention span, just like everyone else it seems.  Combined with blog post formats and Youtube 3 minute videos, we have a contemporary pop culture that encourages affected-ADD.&lt;br /&gt;&lt;br /&gt;But instead of rail against that, I'll cherish it with the introduction of Ryan's Five Minute Thoughts.  Designed to be readable (and writable) during a Youtube video, or (in my case) a build, they are the ultimate in cognitive adaptation.&lt;br /&gt;&lt;br /&gt;Today's 5 Minute Thought (5MT): Comcast's Tiered Service.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://biz.yahoo.com/ap/080117/time_warner_cable_internet.html?.v=2"&gt;TimeWarner is introducing tiered internet plans -&lt;/a&gt; presumably in an attempt to either restrain bandwidth usage or raise funds to, and this is highly speculative, build a better network.  TW claims that 5% of the users consume 50% of the bandwidth usage.  &lt;a href="http://gigaom.com/2008/01/17/video-killed-the-broadband-buffet/"&gt;Bandwidth usage is surely only going to rise&lt;/a&gt;, with the rise of downloadable video from iTMS and Netflix.   Right now video downloaders are a leading-edge case of internet users.  Bittorrent and iTunes HD downloads is the future of media consumption. &lt;br /&gt;&lt;br /&gt; Cable operators are in an interesting position of offering "unlimited" bandwidth that really isn't.  Looks like TW has decided this is untenable and decided to take this leading-edge case as exactly that.  Right now it's 5% that consumes half, but soon it will be 25% that consumes 99%.  At that point you can't realistically cut off a quarter of your userbase.  &lt;a href="http://gigaom.com/2008/01/14/are-cable-and-phone-companies-still-recession-proof/"&gt;Given the dim outlook for cable&lt;/a&gt; &lt;a href="http://gigaom.com/2007/11/13/3q-2007-broadband-report-card-b-minus/"&gt;companies and subscriber growth&lt;/a&gt; it might make sense to plan for a future where you can accommodate huge bandwidth users without cutting them off.&lt;br /&gt;&lt;br /&gt;Core message:  Watch out for the leading-edge case users.  They might become a large chunk of your business, and if you can't scale to handle them, someone else will for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7563816854131663715?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7563816854131663715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7563816854131663715' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7563816854131663715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7563816854131663715'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/01/five-minute-thoughts.html' title='Five minute thoughts'/><author><name>Ryan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-217374833353617805</id><published>2008-01-07T18:51:00.000-08:00</published><updated>2008-01-20T00:45:47.319-08:00</updated><title type='text'>Java Programmers</title><content type='html'>I recently discovered what I called "Java Programmer Syndrome" (JPS) - those developers who did extensive Java programming and are unable to separate the interface and implementation of a data structure.  For example, Map vs Tree and hash table.  Ask "what is a hashtable" and the answer might be "oh it's like a HashMap but synchronized."   &lt;br /&gt;&lt;br /&gt;But I am not alone in this, a fascinating paper entitled &lt;a href="http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html"&gt;"Where are the Software Engineers of Tomorrow?"&lt;/a&gt; talks about these worrying trends.  The conclusion is a weakening math requirement combined with the "assembly" style of Java programming is ruining an entire generation of developers.  Choice quote: "We are training easily replaceable professionals."&lt;br /&gt;&lt;br /&gt;Demand better CS curricula!  Even the ACM is not the answer here - their CS curriculum guide is part of the problem too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-217374833353617805?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/217374833353617805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=217374833353617805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/217374833353617805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/217374833353617805'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/01/java-programmers.html' title='Java Programmers'/><author><name>Ryan</name><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-5280271148370184481.post-1224114599679351751</id><published>2008-01-01T23:09:00.001-08:00</published><updated>2008-01-01T23:09:37.972-08:00</updated><title type='text'>Vancouver at Dusk</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ryanobjc/2156832021/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2146/2156832021_534d57f3b5.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/2156832021/"&gt;Vancouver at Dusk&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	I got a tripod for christmas.  This is the results.&lt;br /&gt;&lt;br /&gt;So now that it is January first, I guess a Project 365 update is in order.  Basically put, I didn't complete the project.  However, according to my metadata I took something like 7-8x as many photos in 2007 as I did in 2006.  So something was a success there.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1224114599679351751?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1224114599679351751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1224114599679351751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1224114599679351751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1224114599679351751'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2008/01/vancouver-at-dusk.html' title='Vancouver at Dusk'/><author><name>Ryan</name><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://farm3.static.flickr.com/2146/2156832021_534d57f3b5_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-2887808958358061539</id><published>2007-12-06T01:16:00.000-08:00</published><updated>2007-12-06T01:32:18.024-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='lightroom'/><category scheme='http://www.blogger.com/atom/ns#' term='aperture'/><title type='text'>Photography</title><content type='html'>I have been steadily taking photos at a slow trickle.  A few gigs every month really adds up over time.  Right now I easily have 90+ GB of RAW files.  However, using Aperture to manage this on my first-generation intel iMac has been... painful.  Exporting photos takes forever is one major problem.  I can't really afford a 45 minute photo export just for 200 photos.  It becomes difficult to imagine exporting 4000 photos at that point.&lt;br /&gt;&lt;br /&gt;So I (legally) obtained a copy of Lightroom just recently.  I've heard it has better RAW algorithms, both in the quality and speed department.  Combined with Adobe's more-open approach towards managing metadata, this might be the choice for me.  Not to mention, Lightroom is significantly faster so far.  &lt;br /&gt;&lt;br /&gt;Aperture kind of plays along - it will allow you to export Master files with XMP sidecar files that contain metadata.  That way I shouldn't lose the ratings and keywords.  Only problem with that approach is I have to export masters that I've already relocated out of the Aperture library.  The Lightbox XMP export plug-in has this annoying crashing ability.&lt;br /&gt;&lt;br /&gt;One last thing about Lightroom - it has a distressingly simple view of copyright - you are either copyrighted or in the public domain.  Alas I really want to tag some of my photos with CC licenses, and have that exported in to JPEG and picked up by Flickr.  Does anyone know how to do this?&lt;br /&gt;&lt;br /&gt;EDIT: I already figured out my own problem.  The problem is the mini-metadata dropdown is not the only copyright related metadata.  By selecting a large number of photos and clicking on 'Sync Metadata' a dialog with additional copyright fields appears.  I was using the Attribution-Noncommercial-ShareAlike 3.0 license, so I entered:&lt;br /&gt;&lt;br /&gt;IPTC Copyright checked off&lt;br /&gt;Copyright:  Creative Commons Attribution-Noncommercial-ShareAlike 3.0 Unported&lt;br /&gt;Copyright Status: Copyrighted (thats the 3 optioned selection list)&lt;br /&gt;Rights Usage Terms:  http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;Copyright Info URL: http://creativecommons.org/licenses/by-nc-sa/3.0/&lt;br /&gt;&lt;br /&gt;And when I hit synchronize Lightroom helpfully asked if I wanted to save these as a new preset.  That way when I import new photos I can apply all these 4 metadata fields trivially.&lt;br /&gt;&lt;br /&gt;PS: Thanks (to whomever you were) for the Bic retractable fountain pen.  Alas it is available in Europe only, but, if someone wanted to make me a happy holiday person... I think you know what to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-2887808958358061539?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/2887808958358061539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=2887808958358061539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2887808958358061539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2887808958358061539'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/12/photography.html' title='Photography'/><author><name>Ryan</name><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-5280271148370184481.post-1855430755871334355</id><published>2007-10-27T01:46:00.000-07:00</published><updated>2007-10-27T23:20:49.139-07:00</updated><title type='text'>Leopard</title><content type='html'>Yep, I upgraded.  It's a nice visual upgrade, and has a bunch of new features to boot.&lt;br /&gt;&lt;br /&gt;I was unable to at first get to my Linux-based afpd server.  It turns out that by default Ubuntu doesn't ship netatalk with OpenSSL linked in.  Tiger would warn you, but Leopard just chokes.  So to enable it, &lt;a href="http://technically.us/code/x/a-year-of-plaintext-afp-passwords-is-enough"&gt;follow these instructions.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1855430755871334355?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1855430755871334355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1855430755871334355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1855430755871334355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1855430755871334355'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/10/leopard.html' title='Leopard'/><author><name>Ryan</name><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-5280271148370184481.post-5434079176012070817</id><published>2007-10-22T16:57:00.000-07:00</published><updated>2007-10-26T01:37:21.143-07:00</updated><title type='text'>Unlocking the iPhone</title><content type='html'>Due to a ... ahem... billing disagreement with AT&amp;T, I have need to unlock my iPhone.&lt;br /&gt;&lt;br /&gt;Simply put, I was charged for data roaming to the tune of $800.  AT&amp;T was unwilling to help me out here, I was unwilling to stay as a customer.  Strangely enough they were uninterested in keeping me as a customer when I informed them I wanted to leave.  &lt;br /&gt;&lt;br /&gt;So I signed up with T-Mobile.  Number portability is really really great.  Here are my plan details:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;$40 for 300 minutes, unlimited to top 5 callers (statically chosen by me), unlimited nights/weekends after 9pm.&lt;br /&gt;&lt;li&gt;$5 for 400 text messages.  International texts (sending and receiving) are on-plan (included in the 400).  It's $10 for 1000, and $15 for unlimited.&lt;br /&gt;&lt;li&gt;$6 for T-Zones, which gives me unlimited "web data".  &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Bottom line is my bill pre-taxes will be $51.  &lt;br /&gt;&lt;br /&gt;The iPhone plan:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;$60 for 900 minutes, unlimited mobile 2 mobile (on AT&amp;T), unlimited evenings/weekends, and rollover.&lt;br /&gt;&lt;li&gt;$20 for unlimited data&lt;br /&gt;&lt;li&gt;International texts are .20-.25 each.  Texts sent while in Canada - .10.&lt;br /&gt;&lt;li&gt;$10 for 1000 texts.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Bottom line is $90 pre-taxes.  &lt;br /&gt;&lt;br /&gt;Another major difference is the roaming charges.  T-Mobile charges me .49/minute in Canada, and another .20 if I'm calling "Long Distance" - eg: calling the US from Canada.  Calling locally and incoming is .49.   AT&amp;T was charging me (on paper) .79 then an additional .12 cents of "tax" for a grand total of .91/minute.  &lt;br /&gt;&lt;br /&gt;I estimate it will take me about 3.5 months to earn back my $175 early termination fee (sadly T-Mobile's is $200).&lt;br /&gt;&lt;br /&gt;Basically the bottom line is that T-Mobile is much much cheaper than AT&amp;T.  T-Mobile's customer service is better, and here in Seattle they have better coverage.  &lt;br /&gt;&lt;br /&gt;Ok, so how did I do it?  Basically these steps:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jaibreak.toc2rta.com/"&gt;Tiff exploit to remount / and do other magic&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://modmyiphone.com/forums/showthread.php?t=10969"&gt;Custom iphuc to read the / disk image, replace fstab then write it back&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/independence/"&gt;iNependence to put SSH on&lt;/a&gt; - note that this is the top hit for the &lt;a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=independence&amp;ie=UTF-8&amp;oe=UTF-8"&gt;search "independence"&lt;/a&gt;&lt;br /&gt;&lt;li&gt;SCP to put BSD binaries on (ls, cat, rm, ln, etc)&lt;br /&gt;&lt;li&gt;Renamed Mediaold -&gt; Media and Media -&gt; Mediaold (something that the TIFF exploit breaks)&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.hackint0sh.org/forum/showthread.php?p=86979"&gt;SCP anySIM 1.1 on&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Pop in the new T-Mobile sim&lt;br /&gt;&lt;li&gt;Run anySIM via SSH, since springboard (app launcher/main screen) is hardcoded now (before it scanned /Applications)&lt;br /&gt;&lt;li&gt;anySIM finishes - you're simunlocked!&lt;br /&gt;&lt;li&gt;Rebooting the iPhone says 'SIM changed, connect to iTunes to activate'.  Quit iTunes, kill iTunesHelper.&lt;br /&gt;&lt;li&gt;Use iNdependence to activate phone.&lt;br /&gt;&lt;li&gt;You're free!&lt;br /&gt;&lt;li&gt;&lt;a href="http://arashpayan.com/blog/index.php/2007/09/17/t-zones-aka-599-internet-access-on-the-iphone/"&gt;Ok, wait you need to configure the proxy to make web work.&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Now after all of that, you are free and nearly everything works.  Things still broken for me:  Visual Voicemail (of course) - the voicemail tab in the Phone app calls the T-Mobile Voicemail line.  Youtube - I hear there are hack to make this work, but I don't really use Youtube.  I'll fix it one day.&lt;br /&gt;&lt;br /&gt;Interestingly enough, EDGE data on T-Mobile seems a bit faster - I think because of the proxy.  &lt;br /&gt;&lt;br /&gt;However, sending EDGE data is slower right now for me.  On AT&amp;T it normally takes about 10 seconds to send a plain email, and about 1 minute to send a picture email.  But on T-Mobile (at home and at work) it takes 30 seconds and 3-5 minutes for the same activities respectively.  An email to T-Mobile indicated that they had nothing on their side.&lt;br /&gt;&lt;br /&gt;One experiment is to try the total internet package (for $19.99/month) to see if that's a difference, but I'd rather not.  Maybe I'll borrow someone's SIM that has total internet.&lt;br /&gt;&lt;br /&gt;And that's a wrap.  4 months after waiting in line for the iPhone, paying the higher $600 price, getting my $100 rebate, dealing with AT&amp;T's excessive roaming charges, I am back to T-Mobile like I was before.&lt;br /&gt;&lt;br /&gt;I still like the iPhone, and now that Gmail does IMAP it's even better (previously Gmail POP was a very weak experience).  I'm just glad I can pay much much much less.  &lt;br /&gt;&lt;br /&gt;Not to mention sticking it to AT&amp;T for refusing to forgive my stupid high data roaming rates.  They really suck, not to mention double suck for being unwilling to retain my business.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5434079176012070817?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5434079176012070817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5434079176012070817' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5434079176012070817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5434079176012070817'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/10/unlocking-iphone.html' title='Unlocking the iPhone'/><author><name>Ryan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-8170086030513792289</id><published>2007-09-16T04:05:00.000-07:00</published><updated>2007-09-16T19:39:34.411-07:00</updated><title type='text'>Cocoa, Custom View scrolling</title><content type='html'>I spent a few hours banging against custom views and scrolling thereof, and learned a number of useful things.&lt;br /&gt;&lt;br /&gt;The scenario is a custom view wrapped in a scroll view.  Instead of doing the drawing in drawRect: what I'll do instead is manage the layout of my sub-views, specifically a number of NSImageViews.  That way I get the drawing for free, all drawRect: needs to do is draw the background (trivial).  When my view changes size I can automatically re-layout the images, arranging them into columns and rows.&lt;br /&gt;&lt;br /&gt;Handling the resize is a bit tricky.  The problem is the frame size of this custom view is semi-independent of the enclosing clip view.  When the custom view frame size is larger than the clip view port, you get scrollbars (desired behaviour).  When the scroll view grows, you want your custom view to fill up the entire area so you don't end up with weird background drawing.&lt;br /&gt;&lt;br /&gt;I played with a bunch of the auto-resizing toggles, but I wasn't able to get things working - for some reason my frame always ended up too tall.  So instead, the solution is to ask the enclosing scroll view what the size of their content area is, and size yourself to that.  The logic is "make myself the same width, but if I need to be higher to accommodate my images, then be higher, otherwise be the same height as well".  &lt;br /&gt;&lt;br /&gt;So the first thing is you need to post frame change notifications and register to get view frame notifications... do something like this in initWithFrame: (or maybe awakeFromNib?  Apple's docs indicate that initFromFrame: doesn't get called for objects from nibs, but mine got initWithFrame:)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];&lt;br /&gt;[nc addObserver:self&lt;br /&gt;       selector: @selector( frameSizeChanged: ) &lt;br /&gt;           name: NSViewFrameDidChangeNotification&lt;br /&gt;         object: nil];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The problem is you get notifications for nearly every change in the system, but you really only care about if your enclosing scroll view and it's clip view changed, so what you do is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;- (void)frameSizeChanged:(NSNotification*) note&lt;br /&gt;{&lt;br /&gt; id obj = [note object];&lt;br /&gt; if (obj == [self enclosingScrollView] || &lt;br /&gt;  obj == [[self enclosingScrollView] contentView]) {&lt;br /&gt;  // change the layout of my subviews&lt;br /&gt;  // (accessible via [self subviews])&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The key here is comparing the object the notification is for against your enclosing scroll view, AND it's clip view.  If you don't have the second comparison your frame won't handle the start-up quite right.&lt;br /&gt;&lt;br /&gt;Now, in your resize handler, you need to figure out the height and width you should set yourself too.  Since my goal is to layout images, the minimum you can be is a single column.  That way you get horizontal scrollbars when you get too small.  Also since I want to display all the images, the view frame height has to be at least as tall as all the images and padding.  But, if that isn't quite tall enough, I need to be the same height as my enclosing scrollview or else you get the scrollview background instead of your own (my background is 0.5 white, so problem).&lt;br /&gt;&lt;br /&gt;So you need to call:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;NSSize newSize = [[self enclosingScrollView] contentSize];&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and the later on call &lt;code&gt;[self setFrameSize: newSize];&lt;/code&gt; to set your new height in response to the resizing.  &lt;br /&gt;&lt;br /&gt;Since I re-layout each re-size the behaviour is I end up with flowing columns of pictures responding to a window resize.&lt;br /&gt;&lt;br /&gt;One of the problems I had was the internal bounds origin was at the bottom left corner.  The upper right corner would have been more handy, but I adjusted my math accordingly.  &lt;br /&gt;&lt;br /&gt;Then I had a problem with scroll behaviour - for some reason when the app started it would start scrolled to the bottom.  When I stretched the window big then small again, the scroll bar was always at the bottom.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cocoabuilder.com/archive/message/cocoa/2004/3/29/102812"&gt;Google solved my problem for me&lt;/a&gt; - it turns out that the scrollbar always starts out displaying the origin.  To solve both problems just do:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;- (BOOL) isFlipped&lt;br /&gt;{&lt;br /&gt; return YES;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and both problems are solved.  Now image 0 at row,col 0,0 has a origin of (padding,padding).&lt;br /&gt;&lt;br /&gt;The basic problem with this approach is the custom view must be the full size of the content area of your scroll-view.  If you needed to coexist with other elements inside your scroll view, you would have to adjust accordingly.  For example, you might have to not be as wide for a vertical strip, or you might have to adjust your origin of your frame point.  Some of the auto-resizing might help here, but I haven't experimented with it.&lt;br /&gt;&lt;br /&gt;The view documentation is not the most complete, and there are lots of tips and tricks.  There are several approaches too, currently I am using sub-NSImageView instances, but other code I've seen does the drawing straight from NSImage instances instead.  That code is more complex, but it may be more efficient since you don't need to instantiate view objects (which can kill performance if there are too many).  However it is harder, since NSImageView can draw cool frames for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8170086030513792289?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8170086030513792289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8170086030513792289' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8170086030513792289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8170086030513792289'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/09/cocoa-custom-view-scrolling.html' title='Cocoa, Custom View scrolling'/><author><name>Ryan</name><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-5280271148370184481.post-2257541455871938783</id><published>2007-09-11T18:21:00.000-07:00</published><updated>2007-09-11T18:22:33.287-07:00</updated><title type='text'>Lunch 2.0 At Adobe</title><content type='html'>Later this month on Friday September the 21st, Adobe is hosting Seattle Lunch 2.0.  You may &lt;a href="http://upcoming.yahoo.com/event/239164/?ps=6"&gt;RSVP online.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll see you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-2257541455871938783?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/2257541455871938783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=2257541455871938783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2257541455871938783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2257541455871938783'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/09/lunch-20-at-adobe.html' title='Lunch 2.0 At Adobe'/><author><name>Ryan</name><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-5280271148370184481.post-3221175603400879981</id><published>2007-09-03T01:00:00.000-07:00</published><updated>2007-09-03T01:09:29.835-07:00</updated><title type='text'>A year later Lego still sucks</title><content type='html'>What a difference a year doesn't make.  I &lt;a href="http://ryan-in-seattle.blogspot.com/2006/09/lego-mindstorms.html"&gt;complained last year&lt;/a&gt; that Lego Mindstorms software didn't work properly on Intel Macs.  Specifically bluetooth doesn't work, due to the non-universal binary.  This was pretty sad and pathetic of Lego, seeing how the Mindstorms was released in early 2006, and we knew since early 2005 that Intel Macs were the new hotness.  Alas, they weren't paying attention, and anyone on an Intel Mac has a fairly crippled NXT platform.  I can tell you, that bluetooth program upload is the super-hotness.&lt;br /&gt;&lt;br /&gt;So, a year later, and Lego finally decided to release a point release which also includes Universal binary support.  But, wait for it, you have to pay for the privileged of using all the features of your very expensive robotics platform.  Furthermore it's very difficult to find even this fact out.  It took me about 10 minutes to think to look in the &lt;a href"http://www.lego.com/eng/service/faqs.asp?section=ConsumerService-FAQ-Products&amp;catid=E8D0CD47-16B8-4B2F-900C-8FC40C163598"&gt;"Need some help"&lt;/a&gt; link and be rewarded with the unsavory news.  &lt;br /&gt;&lt;br /&gt;Lego gets some pretty seriously disses from me for this continuing situation.  To be so oblivious to the new millennium and willfully ignorant of a large and growing segment of would be users is not impressive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3221175603400879981?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3221175603400879981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3221175603400879981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3221175603400879981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3221175603400879981'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/09/year-later-lego-still-sucks.html' title='A year later Lego still sucks'/><author><name>Ryan</name><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-5280271148370184481.post-517703545139653885</id><published>2007-08-28T13:17:00.000-07:00</published><updated>2007-08-28T13:23:52.915-07:00</updated><title type='text'>SFO Follow up</title><content type='html'>So Alaska was 2 hours late all told.  Apparently we were lucky since the president was in Seattle from 1-5pm, screwing up rush hour.  Am I the only one who think it's unacceptable to screw up major freeways just for a single person? &lt;br /&gt;&lt;br /&gt;I complained on SFO's website, and I in fact got an answer today - totally unexpected!    They noted that SFO has a different arrangement, making it difficult to pay for improvements, thus they contracted t-mobile to install and run the wifi network.  Interestingly enough, t-mobile paid for all the capital costs.  Apparently SFO is working so that airlines can provide wireless to customers if they so want.&lt;br /&gt;&lt;br /&gt;And lastly, the vendors are only allowed to charge 10% more than local street cost.  The customer service folks at SFO are sending my complaint to their concessions office, since I'm pretty sure that $2.69 for a 500 ml bottle of soda is more than 10% above street price.&lt;br /&gt;&lt;br /&gt;So, SFO get a bump up for responding to complaints.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-517703545139653885?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/517703545139653885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=517703545139653885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/517703545139653885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/517703545139653885'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/08/sfo-follow-up.html' title='SFO Follow up'/><author><name>Ryan</name><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-5280271148370184481.post-3419614870124387234</id><published>2007-08-27T15:10:00.000-07:00</published><updated>2007-08-27T15:20:43.951-07:00</updated><title type='text'></title><content type='html'>You know, SFO is not really as cool of an airport as one might think, being all close to a tech capitol and all that. Here are the sins:&lt;br /&gt;&lt;br /&gt;- entirely too big- airtrain kinda sucks.&lt;br /&gt;- entirely too small- once you are behind security jail there isn't much at all. How about choices?&lt;br /&gt;- pay wifi is so last century. While waiting for our inevitablely late flight, why not comp us Internet?&lt;br /&gt;- also I just hate airlines. Crappy seats, late flights, customer service that isn't subservient enough.&lt;br /&gt;&lt;br /&gt;I'm only cranky because I left my book in my checked bag. Also normally good Alaska is late today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3419614870124387234?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3419614870124387234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3419614870124387234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3419614870124387234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3419614870124387234'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/08/you-know-sfo-is-not-really-as-cool-of.html' title=''/><author><name>Ryan</name><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-5280271148370184481.post-5397451190805819357</id><published>2007-07-24T18:01:00.000-07:00</published><updated>2007-07-24T18:23:16.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='livejournal'/><category scheme='http://www.blogger.com/atom/ns#' term='typepad'/><category scheme='http://www.blogger.com/atom/ns#' term='sixapart'/><title type='text'>Livejournal is a second class citizen</title><content type='html'>By now you've heard of &lt;a href="http://radar.oreilly.com/archives/2007/07/365_main_datace.html"&gt;the SF power-outage&lt;/a&gt; that killed &lt;a href="http://www.365main.com/"&gt;365 main's&lt;/a&gt; data-center - despite &lt;a href="http://www.365main.com/press_releases/pr_7_24_07_red_envelope.html"&gt;endless press&lt;/a&gt; from them about how they've never lost power.&lt;br /&gt;&lt;br /&gt;I'm sure there will be endless recriminations of how 365 main failed to test the power backup.  &lt;br /&gt;&lt;br /&gt;But the more interesting thing to me is how &lt;a href="http://www.sixapart.com/"&gt;Sixapart&lt;/a&gt; is handling the crisis.  First off, sixapart owns Livejournal and Typepad.  Both services are completely down because they are single homed in the same datacenter.  &lt;br /&gt;&lt;br /&gt;Sixapart's recovery strategy seems to be:  Recover Typepad, then (eventually) recover Livejournal.  This is evidenced by their status page:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/890678774/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1141/890678774_43c22ed607.jpg" width="433" height="500" alt="sixapart status" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Given that Livejournal is a second class citizen to Sixapart compared to Typepad, how can people justify giving Sixapart money?  Furthermore, clearly Sixapart doesn't have the tech staff to bring both services up at once.  &lt;br /&gt;&lt;br /&gt;Of course, maybe they just didn't update their status page, in which case, this outlines the danger of not updating your status page - someone you don't know on the internet will assume the worst.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5397451190805819357?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5397451190805819357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5397451190805819357' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5397451190805819357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5397451190805819357'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/livejournal-is-second-class-citizen.html' title='Livejournal is a second class citizen'/><author><name>Ryan</name><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/1141/890678774_43c22ed607_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-4588018241260992672</id><published>2007-07-12T17:35:00.000-07:00</published><updated>2007-07-12T17:38:13.580-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copyright'/><category scheme='http://www.blogger.com/atom/ns#' term='foreign devils'/><category scheme='http://www.blogger.com/atom/ns#' term='canadian'/><title type='text'>Canadian Copyright</title><content type='html'>Some of you may be aware of the suggestions that my home land of Canada is a haven for copyright criminals.  None of the headlines recently are true, they are merely rhetoric designed to turn Canada in to the copyright disaster that the US is.  Has the DMCA improved American lives?  The goal of governmental policy is to improve citizen's lives via both public methods and encouragement of private approaches (ie: industry). &lt;br /&gt;&lt;br /&gt;In the mean time, my favourite Canadian hero Michael Geist has posted a new video:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6TloG6qL3gg"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6TloG6qL3gg" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4588018241260992672?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4588018241260992672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4588018241260992672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4588018241260992672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4588018241260992672'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/canadian-copyright.html' title='Canadian Copyright'/><author><name>Ryan</name><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-5280271148370184481.post-4382111682258323133</id><published>2007-07-10T20:25:00.001-07:00</published><updated>2007-07-10T20:31:20.613-07:00</updated><title type='text'>Target changing rooms.</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/773426209/" title="photo sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1078/773426209_db256e08ea_m.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/773426209/"&gt;Target changing rooms.&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; Target does not allow men into the women's changing rooms. While sitting here waiting a guy was called by his girlfriend for a consult. The clerk said guys are not allowed in. Nevermind that its just a hall and you can't see anything.&lt;br /&gt;&lt;br /&gt;This happened to me once at Lucy's. I now refuse to go anymore. Stores need to respect the companions of women shoppers, some of which are men.&lt;br /&gt;&lt;br /&gt;I really don't like "men are creepy" driven policies. Its insulting.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4382111682258323133?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4382111682258323133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4382111682258323133' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4382111682258323133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4382111682258323133'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/target-changing-rooms.html' title='Target changing rooms.'/><author><name>Ryan</name><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/1078/773426209_db256e08ea_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-6649426613830553239</id><published>2007-07-07T22:16:00.001-07:00</published><updated>2007-07-13T16:33:44.229-07:00</updated><title type='text'>Epic line up for transformers</title><content type='html'>&lt;a href="http://www.flickr.com/photos/ryanobjc/752442090/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1270/752442090_863178a96b.jpg" width="500" height="375" alt="Epic line up for transformers" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/752442090/"&gt;Epic line up for transformers&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6649426613830553239?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6649426613830553239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6649426613830553239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6649426613830553239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6649426613830553239'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/epic-line-up-for-transformers.html' title='Epic line up for transformers'/><author><name>Ryan</name><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/1270/752442090_863178a96b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-8413160946397018760</id><published>2007-07-04T10:32:00.001-07:00</published><updated>2007-07-30T13:49:42.251-07:00</updated><title type='text'>Seattle times front page Saturday june 30</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/717788346/" title="photo sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1100/717788346_eaa345d784_m.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/717788346/"&gt;Seattle times front page Saturday june 30&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8413160946397018760?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8413160946397018760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8413160946397018760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8413160946397018760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8413160946397018760'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/seattle-times-front-page-saturday-june.html' title='Seattle times front page Saturday june 30'/><author><name>Ryan</name><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/1100/717788346_eaa345d784_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-3766136529341143794</id><published>2007-07-02T22:07:00.001-07:00</published><updated>2007-07-03T00:21:39.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='zooomr'/><title type='text'>Photo Blog Approach</title><content type='html'>Now that I have the iPhone it's time to work on photo blogging on the road.  The problems with this are:&lt;br /&gt;&lt;br /&gt;- The iPhone can't do file form upload&lt;br /&gt;- The iPhone can't copy and paste&lt;br /&gt;&lt;br /&gt;The only thing I can do is email photos and enter text in text-areas.  Well it's enough - what I can do is email my photo to Flickr.  Now the photo is online.  Then, using the Flickr post-to-blog feature I can type text in, and Flickr will auto-copy the text and picture link to my blog.  Presto, blog post, without copy and pasting the large snippets of text.&lt;br /&gt;&lt;br /&gt;I have a Zooomr account, but I can't do this with it.  I'd need to form upload and copy and paste the snippet - things I can't do.&lt;br /&gt;&lt;br /&gt;UPDATE:  Turns out I can get Flickr to post a photo and blog entry.  So bonus, even faster photo posting on the go.  I tested the EDGE photo upload speed (they are big - 500k) and it takes about 25 seconds to upload.  Not too bad!  Especially if it's at 75 mph!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3766136529341143794?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3766136529341143794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3766136529341143794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3766136529341143794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3766136529341143794'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/photo-blog-approach.html' title='Photo Blog Approach'/><author><name>Ryan</name><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-5280271148370184481.post-4188185743105547525</id><published>2007-07-02T22:05:00.001-07:00</published><updated>2007-07-02T22:05:40.893-07:00</updated><title type='text'>Work bathroom - just like home</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ryanobjc/702133324/" title="photo sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1205/702133324_a3056a6c7e.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/702133324/"&gt;Work bathroom - just like home&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	A test shot with my iPhone.  This is the bathroom at work - looks like home.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4188185743105547525?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4188185743105547525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4188185743105547525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4188185743105547525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4188185743105547525'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/07/work-bathroom-just-like-home.html' title='Work bathroom - just like home'/><author><name>Ryan</name><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/1205/702133324_a3056a6c7e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-5964698238512836184</id><published>2007-06-30T23:19:00.001-07:00</published><updated>2007-07-02T22:18:30.403-07:00</updated><title type='text'>How to make Weather art</title><content type='html'>&lt;p&gt;&lt;br /&gt;Weather interface:  It's a small feature, but the UI looks stunning.  It has a similar look to the dashboard widget.&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603301/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603301_83c5def451.jpg" width="500" height="334" alt="_MG_0451" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To see other cities you drag left and right. Looks so cool:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603296/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603296_142c3b4143.jpg" width="500" height="334" alt="_MG_0457" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603297/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603297_b3dd3775a3.jpg" width="500" height="334" alt="_MG_0456" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603302/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603302_3362ea6ac6.jpg" width="500" height="334" alt="_MG_0454" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603303/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603303_d57a2b490c.jpg" width="500" height="334" alt="_MG_0455" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I love how Apple turns little miniatures apps that most people would ignore in to works of art.  Just this subtle interaction is enough to inspire an entire blog post and photo set for it!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5964698238512836184?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5964698238512836184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5964698238512836184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5964698238512836184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5964698238512836184'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/how-to-make-weather-art.html' title='How to make Weather art'/><author><name>Ryan</name><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-5280271148370184481.post-4168670264231284766</id><published>2007-06-30T23:16:00.001-07:00</published><updated>2007-07-02T22:11:42.143-07:00</updated><title type='text'>Seattle Times</title><content type='html'>&lt;p&gt;&lt;br /&gt;I am quoted in the Seattle Times newspaper!  The store which ran front page about the iPhone flows to page A10 where I am quoted.  The &lt;a href="http://seattletimes.nwsource.com/html/businesstechnology/2003769017_iphone30.html"&gt;entire article is online&lt;/a&gt; and here is my section:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Ryan Rawson, 30, of Seattle, said he wanted the iPhone because "most phones suck. Hopefully this will be a do-over for the cellphone industry."&lt;br /&gt;&lt;br /&gt;He liked that the iPhone's software is upgradeable. "You are buying the phone you will have forever," he said.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4168670264231284766?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4168670264231284766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4168670264231284766' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4168670264231284766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4168670264231284766'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/seattle-times.html' title='Seattle Times'/><author><name>Ryan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-6997019485570408038</id><published>2007-06-30T23:15:00.000-07:00</published><updated>2007-06-30T23:16:07.577-07:00</updated><title type='text'>Photo in the PI Microsoft blog</title><content type='html'>&lt;p&gt;Short and sweet: &lt;a href="http://blog.seattlepi.nwsource.com/microsoft/archives/117368.asp"&gt;here is a photo of me in the Seattle PI's Microsoft Blog.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6997019485570408038?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6997019485570408038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6997019485570408038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6997019485570408038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6997019485570408038'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/photo-in-pi-microsoft-blog.html' title='Photo in the PI Microsoft blog'/><author><name>Ryan</name><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-5280271148370184481.post-3807135448621470213</id><published>2007-06-30T22:29:00.001-07:00</published><updated>2007-07-02T22:17:13.152-07:00</updated><title type='text'>Tips, tricks, photos and bugs</title><content type='html'>&lt;p&gt;&lt;br /&gt;Now that more than 24 hours has passed, a sense of overwhelming awesomeness has settled on me and my iPhone.  This is one cool device.  I can't really say enough good things about it.  I completed the AT&amp;T online account registration on EDGE while riding in a car at 65 mph on I90.  It didn't take too long either, the speed was reasonable.  While you can always have more speed, it certainly is faster than the no-web surfing my Moto PEBL had.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Some tips - the keyboard doesn't register a press until you lift your finger.  If you hit the wrong key and notice quickly, instead of lifting and hitting backspace, just slide your finger around until you are on the right key, then lift.  Mistake corrected!&lt;br /&gt;&lt;br /&gt;I also had a problem where it became difficult to unlock my phone.  I'd slide my finger and nothing would happen and it would take me a few attempts.  Well the solution is to turn off the phone to restart.  To do this, hold the top button for about 5 seconds until a new screen pops up.  Now, the hard part, you have to slide the red thingy across - given the difficulty of sliding things already established this might take a bit!  Once you get it, turn it on and problem solved.&lt;br /&gt;&lt;br /&gt;Safari doesn't seem to allow you to use textbox input yet.  This is unfortunate because it means you can't blog directly from within Safari.  Obviously you can use mail-to-blog interfaces, but I'm not sure if blogger has one.  This is a clear bug that I hope will be fixed soon.  I might submit a bug report to Apple to encourage them.&lt;br /&gt;&lt;br /&gt;The last problem is you can't attach photos to a mail already in progress.  There is no good reason for this, just a UI omission.  You can email photos to a new mail, but not really the same thing.  The file form upload element is also disabled, but they should enable it and allow you to upload photos on the iPhone.  Another bug report!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enough complaints, they really are minor compared to the awesomeness that is the iPhone. Here are some of my joys:&lt;br /&gt;&lt;br /&gt;Mapping directions on I90 going 75 mph.  The speed at which the data was spooled amazed me!  The directions are great and the UI of Google Maps rule.&lt;br /&gt;&lt;br /&gt;Getting a text message while doing something else:  A pop up with the message summary asks if you want to read it or ignore.  If you ignore the SMS app on the home screen will still have a little red number on the upper right corner letting you know how many unread messages you have.  If the phone is locked it will display the message summary.  &lt;br /&gt;&lt;br /&gt;If the phone is charging and it's locked, when you hit a button you see:&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603339/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603339_6425440fe9.jpg" width="500" height="334" alt="_MG_0459" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The "slide to unlock" text has this rolling highlight in the direction of the drag to unlock.  Combined with the little arrow there are three indications of what to do.  Little details like that I just love!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There is much much more of course.  Rounding off this post is a picture from the iPhone:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2603373/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2603373_65288f7fb6.jpg" width="375" height="500" alt="IMG_0012" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3807135448621470213?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3807135448621470213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3807135448621470213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3807135448621470213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3807135448621470213'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/tips-tricks-photos-and-bugs.html' title='Tips, tricks, photos and bugs'/><author><name>Ryan</name><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-5280271148370184481.post-500329189476143026</id><published>2007-06-29T19:44:00.001-07:00</published><updated>2007-07-02T22:13:02.058-07:00</updated><title type='text'>iPhone owner</title><content type='html'>&lt;p&gt;I am now a proud iPhone owner.  Once we got in the store, it was pretty slick and I walked out by 6:15 with an iPhone in tow.  The sign up process in iTunes was quick, slick and problem-free.  Now the syncing... I forget how long this can take.  While it syncs, the screen looks a little like: &lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2595147/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2595147_0e253afdf6.jpg" width="500" height="334" alt="_MG_0264" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looking good!  The iPhone comes with accessories you normally don't get with the iPod anymore - specifically the dock and wall power brick.  All the basics you need to rock and roll.  There were plenty of iPhone-compatible bluetooth headsets there, but I didn't feel the need.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-500329189476143026?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/500329189476143026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=500329189476143026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/500329189476143026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/500329189476143026'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/iphone-owner.html' title='iPhone owner'/><author><name>Ryan</name><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-5280271148370184481.post-3097891630888721169</id><published>2007-06-29T15:24:00.000-07:00</published><updated>2007-06-30T22:28:57.810-07:00</updated><title type='text'>A second in King 5</title><content type='html'>&lt;p&gt;&lt;br /&gt;I am also in a &lt;a href="http://www.king5.com/video/index.html?nvid=155504&amp;shu=1"&gt;KING 5 local news segment.&lt;/a&gt;  See if you can spot me!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3097891630888721169?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3097891630888721169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3097891630888721169' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3097891630888721169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3097891630888721169'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/news.html' title='A second in King 5'/><author><name>Ryan</name><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-5280271148370184481.post-6215582773646374189</id><published>2007-06-29T15:18:00.000-07:00</published><updated>2007-07-02T22:13:19.414-07:00</updated><title type='text'>Another quote</title><content type='html'>&lt;p&gt;&lt;br /&gt;I got quoted again on the &lt;a href="http://blog.seattletimes.nwsource.com/techtracks/"&gt;Seattle Times techtracks blog.&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Ryan Rawson, 30, of Seattle, said he got there today at 6 a.m. to get a iPhone because "most phones suck." He currently owns a Motorola Pebl, but complains that it's not great at viewing Web sites.&lt;br /&gt;&lt;br /&gt;"You can visit the Web, but you don't really get to see the pages very well," he said.&lt;br /&gt;&lt;br /&gt;He said another cool feature is that Apple will be able to upgrade the phone's software when it connects to iTunes.&lt;br /&gt;&lt;br /&gt;"You are buying the phone you will have forever," he said. &lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6215582773646374189?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6215582773646374189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6215582773646374189' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6215582773646374189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6215582773646374189'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/another-quote.html' title='Another quote'/><author><name>Ryan</name><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-5280271148370184481.post-6821200380660504587</id><published>2007-06-29T14:28:00.000-07:00</published><updated>2007-07-02T22:17:30.381-07:00</updated><title type='text'>More photos</title><content type='html'>&lt;p&gt;&lt;br /&gt;What to do about power?&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2593020/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2593020_7d593ac76a.jpg" width="500" height="334" alt="_MG_0044" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the &lt;a href="http://www.delicious-monster.com/"&gt;delicious library&lt;/a&gt; folks, ALL of them:&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2593028/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2593028_070fdcb40b.jpg" width="500" height="334" alt="_MG_0048" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;News: &lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2592979/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2592979_78bbaafe63.jpg" width="500" height="334" alt="_MG_0045" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More News: &lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2591135/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2591135_20c9729f7e.jpg" width="500" height="334" alt="_MG_0034 (1)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6821200380660504587?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6821200380660504587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6821200380660504587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6821200380660504587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6821200380660504587'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/more-photos.html' title='More photos'/><author><name>Ryan</name><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-5280271148370184481.post-4987382310184641614</id><published>2007-06-29T13:37:00.001-07:00</published><updated>2007-06-29T15:42:14.186-07:00</updated><title type='text'>Waiting in line</title><content type='html'>&lt;p&gt;&lt;br /&gt;My co-waiters and I have been playing WOW on the flaky wireless network here.  Just now V was starting to play WOW and I was telling him for the 5000th time about a song called WOW by a local band called the &lt;a href="http://www.futuristicsexrobotz.com/minimal/"&gt;FSR&lt;/a&gt;.  And sure enough, someone in the band happened to walk by just at that moment and said "hey, I'm in that band!".  Although I think he was dismayed by our in-line-WOW playing and the excessive geekyness.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;EDIT:  The guy was "PC Speaker".  I take back my previous dismayed, he is pretty cool and has said hi a few more times.  Also he previously invited us to tomorrow's show at the &lt;a href="http://seattle.citysearch.com/profile/12039461/"&gt;chop suey&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4987382310184641614?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4987382310184641614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4987382310184641614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4987382310184641614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4987382310184641614'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/waiting-in-line.html' title='Waiting in line'/><author><name>Ryan</name><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-5280271148370184481.post-3050429690718548108</id><published>2007-06-29T11:45:00.000-07:00</published><updated>2007-06-29T11:47:33.232-07:00</updated><title type='text'>I made the PI</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;a href="http://seattlepi.nwsource.com/business/321829_iphone30.html"&gt;To quote the PI:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Ryan Rawson, 30, a Google software engineer was there on the first day of sales for a simple reason: "Because it's awesome and I can."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Cool!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3050429690718548108?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3050429690718548108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3050429690718548108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3050429690718548108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3050429690718548108'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/i-made-pi.html' title='I made the PI'/><author><name>Ryan</name><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-5280271148370184481.post-2795318211667770691</id><published>2007-06-29T10:37:00.000-07:00</published><updated>2007-07-02T22:14:56.664-07:00</updated><title type='text'>iPhone lineup photos</title><content type='html'>&lt;p&gt; It is nearly 11am and there is about 100 people in the iPhone line up at the Apple Store in UVillage Seattle.  &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As promised, photos ...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Early morning line up:&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2591129/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2591129_ae3d80f0ff.jpg" width="500" height="334" alt="_MG_0008 (1)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reshuffling in the morning: &lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2591126/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2591126_ff0a5bd5e7.jpg" width="334" height="500" alt="_MG_0012 (1)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Early morning display: &lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2590774/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2590774_8b0a2b0807.jpg" width="500" height="334" alt="_MG_0014" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The news was out:&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2590778/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2590778_1a6447dd0d.jpg" width="500" height="334" alt="_MG_0040" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Being interviewed...:&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2590796/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2590796_706d4c5340.jpg" width="334" height="500" alt="_MG_0037" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Longggg line:&lt;br /&gt;&lt;a href="http://www.zooomr.com/photos/ryanobjc/2590880/" title="Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/2590880_919df48133.jpg" width="334" height="500" alt="_MG_0017" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-2795318211667770691?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/2795318211667770691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=2795318211667770691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2795318211667770691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2795318211667770691'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/iphone-lineup-photos.html' title='iPhone lineup photos'/><author><name>Ryan</name><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-5280271148370184481.post-3607091182935195642</id><published>2007-06-29T09:17:00.000-07:00</published><updated>2007-06-29T09:19:04.041-07:00</updated><title type='text'>In line at the Apple Store</title><content type='html'>&lt;p&gt;My partners in iPhone crime texted me at about 5:45am informing me there was 38 people in line.  I got up and got ready to leave, by 6:05 am there was over 50 people in line.  When I arrived not much had changed yet luckily and I secured my spot at the 38 position.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The local news did a live segment out here, and asked us to keep our mac books open for the pan shot.  A PI reporter asked us a bunch of questions, so check the paper tomorrow.  Then an hour later a AP reporter did the same, so check the AP news later.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;A few pictures forthcoming....&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3607091182935195642?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3607091182935195642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3607091182935195642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3607091182935195642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3607091182935195642'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/in-line-at-apple-store.html' title='In line at the Apple Store'/><author><name>Ryan</name><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-5280271148370184481.post-7282801619221503785</id><published>2007-06-26T01:08:00.000-07:00</published><updated>2007-06-26T14:21:43.002-07:00</updated><title type='text'>Busy</title><content type='html'>&lt;p&gt;&lt;br /&gt;I've been busy - busy with work.  Busy with weekend life jazz.  Also I haven't had any inspiration of what to write.  Except I would note that &lt;a href="http://steve-yegge.blogspot.com/"&gt;Steve Yegge's&lt;/a&gt; recent blog entry about marshmallows is probably not what you think it's about.  Actually I'm not sure it's about anything or even the thing I thought it might be, or anything else.  He sure is one opaque writer sometimes.  My guess is the lack of sleep.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;But never mind that, it is time to publicly declare my candidacy for the office of iPhone owner.  My colleague and I shall travel to a store on Friday and attempt to obtain the device.  I'm really hoping for a positive outcome because that thing looks so damn cool.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I realized last week that in fact, Star Trek is here.  The &lt;a href="http://video.google.com/url?docid=-1975089314115214451&amp;esrc=rss_uds&amp;ev=v&amp;q=multi-touch+display&amp;srcurl=http://www.youtube.com/watch?v=5JcSu7h-I40&amp;vidurl=/videoplay?docid=-1975089314115214451&amp;usg=AL29H23gPIeJjTEiGZP1lqsW422GG1leOQ"&gt;multi-touch display&lt;/a&gt; with the self-reconfiguring layout is reminiscent of &lt;a href="http://video.google.com/url?docid=8988946935617804362&amp;esrc=rss_uds&amp;ev=v&amp;q=Star+Trek:TNG&amp;srcurl=http://www.youtube.com/watch?v=fL8nnMpV2Eo&amp;vidurl=/videoplay?docid=8988946935617804362&amp;usg=AL29H22ojoHYXktsh7b7NyyrwmKesFU1Nw"&gt;Star Trek:TNG&lt;/a&gt;.  Every tech company is gearing up to provide the hardware and software for multi-touch systems and devices.  Of course, knowing most techies they'll blow it on the UI, but for now the singular device that will show off all other devices will be the iPhone.  They say imitation is the most sincere form of flattery, and we'll see what &lt;a href="http://arstechnica.com/journals/apple.ars/2006/4/14/3586"&gt;Apple's legal department&lt;/a&gt; has to say about that.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I sent a text message to &lt;a href="http://firstinline.wordpress.com/"&gt;Greg Packer&lt;/a&gt; who is first in line at the NYC Apple Fifth Store for the iPhone at about 1am tonight.  Nevermind that it's 4am, how can you sleep on the street there?  He replied a little while later to my inquiry why does he need donations if he can afford an iPhone with the succinct "for food".  He didn't really answer my reply which involved &lt;a href="http://en.wikipedia.org/wiki/Maslow's_hierarchy_of_needs"&gt;Maslow&lt;/a&gt; references.  &lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7282801619221503785?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7282801619221503785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7282801619221503785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7282801619221503785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7282801619221503785'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/06/busy.html' title='Busy'/><author><name>Ryan</name><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-5280271148370184481.post-6722550776190177819</id><published>2007-05-28T21:46:00.001-07:00</published><updated>2007-05-28T21:50:46.251-07:00</updated><title type='text'>Concurrent Programming</title><content type='html'>&lt;p&gt; This is my reply to a question posted to &lt;a href="http://developers.slashdot.org/article.pl?sid=07/05/29/0058246"&gt;slashdot: "Is Parallel Programming Just Too Hard?"&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The problem with parallel programming is we don't have the right set of primitives.  Right now the primitives are threads, mutexes, semaphores, shared memory and queues.  This is the machine language of concurrency - it's too primitive to effective write lots of code by anyone who isn't a genius.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;What we need is more advanced primitives.  Here are my 2 or 3 top likely suspects:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Concurrent Sequential Programs - CSP.  This is the programming model behind &lt;a href="http://www.erlang.org/"&gt;Erlang&lt;/a&gt; - one of the most successful concurrent programming languages available.  Writing large, concurrent, robust apps is as simple as 'hello world' in Erlang.  There is a whole new way of thinking that is pretty much mind bending.  However, it is that new methodology that is key to the concurrency and robustness of the end applications.  Be warned, it's functional!&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Highly optimizing functional languages (HOFL) - These are in the proto-phase, and there isn't much available, but I think this will be the key to extremely high performance parallel apps.  Erlang is nice, but not high performance computing, but HOFLs won't be as safe as Erlang.  You get one or the other.  The basic concept is most computation in high performance systems is bound up in various loops.  A loop is a 'noop' from a semantic point of view.  To get efficient highly parallel systems Cray uses loop annotations and special compilers to get more information about loops.  In a functional language (such as &lt;a href="http://www.haskell.org/ghc/"&gt;Haskell&lt;/a&gt;) you would use map/fold functions or list comprehensions.  Both of which convey more semantic meaning to the compiler.  The compiler can auto-parallelize a functional-map where each individual map-computation is not dependent on any other.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;Map-reduce&lt;/a&gt; - the paper is elegant and really cool.  It seems like this is a half way model between C++ and HOFLs that might tide people over.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;In the end, the problem is the abstractions.  People will consider threads and mutexes as dangerous and unnecessary as we consider manual memory allocation today.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6722550776190177819?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6722550776190177819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6722550776190177819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6722550776190177819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6722550776190177819'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/05/concurrent-programming.html' title='Concurrent Programming'/><author><name>Ryan</name><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-5280271148370184481.post-6612134858533162226</id><published>2007-05-18T12:04:00.001-07:00</published><updated>2007-07-02T22:18:52.917-07:00</updated><title type='text'>So you are a screen user</title><content type='html'>&lt;p&gt;&lt;br /&gt;So you are a screen user on linux but your workstation is a Mac.  You probably run into the backspace problem constantly.  Specifically you ssh to your Linux box, the backspace works, but once you attach to screen now you get all sorts of problems.  One solution is to &lt;br/&gt;&lt;br /&gt;&lt;code&gt;stty erase ^?&lt;/code&gt;&lt;br /&gt;but backspace doesn't work for screen commands.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The real problem is there is a mismatch between OS X terminal and the TERM string it sets for itself.  There are two solutions.  Solution #1 is to do this when you login:&lt;br /&gt;&lt;code&gt;export TERM=xterm&lt;/code&gt;&lt;br /&gt;The other solution is to do these commands on your Linux box:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cd ~&lt;br /&gt;mkdir -p .terminfo/x&lt;br /&gt;cd .terminfo/x&lt;br /&gt;wget http://invasioncity.com/~ryan/xterm-color&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The problem is the xterm-color by default on Linux mismatches backspace codes with what Terminal does on OS X.  You might think that using the "delete key sends backspace" option in Terminal window settings might do the trick, but sadly no.  &lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6612134858533162226?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6612134858533162226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6612134858533162226' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6612134858533162226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6612134858533162226'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/05/so-you-are-screen-user.html' title='So you are a screen user'/><author><name>Ryan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-6723871654954684429</id><published>2007-05-10T23:49:00.000-07:00</published><updated>2007-05-11T00:15:13.795-07:00</updated><title type='text'>Guitar Hero</title><content type='html'>&lt;p&gt;&lt;br /&gt;I've owned Guitar Hero and Guitar Hero 2 since last November.  At first when I got the game, I was at a "medium" level.  I've been practicing at the "hard" level recently.  I realized that I have broken through to a new plateau.  I realized this when I noticed that I had played nearly every song in hard mode in both games.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I have figured out the elements of this skill.  There seems to be two extra abilities.  The first is being able to move my fingers really fast.  When those notes are zipping down so quickly you really need to be able to reposition fast.  Secondly the ability to handle all 5 fret buttons with 4 fingers without looking.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;For example if you're doing a reverse crescendo, you hit the orange fret with the pinky, then blue fret with the ring, yellow fret with the middle, and the red fret with the last index finger.  Now you're out of fingers, so slide the index finger to the green fret and you're done.  This siding action is the essential ingredient to handling 5 fret buttons with 4 fingers. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I'm not exactly sure how I developed these skills, other than only playing hard songs.  I guess practice really does make perfect (almost, soon).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I wouldn't say that playing Guitar Hero is similar to playing the actual guitar - I don't play the actual guitar, but I had some experiences recently that leads me to believe there is some transferable skills.  Here in Seattle we have the Experience Music Project, which has a cool permanent exhibit called the Sound Lab.  The lab has a bunch of instruments in a computer guided tutorial setup.  A few years ago I did the guitar tutorial, I remember it being cool but I didn't get much out of it then.  I recently went back and tried it again, and the intro tutorial seemed distinctly easier than last time.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I figure this is because I had practice at maintaining a rhythm with my right hand and moving my left hand quickly.  While I don't actually know chords or any guitar specific real skills, I definitely think the base skill helps somewhat.  Of course without actually learning the guitar, I guess I'll never know.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6723871654954684429?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6723871654954684429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6723871654954684429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6723871654954684429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6723871654954684429'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/05/guitar-hero.html' title='Guitar Hero'/><author><name>Ryan</name><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-5280271148370184481.post-3584406388741225949</id><published>2007-05-02T01:16:00.000-07:00</published><updated>2007-05-02T01:27:55.137-07:00</updated><title type='text'>Fountain pen aesthetic</title><content type='html'>&lt;p&gt;&lt;br /&gt;I enjoy the idea of a fountain pen aesthetic.  To go along with the mechanical watch obsession, is a minor fountain pen obsession.  To date I own two fountain pens, my original, which is a Waterman steel nib.  But my crown jewel is my Namiki retractable fountain pen - as far as I know the only retractable fountain pen model in existence.  I love my Namiki because it has an extra-extra fine nib which is generally hard to find in fountain pens.  Additionally it was relatively inexpensive yet still has a gold nib.  The difference between the gold and steel is difficult to understate.  Combined with my indelible ink, I have a pen that is acceptable for all writing, including checks and mail.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I think pens, especially fountain pens, represent the ultimate single-object characterization of what it means to be human.  Humans excel at abstract thought, fine motor control, aesthetics and communication.  All of these manifest themselves in the fountain pen.  I threw aesthetics in there to justify a fountain pen over a regular pen, mostly because I really dislike the idea of a disposable culture.  There is a certain craftsmanship and history to fountain pens, ideas that generally don't have an equal elsewhere in the animal world.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;So often newer computer users forget about the power of the pen and paper.  The free-form unconstrained and rapid creation really rivals all other mediums for idea creation.  If I wanted to insert a diagram of a pen, it would be fairly difficult in this blog.  However if I was writing it on paper, I could do nearly anything I wanted, drawing skills aside.  The closest computer equivalent would be the tablet PC, but I can't really deal with a PC right now.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Besides which, paper makes an excellent archival medium.  In 100 years will people be pouring over the electronic correspondence of the greats of our time?  Given how much data people carry on their personal computers, it might be, but it doesn't have quite the same ring to it as reading the personal correspondence of Albert Einstein.  Or reading the notebooks of Da Vinci.  So my personal stand is to attempt to create paper-based notebooks of ideas and thoughts.  So far I'm not really successful, mostly because my notebook hides in my bag, but perhaps I just need another one for my desk as well?&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3584406388741225949?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3584406388741225949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3584406388741225949' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3584406388741225949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3584406388741225949'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/05/fountain-pen-aesthetic.html' title='Fountain pen aesthetic'/><author><name>Ryan</name><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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-3407086167100000451</id><published>2007-05-01T01:08:00.000-07:00</published><updated>2007-05-01T01:09:19.266-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;br /&gt;Quoting The Seattle Stranger:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;"The atelier system - of extended apprenticeships in the studios of master artists - is an old European tradition, spanning back to the Renaissance and up[.]"&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;This is in reference to an art school in Seattle.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The MIT AI Lab was a computer science form of this structure.  With the demise of such places, including the NCSA Supercomputing Center, how do we train master programmers?  It seems that we are currently relying on luck.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3407086167100000451?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3407086167100000451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3407086167100000451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3407086167100000451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3407086167100000451'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/05/quoting-seattle-stranger-atelier-system.html' title=''/><author><name>Ryan</name><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-5280271148370184481.post-3561557634253714688</id><published>2007-04-27T01:20:00.000-07:00</published><updated>2007-04-27T01:28:53.984-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joost'/><title type='text'>Joost... A review?</title><content type='html'>&lt;p&gt;&lt;br /&gt;I've had &lt;a href="http://www.joost.com/"&gt;Joost&lt;/a&gt; for over a month now.  I wrote a highly critical review I never published.  It was just not polished enough.  Now that more time has gone by, I can't really bring myself to polish it.  Joost just doesn't really inspire me to even criticize it.  At first the content was bad, then the content got mildly better.  Now it's the weirdly confusing UI which annoys me.  Besides those flaws, I think the bigger problem is the whole experience didn't leave me so excited I was willing to look beyond them.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;As Kathy says on &lt;a href="http://headrush.typepad.com/"&gt;Creating Passionate Users&lt;/a&gt;, if your product doesn't either make users love it or hate it, you are in the zone of mediocrity.  And I think Joost right now is in that zone.  Even the content expansion was not very satisfying - good shows, but half of the ones I tried to click on were "unavailable".  Despite all these problems, I still don't hate Joost enough to do more than a 2 paragraph blog entry.  I just don't care.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3561557634253714688?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3561557634253714688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3561557634253714688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3561557634253714688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3561557634253714688'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/04/joost-review.html' title='Joost... A review?'/><author><name>Ryan</name><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-5280271148370184481.post-3671914225437876672</id><published>2007-04-20T16:55:00.000-07:00</published><updated>2007-04-22T22:16:42.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='watch'/><title type='text'>Watch</title><content type='html'>&lt;p&gt;&lt;br /&gt;I have a thing for devices, and it is devices of all kinds.  I just heard from the watch store that my watch has arrived - after 5 weeks of waiting.  The wait is because the watch has a few minor custom features.  The first is an artificial sapphire crystal front - sapphire is 9 on the hardness scale, thus few things scratch it.  The second is a clear case back (just regular hardened glass) allowing the viewing of the watch's movement.  Normally this is just a collection of solid state devices, but this is a mechanical watch, so you get to see all the pieces moving.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Redux: Apparently it was a false alarm.  The guy there didn't realize that I had a special order, and the watch waiting for me was the regular watch, not the one with my changes.  Alas, I must wait some more.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3671914225437876672?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3671914225437876672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3671914225437876672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3671914225437876672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3671914225437876672'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/04/watch.html' title='Watch'/><author><name>Ryan</name><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-5280271148370184481.post-7818980132076176686</id><published>2007-04-14T00:15:00.000-07:00</published><updated>2007-07-02T22:18:03.031-07:00</updated><title type='text'>List Processing</title><content type='html'>&lt;p&gt;&lt;br /&gt;Recently I was assigned/volunteered for this task at work.  Fairly inglorious, basically it ends up being writing a whole bunch of XML configuration.  Nothing more exciting than pounding out endless tags.  My editor of choice is emacs, mostly because it runs really fast, and I don't like the 'escape' command/insert metaphor of VI and clones.  I should repeat that last bit: I like emacs because it is FAST.  That's right, the editor who's acronym expansion used to be "Eight Megabytes And Constantly Swapping"  is now one of the fastest editors.  If you don't think so, try loading up a 80k line XML file in your favorite IDE.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;So emacs XML mode does allow for some validation and other things, but normally it does not insert closing tags and other 'niceties' that editors such as TextMate does.  So I found myself repeatedly hammering out the same XML blocks, and I thought, "I know emacs has a template system,  I should use that."  And indeed it does, in fact emacs as 2 separate but complementary systems.  The first is 'skeletons' which provide a method of defining a mini-template.  It has a pile of features including the ability to automatically put your point in an 'interesting' spot of the inserted text.  So it can position your cursor at the middle of 2 tags or in an attribute or wherever.  You can then bind these skeletons to key commands.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Binding to key commands is handy, but combined with the abbrevation mode you end up with a powerhouse editing shortcut.  Simply put, abbreviations are small letter sequences that get expanded.  Simple text substitution is trivial, turn teh to the.  Or, you can call an emacs-lisp function, such as a skeleton function you just previously defined.  Meaning with a few keystrokes and no special control-bindings you can pound out code when the base format (XML is so verbose!) does not allow shortcut definitions.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Of course each little skeleton (or what one might call "macros" but we don't in lisp because there are already lisp macros which are way different) is pretty custom.  But they are so trivial and easy to write, even for small hour or two projects it makes sense to define them.  Same with abbreviations.  This has easily saved me two hours  already, combined with the 45 minutes it took to learn, is about 1 hour and 15 minutes saved.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I should also mention, I am in no ways a lisp expert.  Copy and pasting emacs lisp functions into ~/.emacs and doing a little bit of modifying is the extent of my expertise.  It took me 10 minutes to figure out how to use the interactive special form properly.  I usually use Google to find solutions to my emacs-lisp problems.  But defining these skeleton/abbrevs was so stupidly trivial practically everyone should learn it.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Here is a brief example, lets say you are typing the same piece of HTML over and over, it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;div class="boxy"&amp;gt;&lt;br /&gt;  &amp;lt;div class="custom"&amp;gt;&lt;br /&gt;    text&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Lets say the div classes are always the same, but the text inside is what is unique.  So you define a skeleton:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define-skeleton&lt;br /&gt;  boxy-custom-div&lt;br /&gt;                "My Custom/Boxy div nested skeleton"&lt;br /&gt;  &amp;gt; "&amp;lt;div class=\"boxy\"&amp;gt;" \n&lt;br /&gt;  &amp;gt; "&amp;lt;div class=\"custom\"&amp;gt;" \n&lt;br /&gt;  &amp;gt; _ \n&lt;br /&gt;  -2 "&amp;lt;/div&amp;gt;" \n&lt;br /&gt;  -2 "&amp;lt;/div&amp;gt;" \n )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Basically anything in a quoted string is echoed verbatim.  Escape double quotes with a \ as usual.  The proceeding &amp;gt; means 'intend according to the mode'.  The \n inserts a newline as expected.  The -2 is to properly un-indent those lines by 2 spaces. The bare _ means that is an area of interest.  What it means is when the skeleton is applied, the first 'area of interest' is where the cursor will be left afterwards.  You can define multiple interesting areas and do more advanced things by having skeletons wrap around existing text.  However that does not play well with the abbrev trick I will say next. &lt;div class="note"&gt;Small note: I used emacs to type all those damn &amp;gt; and &amp;lt; entities.&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The magic comes in with abbrev mode.  First off enable abbrev mode with M-x abbrev-mode in your buffer.  Then you need to define an abbreviation, but you can't do it with the command sequence C-x a l which the manual tells you.  Instead you have to execute the following lisp code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define-abbrev&lt;br /&gt;   html-mode-abbrev-table&lt;br /&gt;   "cdiv" "" 'boxy-custom-div)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first string "cdiv" is the trigger text.  The second string is what to substitute it with (nothing) and the last argument is what function to call after the text was inserted.  The net result is with 5 keys "cdiv" then space/enter you get to expand out all that HTML.  Clearly the more repetitive text you have the bigger of a win this is.  Unfortunately skeletons that are triggered via abbrev-mode do not properly work to wrap existing text.  That mode of skeleton is very powerful, it lets you wrap multiple (up to 16) chunks of text in a row at arbitrary boundaries in to different points of a skeleton in order.  The slight annoyance is you have to mark with C-space each point of interest.  I personally find that awkward.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Of course a neater approach would be to ASK in the mini buffer what you'd like to insert in.  And you can do this in skeletons.  But there is only so far you can go with that, since you have to ask the fields in order and you can't post-insert text.  Lets say you are defining database schemas, you might as well only enter the table name and have your skeleton guess the primary key name.  This is starting to get a little complex, and this is where my story changes slightly.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I ran in to this particular problem, wanting to do non-trivial calculation and manipulation in a skeleton.  The docs say "maybe you should write an emacs-lisp function instead", which is a fabulous idea.  I don't really know enough about lisp or emacs lisp so it seems like a good time to learn.  Luckily I work with the semi-famous &lt;a href="http://steve-yegge.blogspot.com/"&gt;Steve Yegge&lt;/a&gt;. As you may know or have guess, Steve is a lisp... well fan.  And I raised this to him, that skeletons and abbrev-mode ruled and I needed to learn more emacs-lisp.  To which he said "read the book on my desk".  Technically it's a print-out in a binder of a book, and the book is &lt;a href="http://www.paulgraham.com/onlisp.html"&gt;"On Lisp"&lt;/a&gt; which I am now reading.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The interesting thing about Lisp is it was invented in the early days of computer science (ie: 70s and early 80s) when people didn't "know" how to program.  Thus I believe people asked questions like "what does it mean to program" and other seemingly useless philosophical type questions.  The result of which is Lisp, a meta-programming language that facilitates writing and rewriting itself.  Of course now, being smart programmers we invent useful languages like C++ and Java and C# which are safe and don't let you change too much about the language itself.  And we are better off for it, right?&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7818980132076176686?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7818980132076176686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7818980132076176686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7818980132076176686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7818980132076176686'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/04/list-processing.html' title='List Processing'/><author><name>Ryan</name><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-5280271148370184481.post-6571143659358934164</id><published>2007-03-30T15:17:00.000-07:00</published><updated>2007-07-02T22:19:13.055-07:00</updated><title type='text'>Kathy Sierra</title><content type='html'>&lt;p&gt;&lt;br /&gt;Once upon a time I met Kathy Sierra at a weird mini-conference at my former employer.  I really enjoyed her talk, and I have followed her blog since then.  I am amazed at 2 traits of her blog (ones I wish I had), first is great graphic design.  Stock photos and tablet drawings of pie charts never looked so good!  Secondly, every post is part of a excellent narrative and is argued well.  Representing no doubt years of research.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Of course by now you have probably heard of the whole &lt;a href="http://headrush.typepad.com/creating_passionate_users/2007/03/as_i_type_this_.html"&gt;death threat&lt;/a&gt; bit.  I really didn't know what to think when I saw it, but I certainly did not want to write a &lt;a href="http://braintoast.com/2007/03/code-of-conduct/"&gt;blog post using the world 'but'.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I don't think anyone can really know what Kathy is feeling.  Having met her, and knowing she is on the straight and level, I am inclined to believe her.  I do think that contributions indicating that people should "toughen up" really don't help much.  Especially when coming from a position of privileged and protection.   &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Those are easy to dismiss - however what is harder to dismiss is the use of the word 'but'.  I really don't like this word, and to illustrate why, I will do an example:&lt;br /&gt;&lt;br /&gt;"I support your cause, &lt;b&gt;but&lt;/b&gt; I am concerned that ..."&lt;br /&gt;&lt;br /&gt;Now lets replace the &lt;b&gt;but&lt;/b&gt; with it's true meaning:&lt;br /&gt;"I support your cause, &lt;i&gt;but ignore everything before but, since what follows are my true feelings&lt;/i&gt;, I am concerned that...&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This is my own cognitive search-and-replace, your mileage may vary, results aren't guaranteed, etc, etc.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6571143659358934164?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6571143659358934164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6571143659358934164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6571143659358934164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6571143659358934164'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/03/kathy-sierra.html' title='Kathy Sierra'/><author><name>Ryan</name><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-5280271148370184481.post-3262343891343761555</id><published>2007-03-30T12:14:00.000-07:00</published><updated>2007-03-30T12:15:37.976-07:00</updated><title type='text'>Greenspan</title><content type='html'>&lt;p&gt;&lt;br /&gt;For no specific reason I was reminded to dig up the h4x0r economist "comics".  Any &lt;a href="http://www.rdwarf.com/users/kioh/"&gt;comic where Greenspan speaks leet&lt;/a&gt; is pretty much gold in my books.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3262343891343761555?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3262343891343761555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3262343891343761555' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3262343891343761555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3262343891343761555'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/03/greenspan.html' title='Greenspan'/><author><name>Ryan</name><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-5280271148370184481.post-9164434208685000675</id><published>2007-03-28T17:06:00.000-07:00</published><updated>2007-07-02T22:19:29.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ui'/><title type='text'>Two Cool videos</title><content type='html'>&lt;p&gt;&lt;br /&gt;I want the following UI interaction devices on my desk and in my bag.  The first is a new desktop UI metaphor, based on physics.  The second is a multi-touch display, sort of like Minority Report and Star Trek.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M0ODskdEPnQ"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/M0ODskdEPnQ" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=M0ODskdEPnQ"&gt;YouTube Link&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=884017118027634444&amp;hl=en" flashvars=""&gt; &lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=884017118027634444&amp;q=multi-touch"&gt;Google Video Link&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-9164434208685000675?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/9164434208685000675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=9164434208685000675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/9164434208685000675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/9164434208685000675'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/03/two-cool-videos.html' title='Two Cool videos'/><author><name>Ryan</name><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-5280271148370184481.post-7707009988180120742</id><published>2007-03-27T15:53:00.000-07:00</published><updated>2007-03-27T15:57:01.696-07:00</updated><title type='text'>Lunch Hosting In Kirkland</title><content type='html'>&lt;p&gt;&lt;br /&gt;Once nice thing about working here, is it is very easy to convince people to come visit you for lunch.  The famous Google lunch, free, and filled with smart people who love to chat.  Who could want more?  Today I had my ex-coworker &lt;a href="http://www.marketeconomy.com/files/529b303bf4396a2cc6bcdbaea463dc24-4.html"&gt;Alexy&lt;/a&gt; come by.  He had some photography tidbits, a cool Leica point and shoot, and plenty of "financial engineering" to talk about.  Cool guy, he is currently ramping up to a PhD - good luck there.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Also he owns &lt;a href="http://www.women.ru/"&gt;women.ru&lt;/a&gt; of all sites.  Crazy guy.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7707009988180120742?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7707009988180120742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7707009988180120742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7707009988180120742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7707009988180120742'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/03/lunch-hosting-in-kirkland.html' title='Lunch Hosting In Kirkland'/><author><name>Ryan</name><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-5280271148370184481.post-7259386726946938197</id><published>2007-03-09T18:57:00.000-08:00</published><updated>2007-03-09T18:59:02.551-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joost'/><title type='text'>Joost</title><content type='html'>&lt;p&gt;&lt;br /&gt;Thanks to the sweet hook up, I have a &lt;a href="http://www.joost.com/"&gt;Joost&lt;/a&gt; account now.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Review forthcoming.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7259386726946938197?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7259386726946938197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7259386726946938197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7259386726946938197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7259386726946938197'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/03/joost.html' title='Joost'/><author><name>Ryan</name><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-5280271148370184481.post-4110914517065033052</id><published>2007-03-01T21:58:00.000-08:00</published><updated>2007-03-01T23:17:45.786-08:00</updated><title type='text'>Design</title><content type='html'>&lt;p&gt;&lt;br /&gt;On the subject of design, &lt;a href="http://www.joelonsoftware.com/design/"&gt;many people&lt;/a&gt; have &lt;a href="http://www.paulgraham.com/taste.html"&gt;many things&lt;/a&gt; to say about it.  Of course, with such a highly debated topic, how can one think they are possibly smart or qualified enough to say more on this subject?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The hubris of developers pretty much demand that we should talk about crap we don't know enough about.  Of course there has been much writing about how a "child like approach" can &lt;a href="http://headrush.typepad.com/creating_passionate_users/2006/06/intuition.html"&gt;bring a fresh look and new innovative ideas.&lt;/a&gt;  To that end, I think I have noticed some things about great design that I think is truly new (to me).  I'm not sure I can condense my list in to an actual list, so you get prose instead.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Great design generally comes out of inspired creativity.  You rarely can force such creativity, which is why those ad companies are paid the big bucks.  You rarely get this kind of creativity out of groups, and never out of committees.  If you have a small design team that operates in a high bandwidth communication situation (ie: in person) and they "think like one" you may end up with amazing things.  Design to completion though is fraught with compromises.  Some compromises are ok, others are critical junctures where your design just got shot to hell.  I don't know how to differentiate between these two types of compromises.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Every design has essential elements - any changes that detract from these elements end up taking away from the overall picture.  Since the essential elements, or first principles, can be unknown to everyone, great designers also end up being great dictators.  Since you can't effectively argue about first principles you don't know or can't communicate, you are left with force of personality (see: Steve Jobs).  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There are however first principles of great design.  Things all great designs have.  All designs come from simple ideas that can end up having complex interactions.  A great example would be &lt;a href="http://en.wikipedia.org/wiki/HyperCard"&gt;Hypercard&lt;/a&gt;.  Years later people still rely on hypercard stacks for various things.  The iPod is a classic design study, so all I'll say about that is the central idea is "I should be able to hold all my music in one hand".  The simple idea must not be a mission statement, it must reflect a functional piece of the design.  A counter example would be "the user should be able to manipulate all manners of information" - this is more of a use case or end goal, rather than a design principle.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Since design principles reflect the working or physical aesthetic of the product (see: chair design), they should ideally reflect a subtle or even sublime balance between functionality and simplicity.  Simple first principles that allow rich functionality is hard to achieve however.  However, simplicity sometimes just ends up in overly simple system, where the basic rules fail to interact in interesting or meaningful ways.  One possible test is the orthogonal test - each first principle should be completely free from the others.  By combining multiple simple rules you end up with a rich multidimensional space in which aspects can be combined.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The basic bench-test for designs is often the gut or intuition test.  This may return conflicting or shallow results depending on the strength of the intuition involved however.  This article has suggestively been about general design, but my overall concern is primarily with software design.  The goodness of a software design seems to be escaping many people, unlike, say, Architectural design.  There is an increasing focus on this subject over the last 10 years, with many new players such as &lt;a href="http://www.43folders.com/"&gt;43 folders&lt;/a&gt;.  However, this is leading edge stuff, not being taught in school or being spread widely enough in the engineering space.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Perhaps one of the biggest obstacles is the intuitive portion of design.  Although intuition is just short for combining many disrelated factors in a semi-unconscious manner, the left-brained focus of many software engineers can leaves them opposed to this approach.  Perhaps some software engineers can benefit from right-brained activities?  Drawing, musical instruments and other artistic endeavors can trigger right brained thinking.  I am blessed (cursed) with an extremely right brained thinking style, which oddly enough gives me good grades in math, but bad grades in organization (you should see my apartment!).&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4110914517065033052?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4110914517065033052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4110914517065033052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4110914517065033052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4110914517065033052'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/03/design.html' title='Design'/><author><name>Ryan</name><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-5280271148370184481.post-7118054076446385949</id><published>2007-02-25T13:27:00.000-08:00</published><updated>2007-02-25T13:35:54.286-08:00</updated><title type='text'>A Perspective on Computer Science</title><content type='html'>&lt;p&gt;&lt;br /&gt;I have a saying that I used around the office: "Lets put the Science back in to Computer Science".  I think it really annoyed everyone else after the 20th time.  But it's true - many people cling to ideas and methods long after any objective observer would have called them a failure.  A one size fits all modernist approach is common.  See Sun's pimping of Java as THE programming language for all circumstances.  It should be clear to anyone that Java &lt;a href="http://www.google.com/search?q=java+floating+point+hurts+us+all"&gt;does not have a place in high performance numerical computing.&lt;/a&gt;  Clearly there is much wishful thinking going on here, rather than objective measure and redefinition of science.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Hence, the following snippet courtesy of &lt;a href="http://www.graficaobscura.com/future/futnotes.html"&gt;"Futurist Programming Notes"&lt;/a&gt;.  It looks like a pretty old reflection, but it's useful as a backwards looking futuristic meditation.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes on computer science tradition&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt; Unscientific - The acceptance of ideas depends more on personalities than on technical merits.&lt;br /&gt;    &lt;li&gt; Anti-Intellectual - Alternative ideas are discouraged.&lt;br /&gt;    &lt;li&gt; Stodgy - The primary concepts haven't changed in 20 years.&lt;br /&gt;    &lt;li&gt; Dogmatic - Irrelevant criteria are used to evaluate peoples' work.&lt;br /&gt;    &lt;li&gt; Arrogant - most NEW ideas are feared and rejected.&lt;br /&gt;    &lt;li&gt; Insular - isolated from other disciplines. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Not all of these criticisms are fair and some of them are being worked on (especially the Insular bit), but some of the first ones definitely apply.  Think about this list next time you are arguing the merits of highly dynamic languages (Python, Ruby, etc) versus "standard" languages such as Java.  Are their arguments based on sound evidence, or is it merely dogma at work?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;For continued reading, try &lt;a href="http://steve-yegge.blogspot.com"/&gt;Steve Yegge&lt;/a&gt;.  He has quite a bit to say on the subject of dynamic vs static languages and developing systems for the future.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7118054076446385949?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7118054076446385949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7118054076446385949' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7118054076446385949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7118054076446385949'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/perspective-on-computer-science.html' title='A Perspective on Computer Science'/><author><name>Ryan</name><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-5280271148370184481.post-5131767549169042705</id><published>2007-02-22T12:27:00.000-08:00</published><updated>2007-02-22T12:32:14.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='stackless python'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Stackless Python vs Erlang</title><content type='html'>&lt;p&gt;&lt;br /&gt;To follow up on my Erlang post, while I won't be attempting to use Erlang at work, I may well be interested in it outside employment venues.  Right now I'm thinking about the difference between Stackless Python and Erlang.  Looks like the primary advantage of Stackless is that well.. it's Python!  The language is less "weird" to most people, it's fully OO (for those who forget how to design non-OO systems) and has a concurrency model.  On the downside, it looks like the IPC semantics are "simpler" yet more complex than Erlang's.  In Erlang the only thing you can really do is send a message, and receive a message, Stackless has a whole queue model that involves threads blocking and the like.  I don't know enough yet, but I suspect the basis of Stackless's concurrency model is in those blocking queues - each block is a hint that it's time to switch tasks.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Anyone have any advice or thoughts re: Stackless?  I know Erlang well (it's pretty simple, so not hard), but I'd like more information on the pros and cons of Stackless.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5131767549169042705?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5131767549169042705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5131767549169042705' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5131767549169042705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5131767549169042705'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/stackless-python-vs-erlang.html' title='Stackless Python vs Erlang'/><author><name>Ryan</name><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-5280271148370184481.post-827637411082151709</id><published>2007-02-16T11:42:00.000-08:00</published><updated>2007-02-16T13:19:19.463-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Erlang</title><content type='html'>&lt;p&gt;&lt;br /&gt;I am fairly well known at Amazon for being a proponent of Erlang.  However recently I have decided that Erlang and I need to take a break.  People keep on asking me if I am planning on using Erlang in the future, or if I'm going to introduce it to my new team.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The answer is going to have to be a no unfortunately.  While I like Erlang, the problem is one of string performance.  The bottom line is in web applications and systems that deal with the web, strings are a first class concept and object.  Not being able to efficiently deal with them is pretty much a dealbreaker.  Most people seem to get around this limitation by translating most important strings into atoms, and then treating the rest of strings as binaries and doing pass-through.  This approach is not suitable for all applications sadly.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I am interested in the following technologies and systems right now:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.digitalmars.com/d/"&gt;Programming Language D&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.stackless.com/"&gt;Stackless Python (aka: Microthreads for Python)&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The interesting aspect of Stackless is they use blocking-queues as the IPC method of choice.  I really like the async message passing style of Erlang, but I suspect most people have a problem  thinking in and rationalizing about asynchronous messages.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I like D because it seeks to provide high level OO facilities with good performance.  Performance really is everything - we should not be thinking otherwise.  We need flexible highly performant systems, and it's possible that D can provide some of this.  I need to investigate more however.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-827637411082151709?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/827637411082151709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=827637411082151709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/827637411082151709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/827637411082151709'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/erlang.html' title='Erlang'/><author><name>Ryan</name><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-5280271148370184481.post-4453594824743817384</id><published>2007-02-15T02:04:00.000-08:00</published><updated>2007-07-02T22:19:54.321-07:00</updated><title type='text'>The Globe and Mail is slipping</title><content type='html'>&lt;p&gt;&lt;br /&gt;I used to hold the &lt;a href="http://theglobeandmail.ca/"&gt;Globe and Mail&lt;/a&gt; as an example of excellent journalism.  However, their recent front page article entitled &lt;a href="http://www.theglobeandmail.com/servlet/story/RTGAM.20070214.wblacklist14/BNStory/National/home"&gt;"U.S. group wants Canada blacklisted over piracy"&lt;/a&gt; by a certain Barrie McKenna really leaves me wanting more.  Like journalism for example.  You know, not repeating statements as fact and leaving stones unturned.  &lt;a href="http://www.michaelgeist.ca/content/view/1679/125/"&gt;Michael Geist wrote an excellent&lt;/a&gt; rebuttal to this article - in good time as well.  I also felt the need to write editorial feedback to The Globe and Mail.  I've posted it here, and sent them a link to this in addition to the text below.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hi all,&lt;br&gt;&lt;br /&gt;&lt;br /&gt;I have normally considered the Globe and Mail to be an excellent newspaper, however I'm starting to think that perhaps journalism does not rule the day.  Case in point, Barrie McKenna's article entitled "U.S. coalition wants Canada blacklisted as bootlegging hub".  This article is merely free advertising for the IIPA.  The article is pretty much entirely quotes from their press release, documents and legal council.  Their claims and statements are repeated as fact, despite that an knowledgeable journalist would know many of them are lies, and also know who to contact to obtain refutation.  This is not journalism - this is business news wire and not worthy of the front page. Please reassign Barrie ASAP to a different coverage topic - it is clearly beyond his ability or desire. &lt;br /&gt;&lt;br /&gt;I would like a response indicating either:&lt;br /&gt;a) That you have done so&lt;br /&gt;or&lt;br /&gt;b) Why this article is an example of fine journalism and should be upheld as a stellar example of research, perhaps even one that could be used in journalism schools.  To put anything but quality on your front page would be a travesty to the good name the Globe and Mail has (had?).&lt;br /&gt;&lt;br /&gt;Thank you,&lt;br /&gt;-ryan &lt;br /&gt;&lt;br /&gt;PS: I have posted this online as well at: &amp;lt;this url&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4453594824743817384?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4453594824743817384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4453594824743817384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4453594824743817384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4453594824743817384'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/globe-and-mail-is-slipping.html' title='The Globe and Mail is slipping'/><author><name>Ryan</name><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-5280271148370184481.post-896961569874143689</id><published>2007-02-13T22:10:00.000-08:00</published><updated>2007-02-13T22:18:22.124-08:00</updated><title type='text'>Java vs C++</title><content type='html'>&lt;p&gt;&lt;br /&gt;Despite what &lt;a href="http://steve-yegge.blogspot.com/"&gt;some people say&lt;/a&gt; about C++, I still like it better than Java.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Using Java is like being at day care.  You are well taken care of, everything is soft and nicely rounded.  Things seem a bit bigger and blockier than they need to be - but hey, it's for those kids who have poor manual dexterity.  We want them to feel good too.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Using C++ however, feels like being in a pro-machine shop.  Things are big and bulky when they need to be (or due to lazyness), or they can be as lean and mean as you'd like.  It's slightly dangerous there, so it's definitely for those who know what they are doing, but small price for getting exactly what you want.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;One that that kind of irks me is most of the Java code I see never seems to be DOING anything.  All it does is calculate a field and call some other class.  Nothing ever seems to get DONE.  It's all so abstract - you literally have to chase dozens of stack frames to get to anything so primitive as printing or the like.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;While Java sucks the memory like no one else's business, so can Python.  Yet I feel more efficient in that language - maybe it's the lexical efficiency I'm mistaking for run-time efficiency.  Or perhaps I'm tired of watching 1 GB RSS java binaries suck up 100% cpu while doing apparently nothing.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-896961569874143689?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/896961569874143689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=896961569874143689' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/896961569874143689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/896961569874143689'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/java-vs-c.html' title='Java vs C++'/><author><name>Ryan</name><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-5280271148370184481.post-1926360968026823745</id><published>2007-02-13T00:00:00.000-08:00</published><updated>2007-07-02T22:20:09.687-07:00</updated><title type='text'>Tibet is now China</title><content type='html'>&lt;p&gt;&lt;br /&gt;The interesting thing about China doing all our manufacturing for us, is in some way, China gets to control and censor manufactured goods.  Luckily we don't publish books there, but they do print... shower curtains.  And sometimes those shower curtains have maps of the world:&lt;br /&gt;&lt;br /&gt;&lt;div style="width:500px;text-align:right;"&gt;&lt;a href="http://beta.zooomr.com/photos/ryanobjc/730049/" title="Zooomr Photo Sharing :: Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/730049_ce1052f531.jpg" width="500" height="332" alt="TibetIsChina 1" border="0" style="border:1px solid #000;" /&gt;&lt;/a&gt;&lt;span style="float:left;"&gt;TibetIsChina 1&lt;/span&gt; Hosted on &lt;strong&gt;Zooom&lt;span style="color:#9EAE15;"&gt;r&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Notice anything interesting there?  Like, perhaps, that Tibet is now a region/province of China?&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;div style="width:500px;text-align:right;"&gt;&lt;a href="http://beta.zooomr.com/photos/ryanobjc/730048/" title="Zooomr Photo Sharing :: Photo Sharing"&gt;&lt;img src="http://static.zooomr.com/images/730048_985d3176e1.jpg" width="500" height="332" alt="TibetIsChina 2" border="0" style="border:1px solid #000;" /&gt;&lt;/a&gt;&lt;span style="float:left;"&gt;TibetIsChina 2&lt;/span&gt; Hosted on &lt;strong&gt;Zooom&lt;span style="color:#9EAE15;"&gt;r&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I purchased this shower curtain from Target.  I assumed until now that it was made in China, and inspection of the tag indicates this is true.  All you Free Tibet-ers, you now have another corporation to rage against (not to mention "The Machine").&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1926360968026823745?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1926360968026823745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1926360968026823745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1926360968026823745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1926360968026823745'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/tibet-is-now-china.html' title='Tibet is now China'/><author><name>Ryan</name><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-5280271148370184481.post-7986302394109732436</id><published>2007-02-12T22:20:00.000-08:00</published><updated>2007-02-12T22:32:12.564-08:00</updated><title type='text'>Vancouver and the NDS</title><content type='html'>&lt;p&gt;&lt;br /&gt;If you haven't read jPod, you must read it immediately.  It's by Douglas Coupland and it takes place in Vancouver, BC.  While in theory the book is fiction, it could have been a non-fiction documentary.  The book, while probably fiction, it nevertheless could and probably does happen daily in Vancouver.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Case in point, on Saturday I was chilling with my friends who live near &lt;a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;q=metrotown+mall&amp;sll=49.095452,-123.00293&amp;sspn=9.080441,24.082031&amp;ie=UTF8&amp;z=16&amp;ll=49.226202,-122.995999&amp;spn=0.008842,0.023518&amp;t=h&amp;om=1"&gt;Metrotown.&lt;/a&gt;  From the air/orbit it doesn't look like much, but I assure you, it is a huge mall.  Combined with its ultra-convenient location on the Skytrain, makes for a huge destination.  My friend, who recently quit game design school (boring!) for 300' high rise window work (cool!) mentioned I should get a Nintendo DS - henceforth just 'DS' or 'NDS'.  He also said we can walk over to the Crystal mall and grab a pass-me like device.  The newest generation is a 1-cart solution based on slot-1.  It allows you to boot homebrew NDS games/apps from a Ultra-SD card - TINY!  It patches the rom image on the fly so you merely have to drag and drop your image, and bam, the thing is ready to go.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Now it is time to investigate NDS homebrew.  I've already installed the cross compiler toolset with libraries, now all I need is time, inspiration and coding.  Some of the demo apps are pretty neato - wardriving on your DS!  Or a FTP server via Wifi for upload of new files.  With a different solution, a DS Linux is possible, with a browser and the like.  But without a slot-2 card to provide extra ram, it wont really be super workable.  I doubt I'll play with this - without a MMU it's pretty limited.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Finally, tomorrow is &lt;a href="http://igniteseattle.com/"&gt;Ignite Seattle&lt;/a&gt;.  Still deciding if I should go or not.  Last time it was a mite crowded but this time I have my NDS.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7986302394109732436?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7986302394109732436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7986302394109732436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7986302394109732436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7986302394109732436'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/vancouver-and-nds.html' title='Vancouver and the NDS'/><author><name>Ryan</name><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-5280271148370184481.post-8713110257562172926</id><published>2007-02-04T03:33:00.000-08:00</published><updated>2007-02-04T03:53:34.186-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zooomr'/><title type='text'>Blog Bad Mouthing Zooomr for Tech Support</title><content type='html'>&lt;p&gt;&lt;br /&gt;So I've been trying to get this new photo site &lt;a href="http://www.zooomr.com/"&gt;Zooomr&lt;/a&gt; to work. Note the 3 Os - zoomr.com doesn't get you where you want to go - domain squatters be damnned!  It's one of the flickr alternatives.  I especially like the geotagging feature - nifty, plus it uses Google maps which rules.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;However, like Flickr, it displays photo in UPLOAD order.  Of course, upload order is not what I want, and I cannot (unlike flickr) edit the upload date.  Additionally, &lt;a href="http://beta.zooomr.com/photos/ryanobjc"&gt;my exif data&lt;/a&gt; is not being pulled down and displayed.  That sucks!  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Now, comes the bad mouthing part.  Finding support - impossible!  There is no support/contact us option, there is no forums, nothing!  They have an &lt;a href="http://blog.zooomr.com/"&gt;official zooomr blog&lt;/a&gt;.  Additionally I emailed the "else" contact on the &lt;a href="http://bbridgetech.com/"&gt;parent company's website&lt;/a&gt;.  Emails to support@zooomr.com result in bounces with a server-side python script error.  Ooopsy.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;So, I figure the best way to get attention is to do a blog posting, which will end up in Technorati and ideally should feed back to the devs.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In the mean time, my project 365 photos are not fully uploaded or organized.  Unfortunately you can't really see them in the right order.  Hopefully I'll come up with a solution soon.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8713110257562172926?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8713110257562172926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8713110257562172926' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8713110257562172926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8713110257562172926'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/02/bad-mouthing-zooomr.html' title='Blog Bad Mouthing Zooomr for Tech Support'/><author><name>Ryan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-6943595834883489678</id><published>2007-01-31T23:10:00.000-08:00</published><updated>2007-01-31T23:28:45.814-08:00</updated><title type='text'>Boston</title><content type='html'>&lt;p&gt;&lt;br /&gt;I'm sure practically everyone has heard about the "bomb scare" in Boston that was really just some LED sign boards.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Boston needs to wake up and realize the over-reaction and subsequent press conferences using the term "hoax" and "post-911 world" really don't make them look any less foolish.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;First off, it's not a hoax - it's a guerilla marketing plan gone awry.  A hoax implies that these devices were intended to be mistaken for bombs - which is clearly not the case.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Secondly, can we retire the term 'post-911 world', PLEASE?  I'm just tired of this poor excuse covering people with an overactive imagination, and a lack of common sense and knowledge.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I've seen the devices - it should have been apparent that there was no structural threat from these, even if it was 100% explosive.  As you may not know, explosive placed on a steel or concrete will just 'blow off' - leaving only surface damage or less. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There is a &lt;a href="http://www.flickr.com/photos/vanderlin/tags/aquateenhungerforce/"&gt;flickr photostream&lt;/a&gt; of one of the ads.  The device is a black board, covered with LEDs, exposed electronic components - ie: resistors, capacitors, etc, and a line of C/D batteries along the bottom.  No way there could have ever been enough explosive to threaten entire buildings and bridges and the like.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Finally, the "we arrested someone, hooray!" just seems like a face-saving strategy.  I hope they realize the rest of the world sees this for what it is and just stop it.  I assume the guy's legal defense will be covered by the agency who hired him, if not, the ACLU should step in.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6943595834883489678?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6943595834883489678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6943595834883489678' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6943595834883489678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6943595834883489678'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/boston.html' title='Boston'/><author><name>Ryan</name><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-5280271148370184481.post-7214648495437124592</id><published>2007-01-26T00:39:00.000-08:00</published><updated>2007-01-26T00:41:13.935-08:00</updated><title type='text'>Bulk Embedding Flickr in Blogspot</title><content type='html'>&lt;p&gt;&lt;br /&gt;Does anyone have a methodology to bulk embedding Flickr images in a blogspot posting?  I tried copying the snippet they give, but it ends up weird.  Also it's time intensive, since I have to visit the 'all sizes' page of EACH photo to copy the HTML snippet.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;All I really want is a system that grabs N photos in a row out of flickr, and gives me N nice little framed HTML snippets.  Then I paste into my entry, and we're done.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7214648495437124592?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7214648495437124592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7214648495437124592' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7214648495437124592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7214648495437124592'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/bulk-embedding-flickr-in-blogspot.html' title='Bulk Embedding Flickr in Blogspot'/><author><name>Ryan</name><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-5280271148370184481.post-1592684979183144261</id><published>2007-01-25T17:35:00.000-08:00</published><updated>2007-01-26T00:37:53.833-08:00</updated><title type='text'>Testing on the toilet</title><content type='html'>&lt;p&gt;&lt;br /&gt;Thanks to slashdot, I noticed that our internal newsletter "Testing on the Toilet" &lt;a href="http://googletesting.blogspot.com/2007/01/introducing-testing-on-toilet.html"&gt;is now public.&lt;/a&gt;   I personally think the sheet is great - generally always something to read in the toilet. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;But what is even funnier, is the &lt;a href="http://developers.slashdot.org/article.pl?sid=07/01/25/2325223"&gt;comments in the slashdot article.&lt;/a&gt; The wild speculation, the huge leaps of faith, the analogies are just bizzare, and hilarious! &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;My view on TotT:  A fun way to twinge people's thoughts about testing.  Clearly a single 8.5x11 sheet is not going to deliver the final word on anything, but it will remind you of various techniques and why certain stylistic constructs are bad, and not just for style reasons. &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Also, that my workplace is subject to millions upon millions of nerds fantasies, fears, dreams and hopes is always kind of neato.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1592684979183144261?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1592684979183144261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1592684979183144261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1592684979183144261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1592684979183144261'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/testing-on-toilet.html' title='Testing on the toilet'/><author><name>Ryan</name><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-5280271148370184481.post-1288381543353443941</id><published>2007-01-25T17:24:00.000-08:00</published><updated>2007-01-25T17:34:22.668-08:00</updated><title type='text'>The Challenges of P365</title><content type='html'>I must say, &lt;a href="http://ryan-in-seattle.blogspot.com/2007/01/project-365.html"&gt;Project 365&lt;/a&gt; has turned out to be a bit challenging this last week.  The problem is remembering to snap a picture during the daylight hours.  Driving to work does not help this much at all.  While driving to work you generally have 0 downtime - if you're not driving, you're probably either still at home or just arrived at work.  At least if you are taking the bus, you probably have to wait a few minutes for a transfer.  This slight downtime is where I've gotten a few of my pictures from - specifically the bag lady.&lt;br /&gt;&lt;br /&gt;Luckily my camera is very capable, the ISO 1600 mode offers a low amount of noise.  Combined with the image stabilization of my new lens, the next batch of photos contains some fascinating low-light and night time pictures.  Of course I've been lazy posting them, so I'm behind some.  With an up and coming trip to Las Vegas starting tomorrow, you might just have to wait until next week to get it all.&lt;br /&gt;&lt;br /&gt;Some tips for would-be Project 365-ers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Your Camera goes everywhere.  No exceptions.  If you have a 8oz Point and Shoot - consider yourself lucky.  My camera bag weighs at least 10 pounds.&lt;/li&gt;&lt;li&gt;Thematic - I have been trying to take things that support the theme of the day/week/month.  One of my shots is a wilting poinsettia left over from the holidays.&lt;/li&gt;&lt;li&gt;Experiments - use this as your chance to mess with light and your camera's abilities.  Switch to manual mode, turn off the flash, etc.  Absolutely none of my Project 365 photos are done with a flash - I don't even own one!&lt;/li&gt;&lt;li&gt;Photos don't just mean camera - One of my up-coming pictures is a screenshot from WOW.  Since I played all day long, I figured the theme of the day was WOW, and hence a screenshot would be appropriate.  Hey, it's my project!&lt;/li&gt;&lt;li&gt;Peer pressure - make sure you're not off the hook.  Get your friends, SOs, family to pressure you.  There ideally should be an expectation that the next week will bring something awesome.  You must post your photos on a blog.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Just do it" - this is my anti-tip.  This slogan rings hollow to me (for a variety of reasons), since motivation is more than 3 words.  It doesn't offer any actual mechanical advice on HOW to get it done.  I only include it here to rail against it.&lt;/li&gt;&lt;/ul&gt;I am still taking pictures every day - I have not missed a single day so far.  Good luck to those also in process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1288381543353443941?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1288381543353443941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1288381543353443941' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1288381543353443941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1288381543353443941'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/challenges-of-p365.html' title='The Challenges of P365'/><author><name>Ryan</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-215229879848361200</id><published>2007-01-15T22:43:00.003-08:00</published><updated>2007-01-15T22:47:12.488-08:00</updated><title type='text'>Jan 15th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/359185242/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/156/359185242_1e1426fd28.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359185242/"&gt;Project365  016&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; Waiting for a light at 5th and Denny in Seattle. A busy intersection, I'm sure there were many people looking at him. Now's the time to get your 15 minutes of fame.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-215229879848361200?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/215229879848361200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=215229879848361200' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/215229879848361200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/215229879848361200'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/jan-16th.html' title='Jan 15th'/><author><name>Ryan</name><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/156/359185242_1e1426fd28_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-4110369256984882445</id><published>2007-01-15T22:42:00.003-08:00</published><updated>2007-01-15T22:52:08.573-08:00</updated><title type='text'>Jan 14th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/359184379/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/151/359184379_2e23f789f7.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359184379/"&gt;Project365  014&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; Indie enjoys the snow, running around like a crazy dog (which he is). This is Carnation, WA which exhibits much more snow (more than half has melted at this photo) than Seattle.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4110369256984882445?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4110369256984882445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4110369256984882445' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4110369256984882445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4110369256984882445'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/jan-14th.html' title='Jan 14th'/><author><name>Ryan</name><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/151/359184379_2e23f789f7_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-683596712751380264</id><published>2007-01-15T22:42:00.001-08:00</published><updated>2007-01-15T22:46:03.159-08:00</updated><title type='text'>Jan 13th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/359184377/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/152/359184377_cef03b2303.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359184377/"&gt;Project365  013&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; The result of 4 days of below freezing weather, precipitation and some sunny days. Normally snow lasts a maximum of 2 days. It's been unusually cold (global warming makes for unpredictable weather changes).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-683596712751380264?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/683596712751380264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=683596712751380264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/683596712751380264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/683596712751380264'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/project365-013_15.html' title='Jan 13th'/><author><name>Ryan</name><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/152/359184377_cef03b2303_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-3418319786018630542</id><published>2007-01-15T22:41:00.003-08:00</published><updated>2007-01-15T22:41:47.119-08:00</updated><title type='text'>Jan 12th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ryanobjc/359184372/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/128/359184372_6970f49867.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359184372/"&gt;Project365  012&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	At a party, Facinating!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3418319786018630542?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3418319786018630542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3418319786018630542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3418319786018630542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3418319786018630542'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/jan-12th.html' title='Jan 12th'/><author><name>Ryan</name><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/128/359184372_6970f49867_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-3822162897140675587</id><published>2007-01-15T22:41:00.001-08:00</published><updated>2007-01-15T22:45:47.232-08:00</updated><title type='text'>Jan 11th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/359184369/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/143/359184369_c7a0bc92e6.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359184369/"&gt;Project365  011&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; On this icy and snowy day I braved the streets and bussed to work. This was to receive the UPS package that contained my new lens! This is the manual of the lens, using the 'macro' mode - the front element of the lens was ~ 45cm from the manual. I hope this new lens will give me much more versatility (great zoom range, awesome image stabilizer), as well as reducing the amount of dust in my camera. This was my Christmas and Birthday present to myself.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3822162897140675587?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3822162897140675587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3822162897140675587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3822162897140675587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3822162897140675587'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/project365-011_15.html' title='Jan 11th'/><author><name>Ryan</name><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/143/359184369_c7a0bc92e6_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-7073933299784197169</id><published>2007-01-15T22:40:00.001-08:00</published><updated>2007-01-15T22:40:48.784-08:00</updated><title type='text'>Jan 10th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/ryanobjc/359184366/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/166/359184366_7520ddc5c0.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359184366/"&gt;Project365  010&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	A bag lady - literally!  These are plastic bags covering a motionless human shaped figure.  Luckily the next day, I saw the same, but with a sleeping bag, and I finally saw her awake.  So just an unusual way to sleep.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7073933299784197169?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7073933299784197169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7073933299784197169' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7073933299784197169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7073933299784197169'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/jan-10th.html' title='Jan 10th'/><author><name>Ryan</name><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/166/359184366_7520ddc5c0_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-4469618500836051365</id><published>2007-01-15T22:38:00.001-08:00</published><updated>2007-01-15T22:50:01.314-08:00</updated><title type='text'>Jan 9th</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/ryanobjc/359184365/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/164/359184365_001edfda84.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/359184365/"&gt;Project365  009&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/ryanobjc/"&gt;ryanobjc&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; On the great snow storm day, between storms was a band of clear sky, with sun, and here it is. At this point it was still only windy and rainy, the temp was set to fall later that evening (and that it did!).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4469618500836051365?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4469618500836051365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4469618500836051365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4469618500836051365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4469618500836051365'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/jan-9th.html' title='Jan 9th'/><author><name>Ryan</name><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/164/359184365_001edfda84_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-4485213962669865913</id><published>2007-01-11T02:11:00.000-08:00</published><updated>2007-07-02T22:20:25.815-07:00</updated><title type='text'>Level 60</title><content type='html'>&lt;p&gt;&lt;br /&gt;I finally reached level 60 in WOW on my primary character.  It's been a long time coming - mostly because I haven't been able to play much in December.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Here is a screenshot of the moment I leveled up:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/353684037/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/149/353684037_a7577f80c4.jpg" width="500" height="313" alt="ScreenShot_011107_020449" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-4485213962669865913?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/4485213962669865913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=4485213962669865913' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4485213962669865913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/4485213962669865913'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/level-60.html' title='Level 60'/><author><name>Ryan</name><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/149/353684037_a7577f80c4_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-8597365122999722263</id><published>2007-01-09T00:22:00.000-08:00</published><updated>2007-01-09T22:00:03.440-08:00</updated><title type='text'>Project 365</title><content type='html'>&lt;p&gt;&lt;br /&gt;I saw &lt;a href="http://www.photojojo.com/content/tutorials/project-365-take-a-photo-a-day/"&gt;Project 365 recently&lt;/a&gt; - great idea - take a photo a day and post them.  So I have been snapping at least one photo a day since Jan 1st.  Some of the photos passed the midnight boundary, but since my day is realistically 9am - 2am, it still counts.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;So without adieu, here is my first week:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- jan 1 --&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352346078/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/135/352346078_dedae74765.jpg" width="500" height="333" alt="Project365  001" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- jan 2 --&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352342254/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/161/352342254_66562c7ee2.jpg" width="500" height="333" alt="Project365  002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- jan 3 --&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352342260/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/132/352342260_4e7c1db223.jpg" width="500" height="333" alt="Project365  003" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- jan 4 --&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352342267/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/140/352342267_8b50976969.jpg" width="500" height="333" alt="Project365  004" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- jan 5 --&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352342269/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/161/352342269_fad8dba4bb.jpg" width="500" height="333" alt="Project365  005" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352342272/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/165/352342272_1df982b84b.jpg" width="333" height="500" alt="Project365  006" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352343146/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/151/352343146_235afb26c6.jpg" width="500" height="333" alt="Project365  007" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;And a special 8th one:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/352343154/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/134/352343154_58ad8fdfd7.jpg" width="500" height="333" alt="Project365  008" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8597365122999722263?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8597365122999722263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8597365122999722263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8597365122999722263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8597365122999722263'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2007/01/project-365.html' title='Project 365'/><author><name>Ryan</name><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/135/352346078_dedae74765_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-860786084414745310</id><published>2006-12-30T18:35:00.000-08:00</published><updated>2006-12-30T18:40:27.374-08:00</updated><title type='text'>Blackjack Basic Strategy</title><content type='html'>&lt;p&gt;&lt;br /&gt;Since I am turning a certain age next month, I decided going to Vegas for my birthday would be awesome.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The goal is to have fun and perhaps make some bucks.  To that end, I'm learning blackjack basic strategy.  I should also study up craps strategy, since it seems that with a little luck you can make out fairly well in craps.  The only thing to avoid are the sucker bets - which abound.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Luckily I have a full set of poker chips, a number of decks of cards, and a girlfriend to practice with.  Also internet blackjack too.  &lt;a href="http://www.blackjackinfo.com/bjbse.php"&gt;Strategy charts,&lt;/a&gt; and &lt;a href="http://pokerroom.com/"&gt;pokerroom.com&lt;/a&gt;, I think I should be ok.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-860786084414745310?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/860786084414745310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=860786084414745310' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/860786084414745310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/860786084414745310'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/blackjack-basic-strategy.html' title='Blackjack Basic Strategy'/><author><name>Ryan</name><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-5280271148370184481.post-3413153376210468141</id><published>2006-12-19T16:53:00.000-08:00</published><updated>2006-12-19T16:54:57.171-08:00</updated><title type='text'>Fair use... doesn't care?</title><content type='html'>I &lt;a href="http://ryan-in-seattle.blogspot.com/2006/10/fair-use-not-applicable.html"&gt;posted previously&lt;/a&gt; about some website indicating that fair use was somehow not applicable.  I also promised to post any reply email.  Well just to set the record straight, they (of course) did not reply.  Big surprise.  I guess they were crushed under the overwhelming might of angry boing-boing readers everywhere.  Or maybe they tuned their spam filters to be "dissent filters".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-3413153376210468141?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/3413153376210468141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=3413153376210468141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3413153376210468141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/3413153376210468141'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/fair-use-doesnt-care.html' title='Fair use... doesn&apos;t care?'/><author><name>Ryan</name><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-5280271148370184481.post-7660675361568199942</id><published>2006-12-16T23:54:00.000-08:00</published><updated>2006-12-17T00:12:21.714-08:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;br /&gt;As you may have no doubt heard by now, due to a massive storm which dumped tons of rain, and about a million-a-mile hours winds, practically half of Seattle and area is out of power.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Since the nature of the power outage is winds blowing trees and poles over, the pattern of outage is semi-random.  The core areas are all fine, downtown, nearby neighbourhoods, like Queen Anne (mine) are just fine.  There were some streets nearby me that were without power, but I myself did not lose power at home.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Although work did not fare as well.  On Thursday around 3pm our security folk emailed us to come pick up our emergency flashlights.  I guess a few months ago they discovered that the batteries in the "emergency lights" were dead, and the whole building had to escape in the pitch black stairs.  So this time, we had flashlights.  First power outage hit around 4-4:30 while I was in the bathroom.  Nothing like a pitch black bathroom - the power came back less than a minute so my next stop was to pick up a safety flashlight.  It never left my side for the next 4 hours.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I figured it was time to leave work when they shut down all the servers, I couldn't get any work done, and also the storm "drain" was more like a storm "undrain" and actually spewing water out in a small 1 foot fountain.  When cars were driving through 6" of water I knew it was time to leave.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Lucky I took the bus, and caught the first Seattle bound bus, figuring being on the right side of the 520 bridge was the most important consideration.  Especially since there is a wind limit and they close that bridge (and they did close it for about 14 hours).  So I looped via the University District, then downtown.  Including a quick stop at Metropolitan Market for the snack-on, it took about 3 hours to get home.  I had to walk the last half mile, that bus just wasn't coming.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Considering that over 1 million people are without power, I am lucky.  Also double lucky - no work, no possibility of doing remote work either.  It really sucks for those farther out - in some of the nooks and crannies it could take up to a week or two (or three!) to get power back.  Mostly this is because crews have to find every little fallen pole and set it right again.  For power outages to just a few homes due to a fallen pole, they are in for a long cold wait.  Good luck to all.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7660675361568199942?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7660675361568199942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7660675361568199942' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7660675361568199942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7660675361568199942'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/as-you-may-have-no-doubt-heard-by-now.html' title=''/><author><name>Ryan</name><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-5280271148370184481.post-1730442779204848883</id><published>2006-12-08T13:59:00.000-08:00</published><updated>2006-12-08T14:06:16.735-08:00</updated><title type='text'>Google Analytics</title><content type='html'>&lt;p&gt;&lt;br /&gt;I gotta say I love Google Analytics.  Easy graphs, minimal setup, great conversion data.  For example, in the marketing summary, here is the top 5 keywords that got the visitors to my blog:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;"zipfizz liquid shot" - 3 visits this week&lt;br /&gt;&lt;li&gt;"wow item" - 3 visits this week&lt;br /&gt;&lt;li&gt;"when will wow be back up" - 3 visits this week&lt;br /&gt;&lt;li&gt;"wow items" - 2 visits this week&lt;br /&gt;&lt;li&gt;"ears hurt" - 1 visit this week&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Those are for the week 12/1 - 12/7.  Now, a few referrals from Google in a week for one search isn't exactly a powerhouse of website - I'm no, uh, Google.  But this blog dates to September only.  And note, that if you search for "ears hurt" I'm #8 on the total results.  I'm not sure that &lt;a href="http://ryan-in-seattle.blogspot.com/2006/10/my-ears-hurt.html"&gt;the entry referenced&lt;/a&gt; is a good place to go if you are worried that your ears hurt.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I attribute my high ranking due to the fact I am linked from &lt;a href="http://www.geekculture.com/joyoftech/"&gt;The Joy of Tech&lt;/a&gt;, specifically the &lt;a href="http://www.geekculture.com/joyoftech/joyarchives/883.html"&gt;Jobs-O-Lantern cartoon.&lt;/a&gt;  I'm tickled pink even if my blog is not the most relevent result for "ears hurt".&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1730442779204848883?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1730442779204848883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1730442779204848883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1730442779204848883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1730442779204848883'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/google-analytics.html' title='Google Analytics'/><author><name>Ryan</name><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-5280271148370184481.post-8554768931645481390</id><published>2006-12-07T22:11:00.000-08:00</published><updated>2006-12-07T22:27:18.628-08:00</updated><title type='text'>Ignite Seattle</title><content type='html'>&lt;p&gt;&lt;br /&gt;I'm at &lt;a href="http://www.igniteseattle.com/"&gt;Ignite Seattle&lt;/a&gt;, and I just saw a speaker talk about innovation.  I disliked it so much I just had to complain about it online while at the actual event.  The guy is &lt;a href="http://scottberkun.com/"&gt;Scott Berkun&lt;/a&gt; who talked about the myths of innovation.  Unfortunately for me, I didn't agree with his assumptions.  He started by saying we think of ideas as seeds that stand alone.  He then went on to talk about the myth of Newton's Apple, talked about Edison, and so on.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Unfortunately for me, the content of his 5 minute speak was overshadowed by a sense of "yes yes, I know that" and another sense of "why is he dumbing this down so much?"&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Know your audience.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-8554768931645481390?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/8554768931645481390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=8554768931645481390' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8554768931645481390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/8554768931645481390'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/ignite-seattle.html' title='Ignite Seattle'/><author><name>Ryan</name><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-5280271148370184481.post-2165004142669412079</id><published>2006-12-07T16:59:00.000-08:00</published><updated>2006-12-07T17:05:41.113-08:00</updated><title type='text'>Java?</title><content type='html'>&lt;p&gt;&lt;br /&gt;I'm doing some Java coding.  One of the things I find most weird about most Java programs is how much cruft there is - not in old weird programs, but in well maintained, TDD produced, Agile-approved code.  I think the language encourages you to create lots of objects that no well defined purpose in life.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;What do I mean by well defined purpose? Here are some warning signs your class is pointless:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Your interface has no methods whatsoever.&lt;br /&gt;&lt;li&gt;Your methods just call super versions of themselves.&lt;br /&gt;&lt;li&gt;Your methods don't really seem to actually _do_ much.&lt;br /&gt;&lt;li&gt;You seem to only exist to store data to return from another method.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;And the list could go on.  All of these are artifacts of the fact that in Java, everything, but everything, must be an Object.  But, not everything actually &lt;i&gt;is&lt;/i&gt; an object.  So the problem is you have objects where you may not actually need or want objects.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If you want more, try reading &lt;a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html"&gt;Execution in the Kingdom of Nouns&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-2165004142669412079?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/2165004142669412079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=2165004142669412079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2165004142669412079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2165004142669412079'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/java.html' title='Java?'/><author><name>Ryan</name><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-5280271148370184481.post-5064289696914133756</id><published>2006-12-07T16:03:00.000-08:00</published><updated>2006-12-07T16:09:36.261-08:00</updated><title type='text'>What has me excited</title><content type='html'>&lt;p&gt;&lt;br /&gt;I'm fairly excited about the new WOW content patch.  483 MB was a pain to download, but I did it at work, so no biggie.  Bliz adjusted a bunch of things, added a new LFG interface, changed the PVP ranking system (no more brutal PVP grind) and also refunded all talent points.  This last bit is exciting because I've been wanting to respec my level 56 rogue, but I wasn't sure I wanted to pay the 10g or so it would cost.  But now I don't have to!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;So maybe if you don't play WOW you wouldn't be as excited as me.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I'm also attending &lt;a href="http://www.igniteseattle.com/"&gt;Ignite Seattle&lt;/a&gt; a mostly Make oriented Seattle geek night.  Also Amazon Web Services will be there in force.  I'm not sure how I feel about that - after my experience at Amazon I know I wouldn't trust any AWS service.  The big question is, should I actively promote my view to other attendees?&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5064289696914133756?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5064289696914133756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5064289696914133756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5064289696914133756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5064289696914133756'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/what-has-me-excited.html' title='What has me excited'/><author><name>Ryan</name><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-5280271148370184481.post-5347194451930809680</id><published>2006-12-06T15:23:00.000-08:00</published><updated>2006-12-06T15:38:37.158-08:00</updated><title type='text'>Apple</title><content type='html'>&lt;p&gt;&lt;br /&gt;Today I went to lunch at Caffe Macs at building #3, 1 Infinite Loop, Cupertino.  You might recognize this as the Apple corporate HQ.  I wanted to have lunch with a old school buddy, but he is too busy and could not come to Google for lunch.  So I went to Apple instead.  The cafe is very nice, and since it was a nice day today, outside eating was great.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;While at Apple I had a visit to the &lt;a href="http://www.apple.com/companystore/"&gt;Apple Company Store.&lt;/a&gt;  The store is great, awesome Apple schwag.  Actually having to pay to be a walking billboard for Apple is a privilege, one bestowed only to those who make the trip out to Cupertino.  And I did make the trip, I did pay, and I am now wearing a t-shirt that says:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Cupertino.&lt;br /&gt;859 miles and 180o from Redmond.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Hopefully I'll make a bunch of people angry back in Seattle.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Finally, I am on Google campus yesterday and today.  Here are some things you might see if you were here too:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;People playing beach volleyball in December.&lt;br /&gt;&lt;li&gt;Giant real life sized metal skeleton of T-Rex.&lt;br /&gt;&lt;li&gt;SpaceShipOne replica hung over a starway.&lt;br /&gt;&lt;li&gt;Excessive sunnyness.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;And much more of course.  It is nice to have somewhere to visit, somewhere to stay (I could sleep somewhere on campus pretty easily), somewhere to eat when I visit the valley.  And to top it off, since I'm here actually doing work, I don't have to pay my own flight down.  Overall it's pretty much awesome.  It's nice to realize things are awesome while actually doing it.  So much we realize later how good something was.  Live in the moment, and all that Zen stuff!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5347194451930809680?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5347194451930809680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5347194451930809680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5347194451930809680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5347194451930809680'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/apple.html' title='Apple'/><author><name>Ryan</name><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-5280271148370184481.post-1083770017107831506</id><published>2006-12-04T21:50:00.000-08:00</published><updated>2006-12-04T22:31:05.930-08:00</updated><title type='text'>iPhone</title><content type='html'>&lt;p&gt;&lt;br /&gt;The latest &lt;a href="http://www.macrumors.com/pages/2006/12/20061203094854.shtml"&gt;rumours of the iPhone&lt;/a&gt; have me psyched.  The rumour says that the iPhone (or whatever it will be actually called) will be ultra-full featured and not locked to any network.  This is great for several reasons.  None of these are my original thought, but you'll have to deal with my non-attribution.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Networks currently control which phones are sold.  Since most people get their new phones on contract ups, what the networks decide to sell is what is sold.  Meaning the choice is fairly small.  The situation is so dire, an &lt;a href="http://www.helio.com/"&gt;entire network&lt;/a&gt; (MNVO) was created to meet the demand of korean uber-advanced phones.  Hopefully we can get people used to the idea of purchasing phones as a high tech gadget investment (like an iPod), rather than as an item to settle on the best for the least.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;The other major problem is the limited UI some carriers are well know of crippling.  Add this to rather uninspired design, both on the software front, and the hardware front, and you end up with a whole lineup of weak phones.  I enjoy &lt;a href="http://www.motorola.com/motoinfo/product/details.jsp?globalObjectId=87"&gt;my phone&lt;/a&gt; quite a bit, however it doesn't run Google Maps well.  I keep on having to approve network access, and the phone heats up and battery life is reduced.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Of course, no well designed product is the fusion of 2 corporate communication and marketing teams in conference rooms in New York and San Jose.  That is just recipe for disaster.  And that is exactly how many cell phones are pushed to market.  Eg: All Verizon phones have OBEX Bluetooth disabled - meaning you cannot download images via bluetooth.  My PEBL is from T-Mobile so I can download images via bluetooth.  Why does it matter which network you're on?  Consumers are just lucky that number portability was created.  Or unlucky, since most cell companies are making serious bank from the fees they are allowed to charge.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Luckily this is a blog, so my accusations can go unsubstantiated.  But I'm pretty sure I read about those things.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1083770017107831506?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1083770017107831506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1083770017107831506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1083770017107831506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1083770017107831506'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/iphone.html' title='iPhone'/><author><name>Ryan</name><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-5280271148370184481.post-1187370202290194118</id><published>2006-12-04T16:50:00.000-08:00</published><updated>2006-12-04T17:50:28.807-08:00</updated><title type='text'>Guitar Hero</title><content type='html'>&lt;p&gt;The absolute best thing about this game Guitar Hero, is it really convinces you can be a mega-rock star.  When you hit those awesome combos and really nail a hard sequence, you get a SERIOUS "I Rule" moment.  This ties back to the creating passionate users stuff - make your users rule.  The beautiful thing about Guitar Hero is all the positive feedback.  If you make it all the way through the game the screen says "You Rock!" and the fake newspaper headline shows your paper review - either 3,4 or 5 stars.  The headline ranges from "&lt;band name&gt; puts on solid set" to "&lt;band name&gt; amazes the croud".  So if you just squeak through, you still rock.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The other beautiful thing about this game is the great music.  I have started to just love some of the songs just because I played them many times.  I made a small mix cd of about 7 of them and listened to those songs for an 11 hour car drive.  You close your eyes and see the scrolling field of notes, and can make the finger motions.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I have heard that playing video games is not a skill - well clearly this is not true, since people can become better at it, I think what people are really saying is "I think it's a waste of time".  The value judgment has to come out as an absolute statement, but I think that is just a generational gap thing.  I remember a Nintendo DS game called &lt;a href="http://www.nintendo.com/gamemini?gameid=Y9QLGBWxkmRRzsQEQtvqGqZ63_CjS_9F"&gt;Brain Age&lt;/a&gt; which trains and stimulates your brain.  This might well be the first game targeted solidly towards baby boomers.  &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In the end, for some of us, video games are not just consumer items, they are pop culture items.  They are as essential and integrated with our self identities as the rolling stones were to those growing up through the 60s and 70s.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1187370202290194118?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1187370202290194118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1187370202290194118' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1187370202290194118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1187370202290194118'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/12/guitar-hero.html' title='Guitar Hero'/><author><name>Ryan</name><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-5280271148370184481.post-6410051222675443001</id><published>2006-11-30T18:18:00.000-08:00</published><updated>2006-11-30T18:25:49.495-08:00</updated><title type='text'>The Future and hope... from the past?</title><content type='html'>I was watching "The Top 100 One Hit Wonders" - a fantastic VH1 rockumentary.  I am a big fan of their special programs, they are educational (about music and pop history at least), fun, interesting, and generally have good clips to watch.&lt;br /&gt;&lt;br /&gt;Interestingly enough, at least half of the One Hit Wonders was from the 80s.  Perhaps the economics of the day just set things up naturally for one hit wonders.  Many of the one hits made it big because of MTV, so that is not a small part of it.  (Cue analysis of unfragmented pop culture consumer market of the 80s vs the fragmented pop culture market of the late 90s,00s).&lt;br /&gt;&lt;br /&gt;But I realized while watching that show, that I just love 80s music.  Not just the music, but the looks, the video clips - especially when set to music.  It just fills me with a weird sense of hope, wonder and excitement for the future.  Which seems weird since some of these clips are 20 years old.&lt;br /&gt;&lt;br /&gt;Of course, perhaps the bigger issue is that the vision of the future from the 80s is better than the current non-vision not being offered.  I would say that the national mood is one of deep pessimism, the midterm results might have offered a momentary lapse, but it will be momentary.&lt;br /&gt;&lt;br /&gt;In the mean time, I need a full set of the 3 "I Love the 80s" series VH1 did.  That is almost 20 hours of quality analysis from the likes of Weird Al and Lisa Lisa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-6410051222675443001?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/6410051222675443001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=6410051222675443001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6410051222675443001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/6410051222675443001'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/11/future-and-hope-from-past.html' title='The Future and hope... from the past?'/><author><name>Ryan</name><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-5280271148370184481.post-942208377618890159</id><published>2006-11-27T00:03:00.000-08:00</published><updated>2006-11-27T00:16:59.942-08:00</updated><title type='text'>Cheating on Hairstylists</title><content type='html'>&lt;p&gt;&lt;br /&gt;So I &lt;a href="http://ryan-in-seattle.blogspot.com/2006/09/friday-before.html"&gt;posted earlier about cheating on hairstylists.&lt;/a&gt;  I did have an oppertunity to revisit my hair stylists and admitted (tearfully I might add) to my wayward ways.  She seemed pretty cool about it, so luckily she still cuts my hair.  A month later I read in an advice column about someone who was &lt;a href="http://www.salon.com/mwt/col/tenn/2006/11/10/hairdresser_breakup/index.html"&gt;seriously worried about cheating on their hairdresser.&lt;/a&gt;  A choice quote:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;He as much as said that he wouldn't be able to take it if I were to leave him.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Now to remind you, we are talking about a woman who is unhappy with her current hairdresser and wants to have someone else cut her hair.  I had no idea that people could be so obsessive about such things, and my original post was completely in jest. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-942208377618890159?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/942208377618890159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=942208377618890159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/942208377618890159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/942208377618890159'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/11/cheating-on-hairstylists.html' title='Cheating on Hairstylists'/><author><name>Ryan</name><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-5280271148370184481.post-1637748900271146418</id><published>2006-11-13T23:59:00.000-08:00</published><updated>2006-11-14T00:30:52.495-08:00</updated><title type='text'>Seattle Mindcamp 3.0</title><content type='html'>Well I think I'm finally recovered from Seattle Mindcamp 3.0.  It was quite the event, unlike 2.0 where I was only there for about 8 hours, this time I did 15 hours worth. &lt;br /&gt;&lt;br /&gt;Here's are some of the things and people I met:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Singularity talk - random arguments as most discussions of this goes.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Vegetable gun with the &lt;a href="http://www.makezine.com/"&gt;Make people.&lt;/a&gt; Cool, but abortive.  Only one shot, sad.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.makezine.com/blog/archive/2006/11/mind_camp_30_ma.html"&gt;The Make Drawbot&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;How to read Finnegans Wake by &lt;a href="http://ron.ludism.org/"&gt;Ron Hale-Evans&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Supper with a bunch of people, and a conversation with &lt;a href="http://www.tombihn.com/"&gt;Tom Bihn&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Chilled out with Make's Bre, Sparktography, more Make people, and even more people during a multi-hour Werewolf game&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Guitar hero on the big screen&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Also, either thanks to, or no thanks to &lt;a href="http://www.flickr.com/people/sparktography/"&gt;sparktography&lt;/a&gt;, I learned about &lt;a href="http://www.zipfizz.com/"&gt;Zipfizz.&lt;/a&gt;  I don't think I have ever been wired on caffeine before.  Specifically it was the &lt;a href="http://www.zipfizz.com/productsliquid.html"&gt;fruit punch liquid shot&lt;/a&gt;, with 41,667% your B12 RDA.  I stayed up until 6am quite handily, but as soon as I lay down, I fell asleep instantly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1637748900271146418?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1637748900271146418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1637748900271146418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1637748900271146418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1637748900271146418'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/11/seattle-mindcamp-30.html' title='Seattle Mindcamp 3.0'/><author><name>Ryan</name><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-5280271148370184481.post-7021496482235243962</id><published>2006-11-08T13:03:00.000-08:00</published><updated>2006-12-19T16:52:36.162-08:00</updated><title type='text'>Elections? Say what?!</title><content type='html'>This edited text replaces some stupid rant about political outcomes from the 2006 midterm elections.  I guess my main point there was something about the market reacting, blah blah.  But now I realize this was a pointless post, so instead I replaced it with a meta-post about the post.  I figure it's probably slightly more interesting to read the executive summary and meta-meta discussion about a post than actually reading some opinion.  Next step is to replace this post with another summary.  Check back in about 3 months.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-7021496482235243962?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/7021496482235243962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=7021496482235243962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7021496482235243962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/7021496482235243962'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/11/elections-say-what.html' title='Elections? Say what?!'/><author><name>Ryan</name><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-5280271148370184481.post-9199144760888958517</id><published>2006-10-28T21:34:00.000-07:00</published><updated>2007-10-25T14:07:14.624-07:00</updated><title type='text'>I present</title><content type='html'>I present to you... the &lt;a href="http://www.geekculture.com/joyoftech/joyarchives/883.html"&gt;Jobs-o-lantern, instructions courtesy of The Joy of Tech!&lt;/a&gt;  Also, just to be clear here, I carved this pumpkin from the template on JOT.  It's currently sitting on my balcony, but it's a little dark so you might not be able to see it on a drive by.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/ryanobjc/1750095117/" title="Photo Sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2248/1750095117_bd7f289c71.jpg" width="500" height="332" alt="JobsOLantern_3" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flickr.com/photos/ryanobjc/sets/72157602705207805/"&gt;A few more pics on flickr&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-9199144760888958517?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/9199144760888958517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=9199144760888958517' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/9199144760888958517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/9199144760888958517'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/10/i-present.html' title='I present'/><author><name>Ryan</name><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://farm3.static.flickr.com/2248/1750095117_bd7f289c71_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5280271148370184481.post-5695390272091682550</id><published>2006-10-25T12:37:00.000-07:00</published><updated>2006-10-25T12:41:21.728-07:00</updated><title type='text'>My ears hurt!</title><content type='html'>Exploring the big wide world of nerdcore, I came across a site that has &lt;a href="http://www.audioatrocities.com/games/rad/index.html"&gt;horrible audio clips&lt;/a&gt; from video games.  I first heard the newscaster voicing from &lt;a href="http://www.myspace.com/1gb"&gt;l33t g33k b3at.&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;I love cheesy voice over from video games.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-5695390272091682550?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/5695390272091682550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=5695390272091682550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5695390272091682550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/5695390272091682550'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/10/my-ears-hurt.html' title='My ears hurt!'/><author><name>Ryan</name><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-5280271148370184481.post-1902413668295227085</id><published>2006-10-24T10:31:00.000-07:00</published><updated>2006-10-24T10:56:31.780-07:00</updated><title type='text'>"Fair use not applicable"</title><content type='html'>Today I saw on &lt;a href="http://www.boingboing.net/"&gt;boing boing&lt;/a&gt; that a &lt;a href="http://www.northcountrygazette.org/"&gt;investigative journal&lt;/a&gt; has a warning on it's website that apparently &lt;a href="http://www.boingboing.net/2006/10/24/investigative_journa.html"&gt;"fair use is not applicable"&lt;/a&gt;.  Originally this was from a &lt;a href="http://blogs.law.harvard.edu/shlep/2006/10/23/whaddayaknow-about-fair-use-and-copyright/"&gt;Harvard law blogger&lt;/a&gt;. So in the spirit of the internet and letting people know when they are in the wrong, I send this email:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hi guys,&lt;br /&gt;&lt;br /&gt;I noted that your website is incorrectly displaying the following notice:&lt;br /&gt;&lt;br /&gt;"All rights reserved. This material may not be published, broadcast, rewritten or redistributed by anyone without the express written permission of the publisher. This article is copyright protected and Fair Use is not applicable."&lt;br /&gt;&lt;br /&gt;When in fact, the law provides for fair use without your permission.  For your edification perhaps you might like to peruse:&lt;br /&gt;&lt;br /&gt;http://fairuse.stanford.edu/&lt;br /&gt;&lt;br /&gt;While it is your right to state what you did, it doesn't make it the law, nor would it help in the face of overwhelming precedent in this matter.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;-ryan&lt;/blockquote&gt;So we'll see what happens.  I'll post any reply they send.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1902413668295227085?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1902413668295227085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1902413668295227085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1902413668295227085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1902413668295227085'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/10/fair-use-not-applicable.html' title='&quot;Fair use not applicable&quot;'/><author><name>Ryan</name><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-5280271148370184481.post-2447211694128750385</id><published>2006-10-23T16:53:00.000-07:00</published><updated>2006-10-23T17:02:24.136-07:00</updated><title type='text'>Party Time?</title><content type='html'>So I went to my friend's 40th birthday party at a downtown bar.  Cool venue, they had their own room just for the party.  &lt;br /&gt;&lt;br /&gt;Weirdly though, I spent about half of the time talking with the person who ended up having the most in common with me.  Yep, that's right, a 15 year old girl.  The conversation started innocently enough by me telling a friend I played more WOW than actual work in the last 3 weeks of my previous job.  She was sitting right near, and her ears perked up on the magical "WOW" phrase.  A long conversation about technology, wapanese, nerdcore and video games ensured.  Unfortunately for her, she currently doesn't have a computer to play WOW on, plus she is spending her bucks on comics instead of WOW.  &lt;br /&gt;&lt;br /&gt;So now I am listening to "WOW" by the &lt;a href="http://www.futuristicsexrobotz.com/"&gt;Futuristic Sex Robotz.&lt;/a&gt;  And it is the sweetest song I have heard in a while.  Ok the other ones are pretty awesome too, but this one right now really resonated with me.&lt;br /&gt;&lt;br /&gt;On the way to work I was watching some &lt;a href="http://www.ted.com/tedtalks/"&gt;TED Talks &lt;/a&gt; on my video iPod. Specifically I watched the David Pogue dancing-singing-show, and Larry Brilliant's talk.  Very inspiring talks - the advancement of personal tech and the eradication of smallpox.  I'm hope Brilliant gets to do some awesome things as director of &lt;a href="http://www.google.org/"&gt;Google.org&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-2447211694128750385?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/2447211694128750385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=2447211694128750385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2447211694128750385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/2447211694128750385'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/10/party-time.html' title='Party Time?'/><author><name>Ryan</name><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-5280271148370184481.post-1550239647334711626</id><published>2006-10-18T15:19:00.000-07:00</published><updated>2006-10-18T15:22:02.295-07:00</updated><title type='text'>Indicating Apparatus</title><content type='html'>As it turns out, I discovered I need an Indicating Apparatus.  It turns out, many things in my life is not being indicated by an appropriately inscrutible apparatus.  Luckly for me, a &lt;a href="http://www.processindicator.com/"&gt;device was invented for this exact purpose.&lt;/a&gt;  I was alerted &lt;a href="http://www.boingboing.net/2006/10/18/mysterious_antiquelo.html"&gt;via boing boing.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately it is not available... yet!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1550239647334711626?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1550239647334711626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1550239647334711626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1550239647334711626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1550239647334711626'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/10/indicating-apparatus.html' title='Indicating Apparatus'/><author><name>Ryan</name><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-5280271148370184481.post-1370631559575281040</id><published>2006-10-18T14:42:00.000-07:00</published><updated>2006-10-18T14:50:56.452-07:00</updated><title type='text'>Lack of updates</title><content type='html'>Lack of updates are due to WOWing and my new job.&lt;br /&gt;&lt;br /&gt;Of course I also went to Vancouver last weekend.  No blog updating while hanging out and chillin'.  The good things were Saturday afternoon in the West End and picking up drinks at Delany's and chasing seagulls at the beach.&lt;br /&gt;&lt;br /&gt;Sunday was rainy and shopping.  &lt;br /&gt;&lt;br /&gt;And now it's wednesday.  On the plus side I'm now level 49.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5280271148370184481-1370631559575281040?l=ryan-in-seattle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ryan-in-seattle.blogspot.com/feeds/1370631559575281040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5280271148370184481&amp;postID=1370631559575281040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1370631559575281040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5280271148370184481/posts/default/1370631559575281040'/><link rel='alternate' type='text/html' href='http://ryan-in-seattle.blogspot.com/2006/10/lack-of-updates.html' title='Lack of updates'/><author><name>Ryan</name><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>
