<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-12381895</atom:id><lastBuildDate>Mon, 13 Feb 2012 14:40:41 +0000</lastBuildDate><category>mobile</category><category>GIS</category><category>logging</category><category>JPA</category><category>Domain Driven Design</category><category>SQL</category><category>html5</category><category>web</category><category>QTP</category><category>development</category><category>annotations</category><category>maven</category><category>selenium</category><category>privacy</category><category>assertion</category><category>analytics</category><category>javscript</category><category>chrome</category><category>JConsole</category><category>c#</category><category>exceptions</category><category>firefox</category><category>SAP</category><category>RSS</category><category>TDD</category><category>css</category><category>iPod</category><category>spring</category><category>No Fluff Just Stuff</category><category>Hudson</category><category>nosql</category><category>.net</category><category>route optimization</category><category>performance</category><category>semantics</category><category>bind variables</category><category>eclipse</category><category>traveling salesman</category><category>2008</category><category>tld</category><category>rant</category><category>backup</category><category>DAO</category><category>dead lock</category><category>NUnit</category><category>facebook</category><category>google maps</category><category>java</category><category>refactoring</category><category>error handling</category><category>security</category><category>NFJS</category><category>formatting</category><category>Design</category><category>cloud</category><category>HQL</category><category>filter</category><category>batch</category><category>freezing</category><category>many-to-many</category><category>domain object</category><category>android</category><category>iPhone</category><category>Google Plus</category><category>struts</category><category>Agile</category><category>persistence</category><category>html</category><category>weblogic</category><category>JSF</category><category>JRockit</category><category>testing</category><category>ubuntu</category><category>jms</category><category>starteam</category><category>subversion</category><category>locking</category><category>google</category><category>Excel</category><category>race condition</category><category>challenge</category><category>subclass</category><category>javascript</category><category>debugging</category><category>custom tag library</category><category>many to many</category><category>Dependency Injection</category><category>Feedburner</category><category>apple</category><category>PMD</category><category>conference</category><category>Oracle</category><category>grid</category><category>GUI</category><category>Swing</category><category>Scala</category><category>CinJUG</category><category>frameworks</category><category>peer review</category><category>user interface</category><category>jalopy</category><category>checked exceptions</category><category>windows</category><category>source control</category><category>JUnit</category><category>optimistic</category><category>hardware</category><category>database</category><category>Online Storage</category><category>linux</category><category>hibernate</category><category>math</category><category>Continuous Integration</category><category>sdlc</category><category>Lift</category><category>geeky fun</category><category>ajax</category><category>programming</category><category>jsp</category><category>monitoring</category><category>Motorola</category><category>Joomla</category><category>SEO</category><category>hard drive</category><category>twitter</category><category>routing</category><category>maps</category><category>knol</category><category>CPD</category><category>deadlock</category><title>Rich in Cincy</title><description>Software Development, IT topics, and general geekery.</description><link>http://grabity.blogspot.com/</link><managingEditor>noreply@blogger.com (Rich Hill)</managingEditor><generator>Blogger</generator><openSearch:totalResults>212</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogspot/HkXv" /><feedburner:info uri="blogspot/hkxv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.10441</geo:lat><geo:long>-84.507742</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-7350043299305319733</guid><pubDate>Thu, 26 Jan 2012 14:59:00 +0000</pubDate><atom:updated>2012-01-26T09:59:00.353-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Dependency Injection</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Dependency Injection</title><description>I'm finally nearing the point where I'm getting fully comfortable on this project after about 4 months and that means it's time to start putting some bigger ideas in play. For this particular project there are about 6 different factory classes at the service and dao layers and accessing them is actually kind of a pain with the current setup. So I'm thinking that dependency injection is the way to go here.&lt;br /&gt;
&lt;br /&gt;
I've transitioned previous applications from old school factory classes to using dependency injection frameworks but I'm still somewhat new to the .Net ecosystem. It looks like there's a .Net version of Spring available to use and I'm sure there are others. I'd love to get some suggestions on DI frameworks that people have successfully for .Net before. And since this is a mobile application running on limited hardware, overhead is a pretty major concern.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-7350043299305319733?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j2MoUEW_bwdXDlFkxOtOlt4xmg4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j2MoUEW_bwdXDlFkxOtOlt4xmg4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j2MoUEW_bwdXDlFkxOtOlt4xmg4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j2MoUEW_bwdXDlFkxOtOlt4xmg4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=6TGg7whGdN4:LMUlObecKrY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=6TGg7whGdN4:LMUlObecKrY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/6TGg7whGdN4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/6TGg7whGdN4/dependency-injection.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>3</thr:total><georss:featurename>Cincinnati, OH, USA</georss:featurename><georss:point>39.1031182 -84.5120196</georss:point><georss:box>39.0045432 -84.6699481 39.201693199999994 -84.3540911</georss:box><feedburner:origLink>http://grabity.blogspot.com/2012/01/dependency-injection.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-530409285056302992</guid><pubDate>Wed, 18 Jan 2012 21:56:00 +0000</pubDate><atom:updated>2012-01-18T16:56:38.654-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">NUnit</category><category domain="http://www.blogger.com/atom/ns#">TDD</category><title>Checking a clone with reflection</title><description>One of the more common idioms I've had to deal with is to clone an object following some specific business logic that treats most attributes as a copy but other attributes with special values. As a firm believer in TDD I used to write methods that would compare attributes on a one off scale at the time of test creation. This led to two major problems though. First, the test methods could get long and&amp;nbsp;repetitive&amp;nbsp;pretty quickly if the object being cloned has a lot of attributes. The second problem, which doesn't appear right away, is that you have to remember to update these tests as you add more attributes otherwise your test becomes invalid and doesn't reflect all of the intentions of the original class. As a solution to both of these problems I end up using some simple reflection and looping to do the comparisons and always stay up to date, no matter how many new properties are added to the class. Here's an example in C# with an NUnit test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [Test]&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void ShouldCreateValidCopyFromOriginal()&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Get the original object&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var originalObject = dao.GetTheObject(primaryKey);&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // create the new object as a "clone"&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var newObject = originalObject.CreateNewFromCopy();&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // call out properties that don't copy exactly&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var ignoredProperties = new List&lt;string&gt;()&lt;/string&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Property1",&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Property9",&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "Property23",&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "PropertyN"&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // now check all of the properties to make sure they line up&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var properties = originalObject.GetType().GetProperties();&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var property in properties)&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!ignoredProperties.Contains(property.Name))&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Assert.AreEqual(&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; originalObject.GetType().GetProperty(property.Name).GetValue(originalObject, null),&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; newObject.GetType().GetProperty(property.Name).GetValue(newObject, null));&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #9fc5e8;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
and that's it. If the properties from the ignored list are to contain a specific value then check those values independently or perform a check to make sure the values aren't equal. Now you're ensuring that the intention of the cloning operation is actually being achieved and you won't be surprised 2 years down the road when you add a new property and it doesn't match because your failed unit test will alert you to the problem.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-530409285056302992?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WN_nZd6FDx1p7Q-lrLJXBzY5cIk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WN_nZd6FDx1p7Q-lrLJXBzY5cIk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WN_nZd6FDx1p7Q-lrLJXBzY5cIk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WN_nZd6FDx1p7Q-lrLJXBzY5cIk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=LMmawNLvCFI:_CdcEmdbRJ0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=LMmawNLvCFI:_CdcEmdbRJ0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/LMmawNLvCFI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/LMmawNLvCFI/checking-clone-with-reflection.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>3</thr:total><feedburner:origLink>http://grabity.blogspot.com/2012/01/checking-clone-with-reflection.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-7707922064019633537</guid><pubDate>Fri, 06 Jan 2012 19:09:00 +0000</pubDate><atom:updated>2012-01-06T14:09:52.665-05:00</atom:updated><title>Time for Resolutions</title><description>It's that time of year again: the beginning. That's the traditional time to set goals for oneself and claim how fervently you'll stick to these goals. No promises on the latter half of that sentence, but I'm going to attempt to update this more regularly this year. An appropriate starting point for writing this year is to recap last year.&lt;br /&gt;
&lt;br /&gt;
I ended up cycling through 4 different teams at various levels on the same project, finally landing as the Tech Lead for mobile development. The different teams led me through a lot of different and challenging environments and gave me a really wide view of the new landscape.&lt;br /&gt;
&lt;br /&gt;
For mobile development I'm now working in C# on a Windows mobile device. It feels overall pretty similar to the days of doing Java development. The big change is that I'm coming into this language mostly fresh and I've only got about 20% of my time each week to actually give to development work. The rest goes into PM type tasks.&lt;br /&gt;
&lt;br /&gt;
That leads me to where I'm at today which is leading another group of developers. It's nice to be back in the mix and getting a good handle on where we need to be.&lt;br /&gt;
&lt;br /&gt;
Looking forward to writing more this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-7707922064019633537?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AqxmML7_x1h0-mRB7jTBuVGplCk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AqxmML7_x1h0-mRB7jTBuVGplCk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AqxmML7_x1h0-mRB7jTBuVGplCk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AqxmML7_x1h0-mRB7jTBuVGplCk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=gbDLv7I7g54:-_d0ppibpKg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=gbDLv7I7g54:-_d0ppibpKg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/gbDLv7I7g54" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/gbDLv7I7g54/time-for-resolutions.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2012/01/time-for-resolutions.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-2676917330314943037</guid><pubDate>Tue, 29 Nov 2011 21:06:00 +0000</pubDate><atom:updated>2011-11-29T16:07:46.564-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Can anyone justify using regions in C#?</title><description>I'm working on some code that has been developed by the team before I joined and I see these region preprocessor flags all over in large methods. I'm wondering if these things have any place in development at all. From what I see it's a way to collapse an area of code visually. Do they serve another purpose. If not, then why aren't we just writing tighter methods. It seems as though these are completely unnecessary if your code is well written.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-2676917330314943037?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wsM-yAmxoQ30IzNA_A0tRgUYA8o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wsM-yAmxoQ30IzNA_A0tRgUYA8o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wsM-yAmxoQ30IzNA_A0tRgUYA8o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wsM-yAmxoQ30IzNA_A0tRgUYA8o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=tre4Fr02szs:LbIh9A_-xLY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=tre4Fr02szs:LbIh9A_-xLY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/tre4Fr02szs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/tre4Fr02szs/can-anyone-justify-using-regions-in-c.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>1</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/11/can-anyone-justify-using-regions-in-c.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-1549539509107812228</guid><pubDate>Thu, 03 Nov 2011 12:52:00 +0000</pubDate><atom:updated>2011-11-03T07:52:17.285-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><title>My Golden Rule(s) of Programming - How I Learned to Write Code Like a Professional</title><description>The single biggest pet peeve in development is when I'm doing a peer review and I see the same (or nearly the same) 20 line block of code repeated over and over again because it was just so easy to copy and paste. When I see this I invariably kick it back to the developer and tell them to remove all but 1 copy and check it back in again. So I developed a very simple rule for on-boarding new developers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Write it the first time how ever you like&lt;/li&gt;
&lt;li&gt;You can copy and paste it the second time&lt;/li&gt;
&lt;li&gt;There should never be a third copy&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Once developers understand that I'm not joking when I say there won't be 3 copies their code inevitably gets better. This results in a few benefits&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Code is easier to read because there's less of it to look at&lt;/li&gt;
&lt;li&gt;Code is easier to test because there are fewer entry point&lt;/li&gt;
&lt;li&gt;Code coverage goes up because more of it is being tested&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
If you've got a group of developers, I strongly advise that you use this rule. There's a nice tool out there called CPD (Copy Paste Detector) that is part of &lt;a cpd.html"="" href="http://www.blogger.com/%3Ca%20href=" http:="" pmd.sourceforge.net=""&gt;http://pmd.sourceforge.net/cpd.html&lt;/a&gt;"&amp;gt;PMD that can help find places in your code where duplicates already exist. Go back and reduce those duplicates to make your code healthier.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-1549539509107812228?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fXDvF3UjrPvW5MPJH_YrBZS55Rs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fXDvF3UjrPvW5MPJH_YrBZS55Rs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fXDvF3UjrPvW5MPJH_YrBZS55Rs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fXDvF3UjrPvW5MPJH_YrBZS55Rs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=n5MhfKHYbBI:BHm43OJG6vo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=n5MhfKHYbBI:BHm43OJG6vo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/n5MhfKHYbBI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/n5MhfKHYbBI/my-golden-rules-of-programming-how-i.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/11/my-golden-rules-of-programming-how-i.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-3916631160492683349</guid><pubDate>Wed, 19 Oct 2011 17:17:00 +0000</pubDate><atom:updated>2011-10-19T12:17:43.946-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">.net</category><title>The Dark Side</title><description>So I've moved over to the dark side. About 6 weeks ago I switched over to a new team doing .net development on mobile devices. Working in c# (something I haven't done since college) is a bit of a change. But so far the transition has been pretty nice. i'm finally getting comfortable working in the environment and the testing is getting better. I still have yet to really appreciate linq, but I'm liking the language features overall. I'm sure there are going to be a lot of posts coming out of here about the comparisons between Java and C#, but honestly they're pretty similar so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-3916631160492683349?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h8GRIpgdb7IkSYuMUwB4BQ9YO2A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h8GRIpgdb7IkSYuMUwB4BQ9YO2A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h8GRIpgdb7IkSYuMUwB4BQ9YO2A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h8GRIpgdb7IkSYuMUwB4BQ9YO2A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=iA5mnfxZH7M:2zLZoneiqBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=iA5mnfxZH7M:2zLZoneiqBs:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/iA5mnfxZH7M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/iA5mnfxZH7M/dark-side.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><georss:featurename>Cincinnati, OH 45202, USA</georss:featurename><georss:point>39.105188151712625 -84.51595544815063</georss:point><georss:box>39.10441815171262 -84.51718944815063 39.10595815171263 -84.51472144815064</georss:box><feedburner:origLink>http://grabity.blogspot.com/2011/10/dark-side.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-1057325216098168928</guid><pubDate>Thu, 18 Aug 2011 18:35:00 +0000</pubDate><atom:updated>2011-08-18T13:35:02.580-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">google</category><title>What Else Could Google Have Bought for $12.5B</title><description>Google just committed about a third of all of it's cash for the Motorola deal. And while it's likely one of the best moves they could have made (patents, handsets, Android top to bottom, likelihood of SEC and FTC approval, competitive advantage, 20,000 more employees, a great Chicago campus) there are definitely other things that they could have done with that much cash. Here are a few of them I was thinking about.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://news.tigerdirect.com/wp-content/uploads/2008/03/hulu_logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://news.tigerdirect.com/wp-content/uploads/2008/03/hulu_logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Hulu: This would be a really interesting and appropriate acquisition for Google. Much more in line with other companies they've purchased in the past. Hulu is the second largest streaming video site on the web (behind Google's already massive youtube). The real sticking point that would come into play for a deal like this is the content rights to the shows that Hulu broadcasts. Those same rights kept Hulu from an IPO just a few months ago. But if they could package a few years of those rights and tie it in quickly to youtube then Google would be looking at some substantial power in the deal. Netflix has been coming on strong for a while now with more than 30% of all US internet traffic during peak hours. Google could take a big bite back out of that. Probably the bigger prize though would be the reemergence of Google TV. It tried to launch last winter and died on the shelf when the content owners pulled their support after release. This could really get Google back in the living room.&lt;br /&gt;
Cost: Unknown&lt;br /&gt;
Google Products in the Area - Youtube&lt;br /&gt;
Likelihood of Approval - Medium to Low. With youtube's huge online presence this might be a tough one to get past the regulators&lt;br /&gt;
Potential Upside: High quality online video content gets a production value that isn't there on youtube. Would potentially get youtube back in the living room and revive Google TV.&lt;br /&gt;
Potential Downside: Big regulatory difficulties&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jViMVUhmxjk/Tk1ZgYfjMgI/AAAAAAAAAMw/6MhS6Xpo3-4/s1600/temp+g+music.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-jViMVUhmxjk/Tk1ZgYfjMgI/AAAAAAAAAMw/6MhS6Xpo3-4/s1600/temp+g+music.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
The music industry: If you look at the four big labels that control a combined 80% of the market they are going down fast. Google's been struggling to get their cloud music service going for a while and this has been the bread and butter of the iTunes business. They could have gained control in a market that they've had obvious interest but struggled to succeed. The problem is that buy 1 puts deals with the others at risk and trying to buy more than one would be a regulatory nightmare.&lt;br /&gt;
Cost: $3b to $20B&lt;br /&gt;
Google Products in the Area - Google Music Beta&lt;br /&gt;
Likelihood of Approval - High on the low end, low on the high end. No way they get approval to buy all 4. Buying just one would probably work though.&lt;br /&gt;
Potential Upside: a big jump on licensing about a quarter of the music in the US. Get to eat Apple's lunch.&lt;br /&gt;
Potential Downside: a big hurdle towards getting the other 75% of us music&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.androidguys.com/wp-content/uploads/2010/05/adobe-logo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.androidguys.com/wp-content/uploads/2010/05/adobe-logo.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Adobe: A major player in the software industry and not exactly Google's style. Google is the leader for HTML5 and Adobe's Flash is what's been holding it back. Google could come in to kill off Flash and continue web side development for good Adobe products. Adobe's one of the only other tech companies to get verbed. Everyone knows what "Photoshopping" an image is today. There's a lot of good design talent at Adobe and Google's been on a heavy design push lately.&lt;br /&gt;
Cost: Probably about $17B based on the current market cap of $11.5B. Oh, and Adobe also owns the PDF file format that Google probably wouldn't mind controlling and improving and incorporating into their Google Docs product a bit more heavily.&lt;br /&gt;
Google Products in the Area - Sketchup, picnik, Picassa&lt;br /&gt;
Likelihood of Approval - Moderate. There's not a lot of overlap with Google's core market here and there's not much of an anti-competitive smell about this.&lt;br /&gt;
Potential Upside: Lot's of nice software that's highly visible. Kill Flash. Control a dominant document standard.&lt;br /&gt;
Potential Downside: An expensive purchase for mostly client side software for a company that is mostly cloud based.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm1.static.flickr.com/98/364907518_37c7a78b2e.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://farm1.static.flickr.com/98/364907518_37c7a78b2e.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
A renewable energies company: Google has been heavily invested in green tech for a while now. They just got their first LEED Platinum building certification at the California Googleplex and they've got other LEED certified buildings around the world. The Googleplex is even covered with solar panels and they've been using goats to mow their lawn. Does it really make sense for Google to get into the utilities business? Probably not. There's a whole new set of legal ramifications and regulations that go along with that business. But investing in technology that your passionate about is like me buying stock in Chipotle. It just feels like it makes sense to bet on things you like succeeding.&lt;br /&gt;
Cost: Probably in the tens to hundreds of millions but not into the billions yet.&lt;br /&gt;
Google Products in the Area - Capital investments&lt;br /&gt;
Likelihood of Approval - No real regulatory reason to decline this one.&lt;br /&gt;
Potential Upside: Lock in early contributions on a growing market. Direct use and bigger impact of green technology. Great PR.&lt;br /&gt;
Potential Downside: Could be a distraction from the core business. No expertise hear.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://t1.gstatic.com/images?q=tbn:ANd9GcQ_1MbNMFaeOl-ory2IXAImsXe31OuMG-7u3qQvXNs8c57PsaisIw" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://t1.gstatic.com/images?q=tbn:ANd9GcQ_1MbNMFaeOl-ory2IXAImsXe31OuMG-7u3qQvXNs8c57PsaisIw" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
AMD: Hey, if you're going soup-to-nuts then you might as well look at fabrication too. AMD is Intel's biggest competitor. Google could look at wielding the power of a major chip manufacturer as an entry into the home and potentially use their knowledge to improve the servers running at the farms in their data centers.&lt;br /&gt;
Cost: $4B to $6.5B (numbers I clearly made up based on a market cap of $4B)&lt;br /&gt;
Google Products in the Area - Nothing&lt;br /&gt;
Likelihood of Approval - High. No real conflict of interest since this is a new arena.&lt;br /&gt;
Potential Upside: advanced chip design in servers. immediate entry into the chips that run home computers. Potential to use home chips as a way to promote the standards they're interested in.&lt;br /&gt;
Potential Downside: Big entry cost to this party. Probably way too much money for an area of only tangential value.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://t2.gstatic.com/images?q=tbn:ANd9GcRWoR2mTjerGpm8WX8Yv2iBudcEO4Kc4MGoik6v64qPbpuvfOpO" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://t2.gstatic.com/images?q=tbn:ANd9GcRWoR2mTjerGpm8WX8Yv2iBudcEO4Kc4MGoik6v64qPbpuvfOpO" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
About 2.4 million tons of gummy worms. You can get a &lt;a href="http://www.amazon.com/Gummy-Worms-Bulk-Wholesale-Prices/dp/B000O14DEY/ref=sr_1_9?ie=UTF8&amp;amp;qid=1313691287&amp;amp;sr=8-9"&gt;5 lb bag of gummy worms&lt;/a&gt; for $12.99. At that price you can afford about 2.3 Billion Kgs (5 billion pounds) of gummy worms. That'll keep a lot of those Google developers happy.&lt;br /&gt;
&lt;br /&gt;
If you were in charge of Google's $36B (well, $24 after Moto) what would you go after?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-1057325216098168928?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zKZ2zdU64NS41RhELICuVB1hkAY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zKZ2zdU64NS41RhELICuVB1hkAY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zKZ2zdU64NS41RhELICuVB1hkAY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zKZ2zdU64NS41RhELICuVB1hkAY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=oi7D62jUROU:5aj1dEpKwk0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=oi7D62jUROU:5aj1dEpKwk0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/oi7D62jUROU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/oi7D62jUROU/what-else-could-google-have-bought-for.html</link><author>noreply@blogger.com (Rich Hill)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-jViMVUhmxjk/Tk1ZgYfjMgI/AAAAAAAAAMw/6MhS6Xpo3-4/s72-c/temp+g+music.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/08/what-else-could-google-have-bought-for.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-164812883254214983</guid><pubDate>Wed, 17 Aug 2011 20:11:00 +0000</pubDate><atom:updated>2011-08-17T15:11:38.408-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Motorola</category><category domain="http://www.blogger.com/atom/ns#">google</category><title>Something Google's Never Had</title><description>I'm not a professional analyst, but I play one on the internet. I've been considering the Google / Motorola deal that was announced earlier this week and why Google would want to spend a third of their cash on a company that wasn't profitable with $3.3B in revenue last year.&lt;br /&gt;
&lt;br /&gt;
There are two obvious answers that everybody and their brother has been rehashing. First is the soup-to-nuts control of Android like Apple has with the iPhone. The ability to control the whole process of production, hardware design, distribution, OS, compliance, software, etc. has got to be compelling from the perspective of Google's new design push (see changes to gmail lately).&lt;br /&gt;
&lt;br /&gt;
The second, and more valuable, piece of the purchase is Motorola's 17,000+ patents. That's quite the boost to Google's patent arsenal which I believe was at only about 2,000 before this.&lt;br /&gt;
&lt;br /&gt;
I think there's another interesting piece to this deal though that I haven't been reading anywhere. Price control. Google's never really had control over the price of any piece of hardware that was designed with Google in mind. Sure they tried to sell the unlocked Nexus One directly, but that type of plan just doesn't work in the US. With control over Motorola Mobility they have the opportunity to really work with the carriers and price the best phones very competitively to the point where even Apple will have to take note. Manufactures of hardware have still had to price their products to make a profit with the Google software taking out some of the development costs.&lt;br /&gt;
&lt;br /&gt;
The iPhone has been the standard for smart phones for about 5 years now and they've essentially driven the market with the $200-$300 brand new price tag for a subsidized phone. Google could easily push out a high quality device along the lines of the Droid Bionic or Droid HD at $100 subsidized and get a huge bump in market share. Not that Android is really hurting for market share compared to anyone else, but marginalizing Apple only makes Google stronger.&lt;br /&gt;
&lt;br /&gt;
It would be difficult to believe that Google bought this cell phone manufacturer as a direct money-making opportunity. The patents do provide immediate defensive value. But the long term revenue comes from being able to promote the Google search business through mobile and set top boxes even more aggressively.&lt;br /&gt;
&lt;br /&gt;
Hardware can be a loss leader for Google at this point and that's something that the other big players just can't afford. At least they haven't been willing to yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-164812883254214983?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xZ_zFtwlT5fnSFUA-On_-jwh1GE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xZ_zFtwlT5fnSFUA-On_-jwh1GE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xZ_zFtwlT5fnSFUA-On_-jwh1GE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xZ_zFtwlT5fnSFUA-On_-jwh1GE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=Y0iw0lzfV0w:kBsyZXsyBOM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=Y0iw0lzfV0w:kBsyZXsyBOM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/Y0iw0lzfV0w" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/Y0iw0lzfV0w/something-googles-never-had.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>4</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/08/something-googles-never-had.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-1338760432364924411</guid><pubDate>Fri, 12 Aug 2011 15:07:00 +0000</pubDate><atom:updated>2011-08-12T12:45:04.762-05:00</atom:updated><title>Well Actually, ...</title><description>There's a personality quirk that seems to be more prevalent around computer geeks than most other groups.  It's the "Well actually" problem. Recently a friend put &lt;a href="http://tirania.org/blog/archive/2011/Feb-17.html"&gt;a link to an amusing article&lt;/a&gt; about it when they got "corrected" about some minutiae. The details to the correction aren't important, but if you think they are then please go back and read that article.&lt;br /&gt;
&lt;br /&gt;
I was thinking about why it's more prevalent in computer nerds than elsewhere and I've observed that it tends to be more common with somewhat experienced computer professionals.  I think that it comes from the pain involved in computer processes where a single correction early in the cycle pays off exponentially down the line. The cost of fixing a software bug during development is significantly cheaper than in User Acceptance Testing which is still significantly cheaper than fixing after it's gone to production.&lt;br /&gt;
&lt;br /&gt;
I may be guilty of trying to "well actually" the entire article by putting this up. But I thought I'd like to get it out there.  Regardless, I'm working on being better at it.&lt;br /&gt;
&lt;br /&gt;
P.S. computer nerds are second only to grammar nazis about the "well actuallies"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-1338760432364924411?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_bFF7Xq63AAbrEcH_T5ZvzQhsu4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_bFF7Xq63AAbrEcH_T5ZvzQhsu4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_bFF7Xq63AAbrEcH_T5ZvzQhsu4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_bFF7Xq63AAbrEcH_T5ZvzQhsu4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=ACB07JbI01g:6YusuWiWi2U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=ACB07JbI01g:6YusuWiWi2U:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/ACB07JbI01g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/ACB07JbI01g/well-actually.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/08/well-actually.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-7953478083841732614</guid><pubDate>Tue, 09 Aug 2011 15:06:00 +0000</pubDate><atom:updated>2011-08-09T10:06:25.011-05:00</atom:updated><title>Stupid Patent Wars</title><description>Microsoft, Google, Apple, Nokia, HTC, Motorolla, et al. have been developing, purchasing, hoarding, defending, and enforcing a wide variety of patents in the last several years.  Recently Microsoft and Apple joined up in a bid to buy a couple thousand patents from Nortel because of bankruptcy filings. There are more patent auctions coming up and the prices are getting insane.  The Nortel patents ended up going for north of $4B.  The next set will probably break through $5B easily.&lt;br /&gt;
&lt;br /&gt;
The major problem here is that the patents are being used to slow down innovation and investment rather than fuel it. Patents were supposed to be there so that inventors could make money for a while to recoup their original investment without fear of being directly copied. Now companies like Microsoft are essentially extorting companies into paying $15 per Android phone to avoid being sued for infringing on a set of patents that they merely claim ownership of. It's not like MS came in and made the cell phone industry or revolutionized smart phones (though they did play a small role). Microsoft is really using this as a way to support their dwindling income long after the patents should have paid for themselves.&lt;br /&gt;
&lt;br /&gt;
We need real patent reform in this country. The price tags are getting too high and it's damaging our ability to compete internationally.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-7953478083841732614?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_FmMuEaZ-mSJCsKNx2AYHxWWR9U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_FmMuEaZ-mSJCsKNx2AYHxWWR9U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_FmMuEaZ-mSJCsKNx2AYHxWWR9U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_FmMuEaZ-mSJCsKNx2AYHxWWR9U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=FJq3k4fSOQQ:Y1YaItEbuY8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=FJq3k4fSOQQ:Y1YaItEbuY8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/FJq3k4fSOQQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/FJq3k4fSOQQ/stupid-patent-wars.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/08/stupid-patent-wars.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-6677287868320368615</guid><pubDate>Sat, 30 Jul 2011 15:43:00 +0000</pubDate><atom:updated>2011-07-30T10:43:31.703-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Google Plus</category><title>The Solution for G+ Real Name (Pseudonymity) Problem</title><description>Google's been catching a lot of flack this week (rightfully so) about cancelling accounts that don't appear to have "real" names.  I understand Google's reason to want real names.  It helps prevent spam, identities can be verified, it cuts down on fraud and dishonesty.  There are lots of good intentions behind Google's stance.&lt;br /&gt;
&lt;br /&gt;
On the flip side there are also some very legitimate reasons to not use your real name when putting information out on a social network.  There's no way that the Arab Spring would have been as effective if everyone could have been easily traced.  There are whistle blowers and people leaking information that have to be able to do this without fear or reprisal.&lt;br /&gt;
&lt;br /&gt;
But fortunately, there's a solution to appease both sides.  Turn Google+ into a two-tiered social network from an account perspective.  "Verified" accounts using real names and other identifiable information can have access to additional features and ways to connect to people.  "Unverified" accounts could be more limited in the way that they directly interact with people (to cut down on spam) but should still be able to publish publicly (to allow sharing of "important" information).&lt;br /&gt;
&lt;br /&gt;
It may be more than just a simple flag on Google's part, but listing an account as not verified is certainly going to have a lot less impact than straight up deleting accounts.&lt;br /&gt;
&lt;br /&gt;
Is there another solution that's better?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-6677287868320368615?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EMDqRfRsJyu2WDM1jEcayecibwg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EMDqRfRsJyu2WDM1jEcayecibwg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EMDqRfRsJyu2WDM1jEcayecibwg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EMDqRfRsJyu2WDM1jEcayecibwg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=0xGtFczvUWE:GgHxMOtwERQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=0xGtFczvUWE:GgHxMOtwERQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/0xGtFczvUWE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/0xGtFczvUWE/solution-for-g-real-name-pseudonymity.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/solution-for-g-real-name-pseudonymity.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-2619758690893366673</guid><pubDate>Tue, 26 Jul 2011 20:25:00 +0000</pubDate><atom:updated>2011-07-26T15:25:58.216-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Google Plus</category><title>Adding a +1 button</title><description>So, now that Google+ is out there it may be worth knowing how to embed the +1 button wherever you want it.  Well, it's pretty darn easy.  Just add the reference to load the +1 button from Google's javascript library and then reference the object&lt;br /&gt;
&lt;br /&gt;
Just like this&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt; &amp;lt;script type="text/javascript" src="https://apis.google.com/js/plusone.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;g:plusone&amp;gt;&amp;lt;/g:plusone&amp;gt;&lt;/span&gt;&lt;br /&gt;
which makes &lt;script type="text/javascript" src="https://apis.google.com/js/plusone.js"&gt;&lt;/script&gt;&lt;g:plusone&gt;&lt;/g:plusone&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some tag parameters that you can change.  Like whether or not you want the cumulative count to show as updated after someone clicks by using the "count" attribute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt; &amp;lt;script type="text/javascript" src="https://apis.google.com/js/plusone.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;g:plusone count='false'&amp;gt;&amp;lt;/g:plusone&amp;gt;&lt;/span&gt;&lt;br /&gt;
which makes &lt;g:plusone count='false'&gt;&lt;/g:plusone&gt;&lt;br /&gt;
&lt;br /&gt;
You can also change the size of the +1 button to small, medium, standard, or tall&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt; &amp;lt;script type="text/javascript" src="https://apis.google.com/js/plusone.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;g:plusone size='small|medium|standard|tall'&amp;gt;&amp;lt;/g:plusone&amp;gt;&lt;/span&gt;&lt;br /&gt;
which makes &lt;g:plusone size='small'&gt;&lt;/g:plusone&gt; &lt;g:plusone size='medium'&gt;&lt;/g:plusone&gt; &lt;g:plusone size='standard'&gt;&lt;/g:plusone&gt; &lt;g:plusone size='tall'&gt;&lt;/g:plusone&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can also change the page that's being +1'd by using the href attribute&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: #eeeeee; font-family: 'Courier New', Courier, monospace;"&gt; &amp;lt;script type="text/javascript" src="https://apis.google.com/js/plusone.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;g:plusone href='http://www.google.com'&amp;gt;&amp;lt;/g:plusone&amp;gt;&lt;/span&gt;&lt;br /&gt;
which makes &lt;g:plusone href='http://www.google.com'&gt;&lt;/g:plusone&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-2619758690893366673?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mQgEv9LNBgfeV3GPhNdPa9Zr7MM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mQgEv9LNBgfeV3GPhNdPa9Zr7MM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mQgEv9LNBgfeV3GPhNdPa9Zr7MM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mQgEv9LNBgfeV3GPhNdPa9Zr7MM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=IRHk8zWVwlg:YZ8MI0W-dWw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=IRHk8zWVwlg:YZ8MI0W-dWw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/IRHk8zWVwlg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/IRHk8zWVwlg/adding-1-button.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/adding-1-button.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-5597995469105703099</guid><pubDate>Wed, 20 Jul 2011 13:14:00 +0000</pubDate><atom:updated>2011-07-20T08:14:40.955-05:00</atom:updated><title>User Feedback in Web UIs</title><description>I've been really impressed with the user feedback from Google+.  If you click that button at the bottom right of the screen it allows you to highlight the portion of the page you're interested in commenting on and provide notes about the problem.&lt;br /&gt;
&lt;br /&gt;
I also recently found out about Atlassian's &lt;a href='http://www.atlassian.com/en/software/bonfire"&gt;Bonfire&lt;/a&gt;.  Another really good tool that allows you to easily create JIRA tickets that include comments on the page that are easily created from in the browser.  It also allows you to easily create annotated screen shots.  Pretty nice.  &lt;br /&gt;
&lt;br /&gt;
I'm looking forward to trying something like this out on my next web project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-5597995469105703099?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4XoAjtxQpWKjJ3V_w21Uqk5Q9as/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4XoAjtxQpWKjJ3V_w21Uqk5Q9as/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4XoAjtxQpWKjJ3V_w21Uqk5Q9as/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4XoAjtxQpWKjJ3V_w21Uqk5Q9as/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=XKEGhgN6G-0:28nrrLKc9JM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=XKEGhgN6G-0:28nrrLKc9JM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/XKEGhgN6G-0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/XKEGhgN6G-0/user-feedback-in-web-uis.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/user-feedback-in-web-uis.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-802089032971785591</guid><pubDate>Wed, 20 Jul 2011 12:29:00 +0000</pubDate><atom:updated>2011-07-20T07:29:55.196-05:00</atom:updated><title>Where are the Google+ events?</title><description>Google+ has been pretty decent for managing groups of people and the stream it's putting out, but there's at least one feature that's glaringly missing. Events. Where's the integration with Google Calendar at?  GCal is a pretty darn good calendar system and calendar events are how social interactions are planned in advance.  There's got to be some real estate that can be used to add a scrollable calendar.  Dates with events should be highlighted and when you hover over a date it should generate a pop up/out with the event information.  It also needs to be easy to add/invite your Google+ users and/or circles to calendar events.&lt;br /&gt;
&lt;br /&gt;
Is there anything else you've noticed that's really missing?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-802089032971785591?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FQHjmE-gDW8BiMGzPHdCTzA1lr8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FQHjmE-gDW8BiMGzPHdCTzA1lr8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FQHjmE-gDW8BiMGzPHdCTzA1lr8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FQHjmE-gDW8BiMGzPHdCTzA1lr8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=t-COzuIMFLk:JDPsbaF2Te8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=t-COzuIMFLk:JDPsbaF2Te8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/t-COzuIMFLk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/t-COzuIMFLk/where-are-google-events.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/where-are-google-events.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-6163680071583837934</guid><pubDate>Tue, 19 Jul 2011 13:05:00 +0000</pubDate><atom:updated>2011-07-19T08:05:55.955-05:00</atom:updated><title>More on Google+</title><description>So after thinking about the G+ comments I made yesterday I realized what it's missing.  Right now I think it just might not be narcissistic enough.  The sharing is easy, but the underlying trend of successful social products is that they are a bit self absorbed.  People feel better when they share and are interacted with.  The +1 button is a nice add for that, but I think the main real estate for the feed window needs more about the user that's actually logged in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-6163680071583837934?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vRFIdiue6r5pLTwQBq4YYTFr1oQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vRFIdiue6r5pLTwQBq4YYTFr1oQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vRFIdiue6r5pLTwQBq4YYTFr1oQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vRFIdiue6r5pLTwQBq4YYTFr1oQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=ydrd08eL7yg:VqJYliuZQpw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=ydrd08eL7yg:VqJYliuZQpw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/ydrd08eL7yg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/ydrd08eL7yg/more-on-google.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/more-on-google.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-6830671597620212144</guid><pubDate>Mon, 18 Jul 2011 21:00:00 +0000</pubDate><atom:updated>2011-07-18T16:00:14.871-05:00</atom:updated><title>Proof that G+ will succeed where Buzz and Wave Failed</title><description>There's been a lot of questions around the Google+ beta that's been going on for a couple of weeks now.  The most noticeable thing though is what's missing.  I'm not seeing the hundreds of tweets and blog articles saying what a flop the product is.  Wave just confused people by trying to be a social product that claimed to change email.  I think that it was likely branded poorly and that the connections were too loose.  Buzz just irked everyone with it's in-your-face gmail integration.  Frankly G+ is a bit too chatty by default and Google should reduce the number of emails going out (the notifications are already at the top when you hit google.com for Pete's sake).&lt;br /&gt;
&lt;br /&gt;
But the evidence of success here seems to be the lack of talk of it's failure.  It's not getting overhyped anymore and the usage pattern seems to be growing.  If you have comments please feel free to share.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-6830671597620212144?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3J-xC7ljkAkYCnOv1e-uO1o6VlI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3J-xC7ljkAkYCnOv1e-uO1o6VlI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3J-xC7ljkAkYCnOv1e-uO1o6VlI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3J-xC7ljkAkYCnOv1e-uO1o6VlI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=xRwwFObeo8U:tF-2tSdKSyY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=xRwwFObeo8U:tF-2tSdKSyY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/xRwwFObeo8U" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/xRwwFObeo8U/proof-that-g-will-succeed-where-buzz.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/proof-that-g-will-succeed-where-buzz.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-9177946587381675671</guid><pubDate>Thu, 07 Jul 2011 14:48:00 +0000</pubDate><atom:updated>2011-07-07T09:48:57.630-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>Amazon's Cloud Drive Revised</title><description>This update is on the current pricing for&lt;a href="http://www.amazon.com/clouddrive" &gt;Amazon's Cloud Drive&lt;/a&gt; There's really no big change in the accessibility or pricing except that if you go with a paid account (at least $20/year for 20Gb) music doesn't count toward your storage limit.  That's for all MP3 and ACC music files you upload regardless of whether or not you purchase them through Amazon.  The 5Gb free plan includes the same unlimited music storage, but only for songs that you purchase through Amazon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Amazon Cloud Drive&lt;/h3&gt;&lt;table border="1"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;Storage Space&lt;/th&gt;&lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5Gb&lt;/td&gt;&lt;td&gt;free&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20Gb&lt;/td&gt;&lt;td&gt;$20 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;50Gb&lt;/td&gt;&lt;td&gt;$50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;100Gb&lt;/td&gt;&lt;td&gt;$100 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;200Gb&lt;/td&gt;&lt;td&gt;$200 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;500Gb&lt;/td&gt;&lt;td&gt;$500 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1Tb&lt;/td&gt;&lt;td&gt;$1,000 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Other Notes:&lt;br /&gt;
Accessible by web site&lt;br /&gt;
Use with Amazon Cloud Player to stream music from your cloud drive&lt;br /&gt;
Purchasing an Album from Amazon to save to your cloud drive upgrades you from the 5Gb to the 20Gb plan for a year. You can get an album for as little as $0.89&lt;br /&gt;
Essentially you can get 5Gb for free or if you need more then everything is about $1 / Gb / Year&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-9177946587381675671?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ujE_WiVgtEljaxXDCqcb9F4B7mU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ujE_WiVgtEljaxXDCqcb9F4B7mU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ujE_WiVgtEljaxXDCqcb9F4B7mU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ujE_WiVgtEljaxXDCqcb9F4B7mU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=6YPg6t8AKcQ:Y4vn2wy1gFY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=6YPg6t8AKcQ:Y4vn2wy1gFY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/6YPg6t8AKcQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/6YPg6t8AKcQ/amazons-cloud-drive-revised.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/07/amazons-cloud-drive-revised.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-8024316951932703455</guid><pubDate>Wed, 22 Jun 2011 15:03:00 +0000</pubDate><atom:updated>2011-06-22T10:03:19.333-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">JRockit</category><category domain="http://www.blogger.com/atom/ns#">JConsole</category><title>Remote JConsole Connection to WebLogic 11G</title><description>We were having some trouble getting JConsole to connect remotely to our WebLogic 11G instance until I came across &lt;a href="http://technology.amis.nl/blog/10906/oracle-jrockit-missioncontrol-part-1"&gt;this&lt;/a&gt; article to complete the process.  The hightlights are the following&lt;br /&gt;
&lt;br /&gt;
In your start up script make sure the following flags are used&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;-Djava.rmi.server.hostname=&lt;i&gt;&lt;yourservername&gt;&lt;/yourservername&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder&lt;/li&gt;
&lt;li&gt;-Xmanagement:ssl=false,authenticate=false,autodiscovery=true,port=&lt;i&gt;&lt;the (not="" app="" as="" connect="" console)="" management="" or="" port="" same="" the="" to="" want="" with="" you="" your=""&gt;&lt;/the&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
In the WebLogic Admin console make sure the following are done&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Platform MBean Server should be enabled&lt;/li&gt;
&lt;li&gt;Platform MBean Server Used should be checked&lt;/li&gt;
&lt;li&gt;Diagnostic Volume should be set to High&lt;/li&gt;
&lt;/ul&gt;Once the server is running with these options you should be able to connect JConsole or JRockit Mission Control using the server name and port you specified in your start up script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-8024316951932703455?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rx6X7HwSj7W7zBM6mAZU4Z-jO2Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rx6X7HwSj7W7zBM6mAZU4Z-jO2Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rx6X7HwSj7W7zBM6mAZU4Z-jO2Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rx6X7HwSj7W7zBM6mAZU4Z-jO2Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=I7HaUStyFk0:tav_i8-u8dY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=I7HaUStyFk0:tav_i8-u8dY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/I7HaUStyFk0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/I7HaUStyFk0/remote-jconsole-connection-to-weblogic.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/06/remote-jconsole-connection-to-weblogic.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-3411561059525710384</guid><pubDate>Tue, 21 Jun 2011 14:32:00 +0000</pubDate><atom:updated>2011-06-21T09:32:17.870-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>iCloud</title><description>This update is on &lt;a href='http://www.apple.com/icloud/'&gt;iCloud&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
iCloud is Apple's new offering in cloud based storage and has some interesting features.  It's going to be the best option for syncing and storage for Macs out of all the options I've reviewed so far for ease of use.  Apple is introducing this service with 5 Gb of free space with the ability to add more. Music and movies purchased through iTunes will not count toward the 5Gb total. The cost for additional storage space has not yet been announced. There is a $25 per year charge to use the iTunes match feature.&lt;br /&gt;
&lt;br /&gt;
Probably the most interesting portion of the update comes from Apple's acquisition of the online music company Lala last year.  Google seemed poised to win the bidding war for Lala but apple came out ahead and is now using that acquisition for a terrific reason.  The technology in iCloud allows your music to be scanned on your local machine and then referenced in iCloud.  This removes one of the most painful portions of the online storage process, the initial upload. By just passing references to music or movies the upload time is orders of magnitude shorter than it will be for any other service. For other data such as documents, photos, etc. which are unique this won't work, but for media like music, books, and movies this is a big win.&lt;br /&gt;
&lt;br /&gt;
iCloud also comes with the ability to stream media from it directly to your mobile device or browser. We'll have to see how good the implementation is outside of the iOS realm but I'm hopeful that it'll be pretty seamless.&lt;br /&gt;
&lt;br /&gt;
iCloud likely means the end of the MobileMe services from Apple and that's okay.  The service never really took off and the features can really be improved now.&lt;br /&gt;
&lt;br /&gt;
Another interesting feature here that isn't really being mentioned is that if iCloud is able to match your music with that in their database it will be upgraded to a higher bit rate quality.  This will be welcome news to some audiophiles but probably won't be noticed by the normal user.  Matched content will be upgraded to a 256kbps stream.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Mimedia&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;5Gb&lt;/td&gt; &lt;td&gt;free&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Additional&lt;/td&gt; &lt;td&gt;$? / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
More with the release of iCloud along with iOS5&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-3411561059525710384?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0J5sfsoN1Ln8oKV6_xCvON24Vk0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0J5sfsoN1Ln8oKV6_xCvON24Vk0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0J5sfsoN1Ln8oKV6_xCvON24Vk0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0J5sfsoN1Ln8oKV6_xCvON24Vk0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=Wfd9PMPimWA:5a90foDy3ag:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=Wfd9PMPimWA:5a90foDy3ag:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/Wfd9PMPimWA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/Wfd9PMPimWA/icloud.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/06/icloud.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-6015510003768193542</guid><pubDate>Wed, 25 May 2011 20:30:00 +0000</pubDate><atom:updated>2011-05-25T15:30:44.418-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>Mimedia</title><description>This update is on &lt;a href='http://www.mimedia.com/'&gt;Mimedia&lt;/a&gt;. Mimedia is a new cloud storage company offering a lot in the way of free space.  It starts off with the most generous free plan I've seen so far at 7Gb of free storage. They have expanded tiers at 250Gb, 500Gb, and 1Tb if needed. An interesting start to the plan is the optional "Shuttle Drive".  It's a portable USB based drive they will send you to perform your initial upload.  You copy the files you want backed up to it and mail it back to Mimedia to have them directly upload it to their servers. This gets passed the initial annoyance of multiday entries into cloud storage and burning through your bandwidth if your ISP caps you out. Like a bunch of the other offerings there's an online media player and file editor available. WebDAV support and online access are present.  There's also an iOS app for access from an iPhone or iPad. The desktop application for backups only works on Windows XP and higher.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Mimedia&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;7Gb&lt;/td&gt; &lt;td&gt;free&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;250Gb&lt;/td&gt; &lt;td&gt;$99 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;500Gb&lt;/td&gt; &lt;td&gt;$199 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;1Tb&lt;/td&gt; &lt;td&gt;$325 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
Mixed use solution for both backup and storage&lt;br /&gt;
iPhone and iPad app also available&lt;br /&gt;
Online document editing&lt;br /&gt;
Shuttle drive as an offline option to start the process&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-6015510003768193542?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0eo5J5P9OKNfVigq5M4rngBC44w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0eo5J5P9OKNfVigq5M4rngBC44w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0eo5J5P9OKNfVigq5M4rngBC44w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0eo5J5P9OKNfVigq5M4rngBC44w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=5KhL17qsQO4:ORl3mjg_yBg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=5KhL17qsQO4:ORl3mjg_yBg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/5KhL17qsQO4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/5KhL17qsQO4/mimedia.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/05/mimedia.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-4077684465939327266</guid><pubDate>Tue, 10 May 2011 14:35:00 +0000</pubDate><atom:updated>2011-05-10T09:35:28.281-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>Livedrive</title><description>This update is on &lt;a href='http://www.livedrive.com/'&gt;Livedrive&lt;/a&gt;. Livedrive offers a two part option.  The first level is for backup only plans and is fairly cheap.  The backup + briefcase option adds an online storage component that starts with 2TB of space.  Additional space is available for $7.95 per month which is $95.40 per year.  This looks like it could be a nice option for those looking for a single provider for both backup and cloud storage needs.  They also run a special deal that gets you 2 months free if you sign up for a year and a 10% discount each year after the first.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Livedrive&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;2,048&lt;/td&gt; &lt;td&gt;$153.48 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
Mixed use solution for both backup and storage&lt;br /&gt;
Additional space available for for $7.95 per month for each additional TB&lt;br /&gt;
iPhone and iPad app also available&lt;br /&gt;
Online document editing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-4077684465939327266?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cIh7W58HuoAsduCQ8QJd0ivtmcA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cIh7W58HuoAsduCQ8QJd0ivtmcA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cIh7W58HuoAsduCQ8QJd0ivtmcA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cIh7W58HuoAsduCQ8QJd0ivtmcA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=eIWvwEsikS0:LvB9-_LaRWU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=eIWvwEsikS0:LvB9-_LaRWU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/eIWvwEsikS0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/eIWvwEsikS0/livedrive.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/05/livedrive.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-7485042593078834182</guid><pubDate>Wed, 04 May 2011 20:03:00 +0000</pubDate><atom:updated>2011-05-04T15:03:51.610-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>Norton Online Backup</title><description>This update is on &lt;a href='http://us.norton.com/online-backup/'&gt;Norton Online Backup&lt;/a&gt;. Norton is usually thought of as a antivirus company but they also have an online backup application that you can use too.  The structure is not for online storage, its backup only kind of like &lt;a href="http://www.carbonite.com"&gt;Carbonite&lt;/a&gt;.  It looks like Norton hasn't been actively updating this product since releasing it in late 2009.  You're limited to just 50Gb of storage for about $50.  For an extra ten bucks you could go with Carbonite and get unlimited backup storage space.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Norton Online Backup&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;50Gb&lt;/td&gt; &lt;td&gt;$49.99 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
Backup online, not a cloud storage solution&lt;br /&gt;
Limited to 50Gb&lt;br /&gt;
Product appears to be withering on the vine due to lack of support&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-7485042593078834182?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TNonAm0bm-m3qsfdmqSZT87YrCs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TNonAm0bm-m3qsfdmqSZT87YrCs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TNonAm0bm-m3qsfdmqSZT87YrCs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TNonAm0bm-m3qsfdmqSZT87YrCs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=RFVPqJ2xhUg:C1-dAWq-vRA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=RFVPqJ2xhUg:C1-dAWq-vRA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/RFVPqJ2xhUg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/RFVPqJ2xhUg/norton-online-backup.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><georss:featurename>Cincinnati, OH, USA</georss:featurename><georss:point>39.1031182 -84.51201960000003</georss:point><georss:box>39.0186992 -84.68366610000002 39.187537199999994 -84.34037310000004</georss:box><feedburner:origLink>http://grabity.blogspot.com/2011/05/norton-online-backup.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-8454923471088669456</guid><pubDate>Tue, 03 May 2011 17:30:00 +0000</pubDate><atom:updated>2011-05-03T12:30:10.823-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>box.net</title><description>This update is on &lt;a href='http://www.box.net/home'&gt;box.net&lt;/a&gt;. Box.net is another choice for online storage that's been around for a few years now.  They got personal and business plans which could work for you.  The enterprise plans are really beyond the consumer market level of need.  It's not clear from their site if the pricing on the personal plans is monthly, annual, or one time but I'll go with annual as an assumption for right now.  The business plan (500Gb) does require at least 3 users and doesn't allow for expansion beyond the original 500Gb.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;box.net&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;5Gb&lt;/td&gt; &lt;td&gt;free&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;25Gb&lt;/td&gt; &lt;td&gt;$9.99 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;50Gb&lt;/td&gt; &lt;td&gt;$19.99 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;500Gb&lt;/td&gt; &lt;td&gt;$540.00 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
Accessible via web&lt;br /&gt;
5Gb free account has restrictive upload size&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-8454923471088669456?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OQHPcztF-Q7QHQERf_mHFq9KHbU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OQHPcztF-Q7QHQERf_mHFq9KHbU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OQHPcztF-Q7QHQERf_mHFq9KHbU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OQHPcztF-Q7QHQERf_mHFq9KHbU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=00AE5rWJaQo:mmrg1lPUaI0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=00AE5rWJaQo:mmrg1lPUaI0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/00AE5rWJaQo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/00AE5rWJaQo/boxnet.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/05/boxnet.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-1088567658550723664</guid><pubDate>Fri, 29 Apr 2011 18:50:00 +0000</pubDate><atom:updated>2011-04-29T13:50:41.661-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>Elephant Drive</title><description>This update is on &lt;a href='https://www.elephantdrive.com'&gt;Elephant Drive&lt;/a&gt;. It's got a pretty limited selection of plan sizes including only 4 tiers (Lite, Personal, Family, and Enterprise).  The Lite tier provides for a free level to dip your toes in the water though the space is limited and it's only a backup plan, not really a cloud storage plan.  All the other offerings provide for cloud storage, multiple devices, and better controls.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Elephant Drive&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;2Gb&lt;/td&gt; &lt;td&gt;free&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;100Gb&lt;/td&gt; &lt;td&gt;$99.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;500Gb&lt;/td&gt; &lt;td&gt;$199.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
Accessible via web&lt;br /&gt;
2Gb free account has restrictive upload size and is really backup only&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-1088567658550723664?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wuM8W74h47M0ZER43EXk-0Plm9I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wuM8W74h47M0ZER43EXk-0Plm9I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wuM8W74h47M0ZER43EXk-0Plm9I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wuM8W74h47M0ZER43EXk-0Plm9I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=f7vIFRUOKr4:lNcSh-h5l08:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=f7vIFRUOKr4:lNcSh-h5l08:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/f7vIFRUOKr4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/f7vIFRUOKr4/elephant-drive.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/04/elephant-drive.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-12381895.post-2985299606220965878</guid><pubDate>Fri, 29 Apr 2011 15:48:00 +0000</pubDate><atom:updated>2011-04-29T13:50:55.815-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Online Storage</category><title>ADrive</title><description>This update is on &lt;a href='https://www.adrive.com'&gt;ADrive&lt;/a&gt;. It's got a pretty limited selection of plan sizes, but it does have one mighty big advantage over the rest of the field.  50Gb of free storage space!  That's far and away larger than any of the other free options.  The other 50+Gb plans offer some added features like a desktop client and WebDAV support.  The premium plans go all the way up to 10Tb of storage&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;ADrive&lt;/h3&gt;&lt;table border='1'&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;Storage Space&lt;/th&gt; &lt;th&gt;Price&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;50Gb&lt;/td&gt; &lt;td&gt;free&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;50Gb&lt;/td&gt; &lt;td&gt;$69.50&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;100Gb&lt;/td&gt; &lt;td&gt;$139.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;250Gb&lt;/td&gt; &lt;td&gt;$339.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;500Gb&lt;/td&gt; &lt;td&gt;$669.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;750Gb&lt;/td&gt; &lt;td&gt;$999.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;1Tb&lt;/td&gt; &lt;td&gt;$1,319.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;2Tb&lt;/td&gt; &lt;td&gt;$2,615.00 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;3Tb&lt;/td&gt; &lt;td&gt;$3,886.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;4Tb&lt;/td&gt; &lt;td&gt;$5,134.00 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;5Tb&lt;/td&gt; &lt;td&gt;$6,357.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;6Tb&lt;/td&gt; &lt;td&gt;$7,557.00 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;7Tb&lt;/td&gt; &lt;td&gt;$8,732.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;8Tb&lt;/td&gt; &lt;td&gt;$9,884.00 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;9Tb&lt;/td&gt; &lt;td&gt;$11,011.50 / year&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;10Tb&lt;/td&gt; &lt;td&gt;$12,115.00 / year&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Other Notes:&lt;br /&gt;
Accessible via web&lt;br /&gt;
50Gb free account has some limitations on functionality&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12381895-2985299606220965878?l=grabity.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LD9yYuR22LOIHXoLAMgYYz6qMKI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LD9yYuR22LOIHXoLAMgYYz6qMKI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LD9yYuR22LOIHXoLAMgYYz6qMKI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LD9yYuR22LOIHXoLAMgYYz6qMKI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=U4eHXa7xi28:Ja-RWhrhmns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/HkXv?a=U4eHXa7xi28:Ja-RWhrhmns:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/HkXv?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HkXv/~4/U4eHXa7xi28" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/HkXv/~3/U4eHXa7xi28/adrive.html</link><author>noreply@blogger.com (Rich Hill)</author><thr:total>0</thr:total><feedburner:origLink>http://grabity.blogspot.com/2011/04/adrive.html</feedburner:origLink></item></channel></rss>

