<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://decav.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Andre de Cavaignac</title><subtitle type="html">Let&amp;#39;s blog it out...</subtitle><id>http://decav.com/blogs/andre/atom.aspx</id><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/default.aspx" /><link rel="self" type="application/atom+xml" href="http://decav.com/blogs/andre/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20423.869">Community Server</generator><updated>2008-05-01T20:50:00Z</updated><entry><title>C# @ The MongoDB Conference!</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2010/04/26/c-the-mongodb-conference.aspx" /><id>http://decav.com/blogs/andre/archive/2010/04/26/c-the-mongodb-conference.aspx</id><published>2010-04-26T17:22:00Z</published><updated>2010-04-26T17:22:00Z</updated><content type="html">&lt;p&gt;&lt;img src="http://decav.com/photos/misc/images/50168/original.aspx" title="Mongo DB" alt="Mongo DB" height="237" width="235" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I will be speaking at the MongoDB conference in New York City on May 21st. I will cover their .NET/C# Development segment. We have a great demo lined up, and I look forward to seeing you all there.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MongoDB is an excellent open-source database which specializes in document-oriented (object-oriented) storage. You can save complex objects and query them back at lightening fast speeds. I heavily recommend checking it out -- and using it in all your future projects :)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.mongodb.org/"&gt;If you&amp;#39;re interested in knowing more about MongoDB, follow the link.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.10gen.com/event_mongony_10may21"&gt;If you wish to attend the conference, you can sign up here. &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=50169" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Web 2.0" scheme="http://decav.com/blogs/andre/archive/tags/Web+2.0/default.aspx" /><category term=".NET/C# Development" scheme="http://decav.com/blogs/andre/archive/tags/.NET_2F00_C_2300_+Development/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="Cluster Computing" scheme="http://decav.com/blogs/andre/archive/tags/Cluster+Computing/default.aspx" /><category term="MongoDB" scheme="http://decav.com/blogs/andre/archive/tags/MongoDB/default.aspx" /></entry><entry><title>On Social Democracy, GDP/Capita and Disposable Income</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2010/01/11/on-social-democracy-gdp-capita-and-disposable-income.aspx" /><id>http://decav.com/blogs/andre/archive/2010/01/11/on-social-democracy-gdp-capita-and-disposable-income.aspx</id><published>2010-01-11T12:51:00Z</published><updated>2010-01-11T12:51:00Z</updated><content type="html">&lt;p align="left"&gt;I&amp;#39;m sitting here on a short trip to Munich, and just read&amp;nbsp;Greg Mankiw&amp;#39;s latest post regarding today&amp;#39;s &lt;a href="http://www.nytimes.com/2010/01/11/opinion/11krugman.html"&gt;New York Times article by Paul Krugman regarding European Social Democracy&lt;/a&gt; and the pending US healthcare reform. Paul Krugman essentially argues that economic advance can come hand-in-hand with social democracy. From what I can tell, &lt;a href="http://gregmankiw.blogspot.com/2010/01/learning-from-europe.html"&gt;Mankiw is politely dissenting&lt;/a&gt;.&lt;/p&gt;
&lt;p align="left"&gt;While it is indeed interesting [and perhaps somewhat telling] that the GDP/capita is so much higher in the US than elsewhere, it is difficult to associate this to actual quality of life. While Germans may make less than us annually, they make about equal to us per hour (see my napkin math below).&lt;/p&gt;
&lt;p align="left"&gt;I suppose the question really becomes whether Europeans work less because the incentive structure is setup such that more work isn&amp;#39;t worth it past a certain level (much like any gradated tax rate does), or if they actually value their time not working higher than the extra salary.&lt;/p&gt;
&lt;p align="left"&gt;But it could also be because of this: GDP/Capita accounts for both employed and unemployed people in the country. While this is important overall, it is not as vital to an individual worker. What an individual worker cares most about is how much he is making in an hour for himself. &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="7"&gt;

&lt;tr&gt;
&lt;td&gt;　&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;GDP/Capita (PPP)&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;Avg. Hours Worked (Annual)&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;Average GDP/Hour (Productivity)&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;Disposable Salary&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;PPP Ratio&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;Disposable Salary (PPP)&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="center"&gt;Avg Disposable Salary/Hour (Real productivity?)&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="left"&gt;US&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;47440&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1777&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;26.7&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;31410&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;31410&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;17.7&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="left"&gt;UK&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;36358&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1652&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;22.0&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;26312&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1.09&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;28680&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;17.4&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="left"&gt;Germany&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;35539&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1362&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;26.1&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;25146&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1.29&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;32438&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;23.8&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="left"&gt;France&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;34205&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1346&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;25.4&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;26416&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;1.35&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;35662&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;font size="1" face="HelveticaNeue"&gt;&lt;font size="1" face="HelveticaNeue"&gt;
&lt;p align="right"&gt;26.5&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p align="left"&gt;One notable and surprising ratio shown in this is the productivity of actual employed workers (the ones that&amp;nbsp;calculate using &amp;quot;disposable salary&amp;quot;).&amp;nbsp;These numbers should mitigate the influence of unemployed on the productivity numbers by taking disposable salary of employed workers and applying the PPP ratios, then finding productivity using that. When these figures are used, employed individuals in both Germany and France take home more per hour than their US and UK counterparts. Also, the disposable salary of Germans and French are marginally higher than their employed American counterparts after PPP is accounted for.&lt;/p&gt;&lt;/font&gt;&lt;font face="Helvetica"&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;font face="Helvetica"&gt;&lt;b&gt;
&lt;p align="left"&gt;Sources:&lt;/p&gt;&lt;/b&gt;
&lt;p align="left"&gt;&lt;strong&gt;GDP/Capita (PPP):&lt;/strong&gt; &lt;a href="http://gregmankiw.blogspot.com/2010/01/learning-from-europe.html"&gt;http://gregmankiw.blogspot.com/2010/01/learning-from-europe.html&lt;/a&gt;&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;Average Hours Worked:&lt;/strong&gt; OECD - &lt;a href="http://en.wikipedia.org/wiki/Working_time"&gt;http://en.wikipedia.org/wiki/Working_time&lt;/a&gt; &lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;Disposable Salary:&lt;/strong&gt;&amp;nbsp;&lt;a href="http://www.worldsalaries.org/"&gt;http://www.worldsalaries.org/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PPP:&lt;/strong&gt; OECD - &lt;a href="http://www.oecd.org/dataoecd/48/18/18598721.pdf"&gt;http://www.oecd.org/dataoecd/48/18/18598721.pdf&lt;/a&gt; &lt;/p&gt;&lt;/font&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=50079" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Politics" scheme="http://decav.com/blogs/andre/archive/tags/Politics/default.aspx" /><category term="Essays" scheme="http://decav.com/blogs/andre/archive/tags/Essays/default.aspx" /><category term="Economics" scheme="http://decav.com/blogs/andre/archive/tags/Economics/default.aspx" /></entry><entry><title>Howto: Hulu and Pandora from Europe (or Australia, China, or South America...) for 10 cents an hour, using EC2</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2009/08/28/howto-hulu-and-pandora-from-europe-or-australia-china-or-south-america-for-10-cents-an-hour-using-ec2.aspx" /><id>http://decav.com/blogs/andre/archive/2009/08/28/howto-hulu-and-pandora-from-europe-or-australia-china-or-south-america-for-10-cents-an-hour-using-ec2.aspx</id><published>2009-08-28T18:01:00Z</published><updated>2009-08-28T18:01:00Z</updated><content type="html">&lt;p&gt;As an honest consumer who purchases all his music, software, movies and anything else, it annoys me when a content provider goes out of there way to keep me from paying them for their content.&lt;/p&gt;&lt;p&gt;A perfect example is the HBO show Entourage.&amp;nbsp; A great show which you can find old episodes of on iTunes of -- want to pay them $5, $10 or even $100 for a new episode?&amp;nbsp; Good luck -- get HBO on cable or wait for the DVD -- stupid.&lt;/p&gt;&lt;p&gt;Traveling in Europe, I&amp;#39;ve found little to miss, other than Hulu and Pandora.&amp;nbsp; Life without Jon Stewart is just not worth living! Due to head-in-ass license restrictions, you can&amp;#39;t get either of these great websites overseas.&amp;nbsp; Public proxy servers, which route internet traffic through a middle man, tend to be too slow to solve the problem.&lt;/p&gt;&lt;p&gt;But using EC2 you can create your own, very inexpensive, proxy very easily if you&amp;#39;re running Apple OSX or Linux.&amp;nbsp; Here are the steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Sign up for an Amazon Web Services EC2 account&lt;/li&gt;&lt;li&gt;Install the &lt;a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=351"&gt;command line utilities for Amazon Web Services&lt;/a&gt; found here.&lt;/li&gt;&lt;li&gt;Create a new key for yourself (&lt;a href="http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/"&gt;follow these instructions&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open a terminal window&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Type &lt;b&gt;ec2-run-instances -k &lt;i&gt;[your_key_name]&lt;/i&gt; ami-7cfd1a15&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Type &lt;b&gt;ec2-describe-instances&lt;/b&gt; until the new instance is in the &amp;quot;running&amp;quot; state&lt;/li&gt;&lt;li&gt;Type &lt;b&gt;ssh -i &lt;i&gt;[path_to_your_key_file] &lt;/i&gt;-L 3128:localhost:3128 root@&lt;i&gt;[url_for_instance]&lt;/i&gt;&lt;/b&gt;&amp;nbsp; Note the &amp;quot;-L 3128:localhost:3128&amp;quot;.&amp;nbsp; This will route all network traffic from your machine, port 3128 to the instance&amp;#39;s 3128 port.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;This will open a connection to your virtual machine on EC2.&amp;nbsp; On the EC2 instance you&amp;#39;re now connected to, follow these steps:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Type &lt;b&gt;aptitude update&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Type &lt;b&gt;aptitude install squid&lt;/b&gt; (squid is an HTTP proxy, a server that will be a middle man for your browsing)&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Change your browser&amp;#39;s &lt;b&gt;HTTP proxy &lt;/b&gt;settings to use the proxy at address &lt;b&gt;localhost&lt;/b&gt;, port &lt;b&gt;3128&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Keep the SSH window open until you&amp;#39;re finished browsing.&lt;/li&gt;&lt;li&gt;When you&amp;#39;re done:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Type &lt;b&gt;exit&lt;/b&gt; to exit the connection to your virtual machine&lt;/li&gt;&lt;li&gt;type &lt;b&gt;ec2-terminate-instances&lt;/b&gt; &lt;i&gt;&lt;b&gt;[your_instance_id]&lt;/b&gt; &lt;/i&gt;to stop your machine, and the $0.10/hour charge.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;That&amp;#39;s it!&lt;br /&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=49764" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="OS X" scheme="http://decav.com/blogs/andre/archive/tags/OS+X/default.aspx" /></entry><entry><title>Market Failure? China, pollution and real GDP</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2009/05/07/market-failure-china-pollution-and-real-gdp.aspx" /><id>http://decav.com/blogs/andre/archive/2009/05/07/market-failure-china-pollution-and-real-gdp.aspx</id><published>2009-05-07T07:22:00Z</published><updated>2009-05-07T07:22:00Z</updated><content type="html">&lt;p&gt;While doing some reading on Chinese quality of life and pollution last week, I noticed some interesting figures released by the WorldBank.&amp;nbsp; The &lt;a href="http://web.worldbank.org/WBSITE/EXTERNAL/COUNTRIES/EASTASIAPACIFICEXT/EXTEAPREGTOPENVIRONMENT/0,,contentMDK:21252897%7EpagePK:34004173%7EpiPK:34003707%7EtheSitePK:502886,00.html" target="_blank"&gt;estimated cost to GDP of pollution&lt;/a&gt; emitted by China is a total of 5.8%. That&amp;#39;s rediculously high; every year, China is losing 5.8% of their GDP to damage to their environment.&lt;/p&gt;&lt;p&gt;Whats more startling is what this means for total GDP growth of the county.&amp;nbsp; In 2009, &lt;a href="http://www.economist.com/countries/CHINA/profile.cfm?folder=Profile-Forecast" target="_blank"&gt;China&amp;#39;s GDP is expected to grow by about 6.5%&lt;/a&gt; -- a numer low due to recession, but still considered high by global standards.&amp;nbsp; Because the cost of pollution is an externality, and to best of my knoledge is not included in the official GDP numbers, this growth does not include environmental pollution.&amp;nbsp; When you subtract the expected loss of GDP due to pollution from the total GDP of China, &lt;b&gt;you&amp;#39;re left with dismal 0.7% annual GDP growth&lt;/b&gt;.&amp;nbsp; Ouch! 89% of their growth is chopped from this single externality.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;China is essentially gutting their natural resources and destroying their habitat with enormous amounts of externalities in order to provide us with inexpensive goods.&lt;/p&gt;&lt;p&gt;In most cases, this scenario leads to &lt;a href="http://en.wikipedia.org/wiki/Market_failure" target="_blank"&gt;&lt;b&gt;market failure&lt;/b&gt;&lt;/a&gt;.&amp;nbsp; China may be thinking that they can live with temporary loss while they attempt to lift their industry into the modern age - a long term investment using the capital locked in their public land. Certainly the short-term affect of removing the fully-realized costs from their exports and domestic products has been a positive one.&amp;nbsp; But with steadily increasing pollution and dwindling resources, they cannot keep it up forever.&amp;nbsp; At some point, these externalities need to be corrected or the market (and mother nature) will correct it for them.&amp;nbsp; Hopefully she&amp;#39;ll keep the fallout off our shores.&amp;nbsp; Scary stuff!&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=46113" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Essays" scheme="http://decav.com/blogs/andre/archive/tags/Essays/default.aspx" /><category term="Economics" scheme="http://decav.com/blogs/andre/archive/tags/Economics/default.aspx" /></entry><entry><title>The desktop is dead (really, for real this time)</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2009/05/07/the-desktop-is-dead-really-for-real-this-time.aspx" /><id>http://decav.com/blogs/andre/archive/2009/05/07/the-desktop-is-dead-really-for-real-this-time.aspx</id><published>2009-05-07T06:48:00Z</published><updated>2009-05-07T06:48:00Z</updated><content type="html">&lt;p&gt;Time and time again noise builds around the (re)introduction of thin client computing, the death of the desktop OS and the emergence of a single, large networked computer that we all work on.&amp;nbsp; A super mainframe that is omnipresent across all devices and networks.&lt;/p&gt;&lt;p&gt;But it has not been since the days of the drab green screens of the main frames that we have seen a significant uptake in thin clients over heavy metal. This is now ripe for change.&lt;/p&gt;&lt;p&gt;The stars are aligning in the cloud computing movement, and this time, it won&amp;#39;t be another 3com web computing device. The traditional precursors to the explosion of the web device market have been torn down - bandwidth is ubiquitous, price of technology has come down so dramatically that these devices are now comparatively cheap against their full-blown competitors, and most computing services that people have come to expect have an online incarnation.&lt;/p&gt;&lt;p&gt;But the most important change is cultural.&amp;nbsp; People are demanding cheap alternatives to desktops.&amp;nbsp; The tell tale signs are there - the netbook craze, the rich web phone interfaces (iPhone, Android), and even the Kindle are all thin clients that are heavily in demand. People have begun to see the value add for a consumer of not having to maintain a desktop OS - they expect it to work like their TV - managed centrally, and pushed down. Zero maintainence time. With a wide range of people now spending most of their computing time in web browsers, and the need for desktop apps marginalized, the consumer demand has shifted towards less expensive, internet-oriented devices.&lt;/p&gt;&lt;p&gt;Even with the netbook fire sale, the market for these devices still hasn&amp;#39;t been properly defined. Current netbooks are essentially small laptops with desktop OSes. While these machines hit the price point consumers expect in thin-clients, some of the real value adds a thin client can provide to consumers have not been realized in netbooks. The OS running on these devices is unnecessarially large, boot times are slow, and features like cloud storage are still not out of the box.&amp;nbsp; Couple this with the poor form factors and tiny keyboards, and there is still a lot to be done in this market.&amp;nbsp; Consumers know they don&amp;#39;t need full blown desktop machines, but so far have only been exposed to &amp;quot;small laptops&amp;quot;.&lt;/p&gt;&lt;p&gt;Despite the demand for netbooks, consumers still don&amp;#39;t know what these web devices are - there is still an opportunity for proper market definition. There are very few companies who can really make the idea of web devices sit with consumers; excellent marketing coupled with good software and hardware is critical to open the market up.&amp;nbsp; With so many people having lost their shirts in the web device game over the past decade, chances are slim this company will emerge as a startup. Apple is clearly an industry favorite for defining new markets like this.&amp;nbsp; With the marketing engine to hit the concept home with consumers and the technical understanding to make it happen, and recent rumors of a &lt;a href="http://www.engadget.com/2009/03/10/apples-touch-screen-netbook-gets-another-shot-of-rumor-juice/"&gt;&amp;quot;big iPhone&amp;quot; or &amp;quot;Apple Tablet&amp;quot;&lt;/a&gt;, it&amp;#39;s beginning to look like the market definition will start there.&amp;nbsp; But there are other players who look like they will be emerging as players.&amp;nbsp; TechCrunch has the &amp;quot;&lt;a href="http://www.crunchgear.com/2009/04/09/crunchtablet-hits-the-net-a-little-early/"&gt;Crunch Tablet&lt;/a&gt;&amp;quot;, Kindle is looking more and more like a web device daily, and Nokia has expressed serious interest in expanding into net books.&lt;/p&gt;&lt;p&gt;While heavy metal desktops will never become fully eclipsed by web devices, the desktop OS market looks to be in terminal decline.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Update:&lt;/b&gt; ... Or maybe &lt;a href="http://www.techcrunch.com/2009/05/07/eric-schmidt-on-netbooks-forget-android-its-all-about-cloud-services/"&gt;Google will be the one to define the market.&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=46111" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Web 2.0" scheme="http://decav.com/blogs/andre/archive/tags/Web+2.0/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /></entry><entry><title>Tracking moved files: An interesting tidbit on file references in OS X</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2009/02/13/tracking-moved-files-an-interesting-tidbit-file-references-on-os-x.aspx" /><id>http://decav.com/blogs/andre/archive/2009/02/13/tracking-moved-files-an-interesting-tidbit-file-references-on-os-x.aspx</id><published>2009-02-13T06:14:00Z</published><updated>2009-02-13T06:14:00Z</updated><content type="html">&lt;p&gt;Today I had to help someone with a problem with iTunes on Windows.&amp;nbsp; For those of you that have not had the pleasure of using iTunes on Windows, it sucks, like most software written by Apple for Windows.&amp;nbsp; That being said, this problem really had nothing to do with iTunes.&amp;nbsp; The problem was that iTunes was &amp;#39;losing&amp;#39; music.&amp;nbsp; As it turns out, the music that the user saw as &amp;#39;lost&amp;#39; turned out to have been moved from its original location (the desktop) to the &amp;#39;Music&amp;#39; folder.&amp;nbsp; iTunes uses absolute paths in its media library to hold reference to the file.&amp;nbsp; When the file moves, the reference is broken, and thus, the music appears &amp;#39;lost&amp;#39;.&amp;nbsp; Without iTunes open all the time (and due to the occasionally unreliable file system watcher), it is simply not possible to track these files.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;But then I started wondering... Surely Apple wouldn&amp;#39;t let this happen on OSX.&amp;nbsp; Details like this tend to be a place where Apple shines.&amp;nbsp; So what in the world does iTunes do if I move something from the &amp;#39;Music&amp;#39; folder to my &amp;#39;Desktop&amp;#39; in OSX.&amp;nbsp; I decided to try.&amp;nbsp; First I closed iTunes, then I copied a music file, went back to iTunes, and hit play.&amp;nbsp; Low and behold, it played, no problem.&amp;nbsp; Not only did this leave me confused, but it also left me interested, so I decided to do a little exploring...&lt;/p&gt;&lt;p&gt;From what I can tell, Apple foresaw this problem with their &amp;#39;aliases&amp;#39; early on in their original Mac OS, so rather than referencing files by path, you can reference files by a unique ID (if they are on a partition that uses a supported file system).&lt;/p&gt;&lt;p&gt;I&amp;#39;m no expert on Cocoa, but from what I can tell, the details of this can be found in the &lt;a href="http://developer.apple.com/DOCUMENTATION/Carbon/reference/File_Manager/Reference/reference.html"&gt;File Manager APIs&lt;/a&gt; and &lt;b&gt;FSRef&lt;/b&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.drunkenblog.com/drunkenblog-archives/000682.html"&gt;And for some more interesting reading on the topic.&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;So next time you get the dreaded &amp;#39;cannot find the target to this shortcut, do you want to try to find the file?&amp;#39; prompt, just think about those 1980&amp;#39;s Apple employees and how they solved this problem...&lt;br /&gt;&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=43236" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="OS X" scheme="http://decav.com/blogs/andre/archive/tags/OS+X/default.aspx" /><category term="Cocoa" scheme="http://decav.com/blogs/andre/archive/tags/Cocoa/default.aspx" /></entry><entry><title>The Browser Love Affair, RIA and JavaScript as the 'new byte code'</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2009/02/12/the-browser-love-affair-and-javascript-as-the-new-byte-code.aspx" /><id>http://decav.com/blogs/andre/archive/2009/02/12/the-browser-love-affair-and-javascript-as-the-new-byte-code.aspx</id><published>2009-02-12T13:42:00Z</published><updated>2009-02-12T13:42:00Z</updated><content type="html">&lt;p&gt;&lt;b&gt;Jump to a section of this article:&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a&gt;Why do consumers love the browser?&amp;nbsp;&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a&gt;Who is winning the war in RIA (Flex, Silverlight, HTML+JavaScript)?&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a&gt;JavaScript as Byte Code - C#, Java, etc to JavaScript Compilers and Cross-Compilers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;a class="" title="whyBrowser" name="whyBrowser"&gt;&lt;/a&gt;Why do consumers love the browser?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;One of the things I still have not fully understood is the consumer&amp;#39;s affection for the browser.&amp;nbsp; Unlike desktop applications, consumers seem to feel more comfortable and safe in a browser.&lt;/p&gt;

&lt;p&gt;Perhaps it is the familiarity, always knowing where you are with a URL, the &amp;#39;safety&amp;#39; of not messing up your computer, the security of having data stored in a cloud where it doesn&amp;#39;t need backup, or the easy way to get away from where you are with the back button.&amp;nbsp; Add to this the familiarity of having an interactive &amp;#39;page&amp;#39; over a bunch of forms and dialog boxes and popup windows, and the element of design and simplicity on the web, web developers were quicker to embrace a &amp;quot;less is more&amp;quot; approach, and web pages are typically thought through and designed by professional designers more often than desktop applications.&lt;/p&gt;

&lt;p&gt;When you take all of these things into account, it makes a bit of sense why consumers have shown a preference for web based applications, and it is no surprise that most of the WPF applications we&amp;#39;ve seen emerge have followed the same basic browser concepts (back button, page like UI, navigation at top, hyperlinks, etc).&lt;/p&gt;

&lt;p&gt;For someone who tries to stay away from web development, my recent past has been riddled with all the latest buzz-words on the web - Silverlight, Flash, AIR and JavaScript are all tools that I&amp;#39;ve had to engage with.&amp;nbsp; I&amp;#39;ve built trading systems in Flash and my most recent application is RIA in HTML + JavaScript...&amp;nbsp; None of these platforms have had the allure of WPF for me, the developer, but its what clients have asked for, and clearly what consumers are interested in. &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;b&gt;&lt;a class="" title="whoWinning" name="whoWinning"&gt;&lt;/a&gt;Who is winning the war in RIA (Flex, Silverlight, HTML+JavaScript)?&lt;/b&gt;
&lt;p&gt;Why is it that we feel the need to place browser chrome around everything, and when we do, what platform has emerged as dominant for the new breed of complex applications (Google Maps, docs, etc) that we&amp;#39;ve come to expect in the browser?&lt;/p&gt;

&lt;p&gt;With out a doubt, HTML and JavaScript has been a hands-down winner.&amp;nbsp; Why is it so hard to name a single site that is a pure Flash or Silverlight application.&amp;nbsp; HTML + JS is certainly not easier to program, and Flash is now ubiquitous, so the concern of requiring a plugin is not there, is there something about interacting with the native browser, not a plugin, that has some appeal.&amp;nbsp; &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;I have become a firm believer that as a non-software company, it is your interest to leverage Microsoft-based development technologies as much as possible.&amp;nbsp; The ability to quickly get things done in .NET and its surrounding technologies is unparalleled.&amp;nbsp; When you &lt;b&gt;are&lt;/b&gt; a software company though, it is much harder to justify.&amp;nbsp; Tying yourself to Microsoft, one who likely is or will become a competitor in your space is risky.&amp;nbsp; Hiring good web people (if you&amp;#39;re a web startup) is harder because the .NET development culture tends to do things &amp;quot;the Microsoft way&amp;quot;. And your acquisition story becomes limited (Google, eBay, Facebook, etc is less likely to by a .NET based system because it doesn&amp;#39;t fit in their infrastructure).&amp;nbsp; For this reason, it may be clear why Silverlight is and will not become the dominant application platform on the web any time soon. Perhaps many web companies have the same fear of Adobe Flash.&amp;nbsp; By contrast, HTML and JavaScript is &amp;quot;open&amp;quot; and is not dominated by any particular entity.&lt;/p&gt;

&lt;p&gt;The decision of most web companies to stick with HTML, despite the rich features of other platforms, is simply a business decision.&amp;nbsp; HTML will always be there, is relatively reliable, relatively backwards compatible (Adobe is pretty good at breaking builds of older code with newer versions of Flex), and does not tie you to the whims of any one company or platform. &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a class="" title="byteCode" name="byteCode"&gt;&lt;/a&gt;JavaScript as Byte Code - C#, Java, etc to JavaScript Compilers and Cross-Compilers&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;HTML is great for document layout.&amp;nbsp; Its fast, clean and everyone knows it.&amp;nbsp; Sprinkle a bit of JavaScript on
that, and you have a nice interactive document.&amp;nbsp; But HTML was never
designed to be the basis for an application platform, and really is a pretty poor application platform.&amp;nbsp; But despite the features of other platforms, and the number of times HTML and JavaScript is pronounced dead, something breaths life back into it.&lt;/p&gt;

&lt;p&gt;It started with FireFox, and continued on with the awefully impressive Google Maps.&amp;nbsp; Google has a large interest in keeping the browser alive and relevant.&amp;nbsp; The longer it does so, the longer it has a platform on which to compete with Microsoft that is already deployed to 99% of the world&amp;#39;s user base.&amp;nbsp; A &amp;quot;Google Flash&amp;quot; may not be feasible, because of the deployment nightmare involved, but as HTML evolves with offline capabilities, richer CSS and faster JavaScript engines (see Google Chrome), it becomes a platform that can largely compete with the rest.&lt;/p&gt;

&lt;p&gt;And for this reason, Google has cleverly turned the browser into their own RIA platform. &amp;nbsp; The &amp;quot;Google Virtual Machine&amp;quot;, as you may call it.&amp;nbsp; To do this, they&amp;#39;ve leveraged the existing tools that Java has to offer, and created &lt;a href="http://decav.com/controlpanel/blogs/code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt; - a Java compiler that can compile Java into cross-browser JavaScript.&amp;nbsp; And on the client side, they&amp;#39;ve added Google Chrome.&amp;nbsp; You can easily consider Google Web Toolkit and Google Chrome to be a full RIA platform, with JavaScript as the byte code transport.&amp;nbsp; And not only that, but its an RIA platform fully backwards compatible with the existing deployed base of browsers. &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Perhaps the most interesting thing is that Google Web Toolkit is not the only JS or cross-compiler.&amp;nbsp; A variety for compilers have been built for this purpose.&amp;nbsp; Microsoft Research has &lt;a href="http://projects.nikhilk.net/ScriptSharp/"&gt;Script#&lt;/a&gt;, which compiles C# to JavaScript, and a bunch of projects use &lt;a href="http://jsc.sourceforge.net/"&gt;JSC&lt;/a&gt;, a cross compiler that compiles MSIL into JavaScript (and therefore any .NET language).&amp;nbsp; With a whole variety of tools out there by different vendors to compile to JavaScript, it appears that JavaScript has become the new universal byte code.&amp;nbsp; It can be processed by a whole variety of browsers, and produced by a variety of tools - one of the only computing platforms that that is true for.&lt;/p&gt;

&lt;p&gt;And compiled JavaScript can also be pretty fast and make applications that are rich and look good.&amp;nbsp; While it doesn&amp;#39;t compare to the offerings of Cocoa, WPF or Silverlight, the quality of application that can be achieved is good enough for most consumers.&amp;nbsp; In the case of GWT, it is not only fast, but also efficient - and best of all, code can be shared amongst client and server.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;I don&amp;#39;t like HTML as an application platform, and I am not very fond of running every application inside the browser chrome.&amp;nbsp; But as business strategy and deployability have become increasingly important to me in my recent venture, an RIA application based around the native browser has become my platform of choice.&amp;nbsp; Cross compilation, in my experience, has proven an effective way to make a very rich client that can even handle push-data.&lt;br /&gt;&lt;/p&gt;
&lt;img src="http://decav.com/aggbug.aspx?PostID=43211" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Web 2.0" scheme="http://decav.com/blogs/andre/archive/tags/Web+2.0/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="ActionScript" scheme="http://decav.com/blogs/andre/archive/tags/ActionScript/default.aspx" /><category term="Adobe AIR" scheme="http://decav.com/blogs/andre/archive/tags/Adobe+AIR/default.aspx" /><category term="Flex" scheme="http://decav.com/blogs/andre/archive/tags/Flex/default.aspx" /><category term="Silverlight" scheme="http://decav.com/blogs/andre/archive/tags/Silverlight/default.aspx" /><category term="HTML/JavaScript" scheme="http://decav.com/blogs/andre/archive/tags/HTML_2F00_JavaScript/default.aspx" /><category term="GWT" scheme="http://decav.com/blogs/andre/archive/tags/GWT/default.aspx" /></entry><entry><title>On Compensation in Finance</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2009/02/05/on-compensation-in-finance.aspx" /><id>http://decav.com/blogs/andre/archive/2009/02/05/on-compensation-in-finance.aspx</id><published>2009-02-05T17:55:00Z</published><updated>2009-02-05T17:55:00Z</updated><content type="html">&lt;p&gt;This post is part of a series of essays on things unrelated to software development. You can find all the essays here.&lt;br /&gt;&lt;br /&gt;The compensation structures on Wall Street have long been criticized as excessive, lavish and unnecessary.&amp;nbsp; Banks have consistently justified such salaries, noting the executives being compensated brought in big earnings for the bank.&amp;nbsp; When the bank balance sheets were positive, there was little incentive to attempt to correct the salaries, however with most banks now in dire straits, many have begun to take a more firm tone with banks.&lt;br /&gt;&lt;br /&gt;This concern was underlined this week by Obama’s new government enforced incentive cap of $500k per year for top executives in banks receiving federal aid. While Obama has found a significant problem in banks, their compensation structure, his cap is not only horribly low, but may also have a significantly negative effect on banks.&amp;nbsp; Without that ability to recruit top talent into executive positions, banks will have more trouble hiring than the offices of Mr. Madoff.&lt;br /&gt;&lt;br /&gt;Free markets tend to assume that people will do what they consider in their best interest.&amp;nbsp; Consider a classic example of a big, blue lake, full of fish with multiple fishermen.&amp;nbsp; If the lake is a public entity, it is in the interest of each fisherman to collect as many fish as possible, without regard for environmental impacts or long-term sustainability.&amp;nbsp; If they do not, the other fishermen will fish the entire bounty from the lake, draining it of their resource, and they’ll be left with nothing.&amp;nbsp; If each fisherman owns their own portion of the lake, however, they will want to sustain their portion of the lake for future years, to ensure long-term prosperity.&lt;br /&gt;&lt;br /&gt;The banks have begun to look much like the overfished lakes of Wall Street.&amp;nbsp; With huge annual bounties, and little incentive to maintain the overall value of the organization, traders, bankers and executives alike have taken large risky bets at expense of the the organization, in effect hollowing out their balance sheets.&amp;nbsp; Large bonuses rewarded short-term harvests, and threatened long-term prosperity.&amp;nbsp; Even with some compensation supplied in stock options, the incentive to make a few large cash bonuses and move on was so great, that it simply eclipsed the interest in ensuring a banks long-term viability.&lt;br /&gt;&lt;br /&gt;Compensation structures should provide incentive for employees to ensure long run profitability over short-term profits.&amp;nbsp; The most obvious way to accomplish this is to lower annual cash bonuses and increase the use of instruments that mature over time, such as stock options.&amp;nbsp; Employees who receive bonus compensation based on the performance of the company in five years are more likely to ensure that the organization maintains long term profitability, and is less likely to take risky bets that undermine the banks sustainability and performance.&lt;br /&gt;&lt;br /&gt;Obama is right to point out the broken compensation structures on Wall Street, but the amount of the compensation on Wall Street is not the cause of current economic woes. It is the form of compensation and how that from makes people act.&amp;nbsp; Obama should not be looking at limiting overall executive pay, but rather rewarding success in solidifying a firm over the long run.&amp;nbsp; If a salary cap is necessary to push a bill through congress in the short term, a bonus structure should be provided for any executive who has been instrumental in restoring confidence and a positive cash flow to a bank.&amp;nbsp; Change in the way banks provide incentive to their employees is necessary, but populist politics should not get in the way of proper reform. &lt;br /&gt;&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=43007" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Politics" scheme="http://decav.com/blogs/andre/archive/tags/Politics/default.aspx" /><category term="Essays" scheme="http://decav.com/blogs/andre/archive/tags/Essays/default.aspx" /><category term="Economics" scheme="http://decav.com/blogs/andre/archive/tags/Economics/default.aspx" /></entry><entry><title>Windows 7 and OS X: Its the simple stuff, stupid</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/12/08/windows-7-and-os-x-its-the-simple-stuff-stupid.aspx" /><id>http://decav.com/blogs/andre/archive/2008/12/08/windows-7-and-os-x-its-the-simple-stuff-stupid.aspx</id><published>2008-12-08T00:06:00Z</published><updated>2008-12-08T00:06:00Z</updated><content type="html">&lt;p&gt;Forgive me for borrowing from an old Clintonian campaign slogan, but it seemed appropriate... &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Over the past few weeks, more and more information has come out
about the direction of Windows 7.&amp;nbsp; Desperate to be cool once again,
Windows is adding an OS X style dock, multitouch and a range of cool
new UI effects to boot.&lt;/p&gt;

&lt;p&gt;With
all this attention to glamorous
interface features, one would be surprised to see the range of negative
articles published on Windows 7 thus far.&amp;nbsp; Much of it, of course, does
have to do with the skepticism cast on Microsoft these days, however
some of it is also pointing out important flaws in what Microsoft is
doing.&amp;nbsp; The features being added to Windows 7 are not the features
users need or are asking for most.&amp;nbsp; They are flashy features Microsoft
thinks will sell Windows, but instead may erode its market share.&amp;nbsp; What
Microsoft needs right now is to prove their critics wrong.&amp;nbsp;
Performance, stability and productivity tools over that extra &amp;quot;wow&amp;quot;
factor.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;I
have always been a proponent of Microsoft products.&amp;nbsp; I defended Vista
through its hard times, and have always thought very highly of
Microsoft products.&amp;nbsp; Times have changed.&amp;nbsp; With the start of some Unix
development work, I converted to a more suitable Unix platform, OS X.&amp;nbsp;
With this move, I began to find how far my general beliefs of
development and UI design had diverged from what I had praised as
quality software.&amp;nbsp; There is no doubt: OS X is not only a surprisingly
stable platform, but it delivers the performance and features that
users want - and does so better than its competitor.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Windows
Vista was the perfect example of a monolithic, waterfall software
development project.&amp;nbsp; Many of the features added were to push the
agendas of those running the show, not the customers of the Windows
product.&amp;nbsp; Emphasis was placed on Tablet PC and Windows Media Center
over simplicity, cleanliness, speed and search.&amp;nbsp; This is not to say
Tablet and WMC are bad products -- they both are powerful and
interesting, but they were not the core concerns of consumers.&amp;nbsp; Because
resources were moved to less important aspects of Windows, the
development of core features that users really need suffered.&lt;/p&gt;

&lt;p&gt;Vista
search is slow, resume from sleep is buggy at best and not instant, UAC
is annoying and shut off by most advanced users at the beginning, and
the OS overall feels sluggish.&amp;nbsp; While Vista in many ways is a step
above XP, it is arguably also a step backwards.&amp;nbsp; And although they may
have tried to patch up security and speed up search, they did not place
emphisis on it.&amp;nbsp; There is no good reason that Google can search
billions of web pages faster than Windows can search a few million of
my documents.&amp;nbsp; No arguments, no excuses, its pathetic.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Apple&amp;#39;s
OS X has taken a different tack than Windows.&amp;nbsp; Every year, a new
version of OS X is released.&amp;nbsp; Every year, incremental new features
(along with a few &amp;quot;pieces of flare&amp;quot;) come out of Apple, and every year
the user experience improves.&amp;nbsp; Apple seems to build in the features
users want first, and then focus on the features that impress.&amp;nbsp; Many
Apple advocates focus on the fancy effects, the security, the cool
factor, etc. to promote Apple products.&amp;nbsp; But doing so misses the forest
for the trees.&amp;nbsp; What Microsoft can learn from Apple is not the fancy
demos of Expose, cover-flow and other fun effects.&amp;nbsp; Its real,
value-added features that just work.&amp;nbsp; &lt;b&gt;This is where Microsoft needs to focus its time.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Disclaimer: &lt;/b&gt;Don&amp;#39;t
get me wrong here.&amp;nbsp; I want Windows 7 to be good.&amp;nbsp; I want it to
succeed.&amp;nbsp; But on that note, I am afraid that it won&amp;#39;t.&amp;nbsp; Unless
Microsoft can show business customers real value, Windows 7 may be
destined for the same fate as Vista.&amp;nbsp; And I am scared that a failure of
Windows 7 would hurt a product I do love, .NET.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Here are some of the things I&amp;#39;ve found since I first started using OS X:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It turns on instantly from sleep.&amp;nbsp; Always.&amp;nbsp; Open the lid, move the mouse.&amp;nbsp; Its seriously that consistent.&lt;/li&gt;

&lt;li&gt;Search is fast.&amp;nbsp; Lightning fast.&lt;/li&gt;

&lt;li&gt;I
don&amp;#39;t miss anything (Except Visual Studio).&amp;nbsp; OS X has a lot of software
that is comparable or better than Windows equivalents.&amp;nbsp; A lot of it is
free too.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Less visual clutter.&amp;nbsp; Finding features you want is easier.&lt;/li&gt;

&lt;li&gt;No
surprises.&amp;nbsp; No chugging away at the hard drive unexpectedly, no &amp;quot;Please
wait. Configuring updates&amp;quot; junk starting and shutting down.&lt;/li&gt;

&lt;li&gt;Quick
view is priceless.&amp;nbsp; When looking for a file, being able to instantly
see its contents greatly enhances productivity.&amp;nbsp; Why can&amp;#39;t Windows do
this?&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br /&gt;None of these are flashy features... Just
simple things that work well consistently.&amp;nbsp; Its important.&amp;nbsp; When I open
my machine to show someone something, I expect it to turn on and not
waste my time.&amp;nbsp; Countless times I&amp;#39;ve had Vista freeze on wake and then
on restart seen &amp;quot;Please wait, configuring updates.&amp;quot;&amp;nbsp; Maybe 20 minutes
later I get back to what I wanted to present.&lt;/p&gt;

&lt;p&gt;Here are a few
demos of OS X you usually don&amp;#39;t see in a typical sales pitch.&amp;nbsp; Things
that just work on OS X.&amp;nbsp; Things that save me time.&amp;nbsp; Things that I want
in Windows.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://decav.com/files/folders/41710/download.aspx"&gt;Really fast Search.&lt;/a&gt;&amp;nbsp; Spotlight is way faster than Windows Desktop Search.&lt;/li&gt;&lt;li&gt;



&lt;/li&gt;&lt;li&gt;&lt;a href="http://decav.com/files/folders/41711/download.aspx" target="_blank"&gt;Help Search.&amp;nbsp; Find any menu command instantly.&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quick
View.&amp;nbsp; Surf through your files faster than web pages.&amp;nbsp; Really important
when you&amp;#39;re sifting through and looking for something.&lt;/li&gt;&lt;li&gt;&lt;a href="http://decav.com/files/folders/41712/download.aspx" target="_blank"&gt;Rename
and move files while their open.&amp;nbsp; OS X applications track changes of
location and names of files they have open.&amp;nbsp; No confusion, no weird
&amp;quot;file in use&amp;quot; messages.&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://decav.com/files/folders/41713/download.aspx" target="_blank"&gt;Find things fast in
Control Panel.&amp;nbsp; The control panel has concise, easy to follow and
uncluttered names.&amp;nbsp; Important information is prominent, things like
&amp;quot;startup applications&amp;quot; aren&amp;#39;t hidden under convoluted names like
&amp;quot;Windows Defender&amp;quot;.&amp;nbsp; Control panel search works well.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;














&lt;p&gt;&lt;b&gt;When
writing software, you need to focus on what users need first.&lt;/b&gt;&amp;nbsp; Let&amp;#39;s
hope the Windows team pulls more than just the glamorous features from
OS X.&amp;nbsp; Let&amp;#39;s hope they find what makes OS X more productive and easier
to use.&amp;nbsp; These are the features we need in Windows.&amp;nbsp; Multitouch is just
a nice-to-have that few people will actually benefit from. &lt;/p&gt;&lt;p&gt;OS X is not going to take over all the Windows market share, but it could make a dent.&amp;nbsp; If Windows 7 fails to appeal to CTO&amp;#39;s and consumers alike, it will be 3 years before Microsoft gets yet another shot.&amp;nbsp; In this time, it would not be surprising to see Apple&amp;#39;s market share to grow from its current 9% to 20-30%.&amp;nbsp; Even by the time Windows 7 comes out (where Apple will have 10-15% of the market), Microsoft will have to change its game plan.&amp;nbsp; No longer can it ignore the consumers running on Apple platforms -- 15% of the market is just too much to ignore.&amp;nbsp; Proprietary formats and tools will have to bow to interoperable platforms (Silverlight and the new Office XML format).&amp;nbsp; This changes their business model quite a bit.&lt;br /&gt;&lt;/p&gt;
&lt;img src="http://decav.com/aggbug.aspx?PostID=41706" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Windows" scheme="http://decav.com/blogs/andre/archive/tags/Windows/default.aspx" /><category term="OS X" scheme="http://decav.com/blogs/andre/archive/tags/OS+X/default.aspx" /></entry><entry><title>Moving on...</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/09/18/moving-on.aspx" /><id>http://decav.com/blogs/andre/archive/2008/09/18/moving-on.aspx</id><published>2008-09-18T22:38:00Z</published><updated>2008-09-18T22:38:00Z</updated><content type="html">To those that know me well, this post is of no surprise, however given that I haven&amp;#39;t been posting for a while, and probably won&amp;#39;t for a while more, I thought it was appropriate to post a quick, personal update.

As of a week ago, I left my colleagues at Lab49 to pursue an exciting new venture which I hope will make the lives of many people easier.  Because this venture is based on web technologies, I bought a mac and just to fit in a latte as well, and settled down in a world not as well known to me -- of Open Source and Unix/Linux.

Unfortunately due to the sensitivity of any new venture, my next several months of work will be as secretive as possible.  I will not be sharing technical secrets or what the project is about until a few months from now.  For that reason, this blog will remain sparse for the next few months.&lt;img src="http://decav.com/aggbug.aspx?PostID=38716" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author></entry><entry><title>Introducing PowerShell Pages - Script Style HTML Rendering</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/07/05/introducing-powershell-pages-script-style-html-rendering.aspx" /><id>http://decav.com/blogs/andre/archive/2008/07/05/introducing-powershell-pages-script-style-html-rendering.aspx</id><published>2008-07-05T17:59:00Z</published><updated>2008-07-05T17:59:00Z</updated><content type="html">&lt;p&gt;Early in the web development world, scripting languages such as ASP or PHP were used to compose pages. Although this proved great for relatively static pages, the dynamic web, filled with rich applications called for a more powerful framework. Thus, frameworks like ASP.NET were born.&lt;br /&gt;&lt;br /&gt;ASP.NET solved a good number of problem spaces, but has made creating simple pages (such as a resume or menu, or other primitive list of data) more cumbersome. With the world of COM development becoming less common and less preferable, the gap for a scripting language to replace VBScript/ASP is needed. PowerShell scripting has filled the gap left by the demise of VBScript, but nothing has come along to replace ASP.&lt;br /&gt;&lt;br /&gt;PowerShell Pages is an ASP like language, based on the PowerShell runtime. Using a simple HTTP Handler, ASP.NET can render pages scripted using PowerShell script (including cmdlets, and CLR/.NET objects) to the web. Simple, fast and intuitive programming for simple pages that just need to display some content.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The PowerShell Pages project is an open source project that I am starting.&lt;/strong&gt;&amp;nbsp; Its implementation will be based on ASP.NET using a simple handler capable of consuming &lt;strong&gt;PowerShell HTML (PSH)&lt;/strong&gt;&amp;nbsp;scripts and writing HTML.&amp;nbsp; Because the script is hosted in ASP.NET, the ASP.NET HttpContext and the other components of the object model are available.&amp;nbsp; PSH scripts can work side-by-side with ASPX pages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ready to see what PowerShell Pages look like?&lt;br /&gt;Sample Page: &lt;/strong&gt;&lt;a href="http://decav.com/psp/resume.psh"&gt;http://decav.com/psp/resume.psh&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Sample Page Code:&lt;/strong&gt; &lt;a href="http://decav.com/psp/viewsource.psh?page=resume.psh"&gt;http://decav.com/psp/viewsource.psh?page=resume.psh&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;View Source Code:&lt;/strong&gt; &lt;a href="http://decav.com/psp/viewsource.psh?page=viewsource.psh"&gt;http://decav.com/psp/viewsource.psh?page=viewsource.psh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class="" href="http://www.codeplex.com/PowerShellPages"&gt;Join the Project - Visit the PowerShell Pages CodePlex project workspace&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=34706" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Web 2.0" scheme="http://decav.com/blogs/andre/archive/tags/Web+2.0/default.aspx" /><category term=".NET/C# Development" scheme="http://decav.com/blogs/andre/archive/tags/.NET_2F00_C_2300_+Development/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="PowerShell" scheme="http://decav.com/blogs/andre/archive/tags/PowerShell/default.aspx" /></entry><entry><title>Gatsb.com Now Open Source (A Case Study in Geotagging, Workflow Foundation, SMS/MMS Parsing)</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/06/14/gatsb-com-now-open-source-a-case-study-in-geotagging-workflow-foundation-sms-mms-parsing.aspx" /><id>http://decav.com/blogs/andre/archive/2008/06/14/gatsb-com-now-open-source-a-case-study-in-geotagging-workflow-foundation-sms-mms-parsing.aspx</id><published>2008-06-14T15:37:00Z</published><updated>2008-06-14T15:37:00Z</updated><content type="html">&lt;p&gt;After hosting Gatsb.com for a year, I have decided to open source the project.&amp;nbsp; I haven&amp;#39;t had time to promote it the way I wanted to promote it, and it therefore hasn&amp;#39;t caught on with too many users.&amp;nbsp; I&amp;#39;ve been busy with other projects, other (grander) ideas, and think that this one should now belong to the community.&lt;/p&gt;
&lt;p&gt;You can download the source code here: &lt;a href="http://code.google.com/p/gatsb/"&gt;http://code.google.com/p/gatsb/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to contribute to the project, please feel free to contact me at &lt;a href="mailto:andreblog@decav.com"&gt;andreblog@decav.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This project is a great case study of a bunch of new Microsoft technologies.&amp;nbsp; It includes Workflow Foundation, .NET 3.0, Microsoft Virtual Earth and ASP.NET Ajax.&lt;/p&gt;
&lt;p&gt;One of the coolest features is how it keeps open a &amp;quot;session&amp;quot; with an SMS client.&amp;nbsp; Workflow Foundation is used to persist the state and when a new SMS comes in, it checks if theres an existing session for that SMS.&amp;nbsp; If there is, then it will revive the workflow and continue the session.&amp;nbsp; Cool stuff!&lt;/p&gt;
&lt;p&gt;If you ever wondered how to create a database of geotagged entries, use ASP.NET ajax to make a snazzier site, or establish a user interface with any mobile device, I suggest checking out the code!&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=33940" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="Web 2.0" scheme="http://decav.com/blogs/andre/archive/tags/Web+2.0/default.aspx" /><category term=".NET/C# Development" scheme="http://decav.com/blogs/andre/archive/tags/.NET_2F00_C_2300_+Development/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="Gatsb" scheme="http://decav.com/blogs/andre/archive/tags/Gatsb/default.aspx" /></entry><entry><title>PowerShell: Repeat Yourself with the Command "Scratch Pad"</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/05/21/powershell-repeat-yourself-with-the-command-quot-scratch-pad-quot.aspx" /><id>http://decav.com/blogs/andre/archive/2008/05/21/powershell-repeat-yourself-with-the-command-quot-scratch-pad-quot.aspx</id><published>2008-05-21T13:08:00Z</published><updated>2008-05-21T13:08:00Z</updated><content type="html">&lt;p&gt;Heres a useful snippit of code I wrote as a utility and thought I&amp;#39;d post up for everyone.&amp;nbsp; Very often when using a command line, you need to repeat a set of commands.&amp;nbsp; For example, copy several files:&lt;/p&gt;
&lt;p&gt;copy &amp;quot;c:\blah.txt&amp;quot; &amp;quot;c:\otherPlace\blah.txt&amp;quot;&lt;br /&gt;copy &amp;quot;c:\dev\blah.txt&amp;quot; &amp;quot;c:\otherPlace\blah2.txt&amp;quot;&lt;/p&gt;
&lt;p&gt;History is okay for this, but if you have a set of commands you need to run, you need to run them each individually.&amp;nbsp; Also, if you go to do something else, they&amp;#39;ll eventually lose their spot in the command history.&lt;/p&gt;
&lt;p&gt;To solve this, I created a &amp;quot;scratch pad&amp;quot;.&amp;nbsp; Nothing special, but definately useful.&lt;/p&gt;
&lt;p&gt;new-scratch &amp;quot;MyFirstScratch&amp;quot;&lt;br /&gt;copy &amp;quot;c:\blah.txt&amp;quot; &amp;quot;c:\otherPlace\blah.txt&amp;quot;&lt;br /&gt;scratch&lt;br /&gt;copy &amp;quot;c:\dev\blah.txt&amp;quot; &amp;quot;c:\otherplace\blah2.txt&amp;quot;&lt;br /&gt;scratch&lt;br /&gt;## Do some other stuff here...&lt;br /&gt;get-scratch # prints out the contents of the scratch.&lt;br /&gt;invoke-scratch&lt;/p&gt;
&lt;p&gt;This scratch pad is holds a set of commands that you want to rerun later.&amp;nbsp; You can then call invoke-scratch to run the scratchpad.&amp;nbsp; You can have multiple scratch pads, and use them by just adding the name to the end of the function (&lt;strong&gt;get-scratch &amp;quot;MyFirstScratch&amp;quot;&lt;/strong&gt;).&amp;nbsp; By&amp;nbsp;default all scratch pad commands will default to the &lt;strong&gt;last used scratch pad&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The example below shows how to shorten the sample above:&lt;/p&gt;
&lt;p&gt;new-scratch &amp;quot;MyFirstScratch&amp;quot;&lt;br /&gt;copy &amp;quot;c:\blah.txt&amp;quot; &amp;quot;c:\otherPlace\blah.txt&amp;quot;&lt;br /&gt;copy &amp;quot;c:\dev\blah.txt&amp;quot; &amp;quot;c:\otherplace\blah2.txt&amp;quot;&lt;br /&gt;scratch 2&amp;nbsp;&amp;nbsp; # Saves the last 2 items to the scratch pad&lt;/p&gt;
&lt;p&gt;This can be very useful for writing scripts too.&amp;nbsp; the &lt;strong&gt;Save-Scratch&lt;/strong&gt; command lets you export your scratch to a file.&lt;/p&gt;
&lt;p&gt;Heres the code.&amp;nbsp; Add it to your profile and go.&amp;nbsp; Enjoy!&lt;/p&gt;
&lt;div style="BORDER-RIGHT:#ccc 1px solid;PADDING-RIGHT:10px;BORDER-TOP:#ccc 1px solid;PADDING-LEFT:10px;PADDING-BOTTOM:10px;BORDER-LEFT:#ccc 1px solid;PADDING-TOP:10px;BORDER-BOTTOM:#ccc 1px solid;"&gt;&lt;code&gt;function New-Scratch($name) {&lt;br /&gt;&amp;nbsp; if ($global:scratchPads -eq $null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:scratchPads = @{}&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; $pad = new-object System.Collections.ArrayList&lt;br /&gt;&amp;nbsp; $global:scratchPads.Add($name, $pad)&lt;br /&gt;&amp;nbsp; $global:currentScratchPad = $pad&lt;br /&gt;&amp;nbsp; $global:currentScratchPadName = $name&lt;br /&gt;}&lt;br /&gt;function Get-Scratch($name=$null) {&lt;br /&gt;&amp;nbsp; if ($name -ne $null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPad = $global:scratchPads[$name]&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPadName = $name&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; return $global:currentScratchPad&lt;br /&gt;}&lt;br /&gt;function Scratch([int]$count=1,$name=$null) {&lt;br /&gt;&amp;nbsp; if ($name -ne $null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPad = $global:scratchPads[$name]&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPadName = $name&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; $hist = get-history&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; if ($name -eq $null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $name = $global:currentScratchPadName&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; for ($i=$hist.Length-$count; $i -lt $hist.Length; $i++) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPad.Add($hist[$i].CommandLine) | out-null&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;function Invoke-Scratch($name=$null) {&lt;br /&gt;&amp;nbsp; if ($name -ne $null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPad = $global:scratchPads[$name]&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPadName = $name&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; foreach ($item in $global:currentScratchPad) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; write-host &amp;quot;&amp;gt;&amp;gt; $item&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; invoke-expression $item&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;function Save-Scratch($path, $name=$null) {&lt;br /&gt;&amp;nbsp; if ($name -ne $null) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPad = $global:scratchPads[$name]&lt;br /&gt;&amp;nbsp; &amp;nbsp; $global:currentScratchPadName = $name&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; $global:currentScratchPad | out-file $path&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=33101" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="PowerShell" scheme="http://decav.com/blogs/andre/archive/tags/PowerShell/default.aspx" /></entry><entry><title>Invoking PowerShell Scripts from An Application</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/05/01/invoking-powershell-scripts-from-an-application.aspx" /><id>http://decav.com/blogs/andre/archive/2008/05/01/invoking-powershell-scripts-from-an-application.aspx</id><published>2008-05-01T20:01:00Z</published><updated>2008-05-01T20:01:00Z</updated><content type="html">&lt;p&gt;If you want to run your PowerShell scripts from a piece of code you&amp;#39;re writing, and would prefer not to use &lt;strong&gt;Process.Start&lt;/strong&gt;, you can easily use the PowerShell runtime classes to run those scripts for you, completely in-process.&lt;/p&gt;
&lt;p&gt;The code snippit below shows how you can create a &lt;strong&gt;Runspace&lt;/strong&gt; and pass it some simple commands.&lt;/p&gt;&lt;pre class="csharpcode"&gt;List&amp;lt;Command&amp;gt; commands = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Command&amp;gt;();
commands.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Command(&lt;span class="str"&gt;&amp;quot;set-location c:\\&amp;quot;));
commands.Add(new Command(&amp;quot;&lt;/span&gt;./MyScript.ps1 &lt;span class="str"&gt;&amp;#39;myParameter&amp;#39;&lt;/span&gt;&amp;quot;, &lt;span class="kwrd"&gt;true&lt;/span&gt;));

&lt;span class="kwrd"&gt;using&lt;/span&gt; (Runspace runspace = RunspaceFactory.CreateRunspace())
{
    runspace.Open();
    &lt;span class="kwrd"&gt;using&lt;/span&gt; (Pipeline pipeline = runspace.CreatePipeline())
    {
        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Command cmd &lt;span class="kwrd"&gt;in&lt;/span&gt; commands)
        {
            pipeline.Commands.Add(cmd);
        }
        pipeline.Invoke();
    }
    runspace.Close();
}&lt;/pre&gt;
&lt;p&gt;One thing to note here is you do not have a &lt;strong&gt;PSHost&lt;/strong&gt;, so if you have a &lt;strong&gt;write-host&lt;/strong&gt; anywhere, it will fail with the following exception:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;CmdletInvocationException: Cannot invoke this function becasue the current host does not implement it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To get around this, you can remove &lt;strong&gt;write-host&lt;/strong&gt; from your scripts and just have them write single lines, or you can implement a simple &lt;strong&gt;PSHost&lt;/strong&gt; (although this is a bit harder than it sounds).&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=32362" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term=".NET/C# Development" scheme="http://decav.com/blogs/andre/archive/tags/.NET_2F00_C_2300_+Development/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /><category term="PowerShell" scheme="http://decav.com/blogs/andre/archive/tags/PowerShell/default.aspx" /></entry><entry><title>Solution: "Unknown error", LDAP connection strings and System.DirectoryServices</title><link rel="alternate" type="text/html" href="http://decav.com/blogs/andre/archive/2008/05/01/solution-quot-unknown-error-quot-ldap-connection-strings-and-system-directoryservices.aspx" /><id>http://decav.com/blogs/andre/archive/2008/05/01/solution-quot-unknown-error-quot-ldap-connection-strings-and-system-directoryservices.aspx</id><published>2008-05-01T19:50:00Z</published><updated>2008-05-01T19:50:00Z</updated><content type="html">&lt;p&gt;If you&amp;#39;ve been using &lt;strong&gt;System.DirectoryServices&lt;/strong&gt;.&lt;strong&gt;DirectoryEntry&lt;/strong&gt; class, or the newer &lt;strong&gt;System.DirectoryServices.AccountManagement&lt;/strong&gt; namespace to access your LDAP or Active Directory server, you may have experienced the following error:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;COMException: &amp;quot;Unknown error (0x80005000)&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This can happen for numerous reasons, but one of the most frustrating and overlooked reason&amp;#39;s I&amp;#39;ve found for this problem is when your LDAP connection string is malformed.&amp;nbsp; One of the most common malformations is in the case sensitivity of the &lt;strong&gt;LDAP://&lt;/strong&gt; component.&amp;nbsp; For example, &lt;strong&gt;LDAP://myServer/cn=users,dc=myserver,dc=com&lt;/strong&gt; is a valid connection string, however &lt;strong&gt;ldap://myServer/cn=users,dc=myserver,dc=com&lt;/strong&gt; is &lt;strong&gt;&lt;u&gt;not&lt;/u&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you use the &lt;strong&gt;Uri&lt;/strong&gt; or &lt;strong&gt;UriBuilder&lt;/strong&gt; classes, the builder may lowecase your scheme.&amp;nbsp; Always make sure to recapitalize the scheme when passing it into &lt;strong&gt;DirectoryEntry&lt;/strong&gt; or any other API.&lt;/p&gt;&lt;img src="http://decav.com/aggbug.aspx?PostID=32360" width="1" height="1"&gt;</content><author><name>mrdecav</name><uri>http://decav.com/members/mrdecav.aspx</uri></author><category term=".NET/C# Development" scheme="http://decav.com/blogs/andre/archive/tags/.NET_2F00_C_2300_+Development/default.aspx" /><category term="On Software" scheme="http://decav.com/blogs/andre/archive/tags/On+Software/default.aspx" /></entry></feed>