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

<channel>
	<title>Jeff Weiss [dot] org</title>
	<atom:link href="http://jeffweiss.org/feed" rel="self" type="application/rss+xml" />
	<link>http://jeffweiss.org</link>
	<description></description>
	<lastBuildDate>Mon, 06 Feb 2012 04:56:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Solving Hanging with Friends (Pt. 1)</title>
		<link>http://jeffweiss.org/archives/21</link>
		<comments>http://jeffweiss.org/archives/21#comments</comments>
		<pubDate>Mon, 06 Feb 2012 04:56:15 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=21</guid>
		<description><![CDATA[I like to play Hanging with Friends, and those that I play with are very competitive. I&#8217;ve been staying on top, but just barely. I&#8217;ve spent a lot of time informally deducing. I wondered if I could write a program &#8230; <a href="http://jeffweiss.org/archives/21">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I like to play <a href="http://www.hangingwithfriends.com">Hanging with Friends</a>, and those that I play with are very competitive.  I&#8217;ve been staying on top, but just barely. I&#8217;ve spent a lot of time informally deducing. I wondered if I could write a program to solve the games for me.</p>
<p>Where to start? It seemed like a big task&#8230;</p>
<p>There are two distinct activities to solving a hangman game:</p>
<ol>
<li>Finding a list of possible words</li>
<li>Figuring out what letter to guess next</li>
</ol>
<p>Each can be developed independently and then brought together for an effective solution.  </p>
<p>There are many, many ways to do this, but I thought I&#8217;d just start hacking away in Ruby and then transition to something else at the pain points.  Ater a couple hours of late-night coding, I found the Ruby-only solution to be good enough for personal use.</p>
<p><a href="http://jeffweiss.org/archives/22">Part 2</a> deals with figuring out which letter to guess next<br />
Part 3 focuses on how to find the list of possible words<br />
Part 4 brings them together<br />
Part 5 talks about next steps
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Solving+Hanging+with+Friends+%28Pt.+1%29+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D21" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Solving+Hanging+with+Friends+%28Pt.+1%29+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D21" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/21/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solving Hanging with Friends (Pt. 2)</title>
		<link>http://jeffweiss.org/archives/22</link>
		<comments>http://jeffweiss.org/archives/22#comments</comments>
		<pubDate>Mon, 06 Feb 2012 02:14:22 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=22</guid>
		<description><![CDATA[Continued from Part 1, I&#8217;m off to write something to solve my Hanging with Friends games for me. Because the two pieces of the puzzle (word list and next letter) are independent I can begin with either. I started with &#8230; <a href="http://jeffweiss.org/archives/22">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Continued from <a href="http://jeffweiss.org/archives/21">Part 1</a>, I&#8217;m off to write something to solve my Hanging with Friends games for me. </p>
<p>Because the two pieces of the puzzle (word list and next letter) are independent I can begin with either. I started with the letter frequency analysis because it seemed like a more tractable problem.</p>
<p>Ok, so it seemed easier but where should I start? Since I&#8217;m not totally clear on what it should do yet, I&#8217;ll start with the tests (aka how it should behave). </p>
<p>Given a list of viable words,</p>
<ul>
<li>it should count how many words a letter appears in</li>
<li>it should only count a letter once per word</li>
<li>it should count each letter of the word</li>
</ul>
<p>Here&#8217;s the full RSpec for those tests:</p>
<pre><code>
    describe "letter frequencies" do
      before(:each) do
        @words = ["lilly", "silly"]
      end

      it "should not return nil" do
        Frequency.letter_frequencies(@words).should_not be_nil
      end

      it "should return a hash" do
        Frequency.letter_frequencies(@words).is_a?(Hash).should be_true
      end

      it "should count the number of words with that letter" do
        freqs = Frequency.letter_frequencies(@words)
        freqs[:s].should == 1
        freqs[:y].should == 2
      end

      it "should not return a frequency larger than the number of words in the list" do
        freqs = Frequency.letter_frequencies(@words)
        freqs.values.count {|c| c> @words.length}.should == 0
      end
    end

    describe "letters per word" do
      before(:each) do
        word = "lilly"
        @letters = Frequency.letters_per_word(word)
      end
      it "should not return nil" do
        @letters.should_not be_nil
      end
      it "should return an array" do
        @letters.is_a?(Array).should be_true
      end
      it "should convert the letter to symbols" do
        @letters.count { |e| e.class == Symbol}.should == @letters.length
      end
      it "should only include repeated letters once" do
        @letters.count { |e| e == :l}.should == 1
      end
    end
</code></pre>
<p>Hmm, that&#8217;s a little more straightforward than I thought. Let&#8217;s make those tests green.</p>
<p>My first pass:</p>
<pre><code>
  class Frequency
    def self.letter_frequencies(words)
      freq = {}
      words.each do |word|
        letters_per_word(word).each do |letter|
          freq[letter] ||= 0
          freq[letter] += 1
        end
      end
      freq
    end

    def self.letters_per_word(word)
      chars = []
      word.each_char do |char|
        char = char.to_sym
        chars << char unless chars.include? char
      end
      chars
    end
  end
</code></pre>
<p>Ok, so more code to the tests than to the actual implementation.  That seems about right...</p>
<p>Next we'll deal with how to make the word list contain only the words we actually want.</p>
<p>The most recent version of the code is available at GitHub: <a href="https://github.com/jeffweiss/hanging_solver">https://github.com/jeffweiss/hanging_solver</a>.
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Solving+Hanging+with+Friends+%28Pt.+2%29+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D22" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Solving+Hanging+with+Friends+%28Pt.+2%29+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D22" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/22/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Service and Remote Desktop Mutex Sharing</title>
		<link>http://jeffweiss.org/archives/14</link>
		<comments>http://jeffweiss.org/archives/14#comments</comments>
		<pubDate>Wed, 15 Dec 2010 19:13:11 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=14</guid>
		<description><![CDATA[C# mutex gets weird with services <a href="http://jeffweiss.org/archives/14">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I ran into some weirdness while trying to implement <a href="http://msdn.microsoft.com/en-us/library/system.threading.mutex(v=VS.90).aspx" target="_blank">System.Threading.Mutex</a> synchronization between one of my Windows services and a colleague&#8217;s application.  The synchronization worked great in the debugger, but when running on a test system, the apps stomped all over each other.</p>
<p>Both had code somewhat like this:</p>
<pre class="qoate-code">
  System.Threading.Mutex mutex = new System.Threading.Mutex(false, "SHARED_MUTEX");
  //some prep work

  //get the mutex for the shared resource
  mutex.WaitOne();

  //work with the shared resource

  //done, release the mutex
  mutex.ReleaseMutex();
</pre>
<p>Wha?!</p>
<p>I double checked the system mutex name, that was fine.  Didn&#8217;t seem like it should be a permissions issue.  The note in the documentation about Terminal Services kept nagging at me.  We weren&#8217;t running Terminal Services on the virtual test machine, but we were using Remote Desktop (Terminal Services lite, if you will).</p>
<p>I started by prefacing the mutex from my colleague&#8217;s app with &#8220;Global\&#8221;.  All of a sudden, the apps were working fine on the test system.  But I hadn&#8217;t changed my windows service app&#8217;s mutex name to look at &#8220;Global\&#8221;!</p>
<pre class="qoate-code">
  System.Threading.Mutex mutex = new System.Threading.Mutex(false, "Global\\SHARED_MUTEX");
  //some prep work

  //get the mutex for the shared resource
  mutex.WaitOne();

  //work with the shared resource

  //done, release the mutex
  mutex.ReleaseMutex();
</pre>
<p>It turns out that because my portion was a windows service, it&#8217;s execution context changed from being part of the Terminal Services/Remote Desktop session, to being global.  The other app was still in the Terminal Services/Remote Desktop session context because it was an interactive application.  In order for it to lock on the same mutex, it had to explicitly look for the mutex in the Global namespace rather than the Local session namespace.</p>
<p>Makes sense, I guess, but still a little weird.  Glad I didn&#8217;t spend all day tracking it down either&#8230;
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Windows+Service+and+Remote+Desktop+Mutex+Sharing+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D14" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Windows+Service+and+Remote+Desktop+Mutex+Sharing+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D14" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/14/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To: WCF Serialization Using Both XmlSerializerFormat and DataContractSerializer</title>
		<link>http://jeffweiss.org/archives/12</link>
		<comments>http://jeffweiss.org/archives/12#comments</comments>
		<pubDate>Thu, 02 Dec 2010 18:51:32 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=12</guid>
		<description><![CDATA[On one of my projects, we&#8217;ve recently decided to switch from a SOAP-based interface for our SDK to a REST-based interface.  One potential problem: we can&#8217;t break the old SOAP interface. Ideally, we&#8217;d be able to use the same underlying &#8230; <a href="http://jeffweiss.org/archives/12">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On one of my projects, we&#8217;ve recently decided to switch from a SOAP-based interface for our SDK to a REST-based interface.  One potential problem: we can&#8217;t break the old SOAP interface.</p>
<p>Ideally, we&#8217;d be able to use the same underlying business objects for both access paths, but we were unsure how well WCF&#8217;s DataContractSerializer and XMLSerializerFormat would play together.  Our existing SOAP interface made heavy usage of the DataContractSerializer; I know we could have used that for the REST interfaces as well, but we needed to support XML attributes to align and integrate with other internal projects.</p>
<p>It turns out that you can mock up the business objects with attributes for both DataContractSerializer and XmlSerializerFormat, but the interfaces that expose these objects must be different.  So you can&#8217;t have, say, an IDataService that functions for both a DataContract interface and an Xml interface.  The attributes annotating the interface methods must be distinct, otherwise the DataContractSerializer will usurp the XmlSerializerFormat.</p>
<pre class="qoate-code">

[ServiceContract]
[DataContractFormat]
public interface IDataService
{
  [OperationContract]
  List&lt;MyObject&gt; GetMyObjects();
}

[ServiceContract]
[XmlSerializerFormat]
public interface IDataService2
{
  [WebGet(UriTemplate="")]
  List&lt;MyObject&gt; GetMyObjects();
}

[DataContract]
[XmlRoot("myObject")]
public class MyObject
{
  [DataElement]
  [XmlAttribute("name")]
  public String Name { get; set; }
}
</pre>
<p>This may be not be ideal because now we have two interfaces.  So, an alternative is to change to a single interface and pushing the attribute annotations to the implementations.  That looks more like this:</p>
<pre class="qoate-code">

public interface IDataService
{
  List&lt;MyObject&gt; GetMyObjects();
}

[ServiceContract]
[XmlSerializerFormat]
public class RestDataService : IDataService
{
  [WebGet(UriTemplate("")]
  public List&lt;MyObject&gt; GetMyObjects()
  {
    return new List&lt;MyObject&gt;();
  }
}

[ServiceContract]
[DataContractFormat]
public class SoapDataService : IDataService
{
  [OperationContract]
  public List&lt;MyObject&gt; GetMyObjects()
  {
    return new List&lt;MyObject&gt;();
  }
}
</pre>
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=How+To%3A+WCF+Serialization+Using+Both+XmlSerializerFormat+and+DataContractSerializer+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D12" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=How+To%3A+WCF+Serialization+Using+Both+XmlSerializerFormat+and+DataContractSerializer+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D12" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/12/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Greats of British Television</title>
		<link>http://jeffweiss.org/archives/13</link>
		<comments>http://jeffweiss.org/archives/13#comments</comments>
		<pubDate>Sun, 28 Nov 2010 07:15:19 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=13</guid>
		<description><![CDATA[I love British TV, some of my favs <a href="http://jeffweiss.org/archives/13">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I love British television! So much so that I had an hour and a half conversation with a woman from Essex solely on various shows that were great. The conversation originated because she was shocked that I knew where Essex was (<a href="http://en.wikipedia.org/wiki/Gavin_%26_Stacey" target="_blank">Gavin &amp; Stacey</a>). She&#8217;d never heard of Gavin &amp; Stacey and their Wales-England-seemingly-doomed-romance. Not being British, while watching the show, I had no idea how far Essex was from Barry, so I <a href="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=Essex,+United+Kingdom&amp;daddr=barry+island,+wales&amp;hl=en&amp;geocode=FZTiFQMd5i4KACnTDYf-J1bYRzF5UO5HOMtXQg%3BFcovEAMdERHO_ykBBQ87-wVuSDExLVflJIsNJg&amp;mra=iwd&amp;mrcr=0&amp;sll=51.765908,-0.896782&amp;sspn=6.34485,8.371582&amp;ie=UTF8&amp;ll=51.539502,-1.323853&amp;spn=3.187818,4.185791&amp;z=8">mapped</a> it: 225 miles from northeast of London to a bit west of Cardiff.  So, off we were!</p>
<p><span id="more-13"></span><br />
We talked about the sharp wit of <a href="http://www.hulu.com/black-books" target="_blank">Black Books</a> and how Dylan Moran plays the same (but still quite funny) drunken Irishman in most of his roles to the funny, but obnoxious, <a href="http://www.topgear.com/uk/jeremy-clarkson" target="_blank">Jeremy Clarkson</a> and <a href="http://www.topgear.com/uk/" target="_blank">Top Gear</a>.  No mention of British TV is complete without the obvious discussion of <a href="http://www.bbc.co.uk/doctorwho/dw" target="_blank">The Doctor</a> (based in London, but filmed in Cardiff), though we didn&#8217;t get to <a href="http://www.itv.com/docmartin/" target="_blank">Doc Martin</a>, I am enjoying it.</p>
<p>We talked of the great murder mystery cozies: Miss Marple, Foyle&#8217;s War, Midsomer Murders, Wallander, and Inspector Lynley; and of grittier dramas of MI-5 (Spooks in Britain), Rebus, The Last Enemy, The Prisoner, and Life on Mars.</p>
<p>I also learned of a few great shows that I hadn&#8217;t heard of, like Peep Show and That Mitchell and Webb Look.</p>
<p>Sampling of the greats:</p>
<ul>
<li>Black Books (<a href="http://www.hulu.com/black-books" target="_blank">Hulu</a>)</li>
<li>Doc Martin (<a href="http://www.hulu.com/doc-martin" target="_blank">Hulu</a>: S1-3, <a href="http://movies.netflix.com/WiMovie/Doc-Martin-Series-1/70068706" target="_blank">Netflix</a> WI: S1-4)</li>
<li>Doctor Who &amp; Torchwood (<a href="http://movies.netflix.com/WiMovie/Doctor_Who_Season_1/70050023" target="_blank">Netflix</a> WI: S1-4)</li>
<li>Foyle&#8217;s War</li>
<li>Inspector Lynley Mysteries</li>
<li>The IT Crowd (Netflix WI: S1-3)</li>
<li>Jekyll</li>
<li>The Last Enemy (Netflix WI)</li>
<li>Life on Mars</li>
<li>MI-5 / Spooks (Netflix WI)</li>
<li>Midsomer Murders</li>
<li>Miss Marple</li>
<li>That Mitchell &amp; Webb Look (Netflix WI)</li>
<li>Peep Show (<a href="http://www.hulu.com/peep-show" target="_blank">Hulu</a>)</li>
<li>The Prisoner</li>
<li>Rebus</li>
<li>Sherlock</li>
<li>Top Gear</li>
<li>Wallander</li>
<li>Yes, Minister</li>
</ul>
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Greats+of+British+Television+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D13" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Greats+of+British+Television+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D13" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/13/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netflix iPhone App Review</title>
		<link>http://jeffweiss.org/archives/10</link>
		<comments>http://jeffweiss.org/archives/10#comments</comments>
		<pubDate>Sat, 27 Nov 2010 22:52:34 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Netflix]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=10</guid>
		<description><![CDATA[Netflix iPhone app great, except for no video out <a href="http://jeffweiss.org/archives/10">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using the <a href="http://itunes.apple.com/us/app/netflix/id363590051?mt=8" target="_blank">Netflix app</a> on my iPhone 3GS for a while now. By far, it&#8217;s one of the best apps I have. I&#8217;ve heard complaints about not being able to manage one&#8217;s disc queue, but I&#8217;m not overly concerned with that; it makes sense for the long term strategy of Netflix and also keeps the app focused. Additionally, it maintains goodwill for the developers who have apps that already do that, <a href="http://itunes.apple.com/us/app/phoneflicks-netflix-queue/id291142646?mt=8" target="_blank">PhoneFlicks</a> being the one that I use. (As a nerdy aside, Netflix has a great <a href="http://developer.netflix.com" target="_blank">developer API</a>, that&#8217;s really worth taking a look at. It&#8217;s clean, intuitive, and works great. It takes a lot of work to get an API designed right, and they&#8217;ve done it.)</p>
<p>This week I did hit what I consider to be a major flaw in the application: no video out on the 3GS.</p>
<p>Over the last week I was in San Diego, on vacation, without my laptop. I had been mulling over getting the Apple AV cable because it would make Netflix Watch Instantly way easier at home: my wife or I could just dock an iPhone and start watching. (No, we don&#8217;t have TiVo, which has Netflix built in; we choose not to subscribe to cable service.) Our current setup is a laptop with S-Video out connected to a hand-me-down receiver. We swung by the Apple store, picked up the cable, and headed back to try it out on an episode of <a href="http://www.itv.com/docmartin/" target="_blank">Doc Martin</a>. Sound, but no video. YouTube and local videos worked fine, but no go for Netflix (or <a href="http://jeffweiss.org/?p=7" target="_self">Hulu Plus</a>, for that matter). As I mentioned, major flaw.</p>
<p>Another issue that is mostly an annoyance rather than a glaring problem is the limitation of only being able to see the first 20 items on your WI queue.<br />
Also, beware of which plan you have. This app doesn&#8217;t work if you&#8217;re on the el cheapo $5/mo plan. Any normal plan should be fine though.</p>
<p>Bottom line: The Netflix app is one that makes me hope I&#8217;m grandfathered in for unlimited data usage when I eventually upgrade. It&#8217;s a great app, but would be made better by supporting video out on the 3GS.
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Netflix+iPhone+App+Review+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D10" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Netflix+iPhone+App+Review+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D10" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/10/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Skyfire Review</title>
		<link>http://jeffweiss.org/archives/9</link>
		<comments>http://jeffweiss.org/archives/9#comments</comments>
		<pubDate>Sat, 27 Nov 2010 20:55:16 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Skyfire]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=9</guid>
		<description><![CDATA[Skyfire delivers promising, but mixed results for mobile Flash video transcoding <a href="http://jeffweiss.org/archives/9">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Having heard about <a href="http://www.skyfire.com/product/iphone" target="_blank">Skyfire</a> on <a href="http://www.appleinsider.com/articles/10/11/02/skyfire_ios_browser_approved_by_apple_converts_flash_video_to_html5.html" target="_blank">AppleInsider</a>, I thought it sounded interesting but had no reason to try it&#8211;until I was on a vacation with no computer or wifi.  When <a href="http://jeffweiss.org/?p=7" target="_self">Hulu Plus failed to deliver</a>, I thought I&#8217;d spend the $3 to give Skyfire a chance.</p>
<p>First up attempt, Sherlock on PBS.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="328" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="video=1627350640&amp;player=viral&amp;chapter=1" /><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="src" value="http://www-tc.pbs.org/video/media/swf/PBSPlayer.swf" /><param name="bgcolor" value="#000000" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="512" height="328" src="http://www-tc.pbs.org/video/media/swf/PBSPlayer.swf" bgcolor="#000000" wmode="transparent" allowfullscreen="true" flashvars="video=1627350640&amp;player=viral&amp;chapter=1"></embed></object></p>
<p style="font-size: 11px; font-family: Arial, Helvetica, sans-serif; color: #808080; margin-top: 5px; background: transparent; text-align: center; width: 512px;">Watch the <a style="text-decoration: none !important; font-weight: normal !important; height: 13px; color: #4eb2fe !important;" href="http://video.pbs.org/video/1627350640" target="_blank">full episode</a>. See more <a style="text-decoration: none !important; font-weight: normal !important; height: 13px; color: #4eb2fe !important;" href="http://www.pbs.org/masterpiece" target="_blank">Masterpiece.</a></p>
<p>Two immediate problems. 1) We had left off at about 20 minutes in, but the video in Skyfire offered no way scrub to that location. 2) Audio not sync&#8217;d with video, off by about 1.5 seconds.</p>
<p>Second attempt, Fringe on Fox.  This worked, although I did get interrupted, and had to come back to it.  After which I had to start the video from the beginning again because of the lack of the scrub bar to seek to a location.  But at least the audio was synched and the picture looked pretty good for 3G.</p>
<p>Bottom line: $3 price tag is the upper limit of what I&#8217;d pay for this.  At least it&#8217;s a one-time cost and the service will hopefully improve with time.  The real value here is not the browser, but the backend service to transcode Flash videos.
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Skyfire+Review+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D9" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Skyfire+Review+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D9" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/9/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hulu Plus Review</title>
		<link>http://jeffweiss.org/archives/7</link>
		<comments>http://jeffweiss.org/archives/7#comments</comments>
		<pubDate>Sat, 27 Nov 2010 19:59:27 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Hulu]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=7</guid>
		<description><![CDATA[Hulu Plus iPhone app &#038; subscription, even at lower price, fail to deliver <a href="http://jeffweiss.org/archives/7">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve gotten very spoiled by <a title="Hulu" href="http://hulu.com" target="_blank">Hulu</a>.  They make is possible for me to not subscribe to cable (or even have an over-the-air antenna, for that matter), yet keep watching TV, while enduring only a fraction of the commercials&#8211;all for free.  The normal downsides of requiring a computer and watching a day later aren&#8217;t really issues for me.  I usually always have a computer nearby, and, with a newborn,  watching anything uninterrupted is a rarity.</p>
<p>This is what makes <a href="http://www.hulu.com/plus" target="_blank">Hulu Plus</a> a hard sell: Paying for TV and <em>still</em> having to watch ads.  But, there was the perfect storm of vaca w/o laptop or wifi, Hulu Plus offering free trial week, and a couple show backlogs.  So, I decided to give it a shot.</p>
<p>What isn&#8217;t immediately clear until you sign up for Hulu Plus, is that not all shows that are available on Hulu are available on your device (iPhone in my case), dealbreakers for me were: Psych, Fringe, and Chuck.</p>
<p>Aside from all the shenanigans with the subscription costs and ads, the app itself was a little buggy.  It outright crashed a handful of times, and often I would have sections of a show pause, buffer, repeat from about 15 seconds, and then pause at the same place again.  These could have been related to the 3G connection instead of wifi, but that&#8217;s really no excuse.  The plus side of the bugginess is that the ads rarely worked either.</p>
<p>Oh, and on an iPhone 3GS, the Hulu Plus app doesn&#8217;t allow output to TV via Apple AV cable.</p>
<p>Bottom line: With limited device content, bugginess, no TV out, and adverts, still not worth the reduced cost of $8/mo.
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Hulu+Plus+Review+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D7" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Hulu+Plus+Review+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D7" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/7/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Starting anew&#8230;</title>
		<link>http://jeffweiss.org/archives/5</link>
		<comments>http://jeffweiss.org/archives/5#comments</comments>
		<pubDate>Fri, 26 Nov 2010 17:45:15 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://jeffweiss.org/?p=5</guid>
		<description><![CDATA[I&#8217;ve trashed by old self-hosted Drupal site.  It was just too much hassle to make sure that my home machine was always-on, fully patched, etc.  I&#8217;m now hosting at Dreamhost. The move required a few changes to my MX records, &#8230; <a href="http://jeffweiss.org/archives/5">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve trashed by old self-hosted Drupal site.  It was just too much hassle to make sure that my home machine was always-on, fully patched, etc.  I&#8217;m now hosting at Dreamhost.</p>
<p>The move required a few changes to my MX records, so I may have delays getting and answering @jeffweiss.org emails&#8230;
<div class="tweetthis" style="text-align:left;">
<p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Starting+anew%E2%80%A6+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D5" title="Post to Twitter"><img class="nothumb" src="http://jeffweiss.org/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Starting+anew%E2%80%A6+http%3A%2F%2Fjeffweiss.org%2F%3Fp%3D5" title="Post to Twitter">Tweet This Post</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jeffweiss.org/archives/5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

