<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>James Pine Has A Blog</title>
	<atom:link href="http://www.madpickles.org/rokjoo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.madpickles.org/rokjoo</link>
	<description>A Collection of Thoughts and Ideas</description>
	<lastBuildDate>Tue, 10 Apr 2012 04:10:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Royal Flush in the Family</title>
		<link>http://www.madpickles.org/rokjoo/2012/03/23/royal-flush-in-the-family/</link>
		<comments>http://www.madpickles.org/rokjoo/2012/03/23/royal-flush-in-the-family/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 16:13:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Poker]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=651</guid>
		<description><![CDATA[tl;dr Last month I was part of an event 6 times rarer than winning the MEGA Millions Lotto jackpot. My grandfather played poker with a core group of friends (to my knowlegde he did not play in card rooms or casinos) and taught me the basics of the game. We played Five-card draw with penny [...]]]></description>
			<content:encoded><![CDATA[<p>tl;dr Last month I was part of an event 6 times rarer than winning the <a href="http://www.megamillions.com/" target="_blank">MEGA Millions Lotto</a> jackpot.</p>
<p>My grandfather played poker with a core group of friends (to my knowlegde he did not play in card rooms or casinos) and taught me the basics of the game. We played <a href="http://en.wikipedia.org/wiki/Five-card_draw" target="_blank">Five-card draw</a> with penny antes. Those instances and the occasional occasional video poker machine summed up my poker experience until the recent <a href="http://en.wikipedia.org/wiki/Texas_hold_'em" target="_blank">Texas Hold&#8217;em</a> craze that started with <a href="http://en.wikipedia.org/wiki/Chris_Moneymaker" target="_blank">Chris Moneymaker</a>&#8216;s 2003 <a href="http://en.wikipedia.org/wiki/Wsop" target="_blank">World Series of Poker</a> victory and the explosion of online gambling. I learned the ropes of that poker variant and play with friends and <a href="http://www.madpickles.org/rokjoo/2009/01/27/full-boats/" target="_blank">in casinos</a> when the opportunity arises.</p>
<p>A few years ago my grandmother asked me if I wanted any of my grandfather&#8217;s belongings (he had passed away several years earlier). I remembered a framed royal flush, signed and dated by witnesses (I&#8217;m not sure whether he was playing Five-card draw at the time, and if so how many of the royal flush cards he was dealt vs. exchanged).</p>
<p><a href="http://www.flickr.com/photos/madpickles/6862591042/" title="IMG_20120323_081210 by madpickles, on Flickr"><img src="http://farm8.staticflickr.com/7233/6862591042_c8c8fb0982.jpg" width="500" height="375" alt="IMG_20120323_081210"></a></p>
<p>On February 28th I was in South Lake Tahoe for a company ski trip and sat down in the Harvey&#8217;s poker room with a couple of co-workers (no-limit Texas Hold&#8217;em, $2 small blind, $3 big blind). After playing for about an hour, our table of ten started to lose people, eventually becoming a table of five and disbanding. My co-workers moved to a table with two empty seats and I to a table with one (maximum of ten players per table).</p>
<p>After a few unworthy hands the dealer tossed KQ&spades; (king and queen of spades) as my starting hand. I sat in fifth position. One person called and one folded in front of me, I called, two people called after me and both blinds joined in. With six players and $18 in the pot, the dealer flopped A&spades;K&diams;J&spades;. The blinds checked, the player in front of me bet $10. I called, the two players behind me called and the blinds folded. Four players left, $53 in the pot (dealer took $4 for the casino whenever the pot reached $40). The turn was 3&clubs;. The person in front of me checked, I checked, the next person checked and then the last player bet $15. The player in front of me folded, I called and the player after me called. Three players left, $97 in the pot. The river was T&spades;. Holy cow, not only did I have a flush, but I had a royal flush, the highest possible hand in all of poker.</p>
<p>First to act and trying to keep my cool, I took a moment to consider my options. I could check, hoping one of the other two players would bet and then raise them. I could make a small bet, say $20-$30 and perhaps someone would call or re-raise me. Or I could make a sizable bet and it&#8217;s possible someone might think I was trying to buy the pot. The people remaining each had over $500 worth of chips in front of them and I had a little less than $200. I put out $75, about 75% of the pot and 40% of my stack in the hopes that someone else had hit something and thought I was attempting to buy the pot. The next guy thought for a while, but eventually folded and the other player quickly folded, oh well. I didn&#8217;t have to show my cards, but how could I not show a royal flush?</p>
<p>So I flipped over my cards and the table erupted. It also turned out the casino had a bonus jackpot which grew slowly based on the number of hands dealt and I received 5% of it for showing a royal flush. It wasn&#8217;t a boatload of money i.e. I learned the casino isn&#8217;t required to report payouts of under $600 to the government, but it was a pleasant surprise. I tipped the dealer about 10% of my bonus and then thought of my grandfather&#8217;s royal flush and asked if I could keep the deck of cards. The dealer quickly said that wasn&#8217;t allowed, gathered the cards and placed them in the shuffler as if nothing special had happened (he mentioned he had dealt a royal flush earlier in the day). I wanted my tip back.</p>
<p>I received some crappy cards for the next hand and immediately mucked them. As I finished stacking my winnings and lamented not having an item of memorabilia to go with my grandfather&#8217;s, not even a photo, something strange happend. The table erupted again as another player had just turned over a royal flush in hearts. The board had AKJT&hearts; (not sure about the fifth card) on it and they had Q&hearts; in their hand. This was a first for everyone on the table, including the dealer, two royal flushes in a row. People jokingly asked if the dealer was worried about getting fired, after all he had caused the casino to payout ~15% of the bonus today (he answered no).</p>
<p>My co-workers and I started wondering how often one could expect two royal flushes in a row during a game of Texas Hold&#8217;em. In the simplest scenario i.e. choosing 5 random cards from a standard 52 card deck, the odds of getting a royal flush are 1 in 649,350 hands. That number is generated via a branch of mathematics called <a href="http://en.wikipedia.org/wiki/Combinatorics" target="_blank">Combinatorics</a>. First one calculates the number of ways to select 5 cards from 52 (without replacing any during the selection process). There are 52 different ways 1 card can be picked from a deck, one for each card. That leaves 51 cards from which one can select another card, and after that card has been picked, 50 cards remain etc. So one might think the number of ways to select 5 cards from a 52 card deck is 52*51*50*49*48 = 311,875,200.</p>
<p>That calculation would be correct if one was looking for all the permutations of 5 card poker hands i.e. the order was important e.g. selecting A2358&clubs; was considered different from picking 35A82&clubs;. In poker, combinations not permutations matter. Our original computation can be written using factorial notation i.e. 52!/(52-5)! = 52!/47!. It&#8217;s easy to work out with smaller numbers e.g. select 3 cards from a deck of 5 = 5*4*3 = 60 and 5!/(5-3)! = 5!/2! = (5*4*3*2*1)/2*1 = 60. In the case of choosing 3 cards from a deck of 5, one must also divide by 3! since any permutation works. As an example, for 3 items A, B and C there are 6 combinations, ABC, ACB, BAC, BCA, CAB, CBA . This is because there are X different items which can occupy the first position, X-1 for the next, etc. which leads to X!.</p>
<p>Getting back to the 5 cards out of 52 example our the number of possible 5 card hands in poker is 52!/(5!*(52-47)!) or 2,598,560. This is often written as (52 choose 5) and the math becomes N!/(K!*(N-K)!) for any (N choose K). There are 4 possible royal flushes so the odds of getting dealt one given 5 cards are 4 in 2,598,560 or 1 in 649,350. Given 7 cards as in Texas Hold&#8217;em, getting a royal flush of 5 cards should happen more often. The number of possible 7 card hands is (52 choose 7) = 133,784,560. If someone has a 5 card ace high straight flush, it doesn&#8217;t matter what the other 2 cards are, so we can simply multiply the number of different royal flushes, 4, by the number of ways to choose 2 cards out of the remaining 47 (52-5 since the 5 cards that make up a royal flush are already out of the deck). (47 choose 2) = 1,081, 4*1,081 = 4,324 making the odds 4,324 in 133,784,568 or 1 in 30,940. </p>
<p>At my poker playing peak, probably sometime in 2004 or 2005, I played online a few hours per week, at a friends house a few hours once a month and at a casino for a few hours once a year, so 3*52+3*12+3 = 195 hours of poker/year. If I saw 20 hands/hour, that&#8217;d be 20*195 = 3900 hands/year and I so perhaps I&#8217;d expect to get one royal flush roughly every 8 years.</p>
<p>But I hadn&#8217;t even witnessed a royal flush before; when playing at a table with multiple people, there is more than one 7 card hand happening at a time (often there are 8-10 players). So how often could I expect to witness a royal flush? One of my co-workers came up with this line of thinking. Royal flushes are unique in that no matter how many people are playing, only one person can have a royal flush per hand i.e. the probabilities for each additional player at the table getting a royal flush are mostly disjoint (mostly because if the royal flush appears in the 5 community cards, everyone at the table has a royal flush so that event should only be counted once). We&#8217;ve already calculated the odds of getting a royal flush given 7 cards, so for each additional player at the table (assuming they stay in to the river) the probability of witnessing a royal flush goes up by the probability of a single person getting a royal flush. Let&#8217;s set some variables: </p>
<ul>
<li>RF5 = p(royal flush|5 cards) = probability of a royal flush given 5 cards = 4*(52 choose 5) = 0.00000154</li>
<li>RF7 = p(royal flush|7 cards) = probability of a royal flush given 7 cards = 4*(47 choose 2)/(52 choose 7) = 0.00003232</li>
<li>RFX = p(royal flush|X players at the river) = probability of a royal flush with X players at the river = X*RF7-(X-1)*RF5</li>
</ul>
<p>For RFX the (X-1)*RF5 factor removes the over-counting when the community cards contain a royal flush. The probability of that event is RF5 and it occurs once in each RF7. So subtracting X-1 of them leaves one for everyone to share. Plugging in the numbers for X = 10 yields 0.00030934 or 1 in 3,233 hands. </p>
<p>In reality, the odds are much lower as ten people staying in for the river card at the same table does not happen often, if ever. In many cases, the hand is over before the turn or river card gets shown and if the river does come into play, only a few people remain in the hand. So if on average, one out of every three hands goes to the river and when that happens, on average three players remain RFX is more like RF7-(3-1)*RF5 = 0.00002924 or 1 in 34,200 hands.</p>
<p>My other co-worker attacked the problem in a slightly different way, by summing the three probabilities of various ways a royal flush can occur in a game of Texas Hold&#8217;em i.e. 3 of the 5 community cards and both of cards from a single player make a royal flush, 4 of 5 community cards and one card from a single player make a royal flush and when 5 of 5 community cards and 0 cards from every player make a royal flush. To compute the odds that way, let&#8217;s set some variables (these again all presume all players at a table stay in until the river every game):</p>
<ul>
<li>C1 = p(1 royal flush card|royal flush, X players) = probability of a player getting the 1 card necessary to complete a royal flush given a royal flush is happening and X players are at the table = 2*X/(47 choose 1)</li>
<li>C2 = p(2 RF cards|royal flush, X players) = probability of a player getting the 2 cards necessary to complete a royal flush given a royal flush is happening and X players are at the table = X/(47 choose 2)</li>
<li>C3 = p(3 of 5|royal flush) = probability 3 of the 5 community cards are used by a player given a royal flush is happening = ((5 choose 3)*(47 choose 2))/(52 choose 5)</li>
<li>C4 = p(4 of 5|royal flush) = probability 4 of the 5 community cards are used by a player given a royal flush is happening = ((5 choose 4)*(47 choose 1)/(52 choose 5)</li>
<li>C5 = p(5 of 5|royal flush) = probability 5 of the 5 community cards are used by a player given a royal flush is happening = (5 choose 5)/(52 choose 5)</li>
<li>RFX = p(royal flush|X players at the river) = probability of a royal flush with X players at the river = 4*((C1*C4)+(C2*C3)+C5)</li>
</ul>
<p>A few notes about these variables:</p>
<ul>
<li>C1 and C2 presume a royal flush is possible i.e. the community cards have the 4 or 3 necessary cards and just give the odds of a player having the remaining 1 or 2 cards. That&#8217;s why 47 shows up in those equations, because 5 of the 52 cards in the deck are already accounted for as the community cards.</li>
<li>C1 has 2 as a factor in the numerator because a player has 2 chances of getting the remaining 1 necessary card. In C2, the player must have both cards necessary, so there is no extra factor.</li>
<li>In RFX 4 is a factor because there are 4 possible royal flushes.</li>
</ul>
<p>Plugging in the numbers for X = 10 we get:</p>
<ul>
<li>C1*C4 = (2*10*(5 choose 4)*(47 choose 1))/((47 choose 1)*(52 choose 5)) = (20*(5 choose 4))/(52 choose 5) = 100/2,598,560 = 0.0000385</li>
<li>C2*C3 = (10*(5 choose 3)*(47 choose 2))/((47 choose 2)*(52 choose 5)) = 10*10/2,598,560 = 0.0000385</li>
<li>C5 = 1/2,598,560 = 0.000000385</li>
<li>RFX = 4*(0.0000385+0.0000385+0.000000385) = 0.00030954 = 1 in 3,233 hands</li>
</ul>
<p>That&#8217;s exactly the same result via the first formula, phew. One non-obvious tidbit this way of thinking highlights is the probability of getting a royal flush with 4 cards in the community and one card in your hand (C1*C4) is exactly the same as getting a royal flush with 3 cards in the community and 2 cards in your hand (C2*C3).</p>
<p>Now that all the hard work is done, estimating how often one might expect two royals flushes at a ten player table where everyone stays in until the river on every had would be 0.00030954^2 or 0.00000000958 or 1 in every 10,436,778 hands. If I played 3,900 hands/year as originally estimated, I could expect this event to happen once every 2,676 years. Using our more realistic earlier estimate that one out of every three hands sees a river card and when that happens, there are three players still in the game, a royal flush would happen 1 in 34,200 hands (0.00002924) and a back-to-back occurrence would be 0.000000000855 or 1 in every 1,169,590,643 hands. For some perspective, the odds of winning the <a href="http://www.megamillions.com/" target="_blank">MEGA Millions Lottery</a> jackpot are almost 7 times better, approximately 1 in 176,000,000!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2012/03/23/royal-flush-in-the-family/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The World of Tumblr</title>
		<link>http://www.madpickles.org/rokjoo/2012/02/27/the-world-of-tumblr/</link>
		<comments>http://www.madpickles.org/rokjoo/2012/02/27/the-world-of-tumblr/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 03:39:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=640</guid>
		<description><![CDATA[My Flickr account, while public, is not something that gets many views. According to the stats, my photos have been viewed 23,710 times. 10% of those views are for one photo someone decided to link to in a comment on Digg in 2009 (original post is here and someone re-posted a link to my photo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/madpickles/" target="_blank">My Flickr account</a>, while public, is not something that gets many views. According to the stats, my photos have been viewed 23,710 times. 10% of those views are for one photo someone decided to link to in a comment on Digg in 2009 (original post is <a href="http://digg.com/news/story/Two_Majestic_Rupicaprid_Ninjas_On_A_Snowy_Slope">here</a> and someone re-posted a link to my photo as a story here <a href="http://digg.com/news/story/Three_Rupicaprid_Ninjas_Climb_A_Steep_Cliff_Wall" target="_blank">Three Rupicaprid Ninjas Climb A Steep Cliff Wall</a>).</p>
<p><a href="http://www.flickr.com/photos/madpickles/2705340318/" title="Mountain Goats From Goat Lick Overlook by madpickles, on Flickr" target="_blank"><img src="http://farm4.staticflickr.com/3129/2705340318_ca50e21bdb.jpg" width="333" height="500" alt="Mountain Goats From Goat Lick Overlook"></a></p>
<p>Digg did not allow embedding images directly into the post so I got to see the explosion of views firsthand. Recently I noticed a couple of referrers from tumblr.com in my stats, and they all happend to be for the same image of <a href="http://www.flickr.com/photos/madpickles/3477048561/" title="Yogurt Drinks by madpickles, on Flickr" target="_blank">Yogurt Drinks</a> from Amsterdam.</p>
<p><a href="http://www.flickr.com/photos/madpickles/3477048561/" title="Yogurt Drinks by madpickles, on Flickr" target="_blank"><img src="http://farm4.staticflickr.com/3561/3477048561_8b9b9e18f1.jpg" width="500" height="333" alt="Yogurt Drinks"></a></p>
<p>The Flickr stats showed only a few tens of people looked at the image directly on Flickr, but I was still curious what people were posting about my image. It turns out, there wasn&#8217;t much. The image was just one in a stream on various image centric tumblelogs. However, there were 775 &#8220;notes&#8221;, most of which appeared to be in a particular format: TumblrUser <action> this</p>
<p>For example:<br />
fairyfloss89 reblogged this from fusels<br />
jessicajmaciel liked this<br />
jessicajmaciel reblogged this from urban-princess</p>
<p>The UNIX utilities cut, sort, uniq and grep are my friends, so it was relatively easy to get some stats out of this data:</p>
<p><em>cut -d\  -f2 notes | sort | uniq -c</em></p>
<pre>
 156 liked
   1 love
   1 nomk
   1 posted
 606 reblogged
   1 reeeaally
   2 want
</pre>
<p>That command says using <space> as a delimiter (-d\ ) print the 2nd field (-f2) of each line, sort them and then count (-c) the number of unique occurances. Looks like there were 156 likes and 606 reblogs, so what where the others?</p>
<p><em>grep -v &#8220;liked\|reblogged&#8221; notes</em></p>
<pre>
i want a smoothie:(
id love to scoop one of these up
omk nomk nomk <img src='http://www.madpickles.org/rokjoo/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
I reeeaally want a mango pineapple smoothie right now.
DRINKING ONE RIGHT NOW
I want them all.
candystaples posted this
</pre>
<p>That command says print all lines that don&#8217;t contain (-v) the words liked or (\|) reblogged. Looks like 6 people decided to post a comment and the source post came from <a href="http://candystaples.tumblr.com" target="_blank">candystaples</a> (here&#8217;s a <a href="http://candystaples.tumblr.com/post/17679721496" target="_blank">link to the actual post</a>). People can both like and reblog the image, how many of those were there?</p>
<p><em>cut -d\  -f1 notes | sort | uniq -c | grep &#8220;^ \+2&#8243; | wc -l</em></p>
<pre>38</pre>
<p>That command says using <space> as the delimiter (-d\ ) print the 1st field (-f1) of each line, sort them, count (-c) the number of unique occurrences, print the lines that begin (^) with 1 or more <space> characters followed by a 2, and count those lines (-l).</p>
<p>So at least 606 + 156 &#8211; 38 = 724 unique people saw my image and liked or reblogged it. It turns out, when reblogging the comment format is TumblrUserA reblogged this from TumblrUserB. So candystaples was the source, but which other tumblelogs generated the more reblogs?</p>
<p><em>grep &#8220;reblogged this from&#8221; notes | cut -d\  -f5 | sort | uniq -c | sort -r | head&#8221;</em></p>
<pre>
  86 fusels
  75 iamfuckingglamorous
  37 dingyfeathers
  31 fashionistha
  17 madamelulu
  16 s-o-u-l
  14 urban-princess
  11 breakingthehabits
  10 izzyparadise
   9 sellyourseconds
</pre>
<p>That command says print all the lines that contain &#8220;reblogged this from&#8221;, using <space> as a delimiter (-d\ ) print the 5th field (-f5) of each line, sort them, count (-c) the number of unique occurances, sort those in reverse/descending (-r) order and print the first 10 (default for the head command).</p>
<p>I hadn&#8217;t really thought about what sort of multiplier to attach to my Flickr stats in order to determine how many people had actually viewed one of my photos. Clearly not every photo deserves a 10x or greater multiplier and in cases like this, 10x is likely to small e.g. if 700 people took the time to perform a like or reblog action, is that 1% of the number of people who actually saw the image? And this doesn&#8217;t take into account the times photos are just copied and posted elsewhere with no attribution e.g. my experience with a <a href="http://www.madpickles.org/rokjoo/2010/10/06/famous-board-games-photo/">Famous Board Games Photo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2012/02/27/the-world-of-tumblr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>City of Sacramento Parking Ticket Nonsense</title>
		<link>http://www.madpickles.org/rokjoo/2012/02/07/city-of-sacramento-parking-ticket-nonsense/</link>
		<comments>http://www.madpickles.org/rokjoo/2012/02/07/city-of-sacramento-parking-ticket-nonsense/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 16:21:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Domestic]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=618</guid>
		<description><![CDATA[When was the last time you put a coin into a parking meter and had to turn a knob in order to complete the transaction? I can&#8217;t remember when I last watched the red or yellow metal plates rise and fall, checked to see if the arrow indicated I had been credited the appropriate amount [...]]]></description>
			<content:encoded><![CDATA[<p>When was the last time you put a coin into a parking meter and had to turn a knob in order to complete the transaction? I can&#8217;t remember when I last watched the red or yellow metal plates rise and fall, checked to see if the arrow indicated I had been credited the appropriate amount of time.<br/><br />
<span style="float: left; margin-right: 5px;"><a href="http://www.flickr.com/photos/springfieldhomer/4301546414/" title="parking meter by Slideshow Bruce, on Flickr"><img src="http://farm3.staticflickr.com/2701/4301546414_572ebd5698_m.jpg" width="160" height="240" alt="parking meter" /></a></span>Growing up, I got a kick out of turning the knobs as I walked by, so tactile, usually accompanied by a grinding noise and then a clang as the arrow and plates sprung back into place. Nowadays when paying for street parking, more often than not I have to walk to a centrally located kiosk, get a printed stick and place it in a particular spot inside my car, but the notion of a parking meter still conjures up images of the mechanical one from my childhood. Note: The parking meters I remember apparently are made by a company named Duncan e.g. <a href="http://www.ebay.com/sch/i.html?_nkw=duncan+parking+meter&#038;_sacat=See-All-Categories" title="Duncan Parking Meters" target="_blank">Duncan Parking Meters</a><br />
<br/><br />
My dad and grandmother flew in from the East Coast this past Thanksgiving and we all went up to Sacramento to spend it with my wife&#8217;s family. After Thanksgiving dinner we drove to a hotel and I found parking across the street from the hotel. There was a sign (shown below as viewed from the driver&#8217;s seat the next morning) stating it was 1 hour parking from 8a-6p. I knew we&#8217;d be leaving before 9a the next morning, nothing indicated there was a fee and there was no parking meter by the car. It was late and dark so we hustled into the hotel to check-in.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6814851043/" title="parking by madpickles, on Flickr"><img src="http://farm8.staticflickr.com/7173/6814851043_a372e1d918.jpg" width="474" height="357" alt="parking"></a></p>
<p>The next morning we were at the car by 8:45a and to my surprise there was a parking ticket on the windshield. I looked around and saw a pay for parking kiosk about 75ft behind the car which I had missed the previous night as I had not looked in that direction. I vowed to contest it when I got home and wrote this: </p>
<p>December 4, 2011</p>
<p>City of Sacramento, Revenue Services<br />
P.O. Box 2551<br />
Sacramento CA 95812-2551</p>
<p>Dear Sir/Madam,</p>
<p>I would like to contest this parking citation:</p>
<p>Citation #:	 	#########<br />
Issue Date: 		25-Nov-11<br />
Location: 		1215 J St<br />
Violation Code: 	10.20.090 Meter Expired<br />
Vehicle License #:	#######</p>
<p>I parked at the above location around 10pm on 24-Nov-11 and saw the sign that said 1hr parking 8am-6pm. The next morning at 8:45am I went to move my car and saw I had been issued a parking ticket. There was no meter on the sidewalk next to the spot and no sign indicating the spot was metered. Here is a photo I took that morning from my car of the parking sign as viewed from the driver’s seat. I appreciate your time and understanding.</p>
<p>Sincerely,</p>
<p>James Pine</p>
<p>Because this was a legal challenge, I sent the letter via certified mail and requested a return receipt. My total postage cost was $5.74 or 13% of the actual fine! After nearly 3 months, I received the judgement and of course they denied my request to waive the fee, citing rule #2 of the <a href="http://www.cityofsacramento.org/transportation/parking/onstreetquestions.html" title="13 Ways to Park Legally in Sacramento" target="_blank">13 Ways to Park Legally in Sacramento</a>. Looking 100ft in either direction due to these parking pay stations seems like a step backward from the time when a meter right next to your car contained all the information necessary. To be fair, accepting credit cards and paper money in addition to coins is a step forward&#8230;though the number of times a parking machine has failed to accept my credit card or paper money is non-zero. Anyway, the real problem was that I did look for a parking sign, saw one above my car as indicated in the photo and did not consider that I might have to hunt down another parking sign for corroboration.</p>
<p>I would have continued contesting the ticket except for the fact that we donated our car to a charity a few weeks ago and didn&#8217;t want to cause them any trouble during their attempt to sell it. Perhaps the City of Sacramento will use the revenue from my citation to put up the proper signage&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2012/02/07/city-of-sacramento-parking-ticket-nonsense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blacking Out Your Website</title>
		<link>http://www.madpickles.org/rokjoo/2012/01/22/blacking-out-your-website/</link>
		<comments>http://www.madpickles.org/rokjoo/2012/01/22/blacking-out-your-website/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 19:14:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=610</guid>
		<description><![CDATA[On January 18, 2012 a number of websites &#8220;went dark&#8221; to protest the United States House of Representatives Stop Online Piracy Act and Senate Protect IP Act, more commonly known as SOPA and PIPA. Like many things, there are many way to go about &#8220;blacking out&#8221; one&#8217;s website. Wikipedia used JavaScript and CSS to overlay [...]]]></description>
			<content:encoded><![CDATA[<p>On January 18, 2012 a number of websites &#8220;went dark&#8221; to protest the United States House of Representatives <a href="http://thomas.loc.gov/cgi-bin/bdquery/z?d112:HR03261:@@@L&#038;summ2=m&#038;" title="Stop Online Piracy Act" target="_blank">Stop Online Piracy Act</a> and Senate <a href="http://thomas.loc.gov/cgi-bin/bdquery/z?d112:SN00968:@@@L&#038;summ2=m&#038;" title="Protect IP Act" target="_blank">Protect IP Act</a>, more commonly known as SOPA and PIPA. Like many things, there are many way to go about &#8220;blacking out&#8221; one&#8217;s website.</p>
<p>Wikipedia used JavaScript and CSS to overlay their message on every page, so users saw the content of the page for a second or so and then it was completely obscured. BoingBoing returned a <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4" title="HTTP 503" target="_blank">HTTP 503</a> &#8220;service unavailable&#8221; for every URL on their domain. Mozilla returned a 503 for their main URL. Imgur and Craigslist simply changed the content on their main pages and continued to return <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1" title="HTTP 200s" target="_blank">HTTP 200s</a>. reddit redirected every URL on their domain to their protest message via a <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3" title="HTTP 302" target="_blank">HTTP 302</a> &#8220;temporary redirect&#8221;. So which, if any of these is &#8220;correct&#8221;?</p>
<p>In this case, the HTTP 503 is the best option because it conveys two important bits of information:</p>
<ol>
<li>The server is unable to handle the request</li>
<li>The situation is temporary</li>
</ol>
<p>The HTTP 302 is dangerous because it conveys two bits of information, one which is correct and the other which is a lie:</p>
<ol>
<li>The requested resource was found, but under a different URI</li>
<li>The situation is temporary</li>
</ol>
<p>The difference likely doesn&#8217;t matter much to a person using a web browser, as in the worst case it might cache the 302 response. If the redirect changes on the server a user re-requests the URI, the cached response might be returned. At this point if the user thinks the page isn&#8217;t valid e.g. seeing a January 18th SOPA protest page on January 19th, it&#8217;s easy enough for the user to reload the page and retrieve the new redirect target.</p>
<p>However, a web crawlers like <a href="http://support.google.com/webmasters/bin/answer.py?hl=en&#038;answer=182072" title="Googlebot" target="_blank">Googlebot</a>, <a href="http://duckduckgo.com/duckduckbot.html" title="DuckDuckGo Bot" target="_blank">DuckDuckGo Bot</a> etc. will store the contents of the page for consideration in their respective search index and may not visit a given URI very often. So if one were to configure their site to issue a 302 or 200 with alternative content during the time a web crawler visited the URI, it could render one&#8217;s page virtually inaccessible via a search as the bot would think the temporary content fetched was valid and not retry again until it is scheduled to visit the URI again. In contrast, returning 503 will likely cause the bot to break out of it&#8217;s normal scheduling cycle for a given URL such that it retries it sooner rather than later.</p>
<p>So next time you decide to stage a blackout, remember there are clients other than humans with web browsers accessing your site!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2012/01/22/blacking-out-your-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AI Class</title>
		<link>http://www.madpickles.org/rokjoo/2012/01/09/ai-class/</link>
		<comments>http://www.madpickles.org/rokjoo/2012/01/09/ai-class/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 01:13:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=596</guid>
		<description><![CDATA[Towards the end of last year I signed up for the &#8220;basic&#8221; track of the Stanford Engineering Introduction To Artificial Intelligence class, mainly out of curiosity, but also because the instructors (Sebastian Thrun and Peter Norvig) and I share the same employer. I intended to follow along at a leisurely pace, unsure if I would [...]]]></description>
			<content:encoded><![CDATA[<p>Towards the end of last year I signed up for the &#8220;basic&#8221; track of the Stanford Engineering <a href="http://www.ai-class.com/" target="_blank">Introduction To Artificial Intelligence</a> class, mainly out of curiosity, but also because the instructors (<a href="http://www.stanford.edu/~thrun/" target="_blank">Sebastian Thrun</a> and <a href="http://www.norvig.com/" target="_blank">Peter Norvig</a>) and I share the same employer. I intended to follow along at a leisurely pace, unsure if I would be able to commit the time necessary to watch all the lectures and go through the homework problems. However, during the first week I found the homework assignments unavailable to &#8220;basic&#8221; track participants until after they were due (this was later changed) so I switched to the &#8220;advanced&#8221; track and made a concerned effort to adhere to the class schedule.</p>
<p>It&#8217;s similar in style to the <a href="http://www.khanacademy.org/" target="_blank">Khan Academy</a>, and it definitely took my understanding of <a href="http://en.wikipedia.org/wiki/Bayes'_rule" target="_blank" rel="nofollow">Bayes&#8217; Rule</a>, <a href="http://en.wikipedia.org/wiki/Hidden_Markov_model" target="_blank" rel="nofollow">Hidden Markov Models</a>, etc. to another level. Sure there are tons of books and tutorials out there, but I feel there&#8217;s a limit to what one can learn without practice. One form of practice is to create a toy programming project, the main downside of which is never knowing if you&#8217;re doing it &#8220;right&#8221;. Contests ala <a href="http://www.netflixprize.com/" target="_blank" rel="none">Netflix Prize</a> are another which at least provides better/worse feedback. The main benefit of online courses though is one can practice solving problems and know whether or not an answer is correct.</p>
<p>I didn&#8217;t participate in any of the discussions, though I did find the group website useful for clarification on a few of the problem statements. Even so, there were still a couple of questions throughout the homework and exams which I misinterpreted, leading to an incorrect answer; however, the largest cause of incorrect answers seemed to be my inability to punch numbers into a calculator correctly&#8230;I guess I haven&#8217;t gotten any better at that since I was last in school :S</p>
<p>An unexpected realization was how much I value flexibility in scheduling. There were definitely a few weeks I had to scramble in order to make it through the videos and homework before the deadline. Funny how the addition of one more deadline per week caused me so much grief. I was interested in the material, but some of it took quite a bit of time to get through (especially once I slowed down after rushing through a couple of homework assignments and doing poorly).</p>
<p>While one could certainly write programs to solve some of the quiz/homework/exam problems, all of them were solvable with pen and paper. The lack of problems requiring writing code was one of the top complaints. They held an AI competition; I didn&#8217;t participate as I feared that would take up too much of my time. However, towards the end of the class, the instructors provided an optional quiz which required writing some code: <a href="https://www.ai-class.com/course/video/quizquestion/296" target="_blank" rel="none">Optional Natural Language Processing Problems</a>. This seemed like a much less time consuming set of questions and I would also get instant feedback.</p>
<p>The first problem was easily solved with brute force. My basic idea was to try every possible rotation and see which one yielded the most words which appear in an English dictionary.</p>
<pre>
#!/usr/bin/python

import sys
import string

# Problem text, all lowercase, no punctuation.
SENTENCE = 'esp qtcde nzyqpcpynp zy esp ezatn zq lcetqtntlw tyepwwtrpynp hld spwo le olcexzfes nzwwprp ty estd jplc'

# Parse the system's English dictionary into a set.
def WordsToSet():
  word_set = set()
  for w in open('/usr/share/dict/words'):
    word_set.add(w.strip().lower())
  return word_set

def p1(word_set):
  # Setup character position lookup table.
  chars = string.ascii_lowercase
  num_chars = len(chars)
  letter_positions = dict([(c, i) for i, c in enumerate(chars)])

  # Track the rotation that yields the most real words.
  max_word_count = 0
  best_i = 1
  sentences = {}

  # Try each rotation.
  for i in xrange(1, 25):
    temp_word_count = 0
    decoded = []

    # Build up a decoded sentence.
    for char in SENTENCE:
      if char == ' ':
        decoded.append(char)
      else:
        decoded.append(chars[(letter_positions[char.lower()] - i) % num_chars])
    sentences[i] = ''.join(decoded)

    # See how many words in the sentence exist in the word set.
    for word in sentences[i].split(' '):
      if word in word_set:
        temp_word_count += 1
    if temp_word_count > max_word_count:
      best_i = i
      max_word_count = temp_word_count

  # Output our best guess.
  print best_i, sentences[best_i]

def main(argv):
  word_set = WordsToSet()
  p1(word_set)

if __name__ == '__main__':
  main(sys.argv)
</pre>
<p>The second problem proved to be a bit more difficult. It couldn&#8217;t be brute forced since there were 18 &#8220;strips&#8221; of characters and thus 18! possible combinations (6,402,373,705,728,000 so if one could generate 1 every millisecond, it&#8217;d take 200,000+ years and that doesn&#8217;t even factor in the evaluation of whether the combination is gibberish). To make life easier, I first got rid of all the punctuation, lowercased all the characters, and converted the &#8220;strips&#8221; of characters into a Python list of lists. My idea was to pick the first strip, try the remaining 17 to see which one &#8220;fit&#8221; best before or after strip 0, then try the remaining 16 on the joined strips, etc. For best &#8220;fit&#8221; I would try to maximize the number of legitimate words which could be composed by the left or right most series of characters (whitespace delimited).</p>
<p>Initially it seemed like counting a partial word match with fewer than 3 characters wouldn&#8217;t be useful e.g. &#8220;er&#8221; appears in tens of thousands of words. That wasn&#8217;t good enough to keep my program on track though, as it would get a few strips aligned correcting and then veer off track creating sequences of characters that were found in many words, but ended up being gibberish in this example. So I had to augment the solution to detect when a sequence of characters should appear at the beginning of a word (whitespace before the sequence, but not after) or when a sequence of characters should be matched exactly (whitespace before and after the sequence). In this case, I didn&#8217;t have to detect whether a sequence of characters should appear at the end of a word (whitespace after the sequence, but not before), but it would be trivial to add.</p>
<p>Another necessary feature of my model was the ability to short-circuit if more than 1 row of characters would result in zero possible words. At first I had the threshold set at more than 0, but &#8220;shannon&#8221;, a last name as it turns out, is not in the dictionary. The code below takes about 90 seconds to solve the problem and could easily be optimized to reduce the number of loops or lookups in the dictionary, but I think those changes obscure the heart of the algorithm. Below is the code as well as a copy of the output generated by the program as it solved the problem.</p>
<pre>
#!/usr/bin/python

import sys
import string

STRIPS = [
  ['de',' ',' f','cl','nf','ed','au',' i','ti',' ','ma','ha','or','nn','ou',' s','on','nd','on'],
  ['ry',' ','is','th','is',' b','eo','as',' ',' ','f ','wh',' o','ic',' t',' ',' ','he','h '],
  ['ab',' ','la','pr','od','ge','ob',' m','an',' ','s ','is','el','ti','ng','il','d ','ua','c '],
  ['he',' ','ea','of','ho',' m',' t','et','ha',' ',' t','od','ds','e ','ki',' c','t ','ng','br'],
  ['wo','m ','to','yo','hi','ve','u ',' t','ob',' ','pr','d ','s ','us',' s','ul','le','ol','e '],
  [' t','ca',' t','wi',' m','d ','th',' a','ma','l ','he',' p','at','ap','it','he','ti','le','er'],
  ['ry','d ','un','th',' ','io','eo','n ','is',' ','bl','f ','pu','co','ic',' o','he','at','mm'],
  ['hi',' ',' ','in',' ',' ',' t',' ',' ',' ',' ','ye',' ','ar',' ','s ',' ',' ',' ']
]

def WordsToSet():
  word_set = set()
  for w in open('/usr/share/dict/words'):
    word_set.add(w.strip().lower())
  return word_set

# Determine whether word is, starts with or contins prospective_word.
def WordMatch(word, prospective_word, exact, startswith):
  if exact and prospective_word == word:
    return 1
  elif startswith and word.startswith(prospective_word):
    return 1
  elif not exact and not startswith and prospective_word in word:
    return 1
  return 0

def ProspectiveWord(i, j, row, prefix):
  # Construct a new result based on the current result row, the ith row and,
  # jth column of STRIPS and whether the new set of characters should be
  # positioned before or after the current result row.
  if prefix:
    prospective_result = STRIPS[i][j] + row
  else:
    prospective_result = row + STRIPS[i][j]

  words = prospective_result.split(' ')
  prospective_word = ''
  exact = False
  startswith = False
  if prefix:
    if words[0] == '':  # There was a leading space.
      prospective_word = words[1]
      if len(words) > 2:  # And a space after prospective_word.
        exact = True
      else:
        startswith = True
    else:
      prospective_word = words[0]
  else:
    if words[-1] == '':  # There was a trailing space.
      prospective_word = words[-2]
      if len(words) > 2:  # And a space before prospective_word.
        exact = True
    else:
      prospective_word = words[-1]
      if len(words) > 1:
        startswith = True
  return prospective_word, exact, startswith

def p2(word_set):
  # Set the first column of STRIPS as the current result.
  result = [row[0] for row in STRIPS]
  # The order of j's, not used to solve the problem, but useful to print at the
  # end. i.e. the order of the STRIPS.
  strip_order = [0]
  # Keep track of the unused j's i.e. columns of STRIPS
  remaining_strips = set([j for j in xrange(1, len(STRIPS[0]))])

  while len(remaining_strips) > 0:
    # Make one pass placing column j of STRIPS before the current result and
    # then another pass placing it after.
    for prefix in [True, False]:
      # Keep track of the best j and highest possible probablistic word count.
      best_j = 0
      best_word_count = 0
      for j in remaining_strips:  # Columns
        word_count = 0
        # Keep track of the number of rows without probable words. Rows which are
        # not checked i.e. without a prospective word of length > 2 or where
        # STRIPS[i][j] is a space (doesn't add any new information) do not count.
        rows_without_words = 0
        for i, row in enumerate(result):  # Rows
          # More than one row without probable words means this column is likely
          # in the wrong position.
          if rows_without_words > 1:
            break
          if STRIPS[i][j] == ' ':  # No new information, continue to next row.
            continue
          prospective_word, exact, startswith = ProspectiveWord(i, j, row, prefix)
          # Too short a word/word fragment, continue to next row.
          if len(prospective_word) < 3:
            continue

          # Total up all the prospective word matches and update the state.
          temp_word_count = 0
          for word in word_set:
            temp_word_count += WordMatch(word, prospective_word, exact, startswith)

          if temp_word_count == 0:
            rows_without_words += 1
          else:
            word_count += temp_word_count

        # More than one row without probable words means this column is likely
        # in the wrong position.
        if rows_without_words > 1:
          continue

        if word_count > best_word_count:
          best_word_count = word_count
          best_j = j

      if best_j != 0:
        if prefix:
          strip_order.insert(0, best_j)
        else:
          strip_order.append(best_j)
        for i in xrange(len(result)):
          if prefix:
            result[i] = STRIPS[i][best_j] + result[i]
          else:
            result[i] = result[i] + STRIPS[i][best_j]
        remaining_strips.remove(best_j)
        print 'strip_order: ', strip_order
        for row in result:
          print row
          print ' '

def main(argv):
  word_set = WordsToSet()
  p2(word_set)

if __name__ == '__main__':
  main(sys.argv)
</pre>
<p>Here&#8217;s what the output looks like so you can see it building up the solution:</p>
<p>strip_order:  [6, 0]<br />
aude<br />
eory<br />
obab<br />
 the<br />
u wo<br />
th t<br />
eory<br />
 thi</p>
<p>strip_order:  [6, 0, 15]<br />
aude s<br />
eory<br />
obabil<br />
 the c<br />
u woul<br />
th the<br />
eory o<br />
 this </p>
<p>strip_order:  [3, 6, 0, 15]<br />
claude s<br />
theory<br />
probabil<br />
of the c<br />
you woul<br />
with the<br />
theory o<br />
in this </p>
<p>strip_order:  [3, 6, 0, 15, 11]<br />
claude sha<br />
theory wh<br />
probabilis<br />
of the cod<br />
you would<br />
with the p<br />
theory of<br />
in this ye</p>
<p>strip_order:  [3, 6, 0, 15, 11, 13]<br />
claude shann<br />
theory whic<br />
probabilisti<br />
of the code<br />
you would us<br />
with the pap<br />
theory of co<br />
in this year</p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18]<br />
claude shannon<br />
theory which<br />
probabilistic<br />
of the code br<br />
you would use<br />
with the paper<br />
theory of comm<br />
in this year </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2]<br />
claude shannon f<br />
theory which is<br />
probabilistic la<br />
of the code brea<br />
you would use to<br />
with the paper t<br />
theory of commun<br />
in this year  </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14]<br />
claude shannon fou<br />
theory which is t<br />
probabilistic lang<br />
of the code breaki<br />
you would use to s<br />
with the paper tit<br />
theory of communic<br />
in this year   </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17]<br />
claude shannon found<br />
theory which is the<br />
probabilistic langua<br />
of the code breaking<br />
you would use to sol<br />
with the paper title<br />
theory of communicat<br />
in this year    </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5]<br />
claude shannon founded<br />
theory which is the b<br />
probabilistic language<br />
of the code breaking m<br />
you would use to solve<br />
with the paper titled<br />
theory of communicatio<br />
in this year     </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7]<br />
claude shannon founded i<br />
theory which is the bas<br />
probabilistic language m<br />
of the code breaking met<br />
you would use to solve t<br />
with the paper titled  a<br />
theory of communication<br />
in this year      </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4]<br />
claude shannon founded inf<br />
theory which is the basis<br />
probabilistic language mod<br />
of the code breaking metho<br />
you would use to solve thi<br />
with the paper titled  a m<br />
theory of communication<br />
in this year       </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4, 12]<br />
claude shannon founded infor<br />
theory which is the basis o<br />
probabilistic language model<br />
of the code breaking methods<br />
you would use to solve this<br />
with the paper titled  a mat<br />
theory of communication  pu<br />
in this year        </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4, 12, 10]<br />
claude shannon founded informa<br />
theory which is the basis of<br />
probabilistic language models<br />
of the code breaking methods t<br />
you would use to solve this pr<br />
with the paper titled  a mathe<br />
theory of communication  publ<br />
in this year         </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4, 12, 10, 8]<br />
claude shannon founded informati<br />
theory which is the basis of<br />
probabilistic language models an<br />
of the code breaking methods tha<br />
you would use to solve this prob<br />
with the paper titled  a mathema<br />
theory of communication  publis<br />
in this year          </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4, 12, 10, 8, 16]</p>
<p>theory which is the basis of<br />
probabilistic language models and<br />
of the code breaking methods that<br />
you would use to solve this proble<br />
with the paper titled  a mathemati<br />
theory of communication  publishe<br />
in this year           </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4, 12, 10, 8, 16, 1]<br />
claude shannon founded information<br />
theory which is the basis of<br />
probabilistic language models and<br />
of the code breaking methods that<br />
you would use to solve this problem<br />
with the paper titled  a mathematica<br />
theory of communication  published<br />
in this year            </p>
<p>strip_order:  [3, 6, 0, 15, 11, 13, 18, 2, 14, 17, 5, 7, 4, 12, 10, 8, 16, 1, 9]<br />
claude shannon founded information<br />
theory which is the basis of<br />
probabilistic language models and<br />
of the code breaking methods that<br />
you would use to solve this problem<br />
with the paper titled  a mathematical<br />
theory of communication  published<br />
in this year             </p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2012/01/09/ai-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Other 99% of Halloween Candy Distributors</title>
		<link>http://www.madpickles.org/rokjoo/2011/11/02/the-other-99-of-halloween-candy-distributors/</link>
		<comments>http://www.madpickles.org/rokjoo/2011/11/02/the-other-99-of-halloween-candy-distributors/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 01:16:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Domestic]]></category>
		<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=592</guid>
		<description><![CDATA[Here&#8217;s another 1% vs. 99% that I believe has been overlooked in the media; I posit each year 1% of the population gets to give out over 20% of the candy (and 10% of the population gets to give out more than 70% of the candy) on Halloween. In cities across America, there has been [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s another 1% vs. 99% that I believe has been overlooked in the media; I posit each year 1% of the population gets to give out over 20% of the candy (and 10% of the population gets to give out more than 70% of the candy) on Halloween. In cities across America, there has been a growing trend where parents drive their children to a specific street on which to go trick-or-treating because a number of houses in that area will go all out in terms of decorations and &#8220;atmosphere&#8221; e.g. building haunted houses, ransacking the local Spirit store for the latest in animatronic ghouls, etc. Houses on these streets will give out hundreds, if not <a href="http://www.berkeleyside.com/2009/10/23/berkeleys-halloween/" rel="nofollow" target="_blank">thousands of pieces of candy</a> and the streets will be overrun with kids and parents alike. I do not live on one of those streets and just like <a href="http://www.madpickles.org/rokjoo/2010/10/31/halloween/">last Halloween</a>, our visitation rate this year was abysmal.</p>
<p>6:23p bee musketeer<br />
6:56p butterfly and skeleton<br />
7:11p airplane<br />
7:30p spider girl?<br />
7:35p fireman<br />
7:40p 2 cowboys<br />
7:41p 3 teenagers, no costumes<br />
8:42p 3 teenagers (different ones), no costumes</p>
<p>I left our lit Halloween decorations along the 8ft path to our front door out until 10p and our porch light on until 11p. One can walk to 2 elementary, 1 middle and 1 high school within 0.7mi of my house; I don&#8217;t live on a busy street and there is a sidewalk. Many of the kids don&#8217;t even like to go to the mega-trick-or-treat zones; my wife works at an afterschool program and they complain it&#8217;s too crowded and easy to get separated from their friends; however, the parents feel it&#8217;s &#8220;the thing to do&#8221;. Our neighbors also seem to think the number of trick-or-treaters dropped from last year and I&#8217;m sure they have a bunch of excess candy just as we do. There&#8217;s a clear market inefficiency.For the first month+ of the <a href="http://en.wikipedia.org/wiki/Occupy_Wall_Street" rel="nofollow" target="_blank">Occupy Wall Street</a> protests, I managed to turn a blind eye, blissfully occupying myself with baseball pennant chases, painting close to 1,000 sqft of outdoor fencing, Stanford&#8217;s Online Class &#8211; <a href="https://www.ai-class.com/" rel="nofollow" target="_blank">Introduction to Artificial Intelligence</a>, etc. One evening, while walking back from the grocery store I expressed interest in seeing what one of these Occupy <insert place here> camps looked like and my wife mentioned if we walked down Martin Luther King Jr. Way (in Berkeley, CA) we&#8217;d pass by Occupy Berkeley. There wasn&#8217;t much activity, granted it was a Thursday night, just a handful of tents and some signs.</p>
<p>The next day I took a stroll by Occupy San Francisco along the Embarcadero, and it looked as if a number of homeless people decided to hang out together. I have nothing against homeless people, but I don&#8217;t think the many of the Occupy San Francisco population were &#8216;protesters&#8217;. Perhaps homelessness is a by-product of the state of affaires the Occupy Wall Street movement wants addressed; but I imagine most of the people I saw at Occupy San Francisco were homeless first and protestors second, if at all. I passed on visiting the Occupy Oakland camp due to the violence. Meanwhile the topic of &#8220;the other 99%&#8221; kept coming up more and more in conversation, such that I could no longer ignore it.</p>
<p>Based on the <a href="http://www.irs.gov/taxstats/indtaxstats/article/0,,id=96981,00.html" rel="nofollow" target="_blank">IRS Adjusted Gross Income Statistics</a> my yearly income has put me in the top quintile (20%) ever since I graduated from college. This is not a result of me being especially brilliant or even lucky as if I were either of those I would probably have dropped out of college and joined the 1% during the dot-com bubble instead of catching the crash at the end. The two dominant factors are likely that I live in one of the most expensive areas of the country (San Francisco Bay Area) and work in an industry (computer software) which has higher than average salaries. In the last few years I&#8217;ve probably moved up into the top 10% and routinely interact with people who are currently in the top 1%, or have been in the past (you can check yourself for the current year via the <a href="http://blogs.wsj.com/economics/2011/10/19/what-percent-are-you/">Wall Street Journal&#8217;s &#8220;what percent are you?&#8221;</a> calculator).</p>
<p>So in a sense, the current system works for me i.e. I can work within its constraints to do most of what I want to do. Note I do not aspire to have a Gulfstream 500 (I haven&#8217;t even ever flown first-class), houses in 5 different countries, or even retire early at this point. However, I realize the system has also failed many people, myself included to a degree as I am reluctantly a landlord due the the mortgage lending situation swinging wildly from giving loans to anyone who can breath to only giving loans to people with nearly perfect credit and a whole bunch of assets. Of course it could be much worse, I could not have a place to live or the ability to feed myself, but at the same time I&#8217;m contributing (proportionally) a great deal financially back into the system via taxes, charitable donations, etc. And I&#8217;m willing to contribute more because I know that not all work is valued appropriately and infrastructure is important to everyone&#8217;s well-being whether they use it directly or not.</p>
<p>It frustrates me the more I think about the Occupy* movement because while I agree with their general sentiment that what has happened with the economy recently sucks and should not have happened, I fail to see how they&#8217;re changing anything for the better. I suppose the current system of mass congregation to Halloween trick-or-treat zones works for the people on those streets who enjoy handing out disproportionate amounts of candy, but it doesn&#8217;t work for me. Maybe I should have tried occupying some of their front porches trying highlight the inequalities.</p>
<p>Instead, next year I will attempt to increase the demand in my area. I&#8217;m thinking about either stepping up to handing out full size (or perhaps king size?) candy bars and/or fancier Ghirardelli chocolate; perhaps word will spread that our street is worth visiting. Another thought I had was to put up neon orange signs, much like is done for a garage sale, advertising the bounty that awaits those willing to broaden their horizons. Perhaps our neighbors would be willing to join us in increasing the Halloween value of our block.</p>
<p>As silly as it sounds within the context of handing out Halloween candy, the general ideas i.e. increasing one&#8217;s value to society, making people aware of it and attempting to get others to join your cause seem like the only legitimate ways to change the situation. I wish the Occupy* movement would focus their efforts on something more productive than civil disobedience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2011/11/02/the-other-99-of-halloween-candy-distributors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tarantula Hunting</title>
		<link>http://www.madpickles.org/rokjoo/2011/10/16/tarantula-hunting/</link>
		<comments>http://www.madpickles.org/rokjoo/2011/10/16/tarantula-hunting/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 00:41:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hiking]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=578</guid>
		<description><![CDATA[For the last 5+ years I have been thinking about heading to Mt. Diablo to look for tarantulas during their October mating season (usually in November after realizing I missed it&#8230;again). Some years I had a good excuse for forgetting e.g. travelling to New York twice to watch Yankees win the ALCS and World Series [...]]]></description>
			<content:encoded><![CDATA[<p>For the last 5+ years I have been thinking about heading to Mt. Diablo to look for tarantulas during their October mating season (usually in November after realizing I missed it&#8230;again).  Some years I had a good excuse for forgetting e.g. travelling to New York twice to watch Yankees win the ALCS and <a href="http://www.madpickles.org/rokjoo/2009/11/14/thuhuhuhuhuh-yankees-win/" target="_blank">World Series in 2009</a>; Halloween has also taken place over the weekend in recent years, sometimes the weather isn&#8217;t cooperative, etc. This year the Yankees exited the postseason early and even though I was too late to sign up for the <a href="http://www.mdia.org/events.htm" target="_blank">guided hikes</a>, decided take a shot at finding some spiders.</p>
<p>The male tarantulas come out around dusk towards the end of September and throughout October. We rolled up to the <a href="http://maps.google.com/maps/place?q=Parks+%26+Recreation&#038;cid=16229065464992484770" target="_blank">Mitchell Canyon entrance</a> in <a href="http://www.parks.ca.gov/?page_id=517" target="_blank">Mt. Diablo State Park</a> a bit before 6p and headed up the trail towards Deer Flat. After about 10 minutes, we came across our first tarantula, getting harassed by two families. Tarantulas in general, and especially the species found on Mt. Diablo, Aphonopelma smithi, are not very dangerous or aggressive. Because of this, many people attempt to handle the spiders. The recommended method is to place your hand on the ground in the spider&#8217;s path and allow it to walk over it. Raising it off the ground or attempting to touch it directly will likely scare the tarantula causing it to fling its urticating hairs and/or bite. Neither this group, or the next one we saw 10 minutes later seemed to heed this recommendation.</p>
<p>It&#8217;s actually quite tiring to continuously scan the trail trying to spot a brown tarantula at dusk on the brown dirt trail, amid the dirt covered rocks and poop. At 6:30p we turned around to head back, the possibility of seeing a spider outside of a tarantula jam (see <a href="http://www.thefreedictionary.com/bear+jam" target="_blank" rel="nofolow">bear jam</a>) fading fast with the declining light. About 5 minutes later we happened upon a tarantula resting on the side of the trail. After snapping a few photos we hustled back to the car.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6251200737/" title="Aphonopelma smithi by madpickles, on Flickr" target="_blank"><img src="http://farm7.static.flickr.com/6036/6251200737_e864b027bf.jpg" width="500" height="333" alt="Aphonopelma smithi"></a><br />
Shot at f2.0 due to the very low light conditions.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6251729096/" title="Dinosaur and Tarantula by madpickles, on Flickr" target="_blank"><img src="http://farm7.static.flickr.com/6043/6251729096_9337a24378.jpg" width="500" height="333" alt="Dinosaur and Tarantula"></a><br />
Dinosaur for scale.</p>
<p>If you decide to go, there is a $6 entrance fee and even though the sign says the park closes at sunset, you don&#8217;t have to worry about getting locked in the parking lot (the entrance gate is locked but the exit has no gate, just the &#8220;don&#8217;t reverse or your tires will pop spikes&#8221;). You shouldn&#8217;t have to walk far, we probably only walked a bit more than 1 mi up the trail. On the off chance you fail to spot any spiders, you will still be treated to some nice fall foliage.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6251200025/" title="Fall Colors by madpickles, on Flickr" target="_blank"><img src="http://farm7.static.flickr.com/6238/6251200025_34afea3d59.jpg" width="333" height="500" alt="Fall Colors"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2011/10/16/tarantula-hunting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scamazon Credit Card</title>
		<link>http://www.madpickles.org/rokjoo/2011/09/15/scamazon-credit-card/</link>
		<comments>http://www.madpickles.org/rokjoo/2011/09/15/scamazon-credit-card/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 20:10:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Domestic]]></category>
		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=573</guid>
		<description><![CDATA[Amazon.com has a no annual fee rewards Visa card with a simple points earning structure: 3 Points: For every $1 spent on Amazon.com 2 Points: For every eligible $1 spent at gas stations, restaurants, drug stores, and office supply stores 1 Point: For every other $1 spent On the plus side the card doesn&#8217;t charge [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon.com has a no annual fee rewards Visa card with a simple points earning structure:</p>
<ul>
<li>3 Points: For every $1 spent on Amazon.com</li>
<li>2 Points: For every eligible $1 spent at gas stations, restaurants, drug stores, and office supply stores</li>
<li>1 Point: For every other $1 spent</li>
</ul>
<p>On the plus side the card doesn&#8217;t charge an annual fee; on the minus side, the rewards certainly do not rank amongst the best in terms of points conversion i.e. most rewards convert at a value of $1 per 100 points e.g. $50 statement credit is 5,000 points. The only ones which convert at a higher rate are airline tickets e.g. a roundtrip continental U.S. flight up to $400 in value is 25,000 points or a roundtrip flight anywhere up to $1,600 is 90,000 points. It&#8217;s lame that some of the rewards are gift cards to restaurants or gas stations since it&#8217;d be better to charge those purchases on the card, get 2 points per $1 and then convert them into a statement credit. Even worse are the Amazon.com gift cards as money spent on Amazon.com purchases converts at a 3-to-1 ratio.</p>
<p>Lately Amazon has been pushing &#8220;pay with points&#8221; when during checkout which allows one to convert points at the 100 to $1 rate to pay for purchases. Anyone who does this loses money just as they would with the restaurant and gas station gift card redemption. The worst part is Amazon makes it so easy to lose money as there is no waiting for a gift card to arrive in the mail. If it isn&#8217;t clear why this is such a bad deal, here&#8217;s an example.</p>
<p>Let&#8217;s say someone spends $5,000 each year on an Amazon.com Visa card, $2,000 of which was on Amazon.com, $1,000 on gas and restaurants and $2,000 on other purchases. At the end of the first year that person would have (2,000 x 3) + (1,000 x 2) + 2,000 = 10,000 points. That could be redeemed for a $100 statement credit or $100 restaurant gift card or spent on $100 worth of Amazon.com purchases.</p>
<p>If the person pays with points on Amazon.com, then the next year they have still acquired $5,000 worth of products but only have (1,900 x 3) + (1,000 x 2) + 2,000 = 9,700 points, good for $97 worth of rewards. Granted that&#8217;s only $3 but why give away $3 or reframed, 3% of one&#8217;s rewards for no reason? Even more importantly, why would a company that in so many other ways focuses on what&#8217;s best for the consumer, provide an option that clearly doesn&#8217;t benefit the consumer?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2011/09/15/scamazon-credit-card/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My 7 Links</title>
		<link>http://www.madpickles.org/rokjoo/2011/09/08/my-7-links/</link>
		<comments>http://www.madpickles.org/rokjoo/2011/09/08/my-7-links/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 03:05:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=564</guid>
		<description><![CDATA[My friend Meliha invited me to take part in the Tripbase My 7 Links Project which asks me to identify: My most beautiful post My most popular post My most controversial post My most helpful post A post whose success surprised me A post I feel didn’t get the attention it deserved The post that [...]]]></description>
			<content:encoded><![CDATA[<p>My friend <a href="http://travel.desiblonde.com/" target="_blank">Meliha</a> invited me to take part in the <a href="http://blog.tripbase.com/blog/my-7-links-the-rules/" target="_blank" rel="nofollow">Tripbase My 7 Links Project</a> which asks me to identify:</p>
<ul>
<li>My most beautiful post</li>
<li>My most popular post</li>
<li>My most controversial post</li>
<li>My most helpful post</li>
<li>A post whose success surprised me</li>
<li>A post I feel didn’t get the attention it deserved</li>
<li>The post that I am most proud of</li>
</ul>
<p>Even though <a href="http://blog.tripbase.com/blog/" target="_blank">Tripbase</a> is focused on travel, I won&#8217;t necessarily restrict my selections to travel related posts.</p>
<p><strong>My most beautiful post</strong><br />
I think that would have to be the <a href="http://www.madpickles.org/rokjoo/2010/06/23/final-launch-of-space-shuttle-atlantis/" target="_blank" title="Final Launch of Space Shuttle Atlantis">Final Launch of Space Shuttle Atlantis</a> (well as it turned out, the penultimate launch). Not only are the photos beautiful, but the opportunity to experience a launch of a space shuttle has sadly gone the way of the Dodo.</p>
<p><strong>My most popular post</strong><br />
According to Google Analytics it&#8217;s <a href="http://www.madpickles.org/rokjoo/2011/04/21/predicting-when-derek-jeters-3000th-career-hit-will-occur/" title="Predicting When Derek Jeter's 3000th Hit Will Occur" target="_blank">Predicting When Derek Jeter&#8217;s 3000th Hit Will Occur</a>. I was completely wrong, mainly due to Jeter going on the disabled list and missing 20 or so games.</p>
<p><strong>My most controversial post</strong><br />
Definitely <a href="http://www.madpickles.org/rokjoo/2011/02/14/ibm-watson-vs-google-search/" title="IBM Watson Vs. Google Search" target="_blank">IBM Watson Vs. Google Search</a>. In addition to the comments on my blog, &#8220;kenjackson&#8221; <a href="http://news.ycombinator.com/item?id=2227042" target="_blank" rel="nofollow">slighted me on Hacker News</a>. What cracks me up the most is how people who don&#8217;t work at Google think they authoritatively know how Google works and what it does and doesn&#8217;t do with regard to A.I. and natural language processing.</p>
<p><strong>My most helpful post</strong><br />
Most likely <a href="http://www.madpickles.org/rokjoo/2010/08/11/gpx-elevation-profile-plotting-with-the-google-chart-api/" title="GPX Elevation Profile Plotting With The Google Chart API" target="_blank">GPX Elevation Profile Plotting With The Google Chart API</a>. Based on the traffic and when my page shows up in search results I think most people find the GPX parsing/elevation calculation code useful as when I wrote it there weren&#8217;t many examples that just worked e.g. people would describe calculations or enumerate the mathematical formulas, but didn&#8217;t commit them to code.</p>
<p><strong>A post whose success surprised me</strong><br />
I don&#8217;t really know if any of my posts can be considered a &#8220;success&#8221; but maybe my research into some <a href="http://www.madpickles.org/rokjoo/2010/12/19/art-history/" title="Art History" target="_blank">Art History</a> after a visit to the musée du Louvre fits the bill. </p>
<p><strong>A post I feel didn’t get the attention it deserved</strong><br />
After re-reading my waxing philosophical post about <a href="http://www.madpickles.org/rokjoo/2009/09/30/giants/" title="Redwood Trees" target="_blank">Redwood Trees</a> surprised me. According to Google Analytics not many people have read this post, but I think it&#8217;s probably one of my best.</p>
<p><strong>The post that I am most proud of</strong><br />
Idea-wise, the previous post may be the one I&#8217;m most proud of; however, in terms of travel and personal achievements I&#8217;d have to say my <a href="http://www.madpickles.org/rokjoo/2011/01/31/great-expectations/" title="Great Expectations" target="_blank">Great Expectations</a> post takes the cake as I wove together 3 mentally and physically challenging endeavors and question why I do the things I do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2011/09/08/my-7-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bench Building</title>
		<link>http://www.madpickles.org/rokjoo/2011/08/15/bench-building/</link>
		<comments>http://www.madpickles.org/rokjoo/2011/08/15/bench-building/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 01:16:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Domestic]]></category>

		<guid isPermaLink="false">http://www.madpickles.org/rokjoo/?p=555</guid>
		<description><![CDATA[Sometimes my DIY ethos gets the best of me, case in point being the need for a bench so we could host 7 guests at a BBQ in our back yard last month. For less than $50, and probably an hour of my time I could have built one with a bench kit and a [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes my DIY ethos gets the best of me, case in point being the need for a bench so we could host 7 guests at a BBQ in our back yard last month. For less than $50, and probably an hour of my time I could have built one with <a href="http://www.amzn.com/B000BDG7UI" title="a bench kit" target="_blank" rel="nofollow">a bench kit</a> and a bunch of 2x4s. Instead I decided to design my own which ended up costing twice as much and probably took 10 times longer :S.</p>
<p>With rough target dimensions of 18&#8243; high, 12&#8243; wide and 6&#8242; in length, I went to our local Home Depot to check out the available lumber and cost. One of the many things in my life classifiable as &#8220;obvious but overlooked&#8221; is <a href="http://www.engineeringtoolbox.com/wood-density-d_40.html" title="wood density varies by species" target="_blank">wood density varies by species</a>. This became readily apparent after picking up a piece of Poplar, deciding it didn&#8217;t look nice and then picking up the same size piece of Oak which weighed twice as much.</p>
<p>After walking around and around searching for light wood that looked nice and would fit in the car without having to run down an employee to cut it down to size, I ended up with Redwood. An additional upside with Redwood is its <a href="http://www.nps.gov/history/history/online_books/shirley/sec6.htm" title="resistance to insects, fungi and fire" target="_blank">resistance to insects, fungi and fire</a>. A downside is its additional cost. I mitigated that by using some rough cut fence pickets in on the underside of the seating area which were 1/4 the price of the nicely finished planks.</p>
<p>Here&#8217;s a photo of the raw wood, 4 finished 1&#215;6 boards, 3 1&#215;6 fence pickets, 1 4&#215;4 post and 3 2&#215;2 posts (I actually ended up not using one of the 2&#215;2 posts).</p>
<p><a href="http://www.flickr.com/photos/madpickles/6047933686/" title="Raw Pieces by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6193/6047933686_625bb4e236.jpg" width="500" height="375" alt="Raw Pieces"></a></p>
<p>And here is a photo of all the pieces of wood cut down to size.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6047381973/" title="Pieces Cut to Size by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6088/6047381973_6b2f100793.jpg" width="375" height="500" alt="Pieces Cut to Size"></a></p>
<p>Here are the assembled &#8220;legs&#8221;.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6047934144/" title="Legs by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6191/6047934144_c1cf9f9f7e.jpg" width="500" height="375" alt="Legs"></a></p>
<p>This is a shot of the legs and seating area cross supports getting attached to the fence pickets.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6047934494/" title="Attaching Legs and Cross Supports by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6073/6047934494_c1a214ced7.jpg" width="500" height="375" alt="Attaching Legs and Cross Supports"></a></p>
<p>And here are a few shots of the finished product.</p>
<p><a href="http://www.flickr.com/photos/madpickles/6047933758/" title="Finished 2 by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6204/6047933758_8f3d29a969.jpg" width="375" height="500" alt="Finished 2"></a></p>
<p><a href="http://www.flickr.com/photos/madpickles/6047933966/" title="Finished 1 by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6090/6047933966_8350dc8b41.jpg" width="500" height="375" alt="Finished 1"></a></p>
<p><a href="http://www.flickr.com/photos/madpickles/6047933730/" title="Finished 3 by madpickles, on Flickr"><img src="http://farm7.static.flickr.com/6189/6047933730_1257bd951a.jpg" width="375" height="500" alt="Finished 3"></a></p>
<p>If I had to do it over I probably would have spent more for 2x6s instead of layered 1x6s for the seating area mainly for aesthetic reasons i.e. I wouldn&#8217;t have had to use so many visible screws. Other than that, the bench has performed well, having been used 3 times with no casualties.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.madpickles.org/rokjoo/2011/08/15/bench-building/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

