<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://terrychay.com/blog/wp-atom.php">
	<title type="text">The Woodwork</title>
	<subtitle type="text">You tell that other boy, not to touch the woodwork...</subtitle>

	<updated>2008-11-20T20:42:29Z</updated>
	<generator uri="http://wordpress.org/" version="2.7-hemorrhage">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://terrychay.com/blog" />
	<id>http://terrychay.com/blog/feed/atom</id>
	

			<link rel="self" href="http://feeds.feedburner.com/tychay" type="application/atom+xml" /><entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Heavenly bound, earthly good]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/456618375/heavenly-bound-earthly-good.shtml" />
		<id>http://terrychay.com/blog/?p=1300</id>
		<updated>2008-11-18T01:21:09Z</updated>
		<published>2008-11-18T01:21:09Z</published>
		<category scheme="http://terrychay.com/blog" term="quotes" /><category scheme="http://terrychay.com/blog" term="religion and politics" />		<summary type="html"><![CDATA[Quote from the comments on an article on pro-Gay backlash on Proposition 8:
“Some people are so heavenly bound, they’re no earthly good.”
Quotes on Sanctimony.
]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/heavenly-bound-earthly-good.shtml">&lt;p&gt;Quote from the comments on &lt;a href="http://tbogg.firedoglake.com/2008/11/15/blowback-is-a-bitch/" title="Blowback is a bitch—TBogg"&gt;an article on pro-Gay backlash&lt;/a&gt; on &lt;a href="http://terrychay.com/blog/article/on-proposition-8.shtml" title="On Proposition 8"&gt;Proposition 8&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;“Some people are so heavenly bound, they’re no earthly good.”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://josephsoninstitute.org/quotes/sanctimony.html" title="Quotations: Sanctimony, cynicism, anger—Josephson Institute"&gt;Quotes on Sanctimony&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/456618375" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/heavenly-bound-earthly-good.shtml#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/heavenly-bound-earthly-good.shtml/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/heavenly-bound-earthly-good.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Poladroid]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/453499115/poladroid.shtml" />
		<id>http://terrychay.com/blog/?p=1292</id>
		<updated>2008-11-15T00:34:30Z</updated>
		<published>2008-11-15T00:08:11Z</published>
		<category scheme="http://terrychay.com/blog" term="Macintosh" /><category scheme="http://terrychay.com/blog" term="photography" /><category scheme="http://terrychay.com/blog" term="photos" />		<summary type="html"><![CDATA[On Josh Spear’s suggestion, I decided to try out Poladroid. In a nutshell, it turns your digital images into crappy Polaroids.

A photo I took last night of Hubert of übergizmo and Brian of Gizmodo at the uber10 party

At first I thought, What’s the big deal? John already has a polaroid framer and the uber-insane Hockneyizer. [...]]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/poladroid.shtml">&lt;p&gt;&lt;a href="http://joshspear.com/item/polardroid/" title="Poladroid—Josh Spear"&gt;On Josh Spear’s suggestion&lt;/a&gt;, I decided to try out &lt;a href="http://poladroid.net/" title="Poladroid"&gt;Poladroid&lt;/a&gt;. In a nutshell, it turns your digital images into crappy &lt;a href="http://www.polanoid.net/" title="polanoid.net. When I showed someone my poladroid photos, they asked, “You own a Polaroid?” Well I do, but I refuse to use it (ain’t digital). This is simply the best website out there for Polaroid fanatics. The shot of the day is awesome." class="commentary"&gt;Polaroids&lt;/a&gt;.&lt;/p&gt;
&lt;div class="flimg" style="width:411px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3030070393/" title="Hubert and Brian by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3292/3030070393_d09b4e8150.jpg" width="411" height="500" alt="Hubert and Brian" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3029395244/in/set-72157609068735815/" title=""&gt;A photo I took last night&lt;/a&gt; of Hubert of &lt;a href="http://www.ubergizmo.com/" title="ubergizmo: The Gadget Blog"&gt;übergizmo&lt;/a&gt; and Brian of &lt;a href="http://gizmodo.com/" title="Gizmodo: the gadget guide"&gt;Gizmodo&lt;/a&gt; at the &lt;a href="http://uber10.com/" title="Uber10, ubergizmo’s 10 top gadget holiday gifts under $400" class="commentary"&gt;uber10&lt;/a&gt; party&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;At first I thought, &lt;em class="thought"&gt;What’s the big deal? &lt;a href="http://bighugelabs.com/flickr/frame.php" title="Framer—Big Huge Labs"&gt;John already has a polaroid framer&lt;/a&gt; &lt;strong&gt;and&lt;/strong&gt; the uber-insane &lt;a href="http://bighugelabs.com/flickr/hockney.php" title="Hockneyizer—Big Huge Labs"&gt;Hockneyizer&lt;/a&gt;.&lt;/em&gt; That was until I used the UI:&lt;/p&gt;
&lt;div class="flimg" style="width:400px"&gt;&lt;object type="application/x-shockwave-flash" width="400" height="251" data="http://www.flickr.com/apps/video/stewart.swf?v=63881" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt;&lt;param name="flashvars" value="intl_lang=en-us&amp;amp;photo_secret=a5ac66809d&amp;amp;photo_id=3030937822"&gt;&lt;/param&gt;&lt;param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=63881"&gt;&lt;/param&gt;&lt;param name="bgcolor" value="#000000"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=63881" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;amp;photo_secret=a5ac66809d&amp;amp;photo_id=3030937822" height="251" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;p&gt;&lt;span id="more-1292"&gt;&lt;/span&gt;&lt;br /&gt;
That’s crazy fun.&lt;/p&gt;
&lt;p&gt;You can see that I &lt;a href="http://www.flickr.com/photos/tychay/3030102385/" title="Owen Thomas of Valleywag (premature polaroid)—tychay @ Flickr"&gt;exported the photo prematurely&lt;/a&gt; but it eventually &lt;a href="http://www.flickr.com/photos/tychay/3030103105/" title="Owen Thomas of Valleywag (polaroid)—tychay @ Flickr"&gt;fully develops&lt;/a&gt;. Even if you process the same image twice, you get&lt;a href="http://www.flickr.com/photos/tychay/3030957142" title="Owen Thomas of Valleywag (alternate polaroid)—tychay @ Flickr"&gt;totally different output&lt;/a&gt;.&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3030944646/" title="Poladroid output by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3285/3030944646_636feb27e6.jpg" width="500" height="304" alt="Poladroid output" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;Owen of &lt;a href="http://valleywag.com/" title="Valleywag: the Silicon Valley Tech Gossip Rag"&gt;Valleywag&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/tychay/3029388284/in/set-72157609068735815/" title=""&gt;shows us&lt;/a&gt; he’s &lt;a href="http://valleywag.com/5085562/what-just-happened-at-valleywag-the-faq" title="What just happened at Valleywag: The FAQ—Valleywag"&gt;not dead&lt;/a&gt; yet!&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2008/02/08/AR2008020803598.html?hpid=topnews" title="Polaroid Technology Fades Out—Washington Post"&gt;Polaroid is dead&lt;/a&gt;, Long live, Poladroid!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/453499115" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/poladroid.shtml#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/poladroid.shtml/feed/atom" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/poladroid.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Love is a fallacy]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/446167109/love-is-a-fallacy.shtml" />
		<id>http://terrychay.com/blog/?p=1286</id>
		<updated>2008-11-08T04:10:51Z</updated>
		<published>2008-11-08T04:10:51Z</published>
		<category scheme="http://terrychay.com/blog" term="humor" />		<summary type="html"><![CDATA[One of my favorite short stories.
]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/love-is-a-fallacy.shtml">&lt;p&gt;&lt;a href="http://www1.asknlearn.com/ri_Ilearning/English/631/elang-ilearning/page3a.htm" title="Love is a Fallacy by Max Shulman"&gt;One of my favorite short stories&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/446167109" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/love-is-a-fallacy.shtml#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/love-is-a-fallacy.shtml/feed/atom" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/love-is-a-fallacy.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Terry the bully]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/446101371/terry-the-bully.shtml" />
		<id>http://terrychay.com/blog/?p=1271</id>
		<updated>2008-11-10T16:14:04Z</updated>
		<published>2008-11-08T02:30:27Z</published>
		<category scheme="http://terrychay.com/blog" term="PHP" /><category scheme="http://terrychay.com/blog" term="about me" /><category scheme="http://terrychay.com/blog" term="web development" />		<summary type="html"><![CDATA[Am I an intellectual bully?

The two faces of PHP
District Bar, South of Market, San Francisco, California
Nikon D3, Nikkor 24-70mm f/2.8G
f/2.8 at 1/50 sec, iso 12800, 45mm (45mm)

Certainly some of the comments expand on that by attributing all manner of atrocities to me, ]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/terry-the-bully.shtml">&lt;p&gt;&lt;a href="http://paul-m-jones.com/?p=381" title="Patterns of Intellectual Bullies"&gt;Am I an intellectual bully&lt;/a&gt;?&lt;/p&gt;
&lt;div class="flimg"&gt;&lt;a href="http://www.flickr.com/photos/tychay/2508626653/" title="The two faces of PHP by tychay, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2417/2508626653_af1dd61577.jpg" width="500" height="333" alt="The two faces of PHP" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;b&gt;The two faces of PHP&lt;/b&gt;&lt;br /&gt;
District Bar, South of Market, San Francisco, California&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nikon D3, Nikkor 24-70mm f/2.8G&lt;/i&gt;&lt;br /&gt;
f/2.8 at 1/50 sec, iso 12800, 45mm (45mm)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Certainly some of the comments expand on that by attributing &lt;a title="Chayism. Apparently I am the source of every bad interview you’ve gone through. Please add that as a Chayims" class="commentary"&gt;all manner of atrocities to me&lt;/a&gt;, &lt;a href="http://paul-m-jones.com/?p=381#comment-409670 title="Joe says…"&gt;the accusation by “Joe”&lt;/a&gt; is especially amusing:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;funny, i’d never heard of chay but stumbled upon a few posts he made about ruby on rails whilst researching the value of ror vs php. i found his posts fit very much into the “intellectual bully” category. he was more concerned with “being right” as you put it, with fairly basic arguments actually “the top 10 companies use X, therefore X is right”.…i agree with the previous poster, coding is not a competition. we want to solve problems with the right solutions. there are many solutions to a given problem, much as that would break chay’s heart.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yes, Joe, I’m a bully! &lt;img src='http://terrychay.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s take the evidence at hand (i.e. reality) instead of the arguments based on fallacies (ad hominem: “i’d never heard of chay” or false equivalence: “&lt;span title="The ONLY consistency in my talks and writing on programming is that there IS NO ONE solution. The right solution, like the right design pattern, would depend on the context" class="commentary"&gt;there are many solutions&lt;/span&gt;”) and such. As I see it, the examples of bullying here are:&lt;/p&gt;
&lt;p&gt;A) Asking a candidate to define design patterns&lt;br /&gt;
B) Asking a candidate to distinguish C++ vs. Java&lt;br /&gt;
C) Writing an article comparing Rails vs. PHP&lt;/p&gt;
&lt;p&gt;&lt;span id="more-1271"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Design pattern bully&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://terrychay.com/blog/article/defining-design-patterns.shtml" title="Defining Design Patterns"&gt;I think I’ve adequately defended my design pattern definition&lt;/a&gt;. But it also worth mentioning that the issue at hand concerns something I mentioned in passing during an extemporaneous talk on web frameworks, &lt;strong&gt;not&lt;/strong&gt; design patterns. I have two talks devoted &lt;strong&gt;solely&lt;/strong&gt; to the discussion of design patterns. Would I to adequately define design patterns, by the time I finished, it wouldn’t be a web framework talk, but a design pattern talk!&lt;/p&gt;
&lt;p&gt;(Ironically, one other talk &lt;a href="http://terrychay.com/blog/article/php-meetup-february.shtml" title="OOps! I (recycled my talk) again!"&gt;on object-oriented design&lt;/a&gt; is based on the allegory of the “design pattern bigot” as a way to elucidate the potential pitfalls in programming.)&lt;/p&gt;
&lt;p&gt;But most significantly, by prematurely ending the quote at my “tongue-in-cheek” definition, the author and others are inadvertently quoting me out of context. It seems, by accusing me of not defining patterns correctly ending the quote right before I actually do, that I’m the one being bullied here.&lt;/p&gt;
&lt;h3&gt;C++ vs Java&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;I fully agree. It reminds me of an interview I had in 2002. “What’s the difference between C++ and Java?” I was asked by the engineering manager.…&lt;/p&gt;
&lt;p&gt;“WRONG!” he roared. “There’s NO difference between the two languages, they’re identical!” Then he leaned back smugly and pretty much didn’t ask any more questions.…&lt;/p&gt;
&lt;p&gt;That’s the problem with “booby-trap” interview questions. If you have already decided that the candidate can’t answer the question to your satisfaction, then there’s no chance of gaining any information by asking it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Obviously this &lt;span title="Ironically I do ask a question like so: From a performance perspective why does Java and dotNet always benchmark faster than the PHP engine?" class="commentary"&gt;isn’t a question I ask&lt;/span&gt; so obviously doesn’t apply to me, but apparently my interview style is the same in spirit.&lt;/p&gt;
&lt;p&gt;I am loathe to address the accusation that I—like the news media on Sarah Palin apparently—engage in “gotcha” journalism/interviewing. This label is a form of bullying also, because never claimed that I roared: “WRONG! Your definition missed that a design pattern &lt;strong&gt;must&lt;/strong&gt; be implementation independent!” (which isn’t a question at all.)&lt;/p&gt;
&lt;p&gt;Even in my “&lt;span title="My talks are often called by critics as “feeding red meat to the masses”" class="commentary"&gt;red meat&lt;/span&gt;” example the exchange almost consistently goes like this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Me: Can you define what a “design pattern” is?&lt;/p&gt;
&lt;p&gt;Candidate: Umm… It’s like factory…singleton. Umm… I mean it’s this code thing that solves…a problem.&lt;/p&gt;
&lt;p&gt;Me: So an algorithm like quicksort satisfies your definition. Is an algorithm a design pattern?&lt;/p&gt;
&lt;p&gt;Candidate: &lt;span title="aboout 20% of the time I get “Yes, they are” and then I ask why we created the term “design patterns” in the first place" class="commentary"&gt;No, they’re not.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Me: So can you add to your definition so that an algorithm is not a design pattern?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Not once in all those times has it gone down like this:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Me: Can you define what a “design pattern” is?&lt;/p&gt;
&lt;p&gt;Candidate: Well Christopher Alexander, in his seminal book &lt;a href="http://www.amazon.com/gp/product/0195024028?tag=terrychay-20"&gt;&lt;em&gt;The Timeless Way of Building&lt;/em&gt;&lt;/a&gt; defined a design pattern thusly: “[a description of] a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without doing it the same way twice.” And even though Alexander was talking about patterns in buildings and towns, what he says is true about object-oriented design patterns. There, we express solutions in terms of objects and interfaces instead of walls and doors, but the core of both kinds of patterns as a solution to a problem in context.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;And besides isn’t my way a far better way to question whether I was actually given &lt;span title="I cribbed the theoretical reply by adapting the definition in the Gang of Four book to this one" class="commentary"&gt;a book definition of a pattern&lt;/span&gt; or one that shows real understanding.?&lt;/p&gt;
&lt;p&gt;Let me be brutally frank. As I mentioned in my talk, the people I ask this question to are people who claim to be design pattern experts on their resumé. If you claim that expertise and can’t &lt;strong&gt;define&lt;/strong&gt; it…&lt;/p&gt;
&lt;p&gt;And even then I account for different forms of expression. If you go back and read &lt;a href="http://terrychay.com/blog/article/challenges-and-choices.shtml" title="Challenges and Choices"&gt;the original post&lt;/a&gt;, my questions are &lt;strong&gt;deliberately&lt;/strong&gt; open-ended and open to interpretation so that something is clarified &lt;/p&gt;
&lt;p&gt;And I realize it is tough, I’m constantly telling the candidate who gets stuck “Don’t worry, it’s okay” and I’ve mentioned on this own blog that I would have trouble answering the questions I give my candidates. That’s sort of the point of my interview style. I’m not looking for perfection, only perspective and flexibility in problem solving.&lt;/p&gt;
&lt;h3&gt;Might makes right&lt;/h3&gt;
&lt;p&gt;I find it ironic that some have to put words in my mouth that I never said in order to prove me a bully. I’m probably the most outspoken web developer on the internet. If I am a real intellectual bully there should be adequate evidence to indict me &lt;b&gt;from my own words&lt;/b&gt; instead resorting to puttin words into my mouth. This is why I find it highly amusing that I’m told to have said: “The top 10 companies use (PHP), and therefore PHP is right.” &lt;/p&gt;
&lt;p&gt;My actual words in &lt;a href="http://terrychay.com/blog/article/is-ruby-the-dog-and-php-the-dogfood.shtml" title="Is Ruby the dog and PHP the dogfood?"&gt;the actual article that Joe is alluding to&lt;/a&gt; are:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Alex Payne isn’t saying Rails is crap; I’m not saying Rails is crap. We’re not even saying Rails can’t scale or Ruby can’t do the web.&lt;/p&gt;
&lt;p&gt;I can’t speak for Alex, but what I’m saying is look at the top 100 websites on the internet: about 40% of them are written in PHP and 0% of them are written in Rails. (Yes, I can (and am) using this statistic to grind you Ruby fuckers into the dust.) But to me, there is an alternate conclusion, since 60% of sites out there don’t use PHP: &lt;em&gt;The web problem ain’t that hard.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;PHP &lt;strong&gt;may be&lt;/strong&gt; the best web language out there. But it certainly isn’t the &lt;strong&gt;only&lt;/strong&gt; one. It’s &lt;strong&gt;one&lt;/strong&gt; approach, one that stresses configuration over convention, stupidity over smarts, practicality over elegance: it’s one ugly mother f—er that gets shit done.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I then  &lt;a href="http://terrychay.com/blog/article/simple-prescriptions-and-making-choices.shtml"&gt;expand it in the very next article&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Rails is like a rounded rectangle and PHP is like a ball of nails. All I’m asking is for a programmer begin with the end in mind and survey the entire terrain before making a choice&lt;/p&gt;
&lt;p&gt;…[Using PHP…]You can really create a slow flawed spaghetti architecture. You may make a site that is insecure and easy to hack. You really do have to work hard to winnow the wheat from the chaff when hiring developers. There are consequences to a choice. If PHP was so perfect, then it would have a supermajority of the top websites instead of just a plurality.&lt;/p&gt;
&lt;p&gt;I can’t emphasize this enough: &lt;em&gt;Writing software is about making choices.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I guess that’s exactly equivalent to:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;[Terry Chay] was more concerned with “being right” as you put it, with fairly basic arguments actually “the top 10 companies use X, therefore X is right.”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Apparently I claim infallibility and use &lt;span title="It’s funny that the people that attack me all the time for using this statistic in my argument haven’t ever noticed that I made this statistic up!" class="commentary"&gt;a made-up statistic&lt;/span&gt; to do so! &lt;img src='http://terrychay.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;I bet the next argument is going to be that I have the liberal agenda of the media elite because I choose to point out &lt;strong&gt;the reality&lt;/strong&gt; of &lt;em&gt;what I really said&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;…As &lt;a href="http://www.wikiality.com/Reality" title="Reality—Wikiality"&gt;reality&lt;/a&gt; has a well-known liberal bias.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/446101371" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/terry-the-bully.shtml#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/terry-the-bully.shtml/feed/atom" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/terry-the-bully.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Defining Design Patterns]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/446064774/defining-design-patterns.shtml" />
		<id>http://terrychay.com/blog/?p=1269</id>
		<updated>2008-11-20T20:42:29Z</updated>
		<published>2008-11-08T01:23:35Z</published>
		<category scheme="http://terrychay.com/blog" term="PHP" /><category scheme="http://terrychay.com/blog" term="web development" />		<summary type="html"><![CDATA[My friend and colleague, Paul M. Jones, calls me out as a bully. Apparently from the way interviewees complain to their headhunter about me, I am.
Like W after 2004, and fully intend to use this new capital accumulated by my just-annointed bully-mandate to tell him (and the interviewees) off as being sore losers who can’t [...]]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/defining-design-patterns.shtml">&lt;p&gt;My friend and colleague, Paul M. Jones, &lt;a href="http://paul-m-jones.com/?p=381" title="Patterns of Intellectual Bullies—Paul M. Jones"&gt;calls me out as a bully&lt;/a&gt;. Apparently from &lt;a href="http://shiflett.org/blog/2007/dec/php-advent-calendar-day-13" title="PHP Advent Calendar Day 13—Chirss Shiflett"&gt;the way interviewees complain to their headhunter about me&lt;/a&gt;, I am.&lt;/p&gt;
&lt;p&gt;Like W after 2004, and fully intend to use this new capital accumulated by my &lt;span class="commentary" title="The people have spoken. All you bully-posers out there, get ready for a permanent bully majority in the form of me!"&gt;just-annointed bully-mandate&lt;/span&gt; to tell him (and the interviewees) off as being sore losers who can’t handle their new asshole I tore in &lt;a href="http://solarphp.com/" title="Solar Framework for PHP. Just kidding Paul. This is an obvious ad hominem, but because of overreaction, I think I need to ruin the fun by mentioning that I’m only joking here!" class="commentary"&gt;their shit&lt;/a&gt; last night. &lt;img src='http://terrychay.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;But on the other hand, when the candidate fails to answer a question, I tell them that, “Don’t worry. It’s okay.” And move to a different topic area as &lt;a href="http://terrychay.com/blog/article/php-coders.shtml" title="PHP Coders. Trust me, it’s grown and refined from this list and is now about 4x larger. When a candidate stalls in a certain area, I jump to a different category" class="commentary"&gt;I have lots&lt;/a&gt;. I’ll also point out that none of these candidates actually were around when I gave my evaluation. They’d see that the only trouble they get into is if they lied to me or express something wrong with absolute confidence. Those are two things that I happen to dislike because neither works well in teams nor has the ability to learn new things.&lt;/p&gt;
&lt;p&gt;Okay, fine, but what about Paul who stands up to &lt;span title="me" class="commentary"&gt;The Great Bully&lt;/span&gt;? Well let’s get down to the nitty gritty of defining (programming) design patterns.&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/2508632205/" title="Three Wise Monkeys by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3018/2508632205_ac35ff7ea2.jpg" width="500" height="333" alt="Three Wise Monkeys" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;b&gt;Three Wise Monkeys&lt;/b&gt;&lt;br /&gt;
District Bar, South of Market, San Francisco, California&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nikon D3, Nikkor 24-70mm f/2.8G&lt;/i&gt;&lt;br /&gt;
f/2.8 at 1/50 sec, iso 12800, 29mm (29mm)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span id="more-1269"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Paul’s argument&lt;/h3&gt;
&lt;p&gt;Paul’s first argument centers around my definition if design patterns. I say that it’s hard to define them but “you’ll know it when you see it.” He then references Martin Fowler’s definition which is actually cribbed from Christopher Alexander’s definition which is…&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;He then says the actual definition depends on the problem domain. Then gives his definition as: common vocabulary to aid communication.&lt;/p&gt;
&lt;p&gt;He disagrees with me that an algorithm (like quicksort) and best practice (like code versioning) are not patterns. Instead, he states that they are different sort of patterns, just not application design patterns.&lt;/p&gt;
&lt;p&gt;Finally he goes into the part of &lt;span title="How truly unfair it’d be if it WAS a competition because 1) I’m the architect, they’ll be an engineer under me, 2) I’m asking the question, 3) I’m the “MAN” (they’re interviewing to work for me). It’d be like trying to beat Alex Trebeck in Jeopardy when he’s the one with the answers AND questions." class="commentary"&gt;how I’m an intellectual bully&lt;/span&gt;. &lt;img src='http://terrychay.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Finally he calls that my discourse is uncivil. &lt;/p&gt;
&lt;p&gt;Watch me dodge like Bubba Clinton…&lt;/p&gt;
&lt;p&gt;I shall do forthwith.&lt;/p&gt;
&lt;h3&gt;A brief history of the design pattern&lt;/h3&gt;
&lt;p&gt;I am well aware of Martin Fowler’s book. But unlike Paul, I’m going to provide some missing historical context.&lt;/p&gt;
&lt;p&gt;The book in question is &lt;a href="http://www.amazon.com/gp/product/B000BX1XGG?tag=terrychay-20" title="Patterns of Enterprise Application Architecture—Amazon.com"&gt;&lt;cite&gt;Patterns of Enterprise Application Architecture&lt;/cite&gt;&lt;/a&gt; by Martin Fowler, chief scientist of ThoughtWorks, one of the premier Enterprise software consulting firms. This book basically introduced design patterns to web development, but it contains numerous pitfalls that have set the web world back as much as it has advanced it.&lt;/p&gt;
&lt;p&gt;However the quoted part in question is actually a copy of &lt;a href="http://www.amazon.com/gp/product/0201633612?tag=terrychay-20" title="Design Patterns: Elements of Reusable Object-Oriented Software"&gt;the Gang of Four book&lt;/a&gt;, which attributes their influence to &lt;a href="http://www.amazon.com/gp/product/0195024028?tag=terrychay-20" title="The Timeless Way of Building"&gt;the Christopher Alexander work&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the architecture of building, not software design here!&lt;/p&gt;
&lt;p&gt;If the definition of patterns is “domain-specific” then wouldn’t that imply that my definition of: you know what a design pattern is “when you see it” is &lt;strong&gt;exactly&lt;/strong&gt; right? I mean here we find design patterns in the architecture of buildings, &lt;span title="In a later book by Chris Alexander titled: “A Pattern Language” :-D" class="commentary"&gt;in the design of cities and towns&lt;/span&gt;, in &lt;span title="The gang of four book" class="commentary"&gt;object-oriented programming&lt;/span&gt;, in &lt;span title="Fowler’s book" class="commentary"&gt;enterprise web development&lt;/span&gt;, and in &lt;span title="an actual example given in my talk that was…hmm… overlooked(?) by Paul Jones." class="commentary"&gt;web page design&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Apparently the definition of design patterns are “so &lt;a href="http://www.urbandictionary.com/define.php?term=meta" title="meta—Urban Dictionary"&gt;meta&lt;/a&gt;.”&lt;/p&gt;
&lt;p&gt;Going back to the &lt;strong&gt;original&lt;/strong&gt; definition of “you can use this solution a million times over, without ever doing it the same way twice” that the definition is quite recursive, because apparently I can use the term “design pattern” a million times over across an infinity of application without ever using it the same way twice! How then are we to define it?&lt;/p&gt;
&lt;h3&gt;Defining a design pattern&lt;/h3&gt;
&lt;p&gt;My point is the nature of a design pattern is to defy direct definition because its meaning is determined by context in the same way the meaning of “pornography” depends on the common social values of the time.&lt;/p&gt;
&lt;p&gt;Yet still even though there are these context-dependent differences, there are still commonalities. Societies may disagree on whether or not the uncovered face of a woman is “pornographic,” but almost all of them agree that &lt;span title="Child pornography. I didn’t want to use the self-referential word here" class="commentary"&gt;pre-pubescent children in sexually explicit acts&lt;/span&gt; would be!&lt;/p&gt;
&lt;p&gt;The commonalities?  Paul conveniently ends stops his quote of me right before this part:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;But [design patterns] do have these qualities. The first thing is, it has a name. You have to give it a name or it isn’t a design pattern. Why? It is a vocabulary—when I speak to you, I could write it for you; or I could give it a name and you could write it for me. You see, I’m an architect and I don’t like to code so this stuff really helps! The second thing is it indeed does solve a problem. The third thing is it’s independent of the code that implements it. But the last and most important thing is—that separates a design pattern from what we would call a “best practice” is—it has consequences.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Hmm, that seems very &lt;strong&gt;constructive&lt;/strong&gt; to me. Even though I can’t define design patterns: I offer four commonalities that I’ve found in &lt;strong&gt;every&lt;/strong&gt; definition of a design pattern in &lt;strong&gt;every field&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;vocabulary&lt;/li&gt;
&lt;li&gt;solves a problem&lt;/li&gt;
&lt;li&gt;implementation independence&lt;/li&gt;
&lt;li&gt;has consequences&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you can get to this in different ways: if you said, &amp;#8220;the right pattern to use depends on context&amp;#8221;, that covers (4). If you said “you never use it the same way twice,” that covers (3).&lt;br /&gt;
,&lt;br /&gt;
Paul’s definition covers (1) and I assume he imputes (2). That’s not bad, actually, the vast majority of candidates asked this question give me an answer like this: “It’s something that solves a problem” (2) if they get that far!&lt;/p&gt;
&lt;p&gt;Now remember, I don’t ask this question to ones who don’t list design patterns on their resume. These are people who actually claim to be experts in design patterns!&lt;/p&gt;
&lt;h3&gt;The problem with quicksort&lt;/h3&gt;
&lt;p&gt;Are algorithms patterns? Well, I guess an argument can be made that they are. In interviews, I’m not interested in right or wrong but in how the candidate reacts to open-ended questions that allow flexibility in interpretation.&lt;/p&gt;
&lt;p&gt;Let’s assume algorithms like quicksort can be patterns. Well here is the &lt;a href="Algorithm—Wikipedia"&gt;wikipedia entry of algorithm&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing. It is formally a type of effective method in which a list of well-defined instructions for completing a task will, when given an initial state, proceed through a well-defined series of successive states, eventually terminating in an end-state.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You see the problem here I hope. Algorithms are a mathematical construct that is “well-defined” this runs in direct confrontation to the definition that Paul Jones quoting Martin Fowler (quoting Eric Gamma) quoting Christopher Alexander gave: “the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.”&lt;/p&gt;
&lt;p&gt;I hazard to guess that this implies that in the context of computing, quicksort cannot be design patterns &lt;strong&gt;by definition&lt;/strong&gt; because the former’s solution looks the same way &lt;strong&gt;every&lt;/strong&gt; time!&lt;/p&gt;
&lt;p&gt;I’ll admit I can be wrong here, but I believe I’ll have an easier time getting Martin Fowler, Eric Gamma, and Christopher Alexander to side with me over Paul on this one.&lt;/p&gt;
&lt;h3&gt;Considering consequences&lt;/h3&gt;
&lt;p&gt;This deserves further expansion, but ask yourself why do we find &lt;a href="http://www.phppatterns.com/docs/design/hello_world_in_patterns" title="Design Pattern Berserk—phpPatterns"&gt;implementing “Hello World” in 160 lines of object-oriented PHP code&lt;/a&gt; “wrong” and &lt;a href="http://en.wikipedia.org/wiki/Anti-pattern" title="Anti-patterns—Wikipedia"&gt;anti-patterns&lt;/a&gt; humorous?&lt;/p&gt;
&lt;p&gt;Clearly that’s where the “in our environment” segment of the quoted definition comes from. But it’s a stretch unless you understand the original context. &lt;a href="http://en.wikipedia.org/wiki/Design_pattern" title="Design pattern—Wikipedia"&gt;This alluded to in the Wikipedia entry on design patterns&lt;/a&gt; (emphasis added):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Christopher Alexander describes common design problems as arising from &amp;#8220;conflicting forces&amp;#8221; &amp;#8212; such as the conflict between wanting a room to be sunny and wanting it not to overheat on summer afternoons. A pattern would not tell the designer how many windows to put in the room; instead, it would propose a set of values to guide the designer toward a decision that is best for their particular application. Alexander, for example, suggests that enough windows should be included to direct light all around the room. He considers this a good solution because he believes it increases the enjoyment of the room by its occupants. Other authors might come to different conclusions, if they place higher value on heating costs, or material costs. These values, used by the pattern&amp;#8217;s author to determine which solution is &amp;#8220;best&amp;#8221;, &lt;strong&gt;must also be documented&lt;/strong&gt; within the pattern.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Christopher Alexander is basically stating, flat-out, that it isn’t a pattern if doesn’t have some sort of tradeoff.&lt;/p&gt;
&lt;p&gt;Here is the definition of &lt;a href="http://en.wikipedia.org/wiki/Best_practice" title="Best practice—Wikipedia"&gt;a best practice:&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt; Best practices can also be defined as the most efficient (least amount of effort) and effective (best results) way of accomplishing a task, based on repeatable procedures that have proven themselves over time for large numbers of people.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Compare that to the definition above and you’ll notice that, unlike a best practice, the concept of “best pattern” depends on the &lt;strong&gt;context&lt;/strong&gt; (or values) of the problem and is open to interpretation.&lt;/p&gt;
&lt;p&gt;Here is section of Alexander’s book that might be relevant:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The pattern concept can usefully be contrasted with the idea of a rule. A rule indicates what is to be done in a given situation. A pattern raises issues that may need attention and provides ideas and examples of what could be done to address them. Thus, while a rule bypasses people’s intuitions, a pattern calls upon these intuitions and attempts to educate and strengthen them in the process of solving the problem.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Programming is a creative occupation which requires refined intuition, in contrast to the idea of a rule (or best practice, or algorithm).&lt;/p&gt;
&lt;p&gt;Anyone is free to ignore consequences, but they ignore them at their peril. Just as &lt;a href="http://terrychay.com/blog/article/simple-prescriptions-and-making-choices.shtml" title="Simple prescriptions and making choices"&gt;writing software is about making choices&lt;/a&gt;, so too making choices without examining consequences is not (good) programming. Or perhaps rather:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;An unexamined choice is not worth making.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;I’ll defend my bully nature in a future post. I will mention here, however, that I am apparently the self-proclaimed first “PHP Terrorist.” By definition, my discourse is going to be uncivil. But, I promise you &lt;a href="http://terrychay.com/blog/article/civility-indecency-public-forum.shtml" title="Using calls of civility to mask indecency"&gt;I’m not indecent&lt;/a&gt;.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/446064774" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/defining-design-patterns.shtml#comments" thr:count="9" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/defining-design-patterns.shtml/feed/atom" thr:count="9" />
		<thr:total>9</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/defining-design-patterns.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Challenges and Choices (Making Frameworks Suck Less Part 2)]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/444921131/challenges-and-choices.shtml" />
		<id>http://terrychay.com/blog/?p=1255</id>
		<updated>2008-11-07T01:10:15Z</updated>
		<published>2008-11-07T00:32:10Z</published>
		<category scheme="http://terrychay.com/blog" term="PHP" /><category scheme="http://terrychay.com/blog" term="PHP BLX" /><category scheme="http://terrychay.com/blog" term="presentation" /><category scheme="http://terrychay.com/blog" term="web development" />		<summary type="html"><![CDATA[As promised, as the election is over, I will get back to blogging non-political things.
And hey, I haven’t posted a continuation of my web frameworks presentation yet!
Good thing too because, if you don’t know, I’m giving a talk on that tonight at CBS Interactive (CNET) in San Francisco. Come see it or watch online at [...]]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/challenges-and-choices.shtml">&lt;p&gt;As promised, as the election is over, I will get back to blogging non-political things.&lt;/p&gt;
&lt;p&gt;And hey, I haven’t posted a continuation of &lt;a href="http://terrychay.com/blog/article/frameworks-suck-1.shtml" title="Presentation-Fu (Making Frameworks Suck Less Part 1)"&gt;my web frameworks presentation&lt;/a&gt; yet!&lt;/p&gt;
&lt;p&gt;Good thing too because, if you don’t know, I’m giving a talk on that tonight at CBS Interactive (CNET) in San Francisco. &lt;a href="http://www.meetup.com/sf-php/calendar/8911737/?eventId=8911737&amp;#038;action=detail" title="Making frameworks suck less - Nov 2008—SF PHP Meetup"&gt;Come see it&lt;/a&gt; or &lt;a href="http://www.ustream.tv/channel/php-meetup---terry-chay" title="Andrew Mager will be streaming it at 7:30 PST today."&gt;watch online&lt;/a&gt; at 7:30PM Pacific.&lt;/p&gt;
&lt;h3&gt;Software is about making choices&lt;/h3&gt;
&lt;div class="flimg" style="width:392px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3008929622/" title="&amp;quot;Making Frameworks Suck Less&amp;quot; 2 by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3049/3008929622_f7af770171.jpg" width="392" height="500" alt="&amp;quot;Making Frameworks Suck Less&amp;quot; 2" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;Challenges and Choices&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;So the second thing is Challenges and Choices. When I wrote &lt;a href="http://terrychay.com/blog/article/is-ruby-the-dog-and-php-the-dogfood.shtml" title="Is Ruby the dog and PHP the dogfood?"&gt;my Rant on Rails&lt;/a&gt;, some people jumped on me, but I don’t think they gathered the basic assumption I was coming from.&lt;/p&gt;
&lt;p&gt;It is not so much an assumption as a fact: &lt;a href="http://terrychay.com/blog/article/simple-prescriptions-and-making-choices.shtml" title="Simple prescriptions and making choices"&gt;when you develop software, it is about making choices&lt;/a&gt;. It is about tradoffs. You can do “A” but you can’t do “B.” You can’t have both A and B. I know it sounds like it’d be great and I’d like to have my cake and eat it too, but really, I’d rather be playing Counterstrike—I only have so much time to devote to writing software, that software can only execute so many times, things like that. I can’t make something do everything.&lt;/p&gt;
&lt;p&gt;One example of that is in design patterns.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-1255"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Design Patterns&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;“*sarcastic* &amp;#8220;Quicksort must be a fucking design pattern.&amp;#8221; #zendcon #tcfc” —&lt;a href="http://twitter.com/elazar/statuses/925168698"&gt;elazar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;No matter what they do, they sort of fall into a fucking trap.&amp;#8221; #zendcon #tcfc” —&lt;a href="http://twitter.com/elazar/statuses/925169436"&gt;elazar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;there&amp;#8217;s no difference between design patterns and porn&amp;#8221; - tychay” —&lt;a href="http://twitter.com/auroraeosrose/statuses/925169802"&gt;auroraeosrose&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;There is no difference between design patterns and porn&amp;#8221; &amp;#8212; @tychay #zendcon” —&lt;a href="http://twitter.com/dcousineau/statuses/925169793"&gt;dcousineau&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“From @tychay: &amp;#8220;There really is no difference between design patterns and porn&amp;#8221;” —&lt;a href="http://twitter.com/EliW/statuses/925169813"&gt;EliW&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I used to give a design patterns talk. When people put “design patterns” on their resume, I like to ask them a particular question—especially when their background is J2EE or they say they know design patterns. The question I like to ask is define &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" title="Design pattern (computer science)—Wikipedia"&gt;design patterns&lt;/a&gt;—what does that term mean? I’d say about 90% of the people who put that on their resume bomb that question. It’s actually not an easy question. As soon as they answer it—they give me some sort of pseudo-book definition—I tear into them. I’ll give you an example:&lt;/p&gt;
&lt;p&gt;The typical thing that they’ll say is, “Oh! A design pattern is this code thing that solves…umm…a problem.”&lt;/p&gt;
&lt;p&gt;And I’ll go, “Well, shit.” *laughter* “Quicksort, right? That must be a fucking design pattern then.” *laughter*&lt;/p&gt;
&lt;p&gt;And then they’ll say, “Well no. Quicksort isn’t a design pattern.”&lt;/p&gt;
&lt;p&gt;Then I’m like, “Well, explain to me how it isn’t a design pattern. Your definition is that is solves a problem—which I agree, design patterns do solve a problem—but obviously that’s not a sufficient definition for design patterns.”&lt;/p&gt;
&lt;p&gt;You get where I’m coming from? And the reason isn’t…&lt;/p&gt;
&lt;p&gt;And then they’ll say something like, “Well, you know. It doesn’t have like… It’s not an &lt;a href="http://en.wikipedia.org/wiki/Algorithm" title="Algorithm—Wikipedia"&gt;algorithm&lt;/a&gt;!”&lt;/p&gt;
&lt;p&gt;“Umm…Yeah. So then design problems are something that solves a problem but isn’t an algorithm. So, code versioning! The practice of code versioning solves a problem and it’s not an algorithm clearly! (In fact this is what’s called a “&lt;a href="http://en.wikipedia.org/wiki/Best_practice" title="Best practice—Wikipedia"&gt;best practice&lt;/a&gt;.”) So how is a best practice not a design pattern?”&lt;/p&gt;
&lt;p&gt;See no matter what they do they fall in a fucking trap. *laughter*&lt;/p&gt;
&lt;p&gt;So I’ll give you my definition of design patterns. Well my honest-to-goodness definition of design patterns is to quote a famous Supreme Court justice when he was talking about it: He said that he’ll know it when he sees it.&lt;/p&gt;
&lt;p&gt;Actually, &lt;a href="http://library.findlaw.com/2003/May/15/132747.html" title="Movie Day at the Supreme Court or "I Know It When I See It": A History of the Definition of Obscenity—FindLaw"&gt;he was talking about porn&lt;/a&gt;. *laughter* But there is pretty much no difference between design patterns and porn so we are all okay with that.&lt;/p&gt;
&lt;p&gt;But [design patterns] do have these qualities. The first thing is, it has a name. You have to give it a name or it isn’t a design pattern. Why? It is a vocabulary—when I speak to you, I could write it for you; or I could give it a name and you could write it for me. You see, I’m an architect and I don’t like to code so this stuff really helps! The second thing is it indeed does solve a problem. The third thing is it’s independent of the code that implements it. But the last and most important thing is—that separates a design pattern from what we would call a “best practice” is—it has &lt;strong&gt;consequences&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;See that one is the one that is typically missed by almost any candidate I interview. What does it mean to “have consequences?”&lt;/p&gt;
&lt;p&gt;You see even when I say that they’re like, “Oh yeah!”&lt;/p&gt;
&lt;p&gt;And then I go, “Well, what does consequences mean?”&lt;/p&gt;
&lt;p&gt;And then they sort of fall on that. *laughter*&lt;/p&gt;
&lt;p&gt;The answer is it’s a tradeoff! It’s programming and programming is about tradeoffs. You can do X and not do Y.&lt;/p&gt;
&lt;p&gt;An example of a design pattern in web &lt;strong&gt;design&lt;/strong&gt; is if I said “&lt;a href="http://www.useit.com/alertbox/991114.html" title="When Bad Design Becomes the Standard—UseIt. Also known as breadcrumb trails" class="commentary"&gt;breadcrumbs&lt;/a&gt;” and I said “&lt;span title="also called navigation tabs" class="commentary"&gt;tabs&lt;/span&gt;” you know what I mean. So it is a vocabulary word. They solve a problem—the problem of navigation on your website. They are independent of the code that implemented it:I didn’t tell you the HTML—HTML that implements tabs varies from &lt;a href="http://www.apple.com/"&gt;Apple.com&lt;/a&gt; to &lt;a href="http://www.amazon.com" title="Amazon"&gt;Amazon.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And finally, it does have consequences: which one you use depends on those consequences. For instance, if I wanted to navigate horizontally and shallow, then I’d use a tab pattern. But if I need to navigate too far horizontally, the pattern breaks down and it becomes vestigial like in Amazon—there are too many sites there. And, if I need to navigate deep, then I’d use breadcrumbs. But you wouldn’t use both because the consequences of both is screen real estate, user confusion, etc.&lt;/p&gt;
&lt;p&gt;So those are the consequences of a &lt;strong&gt;web design&lt;/strong&gt; pattern. So apply that to programming and you have programming &lt;strong&gt;design patterns&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And why I mention this is because I want to mention that whenever I rail on Rails or rip on your framework, every criticism is coming from this concept of &lt;em&gt;There are consequences&lt;/em&gt;. When you use a framework, you make a choice. When you adopt a framework, you adopt all the choices that that framework designer has adopted—so you have to be &lt;strong&gt;very&lt;/strong&gt; careful in which framework you are going to use.&lt;/p&gt;
&lt;p&gt;And if you are &lt;strong&gt;developing&lt;/strong&gt; your own framework, those things are true too.&lt;/p&gt;
&lt;h3&gt;The Pareto Principle&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;“@paulwander and @rza you escaped #zendcon? losers! you missed the best keynote! (and now a @tychay talk)” —&lt;a href="http://twitter.com/ijansch/statuses/925170186"&gt;ijansch&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span title="Okay, I’m exaggerating." class="commentary"&gt;For 99% of all frameworks out there&lt;/span&gt;, the biggest downfall is &lt;a href="http://en.wikipedia.org/wiki/Pareto_principle" title="Pareto principle—Wikipedia"&gt;the Pareto Principle&lt;/a&gt;. This is also known as the 90-10 or 80-20 rule.&lt;/p&gt;
&lt;p&gt;If you were to look at your codebase, and you were to go into subversion and look at how many times did that line get edited for each line and plot out the number of lines edited the number of times, you’d see a curve that looks like &lt;a href="http://en.wikipedia.org/wiki/Pareto_distribution" title="Pareto distribution—Wikipedia"&gt;this&lt;/a&gt;. The horizontal is the number of edits and the vertical would be the number of lines that had that many edits or more.&lt;/p&gt;
&lt;p&gt;In other words, about 90% of the lines of code have about 10% of your edits and out here only about 10% of your lines would account for 90% of your edits (and 90% of your time). Note that initially this isn’t true! When you first build your website, it is flatter like this, but over time, this function gets steeper and steeper. It depends how long your website is up—how much work you put into it. But eventually, for websites that are long-lived, will exhibit this behavior and this behavior is known as the Pareto Principle.&lt;/p&gt;
&lt;p&gt;And it’s not just websites, it’s also a principle of economics, and almost every other thing you see.&lt;/p&gt;
&lt;p&gt;What I’d like to point out here is this area is where frameworks are by definition—you can’t prevent this, itis just a reality. Frameworks write the 90% of your code that is only going to take 10% of your time in the long run.&lt;/p&gt;
&lt;p&gt;That doesn’t mean you shouldn’t use frameworks at all, I’m just pointing out that you can’t get around it. But the other area—that 10% of the code that takes 90% of the time— is the part of the code that makes your website perform differently from all the other websites and products out there.&lt;/p&gt;
&lt;p&gt;So, this means that the areas that are different, the areas that are trouble are the ones you are going to spend all your time on. When your site is long-lived, the advantage you get from adopting a framework will go down.&lt;/p&gt;
&lt;p&gt;So one solution to using frameworks is to not program any website that you plan on maintaining, then go use frameworks! *laughter* This seems ironic, but in the next section that I’ll give you examples where this is the case.&lt;/p&gt;
&lt;h3&gt;The rock and the hard place.&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;“so is @tychay now ripping on porn and rails? #zendcon” —&lt;a href="http://twitter.com/ibspoof/statuses/925172649"&gt;ibspoof&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“#zendcon @TyChay is talking about Rails&amp;#8230; oh god. RUN” —&lt;a href="http://twitter.com/caseysoftware/statuses/925175139"&gt;CaseySoftware&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;Fuck that shit, I can just go to SourceForge and type &amp;#8216;recipe.&amp;#8217;&amp;#8221; #zendcon #tcfc” —&lt;a href="http://twitter.com/elazar/statuses/925177770"&gt;elazar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;Fuck that shit, I can just go to Sourceforge and type in &amp;#8216;recipe&amp;#8217;&amp;#8221; &amp;#8212; @tychay #zendcon” —&lt;a href="http://twitter.com/dcousineau/statuses/925177928"&gt;dcousineau&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;I know it sucks as a security model, but fuck, it&amp;#8217;s easy to install, right?&amp;#8221; #zendcon #tcfc” —&lt;a href="http://twitter.com/elazar/statuses/925178358"&gt;elazar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“&amp;#8221;Fuck, I can download and install it&amp;#8230; hell, I don&amp;#8217;t even have to do that!&amp;#8221; #zendcon #tcfc” —&lt;a href="http://twitter.com/elazar/statuses/925178843"&gt;elazar&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This brings me to the next challenge which is the concept which is the one of a “rock and a hard place.”&lt;/p&gt;
&lt;p&gt;Here is Ruby *laughter* which is equal to Rails which is equal to frameworks in general (on the web). And then there is a rock here, and a hard place here. And Ruby has to navigate this Scylla and this Charibdis.&lt;/p&gt;
&lt;p&gt;The thing is on one side you have “write it yourself.” So this is the Pareto Principle in action. At the point that the Principle kicks in, then you’d rather have the code written by yourself where you can handle the edits, because you are going to end up either ripping out the framework or keeping it and rewrite it.&lt;/p&gt;
&lt;p&gt;So when you hear some guy interviewed at Twitter &lt;a href="http://www.radicalbehavior.com/5-question-interview-with-twitter-developer-alex-payne/" title="5 Question Interview with Twitter Developer Alex Payne—Radical Behavior"&gt;and he says&lt;/a&gt;: “Well the problem with &lt;span title="which is basically the core programming design pattern of Rails" class="commentary"&gt;Active Record&lt;/span&gt;, is that eventually you end up ripping out the very part that attracted you to it in the first place.” He is basically talking about this. Twitter is a long-lived site and now they are reaching the point that is forcing them to rip apart Rails.&lt;/p&gt;
&lt;p&gt;The other area here is a story I have: When Rails first came out, a bunch of engineers at Plaxo were really into it, so I looked into it. They tried to convince me I was wrong and that Rails is the shit. *laughter*&lt;/p&gt;
&lt;p&gt;Because you know me, I don’t believe anything is the shit. I was very attracted to things like Active Record and its concept of &lt;a href="http://en.wikipedia.org/wiki/CRUD_(acronym)" title="CRUD(acronym)—Wikipedia"&gt;CRUD&lt;/a&gt;—that’s “create read update delete. To simplify all data access into those four concepts and the building of this stuff in the REST style via &lt;a href="http://www.fusebox.org/" title="Fusebox"&gt;Fusebox&lt;/a&gt; methodology in order to handle all the resources.&lt;/p&gt;
&lt;p&gt;But then I stopped and wondered: how is all this going to really work? I was working on a tutorial—basically a recipe database. I was very impressed. I build everything in about twenty lines of Rails—everything. I was like, “Wow! Twenty lines built me a shitty recipe database.” *laughter*&lt;/p&gt;
&lt;p&gt;If I were to do this in PHP, it would probably take me about four to six hours—I’d have to set up MySQL, I’d have to configure PHP and Apache, and blah, blah, blah. That’s pretty impressive to do in 15 lines of code what took me four hours. Of course the Pareto principle kicks in…&lt;/p&gt;
&lt;p&gt;On the other hand, I was like, “Fuck that shit!” *laughter* “I can just go to sourceforge and type ‘recipe.’” *laughter*&lt;/p&gt;
&lt;p&gt;And that’s what the rock is. The rock is download. And what I mean by this is—think of the internet today. Think of things like Wikipedia (or Wikimedia: the app that runs Wikipedia). Think of things like Wordpress. Think of things like Phorum—I know for you security people it sucks as a secure application, but fuck, it’s easy to install, right? *laughter* Think of CMS’s—there are a zillion—take a pick and choose your poison. Think of Trac when you are doing internal source code viewer and bug tracking system.&lt;/p&gt;
&lt;p&gt;Think of all of these and say: “Ruby! Fine! I can do all these. I can build a Wordpress in like a couple weeks—and to rebuild that in PHP it might take me a year.” But Fuck, I can download… Hell, I don’t even have to do that. Most hosting services have a button that you can click on that says, “Install Wordpress” and I click on that and I’m done! *laughter*&lt;/p&gt;
&lt;p&gt;And maybe you say, “That’s fine for those things.” But then think of how many commercial websites are on the internet that are actually powered by Wordpress, or by Wikimedia, or by Phorum. When you stop and think about it, the download is a &lt;strong&gt;huge&lt;/strong&gt; thing.&lt;/p&gt;
&lt;p&gt;Ruby is making it easy to develop the sites that have been already been developed, but it is not necessarily making it easier to develop the websites of the future. And maybe at that point, the Pareto Principle becomes the determinator and we meet the hard place.&lt;/p&gt;
&lt;p&gt;So if you are choosing a framework in general, you should be wondering whether it satisfies this sweet spot—this Jason and The Argonauts between this Scylla and this Charybdis, this area between the pareto principle and the download.&lt;/p&gt;
&lt;p&gt;I’ll finish this section in a future post. &lt;img src='http://terrychay.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; Just come to my talk!&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/444921131" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/challenges-and-choices.shtml#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/challenges-and-choices.shtml/feed/atom" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/challenges-and-choices.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Elane Photography]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/443826239/elane-photography.shtml" />
		<id>http://terrychay.com/blog/?p=1246</id>
		<updated>2008-11-06T20:51:59Z</updated>
		<published>2008-11-06T00:50:58Z</published>
		<category scheme="http://terrychay.com/blog" term="business and economics" /><category scheme="http://terrychay.com/blog" term="photography" /><category scheme="http://terrychay.com/blog" term="religion and politics" />		<summary type="html"><![CDATA[A friend of mine, a colleague and excellent photographer who happens to be a defense-of-marriage person posted a status update that erupted into a firestorm of comments on Facebook. His claim was that people like me are “intolerant” of his beliefs.
To those people, I might say disagreement is not intolerance. I&#8217;m not asking you to [...]]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/elane-photography.shtml">&lt;p&gt;A friend of mine, a colleague and &lt;a href="http://acmephotography.net/" title="Acme Photography"&gt;excellent photographer&lt;/a&gt; who happens to be a defense-of-marriage person posted a status update that erupted into a firestorm of comments on Facebook. His claim was &lt;a href="http://terrychay.com/blog/article/on-proposition-8.shtml" title="On Proposition 8"&gt;that people like me&lt;/a&gt; are “intolerant” of his beliefs.&lt;/p&gt;
&lt;p&gt;To those people, I might say disagreement is &lt;strong&gt;not&lt;/strong&gt; intolerance. I&amp;#8217;m not asking you to change your beliefs, I only &lt;strong&gt;hope&lt;/strong&gt; that you be tolerant to others theirs. As for the bible, it says &lt;a href="http://www.suite101.com/article.cfm/new_thought/105724 " title="Marriage--Gay, Straight--And The Bible—New Thought"&gt;many things about marriage&lt;/a&gt;, some of which you’d be hard pressed to defend now. Some of “the other side,” you know, love us some scripture too. &lt;img src='http://terrychay.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;But more interesting than that rehash would be the part I find fascinating. In the course of the comments he brought up &lt;a href="http://www.npr.org/templates/story/story.php?storyId=91486191" title="When Gay Rights and Religious Liebrties Clash—npr"&gt;an interesting case&lt;/a&gt; that apparently has been making the rounds:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;A same sex couple in Albuquerque asked a photographer, Elaine Huguenin, to shoot their commitment ceremony. The photographer declined, saying her Christian beliefs prevented her from sanctioning same-sex unions. The couple sued, and the New Mexico Human Rights Commission found the photographer guilty of discrimination. It ordered her to pay the lesbian couple&amp;#8217;s legal fees ($6,600). The photographer is appealing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Hmm, at first blush, I side with the photographer. But then a little thought breaks it all apart.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-1246"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What if I take the same statement up above and replace “same sex couple” with “mixed race couple”? Well in that case, it’s clearly “stepping in it.” Oh, the hard bigotry I engaged in at first blush!&lt;/p&gt;
&lt;p&gt;Not only that, the damages were &lt;span class="commentary" title="The decision states that the plaintiff could have recovered damages also, but opted only for the legal fees"&gt;just the legal fees&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The issue, of course, is as a photographer we understand that there is a first amendment right in this case. A photographer is an artist and &lt;a href="http://washingtontimes.com/news/2008/feb/25/artist-hit-for-refusal-on-beliefs/" title="Artist hit for refusal on beliefs—Washington Times. Note that the Washington Times is a biased publication, but other than that one NPR hit piece, there was very little press on this. I am linking it because it gives an adequate understanding of the photographer’s defense and the slippery slope that some might feel we are engaging in." class="commentary"&gt;should feel free to exercise their first amendment rights&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When it comes to understanding the issue at hand, I guess the biggest mistake was &lt;a href="http://volokh.com/files/willockopinion.pdf" title="Willock vs. Elane Photography Opinion. When reading this I could actually see how someone more socially conservative than me could make this mistake. :-O Let this be a warning when you confuse your freedom of expression as an individual and your LLC’s actions as a company!" class="commentary"&gt;the e-mail trail that the photographer left&lt;/a&gt;. No doubt, we engage in soft bigotry all the time—&lt;a href="http://terrychay.com/blog/article/buying-blue-state.shtml" title="Buying blue state"&gt;God knows I have!&lt;/a&gt; My position though is &lt;a href="http://photobusinessforum.blogspot.com/2008/02/rights-yours-mine-and-theirs.html" title="Rights:Yours, Mine and Theirs—Photo Business News"&gt;best expressed by Photo Business News&lt;/a&gt;: “Yes, you’re a business.”&lt;/p&gt;
&lt;p&gt;Still, I’ll be the first to admit, that it’s a tough pill for a religious social-conservative to swallow.&lt;/p&gt;
&lt;p&gt;I understand. That doesn’t mean I agree.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/443826239" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/elane-photography.shtml#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/elane-photography.shtml/feed/atom" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/elane-photography.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Voting in America]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/442670246/voting-in-america.shtml" />
		<id>http://terrychay.com/blog/?p=1241</id>
		<updated>2008-11-05T00:38:57Z</updated>
		<published>2008-11-05T00:35:57Z</published>
		<category scheme="http://terrychay.com/blog" term="about me" /><category scheme="http://terrychay.com/blog" term="photos" /><category scheme="http://terrychay.com/blog" term="religion and politics" />		<summary type="html"><![CDATA[California is the swingiest of swing states. In recent memory, two Republican presidents were governors here. Now it is bluer than the balls of all those fratboys voting for Sarah Palin. Even though the Presidential election in this state is a foreground conclusion, you still get a lot of mail

Election mailers
North Beach, San Francisco, California
Nikon [...]]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/voting-in-america.shtml">&lt;p&gt;California is the swingiest of swing states. In recent memory, two Republican presidents were governors here. Now it is bluer than the balls of all those fratboys voting for Sarah Palin. Even though the Presidential election in this state is a foreground conclusion, you still get a lot of mail&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3003268505/" title="Voting mailers by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3017/3003268505_80efb7e155.jpg" width="500" height="333" alt="Voting mailers" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;b&gt;Election mailers&lt;/b&gt;&lt;br /&gt;
North Beach, San Francisco, California&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nikon D3, Nikkor 24-70mm f/2.8G ED AF-S, Canon 500D diopter&lt;/i&gt;&lt;br /&gt;
1/80sec @ f/2.8, iso 360, 28mm (28mm)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Especially egregious is the phone book the city of SF gave me. Not that the California ballot measures were that thin either. Luckily, I had a stomach flu this morning, so I had time to read and research this stuff.&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3004107416/" title="Election packet by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3007/3004107416_027f78161a.jpg" width="500" height="333" alt="Election packet" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;b&gt;Election Packet&lt;/b&gt;&lt;br /&gt;
North Beach, San Francisco, California&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nikon D3, Nikkor 24-70mm f/2.8G ED AF-S, Canon 500D diopter&lt;/i&gt;&lt;br /&gt;
1/80sec @ f/2.8, iso 320, 32mm (32mm)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;There was no line at my polling place. It was next to Trader Joe’s.&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3003354677/" title="My polling place by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3067/3003354677_ac6a30fddb.jpg" width="500" height="375" alt="My polling place" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;b&gt;My polling place&lt;/b&gt;&lt;br /&gt;
North Beach, San Francisco, California&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Panasonic Lumix DMC-LX1&lt;/i&gt;&lt;br /&gt;
1/200sec @ f/4, iso 80, 6.3mm (28mm)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Yes, I voted for “That One.”&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://www.flickr.com/photos/tychay/3003356051/" title="Yes, I’m voting for “That One.” by tychay, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3185/3003356051_71c78f0381.jpg" width="500" height="375" alt="Yes, I’m voting for “That One.”" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;b&gt;Yes, I’m voting for “That One.”&lt;/b&gt;&lt;br /&gt;
North Beach, San Francisco, California&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Panasonic Lumix DMC-LX1&lt;/i&gt;&lt;br /&gt;
1/30sec @ f/2.8, iso 80, 6.3mm (28mm)&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;After I scanned in my ballots, I grabbed &lt;span title="In 2004, it was a Diebold branded sticker." class="commentary"&gt;an “I Voted!” sticker&lt;/span&gt;. At the street corner an old lady noticed me holding it and thanked me.&lt;/p&gt;
&lt;p&gt;I’ve never been more proud to be living in America.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/442670246" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/voting-in-america.shtml#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/voting-in-america.shtml/feed/atom" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/voting-in-america.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[The party of ideas]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/436102803/joe-the-socialist.shtml" />
		<id>http://terrychay.com/blog/?p=1234</id>
		<updated>2008-10-29T18:26:36Z</updated>
		<published>2008-10-29T18:17:22Z</published>
		<category scheme="http://terrychay.com/blog" term="business and economics" /><category scheme="http://terrychay.com/blog" term="religion and politics" />		<summary type="html"><![CDATA[I was reading this article which makes reference to something I just had to look up.
Ahh, yes! The unlicensed monkey with the plunger telling me that a 3% increase in the marginal tax rate is somehow equivalent to collective ownership. Oh so amusing…

Graphic and text from SadlyNo:
Obama&#8217;s proposed hike of the top marginal rate to [...]]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/joe-the-socialist.shtml">&lt;p&gt;I was reading &lt;a href="http://www.huffingtonpost.com/howard-schweber/the-republican-party-has_b_138854.html" title="The Republican Party Has Jumped the Shark—Howard Schweber"&gt;this article&lt;/a&gt; which makes reference to something &lt;a href="http://features.csmonitor.com/politics/2008/10/29/joe-the-plumber-is-now-joe-the-foreign-policy-advisor/" title="Joe the Plumber is now Joe the Foreign Policy Advisor—Christian Science Monitor"&gt;I just &lt;strong&gt;had&lt;/strong&gt; to look up&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ahh, yes! &lt;a href="http://terrychay.com/blog/article/revisiting-saddleback.shtml" title="Revisitng Saddleback"&gt;The unlicensed monkey with the plunger&lt;/a&gt; telling me that a 3% increase in the &lt;a href="http://en.wikipedia.org/wiki/Tax_rate#Marginal" title="Tax Rate—Wikipedia"&gt;marginal tax rate&lt;/a&gt; is somehow equivalent to &lt;a href="http://en.wikipedia.org/wiki/Socialism" title="Socialism—Wikipedia"&gt;collective ownership&lt;/a&gt;. Oh so amusing…&lt;/p&gt;
&lt;div class="flimg" style="width:320px"&gt;&lt;a href="http://www.sadlyno.com/archives/12972.html" title="Why does Joe the Plumber hate Neil Armstrong?—Sadly No"&gt;&lt;img style="width:320px; height:200px" src="http://www.sadlyno.com/wordpress/uploads/2008/10/obamataxprimer.jpg" title="Obama’s Radical Tax Agenda" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;&lt;a href="http://www.sadlyno.com/archives/12972.html" title="Why does Joe the Plumber hate Neil Armstrong?—Sadly No"&gt;Graphic and text from SadlyNo&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Obama&amp;#8217;s proposed hike of the top marginal rate to 39.6 percent doesn&amp;#8217;t represent the highest it&amp;#8217;s ever been, not by a long shot. Joe the Plumber might be interested to learn that, in fact, when the top marginal rate was lots and lots higher, America did all sorts of cool shit, like win two &lt;a href="http://en.wikipedia.org/wiki/World_war_1"&gt;world&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/WwII"&gt;wars&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/ARPANET"&gt;invent the Internet&lt;/a&gt; and &lt;a href="http://members.aol.com/ccspevam/glfsht.jpg"&gt;play golf on the Moon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now it may be that Joe the Plumber, John McCain and Sarah Palin don&amp;#8217;t like &lt;a href="http://i207.photobucket.com/albums/bb113/GeorgiaHuq/cap.jpg"&gt;kicking Nazi ass&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Internet"&gt;cheap porn&lt;/a&gt;, and &lt;a href="http://blogs.redding.com/mbeauchamp/archives/Tang.gif"&gt;Tang&lt;/a&gt;. But real Americans do, even if they sometimes forget how we got to do and have those things. It took tax money to achieve the national greatness we all know and love. Conversely, when we stopped taxing rich people, lots of terrible crap happened&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://www.balloon-juice.com/?p=12992#comment-1076640"&gt;Favorite comment:&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I’m worried about being taxed more under Obama, because I was planning on &lt;a href="http://terrychay.com/blog/article/more-libertarian-hypocracy-why-big-business-rules.shtml" title="More libertarian hipocracy. I am continually confused with the concept of “When I win the lottery, I’ll…” Why would you want to get money you didn’t earn. Mythical “welfare queens” are bad, but real taxes on the Stupid is good." class="commentary"&gt;winning the lottery&lt;/a&gt; in the next couple years.&lt;/p&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/436102803" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/joe-the-socialist.shtml#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/joe-the-socialist.shtml/feed/atom" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/joe-the-socialist.shtml</feedburner:origLink></entry>
		<entry>
		<author>
			<name>tychay</name>
						<uri>http://terrychay.com/</uri>
					</author>
		<title type="html"><![CDATA[Defending Montana]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/tychay/~3/434874997/defending-montana.shtml" />
		<id>http://terrychay.com/blog/?p=1227</id>
		<updated>2008-10-28T16:44:00Z</updated>
		<published>2008-10-28T16:25:34Z</published>
		<category scheme="http://terrychay.com/blog" term="religion and politics" />		<summary type="html"><![CDATA[For the last three years, a number of people of both parties have ridiculed the 50 State Strategy adopted by Howard Dean and Barrack Obama.
Recently, the Republican National Committee just spent half a million defending McCain in Montana. Montana! And remember, that’s money put there because the ]]></summary>
		<content type="html" xml:base="http://terrychay.com/blog/article/defending-montana.shtml">&lt;p&gt;For the last three years, a number of people of both parties have ridiculed &lt;a href="http://en.wikipedia.org/wiki/Howard_Dean#50-state_strategy" title="Howard Dean—Wikipedia"&gt;the 50 State Strategy&lt;/a&gt; adopted by Howard Dean and Barrack Obama.&lt;/p&gt;
&lt;p&gt;Recently, the Republican National Committee just &lt;a href="http://thecaucus.blogs.nytimes.com/2008/10/27/gop-puts-mccain-ads-up-in-montana/" title="G.O.P. Puts McCain Ads Up in Montana—The Caucus. Favorite comment: “This is the McCain version of ‘spreading the wealth.’”" class="commentary"&gt;spent half a million defending McCain in Montana&lt;/a&gt;. &lt;a href="http://www.fivethirtyeight.com/2008/10/road-to-270-montana.html" title="Road to 270: Montana—Five Thirty Eight"&gt;Montana&lt;/a&gt;! And remember, that’s money put there because the &lt;a href=http://www.boston.com/news/politics/2008/articles/2008/10/28/small_donors_not_spending_limits_fueling_obamas_last_lap/" title="Small donors, not spending limits, fueling Obama's last lap—Boston Globe"&gt;McCain campaign is outspent&lt;/a&gt; because of &lt;a href="http://www.nytimes.com/2008/06/20/us/politics/20obamacnd.html?hp" title="Obama Forgoes Public Funds in First for Major Candidate—New York Times"&gt;fundraising limits&lt;/a&gt;. Remember when, not more than a few years ago, it was taken as a given that the Republican campaign had much more money than the Democratic one?&lt;/p&gt;
&lt;p&gt;Some people need to own up and admit they were wrong about campaign strategy. The Democratic Party has been in denial about this ever since Clinton and the party suffered for two decades. If the Republican Party doesn’t changed their &lt;a href="http://www.amconmag.com/article/2006/oct/23/00011/" title="Exit Stage Right—American Conservative Magazine. Two years and counting…" class="commentary"&gt;time in the wilderness&lt;/a&gt; will be &lt;a href="http://abcnews.go.com/Politics/Vote2008/story?id=6124663&amp;#038;page=1" title="Rift Cracks “Demoralized” McCain Campaign—ABC News. Note the similarities between the collapse of the McCain campaign and the collapse of Hillary Rodham Clinton’s nomination. In former is aggravated by the VP ticket trying to jockey for a position in 2012. Here’s a hint to the party: Good luck with that one! As long as she’s part of national politics, the Democratic party can count on my (and the majority) vote." class="commentary"&gt;much longer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Leaving you with a photo of a terrorist fist bump training camp taken by Joe Raedle of Getty:&lt;/p&gt;
&lt;div class="flimg" style="width:500px"&gt;&lt;a href="http://blogs.tnr.com/tnr/blogs/the_stump/archive/2008/10/26/photo-of-the-day-oct-26.aspx" title="Photo of the Day—The Stump @ National Review"&gt;&lt;img src="http://farm4.static.flickr.com/3059/2981050933_da3af7c327.jpg" width="500" height="466" alt="56014365" /&gt;&lt;/a&gt;
&lt;div class="caption"&gt;Favorite comment: “Black secret service agent, black car, black candidate hitting a small, white child who is grimmacing in terror. What next America? &lt;a href="http://terrychay.com/blog/article/rollover-obama.shtml" title="He’s onto your B.S. As you can see, I ridiculed people about the financing implications then so I’m gloating right now. ;-)" class="commentary"&gt;The negrofication of America&lt;/a&gt; has begun.”&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Hmm, looking at the picture, it looks like I’m going to have to add &lt;cite&gt;the Wall Street Journal&lt;/cite&gt; to the list of liberal rags.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/tychay/~4/434874997" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://terrychay.com/blog/article/defending-montana.shtml#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://terrychay.com/blog/article/defending-montana.shtml/feed/atom" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://terrychay.com/blog/article/defending-montana.shtml</feedburner:origLink></entry>
	</feed>
