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

<channel>
	<title>sharpreflections.net</title>
	<atom:link href="http://blog.sharpreflections.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sharpreflections.net</link>
	<description>Thoughts about .Net, programming and other more important stuffs.</description>
	<lastBuildDate>Fri, 20 Nov 2009 00:24:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>10 (unusual) ways to use 140 characters</title>
		<link>http://blog.sharpreflections.net/2009/11/20/10-unusual-ways-to-use-140-characters/</link>
		<comments>http://blog.sharpreflections.net/2009/11/20/10-unusual-ways-to-use-140-characters/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 00:22:04 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.sharpreflections.net/?p=128</guid>
		<description><![CDATA[
I recently became a twitter user, and I immediately got addicted. I really have the sensation that twitter is extremely powerful, even if I still don&#8217;t exactly know how. So, while I think a little more about what can I do with it (as tool/platform for my job, I mean), here some fun things you [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-141 alignnone" style="margin: 20px;" title="twitter" src="http://blog.sharpreflections.net/wp-content/uploads/2009/11/twitter.png" alt="twitter" width="128" height="128" /></p>
<p>I recently became a twitter user, and I immediately got addicted. I really have the sensation that twitter is extremely powerful, even if I still don&#8217;t exactly know how. So, while I think a little more about what can I do with it (as tool/platform for my job, I mean), here some fun things you can do with the 140 chars of a tweet:</p>
<ul>
<li><a title="Tweba" href="http://www.tweba.com" target="_blank">Sell stuff </a>(the service is free!) in a auction-based or fixed price way. Who needs eBay anymore?</li>
<li><a title="High Court serves injunction via Twitter" href="http://bit.ly/6kmgz" target="_blank">Serve an injunction</a>.</li>
<li><a title="Control Lights with Twitter" href="http://bit.ly/2VIdq9" target="_blank">Control your lights</a> or even <a title="Introducing http://twitter.com/MattsOffice" href="http://bit.ly/1lOQRo" target="_blank">fully automate your home</a>. Amazing.</li>
<li>Remotely monitor a server: <a title="How I Use Twitter to Monitor Server Remotely" href="http://bit.ly/1eLlak" target="_blank">here</a> and <a title="USING TWITTER FOR SERVER-MONITORING" href="http://bit.ly/4cKn5c" target="_blank">here</a>.</li>
<li><a title="TweetMyMac: Remote control of your Mac via Twitter" href="http://bit.ly/36PIld" target="_blank">Control a Mac</a>.</li>
<li>Get a taxi? <a href="http://bit.ly/1J7X33" target="_blank">Why not</a>&#8230;</li>
<li><a href="http://bit.ly/358Fm9" target="_blank">Play chess</a> (even against the whole community, cool!)</li>
<li>Notify the entire planet that <a href="http://bit.ly/2QHWlU" target="_blank">the view is beautiful from the space</a>.</li>
<li><a href="http://bit.ly/2idF8I" target="_blank">Publish a newspaper</a>, now we know it&#8217;s possible.</li>
<li><a href="http://bit.ly/1bVKac" target="_blank">Hold a worldwide press conference</a>.</li>
</ul>
<p>140 chars&#8230;. not too bad eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2009/11/20/10-unusual-ways-to-use-140-characters/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Even more portable life</title>
		<link>http://blog.sharpreflections.net/2009/11/18/even-more-portable-life/</link>
		<comments>http://blog.sharpreflections.net/2009/11/18/even-more-portable-life/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 10:39:21 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Software rocks]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[portable apps]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.sharpreflections.net/?p=134</guid>
		<description><![CDATA[
Recently discovered there are interesting new entries within my loved portable apps:

Skype, never thought it could ever go portable.
TeamViewer, one of my favorite collaboration and remote support tools. Really powerful, give it a try.
2X Client, RDP remote client with interesting features.
Google Chrome (beta 4), personally I found that a portable browser is a must.

For the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-135  alignnone" title="PortableAppsLogo" src="http://blog.sharpreflections.net/wp-content/uploads/2009/11/portableapps_128.png" alt="portableapps.com" width="128" height="128" /></p>
<p>Recently discovered there are interesting new entries within my <strong>loved </strong><a title="http://portableapps.com" href="http://portableapps.com" target="_blank">portable apps</a>:</p>
<ol>
<li><a title="Skype portable" href="http://bit.ly/1Imt90" target="_blank">Skype</a>, never thought it could ever go portable.</li>
<li><a title="TeamViewer portable" href="http://bit.ly/18j6KR">TeamViewer</a>, one of my favorite collaboration and remote support tools. Really powerful, give it a try.</li>
<li><a title="2X Client portable" href="http://bit.ly/19yETw" target="_blank">2X Client</a>, RDP remote client with interesting features.</li>
<li><a title="Google Chrome portable" href="http://bit.ly/1gQFtd" target="_blank">Google Chrome</a> (beta 4), personally I found that a portable browser is a must.</li>
</ol>
<p>For the complete list of portable apps give a look <a title="portableapps.com applications" href="http://bit.ly/2izgfo" target="_blank">here</a>. <strong>Notice that almost everything is free</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2009/11/18/even-more-portable-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple parallel programming</title>
		<link>http://blog.sharpreflections.net/2009/05/18/simple-parallel-programming/</link>
		<comments>http://blog.sharpreflections.net/2009/05/18/simple-parallel-programming/#comments</comments>
		<pubDate>Mon, 18 May 2009 22:59:40 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[.Net Programming]]></category>
		<category><![CDATA[ParallelProgramming]]></category>
		<category><![CDATA[Threading]]></category>
		<category><![CDATA[.Net;Threading;ParallelProgramming]]></category>

		<guid isPermaLink="false">http://blog.sharpreflections.net/?p=105</guid>
		<description><![CDATA[While waiting for Parallel Extensions (wikipedia), that will be shipped with next .Net Framework release, I designed a couple of class that allow to quickly (and easily!) write code that make use of multi-threading and, therefore, speed-up many tasks. What I show here is a simple class able to collect pieces of code (in form [...]]]></description>
			<content:encoded><![CDATA[<p>While waiting for <a title="Parallel Programming with .NET" href="http://blogs.msdn.com/pfxteam" target="_blank">Parallel Extensions</a> (<a title="Parallel Extensions" href="http://en.wikipedia.org/wiki/Parallel_FX_Library" target="_blank">wikipedia</a>), that will be shipped with next .Net Framework release, I designed a couple of class that allow to quickly (and easily!) write code that make use of multi-threading and, therefore, speed-up many tasks. What I show here is a simple class able to collect pieces of code (in form of delegate) to be executed concurrently, and parallelize and synchronize the execution. The main goals I kept in mind while realizing the solution were:</p>
<ul>
<li>Ease of use, minimal requirement in terms of multi-threading skills</li>
<li>Allowing single-threaded code to be ported to multi-threading with few changes</li>
<li>Code readability</li>
<li>Support for exception management</li>
</ul>
<p>Here what I came up with:</p>
<p>The API exposes one class, <span class="csharpcode">ParallelExecutor</span>, and one interface, <span class="csharpcode">IExecutionResult</span> (plus a generic specialization of the interface and the necessary implementations). Before seeing the internals of the solution, I want to show <strong>the ease of use of the API</strong>.<br />
Let&#8217;s start with this example:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">void</span> SerialExecution()</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>    Uri uri; <span class="kwrd">int</span> <span class="kwrd">value</span>;</pre>
<pre><span class="lnum">   4:  </span></pre>
<pre class="alt"><span class="lnum">   5:  </span>    CallWebService(uri);</pre>
<pre><span class="lnum">   6:  </span>    PerformComputation(<span class="kwrd">value</span>);</pre>
<pre class="alt"><span class="lnum">   7:  </span>}</pre>
</div>
<p><span class="csharpcode">CallWebService()</span> and <span class="csharpcode">PerformComputation()</span> represent the most classic example of methods that can (and should!) run in parallel as they perform respectively I/O and CPU computation. But usually programmers haven&#8217;t enough confidence with multi-threading execution and synchronization to do things in the right way. In any case they shouldn&#8217;t care about this stuff, they should focus on coding logic, and not on coding about how the logic get&#8217;s executed. Let&#8217;s see how <span class="csharpcode">ParallelExecutor</span> comes in help:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">void</span> ParallelExecution</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>  Uri uri; <span class="kwrd">int</span> <span class="kwrd">value</span>;</pre>
<pre><span class="lnum">   4:  </span></pre>
<pre class="alt"><span class="lnum">   5:  </span>  ParallelExecutor executor = <span class="kwrd">new</span> ParallelExecutor();</pre>
<pre><span class="lnum">   6:  </span></pre>
<pre class="alt"><span class="lnum">   7:  </span>  executor.Add(CallWebService, uri);</pre>
<pre><span class="lnum">   8:  </span>  executor.Add(PerformComputation, <span class="kwrd">value</span>);</pre>
<pre class="alt"><span class="lnum">   9:  </span></pre>
<pre><span class="lnum">  10:  </span>  executor.WaitAll();</pre>
<pre class="alt"><span class="lnum">  11:  </span>}</pre>
</div>
<p>Not too bad, right? With a couple of lines I got the two methods run concurrently. This is pretty simple: the Add() method takes as arguments the method to invoke and the arguments of that method. The WaitAll() causes the calling thread to wait for all the methods passed to Add() to complete. Take a (partial) look to the <span class="csharpcode">ParallelExecutor</span> definition:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">public</span> <span class="kwrd">class</span> ParallelExecutor</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>  <span class="kwrd">public</span> IExecutionInfo&lt;<span class="kwrd">object</span>&gt; Add(Action workItem)</pre>
<pre><span class="lnum">   4:  </span>  <span class="kwrd">public</span> IExecutionInfo&lt;<span class="kwrd">object</span>&gt; Add&lt;T&gt;(Action&lt;T&gt; workItem, T arg)</pre>
<pre class="alt"><span class="lnum">   5:  </span>  <span class="rem">//overloads for other Action versions </span></pre>
<pre><span class="lnum">   6:  </span></pre>
<pre class="alt"><span class="lnum">   7:  </span>  <span class="kwrd">public</span> IExecutionInfo&lt;TResult&gt; Add&lt;TResult&gt;(Func&lt;TResult&gt; workItem)</pre>
<pre><span class="lnum">   8:  </span>  <span class="kwrd">public</span> IExecutionInfo&lt;TResult&gt; Add&lt;T, TResult&gt;(Func&lt;T, TResult&gt; workItem, T arg)</pre>
<pre class="alt"><span class="lnum">   9:  </span>  <span class="rem">//overloads for other Func versions </span></pre>
<pre><span class="lnum">  10:  </span></pre>
<pre class="alt"><span class="lnum">  11:  </span>  <span class="kwrd">public</span> <span class="kwrd">bool</span> WaitAll():</pre>
<pre><span class="lnum">  12:  </span>}</pre>
</div>
<p>As you can see, method to be parallelized are passed to Add() in form of variations of Action and Func generics delegate (there are also overloads that take <span class="csharpcode">MethodInfo</span> and the standard <span class="csharpcode">Delegate</span>). But what about the Add() return type, <span class="csharpcode">IExecutionResult</span>? Let&#8217;s see the interface declaration:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">public</span> <span class="kwrd">interface</span> IExecutionInfo</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>  <span class="kwrd">object</span>[] Args { get; }</pre>
<pre><span class="lnum">   4:  </span></pre>
<pre class="alt"><span class="lnum">   5:  </span>  Exception Exception { get; }</pre>
<pre><span class="lnum">   6:  </span></pre>
<pre class="alt"><span class="lnum">   7:  </span>  <span class="kwrd">object</span> Result { get; }</pre>
<pre><span class="lnum">   8:  </span>}</pre>
<pre class="alt"><span class="lnum">   9:  </span></pre>
<pre><span class="lnum">  10:  </span><span class="kwrd">public</span> <span class="kwrd">interface</span> IExecutionInfo&lt;TResult&gt; : IExecutionInfo</pre>
<pre class="alt"><span class="lnum">  11:  </span>{</pre>
<pre><span class="lnum">  12:  </span>  TResult Result { get; }</pre>
<pre class="alt"><span class="lnum">  13:  </span>}</pre>
</div>
<p>At every invocation of the Add() method an instance of a class implementing <span class="csharpcode">IExecutionResult</span> is created, and its Args property is filled with method invocation arguments. After the invocation completes, the Result and Exception property are filled too (in both case, if any). <strong>And the magic of generics allow the code to be type safe</strong>. So, returning to the example, if CallWebService() has a return value and if you want to check for exceptions, you can write:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">void</span> ParallelExecution</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>  Uri uri; <span class="kwrd">int</span> <span class="kwrd">value</span>;</pre>
<pre><span class="lnum">   4:  </span></pre>
<pre class="alt"><span class="lnum">   5:  </span>  ParallelExecutor executor = <span class="kwrd">new</span> ParallelExecutor();</pre>
<pre><span class="lnum">   6:  </span></pre>
<pre class="alt"><span class="lnum">   7:  </span>  IExecutionInfo&lt;<span class="kwrd">int</span>&gt; execution = executor.Add&lt;Uri, <span class="kwrd">int</span>&gt;(CallWebService, uri);</pre>
<pre><span class="lnum">   8:  </span>  executor.Add(PerformComputation, <span class="kwrd">value</span>);</pre>
<pre class="alt"><span class="lnum">   9:  </span></pre>
<pre><span class="lnum">  10:  </span>  executor.WaitAll();</pre>
<pre class="alt"><span class="lnum">  11:  </span></pre>
<pre><span class="lnum">  12:  </span>  <span class="kwrd">if</span> (execution.Exception != <span class="kwrd">null</span>)</pre>
<pre class="alt"><span class="lnum">  13:  </span>      ManageException(execution.Exception);</pre>
<pre><span class="lnum">  14:  </span>  <span class="kwrd">else</span></pre>
<pre class="alt"><span class="lnum">  15:  </span>      Console.WriteLine(<span class="str">"Result: {0}"</span>, execution.Result);</pre>
<pre><span class="lnum">  16:  </span>}</pre>
</div>
<p>Another couple of properties exposed by <span class="csharpcode">ParallelExecutor</span> allow you to control when the execution starts (immediately after Add() or when WaitAll() gets called) and the aggressiveness of the threading policy (one new Thread for every method passed to Add() or threads got from ThreadPool).</p>
<p>Obviously this is a very simple implementation, far away from what Parallel Extensions will be. But its simplicity may suite well some implementation with no heavy requirements.</p>
<p><a title="Simple parallel programming (MSDN Code Gallery)" href="http://code.msdn.microsoft.com/SimpleParallelExt" target="_blank">Source Code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2009/05/18/simple-parallel-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Great ideas from the web</title>
		<link>http://blog.sharpreflections.net/2008/09/12/great-ideas-from-the-web/</link>
		<comments>http://blog.sharpreflections.net/2008/09/12/great-ideas-from-the-web/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 20:03:14 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Software rocks]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[great ideas]]></category>
		<category><![CDATA[the web]]></category>

		<guid isPermaLink="false">http://blog.sharpreflections.net/?p=102</guid>
		<description><![CDATA[A wonderful week for one of my greatest passions: software ideas that rocks. In few days I discovered these fantastic two:
1) Ubiquity, a revolutionary way to interact the web in a natural way. Take a look at this impressive video and get it here. Oh&#8230; obviously: it&#8217;s for Firefox.
2) Dropbox, what SkyDrive should (and could) [...]]]></description>
			<content:encoded><![CDATA[<p>A wonderful week for one of my greatest passions: <strong>software ideas that rocks</strong>. In few days I discovered these fantastic two:</p>
<p>1) <a title="Introducing Ubiquity" href="http://labs.mozilla.com/2008/08/introducing-ubiquity/" target="_blank">Ubiquity</a>, a revolutionary way to interact the web in a natural way. Take a look at this <a href="http://vimeo.com/1561578" target="_blank">impressive video</a> and get it here. Oh&#8230; obviously: it&#8217;s for Firefox.</p>
<p>2) <a href="http://www.getdropbox.com/" target="_blank">Dropbox</a>, what <a href="http://skydrive.live.com/" target="_blank">SkyDrive</a> should (and could) have been but is not. Easily and quickly synchronize your files with different PCs or access them directly from the browser.</p>
<p>The entire world wasted a lot of words in past two years about Web 2.0. I think that we shouldn&#8217;t care about version numbers, instead we only should care about great ideas (like <a href="http://vimeo.com/1466664" target="_blank">this one</a>, also from Mozilla Labs).</p>
<p>via <a href="http://blogs.ugidotnet.org/alessage/archive/2008/08/27/ubiquity.aspx" target="_blank">Ale</a> &amp; <a href="http://ptoniolo.wordpress.com/" target="_blank">Pietro</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2008/09/12/great-ideas-from-the-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portable life</title>
		<link>http://blog.sharpreflections.net/2008/09/05/portable-life/</link>
		<comments>http://blog.sharpreflections.net/2008/09/05/portable-life/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 00:07:42 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Software rocks]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[portable apps]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://sharpreflections.wordpress.com/?p=115</guid>
		<description><![CDATA[It&#8217;s a long time I&#8217;m a big fan of portable apps, and &#8211; for at least two good reason &#8211; I use them not only from the USB pen, but even from system drive. First: as a developer I&#8217;ve a fresh OS installation relatively often and a simple copy is far smarter than many installations. [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a long time I&#8217;m a big fan of <a title="Portable Apps" href="http://en.wikipedia.org/wiki/Portable_apps" target="_blank">portable apps</a>, and &#8211; for at least two good reason &#8211; I use them not only from the USB pen, but even from system drive. First: as a developer I&#8217;ve a fresh OS installation relatively often and a simple copy is far smarter than many installations. Second, I can directly (via a network share) run portable apps from different machines (including virtuals I host). Not to tell the fact that settings and preferences always follow the apps and that my registry remains a little bit cleaner&#8230;</p>
<p>I wanna ensure you that, once you get used to this, it&#8217;s hard not to have it. So I started to collect the portable version of everything I can find, and currently my &#8220;Portable Apps&#8221; folder contains more than 50 apps. Every day I&#8217;m more convinced that almost everything should be portable, also (or especially) things like Visual Studio or other complex applications. I don&#8217;t want to list every single portable app I use, but let&#8217;s sat that&#8230;</p>
<p>I surf the web with <a href="http://portableapps.com/apps/internet/firefox_portable" target="_blank">Firefox Portable Edition </a>and I read my email with <a href="http://portableapps.com/apps/internet/thunderbird_portable" target="_blank">Thunderbird Portable Edition</a> and my feeds with <a href="http://www.feedreader.com/" target="_blank">FeedReader</a>. I do IM with <a href="http://psi-im.org/" target="_blank">PSI</a> (a jabber client &#8211; note that many jabber servers are server-side integrated with gTalk, Yahoo Messenger, MSN and others), I download with <a href="http://www.freedownloadmanager.org/" target="_blank">Free Download Manager</a> and <a href="http://www.utorrent.com/" target="_blank">uTorrent</a>, I work on FTP servers with <a href="http://portableapps.com/apps/internet/filezilla_portable" target="_blank">FileZilla Portable</a>.</p>
<p>I use <a href="http://www.foxitsoftware.com/pdf/reader_2/down_reader.htm" target="_blank">Foxit Reader</a> for PDF documents, I view/edit text files with <a href="http://www.flos-freeware.ch/notepad2.html" target="_blank">Notepad2</a>, <a href="http://portableapps.com/apps/development/notepadpp_portable" target="_blank">Notepad++ Portable</a> and I take notes with <a href="http://they.misled.us/dark-room" target="_blank">Dark Room</a> (see also <a href="http://blog.sharpreflections.net/2007/03/15/tools-for-writ…he-way-i-writetools-for-writing-and-the-way-i-write/" target="_blank"><em>Tools for writing and the way I write</em></a>). I&#8217;m currently evaluating <a href="http://www.xMind.org" target="_blank">xMind</a> for my mind maps.</p>
<p>I watch videos and movies with <a href="http://portableapps.com/apps/music_video/vlc_portable" target="_blank">Videolan Portable</a>, manage and look my pictures with <a href="http://www.faststone.org/FSViewerDetail.htm" target="_blank">Fastone</a>, sometimes edit them with <a href="http://portableapps.com/apps/graphics_pictures/gimp_portable" target="_blank">GIMP Portable</a>. I listen web radio (check <a href="http://www.radiosnj.com/" target="_blank">Radio SNJ</a>!!!!) with <a href="http://www.radio-play.it/" target="_blank">RadioPlay</a> and my music with <a href="http://portableapps.com/apps/music_video/coolplayerp_portable" target="_blank">CoolPlayer+ Portable</a>.</p>
<p>And, of course, I work with <a href="http://www.red-gate.com/products/reflector/" target="_blank">Reflector</a> (can&#8217;t not to cite), <a href="http://www.sliver.com/dotnet/SnippetCompiler/" target="_blank">Snipper Compiler</a>, a lot of stuffs by <a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx" target="_blank">SysInternals</a>,  <a href="http://www.sqldbx.com/" target="_blank">SqlDbx</a>, and others.</p>
<p>I&#8217;m still waiting (may be dreaming) for VMware Workstation Portable, Visual Studio Portable, Office Portable, Photoshop Portable&#8230;</p>
<p>Take a look also here:</p>
<ul>
<li><a title="portableapps.com" href="http://portableapps.com/" target="_blank">PortableApps.com</a></li>
<li><a href="http://en.wikipedia.org/wiki/List_of_portable_software" target="_blank">List of portable software on Wikipedia</a></li>
<li><a href="http://www.softpedia.com/get/PORTABLE-SOFTWARE/" target="_blank">Portable software on SoftPedia</a></li>
<li><a href="http://www.portablefreeware.com/" target="_blank">The Portable Freeware Collection</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2008/09/05/portable-life/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How I got Started in Software Development</title>
		<link>http://blog.sharpreflections.net/2008/07/30/how-i-got-started-in-software-development/</link>
		<comments>http://blog.sharpreflections.net/2008/07/30/how-i-got-started-in-software-development/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 22:31:41 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sharpreflections.wordpress.com/?p=105</guid>
		<description><![CDATA[I had the great pleasure of having been tagged by Adrian. So&#8230; it&#8217;s my turn:

How old were you when you started programming?

In 1994, when I was 16 and I was at the high school. But I must say also that at the age of about 10 year a &#8220;played&#8221;  with BASIC on a Laser [...]]]></description>
			<content:encoded><![CDATA[<p>I had the great pleasure of having been tagged by <a title="Web Log di Adrian Florea" href="http://blogs.ugidotnet.org/adrian" target="_blank">Adrian</a>. So&#8230; it&#8217;s my turn:</p>
<p>
<h3>How old were you when you started programming?</h3>
</p>
<p>In 1994, when I was 16 and I was at the high school. But I must say also that at the age of about 10 year a &#8220;played&#8221;  with BASIC on a <a title="Laser 500" href="http://old-computers.com/museum/computer.asp?c=449" target="_blank">Laser 500</a>, something similar to a Commodre 64.</p>
<p>
<h3>How did you get started in programming?</h3>
</p>
<p>&#8230; in those days I learned <a title="Turbo Pascal" href="http://en.wikipedia.org/wiki/Turbo_Pascal" target="_blank">Turbo Pascal</a>, and I used it to solve not too complex math and physics problems.</p>
<p>
<h3>What was your first language?</h3>
</p>
<p>As I said, the very first language was Pascal. But, as a professional, I consider my first language to be Visual Basic 6. It is for sure the language that made me falling in love with programming.</p>
<p>
<h3>What was the first real program you wrote?</h3>
</p>
<p>At the end of a one year programming training I build a RSE &#8211; really simple ERP <img src='http://blog.sharpreflections.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  &#8211; for demo purposes. A WinForm application over an MS Access database. Presentation Layer e Business Logic were mixed up in the Visual Basic 6 forms, but I think here I wrote my first Data Layer.</p>
<p>
<h3>What languages have you used since you started programming?</h3>
</p>
<p>In order Basic, Turno Pascal, C++, Visual Basic 6, Java, PHP, ASP, JavaScript, VB Script, C#, Visual Basic .Net, Python.</p>
<p>
<h3>What was your first professional programming gig?</h3>
</p>
<p>In <a title="we make it." href="http://www.brainforce.it" target="_blank">Brain Force</a>, the company I&#8217;m still working for. 6 years ago.</p>
<p>
<h3>If you knew then what you know now, would you have started programming?</h3>
</p>
<p>I love programming: it consume a lot of resources but gives back a lot of satisfaction. But I would have choosen something else.</p>
<p>
<h3>If there is one thing you learned along the way that you would tell new developers, what would it be?</h3>
</p>
<p>Start from the theory and with the doc. Ever. Ever!! And pay attention to who wrote what you read.</p>
<p>
<h3>What&#8217;s the most fun you&#8217;ve ever had &#8230; programming?</h3>
</p>
<p>An ORM. I&#8217;m really proud of it.</p>
<p>
<h3>Now, let’s tag someone else&#8230;</h3>
</p>
<ul>
<li><a title="Pietro Toniolo" href="http://ptoniolo.wordpress.com/" target="_blank">Pietro</a></li>
<li><a title="Il blog di Marco Fanfoni" href="http://blogs.ugidotnet.org/marcofan" target="_blank">Marco</a></li>
<li><a title="Il blog di Doc Ge" href="http://blogs.ugidotnet.org/alessage" target="_blank">Ale</a></li>
<li><a title="Lanny's blog" href="http://blogs.ugidotnet.org/lanny" target="_blank">Lanny</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2008/07/30/how-i-got-started-in-software-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The final truth about OOP</title>
		<link>http://blog.sharpreflections.net/2008/04/14/the-final-truth-about-object-oriented-programming/</link>
		<comments>http://blog.sharpreflections.net/2008/04/14/the-final-truth-about-object-oriented-programming/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 19:22:31 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Quotes]]></category>
		<category><![CDATA[Software sucks]]></category>

		<guid isPermaLink="false">http://sharpreflections.wordpress.com/?p=104</guid>
		<description><![CDATA[My guess is that object-oriented programming will be in the 1980s what structured programming will be in 1970s. Everyone will be in favor of it. Every manufacturer will promote his products as supporting it. Every manager will pay lip service to it. Every programmer will practice it (differently). And no one will know just what [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>My guess is that object-oriented programming will be in the 1980s what structured programming will be in 1970s. Everyone will be in favor of it. Every manufacturer will promote his products as supporting it. Every manager will pay lip service to it. Every programmer will practice it (differently). And no one will know just what it is.</p></blockquote>
<p><strong>T. Rentsch</strong></p>
<p>The more I read these words, the more I&#8217;m convinced this is one of the more accurate prediction I&#8217;ve heard about in programming. I feel it so&#8230; real.</p>
<p>via Booch, Grady. <em>Object-Oriented Analysis and Design with Applications</em>, Second Edition. Boston: Addison-Wesley, 1993. <a title="on Amazon UK" href="http://www.amazon.co.uk/Object-Oriented-Analysis-Design-Applications/dp/0805353402/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1208200781&amp;sr=1-2" target="_blank">Link</a>.<br />
via West, David. <em>Object Thinking</em>. Redmon: Microsft Press, 2003. <a title="Object Thinking on Amazon UK" href="http://www.amazon.co.uk/Object-Thinking-DV-Microsoft-Professional-West/dp/0735619654/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1208200710&amp;sr=8-1" target="_blank">Link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2008/04/14/the-final-truth-about-object-oriented-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quiz #3</title>
		<link>http://blog.sharpreflections.net/2008/02/27/quiz-3/</link>
		<comments>http://blog.sharpreflections.net/2008/02/27/quiz-3/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 23:05:25 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Quiz]]></category>

		<guid isPermaLink="false">http://sharpreflections.wordpress.com/2008/02/27/quiz-3/</guid>
		<description><![CDATA[Take the following snippet:
public class Foo
{
  // add code
  public static int MethodOne() { return 0; }
  public static string MethodTwo() { return string.Empty; }
}

public class Program
{
  public static void Main()
  {
    try { Foo.MethodOne(); }
    catch (Exception ex) { Console.WriteLine(ex.Message); }

   [...]]]></description>
			<content:encoded><![CDATA[<p>Take the following snippet:</p>
<pre><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Foo
{
  <span style="color:#008000;">// add code</span>
  <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">int</span> MethodOne() { <span style="color:#0000ff;">return</span> 0; }
  <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">string</span> MethodTwo() { <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">string</span>.Empty; }
}

<span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Program
{
  <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">void</span> Main()
  {
    <span style="color:#0000ff;">try</span> { Foo.MethodOne(); }
    <span style="color:#0000ff;">catch</span> (Exception ex) { Console.WriteLine(ex.Message); }

    <span style="color:#0000ff;">try</span> { Foo.MethodTwo(); }
    <span style="color:#0000ff;">catch</span> (Exception ex) { Console.WriteLine(ex.Message); }
  }
}</pre>
<p>and add the code necessary (you cannot modify in any way MethodOne and MethodTwo) to make both method invocation throw an exception.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2008/02/27/quiz-3/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Two Bites Are Better Than One</title>
		<link>http://blog.sharpreflections.net/2008/01/18/two-bites-are-better-than-one/</link>
		<comments>http://blog.sharpreflections.net/2008/01/18/two-bites-are-better-than-one/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 14:17:07 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://sharpreflections.wordpress.com/2008/01/18/two-bites-are-better-than-one/</guid>
		<description><![CDATA[This amazing AD was published in 1978 30 years ago, just one year before I was born. From a technology point of view I&#8217;m a dinosaur&#8230;

Source: 10 Incredible old computer ads.
]]></description>
			<content:encoded><![CDATA[<p>This amazing AD was published in 1978 30 years ago, just one year before I was born. From a technology point of view I&#8217;m a dinosaur&#8230;</p>
<p align="center"><a href="http://blog.sharpreflections.net/wp-content/uploads/2008/01/twobitesarebetterthanone.jpg" title="Two Bites Are Better Than One."><img src="http://blog.sharpreflections.net/wp-content/uploads/2008/01/twobitesarebetterthanone.jpg" alt="Two Bites Are Better Than One." border="0" /></a></p>
<p>Source: <a href="http://www.2spare.com/item_92760.aspx" title="10 Incredible old computer ads" target="_blank">10 Incredible old computer ads</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2008/01/18/two-bites-are-better-than-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shouldn&#8217;t downlaoding be easy?</title>
		<link>http://blog.sharpreflections.net/2007/10/23/shouldnt-downlaoding-be-easy/</link>
		<comments>http://blog.sharpreflections.net/2007/10/23/shouldnt-downlaoding-be-easy/#comments</comments>
		<pubDate>Tue, 23 Oct 2007 00:24:36 +0000</pubDate>
		<dc:creator>matteosp</dc:creator>
				<category><![CDATA[Software rocks]]></category>
		<category><![CDATA[Software sucks]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[donwload manager]]></category>
		<category><![CDATA[FDM]]></category>
		<category><![CDATA[Free Download Manager]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[GetRight]]></category>
		<category><![CDATA[softpedia]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Visual Stdio 2008]]></category>
		<category><![CDATA[VisualVGet]]></category>

		<guid isPermaLink="false">http://sharpreflections.wordpress.com/2007/10/23/shouldnt-downlaoding-be-easy/</guid>
		<description><![CDATA[It&#8217;s 2 days I&#8217;m trying to get Visual Studio 2008 beta 2, a true pain.
Both the two download manager proposed as plug-ins by msdn site (an ActiveX for IE and a Java applet for firefox) don&#8217;t work. From two different computers, so is not my problem. I suspect the reason is the web server replying [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s 2 days I&#8217;m trying to get Visual Studio 2008 beta 2, a true pain.</p>
<p>Both the two download manager proposed as plug-ins by msdn site (an ActiveX for IE and a Java applet for firefox) don&#8217;t work. From two different computers, so is not my problem. I suspect the reason is the web server replying with a 302 HTTP code (temporally moved) to the first request, but I&#8217;m not sure.</p>
<p>Ok, I said to my self. It&#8217;s time to get a download manager. And I started surfing <a target="_blank" href="http://www.softpedia.org" title="softpedia">Softpedia </a>looking for something freeware. The first I tried was <a href="http://visualwget.sourceforge.net/" title="VisualVGet">VisualVGet</a>. The maximum speed I was able to obtain over 12Mbits DSL line was 5Kb/s. I tried to tweak it a little bit, but nothing happened. Uhm&#8230; I need the beta 2 before the final version is released&#8230;</p>
<p>Then I remembered of <a target="_blank" href="http://getright.com/" title="GetRight">GetRight</a>, I used it a lot in the past. Isn&#8217;t free, but the trial period should be enough, I thought. Quickly downloaded and installed. But never been able to use it. The only thing I was able to do was seeing the process getright.exe starting, and shortly terminating. No windows, no alert. No messages in event viewer. A software I will never buy.</p>
<p>Finally, again via <a target="_blank" href="http://www.softpedia.org/" title="Softpedia">Softpedia</a>, I found <a target="_blank" href="http://www.freedownloadmanager.org/" title="Free Download Manager">FDM (Free Download Manager)</a>. That is what a program of this kind should be: easy. I learned to use it in about 30 seconds, configured in 15 and, first of all, downloaded Visual Studio in a couple of hour, having the download speed at 350/400 Kb/s, as expected. And&#8230; if not clear from the name, it&#8217;s free!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sharpreflections.net/2007/10/23/shouldnt-downlaoding-be-easy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
