<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5508793574968174274</id><updated>2011-10-17T17:59:35.550+03:00</updated><category term='C#'/><category term='javascript'/><category term='WCF'/><category term='books'/><category term='Convert Web Site'/><category term='coding'/><category term='Reading List'/><category term='Patterns'/><category term='YUI'/><category term='Mercurial'/><category term='ASP.NET MVC'/><category term='.NET'/><category term='ASP.NET'/><category term='Hello World'/><category term='WinMerge'/><category term='friends'/><title type='text'>A Humble Geek Wannabe</title><subtitle type='html'>"The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague." - Edsger W.Dijkstra</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-1785175517516221214</id><published>2010-06-04T12:00:00.002+03:00</published><updated>2010-06-04T12:12:41.110+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WinMerge'/><category scheme='http://www.blogger.com/atom/ns#' term='Mercurial'/><title type='text'>How to Use WinMerge as the Diff tool for Mercurial</title><content type='html'>Here is how you can setup TortoiseHg to use WinMerge for visual diffs and 3-way merges (instead of using KDiff):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open Mercurial.ini config file. On my WIN7 system, this file exists at C:\Users\MyUser\Mercurial.ini. If you are on an XP system, it's probably in C:\Documents and Settings\&amp;lt;your user name&amp;gt;\Mercurial.ini. &lt;/li&gt;&lt;li&gt;Add the following lines:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6fa8dc;"&gt; [extdiff]&lt;br /&gt;cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe&lt;br /&gt;opts.winmerge = /e /x /ub /wl&lt;br /&gt;&lt;br /&gt;[merge-tools]&lt;br /&gt;winmergeu.executable = C:\Program Files (x86)\WinMerge\WinMergeU.exe&lt;br /&gt;winmergeu.priority= 1&lt;br /&gt;winmergeu.fixeol=True&lt;br /&gt;winmergeu.checkchanged=True&lt;br /&gt;winmergeu.args= /e /ub /dl other /dr local $other $local $output&lt;br /&gt;winmergeu.gui=False&lt;br /&gt;winmergeu.binary=True&lt;br /&gt;&lt;br /&gt;[tortoisehg]&lt;br /&gt;vdiff = winmerge&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;Now run TortoiseHg's Global Settings tool. On the TortoiseHg tab, select &lt;b&gt;winmerge&lt;/b&gt; for the Visual Diff Command, and &lt;b&gt;winmergeu&lt;/b&gt; for the Three-way Merge Tool options, apply, close. &lt;/li&gt;&lt;/ol&gt;Sources:&lt;br /&gt;&lt;a href="http://superuser.com/questions/23576/how-to-use-winmerge-as-the-diff-tool-for-mercurial"&gt;http://superuser.com/questions/23576/how-to-use-winmerge-as-the-diff-tool-for-mercurial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/2073543/use-winmerge-as-tortoisehg-merge-tool"&gt;http://stackoverflow.com/questions/2073543/use-winmerge-as-tortoisehg-merge-tool&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-1785175517516221214?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/1785175517516221214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=1785175517516221214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1785175517516221214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1785175517516221214'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2010/06/how-to-use-winmerge-as-diff-tool-for.html' title='How to Use WinMerge as the Diff tool for Mercurial'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-1707084776347110693</id><published>2010-04-27T20:50:00.001+03:00</published><updated>2010-04-27T20:58:45.451+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Add binary serialization to a WCF webservice using UsernameOverTransport security</title><content type='html'>&lt;p&gt;In order to enable this we have to add a new binding to our service and specify which endpoint to use. Add the following binding to the bindings section in the web.config on the service and client side:&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red64\green196\blue255;\red16\green26\blue38;\red237\green218\blue192;\red255\green128\blue255;}??\fs24 \cf1\cb2\highlight2 &amp;lt;customBinding&amp;gt;\par ??        &amp;lt;binding \cf3 name\cf1 =\cf4 "binaryHttpBinding"\cf1 &amp;gt;\par ??          &amp;lt;security \cf3 authenticationMode\cf1 =\cf4 "UserNameOverTransport"\cf1  \cf3 requireSecurityContextCancellation\cf1 =\cf4 "true"\cf1  &amp;gt;\par ??            &amp;lt;secureConversationBootstrap \cf3 authenticationMode\cf1 =\cf4 "UserNameForSslNegotiated"\cf1  /&amp;gt;\par ??          &amp;lt;/security&amp;gt;          \par ??          &amp;lt;binaryMessageEncoding \cf3 maxReadPoolSize\cf1 =\cf4 "2147483647"\cf1  \cf3 maxSessionSize\cf1 =\cf4 "2147483647"\cf1  \cf3 maxWritePoolSize\cf1 =\cf4 "2147483647"\cf1 &amp;gt;\par ??            &amp;lt;readerQuotas \cf3 maxDepth\cf1 =\cf4 "32"\cf1  \cf3 maxStringContentLength\cf1 =\cf4 "5242880"\par ??\cf1             \cf3 maxArrayLength\cf1 =\cf4 "200000"\cf1  \cf3 maxBytesPerRead\cf1 =\cf4 "4096"\cf1  \cf3 maxNameTableCharCount\cf1 =\cf4 "16384"\cf1  /&amp;gt;\par ??          &amp;lt;/binaryMessageEncoding&amp;gt;          \par ??          &amp;lt;httpsTransport \cf3 maxBufferPoolSize\cf1 =\cf4 "2147483647"\cf1  \cf3 maxBufferSize\cf1 =\cf4 "2147483647"\cf1  \cf3 maxReceivedMessageSize\cf1 =\cf4 "2147483647"\cf1 &amp;gt;&amp;lt;/httpsTransport&amp;gt;          \par ??        &amp;lt;/binding&amp;gt;        \par ??      &amp;lt;/customBinding&amp;gt;}&lt;br /&gt;--&gt;  &lt;div style="font-family: consolas; background: #101a26; color: #e0e0e0; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;lt;customBinding&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;binding &lt;/span&gt;&lt;span style="color: #eddac0"&gt;name&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;binaryHttpBinding&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;security &lt;/span&gt;&lt;span style="color: #eddac0"&gt;authenticationMode&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;UserNameOverTransport&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;requireSecurityContextCancellation&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;secureConversationBootstrap &lt;/span&gt;&lt;span style="color: #eddac0"&gt;authenticationMode&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;UserNameForSslNegotiated&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/security&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;binaryMessageEncoding &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxReadPoolSize&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxSessionSize&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxWritePoolSize&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;readerQuotas &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxDepth&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;32&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxStringContentLength&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;5242880&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxArrayLength&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;200000&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxBytesPerRead&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;4096&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxNameTableCharCount&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;16384&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/binaryMessageEncoding&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;httpsTransport &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxBufferPoolSize&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxBufferSize&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;maxReceivedMessageSize&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;2147483647&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;&amp;gt;&amp;lt;/httpsTransport&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/binding&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/customBinding&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Specify an endpoint for it like this, and you are ready to go:&lt;/p&gt; &lt;!--&lt;br /&gt;{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red64\green196\blue255;\red16\green26\blue38;\red237\green218\blue192;\red255\green128\blue255;}??\fs24 \cf1\cb2\highlight2 &amp;lt;endpoint \cf3 address\cf1 =\cf4 ""\cf1  \cf3 binding\cf1 =\cf4 "customBinding"\cf1  \cf3 bindingConfiguration\cf1 =\cf4 "binaryHttpBinding"\cf1  \cf3 contract\cf1 =\cf4 "ManufacturingAPI.QuotingAPILibrary.IQuotingService"\cf1  /&amp;gt;     }&lt;br /&gt;--&gt;  &lt;div style="font-family: consolas; background: #101a26; color: #e0e0e0; font-size: 12pt"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #40c4ff"&gt;&amp;lt;endpoint &lt;/span&gt;&lt;span style="color: #eddac0"&gt;address&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;binding&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;customBinding&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;binaryHttpBinding&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; &lt;/span&gt;&lt;span style="color: #eddac0"&gt;contract&lt;/span&gt;&lt;span style="color: #40c4ff"&gt;=&lt;/span&gt;&lt;span style="color: #ff80ff"&gt;&amp;quot;ServiceLibrary.MyService&amp;quot;&lt;/span&gt;&lt;span style="color: #40c4ff"&gt; /&amp;gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Hope this helps, I searched a while for the solution and it wasn't on the web. &lt;/p&gt;  &lt;p&gt;Starting to love this WCF thingy :) &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-1707084776347110693?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/1707084776347110693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=1707084776347110693' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1707084776347110693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1707084776347110693'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2010/04/add-binary-serialization-to-wcf.html' title='Add binary serialization to a WCF webservice using UsernameOverTransport security'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-2892425605758833132</id><published>2010-03-20T01:14:00.005+02:00</published><updated>2010-03-27T17:13:24.333+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>How to properly close WCF connections</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Seems that reading &lt;a href="http://www.infoq.com/"&gt;InfoQ&lt;/a&gt; is really a good thing, even though the content related to .NET is pretty weak, it has really good content on Architecture and Languages.While doing the weekly swoop I stumbled across &lt;a href="http://www.infoq.com/news/2009/03/WCF-Dispose"&gt;this&lt;/a&gt; article which triggered the alarm/sleepy memory in my head. The not so funny thing is that just last week I implemented the Dispose pattern for some WCF connections to a web service,&amp;nbsp; because I’m a programmer and programmers are lazy, and lazy means less code to do more, which kind of forces you to use the Dispose pattern and the “using" statement to automatically close your connections.     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If you don’t have the time to read the article and the references, the summary is that using the Dispose pattern is a bad practice for WCF connections, because well, someone at MSFT screwed up the design and ICommunicationObject.Close() throws a bunch of exceptions, which goes against the specifications for IDisposable which should NEVER throw an exception on Dispose(). So let’s see what code I have before:&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #101a26; color: #e0e0e0; font-family: Consolas; font-size: 12pt;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #40c4ff;"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;partial&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;class&lt;/span&gt; &lt;span style="color: cyan;"&gt;IFooServiceClient&lt;/span&gt; : &lt;span style="color: cyan;"&gt;IDisposable&lt;/span&gt;&lt;br /&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;void&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;Dispose&lt;/span&gt;()&lt;br /&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;Close&lt;/span&gt;();&lt;br /&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This is not good code, but not really bad either as long as Close doesn’t throw, which does, so slap in the face and let’s fix this. Someone proposed something like this which make things worse:&lt;br /&gt;&lt;div style="background: #101a26; color: #e0e0e0; font-family: Consolas; font-size: 12pt;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #40c4ff;"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;partial&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;class&lt;/span&gt; &lt;span style="color: cyan;"&gt;IFooServiceClient&lt;/span&gt; : &lt;span style="color: cyan;"&gt;IDisposable&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;public&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;void&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;Dispose&lt;/span&gt;()&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;try&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;Close&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;catch&lt;/span&gt; (&lt;span style="color: cyan;"&gt;Exception&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;if&lt;/span&gt; (&lt;span style="color: #eddac0;"&gt;State&lt;/span&gt; &lt;span style="color: silver;"&gt;==&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;CommunicationState&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Opened&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;Close&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;Abort&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: #1d2f45; background-image: initial; background-origin: initial; color: #adadad;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This is bad because you lose the exception context and this has the possibility to deadlock as well, checking the channel state is an anti pattern as well. This is the solution I came up with:&lt;br /&gt;&lt;div style="background: #101a26; color: #e0e0e0; font-family: Consolas; font-size: 12pt;"&gt;&lt;span style="color: #40c4ff;"&gt;class&lt;/span&gt; &lt;span style="color: cyan;"&gt;IFooServiceClientHelper&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;internal&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;T&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;CallServiceMethod&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;T&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #eddac0;"&gt;ICommunicationObject&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;, &amp;nbsp; &amp;nbsp;&lt;span style="color: yellow;"&gt;Func&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;T&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;serviceMethod&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;T&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;returnedInstance&lt;/span&gt; &lt;span style="color: silver;"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;default&lt;/span&gt;(&lt;span style="color: #eddac0;"&gt;T&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;try&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;returnedInstance&lt;/span&gt; &lt;span style="color: silver;"&gt;=&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;serviceMethod&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Close&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;catch&lt;/span&gt; (&lt;span style="color: #eddac0;"&gt;FaultException&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;IFooServiceFault&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;iof&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Abort&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;IFooServiceException&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"Executing"&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;serviceMethod&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Method&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Name&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #ff80ff;"&gt;" has failed."&lt;/span&gt;, &lt;span style="color: #eddac0;"&gt;iof&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;catch&lt;/span&gt; (&lt;span style="color: #eddac0;"&gt;CommunicationException&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Abort&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;IFooServiceConnectionException&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"There was a communication problem. "&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Message&lt;/span&gt;, &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;catch&lt;/span&gt; (&lt;span style="color: cyan;"&gt;TimeoutException&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Abort&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;IFooServiceConnectionException&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"The service operation timed out. "&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Message&lt;/span&gt;, &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;catch&lt;/span&gt; (&lt;span style="color: #eddac0;"&gt;InvalidMessageContractException&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Abort&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;IFooServiceConnectionException&lt;/span&gt;(&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff80ff;"&gt;"The DataContract for the web service is not up-to-date. "&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Message&lt;/span&gt;, &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;catch&lt;/span&gt; (&lt;span style="color: cyan;"&gt;Exception&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Abort&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;throw&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;IFooServiceException&lt;/span&gt;(&lt;span style="color: #ff80ff;"&gt;"Executing"&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;serviceMethod&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Method&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Name&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #ff80ff;"&gt;" has failed."&lt;/span&gt; &lt;span style="color: silver;"&gt;+&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Message&lt;/span&gt;, &lt;span style="color: #eddac0;"&gt;e&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;return&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;returnedInstance&lt;/span&gt;;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;This helper method has multiple overloads in order to call Func with parameters but the idea is the same. Calling this is pretty easy:&lt;br /&gt;&lt;div style="background: #101a26; color: #e0e0e0; font-family: Consolas; font-size: 12pt;"&gt;&lt;span style="color: #40c4ff;"&gt;public&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;Foo&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;GetFoo&lt;/span&gt;()&lt;br /&gt;&lt;div style="margin: 0px;"&gt;{&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;var&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt; &lt;span style="color: silver;"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;FooServiceClient&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #eddac0;"&gt;var&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;serviceHelper&lt;/span&gt; &lt;span style="color: silver;"&gt;=&lt;/span&gt; &lt;span style="color: #40c4ff;"&gt;new&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;FooServiceHelper&lt;/span&gt;();&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #40c4ff;"&gt;return&lt;/span&gt; &lt;span style="color: #eddac0;"&gt;serviceHelper&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;CallServiceMethod&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;Foo&lt;/span&gt;&lt;span style="color: silver;"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;, &lt;span style="color: #eddac0;"&gt;service&lt;/span&gt;&lt;span style="color: silver;"&gt;.&lt;/span&gt;&lt;span style="color: #eddac0;"&gt;GetFoo&lt;/span&gt;);&lt;/div&gt;&lt;div style="margin: 0px;"&gt;}&lt;/div&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;This is better than we had before, but maybe I can improve this more. Any ideas?&amp;nbsp; &lt;br /&gt;Develop with passion,&amp;nbsp;&lt;br /&gt;Adrian&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-2892425605758833132?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/2892425605758833132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=2892425605758833132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/2892425605758833132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/2892425605758833132'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2010/03/how-to-properly-close-wcf-connections.html' title='How to properly close WCF connections'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-8075499122856013932</id><published>2010-01-27T23:18:00.003+02:00</published><updated>2010-01-28T12:42:02.968+02:00</updated><title type='text'>IPad</title><content type='html'>&amp;nbsp;&amp;nbsp; &amp;nbsp; Today Apple &lt;a href="http://www.youtube.com/watch?v=9eVCFXxgn2M"&gt;announced&lt;/a&gt; their next offering: &lt;a href="http://www.apple.com/ipad/"&gt;IPad&lt;/a&gt;. From what it seems, this is going to be the real competitor to Kindle DX, and Amazon even has to do some catch-up in a field which until now they were leading.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; The IPad has some serious &lt;a href="http://createdigitalmusic.com/2010/01/27/how-a-great-product-can-be-bad-news-apple-ipad-and-the-closed-mac/"&gt;downsides&lt;/a&gt;, &amp;nbsp;maybe the best outcome is Amazon releasing a cheaper/better Kindle soon?&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; IPad is interesting, but I still favor a netbook/PC + e-Reader, a lot more openness and possibilities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-8075499122856013932?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/8075499122856013932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=8075499122856013932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/8075499122856013932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/8075499122856013932'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2010/01/ipad.html' title='IPad'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-1635807997407964939</id><published>2010-01-24T23:18:00.000+02:00</published><updated>2010-01-24T23:18:43.109+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>Building my own website</title><content type='html'>&amp;nbsp;&amp;nbsp; &amp;nbsp;I've started to read&amp;nbsp;&lt;a href="http://www.amazon.com/gp/product/0470384611?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470384611"&gt;Professional ASP.NET MVC 1.0&lt;/a&gt;&amp;nbsp;, the first chapter is &lt;a href="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf"&gt;free&lt;/a&gt;. After working with Web Forms for a short period (a year and a half) the MVC framework seems like a breeze of fresh air. I don't really understand the whole debate on Web Forms vs. MVC, it's pretty clear which one is cleaner, more robust and easy to use. And no, the lack of controls is not a minus, the web is based on HTML and&amp;nbsp;JavaScript&amp;nbsp;served through HTTP, then why bury all those inside a bunch of web controls when we can use HTML directly?&lt;br /&gt;&amp;nbsp;&amp;nbsp; Giving the fact that at work I will continue working with Web Forms for the next year I think, I need to start some home project to learn Asp.Net MVC. I'm thinking for some time at creating my own website, so this seems to be a great opportunity to do something useful while learning. I know that there are a bunch of blogging engines for .NET, but I think I will do it from scratch anyway.&lt;br /&gt;&amp;nbsp;&amp;nbsp; I wonder how soon I will have something usable...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-1635807997407964939?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/1635807997407964939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=1635807997407964939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1635807997407964939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1635807997407964939'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2010/01/building-my-own-website.html' title='Building my own website'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-8439533318631907440</id><published>2009-09-28T16:12:00.002+03:00</published><updated>2009-09-28T16:18:20.155+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Books</title><content type='html'>&amp;nbsp;&amp;nbsp; &amp;nbsp;Not sure how, but this year I managed to have enough time to read a couple of books:&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://www.amazon.com/Test-Driven-Development-Addison-Wesley-Signature/dp/0321146530"&gt;Test Driven Development by Example&lt;/a&gt;&amp;nbsp;- this is a great introductory book for TDD, what I enjoyed the most about it was the easy writing style and the small jokes&amp;nbsp;throughout&amp;nbsp;the book, see the comment regarding Singleton pattern :) Reading this book made me feel that I can somehow absorb author's knowledge and experience about code quality and design even if this wasn't the main purpose of the book.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Technology/dp/0201485672/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221423427&amp;amp;sr=1-1"&gt;Refactoring: Improving the design of existing code&lt;/a&gt;&amp;nbsp;- well, this is the best book related to programming I've read so far, a book which I will reread each year. The 4th chapter, related to Code Smells is really great and succeeds at naming almost all smells found in a bad code. Reading this book you realize how many times you sort of felt that the code is "smelling", but you didn't know how to make it clean and how to tackle the problem. This is a must read for every programmer, I guarantee that it will change how you look at coding.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052/ref=pd_sim_b_3/176-6252435-2706728"&gt;Working Effectively with Legacy Code&lt;/a&gt;&amp;nbsp;- a great book by Michael Feathers, sort of complementary to Refactoring by Fowler. This book is about "safe"&amp;nbsp;refactoring s, how can you find the sensing points &amp;nbsp;and how to introduce tests in a legacy code base. Giving the fact that 80-90% of the time we are working with a legacy code base, sometimes we even write "legacy code", this is a must read for every programmer, at least once :)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=pd_sim_b_7"&gt;Clean Code&lt;/a&gt;&amp;nbsp;&amp;nbsp;- great book by Uncle Bob, this contains his&amp;nbsp;amendments about how clean code should look like. Even if you don't have to agree with him on all of his rules, certainly our lives would be much easier if all the programmers would follow 80-90% of the rules. Giving the fact that the definition for "clean code" is not set in stone yet, the most important thing is to try create clean and beautiful code, code that we will be proud of or at least not&amp;nbsp;embarrassed&amp;nbsp;in the future :)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; This list contains only the books I managed finishing, seems that I'm really good at reading books half-way, I have 4 or 5 books waiting to be finished, but that is not gonna happen soon :)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; I've started reading&amp;nbsp;&lt;a href="http://www.amazon.com/Coders-at-Work-Peter-Seibel/dp/1430219483/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1254143015&amp;amp;sr=1-1"&gt;Coders at Work&lt;/a&gt;, this is a really good book, managed to read the first 4 chapters in a couple of hours, recommended for all programmers interested about how great programmers work and think. This is great for boosting motivation and morale :)&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Read and Code with Passion,&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Adrian&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-8439533318631907440?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/8439533318631907440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=8439533318631907440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/8439533318631907440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/8439533318631907440'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/09/books.html' title='Books'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-7712294231408815623</id><published>2009-09-28T13:37:00.005+03:00</published><updated>2010-03-27T17:08:53.585+02:00</updated><title type='text'>Crazy year</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp; Looking back at the last couple of months I realized that this was indeed a crazy year:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; we found that we are going to have a daughter&lt;/li&gt;&lt;li&gt; we decided to buy our first house even if the economics are crazy&lt;/li&gt;&lt;li&gt; decided that I want a safer job and acted accordingly&lt;/li&gt;&lt;li&gt; decided that safe jobs are not for me and acted accordingly &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I left my previous job because I wanted somenthing stable for the next period when our daughter will be born, but found rather quickly that "safe" and "stable" means boring, and boring definitely is not for me.&lt;br /&gt;&amp;nbsp;&amp;nbsp; Given this I decided to return to work for Macadamian, which was the company I really enjoyed working for, great people and interesting projects.&lt;br /&gt;&amp;nbsp;&amp;nbsp; It's not easy to recognize that you don't like boring jobs, but I read an article which made me decide what to do, this is a  quote form it:&lt;br /&gt;&lt;blockquote&gt;"If you find yourself stuck in a place that’s killing your innate passion for technology, by all means, move the hell on!" - Gustavo Duarte&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I hope that JP won't be mad by stoling his line, but you should really "Develop with Passion".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-7712294231408815623?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/7712294231408815623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=7712294231408815623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/7712294231408815623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/7712294231408815623'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/09/crazy-year.html' title='Crazy year'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-2958112895771236157</id><published>2009-06-18T11:37:00.005+03:00</published><updated>2010-02-21T12:49:30.318+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Why hero coding is bad</title><content type='html'>&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Seems that hero coders are a breed not really respected by their peers, but pretty loved by the project managers... Why? Well, because they are the ones called to save the day when the s..t hits the fan but they are dark and grumpy with their colleagues(this is not always true... :) ).  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; We all want to be(come) those mythical geeks that by raising their eyebrows are inverting the bits create monumental masterpieces which makes the world tremble, but unfortunately hero coding is not the answer, at least not for me. Hero coding is more like a drug for programmers, which once tasted is hard to give up on, it's like a drug because we have our big egos and who doesn't want to feel irreplaceable and important to the people around them, to be the ones called to pull insane amount of time and work for that ugly feature never finished and always late?  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; As a geek wannabe, hero coding seems to be the answer for quickly becoming a good and respected developer but after doing it for a couple of months and being forced to stop for a couple of weeks, looking back at what I achieved in that time doesn't look too good, and this is not because programming 16 hours a day is not cool, but because hero coding favors an environment in which some important things are lost: code quality, self esteem, each short-cut looks appealing and you quickly forgot things which are important for you: &lt;a href="http://www.codinghorror.com/blog/archives/000530.html"&gt;sucking less each year&lt;/a&gt; , improve your skills and be near the ones you love.  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Hero coding is followed by a pretty ugly &lt;a href="http://blog.another-d-mention.ro/misc/burnout/"&gt;burnout&lt;/a&gt; period, which is quite depressing...  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; By writing this, does it mean that I'm an uber geek programmer shouting his ego? No, it means that I acknowledge that I have a problem and I must get rid of it...  &lt;br /&gt;Until next time, be good...  &lt;br /&gt;  &lt;br /&gt;P.S. &amp;quot;Hi, my name is Adrian and I'm a hero coding addict...&amp;quot;    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-2958112895771236157?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/2958112895771236157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=2958112895771236157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/2958112895771236157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/2958112895771236157'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/06/why-hero-coding-is-bad.html' title='Why hero coding is bad'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-4855285391832391015</id><published>2009-06-03T00:13:00.004+03:00</published><updated>2009-06-03T00:21:27.519+03:00</updated><title type='text'>Google did it again</title><content type='html'>Well, right now I'm quite speachless, the inovation brought by google with &lt;a href="http://wave.google.com/"&gt;Google Wave&lt;/a&gt; is astonishing.&lt;div&gt;     If you don't have a clue what I'm talking about, watch &lt;a href="http://www.youtube.com/watch?v=v_UyVmITiYQ"&gt;this&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you see me walking around in circles, probably I'm searching for the wave...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-4855285391832391015?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/4855285391832391015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=4855285391832391015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/4855285391832391015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/4855285391832391015'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/06/google-did-it-again.html' title='Google did it again'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-8806775214612285466</id><published>2009-04-17T12:59:00.003+03:00</published><updated>2009-07-05T17:17:11.394+03:00</updated><title type='text'>Spawning a new process</title><content type='html'>&lt;p&gt;   &lt;p&gt;     &lt;div align="left"&gt;       &lt;p&gt;After a lot of planning and applying all sorts of design patterns, we finally got it right. We are proud to announce that a new process is going to be spawned somewhere around mid October. Until then I’ll show you a demo of her in all it’s glory.&lt;/p&gt;     &lt;/div&gt;   &lt;/p&gt; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="122"&gt;&lt;a href="http://lh3.ggpht.com/_5pOI7VfajPY/SehTDAt-uiI/AAAAAAAABqo/0EIyfTIagNA/s1600-h/bebe%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="bebe" border="0" alt="bebe" src="http://lh4.ggpht.com/_5pOI7VfajPY/SehTDqg54gI/AAAAAAAABqs/le87jheASuI/bebe_thumb.png?imgmax=800" width="99" height="244" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="278"&gt;I will do my best to make an uber geek from her… :)          &lt;br /&gt;Welcome to this world my daughter and I’m already proud of you.          &lt;br /&gt;Now I will go and buy a shotgun to keep all the boys away :)          &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-8806775214612285466?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/8806775214612285466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=8806775214612285466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/8806775214612285466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/8806775214612285466'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/04/spawning-new-process.html' title='Spawning a new process'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_5pOI7VfajPY/SehTDqg54gI/AAAAAAAABqs/le87jheASuI/s72-c/bebe_thumb.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-1247337940271098369</id><published>2009-02-09T23:12:00.005+02:00</published><updated>2009-09-28T16:16:02.878+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='YUI'/><title type='text'>YUI Library</title><content type='html'>&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;I spent the last two weeks working with Yahoo User Interface Library, better said with the Datatable control. After having nightmares with the Win Forms version, I was pretty scared about it, but even if the learning curve is high, the library is nice and it integrates nicely with jQuery and Ajax Pro.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; I strongly recomend it to all web developers, especially to the ones not afraid of some javascript hacking :)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; I hope to have some free time this month to play a little more with this :)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Happy coding and tinkering,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Adrian&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-1247337940271098369?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/1247337940271098369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=1247337940271098369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1247337940271098369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1247337940271098369'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/02/yui-library.html' title='YUI Library'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-1239489943547612849</id><published>2009-02-09T23:07:00.005+02:00</published><updated>2009-02-10T10:16:10.202+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='friends'/><title type='text'>Romacadamians ++</title><content type='html'>A good friend is coming back tomorrow to work for &lt;a href="http://macadamian.com" target="_blank"&gt;Macadamian&lt;/a&gt;.  &lt;br /&gt;Way to go Macadamian and welcome back &lt;a href="http://beeci.wordpress.com/" target="_blank"&gt;Bela&lt;/a&gt; :).    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-1239489943547612849?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/1239489943547612849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=1239489943547612849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1239489943547612849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1239489943547612849'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2009/02/romacadamians.html' title='Romacadamians ++'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-562514843735918402</id><published>2008-10-21T16:28:00.006+03:00</published><updated>2008-10-21T17:35:12.339+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Convert Web Site'/><title type='text'>The pain of converting an ASP web site to a web application</title><content type='html'>&lt;div align="left"&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft confused a lot of people when they changed the solution type for web sites in VS2005. After this they realized that this was nowhere near perfection so they reintroduced the web application model (the one which have the solution file) in VS2005 SP1 and VS2008.&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The problem this caused is that in certain situations we must convert some legacy sites from the web site model to the web application one. There already &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa983476%28VS.80%29.aspx"&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;exists&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt; a pretty good tutorial for this, but it's minimizing some pretty important steps.&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If you need to convert a web site to the web application model you must be really careful with the step in which you add the required namespaces. First of all, this will take a while depending on the size of the site, secondly it creates some issues not easily found at first:&lt;/span&gt;&lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;If you have Register directives like this one:&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div&gt;&lt;font color="#0080ff"&gt;&amp;lt;%@ Register Namespace=&amp;quot;FancyControls&amp;quot; TagPrefix=&amp;quot;cc1&amp;quot; %&amp;gt;&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;you will need to add&amp;#160; the assembly property:&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;&lt;font color="#0080ff"&gt;&amp;lt;%@ Register Namespace=&amp;quot;FancyControls&amp;quot; TagPrefix=&amp;quot;cc1&amp;quot;&lt;/font&gt; &lt;font color="#ff0000"&gt;Assembly=&amp;quot;SiteControls&amp;quot;&lt;/font&gt; &lt;font color="#0080ff"&gt;%&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;otherwise your controls won't be recognized and you will get &amp;quot;Element not known error&amp;quot; message.&lt;/span&gt;&lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;You must update the javascript code which is calling Ajax methods in order to add the required namespaces.&lt;/span&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;This process is pretty painful, I will update this post if other issues pop-up.&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;     &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana"&gt;Good luck at converting.&lt;/span&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-562514843735918402?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/562514843735918402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=562514843735918402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/562514843735918402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/562514843735918402'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2008/10/pain-of-converting-asp-web-site-to-web.html' title='The pain of converting an ASP web site to a web application'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-1295292909842693934</id><published>2008-09-12T10:23:00.007+03:00</published><updated>2009-06-03T00:31:00.542+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reading List'/><category scheme='http://www.blogger.com/atom/ns#' term='Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Reading List</title><content type='html'>With so much information around is pretty hard to stay focused and concentrate on what you are studying, at least I'm affected by this :(&lt;div&gt;In order to solve this, the following reading list I hope will help me stay focused :)&lt;/div&gt;&lt;div&gt;Some of them are already read, but it will be good if I will read them again from time to time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So here it goes:&lt;/div&gt;&lt;div&gt;1. &lt;a href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221204488&amp;amp;sr=1-1"&gt;CLR via C#&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2. &lt;a href="http://www.amazon.com/C-Depth-What-need-master/dp/1933988363/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221204688&amp;amp;sr=1-1"&gt;C# In Depth&lt;/a&gt;&lt;/div&gt;&lt;div&gt;3. &lt;a href="http://www.amazon.com/Head-First-Design-Patterns/dp/0596007124/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221204626&amp;amp;sr=1-1"&gt;Head First Design Patterns&lt;/a&gt;&lt;/div&gt;&lt;div&gt;4. &lt;a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221204819&amp;amp;sr=1-1"&gt;Code Complete&lt;/a&gt;&lt;/div&gt;&lt;div&gt;5. &lt;a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=pd_sim_b_1"&gt;Pragmatic Programmer&lt;/a&gt;&lt;/div&gt;&lt;div&gt;6. &lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=pd_sim_b_4"&gt;The Mythical Man Month&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://www.amazon.com/3-0-Nutshell-Desktop-Reference-OReilly/dp/0596527578/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221423340&amp;amp;sr=1-1"&gt;C# 3.0 in a Nutshell&lt;/a&gt;&lt;br /&gt;8. &lt;a href="http://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Technology/dp/0201485672/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221423427&amp;amp;sr=1-1"&gt;Refactoring&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9. &lt;a href="http://www.amazon.com/Test-Driven-Development-Addison-Wesley-Signature/dp/0321146530"&gt;Test Driven Development By Example&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More to come.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy reading.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-1295292909842693934?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/1295292909842693934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=1295292909842693934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1295292909842693934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/1295292909842693934'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2008/09/reading-list.html' title='Reading List'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5508793574968174274.post-5152562216861389385</id><published>2008-09-12T10:10:00.008+03:00</published><updated>2008-09-14T23:32:19.560+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hello World'/><title type='text'>Hello World</title><content type='html'>This seems to be my first blog post... I hope there would be more in the future :).&lt;div&gt;What can you expect to find in this blog: related and unrelated posts about programming, operating systems, games, book reviews, some thoughts about me and what not :).&lt;br /&gt;Currently I'm a software developer at Macadamian Romania, learning the nuts and bolts about software construction and trying to improve myself.&lt;br /&gt;The word says that you learn a lot by blogging, so here I am, trying new ways to learn and add my contribution to this live thing called internet.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy the ride and happy coding.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5508793574968174274-5152562216861389385?l=ahumblegeek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ahumblegeek.blogspot.com/feeds/5152562216861389385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5508793574968174274&amp;postID=5152562216861389385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/5152562216861389385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5508793574968174274/posts/default/5152562216861389385'/><link rel='alternate' type='text/html' href='http://ahumblegeek.blogspot.com/2008/09/hello-world.html' title='Hello World'/><author><name>Adrian Magdas</name><uri>http://www.blogger.com/profile/15097088176046695683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
