<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6395996699319792688</id><updated>2011-11-03T20:14:16.602-07:00</updated><category term='voting'/><category term='clustering'/><category term='hierarchical'/><category term='house of representatives'/><category term='shell'/><category term='patterns'/><category term='healthcare'/><category term='politics'/><category term='congress'/><category term='perl'/><category term='DNC'/><category term='source code'/><category term='messaging'/><category term='whitehouse'/><category term='strategy'/><category term='policy'/><category term='Obama'/><category term='games'/><category term='algorithms'/><category term='graph'/><category term='bash'/><category term='data'/><category term='computing'/><category term='R'/><title type='text'>adamuu's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-1105197674888351496</id><published>2010-11-09T16:05:00.000-08:00</published><updated>2010-11-09T16:36:54.627-08:00</updated><title type='text'>Clustering The US Senate</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://evocloud.com/sen_hc.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 300px;" src="http://evocloud.com/sen_hc_thumb.png" alt="" border="0" /&gt;&lt;/a&gt; I created a hierarchical clustering graph based on the roll call votes for the 111th session of the US Senate using the &lt;a hef="http://adamuu.blogspot.com/2010/11/clustering-us-house-of-representatives.html"&gt;same method as my last post&lt;/a&gt;. I have a few observations about this chart.  The first is that Nelson(D-NE) clusters with the Republican half when cuttree=2.  The second observation is that Reid (D-NV) closest associate is Sanders (I-VT). I had assumed that Reid was a middle-of-the-road voter, and that Sanders, a socialist, had more extreme votes. Perhaps I should graph their rhetorical distance rather than roll call voting pattern distance.&lt;br /&gt;It is not a surprise that Bayh(D-IN) McCaskill(D-MO) break off into their own cluster when cuttree=4. I am more surprised to see Feingold(D-WI) and Specter(D-PA) to form their own cluster with cuttree=8.&lt;br /&gt;Again, I have added the &lt;a href="http://evocloud.com/congress_source_listing.php"&gt;source code&lt;/a&gt; for auto-downloading and parsing the data, and drawing the chart. Group membership is &lt;a href="http://evocloud.com/congress_cluster.php"&gt;here&lt;/a&gt;. Click image for a larger version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-1105197674888351496?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/1105197674888351496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/11/clustering-us-senate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1105197674888351496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1105197674888351496'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/11/clustering-us-senate.html' title='Clustering The US Senate'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-8478660523763696302</id><published>2010-11-07T15:45:00.000-08:00</published><updated>2010-11-07T16:24:02.703-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='voting'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchical'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><category scheme='http://www.blogger.com/atom/ns#' term='house of representatives'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='clustering'/><category scheme='http://www.blogger.com/atom/ns#' term='graph'/><category scheme='http://www.blogger.com/atom/ns#' term='congress'/><title type='text'>Clustering The US House of Representatives</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://evocloud.com/rep_hc.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 300px;" src="http://evocloud.com/rep_hc_thumb.png" alt="" border="0" /&gt;&lt;/a&gt; I downloaded the roll call votes for the 111th session of the US House of Representatives. I first cleaned the data, removing columns with a large number of missing votes, and removing representatives without much data. I also removed votes where every congressman voted the same way or did not vote. Other than those filters, all votes were weighted equally. It occurred to me that I should do more filtering based on high correlation, but I did not do so. &lt;br /&gt;Then I used &lt;a href="http://cran.r-project.org/"&gt;R&lt;/a&gt;'s &lt;a href="http://svn.r-project.org/R/trunk/src/library/stats/R/hclust.R"&gt;hclust&lt;/a&gt; function to perform hierarchical clustering based on the distances of the voting patterns of each congressperson. Finally, I used R's cuttree command to cut the tree into 8 colorful parts.  Click the image for a huge version.&lt;br /&gt;It is no surprise that Republicans and Democrats cluster exclusively with themselves. The only cluster that has a D and an R is cluster number 8, comprised of just two representatives, Griffith(R-AL) and Bright(D-AL).  What did surprise me somewhat is that the Blue Dogs cluster with the larger group of Democrats, and the Progressive Caucus is the one to break off into its own cluster first. Full lists of cluster membership are &lt;a href="http://evocloud.com/congress_cluster.php"&gt;here&lt;/a&gt;.&lt;br /&gt;Source code for downloading and parses the source data and composing the image is &lt;a href="http://evocloud.com/congress_source_listing.php"&gt;here&lt;/a&gt;. Scripts require Linux, bash, perl, wget, and R.  I plan to generate the graph again once the 112th session begins.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-8478660523763696302?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/8478660523763696302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/11/clustering-us-house-of-representatives.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/8478660523763696302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/8478660523763696302'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/11/clustering-us-house-of-representatives.html' title='Clustering The US House of Representatives'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-834841813426189596</id><published>2010-10-11T05:43:00.000-07:00</published><updated>2010-10-11T07:16:29.330-07:00</updated><title type='text'>Mortgage Note Fraud Crisis</title><content type='html'>I'm forwarding several links without comment, as the foreclosure fraud crisis unfolds.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nakedcapitalism.com/2010/09/meet-gmacs-robo-signer-jeffrey-stephan.html"&gt;Meet GMAC’s Robo Signer Jeffrey Stephan&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;See this video of the deposition of GMAC’s famed robo signer, Jeffrey Stephan, who estimates that he signs 10,000 documents a month.&lt;a href="http://www.nakedcapitalism.com/2010/10/homes-in-florida-seized-without-notice-of-foreclosure-suspicously-large-number-of-the-dog-ate-my-summons-filings.html"&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/homes-in-florida-seized-without-notice-of-foreclosure-suspicously-large-number-of-the-dog-ate-my-summons-filings.html"&gt;Homes in Florida Seized Without Notice of Foreclosure: Suspicously Large Number of “The Dog Ate My Summons” Filings&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;Make no mistake about it: the nature and scale of these frauds cut at the very heart of our judicial process. We didn’t call the Florida courts “kangaroo courts” lightly. A home is most people’s most important asset; shelter is a bedrock of personal security. Both the Fifth and the Fourteenth amendments enshrine the notion of due process, yet we see increasing evidence of it being violated on a routine basis in the Sunshine State.&lt;/blockquote&gt;&lt;a href="http://www.ritholtz.com/blog/2010/10/foreclosure-fraud-reveals-structural-legal-crisis/"&gt;Foreclosure Fraud Reveals Structural &amp;amp; Legal Crisis&lt;/a&gt; (The Big Picture)&lt;br /&gt;&lt;blockquote&gt;We are not discussing economic problems of too many homes for sale and falling prices. What is being discussed here is a full blown crisis underlying home titles, foreclosure procedures, and securitized mortgages.  The rampant, epidemic and systemic abuse of legal property protections is now reaching a crisis.&lt;/blockquote&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/multi-billion-dollar-class-action-suits-filed-against-lender-processing-services-for-illegal-fee-sharing-document-fabrication-prommis-solutions-also-targeted.html"&gt;Multi-Billion-Dollar Class Action Suits Filed Against Lender Processing Services for Illegal Fee Sharing, Document Fabrication; Prommis Solutions Also Targeted&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;The common remedy for illegal fee sharing is disgorgement.&lt;/blockquote&gt;&lt;a href="http://blogs.alternet.org/speakeasy/2010/10/06/organized-crime-wall-streets-foreclosure-fraud-machine/"&gt;Organized Crime: Wall Street’s Foreclosure Fraud Machine&lt;/a&gt; (Alternet)&lt;br /&gt;&lt;blockquote&gt;Just when you thought Wall Street couldn’t defraud the economy any further, it went ahead and did it. After pushing millions of borrowers into foreclosure with fraudulent loans, big banks are now being implicated in a massive new fraud scandal involving the foreclosure process itself.&lt;/blockquote&gt;&lt;a href="http://www.goldmansachs666.com/2010/10/big-bank-fraud-exposedfinally.html"&gt;Big Bank Fraud Exposed...Finally!&lt;/a&gt; (GoldmanSachs666)&lt;br /&gt;&lt;blockquote&gt;What the attorney from ICE Legal learned in the deposition (information given under oath) was that the person who signed the Affidavit attesting to having had personal knowledge of the account and case - in fact did not.  Even more disturbing in his deposition was the admission that  he and a team  of others literally signed thousands of these Affidavits a month under the direction of the law firm representing GMAC.  This admission prompted GMAC to immediately halt all foreclosures in Florida and the other 22 Judicial Foreclosure states.&lt;/blockquote&gt;&lt;a href="http://www.ritholtz.com/blog/2010/10/fraud-factories-mers-lps-forgeries-rep-alan-grayson-explains-the-foreclosure-fraud-crisis/"&gt;Fraud Factories, MERS, LPS, Forgeries: Rep. Alan Grayson Explains the Foreclosure Fraud Crisis&lt;/a&gt; (The Big Picture)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/more-law-in-the-hands-of-banks-breaking-and-entering-homes-in-florida.html"&gt;More Law in the Hands of Banks: Breaking and Entering Homes in Florida&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;Two Canadian tourists returning to their rental home from a day at the beach found evidence burglars had struck — or so it seemed.&lt;br /&gt;Their laptop computer and MP3 player were missing, as were six bottles of wine. A half-empty beer opened by the intruders was still cold and sitting on the kitchen counter.&lt;br /&gt;But why, then, had the locks on the front door been changed?&lt;/blockquote&gt;&lt;a href="http://www.rawstory.com/rs/2010/10/jp-morgan-thug-breaks-home-foreclosed/"&gt;JP Morgan ‘thug’ breaks into home not in foreclosure: report"&lt;/a&gt; (Raw Story)&lt;br /&gt;&lt;blockquote&gt;Panicked, she called 911 and spent 10 nervous minutes on the phone with a dispatcher only to discover that the intruder was an agent of her mortgage company, JPMorganChase, who had come to change the locks on her home.&lt;/blockquote&gt;&lt;a href="http://www.truth-out.org/foreclosuregate63953"&gt;Foreclosuregate and Obama's "Pocket Veto"&lt;/a&gt; (Truthout)&lt;br /&gt;&lt;blockquote&gt;...those errors go far deeper than mere sloppiness; they are concealing a massive fraud. They cannot  be corrected with legitimate paperwork, and that was the reason the servicers had to hire "foreclosure mills" to fabricate the documents. These errors involve perjury and forgery - fabricating documents that never existed and swearing to the accuracy of facts not known.&lt;/blockquote&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/dc-waking-up-to-escalating-foreclosure-train-wreck-grayson-calls-for-fsoc-to-examine-foreclosure-fraud-as-systemic-risk.html"&gt;DC Waking Up to Escalating Foreclosure Train Wreck: Grayson Calls for FSOC to Examine Foreclosure Fraud as Systemic Risk&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;Wow, someone in DC has connected the dots: that the banks’ failure to adhere to contractual and legal requirements in the residential mortgage backed securities market are so extensive and widespread as to constitute systemic risk. Alan Grayson, Congressman from Ground Zero of the foreclosure mess, is calling on the Financial Stability Oversight Council to investigate the escalating foreclosure fraud crisis.&lt;/blockquote&gt;&lt;a href="http://www.truthdig.com/eartotheground/item/halt_who_forecloses_there_20101008/"&gt;Halt! Who Forecloses There?&lt;/a&gt; (Truthdig)&lt;br /&gt;&lt;blockquote&gt;Arriving a little late to the party, Bank of America has announced it is halting home foreclosure sales in all 50 states as it proceeds with a widening investigation of flaws in the process.&lt;/blockquote&gt;&lt;a href="http://blogs.alternet.org/speakeasy/2010/10/08/too-big-for-paperwork-fixing-wall-streets-foreclosure-fraud-mess/"&gt;Too-Big-For-Paperwork: Fixing Wall Street’s Foreclosure Fraud Disaster&lt;/a&gt; (Alternet)&lt;br /&gt;&lt;blockquote&gt;Three parties stand to lose big. The most obvious is homeowners—they’re being slapped with enormous, illegal fees invented by fraudulent documents, and frequently being illegally exiled from their homes.&lt;/blockquote&gt;&lt;a href="http://www.goldmansachs666.com/2010/10/bank-fraud-edition-fraud-fraud-and-more.html"&gt;Bank Fraud Edition: Fraud Fraud and More Fraud&lt;/a&gt; (GoldmanSachs666)&lt;br /&gt;&lt;blockquote&gt;Even more important here is that by taking this action they are seemingly afraid of the legal repercussions of their illegal actions.  While I believe they are betting on the government giving them favored legal status by renewing their "Get Out of Jail Free" cards, there does exist the realities that maybe their cards will be permanently revoked.&lt;/blockquote&gt;&lt;a href="http://www.calculatedriskblog.com/2010/10/daily-show-on-foreclosure-gate.html"&gt;Daily Show on Foreclosure-Gate&lt;/a&gt; (Calculated Risk)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/debunking-banks-procedural-problems-defense-on-the-foreclosure-crisis.html"&gt;Debunking Banks’ “Procedural Problems” Defense on the Foreclosure Crisis&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;The affidavit issue is being portrayed in the MSM at a paperwork problem. Lying to the court is not a paperwork problem. Attorneys are prohibited from making a material misrepresentation to the court of fact or law. Further, attorneys in most jurisdictions have an affirmative duty to report known perjury by their clients to the court.&lt;/blockquote&gt;&lt;a href="http://www.cnn.com/2010/POLITICS/10/10/white.house.foreclosures/"&gt;Axelrod signals White House opposition to foreclosure moratorium&lt;/a&gt; (Tom Cohen, CNN)&lt;br /&gt;&lt;blockquote&gt;"Our hope is that this moves rapidly and that this gets unwound very, very quickly," Axelrod said.&lt;/blockquote&gt;&lt;a href="http://delong.typepad.com/sdj/2010/10/cramdown-and-foreclosure-fraud.html"&gt;Cramdown and Foreclosure Fraud&lt;/a&gt; (Grasping Reality with Both Hands)&lt;br /&gt;&lt;blockquote&gt;Fifteen months ago, according to the Assistant Treasury Secretary, the Administration had all the tools it needed. Now, as the problem of foreclosure fraud is about to explode, a Treasury official and a senior Administration official claim they didn’t have the right tools, they were helpless.... [A]fter fifteen months of trusting banksters to do the right thing for homeowners hasn’t worked out so well, the Administration is changing its story about whether it needed more tools to motivate those banksters.&lt;/blockquote&gt;&lt;a href="http://www.rawstory.com/rs/2010/10/40-states-inquiry-foreclosures/"&gt;Up to 40 states plan joint inquiry into foreclosures&lt;/a&gt; (AP)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://thinkprogress.org/2010/10/10/cantor-defends-banks/"&gt;Cantor Opposes Foreclosure Moratorium: ‘People Have To Take Responsibility For Themselves’&lt;/a&gt; (ThinkProgress)&lt;br /&gt;&lt;blockquote&gt;Congressional Republicans have largely been silent on a foreclosure moratorium, as the Wonk Room has noted. But now, apparently, they are ready to take a stand — in defense of the housing industry.&lt;/blockquote&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/bank-disinformation-i-pr-machine-in-overdrive-on-foreclosure-fraud-front.html"&gt;Bank Disinformation I: PR Machine in Overdrive on Foreclosure Fraud Front&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;And below is the text of a letter making the rounds on the Hill. This is simply dishonest. First, note the complete lack of mention of the foreclosure crisis; this is an effort to divert attention from the real issue, the mess the securitization industry has made of the housing market at pretty much every step of the process, from ginning up bad “spready” loans on purpose to feed demand for CDOs, to deciding to ignore the carefully-devised procedures to make sure the securitization trust complied with all the requirements needed for it to have ownership of the mortgages; to rampant document forgeries and fraud to remedy the procedural failings. Second, it implies that servicers are happy to mod mortgages. Huh?&lt;/blockquote&gt;&lt;a href="http://www.ritholtz.com/blog/2010/10/truth-consequences/"&gt;Financial Engineering: Truth &amp;amp; Consequences&lt;/a&gt; (The Big Picture)&lt;br /&gt;&lt;blockquote&gt;The United States has been living a lie.&lt;/blockquote&gt;&lt;a href="http://www.nakedcapitalism.com/2010/10/bank-disinformation-ii-banks-attacking-rule-of-law-frontally.html"&gt;Bank Disinformation II: Banks Attacking Rule of Law Frontally&lt;/a&gt; (naked capitalism)&lt;br /&gt;&lt;blockquote&gt;There is also not a single acknowledgment in the article that affidavits submitted were improper. Look how timid the Journal’s formulation is: “alleged irregularities in foreclosure documents submitted by the banks.” The banks have ADMITTED the affidavits were fraudulent, prepared by people who had no direct knowledge. This isn’t an “allegation”; these are admissions by bank employees in multiple depositions. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-834841813426189596?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/834841813426189596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/10/mortgage-note-fraud-crisis.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/834841813426189596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/834841813426189596'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/10/mortgage-note-fraud-crisis.html' title='Mortgage Note Fraud Crisis'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-5112042229712341400</id><published>2010-05-29T06:30:00.000-07:00</published><updated>2010-05-29T07:53:20.123-07:00</updated><title type='text'>Reasonable Suggestions, Mockery Dominate GOP's New Idea Farm</title><content type='html'>On &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/05/24/AR2010052403970.html"&gt;Tuesday&lt;/a&gt; (&lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/05/24/AR2010052403970.html"&gt;WaPo&lt;/a&gt;), House Republicans launched an online community, named &lt;a href="http://www.americaspeakingout.com/"&gt;America Speaking Out&lt;/a&gt;, to gather suggestions for the future of the GOP.  Semi-anonymous users are allowed to submit suggestions as well as vote Yes or No on suggestions others have made.  Suggestions are categorized and can be sorted by popularity.&lt;br /&gt;Immediately, the user content site of the site became dominated by surprisingly constructive, intelligent, and reasonable suggestions, which often conflicted with objectives voiced by the GOP, and brutal mockery, often taking Republican ideals to their logical conclusions with entertaining results.  This website serves to highlight the disconnect between the GOP and the people, as well as to highlight the irreconcilable internal inconsistency of the GOP, a curse resulting from the Wall Street, corporate, plutocratic core co-opting the mutually exclusive Religion Right, Anti-Tax, and other easily-manipulated extremist movements, to garner votes throughout history.  A great illustration of this is the 3-word submission, "drop corporate taxes", filed under American Prosperity. The No votes are winning. ( I voted no.) When the GOP's core ideas are put on display, the public reaction is crystal clear.&lt;br /&gt;&lt;br /&gt;First, the reasonable suggestions. &lt;br /&gt;&lt;!-- google_ad_section_start --&gt;In the category American Values: Life, all but one of the first full page of suggestions are constructive, and some are progressive. For example:&lt;br /&gt;&lt;div class="excerpt"&gt;&lt;blockquote&gt;Government funds should not go towards religious organizations. I don't want big government getting involved in my religion, and I don't want money being wasted on something I don't believe in. End the "christian nation" bull, taxpayer money shouldn't be wasted on religion...&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;In the category Strengthening Families there are several very nicely worded suggestions.&lt;br /&gt;#1&lt;br /&gt;&lt;div class="excerpt"&gt;&lt;blockquote&gt;There are as many different kinds of families as there are Americans. And as in so many areas, this diversity is a strength. We should help respect all of these families, not condemn some to a second-class existence. Two people of the same gender who want to have a family should be allowed to marry and help preserve our great institution of marriage.&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;#4&lt;br /&gt;&lt;div class="excerpt"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div class="excerpt"&gt;I think the Republican party should remove itself from the gay marriage debate entirely. I know a lot of Republicans feel strongly against this overwhelmingly because of religious reasons, but that has no place in government. If the Republican party were to decide to remove itself from this debate as a party, I think that would pave the way for a lot of fiscal and other conservatives to join us. ... I have a hard time coming up with non-religious arguments against gay marriage, and we do have separation of church and state in this country. ... Republicans should drop out of the debate.&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;#5&lt;br /&gt;&lt;div class="excerpt"&gt;&lt;blockquote&gt;Recognize gay marriage. No, seriously. It's a weird consequence of the separation of church and state. A church can marry or refuse to marry anyone; the government, however, should accept the status of its constituents. If they're married in spirit, and living as if married, then the government should accept this. How does this interfere with any church's beliefs? If one church does not think it should marry a gay couple, then another church shouldn't be allowed to? That makes no sense. Allow gay marriage.&lt;/blockquote&gt;&lt;/div&gt;I think if the GOP were to adopt these ideas, America would be better off.  We need two healthy, reasonable parties. Currently, I don't feel I have a choice in the general election. This is convenient in a way; the choice is always clear.  But, with only two parties to chose from, there should be a wider spectrum in both, to prevent marginalization.  This may be a moot point, however, since there are already signs of a GOP pushback against these suggestions.  &lt;a href="http://thinkprogress.org/2010/05/26/gop-website-taxes-hitler/"&gt;"GOP won’t allow ideas to raise taxes on new site, but Hitler references and anti-Hispanic rhetoric are ok," writes ThinkProgress:&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;Project leader Rep. Kevin McCarthy (R-CA) said the GOP will stick to its “&lt;a href="http://swampland.blogs.time.com/2010/05/25/house-gop-leaders-are-listening-now/?xid=rss-topstories"&gt;principles&lt;/a&gt;” — meaning they won’t incorporate any idea they don’t &lt;a href="http://yglesias.thinkprogress.org/archives/2010/05/speak-out.php"&gt;already agree with&lt;/a&gt;. Moreover, the new site comes with some caveats. “Someone who wants to come on and make the suggestion on how to &lt;a href="http://www.rollcall.com/issues/55_139/news/46778-1.html"&gt;raise taxes&lt;/a&gt;, for example,” said Rep. Peter Roskam (R-IL). “They are welcome to do that, [but] that’s not something that we are going to take up.” Also discouraged? “Suggestions on amnesty or a path to legalization for illegal immigrants and &lt;a href="http://swampland.blogs.time.com/2010/05/25/house-gop-leaders-are-listening-now/?xid=rss-topstories"&gt;anything pro-choice&lt;/a&gt;.”&lt;br /&gt;&lt;/blockquote&gt;And &lt;a href="http://thinkprogress.org/2010/05/25/pence-listening-tour/"&gt;Rep. Mike Pence (R-IN) Says ‘It’s Not A Listening Tour’&lt;/a&gt;. Oh well.  Let's let's just move on to the Mockery.&lt;br /&gt;&lt;br /&gt;Filed under "Environment Conservation":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nijVY-LLAAc/TAEaq6fa0pI/AAAAAAAAACc/QJTGyJaxUYQ/s1600/environment_convservation.png"&gt;&lt;img style="cursor: pointer; width: 430px; height: 125px;" src="http://1.bp.blogspot.com/_nijVY-LLAAc/TAEaq6fa0pI/AAAAAAAAACc/QJTGyJaxUYQ/s400/environment_convservation.png" alt="" id="BLOGGER_PHOTO_ID_5476687946417099410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Filed under "Infrastructure":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nijVY-LLAAc/TAEarpoEGkI/AAAAAAAAAC0/Yjy4oNQC_7M/s1600/infrastructure.png"&gt;&lt;img style="cursor: pointer; width: 425px; height: 247px;" src="http://2.bp.blogspot.com/_nijVY-LLAAc/TAEarpoEGkI/AAAAAAAAAC0/Yjy4oNQC_7M/s400/infrastructure.png" alt="" id="BLOGGER_PHOTO_ID_5476687959069825602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Filed under "Terrorism Abroad":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nijVY-LLAAc/TAEarfDq9YI/AAAAAAAAACs/wUhC83l3RMQ/s1600/terrorism_abroad.png"&gt;&lt;img style="cursor: pointer; width: 425px; height: 510px;" src="http://3.bp.blogspot.com/_nijVY-LLAAc/TAEarfDq9YI/AAAAAAAAACs/wUhC83l3RMQ/s400/terrorism_abroad.png" alt="" id="BLOGGER_PHOTO_ID_5476687956232828290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Blogger's image upload tool leaves much to be desired)&lt;br /&gt;&lt;br /&gt;Filed under "American Competitiveness":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nijVY-LLAAc/TAEaqnlLYYI/AAAAAAAAACU/9aMODRrJg0Q/s1600/american_competitiveness.png"&gt;&lt;img style="cursor: pointer; width: 425px; height: 258px;" src="http://1.bp.blogspot.com/_nijVY-LLAAc/TAEaqnlLYYI/AAAAAAAAACU/9aMODRrJg0Q/s400/american_competitiveness.png" alt="" id="BLOGGER_PHOTO_ID_5476687941340979586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Filed under "Open Mic":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nijVY-LLAAc/TAEarCO_vUI/AAAAAAAAACk/PkOL981A3oQ/s1600/open_mic.png"&gt;&lt;img style="cursor: pointer; width: 425px; height: 432px;" src="http://3.bp.blogspot.com/_nijVY-LLAAc/TAEarCO_vUI/AAAAAAAAACk/PkOL981A3oQ/s400/open_mic.png" alt="" id="BLOGGER_PHOTO_ID_5476687948495699266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See Also:&lt;br /&gt;&lt;a href="http://thinkprogress.org/2010/05/27/progressive-gop-website/"&gt;Top National Security Suggestions On GOP’s Policy Ideas Website Are Progressive: Banning Guns, Repealing DADT&lt;/a&gt; ThinkProgress May 27&lt;br /&gt;&lt;a href="http://thinkprogress.org/2010/05/26/gop-website-taxes-hitler/"&gt;GOP won’t allow ideas to raise taxes on new site, but Hitler references and anti-Hispanic rhetoric are ok.&lt;/a&gt; ThinkProgress May 26&lt;br /&gt;&lt;a href="http://thinkprogress.org/2010/05/25/pence-listening-tour/"&gt;After Saying House Republicans Will Listen With ‘America Speaking Out,’ Pence Says ‘It’s Not A Listening Tour’&lt;/a&gt; ThinkProgress May 25&lt;br /&gt;&lt;a href="http://thinkprogress.org/2010/05/25/gop-america-speaking-out/"&gt;GOP Launches Yet Another Hollow Effort To ‘Listen’ To The American People For Policy Ideas&lt;/a&gt;  ThinkProgress May 25&lt;br /&gt;&lt;a href="http://www.dailykos.com/storyonly/2010/5/25/869705/-Its-deja-vu-all-over-again-for-the-GOP"&gt;It's deja vu all over again for the GOP&lt;/a&gt; DailyKos Barbara Morrill May 25&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-5112042229712341400?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/5112042229712341400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/05/reasonable-suggestions-mockery-dominate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/5112042229712341400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/5112042229712341400'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/05/reasonable-suggestions-mockery-dominate.html' title='Reasonable Suggestions, Mockery Dominate GOP&apos;s New Idea Farm'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_nijVY-LLAAc/TAEaq6fa0pI/AAAAAAAAACc/QJTGyJaxUYQ/s72-c/environment_convservation.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-8777917339375065006</id><published>2010-03-03T04:40:00.000-08:00</published><updated>2010-03-03T04:59:30.832-08:00</updated><title type='text'>Not All GOP Obstructionism Is Quantifiable</title><content type='html'>I had planned on accompanying my last post,  &lt;a href="http://adamuu.blogspot.com/2010/02/visualization-cloture-motions-brought.html"&gt;Visualization: Cloture Motions Brought To a Vote in US Senate By Term&lt;/a&gt;, with some context. Essentially, I intended to say "counting cloture motions filed or even cloture votes taken  doesn't really encompass the whole picture," What I show in my graphs is only one kind of visible obstructionism inflicted on our legislature. I hesitated because I was afraid I might not get all the details exactly right, and I moved on to other things.&lt;br /&gt;&lt;br /&gt;Luckily, in the meantime, blogger David Waldman at DailyKos wrote, "counting cloture motions filed or even cloture votes taken doesn't really encompass the whole picture," in his post, &lt;a href="http://www.dailykos.com/storyonly/2010/3/1/841835/-How-filibuster-crazy-is-the-GOP"&gt;How filibuster crazy is the GOP&lt;/a&gt;?.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The requisite motions might not even get filed if the leadership thinks they can't get close to the magic number of 60 to invoke cloture, yet that bill will have been filibustered as surely as any other on which there's a cloture vote on record.  Nor does the official tally count what I've been calling &lt;a href="http://www.congressmatters.com/story/2009/10/16/03533/732"&gt;"painless filibusters,"&lt;/a&gt; that is, roll calls on which a 60-vote threshold is agreed to by unanimous consent as a method of cutting short the time it takes to file for, invoke and finalize cloture. Yes, the higher threshold is agreed to ahead of time by everyone, but only because the threat of a "real" filibuster (whatever that even means anymore) forces everyone to accept the "painless" version as the faster path, while leaving the 60-vote hurdle in place just as surely as it would be otherwise.&lt;br /&gt;&lt;br /&gt;Every hold left unchallenged and every objection to unanimous consent endured because of the time involved in breaking it can also be attributed to the filibuster, but will never show up in these charts&lt;br /&gt;&lt;br /&gt;So yes, the Republicans are on course to shattering all records for obstructionism. But the costs are much, much higher than the numbers reveal.&lt;/blockquote&gt;&lt;br /&gt;This rounds out my thoughts on the matter nicely. Good job, and thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-8777917339375065006?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/8777917339375065006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/03/not-all-gop-obstructionism-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/8777917339375065006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/8777917339375065006'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/03/not-all-gop-obstructionism-is.html' title='Not All GOP Obstructionism Is Quantifiable'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-6155974649808745481</id><published>2010-02-25T16:36:00.000-08:00</published><updated>2010-02-25T16:39:19.626-08:00</updated><title type='text'>Visualization: Cloture Motions Brought To a Vote in US Senate By Term</title><content type='html'>&lt;b&gt;I developed a cloture vote counter aka Tarantino counter.&lt;br /&gt;&lt;/b&gt;                          &lt;!-- google_ad_section_start --&gt;It automatically updates based on &lt;a href="http://www.senate.gov/pagelayout/reference/cloture_motions/111.htm" target="_blank"&gt;senate.gov &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I traced the source of a graph that appeared on The &lt;a href="http://www.msnbc.msn.com/id/26315908/"&gt;Rachel Maddow Show&lt;/a&gt;, and essentially brought their graph up to date, permanently.&lt;br /&gt;&lt;img style="width: 435px; height: 261px;" src="http://evocloud.com/cloture_history.png" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Then I made web-embeddable emblems. These update automatically, too.&lt;br /&gt;&lt;img src="http://evocloud.com/tarantinos_this_term.png" border="0" /&gt;&lt;br /&gt;View them in place, here, for details about how they are calculated.&lt;br /&gt;&lt;a href="http://evocloud.com/senate_cloture_vote_graphs.html" target="_blank"&gt;http://evocloud.com/senate_cloture_vote_graphs.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-6155974649808745481?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/6155974649808745481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/02/visualization-cloture-motions-brought.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/6155974649808745481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/6155974649808745481'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/02/visualization-cloture-motions-brought.html' title='Visualization: Cloture Motions Brought To a Vote in US Senate By Term'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-6667143175319133414</id><published>2010-02-14T10:32:00.000-08:00</published><updated>2010-02-14T11:45:55.468-08:00</updated><title type='text'>41-Senator Blockade Represents Merely 36.4% of US Population</title><content type='html'>The US Senate is a disproportionate representative body.  Every state in the union gets 2 senators, regardless of population.  So, different senators have differently sized constituencies.  US territories and the District of Columbia have US citizens as residents but are not entitled to a senator in the US Senate.&lt;br /&gt;&lt;br /&gt;A caucus of 41 of the 100 Senators is able to block all new legislation through a Senate procedural rule nicknamed the filibuster.  There has been a renewal in the criticism of this rule, and &lt;a href="http://thinkprogress.org/2010/02/13/majority-americans-filibuster-end/"&gt;more Americans now favor changing the rule&lt;/a&gt;. Critics argue that it is counter-democratic, makes the Senate favor inaction over action, and was intended to be a rarely-used procedure.&lt;br /&gt;&lt;br /&gt;However, perhaps the real problem is that the Senate does not represent all US citizens, and some citizens enjoy a greater representation in the Senate than others.  The 41% of the Senate most commonly responsible for grinding the post-Brown 111th Senate to a halt, and &lt;a href="http://www.truthout.org/senate-republicans-filibuster-everything-win-november56899"&gt;planning to continue to do so until the November 2011 election&lt;/a&gt;, are representatives of a mere 36.4% of the population.  The remaining 59 senators, with the party affiliations Democratic, Independent, and Independent Democratic, are representatives of 62.0% of the population. These numbers do not add to 100.0 because over 5 million American citizens, 1.6%, do not have a Senator to protect their interests.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellspacing="0" cols="5" frame="void" rules="none"&gt;  &lt;colgroup&gt;&lt;col width="229"&gt;&lt;col width="47"&gt;&lt;col width="86"&gt;&lt;col width="86"&gt;&lt;col width="86"&gt;&lt;/colgroup&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td align="center" height="32" width="229"&gt;Party&lt;/td&gt;    &lt;td align="center" width="47"&gt;Count&lt;/td&gt;    &lt;td align="center" width="86"&gt;Population&lt;/td&gt;    &lt;td align="center" width="86"&gt;Percent of represented&lt;/td&gt;    &lt;td align="center" width="86"&gt;Percent of Total&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Democratic&lt;/td&gt;    &lt;td sdval="53" sdnum="1033;" align="right"&gt;53&lt;/td&gt;    &lt;td sdval="185065043.5" sdnum="1033;" align="right"&gt;185065043.5&lt;/td&gt;    &lt;td sdval="0.603984596064554" sdnum="1033;0;0.00%" align="right"&gt;60.40%&lt;/td&gt;    &lt;td sdval="0.594268810514057" sdnum="1033;0;0.00%" align="right"&gt;59.43%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Democratic-Farmer-Labor&lt;/td&gt;    &lt;td sdval="2" sdnum="1033;" align="right"&gt;2&lt;/td&gt;    &lt;td sdval="5266214" sdnum="1033;" align="right"&gt;5266214&lt;/td&gt;    &lt;td sdval="0.017186995855214" sdnum="1033;0;0.00%" align="right"&gt;1.72%&lt;/td&gt;    &lt;td sdval="0.0169105232976776" sdnum="1033;0;0.00%" align="right"&gt;1.69%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Democratic-NPL&lt;/td&gt;    &lt;td sdval="2" sdnum="1033;" align="right"&gt;2&lt;/td&gt;    &lt;td sdval="646844" sdnum="1033;" align="right"&gt;646844&lt;/td&gt;    &lt;td sdval="0.00211106216856551" sdnum="1033;0;0.00%" align="right"&gt;0.21%&lt;/td&gt;    &lt;td sdval="0.00207710331026483" sdnum="1033;0;0.00%" align="right"&gt;0.21%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Independent&lt;/td&gt;    &lt;td sdval="1" sdnum="1033;" align="right"&gt;1&lt;/td&gt;    &lt;td sdval="310880" sdnum="1033;" align="right"&gt;310880&lt;/td&gt;    &lt;td sdval="0.00101459858476487" sdnum="1033;0;0.00%" align="right"&gt;0.10%&lt;/td&gt;    &lt;td sdval="0.00099827760185629" sdnum="1033;0;0.00%" align="right"&gt;0.10%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Independent Democratic&lt;/td&gt;    &lt;td sdval="1" sdnum="1033;" align="right"&gt;1&lt;/td&gt;    &lt;td sdval="1759144" sdnum="1033;" align="right"&gt;1759144&lt;/td&gt;    &lt;td sdval="0.00574120243437213" sdnum="1033;0;0.00%" align="right"&gt;0.57%&lt;/td&gt;    &lt;td sdval="0.00564884860280456" sdnum="1033;0;0.00%" align="right"&gt;0.56%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Democratic caucus ex. Lieberman&lt;/td&gt;    &lt;td sdval="58" sdnum="1033;" align="right"&gt;58&lt;/td&gt;    &lt;td sdval="191288981.5" sdnum="1033;" align="right"&gt;191288981.5&lt;/td&gt;    &lt;td sdval="0.624297252673098" sdnum="1033;0;0.00%" align="right"&gt;62.43%&lt;/td&gt;    &lt;td sdval="0.614254714723856" sdnum="1033;0;0.00%" align="right"&gt;61.43%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;&lt;b&gt;Total Democratic Caucus&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="59" sdnum="1033;" align="right"&gt;&lt;b&gt;59&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="193048125.5" sdnum="1033;" align="right"&gt;&lt;b&gt;193048125.5&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="0.63003845510747" sdnum="1033;0;0.00%" align="right"&gt;&lt;b&gt;63.00%&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="0.61990356332666" sdnum="1033;0;0.00%" align="right"&gt;61.99%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;&lt;b&gt;Republican&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="41" sdnum="1033;" align="right"&gt;&lt;b&gt;41&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="113358767.5" sdnum="1033;" align="right"&gt;&lt;b&gt;113358767.5&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="0.36996154489253" sdnum="1033;0;0.00%" align="right"&gt;&lt;b&gt;37.00%&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="0.364010288758636" sdnum="1033;0;0.00%" align="right"&gt;36.40%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Represented in Senate&lt;/td&gt;    &lt;td align="left"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td sdval="306406893" sdnum="1033;" align="right"&gt;306406893&lt;/td&gt;    &lt;td sdnum="1033;0;0.00%" align="left"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td sdval="0.983913852085296" sdnum="1033;0;0.00%" align="right"&gt;98.39%&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;&lt;b&gt;Unrepresented in Senate&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="0" sdnum="1033;" align="right"&gt;&lt;b&gt;0&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="5009490" sdnum="1033;" align="right"&gt;&lt;b&gt;5009490&lt;/b&gt;&lt;/td&gt;    &lt;td align="left"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/td&gt;    &lt;td sdval="0.0160861479147036" sdnum="1033;0;0.00%" align="right"&gt;&lt;b&gt;1.61%&lt;/b&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Total&lt;/td&gt;    &lt;td align="left"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td sdval="311416383" sdnum="1033;" align="right"&gt;311416383&lt;/td&gt;    &lt;td align="left"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="left"&gt;&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_population"&gt;Population figures source&lt;/a&gt; (2009 projection)&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_current_United_States_Senators"&gt;Senator party affiliation source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If the voting power of Senators were proportional to population, then the Democratic Caucus would have 63.0 votes, a net gain of 4 senators. That would be enough to defeat any Republican filibuster without changing the Senate rules. Without Joe Lieberman, a demonstrably unreliable partner for the Democrats, the voting sum of the caucus would fall slightly to 62.4.  If senators were added from regions of the country whose residents currently are not entitled to a senator, it is difficult to predict how the proportions would change. But, I imagine it would help the Democratic caucus more than the obstructionist caucus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-6667143175319133414?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/6667143175319133414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/02/41-senator-blockade-represents-merely.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/6667143175319133414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/6667143175319133414'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/02/41-senator-blockade-represents-merely.html' title='41-Senator Blockade Represents Merely 36.4% of US Population'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-1457247889781939578</id><published>2010-02-13T16:54:00.000-08:00</published><updated>2010-02-13T16:58:16.659-08:00</updated><title type='text'>Queer Rising II LGBT visibility demonstration in Albany NY</title><content type='html'>Here's a Valentine's Day reminder that in New York and most of America, not all couples are treated equal under the law.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://25.media.tumblr.com/tumblr_kxrkvnbdTX1qb525fo3_500.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 440px; height: 329px;" src="http://25.media.tumblr.com/tumblr_kxrkvnbdTX1qb525fo3_500.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On Friday Feb 12th and Saturday Feb 13th 2010, couples and friends supporting equal rights for all, about 30 activists in total, staged a peaceful demonstration at two malls in the Albany, NY area. We printed tshirts with hearts asking, "Do you see my love," on the back, and wore them under our jackets. At an appointed time, we all took off our jackets and hugged our partners (or trios, or families). Singles and straight allies paired up for pretend. We held our synchronized hug for two full minutes.&lt;br /&gt;&lt;br /&gt;We made the lead story on WTEN at 11&lt;br /&gt;&lt;br /&gt;Here is a link to &lt;a href="http://queerrising2.tumblr.com/"&gt;photos and videos&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-1457247889781939578?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/1457247889781939578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2010/02/queer-rising-ii-lgbt-visibility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1457247889781939578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1457247889781939578'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2010/02/queer-rising-ii-lgbt-visibility.html' title='Queer Rising II LGBT visibility demonstration in Albany NY'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-5123257979128336473</id><published>2009-10-03T08:16:00.000-07:00</published><updated>2009-10-03T09:24:43.226-07:00</updated><title type='text'>Monopoly City Streets Enhanced Street Finder</title><content type='html'>With source code!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://monopolycitystreets.com"&gt;Monopoly City Streets&lt;/a&gt; is a game developed by Hasbro's UK digital agency Tribal DDB. The idea of the game is as follows.  The game board is essentially a roadmap of the Earth.  The data behind the map is a composite of Google Maps and Open Streets.  Online players can use virtual currency (the M$), a small amount of which is provided initially to every player, to buy virtual equivalents to any roads on Earth.  They can then develop houses and other buildings on those streets in predefined positions. The roads and buildings generate a return on investment. This "rent" accrues daily.  The goal of the game is to become the richest player within a limited time frame of about a month. It was launched on Sept 9 2009, and had a rocky start.  The entire game database was reset on Sept 17th.  The game end date is still supposed to be some time in October.&lt;br /&gt;&lt;br /&gt;The front-end for the game runs entirely in the browser using JavaScript.  The interface presents a street map and includes a "find streets" feature. This feature uses the center of the current map view as a point of search, and returns a list of streets that are available to buy either from the bank or from other players.  However, this feature reports streets sorted alphabetically, and streets that are owned by other players are mixed in with streets that are owned by the bank.  The only distinction is a color code.  This is a limitation because streets owned by other players require the player to make an offer. The other player may reject the offer, but either way, it takes up to 7 days to execute it.  It is much more productive to buy streets from the bank if any are available.  Furthermore, unless a player is looking for a certain street by name, for example if he wants to buy the street he grew up on, in terms of advancement efficiency, the base value of the street is probably the most important consideration when deciding how to spend your virtual M$.  The built-in street finder is limited in this regard.&lt;br /&gt;&lt;br /&gt;Monopoly City Streets use AJAX for all of their data services (and game operations). It is not difficult to retrieve the data outside of the supplied front-end.  About a week ago I created a web based tool that increases the area of the find street function by about 25 times.  It does this by requesting nearby streets not only in the area of the longitude and latitude of interest, but also a few similarly-sizes areas to the north, east, etc, in a 5x5 grid.  It then aggregates the results and filters out any duplicate entries. Most players are interested first in the streets that are unowned (owned by the bank), so the report highlights these results in green.  Secondly, because of the different return on investment for streets of different base value, players are usually interested only in streets with a base value of 1 million Monopoly dollars or more.  So, the report sorts the aggregated list of streets by descending value. Later, I added a feature to allow a Google Maps link url to be pasted directly into the search form, which can save the user some time.&lt;br /&gt;&lt;br /&gt;I announced the &lt;a href="http://evocloud.com/mcs/"&gt;Monopoly City Streets enhanced street finder tool&lt;/a&gt; via Twitter about a week ago, and Google Analytics reports 2,390 page views (report date 2009-10-02).  Via Twitter, several users asked about the code underlying the tool.  Meanwhile, many other users have also figured out the urls behind Monopoly City Street's operation, and created tools of their own.  Similar data services are responsible for every other bit of data and player operation in the game.  As you can imagine, it is possible to create bots indistinguishable from real players, and really ruin the game for legitimate players.  I don't see a way to prevent this, and I'm not the first person to realize it.  In any case, I probably won't make any more enhancements to this tool.  I have released all of the PHP code behind the tool for the benefit of the community.  I have released it under an attribution license.  Please use the code for good, not evil.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://monopolycitystreets.com"&gt;Monopoly City Streets&lt;/a&gt; (The game itself)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://evocloud.com/mcs/"&gt;Monopoly City Streets enhanced street finder&lt;/a&gt; (My tool)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://evocloud.com/mcs/#source_code"&gt;Source Code&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-5123257979128336473?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/5123257979128336473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/10/monopoly-city-streets-enhanced-street.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/5123257979128336473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/5123257979128336473'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/10/monopoly-city-streets-enhanced-street.html' title='Monopoly City Streets Enhanced Street Finder'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-1964999397005237724</id><published>2009-09-09T05:06:00.000-07:00</published><updated>2009-09-09T05:27:02.201-07:00</updated><title type='text'>My Sister Drew This</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nijVY-LLAAc/SqeZbycvLZI/AAAAAAAAAA4/_doVAEFlkiw/s1600-h/obama_cliff.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 399px;" src="http://4.bp.blogspot.com/_nijVY-LLAAc/SqeZbycvLZI/AAAAAAAAAA4/_doVAEFlkiw/s400/obama_cliff.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5379436982595169682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://online.wsj.com/article/SB125185379218478087.html"&gt;U.S. Economy Gets Lift From Stimulus &lt;/a&gt; (WSJ)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://thinkprogress.org/2009/08/27/stimulus-double-talk/"&gt;Republicans Who Opposed The Stimulus Line Up To Criticize It Publicly, Request More Money Privately&lt;/a&gt; (ThinkProgress)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.huffingtonpost.com/2009/03/03/reid-senate-republicans-w_n_171520.html"&gt;Reid: Congressional Republicans Want Obama To Fail&lt;/a&gt; (HuffPo)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://theplumline.whorunsgov.com/senate-republicans/harry-reid-takes-swipe-at-gang-of-six-suggests-gop-not-acting-in-good-faith"&gt;Reid Takes Swipe At “Gang Of Six,” Suggests GOP Not Acting “In Good Faith”&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"Whatever he's for, we're against it."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-1964999397005237724?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/1964999397005237724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/09/my-sister-drew-this.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1964999397005237724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1964999397005237724'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/09/my-sister-drew-this.html' title='My Sister Drew This'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_nijVY-LLAAc/SqeZbycvLZI/AAAAAAAAAA4/_doVAEFlkiw/s72-c/obama_cliff.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-2279292960997018383</id><published>2009-09-04T15:18:00.000-07:00</published><updated>2009-09-04T15:33:09.225-07:00</updated><title type='text'>Words Fail Me</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/VAEIcsOL2n4&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/VAEIcsOL2n4&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/p40othGJwhI&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/p40othGJwhI&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gPrYviZtVrs&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gPrYviZtVrs&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ubzG1CFi8cs&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ubzG1CFi8cs&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ZKBa9K_vAm8&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ZKBa9K_vAm8&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-2279292960997018383?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/2279292960997018383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/09/words-fail-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/2279292960997018383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/2279292960997018383'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/09/words-fail-me.html' title='Words Fail Me'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-227820112119572261</id><published>2009-08-14T17:02:00.000-07:00</published><updated>2009-08-14T17:05:48.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='strategy'/><category scheme='http://www.blogger.com/atom/ns#' term='policy'/><category scheme='http://www.blogger.com/atom/ns#' term='Obama'/><category scheme='http://www.blogger.com/atom/ns#' term='healthcare'/><category scheme='http://www.blogger.com/atom/ns#' term='whitehouse'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><category scheme='http://www.blogger.com/atom/ns#' term='DNC'/><title type='text'>Heath Care Messaging Advice to The White House &amp; DNC</title><content type='html'>To: The White House&lt;br /&gt;Cc: Democratic National Committee&lt;br /&gt;&lt;br /&gt;This is a piece of strategy/messaging advice regarding the opposition to health care reform.&lt;br /&gt;&lt;br /&gt;The radical right is fond of invoking the mythical and unassailable opinions of the "founding fathers".   Since no one can possibly know what our late founding fathers would actually think of the current state of affairs in the United States of America, there is little hope of a reasoned debate.  At a recent town hall gathering, an Arkansan cried, "I want my America back".  Another held a copy of the Constitution, and stated, "It doesn't say anything in here about health care!".  Shockingly, one of our elected officials himself, Sen Grassley, recently said at his own Iowa town hall gathering, "I see nowhere in the Constitution where health care is a right. ... I want to hear it from Obama, I want to hear it from Pelosi, about how this is about 'We the people.'"&lt;br /&gt;&lt;br /&gt;Assuming that some segment of these disrupters at our elected leaders' recent local town hall gatherings is merely poorly-informed, as opposed to something more subversive and sinister which I will refrain from naming, I suggest the Democratic leadership remind the public (and Sen Grassley) of the following fact.  This is the Preamble to the Constitution of the United States of America. There is no doubt that this statement was reviewed and signed by our founding fathers.&lt;br /&gt;&lt;br /&gt;"We the people of the United States, in order to form a more perfect union, establish justice, insure domestic tranquility, provide for the common defense, promote the general welfare, and secure the blessings of liberty to ourselves and our posterity, do ordain and establish this Constitution for the United States of America."&lt;br /&gt;&lt;br /&gt;The current health care reform proposal is in line with the fundamental founding objectives stated above. This is especially true when the proposed legislation is compared to the alternative, the status quo a decade from now.  Here are some suggestions for how to make the connection apparent.&lt;br /&gt;&lt;br /&gt;1. "Provide for the Common Defense"&lt;br /&gt;What does it mean, in terms of the common defense, aka national security, that by 2019 we will have 54 million uninsured non-elderly Americans?  The common defense is a matter of preparing for the unexpected.  What if we suffer another sneak attack such as Pearl Harbor, and need to quickly mobilize a fighting force to defend ourselves?  It is against the interest of the common defense for our pool of working-age citizens to be largely unable to afford basic, preventative care on the eve of a mobilization.  Furthermore, with a large number of Americans absolutely unable to afford to stay home from work and see a doctor when they feel sick, an otherwise containable microbe could get out of our control and weaken the general population, to a greater extent than other nations.  In terms of the common defense, the weakened American population will be less industrially productive and more vulnerable to other forms of attack.  In short, a healthier America is a stronger, sturdier America.&lt;br /&gt;&lt;br /&gt;2. "Promote the General Welfare"&lt;br /&gt;Under the current system, only a fortunate segment of the public enjoys the benefits of health coverage.  Many are denied benefits through no fault of their own.  For example, some may lose their job, or a providing family member may lose his or her job.  Most absurdly, some Americans are denied benefits other Americans enjoy simply because they are declared by insurance company bureaucrats to be too costly to insure.  Worse yet, sometimes Americans lose their jobs when insurance corporations apply pressure to employers.  Many share the blame, but mostly this unfair and unhealthy treatment of our fellow Americans is a consequence of inextricably linking health care to employment.  The current system does not promote the interest of the general welfare. It promotes the interest of the fortunate few at fortunate times in their lives. It's not just about fairness, either. It's about the overall health of the country, and the associated costs. Strikingly, the proposed health care reform will elevate the health of the general population at a lower cost than the status quo.  In other words, this proposal does a great deal to promote the general welfare.&lt;br /&gt;&lt;br /&gt;3. "Secure the Blessings of Liberty to Ourselves and Our Posterity"&lt;br /&gt;With the proposed health care reform enacted, we and our posterity will be free to migrate to more attractive jobs or careers, and will be free to engage in entrepreneurial pursuits, without the fear of innovation-crippling health care costs. On the other hand, under the current system, every American young person who is denied health care due to their parents lack of health coverage suffers a horrible denial of liberty before they even have a chance to claim it.  Lastly, access to health care is often a matter of life and death.  In 2006, 22,000 Americans died due to lack of insurance.  A more profound denial of liberty, I cannot imagine.&lt;br /&gt;&lt;br /&gt;Good luck. Please, never let up on the fight.&lt;br /&gt;&lt;br /&gt;Adam Wolenc&lt;br /&gt;Age 30&lt;br /&gt;Albany NY, CD21&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-227820112119572261?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/227820112119572261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/08/heath-care-messaging-advice-to-white.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/227820112119572261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/227820112119572261'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/08/heath-care-messaging-advice-to-white.html' title='Heath Care Messaging Advice to The White House &amp; DNC'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-8834056000109734701</id><published>2009-07-26T14:12:00.000-07:00</published><updated>2009-07-26T14:39:52.965-07:00</updated><title type='text'>Lego Star Wars 7680</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3461/3758793019_17b88787d9.jpg?v=0"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 437px; height: 328px;" src="http://farm4.static.flickr.com/3461/3758793019_17b88787d9.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://starwars.lego.com/en-us/Products/clonewars/7680.aspx"&gt;Lego Star Wars 7680 The Twilight&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is my birthday present from John.  He was happy because I couldn't build it all in one day.  He jumped up and down when I said the sun had gone down, and I had to stop.&lt;br /&gt;&lt;br /&gt;The Twilight is an interesting model. I don't think it is based on anything in the films, but I can't be sure.  The ship has many moving parts, and parts of the ship can be detached and reattached easily. This is nice when you are pretending that the ship has been damaged or needs repairs (But I don't play pretend games anymore ;) ).  By far the coolest attachment is the escape pod. That is what is pictured, above.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nijVY-LLAAc/SmzJ-I3tMDI/AAAAAAAAAAw/84314DrMI6Q/s1600-h/lego_eye_injury_warning.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 128px; height: 128px;" src="http://4.bp.blogspot.com/_nijVY-LLAAc/SmzJ-I3tMDI/AAAAAAAAAAw/84314DrMI6Q/s400/lego_eye_injury_warning.JPG" alt="" id="BLOGGER_PHOTO_ID_5362883325661622322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Once again, the "flick missiles" are just lame.  Some kid got his eye poked out, and ruined it for everyone.  If they shot further, it would be worth the effort of having to locate them and pick them up after each launch.  It's not.&lt;br /&gt;&lt;br /&gt;Anyway, here are more pictures than you care for.  Enjoy.&lt;br /&gt;&lt;br /&gt;In-progress&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/adamuu/3758794039/"&gt;1&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759589244/"&gt;2&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3758793949/"&gt;3&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759590450/"&gt;4&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759590356/"&gt;5&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3758793633/"&gt;6&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3758793501/"&gt;7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Complete&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/adamuu/3758793447/"&gt;8&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759589896/"&gt;9&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3758793243/"&gt;10&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759589626/"&gt;11&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3758793019/"&gt;12&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759589438/"&gt;13&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/adamuu/3759589334/"&gt;14&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-8834056000109734701?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/8834056000109734701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/07/lego-star-wars-7680.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/8834056000109734701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/8834056000109734701'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/07/lego-star-wars-7680.html' title='Lego Star Wars 7680'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_nijVY-LLAAc/SmzJ-I3tMDI/AAAAAAAAAAw/84314DrMI6Q/s72-c/lego_eye_injury_warning.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-1165402749238404354</id><published>2009-06-17T17:06:00.000-07:00</published><updated>2009-06-17T17:16:33.449-07:00</updated><title type='text'>Lego Star Wars 7752</title><content type='html'>Count Dooku's Solar Sailer&lt;br /&gt;&lt;br /&gt;Yes the box says 8-14 but I don't think 29 fits into any of their age groups. So, what's the difference.  This was fun to build.  I was surprised to see the the ship is balanced.  You can stand it on its fins.  Naturally for the 8-14 group there are the required projectiles.  The force is weak as has been the trend. (Did someone poke his eye out, or something?)  The MagnaGuards were unusual.  Count Dooku's light saber mounts to his cruiser by the blade not the handle, which totally breaks the fantasy.  Know what I mean?&lt;br /&gt;&lt;br /&gt;Assembly&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3360/3635709684_0e84c85969.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 437px;" src="http://farm4.static.flickr.com/3360/3635709684_0e84c85969.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Complete&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2469/3635709772_30b8239628.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 372px;" src="http://farm3.static.flickr.com/2469/3635709772_30b8239628.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Count Dooku in Transit&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3297/3634898993_2ed9cfa935.jpg?v=0"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 500px; height: 432px;" src="http://farm4.static.flickr.com/3297/3634898993_2ed9cfa935.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-1165402749238404354?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/1165402749238404354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/06/lego-star-wars-7752.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1165402749238404354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/1165402749238404354'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/06/lego-star-wars-7752.html' title='Lego Star Wars 7752'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6395996699319792688.post-9067134664550170211</id><published>2009-06-13T16:44:00.000-07:00</published><updated>2009-08-05T16:31:08.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Farkle Solver</title><content type='html'>I found this little game in Facebook called &lt;a href="http://apps.facebook.com/hotdices"&gt;Farkle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The Game&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;It is a dice-rolling game similar to &lt;a href="http://en.wikipedia.org/wiki/Yahtzee"&gt;Yahtzee&lt;/a&gt;.  There are only a few combinations that register points. After each roll, you register some points for the round by setting aside some of the scoring dice.  If you have at least 300 points, you can decide to stop there, or re-roll the remaining dice.  With less than 300 points you must always reroll at least some dice.  If after any roll you have no dice worth anything, you "FARKLE" and lose all points accumulated so far.  If you use all 6 dice after any number of rolls, you get a new roll within the same round. If you FARKLE that roll or a subsequent roll, you lose everything including points from the previous set of rolls.  The game consists of ten independent rounds. Within each round, the score accumulates for that round, until the player decides to end the round (&gt;300) or he FARKLES out. Since the rounds are independent, maximize game score by maximizing the score for each round.&lt;br /&gt;&lt;br /&gt;The dice combinations that are worth something are&lt;br /&gt;123456 , XXYYZZ, XXX, XXXX, XXXXX, XXXXXX, 1, and 5, where X, Y, and Z are distinct die faces.  The first two combinations are only relevant for the first roll when all 6 dice are available. They are worth 1500 and 750 points, respectively.  The 3-, 4-, 5-, and 6- of a kind combinations score different points depending on rank.  222 is worth 200, 2222 is worth 400, 22222 is worth 600, etc.  Breaking the pattern is 111 which is worth 1000 points.   As for the two singlets, a 1 alone is worth 100, and a 5 alone is worth 50.  You can visit the game for a more detailed rule sheet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The Problem&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The rules were simple enough. In playing the game I noted that there didn't seem to be very many decision points.   It seemed that there should be a simple strategy. But after a few (dozen) rounds of play I still couldn't decide on the best strategy for some of the more unusual situations.  So, I designed a program to find the best move in any given situation. Best move is defined as the move which maximizes expected score.  I have attached the solution to the bottom of this post.&lt;br /&gt;&lt;br /&gt;I made several assumptions to simplify the problem. For example, I assumed that whenever there is an opportunity to use all 6 dice, the best move is to do so.  Also, I assumed that whenever there is 3, 4, or 5 of a kind, it is best to use those dice.  Though, whether or not to re-roll is still a matter of question. There may have been other assumptions which I felt safe making after playing the game the hard way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Usage Guide&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Run on it's own it performs a simulation of all possible starting rolls and reports the expected value of the turn.  Provide it with 2 arguments, the dice shown on the board and the score banked &lt;span style="font-style: italic;"&gt;so far&lt;/span&gt; in the current set of rolls, and the program will report the best move and the expected score for that move.  If you want to analyze the first roll of the round, just put a zero for the second parameter.&lt;br /&gt;&lt;br /&gt;The program will report back which dice to hold. It will also report back the letter "H" or "R", which amounts to the programs advice about whether you should Hold or Reroll after banking the suggested combination.  Finally, the program will report an integer representing the additional score expected by this move.  It does not include the amount you specified as previous winnings at risk.&lt;br /&gt;&lt;br /&gt;Here is an example of the optimal player in action.&lt;br /&gt;&lt;pre&gt;$ java custom.Farkle 111246 0&lt;br /&gt;111R 2565&lt;br /&gt;$ java custom.Farkle 136 1000&lt;br /&gt;1H 100&lt;/pre&gt;&lt;br /&gt;Here, the first roll is 111246, and the program suggests scoring the 111 combo and re-rolling. The second roll is 136, for which the best move is to score the 1 and end the round for a total of 1100 points. Apparently, the program estimates that risking the 1100 points so far on a re-roll of only 2 dice would be unwise.&lt;br /&gt;&lt;br /&gt;Here is another example.&lt;br /&gt;&lt;pre&gt;$ java custom.Farkle 124566 0&lt;br /&gt;1R 549&lt;br /&gt;$ java custom.Farkle 12345 100&lt;br /&gt;1R 285&lt;br /&gt;$ java custom.Farkle 1123 200&lt;br /&gt;11H 200&lt;/pre&gt;&lt;br /&gt;The first roll presents a choice. Register the one, or both the one and the five?  The program says just take the one.  It also says with a roll this poor, we should expect about 550 points all told.  For the next roll, there is a similar choice.  one, or one and five?  (registering just the five would be silly, as it is worth less than the one)  The Farkle program says just take the one, bringing the round total to 200.  After the third roll, there are several choices, now that we have registered 300 or more points.  We could take 1 or 2 of the 2 available ones and reroll. Also, we could just take the ones and end the round. The program suggests it is best to end the round, here, for 400 points.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;About the solution&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The solution uses permutations and recursion. The solution uses memoization in the form of a HashMap to improve running time.  I got the idea for the approach after solving the problem RandomSort from &lt;a href="http://www.topcoder.com/stat?c=round_overview&amp;amp;rd=12174"&gt;TopCoder's Single-Round-Match 402&lt;/a&gt; as practice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Solution Code&lt;/span&gt;&lt;br /&gt;Here is the java code for the program:&lt;br /&gt;Update: I put the code in pastbin: &lt;a href="http://pastebin.com/f1ca1b37"&gt;farkle.java&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;/* Author: Adam Wolenc (http://www.google.com/profiles/adamdblu)&lt;br /&gt; * 2009-06-12&lt;br /&gt; * FARKLE Solver&lt;br /&gt; * This program reports the move maximizing expected score given the set of&lt;br /&gt; * dice rolled and the score accumulated from previous turns, which is at&lt;br /&gt; * risk.&lt;br /&gt; * See http://apps.facebook.com/hotdices for complete game rules and to play.&lt;br /&gt; *&lt;br /&gt; * Copyright © 2009 Adam Wolenc&lt;br /&gt; *    Copying and distribution of this file, with or without modification,&lt;br /&gt; *    are permitted in any medium without royalty provided the copyright&lt;br /&gt; *    notice and this notice are preserved.  This file is offered as-is,&lt;br /&gt; *    without any warranty.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package custom;&lt;br /&gt;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;&lt;br /&gt;public class Farkle {&lt;br /&gt;&lt;br /&gt;    //memo&lt;br /&gt;    public static HashMap&lt;String, String&gt; mem = new HashMap&lt;String, String&gt;();&lt;br /&gt;&lt;br /&gt;    public static String getExpected(String dice, int prevBank) {&lt;br /&gt;&lt;br /&gt;        //generate key for this request&lt;br /&gt;        dice = strsort(dice);&lt;br /&gt;        String key = dice + " " + prevBank;&lt;br /&gt;        &lt;br /&gt;        //check memo&lt;br /&gt;        if (mem.containsKey(key)) {&lt;br /&gt;            return mem.get(key);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //not in memo. compute.&lt;br /&gt;        String ret = "";&lt;br /&gt;        int score = 0;&lt;br /&gt;        //how much should the opportunity for a re-roll be worth?&lt;br /&gt;        int complBonus = 300;&lt;br /&gt;&lt;br /&gt;        //base cases: use all remaining dice&lt;br /&gt;        &lt;br /&gt;        //look for straight&lt;br /&gt;        if (a123456(dice)) {&lt;br /&gt;            score = 1500 + complBonus;&lt;br /&gt;            ret = dice + "H " + score;&lt;br /&gt;            mem.put(key, ret);&lt;br /&gt;            return ret;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        //look for 3 pairs of 2&lt;br /&gt;        if (aXXYYZZ(dice)) {&lt;br /&gt;            score = 750 + complBonus;&lt;br /&gt;            ret = dice + "H " + score;&lt;br /&gt;            mem.put(key, ret);&lt;br /&gt;            return ret;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //look for 3,4,5,6 of a kind.  Always hold them if found,&lt;br /&gt;        //even if it doesn't lead to a completion.&lt;br /&gt;        String reserve = "";    //dice to hold&lt;br /&gt;        for (int i = 0; i &lt; 2; i++) {&lt;br /&gt;            &lt;br /&gt;            //search for a die value that appears maximum number of times at least 3&lt;br /&gt;            String m = maxmatch(dice);&lt;br /&gt;            &lt;br /&gt;            if (!m.equals("")) {&lt;br /&gt;                if (m.equals("111111")) score += 4000;&lt;br /&gt;                if (m.equals("11111")) score += 3000;&lt;br /&gt;                if (m.equals("1111")) score += 2000;&lt;br /&gt;                if (m.equals("111")) score += 1000;&lt;br /&gt;                if (m.equals("222222")) score += 800;&lt;br /&gt;                if (m.equals("22222")) score += 600;&lt;br /&gt;                if (m.equals("2222")) score += 400;&lt;br /&gt;                if (m.equals("222")) score += 200;&lt;br /&gt;                if (m.equals("333333")) score += 1200;&lt;br /&gt;                if (m.equals("33333")) score += 900;&lt;br /&gt;                if (m.equals("3333")) score += 600;&lt;br /&gt;                if (m.equals("333")) score += 300;&lt;br /&gt;                if (m.equals("444444")) score += 1600;&lt;br /&gt;                if (m.equals("44444")) score += 1200;&lt;br /&gt;                if (m.equals("4444")) score += 800;&lt;br /&gt;                if (m.equals("444")) score += 400;&lt;br /&gt;                if (m.equals("555555")) score += 2000;&lt;br /&gt;                if (m.equals("55555")) score += 1500;&lt;br /&gt;                if (m.equals("5555")) score += 1000;&lt;br /&gt;                if (m.equals("555")) score += 500;&lt;br /&gt;                if (m.equals("666666")) score += 2400;&lt;br /&gt;                if (m.equals("66666")) score += 1800;&lt;br /&gt;                if (m.equals("6666")) score += 1200;&lt;br /&gt;                if (m.equals("666")) score += 600;&lt;br /&gt;                &lt;br /&gt;                //set aside the dice that match&lt;br /&gt;                dice = subtract(dice, m);&lt;br /&gt;                reserve += m;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //of the remaining dice (if any) are they all just 1's and 5's?&lt;br /&gt;        //if so, this is a no-brainer.  use all the dice and take the score&lt;br /&gt;        if (allOnesAndFives(dice)) {&lt;br /&gt;            score += onesAndFives(dice);&lt;br /&gt;            score += complBonus;&lt;br /&gt;            reserve += dice;&lt;br /&gt;            dice = "";&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //check if the above combinations have used all the dice&lt;br /&gt;        if (dice.equals("")) {&lt;br /&gt;            score += complBonus;&lt;br /&gt;            ret = reserve + "H " + score;&lt;br /&gt;            mem.put(key, ret);&lt;br /&gt;            return ret;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //farkle check. If there were no combinations played in all of the &lt;br /&gt;        //checks, above, and there are no 1's and no 5's, then the round&lt;br /&gt;        //is over.  no play can be made. all points are lost. (FARKLE)&lt;br /&gt;        if (score == 0 &amp;&amp; noOnesAndFives(dice)) {&lt;br /&gt;            ret = "FARKLE -" + prevBank;&lt;br /&gt;            mem.put(key, ret);&lt;br /&gt;            return ret;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        //recursive cases:  For each option of what dice to hold, explore&lt;br /&gt;        //the outcome of all permutations of rolling the dice that would&lt;br /&gt;        //remain after this move.  Return the move and the outcome that&lt;br /&gt;        //maximizes expected value.&lt;br /&gt;        &lt;br /&gt;        //a re-roll is assured.  now, itemize options&lt;br /&gt;        int c1 = countOnes(dice);&lt;br /&gt;        int c5 = countFives(dice);&lt;br /&gt;        double best_e;  //this variable best expected value seen so far.&lt;br /&gt;        //let the best option so far be to obliterate all previous score&lt;br /&gt;        //some move must be better than that.&lt;br /&gt;        if (score == 0) {&lt;br /&gt;            best_e = score;&lt;br /&gt;        } else {&lt;br /&gt;            best_e = -prevBank;&lt;br /&gt;        }&lt;br /&gt;        //track the best move, and whether or not to reroll&lt;br /&gt;        String best_bank = "";&lt;br /&gt;        boolean best_to_reroll = true;&lt;br /&gt;&lt;br /&gt;        //hold 0 or more 1's, hold 0 or more 5's (all combinations)&lt;br /&gt;        for (int r1 = 0; r1 &lt;= c1; r1++) {&lt;br /&gt;            for (int r5 = 0; r5 &lt;= c5; r5++) {&lt;br /&gt;                &lt;br /&gt;                //must bank at least one die&lt;br /&gt;                if (r1 == 0 &amp;&amp; r5 == 0 &amp;&amp; score == 0) {&lt;br /&gt;                    continue;&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;                //compose bank for this option, remove it from the dice, &lt;br /&gt;                // and score it&lt;br /&gt;                String bank = "";&lt;br /&gt;                for (int i = 0; i &lt; r1; i++) {&lt;br /&gt;                    bank += "1";&lt;br /&gt;                }&lt;br /&gt;                for (int i = 0; i &lt; r5; i++) {&lt;br /&gt;                    bank += "5";&lt;br /&gt;                }&lt;br /&gt;                String tempdice = subtract(dice, bank);&lt;br /&gt;                int bankscore = score + r1 * 100 + r5 * 50;&lt;br /&gt;&lt;br /&gt;                //calculate expected value of not re-rolling&lt;br /&gt;                if (bankscore &gt; best_e &amp;&amp; prevBank + score + bankscore &gt;= 300) {&lt;br /&gt;                    //under 300 points MUST re-roll even if it results in&lt;br /&gt;                    // lower expected score&lt;br /&gt;                    best_e = bankscore;&lt;br /&gt;                    best_bank = bank;&lt;br /&gt;                    best_to_reroll = false;&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;                //if 1 die remains now, calculate the e of rolling 1 die&lt;br /&gt;                if (tempdice.length() == 1) {&lt;br /&gt;                    double e = score + bankscore + &lt;br /&gt;                      (100 + 50 - 4 * (prevBank + score + bankscore)) / 6.0;&lt;br /&gt;                    //is the best move so far?&lt;br /&gt;                    if (e &gt; best_e) {&lt;br /&gt;                        best_e = e;&lt;br /&gt;                        best_bank = bank;&lt;br /&gt;                        best_to_reroll = true;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                //if 2 dice remain now, calculate the e of rolling 2 dice&lt;br /&gt;                if (tempdice.length() == 2) {&lt;br /&gt;                    double denom = 6.0 * 6.0;&lt;br /&gt;                    double e = score + bankscore;&lt;br /&gt;                    char c[] = new char[2];&lt;br /&gt;                    for (c[0] = '1'; c[0] &lt;= '6'; c[0]++) {&lt;br /&gt;                        for (c[1] = '1'; c[1] &lt;= '6'; c[1]++) {&lt;br /&gt;                            String r = new String(c);&lt;br /&gt;                            e += parseScore(getExpected(r,&lt;br /&gt;                              prevBank + score + bankscore)) / denom;&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    //is the best move so far?&lt;br /&gt;                    if (e &gt; best_e) {&lt;br /&gt;                        best_e = e;&lt;br /&gt;                        best_bank = bank;&lt;br /&gt;                        best_to_reroll = true;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                //if 3 dice remain now, calculate the e of rolling 3 dice&lt;br /&gt;                if (tempdice.length() == 3) {&lt;br /&gt;                    double denom = 6.0 * 6.0 * 6.0;&lt;br /&gt;                    double e = score + bankscore;&lt;br /&gt;                    char c[] = new char[3];&lt;br /&gt;                    for (c[0] = '1'; c[0] &lt;= '6'; c[0]++) {&lt;br /&gt;                        for (c[1] = '1'; c[1] &lt;= '6'; c[1]++) {&lt;br /&gt;                            for (c[2] = '1'; c[2] &lt;= '6'; c[2]++) {&lt;br /&gt;                                String r = new String(c);&lt;br /&gt;                                e += parseScore(getExpected(r, &lt;br /&gt;                                  prevBank + score + bankscore)) / denom;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    //is the best move so far?&lt;br /&gt;                    if (e &gt; best_e) {&lt;br /&gt;                        best_e = e;&lt;br /&gt;                        best_bank = bank;&lt;br /&gt;                        best_to_reroll = true;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                //if 4 dice remain now, calculate the e of rolling 4 dice&lt;br /&gt;                if (tempdice.length() == 4) {&lt;br /&gt;                    double denom = 6.0 * 6.0 * 6.0 * 6.0;&lt;br /&gt;                    double e = score + bankscore;&lt;br /&gt;                    char c[] = new char[4];&lt;br /&gt;                    for (c[0] = '1'; c[0] &lt;= '6'; c[0]++) {&lt;br /&gt;                        for (c[1] = '1'; c[1] &lt;= '6'; c[1]++) {&lt;br /&gt;                            for (c[2] = '1'; c[2] &lt;= '6'; c[2]++) {&lt;br /&gt;                                for (c[3] = '1'; c[3] &lt;= '6'; c[3]++) {&lt;br /&gt;                                    String r = new String(c);&lt;br /&gt;                                    e += parseScore(getExpected(r, &lt;br /&gt;                                      prevBank + score + bankscore)) / denom;&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    //is the best move so far?&lt;br /&gt;                    if (e &gt; best_e) {&lt;br /&gt;                        best_e = e;&lt;br /&gt;                        best_bank = bank;&lt;br /&gt;                        best_to_reroll = true;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                //if 5 dice remain now, calculate the e of rolling 5 dice&lt;br /&gt;                if (tempdice.length() == 5) {&lt;br /&gt;                    double denom = 6.0 * 6.0 * 6.0 * 6.0 * 6.0;&lt;br /&gt;                    double e = score + bankscore;&lt;br /&gt;                    char c[] = new char[5];&lt;br /&gt;                    for (c[0] = '1'; c[0] &lt;= '6'; c[0]++) {&lt;br /&gt;                        for (c[1] = '1'; c[1] &lt;= '6'; c[1]++) {&lt;br /&gt;                            for (c[2] = '1'; c[2] &lt;= '6'; c[2]++) {&lt;br /&gt;                                for (c[3] = '1'; c[3] &lt;= '6'; c[3]++) {&lt;br /&gt;                                    for (c[4] = '1'; c[4] &lt;= '6'; c[4]++) {&lt;br /&gt;                                        String r = new String(c);&lt;br /&gt;                                        e += parseScore(getExpected(r, &lt;br /&gt;                                          prevBank + score + bankscore)) / denom;&lt;br /&gt;                                    }&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    //is the best move so far?&lt;br /&gt;                    if (e &gt; best_e) {&lt;br /&gt;                        best_e = e;&lt;br /&gt;                        best_bank = bank;&lt;br /&gt;                        best_to_reroll = true;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        //best_e now has the expected value of the best move, best_bank has&lt;br /&gt;        // the best dice to hold this tunr, and best_to_reroll has the reroll&lt;br /&gt;        // advice.  This is enough to compose the return value.&lt;br /&gt;        score += Math.round(best_e);&lt;br /&gt;        reserve += best_bank;&lt;br /&gt;        ret = reserve + ((best_to_reroll) ? "R" : "H") + " " + score;&lt;br /&gt;        &lt;br /&gt;        //memoize this result and return it.&lt;br /&gt;        mem.put(key, ret);&lt;br /&gt;        return ret;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static String strsort(String dice) {&lt;br /&gt;        //sort given string character by character&lt;br /&gt;        char c[] = dice.toCharArray();&lt;br /&gt;        Arrays.sort(c);&lt;br /&gt;        return new String(c);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static double parseScore(String r) {&lt;br /&gt;        //split string by space, return the second element (score) as double&lt;br /&gt;        int cut = r.indexOf(' ');&lt;br /&gt;        return Double.valueOf(r.substring(cut));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static int countFives(String dice) {&lt;br /&gt;        int ret = 0;&lt;br /&gt;        for (int i = 0; i &lt; dice.length(); i++) {&lt;br /&gt;            if (dice.charAt(i) == '5') {&lt;br /&gt;                ret += 1;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        return ret;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static int countOnes(String dice) {&lt;br /&gt;        int ret = 0;&lt;br /&gt;        for (int i = 0; i &lt; dice.length(); i++) {&lt;br /&gt;            if (dice.charAt(i) == '1') {&lt;br /&gt;                ret += 1;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        return ret;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static int onesAndFives(String dice) {&lt;br /&gt;        return countOnes(dice) * 100 + countFives(dice) * 50;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static boolean noOnesAndFives(String dice) {&lt;br /&gt;        if (countOnes(dice) == 0 &amp;&amp; countFives(dice) == 0) {&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static boolean allOnesAndFives(String dice) {&lt;br /&gt;        for (int i = 0; i &lt; dice.length(); i++) {&lt;br /&gt;            if (dice.charAt(i) != '1' &amp;&amp; dice.charAt(i) != '5') {&lt;br /&gt;                return false;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static String subtract(String dice, String m) {&lt;br /&gt;        //subtract the dice listed in m from the dice listed in dice&lt;br /&gt;        //recursive function.  Subtract just the first die listed in m,&lt;br /&gt;        // and recur. Base case is when m is empty.&lt;br /&gt;        &lt;br /&gt;        //base case&lt;br /&gt;        if (m.length() == 0) {&lt;br /&gt;            return dice;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        //recursive case&lt;br /&gt;        char c = m.charAt(0);&lt;br /&gt;        m = m.substring(1);&lt;br /&gt;        int i = 0;&lt;br /&gt;        while (dice.charAt(i) != c) {&lt;br /&gt;            i++;&lt;br /&gt;        }&lt;br /&gt;        String l = "";&lt;br /&gt;        String r = "";&lt;br /&gt;        if (i &gt; 0) {&lt;br /&gt;            l = dice.substring(0, i);&lt;br /&gt;        }&lt;br /&gt;        if (i &lt; dice.length()) {&lt;br /&gt;            r = dice.substring(i + 1, dice.length());&lt;br /&gt;        }&lt;br /&gt;        dice = l + r;&lt;br /&gt;        return (subtract(dice, m));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static String maxmatch(String dice) {&lt;br /&gt;        //search for die value that appears the maximum number of times in&lt;br /&gt;        // dice, but at least 3. if no such value appears, return empty string.&lt;br /&gt;        int f[] = new int[6];&lt;br /&gt;        for (int i = 0; i &lt; dice.length(); i++) {&lt;br /&gt;            char c = dice.charAt(i);&lt;br /&gt;            if (c &gt;= '1' &amp;&amp; c &lt;= '9') {&lt;br /&gt;                f[Integer.valueOf(dice.charAt(i) - '1')]++;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        int max = 0;&lt;br /&gt;        int best = 0;&lt;br /&gt;        for (int i = 0; i &lt; 6; i++) {&lt;br /&gt;            if (f[i] &gt; max) {&lt;br /&gt;                max = f[i];&lt;br /&gt;                best = i + 1;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        if (max &gt;= 3) {&lt;br /&gt;            String ret = "";&lt;br /&gt;            for (int i = 0; i &lt; max; i++) {&lt;br /&gt;                ret += String.valueOf(best);&lt;br /&gt;            }&lt;br /&gt;            return ret;&lt;br /&gt;        }&lt;br /&gt;        return "";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static boolean aXXYYZZ(String dice) {&lt;br /&gt;        //search for 3 pairs of 2. If found, return true, else false.&lt;br /&gt;        if (dice.length() != 6) {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;        char d[] = dice.toCharArray();&lt;br /&gt;        Arrays.sort(d);&lt;br /&gt;        if (d[0] != d[1] || d[1] == d[2] || d[2] != d[3] || d[3] == d[4] || d[4] != d[5]) {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static boolean a123456(String dice) {&lt;br /&gt;        //search for straight. If found, return true, else false.&lt;br /&gt;        if (dice.length() != 6) {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;        char d[] = dice.toCharArray();&lt;br /&gt;        Arrays.sort(d);&lt;br /&gt;        if (d[0] == '1' &amp;&amp; d[1] == '2' &amp;&amp; d[2] == '3' &amp;&amp; &lt;br /&gt;            d[3] == '4' &amp;&amp; d[4] == '5' &amp;&amp; d[5] == '6') {&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        &lt;br /&gt;        //arg[0] = dice in current turn&lt;br /&gt;        //arg[1] = score banked from previous turns (which is at risk)&lt;br /&gt;        &lt;br /&gt;        //no arguements means run complete exploration of all outcomes&lt;br /&gt;        // of an initial roll (6 dice)&lt;br /&gt;        &lt;br /&gt;        if (args.length != 2) {&lt;br /&gt;            //random mode&lt;br /&gt;            for (int i = 0; i &lt; 0; i++) {&lt;br /&gt;                String s = "";&lt;br /&gt;                for (int j = 0; j &lt; 2; j++) {&lt;br /&gt;                    s += (char) ((Math.random() * 6.0d + 1) + '0');&lt;br /&gt;                }&lt;br /&gt;                s = strsort(s);&lt;br /&gt;                System.out.println(s + " -&gt; " + getExpected(s, 0));&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            //sequential mode&lt;br /&gt;            int l = 6;&lt;br /&gt;            char c[] = new char[l];&lt;br /&gt;            char dice_remain_dist[] = new char[l];&lt;br /&gt;            double denom = Math.pow(6.0, l);&lt;br /&gt;            double e = 0.0;&lt;br /&gt;            int farkCount = 0;&lt;br /&gt;            for (c[0] = '1'; c[0] &lt;= '6'; c[0]++) {&lt;br /&gt;                for (c[1] = '1'; c[1] &lt;= '6'; c[1]++) {&lt;br /&gt;                    for (c[2] = '1'; c[2] &lt;= '6'; c[2]++) {&lt;br /&gt;                        for (c[3] = '1'; c[3] &lt;= '6'; c[3]++) {&lt;br /&gt;                            for (c[4] = '1'; c[4] &lt;= '6'; c[4]++) {&lt;br /&gt;                                for (c[5] = '1'; c[5] &lt;= '6'; c[5]++) {&lt;br /&gt;                                    String s = new String(c);&lt;br /&gt;                                    s = strsort(s);&lt;br /&gt;                                    String res = getExpected(s, 0);&lt;br /&gt;                                    double te = parseScore(res);&lt;br /&gt;                                    e += te;&lt;br /&gt;&lt;br /&gt;                                    if (res.contains("FARKLE")) {&lt;br /&gt;                                        farkCount++;&lt;br /&gt;                                    } else {&lt;br /&gt;                                        if (te &lt; 300) {&lt;br /&gt;                                            System.out.println(s + " -&gt; " + res);&lt;br /&gt;                                        }&lt;br /&gt;                                        int len = l - res.indexOf(' ') + 1;&lt;br /&gt;                                        dice_remain_dist[len]++;&lt;br /&gt;                                    }&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            System.out.println("E = " + e / denom + " farkPct = "&lt;br /&gt;              + (farkCount / denom * 100));&lt;br /&gt;            for (int i = 0; i &lt; l; i++) {&lt;br /&gt;                System.out.println("Resulting in " + (i) + &lt;br /&gt;                  " dice remaining: " + (dice_remain_dist[i] / denom * 100));&lt;br /&gt;            }&lt;br /&gt;        } else {&lt;br /&gt;            String res = getExpected(args[0], Integer.valueOf(args[1]));&lt;br /&gt;            System.out.println(res);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6395996699319792688-9067134664550170211?l=adamuu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adamuu.blogspot.com/feeds/9067134664550170211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://adamuu.blogspot.com/2009/06/farkle-solver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/9067134664550170211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6395996699319792688/posts/default/9067134664550170211'/><link rel='alternate' type='text/html' href='http://adamuu.blogspot.com/2009/06/farkle-solver.html' title='Farkle Solver'/><author><name>Adam Wolenc</name><uri>http://www.blogger.com/profile/14213626457334656004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-FWLwjszP2dw/TqxcpPDE-zI/AAAAAAAAAfA/7-LGCZMi6R0/s220/adamuu_freedom_tower.jpg'/></author><thr:total>0</thr:total></entry></feed>
