﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Eric Swanson</title>
    <description>Building the Internet... One site at a time(tm)</description>
    <link>http://www.ericis.com/</link>
    <language>en-US</language>
    <pubDate>7/3/2009 2:56:30 AM</pubDate>
    <lastBuildDate>7/3/2009 2:56:30 AM</lastBuildDate>
    <generator>Eric Swanson</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>Eric Swanson</title>
      <url>http://www.ericis.com/images/profile.jpg</url>
      <link>http://www.ericis.com/</link>
    </image>
    <item>
      <title>Service Oriented Architecture</title>
      <link>http://www.ericis.com/posts/default.aspx?id=254</link>
      <description>Great first name! Here goes some rambling... SOA will converge with Business Capability Modeling and Process Modeling built within the scope of business service portfolio management on top of evolving industry and corporate taxonomies through master data management initiatives which will be supported by more targeted technology solutions through "domain driven design" that evolve through the idea of domain-specific languages and the realization of integrated model driven architectures into the software development lifecycle. Software vendors and consulting firms will continue to push proprietary, end-to-end topologies of multiple products as "industry templates" that claim to support open standards. The reality of such solutions claiming support for standards will be that an open standard is selected and extended in an open way, boasting and marketing compatibility with the standard as well as how the solution helped to evolve the standard, but leaving the community with a branched standard that won't play well with others as the primary trunk of the standard continues to grow upward. Ultimately, middle-man software will sit between these products to translate communications and attempt to make enterprise SOA a reality. Everyone will quickly realize (if they haven't already) that enterprise SOA was never about exposing anything and everything across the enterprise in a common format, but completely about streamlining business capabilities/processes across technology solutions to the degree that the supporting technology infrastructure does not "matter", so long as Information Technology exposes the services in a common way (i.e. not necessarily an explicit and exact way, but along a least common denominator). Adaptive industry and business models, evolving technology standards, and the need to sell software as a service will ultimately make "Service Oriented Architecture" a fad of our generation until a new name brings the same light-bulb, "aha" moment of clarity to a new generation and a new maturity of understanding is achieved. Wow do I need a brain break...</description>
      <category>Software Development</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=254</guid>
      <pubDate>12/27/2008 3:42:42 AM</pubDate>
    </item>
    <item>
      <title>The Generic Web</title>
      <link>http://www.ericis.com/posts/default.aspx?id=252</link>
      <description>&lt;code&gt;Website&amp;lt;Twitter&amp;gt; web = new Website&amp;lt;Twitter&amp;gt;();&lt;br /&gt;web.PukeContent("tweet, tweet. Rockin Robin, tweedle-e-deet.");&lt;br /&gt;//Yes, the web is generic!&lt;/code&gt;</description>
      <category>Internet/Computers/Software</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=252</guid>
      <pubDate>12/27/2008 3:43:16 AM</pubDate>
    </item>
    <item>
      <title>Top 50 Twitterers to Follow for Developers</title>
      <link>http://www.ericis.com/posts/default.aspx?id=251</link>
      <description>&lt;p style="border-top:1px dotted #ccc;margin-top:10px;padding-top:15px"&gt;I've been &lt;a href="http://twitter.com/ericis"&gt;new to Twitter&lt;/a&gt; and have only just begun to enjoy their overly simplified method of communication. &lt;a href="http://www.noop.nl/"&gt;Jurgen Appelo&lt;/a&gt; recently posted a blog entry titled &lt;a href="http://www.noop.nl/2008/12/top-50-twitterers-to-follow-for-developers.html"&gt;"Top 50 Twitterers to Follow for Developers"&lt;/a&gt;, ranking each popular developer based on their number of Twitter "Followers".&lt;/p&gt;
&lt;p&gt;I updated Jurgen's ranking to include the number of twitter posts per day using the scores from the popular Twitter tool &lt;a href="http://followcost.com/ericis"&gt;"Follow Cost"&lt;/a&gt;. I then took a simple average of the three rankings Follower Rank, Twitters per Day Rank, and Last 100 Twitters per Day Rank and then created a final ranking. Fortunate for Jurgen's position (bumped him up a few rankings).&lt;/p&gt;</description>
      <category>Software Development</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=251</guid>
      <pubDate>12/6/2008 4:43:09 AM</pubDate>
    </item>
    <item>
      <title>Microsoft - Platorms to go please!</title>
      <link>http://www.ericis.com/posts/default.aspx?id=250</link>
      <description>Hear me out: I don't want to install licensed, basic configurations in virtual environments any longer! Think of the productivity gains in a world where... The MSDN premium subscriber downloads one of 10 (20? 50?) ready-to-go virtual images, configured by the pros themselves! Download your image in Hyper-V or VirtualPC format and GO! Trial license keys are used and can be upgraded to valid keys at any time. (Extra benefit that multiple trial configurations are now available.) Example: With the most recent release, I... 1) downloaded 2008 server, 2007 SharePoint, SQL 2008, TFS 2008, 2007 Office, 2007 Visio, 2007 Project, 2008 Visual Studio, and Expression Studio v2. 2) I then boot up a Virtual PC VHD and install and configure Server 2008. 3) Install all patches. 4) backup and compress the image. 5) Install/config SQL 2008 and SharePoint 2007 and repeat steps #3-4. 6) Install/config TFS 2008 and repeat steps #3-4 (because TFS config is painful). 7) Install/activate/config Office, VS2008, Expression Studio and steps #3-4. Now, I can do whatever I want for a while and always fall back to a virtual. I want to try out PerformancePoint? Back to image in step #5. I want to try out just Search 2008 standalone? Back to step #4. ONE ACTIVELY PATCHED Operating System Virtual Image WOULD BE A HUGE TIME SAVER! PLEASE?! *By the pros? :)</description>
      <category>Software Development</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=250</guid>
      <pubDate>10/24/2008 5:54:42 AM</pubDate>
    </item>
    <item>
      <title>Silverlight Sucks</title>
      <link>http://www.ericis.com/posts/default.aspx?id=249</link>
      <description>Just compare the system requirements of &lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx#sysreq" target="_blank"&gt;Microsoft's Silverlight&lt;/a&gt; with &lt;a href="http://www.adobe.com/products/flashplayer/productinfo/systemreqs/" target="_blank"&gt;Adobe's Flash (Macromedia)&lt;/a&gt;. Now, Flash has traveled the world and taken in all the sites for years and years. But, you'd think with the importance of playing in this space that Microsoft would compete a little harder... Oh wait... you all are still excited about Silverlight no matter what reality dictates. That's right... Let me know how it goes. I'll stick with the basics for a little while longer. (Don't get me wrong, I get just as excited as you do about Silverlight and an embedded light-weight .NET environment, but I don't let emotions control my actions.) Oh, and let me know how well Microsoft acquired Yahoo! and how they competed in the ad space while you're whistling Silverlight tunes. :) For all their efforts, I continue to applaud the developers at Microsoft. I'm certain you've done better than I could have. BTW: I'm loving what I've seen of WCF so far!</description>
      <category>Software Development</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=249</guid>
      <pubDate>7/23/2008 10:48:09 AM</pubDate>
    </item>
    <item>
      <title>Key Technologies Announcement</title>
      <link>http://www.ericis.com/posts/default.aspx?id=248</link>
      <description>Announcing the Web 2.0 YUI AJAX-enabled, Adobe RIA driven mashup with Silverlight 2.0 WPF XAML tutorials for social, community tagging and clipping supported by a LINQ backend running on top of Astoria from a geospatial aware SQL 2008 and communicating with JSON! All of this using scalable SOA built in the Cloud via REST APIs managed by an ESB and Grid Computing! You won't even recognize this Ruby Gem! :)</description>
      <category>Software Development</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=248</guid>
      <pubDate>4/2/2008 11:00:35 PM</pubDate>
    </item>
    <item>
      <title>Updating my network of sites...</title>
      <link>http://www.ericis.com/posts/default.aspx?id=247</link>
      <description>&lt;p&gt;I'm in the process of updating my network of websites. I've been transitioning to "Enterprise Architecture" along with a lot of other life changes. Busy, busy, busy... I've been using &lt;a href="http://del.icio.us/ericis"&gt;del.icio.us &lt;/a&gt; a lot lately, so here's what I've been looking at lately:&lt;/p&gt;
&lt;script type="text/javascript" src="http://del.icio.us/feeds/js/tags/ericis?sort=freq;icon;count=137;totals;size=11-24;color=87ceeb-0000ff;title=my%20del.icio.us%20tags;name;showadd"&gt;&lt;/script&gt;</description>
      <category>Website</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=247</guid>
      <pubDate>7/17/2008 12:19:47 PM</pubDate>
    </item>
    <item>
      <title>How to be a Failure!</title>
      <link>http://www.ericis.com/posts/default.aspx?id=246</link>
      <description>&lt;p&gt;After starting the lengthy-titled book &lt;a href="http://www.stevemcdermott.com/" target="_blank"&gt;"How to Be a Complete and Utter Failure in Life, Work &amp; Everything: 44 1/2 Steps to Lasting Underachievement"&lt;/a&gt;, I had to comment...&lt;/p&gt;
&lt;p&gt;
Steve,&lt;br /&gt;
&lt;br /&gt;
So far, I have failed to finish your book this morning due to 
pressing interruptions in business that are causing me great 
succstress.&lt;br /&gt;
&lt;br /&gt;
I had the need to make a suggestion: "Whether &lt;abbr title="he/she"&gt;neh&lt;/abbr&gt; accepts the 
advice, is completely up to &lt;abbr title="him/her"&gt;ner&lt;/abbr&gt;."&lt;br /&gt;
&lt;br /&gt;
The words &lt;abbr title="he/she"&gt;"neh"&lt;/abbr&gt; and &lt;abbr title="him/her"&gt;"ner"&lt;/abbr&gt; refer to he/she and him/her 
respectively. I started the words with the letter "n" to refer 
to "nobody in particular".&lt;br /&gt;
&lt;br /&gt;
I saw that you Trademarked "self-unimprovement guide". In the 
same respect of unwillingness to share great ideas, I now 
trademark "neh" and "ner" and "succstress" and grant you the 
right to use these words if they refer to me as the author in 
respective context. ;D&lt;br /&gt;
&lt;br /&gt;
Eric Swanson&lt;br /&gt;
&lt;a href="http://iseric.com"&gt;http://iseric.com&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;</description>
      <category>Book Reviews</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=246</guid>
      <pubDate>7/17/2008 12:19:36 PM</pubDate>
    </item>
    <item>
      <title>Life Really is Good</title>
      <link>http://www.ericis.com/posts/default.aspx?id=245</link>
      <description>&lt;p&gt;Today is a really great day (for more reasons than I care to share with the world). I'm writing this entry today simply to share how much gratitude I have for my life.&lt;/p&gt;
&lt;p&gt;
Following are some highlights of my day (by the end of the day):
&lt;ul&gt;
&lt;li&gt;Talked with my wife throughout the day while she is helping my mom on a catering job&lt;/li&gt;
&lt;li&gt;Reflected in my daily journal&lt;/li&gt;
&lt;li&gt;Completed security integration of a Windows Forms CMS tool for the unreleased re-write of www.AzBlue.com&lt;/li&gt;
&lt;li&gt;Helped my security director solve an urgent issue related to a bug in Internet Explorer&lt;/li&gt;
&lt;li&gt;Created an Excel-VBA macro for a friend to find text in a column and select the entire row for every match&lt;/li&gt;
&lt;li&gt;Rehearsed the dance "Tradition" for an upcoming Fiddler on the Roof production (September) by &lt;a href="http://starlightcommunitytheater.org/" target="_blank"&gt;Starlight Community Theatre&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Continued to practice my song for my &lt;a href="http://media.myfoxphoenix.com/KSAZ/AZ-Idol/index.html" target="_blank"&gt;Arizona Idol&lt;/a&gt; audition on July 30&lt;/li&gt;
&lt;li&gt;Attended a daily meeting with friends&lt;/li&gt;
&lt;li&gt;Spent a moment talking to both of my parents&lt;/li&gt;
&lt;li&gt;Spent some time playing with my dogs&lt;/li&gt;
&lt;li&gt;Woke up and went to bed with a personal prayer&lt;/li&gt;
&lt;li&gt;Was so excited by the little things in my day that I felt compelled to write about it on a website for the whole world to see&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;I am truly grateful and I love the good times and I respect the bad times.&lt;/p&gt;</description>
      <category>Health &amp; Wellness</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=245</guid>
      <pubDate>7/25/2007 5:15:28 AM</pubDate>
    </item>
    <item>
      <title>Obtaining Response.OutputStream.Length...</title>
      <link>http://www.ericis.com/posts/default.aspx?id=244</link>
      <description>&lt;p&gt;In ASP.NET, the &lt;code&gt;Response.OutputStream&lt;/code&gt; is write-only. As a result, if you attempt to read the length of the response output at any point in stage in the page events, you get the "&lt;code&gt;NotSupportedException&lt;/code&gt;". Taking a page from the book of guys who wrote compression filters that compress the response output on-the-fly, I discovered that I could access the length of the response as it is written...&lt;/p&gt;
&lt;p&gt;
Basically, I wrote a custom class that inherits "&lt;code&gt;Stream&lt;/code&gt;" and overrides all of the appropriate stream's methods/properties. The default constructor accepts a &lt;code&gt;Stream&lt;/code&gt; object and stores it in a private variable, so the overridden methods/properties all expose the underlying stream's methods/properties. Example: &lt;code&gt;override public bool CanRead { get { return this._stream.CanRead; } }&lt;/code&gt;. I declared a "&lt;code&gt;private long _length = 0;&lt;/code&gt;" variable and set the value in my stream's "&lt;code&gt;SetLength&lt;/code&gt;" method and update it in the "&lt;code&gt;Write&lt;/code&gt;" method using the "count" parameter, ensuring the length always reflects the data length. In the "&lt;code&gt;Close&lt;/code&gt;" method, I use "&lt;code&gt;base.Close();&lt;/code&gt;" and then I can do whatever I want with my private "&lt;code&gt;_length&lt;/code&gt;" variable, which contains the length of the response's output stream.&lt;/p&gt;
&lt;p&gt;
Once I had the class above, I used the following code in the page's "&lt;code&gt;OnLoad&lt;/code&gt;" event:&lt;br /&gt;
&lt;code&gt;
this.Response.Filter = new ObserveResponseLengthStream(this.Response.Filter);&lt;/code&gt;
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
Per Jorge Pereyra's request, here is the code for "write, setLength, flush and seek":
&lt;/p&gt;
&lt;p&gt;&lt;pre style="width:365px;overflow:scroll"&gt;&lt;code&gt;
class ObserveResponseLengthStream : Stream
{
   private Stream _stream = null;
   private long _length = 0;
   public ObserveResponseLengthStream(Guid urlKey, 
      Stream stream)
   {
      this._stream = stream;
   }

   public override long Seek(long offset, 
      SeekOrigin origin)
   {
      return this._stream.Seek(offset, origin);
   }

   public override void Flush()
   {
      this._stream.Flush();
   }

   public override void SetLength(long value)
   {
      this._stream.SetLength(value);
      this._length = value;
   }

   public override void Write(byte[] buffer, 
      int offset, 
      int count)
   {
      this._stream.Write(buffer, offset, count);
      this._length += (long)count;
   }

   public override void Close()
   {
      try
      {
         this._stream.Close();
      }
      catch { }

      base.Close();

      try
      {
         /*now you know the actual length 
           of the response in this._length,
           so do whatever you want with it*/
      }
      catch (Exception ex)
      {
         //make sure your exceptions are handled!
      }
   }

   /*...all the other code simply exposes the 
     _stream's properties and methods...*/
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Software Development</category>
      <guid isPermaLink="true">http://www.ericis.com/posts/default.aspx?id=244</guid>
      <pubDate>7/17/2008 12:37:31 PM</pubDate>
    </item>
  </channel>
</rss>