<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A04GQXw6cCp7ImA9WhRbEUs.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000</id><updated>2012-02-02T10:05:20.218+02:00</updated><category term="C#" /><category term="LINQ" /><category term="Usability" /><category term="PowerShell" /><category term="Architecture" /><category term="General" /><category term="Database" /><category term="Linux" /><category term="EDC" /><category term="Deployment" /><category term="MDC" /><category term="SharePoint" /><category term="Design" /><category term="Ajax" /><category term="Entity Framework" /><category term="Web" /><category term="ASP.NET" /><title>For Love of Software</title><subtitle type="html">Hesham A. Amin's blog about his love..Software</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://forloveofsoftware.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ForLoveOfSoftware" /><feedburner:info uri="forloveofsoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0YEQn07cCp7ImA9WhRWFEg.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-8414255731735985762</id><published>2012-01-02T01:04:00.000+02:00</published><updated>2012-01-02T01:05:03.308+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-02T01:05:03.308+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Articles I read in 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Welcome 2012 !!&lt;br /&gt;
As usual, I'm interested in sharing articles I read during the past year, hopefully you'll find something useful in it.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: 85%; font-style: italic;"&gt;2010's list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2010/01/articles-i-read-in-2010.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 85%; font-style: italic;"&gt;2009's list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2010/01/articles-i-read-in-2009.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 85%; font-style: italic;"&gt;2008's list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2008/02/articles-i-read-in-2008.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%; font-style: italic;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 85%; font-style: italic;"&gt;2007's list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2007/02/list-of-articles-i-read-on-2007.html"&gt;here&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.wekeroad.com/microsoft/hey-kid-come-over-here"&gt;OK Seriously What Is BizSpark?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mercurynews.com/business/ci_16930409?nclick_check=1"&gt;O'Brien: 11 Predictions for 2011, including Google buys Twitter, Yahoo axes Bartz and Facebook hits the billion mark&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2010/12/24/common-mistakes-as-web-developer/"&gt;Common Mistakes as Python Web Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2010/12/5/not-so-stupid-template-languages/"&gt;Not So Stupid Template Languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2009/7/24/singletons-and-their-problems-in-python/"&gt;Singletons and their Problems in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2007/6/11/why-python-sucks/"&gt;Why Python Sucks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2009/1/8/the-sad-state-of-mysql-python/"&gt;The Sad State of MySQL Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2009/8/5/pro-cons-about-werkzeug-webob-and-django/"&gt;Pro/Cons about Werkzeug, WebOb and Django&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.benstrong.com/2010/11/google-and-microsoft-cheat-on-slow.html"&gt;Google and Microsoft Cheat on Slow-Start. Should You?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jcooney.net/post/2010/06/06/The-sad-%28but-inevitable%29-state-of-NET-Obfuscation.aspx"&gt;The sad (but inevitable) state of .NET Obfuscation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.zdnet.com/blog/education/top-10-ed-tech-predictions-for-2011/4382?tag=mantle_skin;content"&gt;Top 10 Ed Tech predictions for 2011&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/DevX/Article/46214?trk=DXRSS_"&gt;Top 10 SEO Tips for New Websites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.zdnet.com/blog/service-oriented/rise-of-sfa-the-server-free-architecture/5992"&gt;Rise of SFA, the 'server-free architecture'&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/article.php/c18261"&gt;10 Ways LINQ Can Improve Your C# Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sivers.org/obvious"&gt;Obvious to you. Amazing to others.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sahillavingia.com/blog/faking-it/"&gt;Faking it.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/wireless/Article/46218?trk=DXRSS_"&gt;Will Salesforce's Database.com Shake Up the World of Cloud-based Databases?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cplusplus-soup.com/2010/11/22/life-after-oop/"&gt;Life After OOP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeguru.com/whitepapers/article.php/c18267"&gt;Developer Tip: SEO Tools To Calculate And Observe Competitor Traffic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeguru.com/cpp/article.php/c18031"&gt;C++ Tutorial: Enhance Type Safety and Code Clarity with the nullptr Keyword&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.greebo.net/2010/10/08/sdl-good-taosecurity-bad/"&gt;In defense of Microsoft’s SDL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.instantshift.com/2011/01/10/20-bad-habits-of-new-bloggers/"&gt;20 Bad Habits of New Bloggers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://petewarden.typepad.com/searchbrowser/2010/01/mapreduce-for-idiots.html"&gt;MapReduce for Idiots&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/Tips/143060/Supporting-Development-and-Release-web-config-in-A.aspx"&gt;Supporting Development and Release web.config in ASP.NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://royal.pingdom.com/2011/01/12/internet-2010-in-numbers/"&gt;Internet 2010 in numbers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wpmu.org/why-you-should-never-search-for-free-wordpress-themes-in-google-or-anywhere-else/"&gt;Why You Should Never Search For Free WordPress Themes in Google or Anywhere Else&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.itnewsafrica.com/?p=10018"&gt;5 big online trends to watch in 2011&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.informationweek.com/news/smb/hardware_software/showArticle.jhtml?articleID=228801016&amp;amp;cid=nl_TW_software_2011-01-11_html"&gt;Top 5 Cloud Computing Predictions For 2011&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.wekeroad.com/microsoft/someone-hit-their-head"&gt;Thoughts on WebMatrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/46232?trk=DXRSS_"&gt;10 Ways to Fund Your Startup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.techradar.com/news/software/operating-systems/10-best-linux-distros-for-2010-704584"&gt;10 best Linux distros&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://royal.pingdom.com/2011/01/17/internet-companies-with-few-employees-but-millions-of-users/"&gt;Internet companies with few employees but millions of users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2011/01/14/how-to-identify-good-clients-avoid-bad-ones/"&gt;How To Identify Good Clients (and Avoid Bad Ones)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_asp/controls/article.php/c18381"&gt;Top 10 Useful Attributes &amp;amp; Properties for ASP.NET Controls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/architect/Article/46257?trk=DXRSS_"&gt;Will 'Continuous Delivery' Transform the Production of Software?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/webdev/Article/46265?trk=DXRSS_"&gt;My Top 5 Features of Internet Explorer 9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://alexblom.com/blog/2011/01/mistakes-startups-make-and-you-should-avoid/"&gt;Mistakes startups make (and you should avoid)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/"&gt;How Facebook Ships Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nicolasgallagher.com/css-background-image-hacks/"&gt;CSS background image hacks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/46251?trk=DXRSS_"&gt;Requirements-Driven Testing: A Must for Delivering Quality Software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sharepointbriefing.com/spcode/article.php/3921596"&gt;Microsoft Boosts SharePoint Online with Office 365 Rollout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xprogramming.com/articles/well_try/"&gt;We’ll Try&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.inc.com/magazine/20110201/how-great-entrepreneurs-think.html"&gt;How Great Entrepreneurs Think&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://martin.kleppmann.com/2009/09/18/the-python-paradox-is-now-the-scala-paradox.html"&gt;The Python Paradox is now the Scala Paradox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://itmanagement.earthweb.com/entdev/article.php/3924636/What-Makes-A-Smart-Developer-Is-it-Google.htm"&gt;What Makes A Smart Developer? (Is it Google?)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fragile.org.uk/2011/02/in-praise-of-continuous-deployment/"&gt;In Praise of Continuous Deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://alblue.bandlem.com/2011/02/reflections-on-objective-c.html"&gt;Reflections on Objective-C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/46437?trk=DXRSS_"&gt;10 Traits of a Great Modern Software Engineer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.jasonshen.com/2010/winning-isnt-normal/"&gt;Winning Isn't Normal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.chadfowler.com/2010/12/30/dead-end-jobs-are-you-suffering-from-stockholm-syndrome"&gt;Dead-End Jobs: Are You Suffering From Stockholm Syndrome?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.freedom-to-tinker.com/blog/dwallach/things-overheard-wifi-my-android-smartphone"&gt;Things overheard on the WiFi from my Android smartphone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.alistapart.com/articles/web-cryptography-salted-hash-and-other-tasty-dishes/"&gt;Web Cryptography: Salted Hash and Other Tasty Dishes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.softwarequalityconnection.com/2011/01/4-ways-to-make-the-shipno-ship-decision/"&gt;4 Ways to Make the Ship/No-Ship Decision&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/articles/2011/03/07/biggest-aspnet-mistake.aspx"&gt;My Biggest ASP.NET Programming Mistake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.msjoe.com/2011/03/is-it-the-end-for-the-ajax-control-toolkit/"&gt;Is it the end for the AJAX Control Toolkit ?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.devx.com/opensource/Article/46506?trk=DXRSS_"&gt;Open Source Cloud Computing Platform OpenStack Goes Commercial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aws.typepad.com/aws/2011/01/introducing-the-amazon-simple-email-service.html"&gt;Introducing the Amazon Simple Email Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://glazkov.com/2011/01/14/what-the-heck-is-shadow-dom/"&gt;What the Heck is Shadow DOM?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/jgalloway/archive/2011/01/25/preventing-open-redirection-attacks-in-asp-net-mvc.aspx"&gt;Preventing Open Redirection Attacks in ASP.NET MVC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.hanselman.com/blog/NuGetPackageOfTheWeek1ASPNETSpriteAndImageOptimization.aspx"&gt;NuGet Package of the Week #1 - ASP.NET Sprite and Image Optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://net.tutsplus.com/articles/general/what-internet-explorer-got-right/"&gt;The Things Internet Explorer Got Right&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.jgc.org/2011/01/code-injected-to-steal-passwords-in.html"&gt;The code injected to steal passwords in Tunisia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.jgc.org/2009/09/javascript-must-die.html"&gt;JavaScript must die&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.dantup.com/2011/03/why-im-close-to-giving-up-on-windows-phone-7-as-a-user-and-a-developer"&gt;Why I'm Close to Giving Up on Windows Phone 7, as a User and a Developer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://andrewhoyer.blogspot.com/2011/03/how-much-is-your-app-worth.html"&gt;How Much Is Your App Worth?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.business-strategy-innovation.com/wordpress/2011/03/10-proven-sources-of-inspiration/"&gt;10 Proven Sources of Inspiration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://scottonwriting.net/sowblog/archive/2011/03/29/i-ve-written-my-last-article-for-4guysfromrolla.aspx"&gt;I’ve Written My Last Article for 4GuysFromRolla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/article.php/c18669"&gt;An Argument for Memory Profiling for Your .NET Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://devinterviews.pen.io/"&gt;Hiring Developers: You're Doing It Wrong&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.businessinsider.com/eight-key-problems-every-startup-should-anticipate-2011-3"&gt;Eight Key Problems Every Startup Should Anticipate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/sql-tools/the-unnecessary-evil-of-the-shared-development-database/?utm_source=simpletalk&amp;amp;utm_medium=email-main&amp;amp;utm_content=SharedDevTroy-20110404&amp;amp;utm_campaign=SQL"&gt;The unnecessary evil of the shared development database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gizmodo.com.au/2011/04/the-best-windows-phone-7-apps/"&gt;The Best Windows Phone 7 Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mashable.com/2011/04/06/site-speed/"&gt;Why Websites Are Slow &amp;amp; Why Speed Really Matters [INFOGRAPHIC]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tech.fortune.cnn.com/2011/04/04/android-is-a-mess-say-developers/"&gt;Android is a mess, say developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/dotnet/CSShellExtContextMenuHand.aspx"&gt;How to Write Windows Shell Extension with .NET Languages&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://j2labs.tumblr.com/post/4369280869/some-black-magic-python-for-n00bs"&gt;Some Black Magic Python for n00bs&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://anton.kovalyov.net/2011/04/05/cross-domain-quirks-in-ie8/"&gt;Cross-domain quirks in IE8&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.amirkhella.com/2011/02/23/what-i-wish-someone-had-told-me-5-years-ago/"&gt;What I Wish Someone Had Told Me 4 Years Ago&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/webservices/quickwins.aspx"&gt;Quick Ways to Boost Performance and Scalability of ASP.NET, WCF and Desktop Clients&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.patchspace.co.uk/why-cant-developers-estimate-time"&gt;Why Can't Developers Estimate Time?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.ryanpark.org/2008/04/top-10-avoid-the-simpledb-hype.html"&gt;Top 10 Reasons to Avoid the SimpleDB Hype&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://net.tutsplus.com/tutorials/javascript-ajax/this-time-youll-learn-node-js/"&gt;An Introduction to Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://goelsan.wordpress.com/2011/03/28/a-catalogue-of-software-bugs%E2%80%93iv-bugs-grounded-in-software-architecture/"&gt;A Catalogue of Software Bugs–IV: Bugs Grounded in Software Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://paranoia.dubfire.net/2011/04/how-dropbox-sacrifices-user-privacy-for.html"&gt;How Dropbox sacrifices user privacy for cost savings&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis"&gt;Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase comparison&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.simple-talk.com/sql/database-administration/sql-strategies-for-versioned-data/?utm_source=simpletalk&amp;amp;utm_medium=email-main&amp;amp;utm_content=VesionedData-20110321&amp;amp;utm_campaign=SQL"&gt;SQL Strategies for 'Versioned' Data&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.businessinsider.com/startups-from-google-2011-2#mopub-is-the-next-startup-to-come-from-people-that-were-at-google-16"&gt;15 Interesting Startups From Ex-Googlers&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.hbr.org/hill-lineback/2011/04/the-most-important-question-a.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+harvardbusiness+%28HBR.org%29"&gt;The Most Important Question a Manager Can Ask&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/csharp/article.php/c18755"&gt;Cloud Services: Making Sense of IaaS, PaaS, and SaaS&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/architecture/LongRunningActiveObject.aspx"&gt;Applied Long-Running Active Object Pattern&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://cdevroe.com/notes/code-maintenance-dont-ask/"&gt;Why you should never ask permission to clean up code&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://chaosinmotion.com/blog/?p=622"&gt;How (not) to write Factorial in Java.&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.asmartbear.com/startups-emotionally-draining.html"&gt;When you want to quit because it’s just not worth it&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.contrast.ie/blog/designing-your-sign-up-page/"&gt;Designing your sign up page&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://batsov.com/2011/05/03/ruby-or-python.html"&gt;Ruby or Python? Well, it depends...&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://openmymind.net/2011/5/8/Practical-NoSQL-Solving-a-Real-Problem-w-Mongo-Red"&gt;Practical NoSQL - Solving a Real Problem with MongoDB and Redis&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.databasejournal.com/features/mssql/article.php/3932406/Top-10-SQL-Server-Counters-for-Monitoring-SQL-Server-Performance.htm"&gt;Top 10 SQL Server Counters for Monitoring SQL Server Performance&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.piehead.com/blog/2011/05/why-startups-could-use-net-but-don%E2%80%99t"&gt;Why Startups Could Use .NET, But Don’t&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.hanselman.com/blog/ShouldIUseHTML5OrSilverlightOneMansOpinion.aspx"&gt;Should I use HTML5 or Silverlight? One man's opinion.&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.smashingmagazine.com/2011/05/25/introduction-to-dns-explaining-the-dreaded-dns-delay/"&gt;Introduction to DNS: Explaining The Dreaded DNS Delay&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://cybernetnews.com/test-ie5-ie6-ie7-ie8-ie9-ie10-windows-7/"&gt;Test IE6, IE7, IE8, IE9, and IE10 in Windows 7&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.korokithakis.net/posts/app-engine-pricing-changes-revisited/?lala"&gt;App Engine pricing changes revisited&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.bnet.com/blog/salesmachine/the-10-commandments-for-customer-meetings/15652"&gt;The 10 Commandments for Customer Meetings&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.ploeh.dk/2011/05/31/AtTheBoundariesApplicationsAreNotObjectOriented.aspx"&gt;At the Boundaries, Applications are Not Object-Oriented&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.modernmechanix.com/2006/08/25/is-your-job-killing-you/"&gt;Is Your Job Killing You?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing"&gt;OAuth-OpenID: You’re Barking Up the Wrong Tree if you Think They’re the Same Thing&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/Articles/198649/Comparing-the-performance-of-AppFabric-against-Sql"&gt;Comparing the performance of AppFabric against Sql Server&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/Articles/198170/Safely-deploying-changes-to-production-servers"&gt;Safely deploying changes to production servers&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.devx.com/dotnet/Article/46979?trk=DXRSS_DOTNET"&gt;ADO.NET Entity Framework 4: New and Notable Features&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codinghorror.com/blog/2004/12/the-magical-build-machine.html"&gt;The Magical Build Machine&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://paraschopra.com/blog/entrepreneurship/how-to-find-startup-ideas-that-make-money.htm?src=hn"&gt;How to find startup ideas that make money&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.dispatched.ch/2011/06/12/how-to-become-a-proficient-python-programmer/"&gt;How to become a proficient Python programmer&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://coding-and-more.blogspot.com/2011/06/its-official-developers-get-better-with.html"&gt;It's official: developers get better with age. And scarcer.&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/cpp/g-m/multimedia/video/article.php/c18687"&gt;Library for Raw Video Processing&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://ktuman.blogspot.com/2011/06/two-best-programming-languages-for.html"&gt;Two best programming languages for serious programmers&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.johndcook.com/blog/2011/06/14/why-do-c-folks-make-things-so-complicated/"&gt;Why do C++ folks make things so complicated?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.itworld.com/software/175225/fork-history-does-not-favor-openofficeorg"&gt;Fork history does not favor OpenOffice.org&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.datacenterknowledge.com/archives/2011/06/09/a-look-inside-amazons-data-centers/"&gt;A Look Inside Amazon’s Data Centers&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://visitmix.com/opinions/be-unique-but-dont-be-a-guid"&gt;Be Unique But Don’t Be A GUID&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern"&gt;ORM is an anti-pattern&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.earbits.com/online_radio/5-tips-about-time-management/"&gt;5 Tips About Time Management&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.betanews.com/joewilcox/article/iPad-cannot-win-the-tablet-wars/1308503019?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+bn+%28Betanews+Full+Content+Feed+-+BN%29"&gt;iPad cannot win the tablet wars&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://css-tricks.com/9738-just-one-of-those-things-you-need-to-understand-about-javascript/"&gt;Just One Of Those Things You Need To Understand About JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.betanews.com/article/Now-anyone-not-just-cops-with-a-warrant-can-peek-inside-your-Dropbox/1308256016"&gt;Now anyone, not just cops with a warrant, can peek inside your Dropbox&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.evernote.com/tech/2011/05/17/architectural-digest/"&gt;Architectural Digest&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/csharp/.net/wp7/article.php/c19003"&gt;Overview of oData Protocol for Windows Phone&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://tobint.com/blog/building-a-better-web-application-part-1/"&gt;Building a Better Web Application: Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://tobint.com/blog/building-a-better-web-application-part-2/"&gt;Building a Better Web Application: Part 2&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://bosker.wordpress.com/2011/04/29/the-worst-algorithm-in-the-world/"&gt;The worst algorithm in the world?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.jazzychad.net/2011/05/02/startups-are-hard.html"&gt;Startups Are Hard&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://windowsteamblog.com/windows_live/b/windowslive/archive/2011/06/30/instant-email-how-we-made-hotmail-10x-faster.aspx"&gt;Instant email: how we made Hotmail 10x faster&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.devx.com/wireless/Article/47067?trk=DXRSS_"&gt;Android Open Accessories: What's the Potential?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.howstuffworks.com/quantum-computer.htm"&gt;How Quantum Computers Work&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://openmymind.net/2011/7/5/Rethink-your-Data-Model"&gt;Rethink your Data Model&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/csharp/.net/wp7/article.php/c19025"&gt;Using oData Services in a Windows Phone Application&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.sqlservercentral.com/blogs/livingforsqlserver/archive/2011/6/28/my-favourite-sql-server-myths-and-realities.aspx"&gt;My Favourite SQL Server Myths and Realities&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/database/embeddeddb-benchmarking.aspx"&gt;Benchmarking the performance of embedded DB for .NET: SQL CE 4.0 vs SQLite&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://lucumr.pocoo.org/2011/7/9/python-and-pola/"&gt;Python and the Principle of Least Astonishment&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.makinggoodsoftware.com/2011/05/23/top-7-programmers-bad-habits/"&gt;Top 7 programmers bad habits&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.makinggoodsoftware.com/2009/10/10/how-to-determine-the-cost-and-schedule-of-a-software-project-the-mythical-bpuf-big-planning-upfront/"&gt;How to determine the cost and schedule of a software project? The mythical BPUF (Big planning upfront)&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://radar.oreilly.com/2011/07/java-community-oracle-google-vmware.html"&gt;Who leads the Java parade?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://furbo.org/2011/07/13/the-rise-and-fall-of-the-independent-developer/"&gt;The Rise and Fall of the Independent Developer&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.bnet.com/blog/ceo/10-leadership-lessons-from-the-playground/7708"&gt;10 Leadership Lessons From the Playground&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://mattwilcox.net/archive/entry/id/1054/"&gt;CSS Lint is harmful&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://mindtribe.com/2011/07/forgotten-c-the-comma-operator/"&gt;Forgotten C: The comma operator&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://sqlblog.com/blogs/jorg_klein/archive/2011/07/22/ssis-denali-ctp3-what-s-new.aspx"&gt;SSIS Denali CTP3 – What’s new?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/csharp/article.php/c19085"&gt;Using Visual Studio Debugger Attributes&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.aaronstannard.com/post/2011/06/30/MongoDB-vs-SQL-Server.aspx"&gt;MongoDB vs. SQL Server 2008: A .NET Developer’s Perspective&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.msdn.com/b/jasonba/archive/2011/07/12/don-t-assume-if-something-worked-once-it-ll-work-again.aspx"&gt;Don’t Assume If Something Worked Once, It’ll Work Again&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/scriptjunkie/hh273390.aspx"&gt;Managing Application Resources with the Flyweight Pattern&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://uxmag.com/strategy/five-popular-web-strategies-that-dont-work"&gt;Five Popular Web Strategies That Don't Work&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://uxmag.com/design/five-low-hanging-ux-tips"&gt;Five Low-Hanging UX Tips&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.devx.com/wireless/Article/47122?trk=DXRSS_"&gt;10 Internationalization Tips for Your Android Applications&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.geekatsea.com/lessons-from-a-coffee-entrepreneur"&gt;3 Lessons From a Coffee Entrepreneur&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.pud.com/post/5239917032/users"&gt;Getting Users For Your New Startup&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.itworld.com/career/186303/mba-or-masters-computer-science-it-s-your-call"&gt;An MBA or a Master's in Computer Science? It’s your call.&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.humbledmba.com/you-dont-get-shit-you-dont-ask-for"&gt;You don't get shit you don't ask for&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://appsandsecurity.blogspot.com/2011/02/security-people-vs-developers.html"&gt;Security People vs Developers&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://jimsmarketingblog.com/2011/07/04/what-everybody-ought-to-know-about-entrepreneurs/"&gt;What everybody ought to know about entrepreneurs&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.n01se.net/?p=375"&gt;The Most Important Parts of HTML5&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://queue.acm.org/detail.cfm?id=1740550"&gt;Broken Builds&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.msdn.com/b/alfredth/archive/2011/08/09/abstraction-at-the-core-of-computer-science.aspx"&gt;Abstraction At The Core of Computer Science&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://queue.acm.org/detail.cfm?id=1035617"&gt;The Burning Bag of Dung and Other Environmental Antipatterns&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/security/Harlinn_security_part1.aspx"&gt;Security : It’s getting worse&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://thisismynext.com/2011/08/11/broken-patent-system/"&gt;The patent system isn’t broken — we are&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/csharp/csharp/cs_misc/article.php/c19115"&gt;What Developers Should Know About Microsoft Visual Studio LightSwitch&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/hh335069.aspx"&gt;Searching Windows Azure Storage with Lucene.Net&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://workawesome.com/career/how-to-quit-your-job/"&gt;How to Quit Your Job – 5 Steps to Transition Into a New Career&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.fabcapo.com/2011/08/end-of-android-as-we-know-it.html"&gt;The end of Android as we know it&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.openmymind.net/2011/8/15/How-You-Should-Go-About-Learning-NoSQL"&gt;How You Should Go About Learning NoSQL&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.technet.com/b/mmpc/archive/2011/08/10/can-we-believe-our-eyes.aspx"&gt;Can we believe our eyes?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.businessinsider.com/the-8-unwritten-rules-of-business-2011-8?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+businessinsider%2Fwarroom+%28War+Room%29"&gt;The 8 Unwritten Rules Of Business&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://saucelabs.com/blog/index.php/2011/08/the-surprising-worst-browser/"&gt;The Surprising Worst Browser&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.johndcook.com/blog/2011/08/17/a-couple-python-like-features-in-c11/"&gt;A couple Python-like features in C++11&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.problogger.net/archives/2005/08/19/writing-blog-content-make-it-scannable/"&gt;Writing Blog Content – Make it Scannable&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.davykestens.be/self-improvement/why-most-people-dream-and-only-some-do-the-go-getter-theory"&gt;Why Most People Dream and Only Some Do: The Go-Getter Theory&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://onstartups.com/tabid/3339/bid/34321/14-Ways-To-Be-A-Great-Startup-CEO.aspx"&gt;14 Ways To Be A Great Startup CEO&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/69717/"&gt;SQL Server Ranking Functions&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.problogger.net/archives/2011/08/30/11-blog-proofreading-tips-you-can%E2%80%99t-afford-to-ignore/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ProbloggerHelpingBloggersEarnMoney+%28ProBlogger%3A+Helping+Bloggers+Earn+Money%29"&gt;11 Blog Proofreading Tips You Can’t Afford to Ignore&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.marco.org/2011/02/01/how-should-i-get-started-with-programming-which"&gt;How should I get started with programming? Which language should I learn first?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.jayfields.com/2011/08/life-after-pair-programming.html"&gt;Life After Pair Programming&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/android/GoogleAppInventor.aspx"&gt;Google App Inventor&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://martinfowler.com/bliki/MemoryImage.html"&gt;MemoryImage&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://uxdesign.smashingmagazine.com/2011/08/22/new-approaches-to-designing-login-forms/"&gt;New Approaches To Designing Log-In Forms&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.dumblittleman.com/2011/08/seven-secrets-of-highly-productive.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+DumbLittleMan+%28Dumb+Little+Man+-+tips+for+life%29"&gt;Seven Secrets of Highly Productive People&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.inc.com/ss/most-common-mistakes-to-avoid-when-starting-up#6"&gt;7 Common Mistakes to Avoid When Starting Up&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://theyec.org/startup-launch-lessons/"&gt;How to Be an Entrepreneur: 10 Startup Launch Lessons&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.extremetech.com/computing/95417-google-announces-dart-programming-language"&gt;Google announces Dart programming language&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://adtmag.com/articles/2011/08/12/role-of-an-architect-in-agile-dev-shop.aspx"&gt;What Does an Architect Do in an Agile Shop? An Agile Architect Explains All...&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://encosia.com/asp-net-page-methods-are-only-as-secure-as-you-make-them/"&gt;ASP.NET page methods are only as secure as you make them&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://wadler.blogspot.com/2011/09/experiment-about-static-and-dynamic.html"&gt;An experiment about static and dynamic type systems&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2011/08/30/dear-team-lead-you-are-not-doing-agile-if.aspx"&gt;Dear Team Lead, You Are Not Doing Agile If…&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://samsaffron.com/archive/2011/09/08/Extending+the+ASP.NET+error+page+show+me+the+SQL+edition"&gt;Extending the ASP.NET error page (show me the SQL edition)&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.sqlservercentral.com/blogs/sqlservernotesfromthefield/archive/2011/09/06/new-logical-functions-in-sql-server-denali.aspx"&gt;New LOGICAL functions in SQL Server Denali&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-to-developers-metro-is-your-future/10611"&gt;Microsoft to developers: Metro is your future&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.networkworld.com/community/blog/django-community"&gt;Want to Build Your Community? Take Notes from the Django Project.&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.johndcook.com/blog/2011/09/09/five-interesting-things-about-mersenne-primes/"&gt;Five interesting things about Mersenne primes&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.hbr.org/cs/2011/09/for_great_leadership_clear_you.html"&gt;For Great Leadership, Clear Your Head&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.whatmakesthemclick.net/2011/09/06/true-cost-of-multitasking/"&gt;The True Cost of Multi-tasking&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/WCF/diwcf.aspx"&gt;Dependency Injection and Windows Communication Foundation&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://jclaes.blogspot.com/2011/09/building-small-things.html"&gt;Building small things&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.unleashedmind.com/en/blog/sun/the-drupal-crisis"&gt;The drupal crisis&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.vivekhaldar.com/post/10126017769/smeeds-law-for-programming"&gt;Smeed’s Law for Programming&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.sqlservercentral.com/articles/Guids/75506/"&gt;An alternative to GUIDs&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.cmcrossroads.com/cm-articles/275-articles/14195"&gt;Eight Ways to Release Failure—A Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://arstechnica.com/business/news/2011/09/despite-enterprise-dominance-microsoft-struggles-in-web-server-market.ars"&gt;Despite enterprise dominance, Microsoft struggles in Web server market&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.lhotka.net/weblog/WinRTAndNET.aspx"&gt;WinRT and .NET&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.iheavy.com/2011/08/26/5-things-are-toxic-to-scalability/"&gt;5 Things That Are Toxic to Scalability&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://ariya.ofilabs.com/2011/08/hall-of-api-shame-boolean-trap.html"&gt;hall of api shame: boolean trap&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/"&gt;Hackers break SSL encryption used by millions of sites&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.kveton.com/2011/09/23/how-much-money-do-you-really-need-to-start-your-company/"&gt;How much money do you *really* need to start your company?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.core77.com/blog/columns/act_first_do_the_research_later_20051.asp"&gt;Act First, Do the Research Later&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://arstechnica.com/gadgets/news/2011/09/amazons-silk-web-browser-adds-new-twist-to-old-idea.ars"&gt;Amazon's Silk Web browser adds new twist to old idea&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://onlineorganizing.com/BlogEntry.asp?id=3098"&gt;The 7 Habits of Highly Organized People&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.smashingmagazine.com/2011/09/28/youre-pricing-it-wrong-software-pricing-demystified/"&gt;You’re Pricing It Wrong: Software Pricing Demystified&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.serverfault.com/post/the-stack-exchange-architecture-2011-edition-episode-1/"&gt;The Stack Exchange Architecture – 2011 Edition, Episode 1&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.zdnet.com/blog/hardware/windows-8-design-flaws-microsoft-must-address/14917"&gt;Windows 8 design flaws Microsoft MUST address&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://rahulbijlani.com/essays/you-are-not-running-out-of-time-essay/"&gt;You are not running out of time&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/HTML/StylishButtonsUsingCSS3.aspx"&gt;Creating Stylish Buttons Using CSS3&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://teddziuba.com/2011/10/node-js-is-cancer.html"&gt;Node.js is Cancer&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://rhyolight.posterous.com/nodejs-is-not-cancer"&gt;Node.js is Not Cancer&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeproject.com/KB/TipsnTricks/WCF_Versioning.aspx"&gt;WCF Versioning&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.hubspot.com/blog/tabid/6307/bid/26714/6-Considerations-for-Simple-Website-Navigation-Design-And-Free-Ebook.aspx"&gt;6 Considerations for Simple Website Navigation Design&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://seldo.com/weblog/2011/08/11/php_needs_to_die_what_will_replace_it"&gt;PHP needs to die. What will replace it?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://privacychoice.org/resources/pitfalls"&gt;Six privacy mistakes developers make&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.perl.org/users/rafael_garcia-suarez/2011/10/why-dart-is-not-the-language-of-the-future.html"&gt;Why Dart is not the language of the future&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/hh456393.aspx"&gt;Objects and the Art of Data Modeling&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://herbsutter.com/2011/10/12/dennis-ritchie/"&gt;Dennis Ritchie&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://jacquesmattheij.com/It+takes+three+years+to+build+a+business"&gt;It takes three years to build a business&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://tenaciousc.com/?p=3184"&gt;How Structs Really Work in C&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://codypowell.com/taods/2011/10/poor-mans-scalability.html"&gt;Poor Man's Scalability&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.sarajchipps.com/2011/10/this-blog-post-has-been-a-long-time-coming-i-started-my-career-within-the-net-community-and-my-posts-of-late-have-been-d.html"&gt;A Post About Why I No Longer Do .NET Development&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://gun.io/blog/python-for-the-web/"&gt;Python for the Web&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.techrepublic.com/blog/hiner/look-out-the-10-rising-tech-trends-of-2012/9470"&gt;Look out: The 10 rising tech trends of 2012&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://gigaom.com/collaboration/5-ways-to-keep-your-rockstar-employees-happy/?utm_source=twitterfeed&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+webworkerdaily+%28GigaOM%3A+Collaboration%29"&gt;5 ways to keep your rockstar employees happy&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.techrepublic.com/blog/hiner/android-40-eight-new-features-that-actually-matter/9507?tag=nl.e101"&gt;Android 4.0: Eight new features that actually matter&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;The Joel Test: 12 Steps to Better Code&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.randsinrepose.com/archives/2011/10/11/the_rands_test.html"&gt;The Rands Test&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.portfolio.com/resources/2011/04/11/carol-roth-on-five-myths-and-one-truth-about-entrepreneurship"&gt;Five Myths (and One Absolute Truth) about Entrepreneurship&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.hashtagify.me/2011/10/23/bootstrapping-hashtagify-pro-how-i-doubled-my-workweek-productivity/"&gt;Bootstrapping hashtagify pro: How I doubled my workweek productivity&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2010/09/21/unity-castle-windsor-structuremap-ninject-who-has-best-performance.aspx"&gt;Unity, Castle Windsor, StructureMap, Ninject – who has best performance?&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://martinfowler.com/articles/injection.html"&gt;Inversion of Control Containers and the Dependency Injection pattern&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://herbsutter.com/elements-of-modern-c-style/"&gt;Elements of Modern C++ Style&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blogs.msdn.com/b/thebeebs/archive/2011/11/03/3-ways-to-test-your-website-in-old-versions-of-ie.aspx"&gt;3 Ways to test your website in old versions of IE&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.codeguru.com/cpp/misc/article.php/c19501"&gt;Monetize Your Free Android App by Creating a Paid App to Unlock Additional Features&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.andismith.com/blog/2011/11/25-dev-tool-secrets/"&gt;25 Secrets of the Browser Developer Tools&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://econsultancy.com/us/blog/8178-native-apps-versus-mobile-websites-three-simple-rules"&gt;Native apps versus mobile websites: three simple rules&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://laktek.com/2011/11/23/basic-patterns-for-everyday-programming/"&gt;Basic Patterns for Everyday Programming&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.computerworld.com/s/article/359980/Operating_Systems_Don_t_Matter_Much_Anymore"&gt;Steven J. Vaughan-Nichols: Operating systems don't matter much anymore&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.pinboard.in/2011/12/don_t_be_a_free_user/"&gt;Don't Be A Free User&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.mindscapehq.com/blog/index.php/2011/12/05/5-reasons-not-to-use-a-micro-orm/"&gt;5 reasons not to use a micro ORM&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.sqlservercentral.com/articles/Double+Hop/76743/"&gt;A brief explanation and solution for the Double Hop problem&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://tripleemcoder.wordpress.com/2011/12/10/writing-an-automatic-debugger-in-15-minutes-yes-a-debugger/"&gt;Writing an automatic debugger in 15 minutes (yes, a debugger!)&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://joostdevblog.blogspot.com/2011/12/lamest-bug-we-ever-encountered.html"&gt;The lamest bug we ever encountered&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.devx.com/Java/Article/47465?trk=DXRSS_"&gt;Hadoop for Data Analytics: Implementing a Weblog Parser&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.seomoz.org/blog/canonical-url-tag-the-most-important-advancement-in-seo-practices-since-sitemaps"&gt;Canonical URL Tag - The Most Important Advancement in SEO Practices Since Sitemaps&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.inc.com/ilya-pozin/7-things-highly-productive-people-do.html"&gt;7 Things Highly Productive People Do&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://gigaom.com/cloud/nosqls-great-but-bring-your-a-game/"&gt;NoSQL’s great, but bring your A game&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.smartinsights.com/digital-marketing-strategy/online-business-revenue-models/online-revenue-model-options-internet-business/"&gt;8 Online revenue model options for Internet businesses&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://tirania.org/blog/archive/2011/Dec-21.html"&gt;Mono in 2011&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.cringely.com/2011/12/why-big-companies-cant-change/"&gt;Why big companies can’t change&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.forbes.com/sites/mikemyatt/2011/12/19/this-one-leadership-quality-will-make-or-break-you/"&gt;This One Leadership Quality Will Make or Break You&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.kernelmag.com/scene/2011/12/developers-developers-developers/"&gt;The golden age of the developer&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://excess.org/article/2011/12/unfortunate-python/"&gt;Unfortunate Python&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://www.canonical.org/%7Ekragen/isinstance/"&gt;isinstance() considered harmful&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://dobesland.wordpress.com/2007/10/07/python-isinstance-considered-useful/"&gt;Python isinstance considered useful&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://blog.ploeh.dk/2011/12/19/FactoryOverload.aspx"&gt;Factory Overload&lt;/a&gt;&lt;/li&gt;
&lt;li style="text-align: left;"&gt;&lt;a href="http://inessential.com/2011/12/23/gamification_sucks"&gt;‘Gamification’ sucks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-8414255731735985762?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/ksQeqDTC0fU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/8414255731735985762/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=8414255731735985762&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/8414255731735985762?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/8414255731735985762?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/ksQeqDTC0fU/articles-i-read-in-2011.html" title="Articles I read in 2011" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2012/01/articles-i-read-in-2011.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcEQns8cCp7ImA9WhdQE0o.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-8515108063009093819</id><published>2011-08-15T03:00:00.000+02:00</published><updated>2011-08-15T03:00:03.578+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-15T03:00:03.578+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Usability" /><title>Linking using history.back()</title><content type="html">Easy navigation and discoverability are very important aspects of website or application usability. The user should be able to easily dig deep in the content as well as to navigate to broader category of content.
&lt;br /&gt;
&lt;br /&gt;I stumbled upon a site that has a "Back" link in a leaf level content &lt;a href="http://www.templatesland.com/preview/template-045/index.html"&gt;page&lt;/a&gt;. As a user I thought it might be a way to go up and visit the related content or the parent category. Unfortunately, &lt;a href="http://www.w3schools.com/jsref/met_his_back.asp"&gt;history.back()&lt;/a&gt; was used. And since I reached this page using a search or a direct link and opened it in a new tab, it led me nowhere.
&lt;br /&gt;
&lt;br /&gt;The designer / developer assumed that the user will reach this page using a specific path and will open it in the same window and tab.
&lt;br /&gt;
&lt;br /&gt;That was a very bad idea as the most of the content nowadays is reached using search engines. And you don't your visitors to leave your site back to Google after getting him to your site!!. Also the design is broken in case the page is opened in a new window or tab.
&lt;br /&gt;
&lt;br /&gt;Maybe the rationale behind using this technique was to get the user back (within the site) to the location from where he got to the current page, be it direct navigation links or internal site search page. If so, a better implementation should be using HTTP referrer, or explicit query string value to indicate the source of the request.
&lt;br /&gt;
&lt;br /&gt;Small details can make big changes in usability. Different scenarios should be taken into consideration when designing the navigation.
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-8515108063009093819?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/iyuFQ9PPgLg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/8515108063009093819/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=8515108063009093819&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/8515108063009093819?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/8515108063009093819?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/iyuFQ9PPgLg/linking-using-historyback.html" title="Linking using history.back()" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2011/08/linking-using-historyback.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMAQ3kyfip7ImA9WhdTEkw.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-7556229970035855442</id><published>2011-07-09T14:46:00.007+02:00</published><updated>2011-07-09T15:17:22.796+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-09T15:17:22.796+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>PowerShell 32 and 64 bit have different execution policy settings</title><content type="html">I use PowerShell to automate many repetitive tasks. And build automation is one of the areas I like most.&lt;br /&gt;I faced a stiuation when I get this error with a PowerShell script running in visual studio project post build event:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;File XXX.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about _signing" for more details.&lt;br /&gt;&lt;/blockquote&gt;I know this error is usually caused by an execution policy that denies execution of scripts. So I made sure the Execution Policy is set to &lt;span style="font-weight: bold;"&gt;RemoteSigned&lt;/span&gt;. But This did not work!!&lt;br /&gt;&lt;br /&gt;I added this to the batch file that calls the PowerShell script:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;powershell "Get-ExecutionPolicy -List"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And the result was:&lt;br /&gt;&lt;pre&gt;Scope                         ExecutionPolicy&lt;br /&gt;&lt;br /&gt;-----                         ---------------&lt;br /&gt;&lt;br /&gt;MachinePolicy                               Undefined&lt;br /&gt;&lt;br /&gt;UserPolicy                               Undefined&lt;br /&gt;&lt;br /&gt;Process                               Undefined&lt;br /&gt;&lt;br /&gt;CurrentUser                               Undefined&lt;br /&gt;&lt;br /&gt;LocalMachine                               Undefined&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After some research I found that since the machine is 64-bit, there were 2 versions of PowerShell, 32 and 64-bit. Again I edited the batch file adding :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Powershell.exe "Get-Variable PSHOME"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And ran a build from visual studio, the result was:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Name      Value                                      &lt;br /&gt;----      -----                                     &lt;br /&gt;PSHOME    C:\Windows\SysWOW64\WindowsPowerShell\v1.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This shows that the version invoked was the 32-bit version, while the version I used to &lt;span style="font-weight: bold;"&gt;Set-ExecutionPolicy&lt;/span&gt; was the 64-bit version. I determined the paths from start menu shortcuts to Powershell:&lt;br /&gt;&lt;br /&gt;Windows PowerShell (x86): %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe&lt;br /&gt;And Windows PowerShell: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe&lt;br /&gt;&lt;br /&gt;So I opened &lt;span style="font-weight: bold;"&gt;Windows PowerShell (x86)&lt;/span&gt; and executed:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Set-ExecutionPolicy RemoteSigned&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And it worked.&lt;br /&gt;&lt;br /&gt;So, did Visual Studio post build event call the 32-bit version because it's a 32-bit application?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-7556229970035855442?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/Ah8ItQsAnGw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/7556229970035855442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=7556229970035855442&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/7556229970035855442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/7556229970035855442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/Ah8ItQsAnGw/powershell-32-and-64-bit-have-different.html" title="PowerShell 32 and 64 bit have different execution policy settings" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2011/07/powershell-32-and-64-bit-have-different.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYDQnw7cCp7ImA9WhZaGUw.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-253943206629642716</id><published>2011-07-06T02:11:00.005+02:00</published><updated>2011-07-06T03:02:53.208+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-06T03:02:53.208+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><title>SSMS and Deleting all records from a self referencing table</title><content type="html">Clearing all data from a self referencing table using SSMS can be tricky.  Selecting all records in SSMS results grid and pressing DEL just won't work in many times.&lt;br /&gt;&lt;br /&gt;Take the common example of Employee - Manager relationship:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-yWmogwlrbpk/ThOrJO_vytI/AAAAAAAAAQQ/VSfeIRmSyyc/s1600/Employee_table_self_reference.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 255px; height: 157px;" src="http://1.bp.blogspot.com/-yWmogwlrbpk/ThOrJO_vytI/AAAAAAAAAQQ/VSfeIRmSyyc/s400/Employee_table_self_reference.png" alt="" id="BLOGGER_PHOTO_ID_5626028534648523474" border="0" /&gt;&lt;/a&gt;If you try using SSMS results grid to delete all records, you may get this error:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;No rows were deleted.&lt;br /&gt;&lt;br /&gt;A problem occurred attempting to delete row 1.&lt;br /&gt;Error Source: .Net SqlClient Data Provider.&lt;br /&gt;Error Message: The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK_Employee_Employee". The conflict occurred in database "test", table "dbo.Employee", column 'ManagerId'.&lt;br /&gt;&lt;br /&gt;The statement has been terminated.&lt;/blockquote&gt;&lt;br /&gt;Using the Query window and running:&lt;br /&gt;&lt;code&gt;DELETE employee&lt;/code&gt;&lt;br /&gt;Will work however.&lt;br /&gt;&lt;br /&gt;The difference is that SSMS actually tries to delete row by row, which will violate the constraint. But when using a query to delete all records. SQL Serve is smart enough to clear all data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-253943206629642716?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/q0Wm1pSdq68" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/253943206629642716/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=253943206629642716&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/253943206629642716?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/253943206629642716?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/q0Wm1pSdq68/ssms-and-deleting-all-records-from-self.html" title="SSMS and Deleting all records from a self referencing table" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-yWmogwlrbpk/ThOrJO_vytI/AAAAAAAAAQQ/VSfeIRmSyyc/s72-c/Employee_table_self_reference.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2011/07/ssms-and-deleting-all-records-from-self.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIEQn05fCp7ImA9Wx9XFE8.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-5703268317948483806</id><published>2011-01-07T21:11:00.000+02:00</published><updated>2011-01-07T21:11:43.324+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-07T21:11:43.324+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Deployment" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><title>Failed to extract the cab file in the solution error in SharePoint</title><content type="html">When deploying SharePoint solutions, you may encounter an error message like:&lt;br /&gt;&lt;blockquote&gt;Failed to extract the cab file in the solution.&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;(FYI, the wsp solution file is a cab file. just try to rename *.wsp to *.cab)&lt;/span&gt;&lt;br /&gt;There are two reasons that I found causing this kind of error:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Having some special characters in files names in the solution, in my case it was "(" and ")".&lt;/li&gt;&lt;li&gt;Having two DLLs with the same name even if one is in the GAC folder and the other in bin folder, this happened in my case by mistake, but it's good to know anyway.&lt;/li&gt;&lt;/ol&gt;Have a nice deployment, without uninformative error messages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-5703268317948483806?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/ypthi2jmeJo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/5703268317948483806/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=5703268317948483806&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/5703268317948483806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/5703268317948483806?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/ypthi2jmeJo/failed-to-extract-cab-file-in-solution.html" title="Failed to extract the cab file in the solution error in SharePoint" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2011/01/failed-to-extract-cab-file-in-solution.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QAQns6fCp7ImA9Wx9QGU0.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-3489842594456923315</id><published>2011-01-01T20:05:00.001+02:00</published><updated>2011-01-01T20:09:03.514+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-01T20:09:03.514+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Articles I read in 2010</title><content type="html">New year, new list :)&lt;br /&gt;Seems I'm good at keeping old habits, I've even created the draft of 2011's list sending this post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;2009 list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2010/01/articles-i-read-in-2009.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;2008 list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2008/02/articles-i-read-in-2008.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;2007 list can be found &lt;a href="http://forloveofsoftware.blogspot.com/2007/02/list-of-articles-i-read-on-2007.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/gsusx/archive/2009/02/13/using-ws-discovery-in-wcf-4-0.aspx"&gt;Using WS-Discovery in WCF 4.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd878359.aspx"&gt;Securing Application Pages in Windows SharePoint Services 3.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee832800%28office.14%29.aspx"&gt;A Brief Introduction to Enterprise Metadata Management for Microsoft SharePoint Server 2010 Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/articles/2010/01/07/defining-templates-with-jtemplate.aspx"&gt;Defining Templates with jTemplate&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/architect/222200364;jsessionid=A2052M3WFQMP1QE1GHOSKH4ATMY32JVN"&gt;Bug Opportunity Levels&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.humanfactors.com/about/10tips.asp"&gt;10 Usability Principles to guide you through the Web Design Maze&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee335722.aspx"&gt;9 Useful Tactics for Paying Back Technical Debt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee309512.aspx"&gt;Functional Programming for Everyday .NET Development&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc546578.aspx"&gt;Patterns in Practice: The Open Closed Principle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.garyshort.org/blog/archive/2008/02/11/double-dispatch-pattern.aspx"&gt;Double Dispatch Pattern&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onlamp.com/pub/a/python/2007/01/18/why-i-stopped-coding.html"&gt;Why I Stopped Coding and Why I'd Start Again&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1919&amp;amp;home"&gt;How To Enable Caching in SQL Server Reporting Services (SSRS)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dondodge.typepad.com/the_next_big_thing/2010/01/how-google-sets-goals-and-measures-success.html"&gt;How Google sets goals and measures success&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1920&amp;amp;home"&gt;Microsoft SQL Server vs. MySQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/Cpp/STL/article.php/c16693/"&gt;Lambdas in VC++ 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_wpf/article.php/c16737/"&gt;Top 10 features of Windows Presentation Foundation (WPF)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digital-web.com/articles/scope_in_javascript/"&gt;Scope in JavaScript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/43937"&gt;Successful Agile Planning: An Iteration How-To, Part I&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/43945"&gt;Successful Agile Planning: An Iteration How-To, Part II&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mssql/article.php/3841271/T-SQL-Best-Practices--Parameter-Sniffing.htm"&gt;T-SQL Best Practices – Parameter Sniffing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/conor_cunningham_msft/archive/2009/01/16/optimize-for-unknown-how-could-that-possibly-make-any-sense.aspx"&gt;OPTIMIZE FOR UNKNOWN - How could that possibly make any sense???&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.quicksprout.com/2009/08/07/51-ways-to-become-a-better-entrepreneur/"&gt;53 Ways to Become a Better Entrepreneur&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/graphics/html2image.aspx"&gt;HTML to Image in C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/t-sql-programming/13-things-you-should-know-about-statistics-and-the-query-optimizer/"&gt;13 Things You Should Know About Statistics and the Query Optimizer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163357.aspx"&gt;Extend Your WCF Services Beyond HTTP With WAS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mssql/article.php/3857466/Top-10-Features-of-SQL-2008-R2.htm"&gt;Top 10 Features of SQL 2008 R2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163357.aspx"&gt;Extend Your WCF Services Beyond HTTP With WAS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/ee957397.aspx"&gt;Tuples, Anonymous Types, and Concrete Types&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tomasp.net/blog/cannot-return-anonymous-type-from-method.aspx"&gt;Can't return anonymous type from method? Really?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/antosha/archive/2006/07/16/667221.aspx"&gt;XslCompiledTransform Slower than XslTransform? &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.4guysfromrolla.com/articles/030310-1.aspx"&gt;Improving CSS With .LESS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.rebelbrown.com/phoenixrising/2010/03/signs-of-a-trusted-leader.html"&gt;8 Signs of a Positive Leader&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/brown-are-you-a-software-architect"&gt;Are You a Software Architect?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/blogs/robert_davis/archive/2010/03/10/Top-6-Myths-of-Transaction-Logs.aspx"&gt;Top 6 Myths of Transaction Logs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/cross-platform/PanelAppletToGnomOnMono.aspx"&gt;How we can write on C# in Linux: Implementing PanelApplet to Gnome Desktop&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/Get%20Performance%20Tips%20Directly%20From%20SQL%20Server"&gt;Get Performance Tips Directly From SQL Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://infoworld.com/d/data-management/7-performance-tips-faster-sql-queries-262"&gt;7 performance tips for faster SQL queries&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_general/article.php/c17037"&gt;Programming 3-D In Silverlight 3.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/columns/vb/article.php/c16935"&gt;Understanding LINQ's Deferred Execution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.linkedin.com/2009/03/20/project-voldemort-scaling-simple-storage-at-linkedin/"&gt;Project Voldemort: Scaling Simple Storage at LinkedIn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/A%20Look%20At%20The%20New%20Features%20In%20The%20ADO.NET%20Entity%20Framework%204.0"&gt;A Look At The New Features In The ADO.NET Entity Framework 4.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/presentations/Pragmatic-F-Sharp-in-Action"&gt;Pragmatic F# in Action&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee336127.aspx"&gt;An Introduction to Functional Programming for .NET Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://http//www.smashingmagazine.com/2010/04/20/seven-javascript-things-i-wish-i-knew-much-earlier-in-my-career/"&gt;Seven JavaScript Things I Wish I Knew Much Earlier In My Career&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx"&gt;Expression Tree Basics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://paulbuchheit.blogspot.com/2010/02/if-your-product-is-great-it-doesnt-need.html"&gt;If your product is Great, it doesn't need to be Good.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2010/03/29/putting-a-base-in-the-middle.aspx"&gt;Putting a base in the middle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/webdev/Article/44658/0/"&gt;Manipulating Images with .NET Programs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/44817"&gt;Top 10 Ways to Decide What Type of Startup is Right for You&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2010/05/19/getting-lazy-with-system-lazy.aspx"&gt; Getting Lazy with System.Lazy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mysql/article.php/3880961/article.htm"&gt;Top 10 MySQL GUI Tools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/dbzone/Article/44685"&gt;The Rise of NoSQL Databases&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kylecordes.com/2010/the-prolog-story"&gt;The Prolog Story&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/features/article.php/3883051/Scala-vs-F-Comparing-Functional-Programming-Features.htm"&gt;Scala vs. F#: Comparing Functional Programming Features&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://talkingbizz.com/blog/2010/05/21/tip-to-boost-your-business/"&gt;Tip To Boost Your Business&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/articles/architecting-tekpub"&gt;Architecting TekPub - Moving from ASP.NET MVC to Ruby on Rails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee336024.aspx"&gt;Precompiling LINQ Queries&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2008/02/04/exploring-the-performance-of-the-ado-net-entity-framework-part-1.aspx"&gt;Exploring the Performance of the ADO.NET Entity Framework - Part 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2008/02/11/exploring-the-performance-of-the-ado-net-entity-framework-part-2.aspx"&gt;Exploring the Performance of the ADO.NET Entity Framework – Part 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://freelancefolder.com/10-hidden-skills-of-successful-freelancers/"&gt;10 Hidden Skills of Successful Freelancers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.hbr.org/bregman/2010/05/how-and-why-to-stop-multitaski.html"&gt;How (and Why) to Stop Multitasking&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.gilbertpellegrom.co.uk/post/565731118/html-forms-to-ajax-forms-the-easy-way"&gt;HTML Forms to AJAX Forms the Easy Way&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kevinwilliampang.com/2008/08/28/top-10-things-that-annoy-programmers/"&gt;Top 10 Things That Annoy Programmers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.techrepublic.com.com/tech-manager/?p=3664"&gt;Four variants of agile development methods&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/architecture/bb245674.aspx"&gt;A Flexible Model for Data Integration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jobjournal.com/article_full_text.asp?artid=2974"&gt;CAREER PROS: Revitalize Your Career&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee310029.aspx"&gt;Going NoSQL with MongoDB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ff714592.aspx"&gt;Going NoSQL with MongoDB, Part 2&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img title="Shift+R improves the quality of this image. Shift+A improves the quality of all images on this page." src="http://www.blogger.com/img/blank.gif" alt="" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/45018"&gt;Top 10 Reasons for Startup Failure&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/"&gt;Exploring the software behind Facebook, the world’s largest site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/architect/Article/45032?trk=DXRSS_"&gt;The Three Counterproductive Messages of Software Development&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sixrevisions.com/user-interface/best-practices-for-hints-and-validation-in-web-forms/"&gt;Best Practices for Hints and Validation in Web Forms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/article.php/c17407"&gt;ASP.NET Tutorial: Web.Config Transformation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/vb/gen/vb_misc/article.php/c17489"&gt;Speed Up Your Web Site with Microsoft Azure BLOBs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ff796231.aspx"&gt;Windows Azure Table Storage – Not Your Father’s Database&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ff797918.aspx"&gt;View State Security&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/SQL-Membership.aspx"&gt;Using SQL Membership with ASP.NET application&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.inc.com/rob-adams/2010/06/ideas-commodity-but-execution-intelligence-matters.html"&gt;Ideas Are a Commodity, It's Execution Intelligence That Matters&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.schneier.com/blog/archives/2010/06/data_at_rest_vs.html"&gt;Data at Rest vs. Data in Motion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/45095?trk=DXRSS_"&gt;How Microsoft's Azure Stacks up Against Cloud Competitors&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linuxinsider.com/story/5-Python-Pluses-for-the-Enterprise-70337.html?wlc=1278678490"&gt;5 Python Pluses for the Enterprise&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/article.php/c17529"&gt;An ASP.NET Developers Guide to Setting Meta Keywords&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ppcblog.com/eight-questions-to-ask-before-you-start-a-business/"&gt;Eight Questions To Ask Before You Start A Business&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://alexyoung.org/2010/07/06/inkling/"&gt;An Inkling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://derek858.blogspot.com/2009/05/isa-vs-tmg-vs-iag-vs-uag-are-you.html"&gt;ISA vs TMG vs IAG vs UAG - Are you confused?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/70447/"&gt;How to Increase Query Speed With a Little Communication&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://intelligent-enterprise.informationweek.com/channels/information_management/showArticle.jhtml;jsessionid=WVM1FARM423PXQE1GHOSKHWATMY32JVN?articleID=225402155"&gt;Is it Time to Switch to ELT?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://seldo.com/weblog/2010/07/12/in_defence_of_sql"&gt;In defence of SQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc793961.aspx"&gt;Building A Secure AJAX Service Layer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/webdev/Article/45155?trk=DXRSS_"&gt;What I Learned from 10 Online Businesses&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+CLR/70554/"&gt;SQL CLR Data Types and Performance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/wireless/Article/45162"&gt;Developing on Symbian, the World's Most Popular Mobile OS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Table+Spool+Operator/70583/"&gt;Sub query expressions vs. Joins.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://codeascraft.etsy.com/2010/07/09/batch-processing-millions-of-images/"&gt;Batch Processing Millions and Millions of Images&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.networkworld.com/newsletters/wireless/2010/072610wireless1.html"&gt;WPA2 vulnerability found&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/63953/"&gt;ANSI PADDING, Trailing Whitespace, and Variable Character Columns&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/article.php/c17543"&gt;C# Programming: Using Generic Factory Classes to Create Generic Exception Handlers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/article.php/c17541"&gt;To NHibernate or Not&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/opensource/Article/45264?trk=DXRSS_"&gt;When To Use Open Source in the Enterprise -- And When To Avoid It&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.joelonsoftware.com/articles/fog0000000007.html"&gt;In Defense of Not-Invented-Here Syndrome&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ff898405.aspx"&gt;Inside SQLite&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ff898401.aspx"&gt;Does Your Program Smell Like Bacon?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gregtracy.com/adventures-in-performance-tuning-on-google-ap"&gt;Adventures in performance tuning on Google App Engine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://andyswan.com/blog/2008/12/01/10-startup-commandments/"&gt;10 Startup Commandments&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.paulgraham.com/yahoo.html"&gt;What Happened to Yahoo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2005/70740/"&gt;Finding Unique Non-Repeating Random Numbers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.businessinsider.com/how-we-use-mongodb-2009-11"&gt;How This Web Site Uses MongoDB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/dbzone/Article/45265?trk=DXRSS_"&gt;Five Reasons to Keep NoSQL on Your Radar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2010/07/30/the-false-myth-of-encapsulating-data-access-in-the-dal.aspx"&gt;The false myth of encapsulating data access in the DAL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/62159/"&gt;Linking to the Previous Row&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://beust.com/weblog/2006/06/07/agile-people-still-dont-get-it/"&gt;Agile people still don't get it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.untilnil.com/2010/08/appenginetemplate"&gt;Fast Python templates on AppEngine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/45492?trk=DXRSS_"&gt;Top 10 Tips For Marketing a Startup or Web Product&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/scriptjunkie/ee730276.aspx"&gt;Creating Effective Semantic Markup&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2010/08/23/hilo-update-introducing-hilo-annotator.aspx"&gt;Hilo Update – Introducing “Hilo Annotator”&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/mgmt/article.php/11085_3902371_2/Subversion-vs-Git-Choosing-the-Right-Open-Source-Version-Control-System.htm"&gt;Subversion vs. Git: Choosing the Right Open Source Version Control System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/09/08/introducing-the-microsoft-web-farm-framework.aspx"&gt;Introducing the Microsoft Web Farm Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.techrepublic.com.com/10things/?p=1799"&gt;10+ ways to be more productive&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://devlicio.us/blogs/hadi_hariri/archive/2010/09/08/wtf-you-got-against-silverlight.aspx"&gt;WTF you got against Silverlight?!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://uxmovement.com/design-articles/dropdown-login-boxes-for-faster-login"&gt; Use Dropdown Login Boxes for a Faster Login&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://stevehanov.ca/blog/index.php?id=105"&gt;Finding awesome developers in programming interviews&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://michael.robellard.com/2010/09/datastore-lessons-learned-hard-way.html"&gt;Datastore lessons learned the hard way&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/article.php/c17807"&gt;Implementing Policy Injection in ASP.NET Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://education.internet.com/articles/software-engineer-to-ceo-how-mark-herschberg-became-zepfrogs-top-exec/"&gt;Software Engineer to CEO: How Mark Herschberg Became ZepFrog’s Top Exec&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://whatupdave.tumblr.com/post/1170718843/leaving-net"&gt;Leaving .net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2010/09/23/html5-the-facts-and-the-myths/"&gt;HTML5: The Facts And The Myths&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://seldo.com/weblog/2010/09/27/php_needs_to_die_what_will_replace_it"&gt;PHP needs to die. What will replace it?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eflorenzano.com/blog/post/why-node-disappoints-me/"&gt;why node disappoints me&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gnegg.ch/2010/09/why-node-js-excites-me/"&gt;why node js excites me&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.supercoders.com.au/blog/designpatternshavemostlyflopped.shtml"&gt;Design patterns have (mostly) flopped&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/gg232771.aspx"&gt;A Few of My Favorite App Things&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://education.internet.com/articles/self-taught-vs-formal-developer-training-whats-the-difference/"&gt;Self-Taught vs. Formal Developer Training: What’s the Difference?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.asymco.com/2010/09/29/unixs-revenge/"&gt;Unix’s Revenge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Performance/71264/"&gt;A Check and Foreign Key Constraint Improves Query Performance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know"&gt;Low Level Bit Hacks You Absolutely Must Know&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.techrepublic.com.com/security/?p=4627"&gt;Unix vs. Microsoft Windows: How system designs reflect security philosophy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://news.yahoo.com/s/pcworld/20101020/tc_pcworld/redhatceosoftwarevendormodelisbroken"&gt;Red Hat CEO: Software Vendor Model Is Broken&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onstartups.com/tabid/3339/bid/20493/Why-PHP-Is-Fun-and-Easy-But-Python-Is-Marriage-Material.aspx"&gt;Why PHP Is Fun and Easy But Python Is Marriage Material&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html"&gt;Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gigaom.com/collaboration/the-value-of-a-project-blog/" target="_blank"&gt;The Value of a Project Blog&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.mathgladiator.com/2010/10/30-lessons-learned-in-computing-over.html" target="_blank"&gt;30 lessons learned in computing over the last ten years&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mashable.com/2010/10/24/innovative-api-uses/" target="_blank"&gt;5 Innovative Uses of an API [Mashable Awards]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linuxjournal.com/article/3882/#"&gt;Why Python?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ryanwaggoner.com/2010/10/my-programming-journey/"&gt;My programming journey&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/cs/ReflectionDemo.aspx"&gt;Reflection is Slow or Fast? A practical demo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/In-defense-of-transactional-replication-as-an-HA-technology.aspx"&gt;In defense of transactional replication as an HA technology&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lifehacker.com/5518102/how-to-turn-your-creative-brainstorm-into-a-completed-project"&gt;How to Turn Your Creative Brainstorm into a Completed Project&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://intermittentintelligence.com/2010/08/youre-a-developer-so-why-do-you-work-for-someone-else/"&gt;You’re a developer, so why do you work for someone else?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/dotnet/performance/under-the-orm-hood-revealing-the-sql/"&gt;Under the ORM Hood: Revealing the SQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/2010/11/breaking-the-webs-cookie-jar.html"&gt;Breaking the Web's Cookie Jar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.wekeroad.com/thoughts/open-id-is-a-party-that-happened"&gt;Open ID Is A Nightmare&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.west-wind.com/weblog/posts/324917.aspx"&gt;jQuery AJAX calls to a WCF REST Service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mobileopportunity.blogspot.com/2010/11/is-symbian-dead-and-if-so-who-killed-it.html"&gt;Is Symbian dead? And if so, who killed it?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2010/10/18/common-security-mistakes-in-web-applications/"&gt;Common Security Mistakes in Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sixrevisions.com/usabilityaccessibility/10-usability-tips-based-on-research-studies/"&gt;10 Usability Tips Based on Research Studies&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.softwarebyrob.com/2010/08/18/why-free-plans-dont-work/"&gt;Why Free Plans Don’t Work&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.softwarebyrob.com/2010/11/10/five-reasons-you-havent-launched/"&gt;Five Reasons You Haven’t Launched&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://arstechnica.com/open-source/news/2010/11/novell-acquired-by-attachmate-sells-some-assets-to-microsoft.ars"&gt;Novell acquired by Attachmate, sells some patents to Microsoft&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.softwarebyrob.com/2010/08/05/why-startup-founders-should-stop-reading-business-books/"&gt;Why Startup Founders Should Stop Reading Business Books&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/technology/blog/2010/nov/16/java-oracle-google-ibm-harmony-apache-crisis"&gt;The Java crisis: what are Oracle, IBM, Google and Apache fighting over?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.sitepoint.com/2010/11/19/mysql-mistakes-php-developers/"&gt;Top 10 MySQL Mistakes Made By PHP Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://devlicio.us/blogs/hadi_hariri/archive/2010/11/24/is-nosql-for-me-i-m-just-a-small-fish.aspx"&gt;Is NoSQL for me? I’m just a small fish&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/gg309184.aspx"&gt;Web Application Configuration Security Revisited&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://stephenwalther.com/blog/archive/2010/11/22/10-essential-tools-for-building-asp-net-websites.aspx"&gt;10 Essential Tools for building ASP.NET Websites&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.designersilverlight.com/2010/11/23/windows-phone-7-ux-one-size-does-not-fit-all/"&gt;Windows Phone 7 UX – One Size Does Not Fit All&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://grack.com/blog/2010/11/23/why-were-really-happy-with-appengine-and-not-going-anywhere-else/"&gt;Why we’re really happy with AppEngine (and not going anywhere else)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://nicklothian.com/blog/2010/11/23/a-pragmatic-approach-to-google-appengine/"&gt;A pragmatic approach to Google AppEngine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lemphers.com/blog/?p=40"&gt;Why the Windows Azure Nov 2010 SDK Rocks!!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/learn-sql-server/the-delete-statement-in-sql-server/?utm_source=simpletalk&amp;amp;utm_medium=email-main&amp;amp;utm_content=DELETE-20101130&amp;amp;utm_campaign=SQL"&gt;The DELETE statement in SQL Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.angrymonkeys.com.au/why-you-absolutely-must-write-an-api-before-y"&gt;Why you absolutely MUST write an API when you write your next app&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/46097?trk=DXRSS_"&gt;10 Things to Consider Before Starting a Business&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/architect/Article/45741?trk=DXRSS_"&gt;Agile Techniques: When and How to Conduct a Code Review&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://journal.paul.querna.org/articles/2010/10/12/java-trap-2010-edition/"&gt;Java Trap, 2010 Edition&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/71571/"&gt;Returning the Top X row for each group&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/architect/Article/46101?trk=DXRSS_"&gt;4 Things You Need to Know About Designing a Database for the Cloud&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://infoworld.com/d/developer-world/12-programming-mistakes-avoid-292"&gt;12 programming mistakes to avoid&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://whereoscope.wordpress.com/2010/12/07/android-vs-ios-a-developers-perspective/"&gt;Android vs iOS: A Developer’s Perspective&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/enterprise/Article/46129?trk=DXRSS_"&gt;10 Considerations for Building a Startup Team&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mashable.com/2010/12/15/google-chrome-os-and-the-big-picture/"&gt;Google, Chrome OS and the Big Picture&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/2010/12/the-dirty-truth-about-web-passwords.html"&gt;The Dirty Truth About Web Passwords&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html"&gt;5 Lessons We’ve Learned Using AWS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cubeia.com/index.php/blog/archives/140"&gt;The Duct Tape Architect&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jeremiahgrossman.blogspot.com/2010/12/sandboxing-welcome-to-dawn-of-two.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+JeremiahGrossman+%28Jeremiah+Grossman%29"&gt;Sandboxing: Welcome to the Dawn of the Two-Exploit Era&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devx.com/architect/Article/46168?trk=DXRSS_"&gt;Startup Insights: Putting a Product in the Marketplace&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.channelregister.co.uk/2010/12/17/facebook_messages_tech/"&gt;Facebook: Why our 'next-gen' comms ditched MySQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.unorganizedmachines.com/site/other-stuff/41-general/113-10-things-to-learn-next-year"&gt;10 Things to Learn Next Year&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://kovshenin.com/archives/pickle-vs-json-which-is-faster/"&gt;Pickle vs JSON — Which is Faster?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.untilnil.com/2010/08/appenginetemplate4/"&gt;AppEngine's Python Templates Benchmark Conclusion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.androided.me/5-interesting-facts-about-android/"&gt;5 Interesting Facts About Android&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mashable.com/2010/12/27/web-development-predictions/"&gt;10 Predictions for Web Development in 2011&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mashable.com/2010/10/07/mongodb-foursquare/"&gt;MongoDB CTO on Foursquare’s Scaling Issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/article.php/c18283"&gt;Microsoft and the Cloud: Year in Review&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/data-modeling/71725/"&gt;Disk Is Cheap! ORLY?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-3489842594456923315?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/-lyj4UDOgb0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/3489842594456923315/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=3489842594456923315&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/3489842594456923315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/3489842594456923315?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/-lyj4UDOgb0/articles-i-read-in-2010.html" title="Articles I read in 2010" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/01/articles-i-read-in-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGQ3k_cSp7ImA9WxFSFEw.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-5022004230731819514</id><published>2010-04-04T23:43:00.007+02:00</published><updated>2010-04-16T13:23:42.749+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-16T13:23:42.749+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title>LINQ to entities unncecessary casts</title><content type="html">Using LINQ with Entity Framework can give a big productivity boost. It removes the burden of O/R mapping and writing SQL queries. But Adding this layer can come with costs.&lt;br /&gt;I was writing a desktop application that uses a SQL CE  database and I used LINQ to entities to talk to the database.&lt;br /&gt;One of the methods was slow and I suspected that the reason can be a slow query. In normal, hand-written SQL queries, I inspect query plans to check the reason for the bad performance. So I started to log queries generated by LINQ statements using:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;(myQuery as ObjectQuery).ToTraceString()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then I took the SQL query from log file to SSMS and I started to make some enhancements. One of them was adding an index to a smallint column used in a foreign key. But I discovered that the index was not used by SQL CE. That was strange, but looking to the where statement generated I found something like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;WHERE ( CAST( [Extent1].[PageNumber] AS int)) = ( CAST( @p__linq__468 AS int))&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And the index on the PageNumber column (smallint) was not used as I found from execution plan that filtering is made after a table scan (not index seek).&lt;br /&gt;I suspected that the cast used in the above query is what caused the optimizer not to recognize that the index should be used, and I verified this by removing the cast and running the query in SSMS again. This time the index is being used.&lt;br /&gt;I started to Google about this issue. But found that SQL Server is smart enough not to be tricked by the silly cast. But since I'm using SQL CE. I had to find a way to fix this issue.&lt;br /&gt;Removing the unnecessary cast was out of my hands, so I decided to change the data type of the column to int and sacrifice some space to gain some speed. I did that and updated the model. And the where clause became:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;WHERE [Extent1].[PageNumber] = ( CAST( @p__linq__468 AS int))&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No casts for the PageNumber column and the index is used.&lt;br /&gt;&lt;br /&gt;When you use a high level technology, you take it with its pros and cons. But there are no excuses, you are responsible for what you ship to your client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-5022004230731819514?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/pay2ffyvMy0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/5022004230731819514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=5022004230731819514&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/5022004230731819514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/5022004230731819514?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/pay2ffyvMy0/linq-to-entities-unncecessary-casts.html" title="LINQ to entities unncecessary casts" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/04/linq-to-entities-unncecessary-casts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEARXc-eip7ImA9WxFTEk0.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-872619085360256706</id><published>2010-04-01T16:06:00.007+02:00</published><updated>2010-04-02T12:20:44.952+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-02T12:20:44.952+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Splitting csv file based on content in one line using PowerShell</title><content type="html">Problem:&lt;br /&gt;you have a csv file that contains department employees in a format like this:&lt;br /&gt;&lt;pre&gt;Department,Employee&lt;br /&gt;Sales,emp1&lt;br /&gt;HR,emp2&lt;br /&gt;Sales,emp3&lt;br /&gt;Finance,emp4&lt;br /&gt;Finance,emp5&lt;br /&gt;Security,emp6&lt;br /&gt;Security,emp7&lt;br /&gt;Security,emp8&lt;br /&gt;HR,emp9&lt;/pre&gt;And you need to split this file contents to separate files based on department name. So for the above example, we should get four files, Sales.csv, HR.csv, Finance.csv, and Security.csv. Each file contains only it's employees.&lt;br /&gt;And the solution is really shows the power of PowerShell pipelining:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Import-Csv file.csv | Group-Object -Property "department" | Foreach-Object {$path=$_.name+".csv" ; $_.group | Export-Csv -Path $path -NoTypeInformation}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Dissecting the above commands:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Import-Csv file.csv:&lt;/span&gt;&lt;br /&gt;Parses the csv file and returns an array of objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;| Group-Object -Property "department"&lt;/span&gt;:&lt;br /&gt;Since we need to split by department, it makes sense to group objects by the department property.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;| Foreach-Object {...}&lt;/span&gt;:&lt;br /&gt;We need to apply an action for each group (department). So we pipeline the resulted groups to Foreach-Object&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$path=$_.name+".csv"&lt;/span&gt;:&lt;br /&gt;Within the foreach, we need to create a temporary variable ($path) to be passed to the next pipeline responsible for the actual saving. Note that I use the semicolon ";" to separate this part from the next. And I used  the name property of the group (which maps to department name in our case) to format the file name.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;$_.group | Export-Csv -Path $path -NoTypeInformation&lt;/span&gt;:&lt;br /&gt;Then for each group we have, we need to export its contents (csv file rows) to the file path created in the past step. So we again pipeline the group property of the group item (which is an ArrayList of original objects) to the Export-CSV Cmdlt.&lt;br /&gt;&lt;br /&gt;And the result should be files like:&lt;br /&gt;&lt;pre&gt;Finance.csv:&lt;br /&gt;"Department","Employee"&lt;br /&gt;"Finance","emp4"&lt;br /&gt;"Finance","emp5"&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a style="font-style: italic;" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=31247" rel="tag"&gt;CodeProject&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-872619085360256706?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/9ScEcL-dC4A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/872619085360256706/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=872619085360256706&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/872619085360256706?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/872619085360256706?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/9ScEcL-dC4A/splitting-csv-file-based-on-content-in.html" title="Splitting csv file based on content in one line using PowerShell" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/04/splitting-csv-file-based-on-content-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NRn4_cSp7ImA9WxFTEU8.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-2084988464835851870</id><published>2010-04-01T13:54:00.008+02:00</published><updated>2010-04-01T14:28:17.049+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-01T14:28:17.049+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title>Mounting file systems on Ubuntu</title><content type="html">I'm not an experienced Linux user. But I use Ubuntu (after trying redhat and Fedora) since it's supposed to be (Linux for human beings).&lt;br /&gt;I have both Vista  &lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;yes :(&lt;/span&gt;&lt;/span&gt;  and Ubuntu on the same machine. And I regularly need to access ntfs file system with windows files when using Ubuntu.&lt;br /&gt;When I open the file system from nautilus, I get this message, and I have to enter the root password.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sN0MWR4vPfs/S7SLkDDJVRI/AAAAAAAAANQ/iCiz4bAVUsA/s1600/Screenshot-Authenticate.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 205px;" src="http://4.bp.blogspot.com/_sN0MWR4vPfs/S7SLkDDJVRI/AAAAAAAAANQ/iCiz4bAVUsA/s400/Screenshot-Authenticate.png" alt="" id="BLOGGER_PHOTO_ID_5455138500062565650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;This is very annoying. And although the prompting for the password can be suppressed (but this is another story). The real issue is that the file system is not automatically mounted when the system starts up. This means that when using an application that needs to access the hard drive (virtual box for example). I have to open the drive from nautilus first.&lt;br /&gt;So the solution is to edit the &lt;span style="font-weight: bold;"&gt;/etc/fstab&lt;/span&gt; file that contains the information needed to mount volumes on startup.&lt;br /&gt;This is OK, I opened a terminal, and ran &lt;span style="font-weight: bold;"&gt;sudo -i &lt;/span&gt;to run as root then made a folder to mount the volume under:&lt;span style="font-weight: bold;"&gt; mkdir /mount/DriveName&lt;/span&gt;&lt;br /&gt;then &lt;span style="font-weight: bold;"&gt;gedit&lt;/span&gt; and opened /etc/fstab/ and added:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/dev/sda1    /media/DriveName    ntfs    rw,nosuid,nodev,allow_other,default_permissions,blksize=4096    0    0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;restarted and I could access the file system without prompting for password. Then I started to test how I can access the file system (I'm a good developer and I do test my work). Everything looked OK. But when I try to delete a file:&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;Cannot move file to trash, do you want to delete immediately?&lt;/blockquote&gt;I checked the permissions and found that root is the owner and the group that has access. I also could write to .Trash-1000 (similar to $RECYCLE.BIN in windows)&lt;br /&gt;The solution was to go back to fstab and adding the username I use as the owner:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/dev/sda1    /media/DriveName    ntfs    rw,nosuid,nodev,allow_other,default_permissions,blksize=4096,uid=username    0    0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And finally, I'm happy !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-2084988464835851870?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/ZCkeqeqsUp0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/2084988464835851870/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=2084988464835851870&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2084988464835851870?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2084988464835851870?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/ZCkeqeqsUp0/mounting-file-systems-on-ubuntu.html" title="Mounting file systems on Ubuntu" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_sN0MWR4vPfs/S7SLkDDJVRI/AAAAAAAAANQ/iCiz4bAVUsA/s72-c/Screenshot-Authenticate.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/04/mounting-file-systems-on-ubuntu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcBRnY_fCp7ImA9WxBbEEU.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-2615985796119474958</id><published>2010-03-08T23:06:00.005+02:00</published><updated>2010-03-08T23:34:17.844+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-08T23:34:17.844+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Changing AJAXtoolkit:CalendarExtender day format</title><content type="html">AJAX toolkit has a set of awesome controls, and very customizable too. But one property that is not customizable OOB is how the day names are displayed in the Calendar extender.&lt;br /&gt;The displayed format is two letters only. But what if you want it to be displayed in three letters?&lt;br /&gt;Here a small cosmetic surgery (i.e. code changes).&lt;br /&gt;&lt;br /&gt;&lt;table align="center"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Before&lt;/td&gt;&lt;br /&gt;&lt;td&gt;After&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sN0MWR4vPfs/S5Vo_fxF3KI/AAAAAAAAAM8/vu0oxhuNDRI/s1600-h/AJAXtoolkit_CalendarExtender_Before.png"&gt;&lt;img style="cursor: pointer; width: 171px; height: 200px;" src="http://2.bp.blogspot.com/_sN0MWR4vPfs/S5Vo_fxF3KI/AAAAAAAAAM8/vu0oxhuNDRI/s400/AJAXtoolkit_CalendarExtender_Before.png" alt="" id="BLOGGER_PHOTO_ID_5446374764442934434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sN0MWR4vPfs/S5VpHjyjzZI/AAAAAAAAANE/3zBf7LJc_58/s1600-h/AJAXtoolkit_CalendarExtender_After.png"&gt;&lt;img style="cursor: pointer; width: 178px; height: 209px;" src="http://1.bp.blogspot.com/_sN0MWR4vPfs/S5VpHjyjzZI/AAAAAAAAANE/3zBf7LJc_58/s400/AJAXtoolkit_CalendarExtender_After.png" alt="" id="BLOGGER_PHOTO_ID_5446374902961786258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So, what does it take to do it successfully?&lt;br /&gt;I opened &lt;span style="font-weight: bold;"&gt;CalendarBehavior.debug.js&lt;/span&gt;, which contains the debug version of the extender's JavaScript. Day names were obtained from an array named: &lt;span style="font-weight: bold;"&gt;dtf.ShortestDayNames&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dayCell.appendChild(document.createTextNode(dtf.ShortestDayNames[(i + firstDayOfWeek) % 7]));&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Searching the library code, I found that this array is defined in &lt;span style="font-weight: bold;"&gt;MicrosoftAjax.debug.js&lt;/span&gt;. as:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And fortunately, another array was defined with three letters names:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So all what it takes is to replace &lt;span style="font-weight: bold;"&gt;ShortestDayNames &lt;/span&gt;with &lt;span style="font-weight: bold;"&gt;AbbreviatedDayNames &lt;/span&gt;in both &lt;span style="font-weight: bold;"&gt;CalendarBehavior.debug.js&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;CalendarBehavior.js&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dayCell.appendChild(document.createTextNode(dtf.AbbreviatedDayNames[(i + firstDayOfWeek) % 7]));&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And build.&lt;br /&gt;&lt;br /&gt; It's great to have the source between your hands :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-2615985796119474958?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/fOXVCLMlojM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/2615985796119474958/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=2615985796119474958&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2615985796119474958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2615985796119474958?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/fOXVCLMlojM/changing-ajaxtoolkitcalendarextender.html" title="Changing AJAXtoolkit:CalendarExtender day format" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_sN0MWR4vPfs/S5Vo_fxF3KI/AAAAAAAAAM8/vu0oxhuNDRI/s72-c/AJAXtoolkit_CalendarExtender_Before.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/03/changing-ajaxtoolkitcalendarextender.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEER3g6cCp7ImA9WxBWFEk.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-7136071628187495993</id><published>2010-02-06T10:18:00.002+02:00</published><updated>2010-02-06T10:23:26.618+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-06T10:23:26.618+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>My Twitter account</title><content type="html">&lt;div&gt;I'm not a big fan of social networking sites. But I think twitter can be a great information sharing platform. &lt;a href="http://twitter.com/HeshamAmin"&gt;Follow me&lt;/a&gt;, I don't intend to make so much noise anyway :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-7136071628187495993?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/WhfTWxX5wL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/7136071628187495993/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=7136071628187495993&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/7136071628187495993?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/7136071628187495993?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/WhfTWxX5wL4/my-twitter-account.html" title="My Twitter account" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/02/my-twitter-account.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcDQnc8cCp7ImA9WxBXGE0.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-1035357993313857414</id><published>2010-01-29T23:52:00.004+02:00</published><updated>2010-01-30T00:11:13.978+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-30T00:11:13.978+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><title>Tip: turn auto close Off for you SQL Server databases</title><content type="html">On a development machine, I had a high CPU usage for the SQL server service. To understand the reason, I looked at the SQL Server logs (From SQL Server Management Studio - SQL Server Logs).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_sN0MWR4vPfs/S2NZv6Y8k3I/AAAAAAAAAJo/HeE9YgyWKiQ/s400/SSMS_Log_current.png" style="cursor:pointer; cursor:hand;width: 500px; height: 444px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5432284255201563506" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you may notice from the screenshot above, the activity of starting the reporting service database was recurring again and again.&lt;/div&gt;&lt;div&gt;I checked the database options, and the noticed that the &lt;i&gt;auto close&lt;/i&gt; property was set true. This explains why SQL Server tries to start the database at every connection.&lt;/div&gt;&lt;div&gt;If the Auto close property is set to on:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;the database is closed and shut down cleanly when the last user of the database exits and all processes in the database complete.&lt;/blockquote&gt;&lt;/div&gt;As quoted from &lt;a href="http://msdn.microsoft.com/en-us/library/aa933082(SQL.80).aspx"&gt;msdn&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;Unfortunately, the property was set to true when the database was created during the SQL server installation.&lt;/div&gt;&lt;div&gt;Turning Auto close to false (off), and maybe restarting the service, returned the CPU usage of the SQL Server service to a normal level.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-1035357993313857414?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/oiMZghwnVCk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/1035357993313857414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=1035357993313857414&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/1035357993313857414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/1035357993313857414?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/oiMZghwnVCk/tip-turn-auto-close-off-for-you-sql.html" title="Tip: turn auto close Off for you SQL Server databases" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sN0MWR4vPfs/S2NZv6Y8k3I/AAAAAAAAAJo/HeE9YgyWKiQ/s72-c/SSMS_Log_current.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/01/tip-turn-auto-close-off-for-you-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcMRH4-eCp7ImA9WxBRE0k.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-4740531550978791158</id><published>2010-01-01T01:00:00.134+02:00</published><updated>2010-01-01T13:58:05.050+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-01T13:58:05.050+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Articles I read in 2009</title><content type="html">A new year, and as a habit, I share &lt;strike style="font-style: italic;"&gt;the&lt;/strike&gt; a list of articles I read in the past year, 2009.&lt;br /&gt;It was a tough year on the personal, career and study levels, I wish I can contribute more to the community in the new year through blogging, article writing and open source software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;2008 list can be fond &lt;a href="http://forloveofsoftware.blogspot.com/2008/02/articles-i-read-in-2008.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;2007 list can be fond &lt;a href="http://forloveofsoftware.blogspot.com/2007/02/list-of-articles-i-read-on-2007.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mysql/article.php/10897_3547931_1/MySQL-Stored-Procedures-Part-2.htm"&gt;MySQL Stored Procedures: Part 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1642"&gt;Finding a better candidate for your clustered indexes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1239"&gt;How to get index usage information in SQL Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sql-server-performance.com/articles/dba/PeertoPeer_Replication_in_SQL_Server_2008_p1.aspx"&gt;Peer-to-Peer Replication in SQL Server 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Hardware&amp;amp;articleId=9124740&amp;amp;taxonomyId=12"&gt;Elgan: Why products fail&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mysql/article.php/10897_3554616_1/MySQL-Stored-Procedures-Part-3.htm"&gt;MySQL Stored Procedures: Part 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm"&gt;MySQL Stored Functions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.databasejournal.com/features/mysql/article.php/3638426/MySQL-and-Character-Sets.htm"&gt;MySQL and Character Sets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/cisg/archive/2008/12/22/security-code-review-using-cat-net-part-1.aspx"&gt;Security Code Review Using CAT.NET - Part 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/cisg/archive/2008/12/22/security-code-review-using-cat-net-part-2.aspx"&gt;Security Code Review Using CAT.NET - Part 2 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;amp;A=/article/09/01/07/01NF-code-management_1.html"&gt;Avoiding the high cost of bad code&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/464349"&gt;Self-Promotion at Work: 8 Tips for Shy People&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlinthewild.co.za/index.php/2008/12/31/on-the-output-of-a-data-modification/"&gt;On the OUTPUT of a data modification&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www2.computer.org/portal/web/buildyourcareer/careerwatch?utm_source=bronto&amp;amp;utm_medium=email&amp;amp;utm_term=10+Hot+Technologies+for+2009&amp;amp;utm_content=ebeid_soliman%40hotmail.com&amp;amp;utm_campaign=BYC-Issue+13-Jan.+8"&gt;What’s Hot for 2009? Top 10 areas of opportunity in the downturn&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1657"&gt;How To Get Active Directory Users and Groups Using SQL Server Integration Services SSIS 2005&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1342889,00.html"&gt;The sqlcmd utility in SQL Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/scripting/64884/"&gt;Scripting INSERTs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163430.aspx"&gt;Test Run: Lightweight Testing with Windows PowerShell&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/01/12/10-useful-web-application-interface-techniques/"&gt;10 Useful Web Application Interface Techniques&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.b-eye-network.com/view/9296"&gt;Calculations Made Outside of the Data Warehouse&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://geosoft.no/development/unittesting.html"&gt;Unit Testing Guidelines&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/62159/"&gt;Linking to the Previous Row&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/DAC/65100/"&gt;DAC - What to Execute when Connected?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Development&amp;amp;articleId=9126462&amp;amp;taxonomyId=11"&gt;How to choose and use source code analysis tools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.betanews.com/article/Mono_22_may_overtake_NET_in_some_critical_categories/1232551276"&gt;Mono 2.2 may overtake .NET in some critical categories&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.csoonline.com/article/377613/Rob_Cheyne_Pushes_Developer_Security_Awareness"&gt;Rob Cheyne Pushes Developer Security Awareness&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lifehacker.com/5097290/making-time-for-the-mits-most-important-things"&gt;Making Time for the MITs (Most Important Things)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://softwareas.com/cross-domain-communication-with-iframes"&gt;Cross-Domain Communication with IFrames&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.scottbellware.com/2008/12/productivity-it-comes-from-software.html"&gt;Productivity: It Comes from Software Design Rather than Software Tools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.devx.com/2009/01/10-tips-for-writing-consistent.html"&gt;10 Tips for Writing Consistently Popular Programming Articles&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.theage.com.au/cgi-bin/common/popupPrintArticle.pl?path=/articles/2009/02/06/1233423479465.html"&gt;The big fat lie about battery life&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lhotka.net/weblog/WhySilverlightIsTheFuture.aspx"&gt;Why Silverlight is the future&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblog.infoworld.com/fatalexception/archives/2009/02/mono_mania.html"&gt;The case for supporting and using Mono&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Development&amp;amp;articleId=9126595&amp;amp;taxonomyId=11"&gt;Who owns the code? Beware copyright pitfalls&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ostatic.com/blog/over-15-top-open-source-tools-for-web-developers"&gt;Over 15 Top Open Source Tools for Web Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://reddevnews.com/blogs/print.aspx?blog=3456"&gt;What Can Database Developers and DBAs Do About SharePoint?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/design/article.php/10925_3801931"&gt;Introduction to Multi-Tenant Architecture&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/blogs/tim_mitchell/archive/2009/02/11/things-i-wish-i-had-known.aspx"&gt;Things I Wish I Had Known&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/481280/Windows_Enterprise_Features_Explained_"&gt;Windows 7: Enterprise Features Explained&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/63115/"&gt;Correlated Joins Using "Apply"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;amp;A=/article/09/02/27/Microsoft_converging_programming_languages_1.html"&gt;Microsoft converging programming languages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/483160"&gt;How to Fix The Productivity Problem That's Killing the Software Industry&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.construx.com/blogs/stevemcc/archive/2008/05/13/Software_2700_s-Classic-Mistakes_2D002D00_2008.aspx"&gt;Software's Classic Mistakes--2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sdtimes.com/content/article.aspx?ArticleID=33233&amp;amp;print=true"&gt;Windows &amp;amp; .NET Watch: Python: Arbitrarily Interesting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Careers&amp;amp;articleId=9127243&amp;amp;taxonomyId=10"&gt;The interview question you must be ready for&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.readwriteweb.com/archives/microsoft_semblio_sdk.php"&gt;Microsoft Semblio Promises Easy Content Creation for Educators&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.15seconds.com/issue/090220.htm"&gt;Introduction to Version Control with Subversion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2005/62464/"&gt;Row Level Versioning&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/66030/"&gt;SQL Server 2005 Paging – The Holy Grail&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_general/tipstricks/article.php/c15941/"&gt;TIP: Closing your WCF Connections properly&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1692"&gt;Using schema binding to improve SQL Server UDF performance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/WCF/Custom_Authorization_WCF.aspx"&gt;Custom Authorization in WCF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/net/csharp/article.php/3812716"&gt;Tapping Into Microsoft Live Services with C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoq.com/news/2009/04/agile-optimal-team-size"&gt;Is Five the Optimal Team Size?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/IP/emailembeddedimages.aspx"&gt;Sending Email Using Embedded Images&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.code-magazine.com/article.aspx?quickid=0611051"&gt;Fundamentals of WCF Security&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.networkworld.com/cgi-bin/mailto/x.cgi?pagetosend=/export/home/httpd/htdocs/news/2009/041609-microsoft-security-plan.html&amp;amp;pagename=/news/2009/041609-microsoft-security-plan.html&amp;amp;pageurl=http://www.networkworld.com/news/2009/041609-microsoft"&gt; Microsoft discloses ambitious security strategy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freelanceswitch.com/freelancing-essentials/secret-sauce-10-game-changing-tips-from-the-worlds-top-freelancers/"&gt;Secret Sauce: 10 Game-changing Tips from the World’s Top Freelancers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.technewsworld.com/rsstory/66916.html"&gt;The Tower of Techno-Babel: What Languages Do Devs Love Now?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/articles/article.aspx?p=729101&amp;amp;seqNum=5"&gt;PowerShell: A More In-Depth Look - Error Handling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_general/internet/article.php/c16073/"&gt;Tip: HTTP Conditional Get&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/net/net/article.php/3815506"&gt;Handling Data Conflicts in the Microsoft Sync Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/System+Tables/66335/"&gt;What is sysprocesses and what can it do for you?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2005+-+TSQL/2765/"&gt;Usages of CONTEXT_INFO&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.harvardbusiness.org/cs/2009/02/for_fullscale_returns_do_thing.html"&gt;Why Doing Things Half Right Gives You the Best Results&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1723"&gt;Auto generate change scripts in SQL Server Management Studio (SSMS) for tables&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/66097/"&gt;There Must Be 15 Ways To Lose Your Cursors... part 1, Introduction&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/66494/"&gt;There Must Be 15 Ways To Lose Your Cursors… Part 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/dotnet/Isolated_Storage.aspx"&gt;Using Isolated Storage to Store Application User Data in the .NET Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/Articles/35447/The-Developer-Iteration.aspx"&gt;The Developer Iteration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.programmableweb.com/2009/04/30/yahoos-yql-makes-the-internet-your-database/"&gt;Yahoo’s YQL Makes the Internet Your Database&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/04/30/what-happens-when-you-perform-a-rollback-inside-a-trigger.aspx"&gt;What happens when you perform a rollback inside a trigger?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlserverpedia.com/blog/sql-server-bloggers/my-top-5-sql-server-indexing-best-practices/"&gt;My Top 5 SQL Server Indexing Best Practices&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.technet.com/andrew/archive/2009/04/28/sql-server-standard-edition-in-a-virtual-world.aspx"&gt;SQL Server standard edition in a virtual world&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/07/08/what-i-ve-already-done-to-be-a-better-developer.aspx"&gt;What I've already done to be a better developer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/net/csharp/article.php/3818491"&gt;Tip: Detecting Defects in C# Programs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.builderau.com.au/program/dotnet/soa/Implementing-multithreading-in-NET-Two-major-factors-to-consider/0,339028399,339294421,00.htm"&gt;Implementing multithreading in .NET: Two major factors to consider&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;taxonomyName=Web+Site+Management&amp;amp;articleId=9133056&amp;amp;taxonomyId=62"&gt;JavaScript - the Web site performance killer, Google guru says&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblog.com/blogs/paul_nielsen/archive/2009/05/09/why-use-stored-procedures.aspx"&gt;Why use Stored Procedures?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.technet.com/dataplatforminsider/archive/2009/05/13/master-data-services-what-s-the-big-deal.aspx"&gt;Master Data Services – What’s the big deal?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/jasonz/archive/2009/05/18/announcing-vs2010-net-framework-4-0-beta-1.aspx"&gt;Announcing VS2010 / .NET Framework 4.0 Beta 1!&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/05/09/flash-vs-silverlight-what-suits-your-needs-best/"&gt;Flash vs. Silverlight: What Suits Your Needs Best?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/work/CrackingTheITILV3.aspx"&gt;Cracking the ITIL V3 Foundation exam&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://windowsteamblog.com/blogs/developers/archive/2009/05/18/windows-7-managed-code-apis.aspx"&gt;Windows 7 Managed Code APIs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/work/CrackingthePMP.aspx"&gt;Cracking the PMP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SSRS/65810/"&gt;Add Styles to Your Reporting Services Reports&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Reporting+Services/65811/"&gt;Centralising Reporting Services Stylesheets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://google-code-updates.blogspot.com/2009/06/introducing-page-speed.html"&gt;Introducing Page Speed&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/bartd/archive/2009/05/03/sometimes-the-simplest-solution-isn-t-the-best-solution-the-all-in-one-search-query.aspx"&gt;Sometimes the Simplest Solution Isn't the Best Solution (The All-In-One Search Query)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dumblittleman.com/2009/06/10-answers-you-should-know-before-your.html"&gt;10 Answers You Should Know Before Your Job Interview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQLServerCentral/66910/"&gt;My Approach to Writing for SQLServerCentral&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_asp/webforms/article.php/c16157"&gt;Saving Bandwidth Using UpdatePanel Triggers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/net/net/article.php/11087_3823551"&gt;Create Quick Database Interfaces with ASP.NET Dynamic Data&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/06/23/10-ui-design-patterns-you-should-be-paying-attention-to/"&gt;10 UI Design Patterns You Should Be Paying Attention To&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc700340.aspx"&gt;The Entity Framework In Layered Architectures&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/columns/vb/article.php/c16189/"&gt;Hardware's Dirty Little Secret, or Why Software Can be Mass Produced&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/sql-tools/how-to-identify-blocking-problems-with-sql-profiler/"&gt;How to Identify Blocking Problems with SQL Profiler&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/t-sql-programming/avoiding-the-eav-of-destruction/"&gt;Avoiding the EAV of Destruction&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblog.com/blogs/kevin_kline/archive/2009/06/23/old-performance-tuning-recommendations-die-hard.aspx"&gt; Old Performance Tuning Recommendations Die Hard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblogcasts.com/blogs/simons/archive/2009/05/27/Myth---I-don-t-need-point-in-time-recovery-so-I-don-t-need-the-transaction-log-.aspx"&gt;Myth : I don't need point in time recovery so I don't need the transaction log&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/design/article.php/3825326"&gt;Browser Compatibility Development Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/65806/"&gt;Comparison of Dates in SQL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/reporting-services/RDLC_and_DataSet.aspx"&gt;Using RDLC and DataSets to develop ASP.NET Reporting Services Reports&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/cs/CSharp4Features.aspx"&gt;C# 4.0's New Features Explained&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server/67215/"&gt;Map IP Address to a Geographical Location&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd882522.aspx"&gt;Anti-Patterns To Avoid In N-Tier Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx"&gt;Breaking All The Rules with WCF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/articles/2009/07/01/the-cost-of-static.aspx"&gt;The Cost of Static&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/guides/content.aspx?g=dotnet&amp;amp;seqNum=761"&gt;Learning from Our Mistakes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.informit.com/guides/content.aspx?g=dotnet&amp;amp;seqNum=763"&gt;There Is No Easy Fix&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee335707.aspx"&gt;Claims-Based Authorization with WIF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee658248.aspx"&gt;How to detect and avoid memory and resources leaks in .NET applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/68337/"&gt;An Un-indexed Foreign Key Gotcha&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cmcrossroads.com/cm-basics/13112"&gt;Seven Lead Principles&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://reddevnews.com/blogs/desmond-file/2009/11/future-of-aspnet.aspx"&gt;Looking to the Future of ASP.NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.azuresupport.com/2009/12/sql-azure-introduction/"&gt;Introduction to SQL Azure&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.makeuseof.com/tag/search-engine-optimization-mistakes-that-will-destroy-your-website/"&gt;10 Common SEO Mistakes that can Destroy Your Website [Part I]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sankarsan.wordpress.com/2009/01/04/wcf-behavior/"&gt;WCF Behavior&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee819135.aspx"&gt;Using Agile Techniques to Pay Back Technical Debt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee819133.aspx"&gt;Using Business Connectivity Services in SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-4740531550978791158?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/_s4LEm7Ye10" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/4740531550978791158/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=4740531550978791158&amp;isPopup=true" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/4740531550978791158?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/4740531550978791158?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/_s4LEm7Ye10/articles-i-read-in-2009.html" title="Articles I read in 2009" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>3</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2010/01/articles-i-read-in-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BR387cCp7ImA9WxNbEE0.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-2064436684890751931</id><published>2009-11-12T06:53:00.002+02:00</published><updated>2009-11-12T07:14:16.108+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-12T07:14:16.108+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><title>Getting started with SharePoint 2010</title><content type="html">SharePoint 2010 is coming with a lot of new features and if you are seriously interested in  SharePoint, you should start build your 2010's knowledge. My colleague Mourad Askar posted on &lt;a href="http://blog.maskar.net/" target="_blank"&gt;his blog&lt;/a&gt; about &lt;a href="http://blog.maskar.net/sharepoint/2009/10/post_60" target="_blank"&gt;SharePoint 2010 Information and Tutorials&lt;/a&gt; which I find very informative.&lt;br /&gt;On Microsoft's &lt;a href="http://sharepoint2010.microsoft.com/Pages/default.aspx" target="_blank"&gt;SharePoint 2010 site&lt;/a&gt;, you can find tutorials, videos and you can &lt;a href="http://sharepoint2010.microsoft.com/try-it/Pages/Trial.aspx" target="_blank"&gt;register for the beta&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One important thing, SharePoint 2010 will no run on 32Bit machines. If you have a core 2 due processor, it supports 64 bit. And if in doubt and want to run SharePoint on a virtual machine, check VMWare's tool that tests if your processor is capable of running a 64bit guest OS.&lt;br /&gt;&lt;a href="http://download3.vmware.com/software/wkst/VMware-guest64check-5.5.0-18463.exe" target="_blank"&gt;http://download3.vmware.com/software/wkst/VMware-guest64check-5.5.0-18463.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Personally, I have a core 2 Due Laptop with Vista 32 bit installed. I installed the 64 bit edition of Linux Ubuntu 9.04 and can host Windows 2008 64bit OS using &lt;a href="http://www.virtualbox.org/" target="_blank"&gt;Virtual Box&lt;/a&gt;. What's good about this scenario is that Ubuntu's memory usage is light and gives a good space to host virtual machines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-2064436684890751931?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/EoT9Tb6sY9Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/2064436684890751931/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=2064436684890751931&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2064436684890751931?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2064436684890751931?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/EoT9Tb6sY9Q/getting-started-with-sharepoint-2010.html" title="Getting started with SharePoint 2010" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/11/getting-started-with-sharepoint-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8BQXoyfSp7ImA9WxJUE0w.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-2666402648491454817</id><published>2009-07-11T13:30:00.006+02:00</published><updated>2009-07-11T14:04:10.495+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-11T14:04:10.495+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Using PowerShell and SMO to change database columns collations</title><content type="html">Changing a SQL serve database columns collations manually can be a tedious task. I have a database that I want to change the collation of all its non system columns to "Arabic_CS_AS".&lt;br /&gt;Here is a PowerShell script that uses SQL Server Management Objects (SMO) to do this task:&lt;br /&gt;(note that I load the assemblies with version 10.0.0 which is the version of SQL server 2008 I have installed on my system)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")&lt;br /&gt;[System.Reflection.Assembly]::Load("Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")&lt;br /&gt;&lt;br /&gt;$con = New-Object Microsoft.SqlServer.Management.Common.ServerConnection&lt;br /&gt;&lt;br /&gt;$con.ConnectionString="Data Source=.\SQLExpress;Integrated Security=SSPI;"&lt;br /&gt;&lt;br /&gt;$con.Connect()&lt;br /&gt;&lt;br /&gt;$srv = New-Object Microsoft.SqlServer.Management.Smo.Server $con&lt;br /&gt;$db = $srv.Databases["test"]&lt;br /&gt;&lt;br /&gt;foreach ($table in $db.Tables)&lt;br /&gt;{&lt;br /&gt;  if($table.IsSystemObject)&lt;br /&gt;  { &lt;br /&gt;      continue&lt;br /&gt;  }&lt;br /&gt;   &lt;br /&gt;  foreach($column in $table.Columns)&lt;br /&gt;  {&lt;br /&gt;      if(-not ([string]::IsNullOrEmpty($column.Collation)))&lt;br /&gt;      {&lt;br /&gt;          $column.Collation = "Arabic_CS_AS"&lt;br /&gt;          $column.Alter()&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$con.Disconnect()&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-2666402648491454817?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/mgMubc0F8J0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/2666402648491454817/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=2666402648491454817&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2666402648491454817?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2666402648491454817?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/mgMubc0F8J0/using-powershell-and-smo-to-change.html" title="Using PowerShell and SMO to change database columns collations" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/07/using-powershell-and-smo-to-change.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMFQHo6cSp7ImA9WxJVFUk.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-3348307055231590716</id><published>2009-07-02T17:05:00.003+02:00</published><updated>2009-07-02T17:26:51.419+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-02T17:26:51.419+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Not calling Dispose can cause InvalidComObjectException</title><content type="html">During load testing an application that performs thousands of operations against Active Directory and under high load conditions. The process stopped working and our logs showed this error:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;System.Runtime.InteropServices.InvalidComObjectException: COM object that has been &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;separated from its underlying RCW cannot be used.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Searching for this error, most answers on forums referred to trying to access a COM object from a  thread other than the thread that created it. We use multithreading, but we did not use objects across threads.&lt;br /&gt;&lt;br /&gt;Logs pointed us the location of the code where we should investigate. I made a review on a method that was called thousands of times and creates &lt;span style="font-weight: bold;"&gt;DirectoryEntry&lt;/span&gt; instances. The &lt;span style="font-weight: bold;"&gt;DirectoryEntry&lt;/span&gt; was not disposed!!&lt;br /&gt;&lt;br /&gt;We were not sure that this can cause the above exception, but it was a bug and it needed to be fixed anyway. We fixed it and reapplied the scenarios that caused this exception, and it disappeared.&lt;br /&gt;&lt;br /&gt;Other that understanding a new reason for that mysterious exception, there are some useful lessons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Proper logging can help identifying errors quickly.&lt;/li&gt;&lt;li&gt;Failing to dispose disposable objects causes performance penalties that some developers underestimate their effect. It can make your application stop working!!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Early code review is important to spot these kinds of errors.&lt;/li&gt;&lt;li&gt;Test your application under real-life conditions.&lt;/li&gt;&lt;li&gt;Using memory profilers and dispose trackers is worth trying in some cases.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-3348307055231590716?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/0_bP9IM016Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/3348307055231590716/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=3348307055231590716&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/3348307055231590716?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/3348307055231590716?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/0_bP9IM016Q/not-calling-dispose-can-cause.html" title="Not calling Dispose can cause InvalidComObjectException" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/07/not-calling-dispose-can-cause.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIMQ3Y5fyp7ImA9WxJREkg.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-7702830827163087538</id><published>2009-05-13T23:21:00.007+02:00</published><updated>2009-05-13T23:36:22.827+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-13T23:36:22.827+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web" /><title>More great things about Visual Web Developer 2008 Express</title><content type="html">In case you have not installed it yet: In addition to the &lt;a href="http://forloveofsoftware.blogspot.com/2007/11/things-i-liked-about-visual-web.html"&gt;great features Visual Web Developer 2008 Express&lt;/a&gt; has. SP1 is even much better!!&lt;br /&gt;&lt;br /&gt;It now has more project tamplates. The most important one is the web application template (&lt;em&gt;I hate the Website template&lt;/em&gt;).&lt;br /&gt;You can also add class library project to the same solution!!&lt;br /&gt;&lt;p align="center"&gt;&lt;a href="http://1.bp.blogspot.com/_sN0MWR4vPfs/Sgs8ZTk2hgI/AAAAAAAAAIQ/8q5yjgVkuxY/s1600-h/VisualStudioExpress2008NewProject.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5335424588999722498" style="WIDTH: 436px; CURSOR: hand; HEIGHT: 292px" alt="" src="http://1.bp.blogspot.com/_sN0MWR4vPfs/Sgs8ZTk2hgI/AAAAAAAAAIQ/8q5yjgVkuxY/s400/VisualStudioExpress2008NewProject.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;Download and enjoy!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-7702830827163087538?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/IejHVkr1wBg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/7702830827163087538/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=7702830827163087538&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/7702830827163087538?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/7702830827163087538?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/IejHVkr1wBg/more-great-things-about-visual-web.html" title="More great things about Visual Web Developer 2008 Express" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_sN0MWR4vPfs/Sgs8ZTk2hgI/AAAAAAAAAIQ/8q5yjgVkuxY/s72-c/VisualStudioExpress2008NewProject.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/05/more-great-things-about-visual-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UNR3c8eyp7ImA9WxJSEkQ.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-2927165126813223698</id><published>2009-05-02T19:53:00.005+02:00</published><updated>2009-05-02T21:08:16.973+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-02T21:08:16.973+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Downloading files using Windows PowerShell with progress information</title><content type="html">Downloading a file using PowerShell is very easy, you just need to call &lt;span style="font-weight: bold;"&gt;WebClient.DownloadFile &lt;/span&gt;method from the .net framework. But let's make things more interesting.&lt;br /&gt;&lt;br /&gt;I need a script to download a list of files whose URLs are specified in a file to local folder. And the script should check if the file already exists. If it is, it should skip to the next file. To give a better user experience, a &lt;span style="font-style: italic;"&gt;(progress bar)&lt;/span&gt; will be displayed to notify the user about the progress.&lt;br /&gt;Error handling and reporting is important. So we'll take care of it inside the script.&lt;br /&gt;&lt;br /&gt;Let's start analyzing how to accomplish this.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The code:&lt;/span&gt;&lt;br /&gt;The first line of code defines the script parameters which are &lt;span style="font-weight: bold;"&gt;inputFile&lt;/span&gt;: the path of the file that contains the list of URLs and &lt;span style="font-weight: bold;"&gt;folder&lt;/span&gt; where we'll download files to.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;param ([string] $inputFile,[string]$folder)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We make some basic input validation to check if parameters are set:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;trap {Write-Host "Error: $_" -Foregroundcolor Red -BackGroundColor Black;exit}&lt;br /&gt;&lt;br /&gt;if([string]::IsNullOrEmpty($folder))&lt;br /&gt;{&lt;br /&gt;throw "folder parameter not set";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if([string]::IsNullOrEmpty($inputFile))&lt;br /&gt;{&lt;br /&gt;throw "inputFile parameter not set";&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The above code starts with defining an error handler that will run when a stopping error occurs in the script (in the current scope). It simply say: When an error occurs, write it to the host and exit the script.&lt;br /&gt;Note that I pass &lt;span style="font-weight: bold;"&gt;Foregroundcolor&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;BackGroundColor&lt;/span&gt; parameter to the &lt;span style="font-weight: bold;"&gt;Write-Host&lt;/span&gt; Cmdlet so the user gets the same experience he gets with other PowerShell errors.&lt;br /&gt;The next validation code simply check if the parameters are passed. If not, an error is thrown.&lt;br /&gt;&lt;br /&gt;Next, we read the contents of the input file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$files = Get-Content $inputFile -ErrorAction Stop&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I use the &lt;span style="font-weight: bold;"&gt;Get-Content&lt;/span&gt; Cmdlet specifying the &lt;span style="font-weight: bold;"&gt;ErrorAction&lt;/span&gt; parameter = Stop. &lt;span style="font-weight: bold;"&gt;ErrorAction&lt;/span&gt; is a common parameter for PowerShell Cmdlets. The Stop value asks PowerShell to consider any errors fatal errors that will stop the script. But as I defined the trap handler as shown above, the same error handling will apply. The error message will be displayed and the script will exit.&lt;br /&gt;&lt;br /&gt;The next line creates a WebClient object to be used in the download porcess:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$web = New-Object System.Net.WebClient&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Next, I initialize a counter to be used in progress display based on the number of files downloaded so far. The a for loop is used to iterate on files.&lt;br /&gt;Note that I define another trap handler that will act whenever an error is thrown within the for loop scope. It calls a specific function that handles download errors then continues the loop:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;foreach($file in $files)&lt;br /&gt;{&lt;br /&gt;trap {ErrorHandler($_);continue}&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Inside the loop, I create the download file path and display the progress using &lt;span style="font-weight: bold;"&gt;Write-Progress &lt;/span&gt;Cmdlet.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$path = [IO.Path]::Combine($folder,$file.SubString($file.LastIndexOf("/")+1));&lt;br /&gt;&lt;br /&gt;Write-Progress -Activity "downloading" -Status $path -PercentComplete (($i / $files.Length)*100)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And if the file does not exit, &lt;span style="font-weight: bold;"&gt;DownloadFile &lt;/span&gt;is called.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;if([System.IO.File]::Exists($path) -eq $False )&lt;br /&gt;{&lt;br /&gt;    $web.DownloadFile($file,$path)&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I used the script to download presentations from the &lt;a href="http://live.visitmix.com/"&gt;MIX&lt;/a&gt;&lt;a href="http://live.visitmix.com/"&gt; 2009&lt;/a&gt; conference. The attached ZIP file includes both the PowerShell script and the file that contains the URLs)&lt;br /&gt;&lt;br /&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-369ac36a3bbd853f.skydrive.live.com/embedrowdetail.aspx/For%20Love%20Of%20Software/PSDownload.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Complete code listing:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;param ([string] $inputFile,[string]$folder)&lt;br /&gt;&lt;br /&gt;function ErrorHandler($error)&lt;br /&gt;{&lt;br /&gt;Write-Host "Error while downloading file:$file" -Foregroundcolor Red -BackGroundColor Black&lt;br /&gt;Write-Host $error -Foregroundcolor Red -BackGroundColor Black&lt;br /&gt;Write-Host ""&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;trap {Write-Host "Error: $_" -Foregroundcolor Red -BackGroundColor Black;exit}&lt;br /&gt;&lt;br /&gt;if([string]::IsNullOrEmpty($folder))&lt;br /&gt;{&lt;br /&gt;throw "folder parameter not set";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if([string]::IsNullOrEmpty($inputFile))&lt;br /&gt;{&lt;br /&gt;throw "inputFile parameter not set";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$files = Get-Content $inputFile -ErrorAction Stop&lt;br /&gt;&lt;br /&gt;$web = New-Object System.Net.WebClient&lt;br /&gt;$i = 0&lt;br /&gt;foreach($file in $files)&lt;br /&gt;{&lt;br /&gt;trap {ErrorHandler($_);continue}&lt;br /&gt;&lt;br /&gt;$path = [IO.Path]::Combine($folder,$file.SubString($file.LastIndexOf("/")+1));&lt;br /&gt;&lt;br /&gt;Write-Progress -Activity "downloading" -Status $path -PercentComplete (($i / $files.Length)*100)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if([System.IO.File]::Exists($path) -eq $False )&lt;br /&gt;{&lt;br /&gt; $web.DownloadFile($file,$path)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$i = $i+1&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-2927165126813223698?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/buEhycqWKxk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/2927165126813223698/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=2927165126813223698&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2927165126813223698?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2927165126813223698?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/buEhycqWKxk/downloading-files-using-windows.html" title="Downloading files using Windows PowerShell with progress information" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/05/downloading-files-using-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUAQ3o-fyp7ImA9WxJSGEg.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-4407958259760588877</id><published>2009-04-22T23:17:00.009+02:00</published><updated>2009-05-09T10:04:02.457+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-09T10:04:02.457+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Oracle buys Sun !!</title><content type="html">OK, I think you already know this. But it's not the news I'm talking about. I'm talking about the implications.&lt;br /&gt;&lt;br /&gt;I did not use Java technology a lot, I admire it, but I cannot consider myself as a Java developer. However, having Java technology in our world and it's competition with Microsoft's .net framework is a healthy thing. It gives us options.&lt;br /&gt;Some Java developers were worried after news about the deal has spread. I think that Oracle + Java has been and will stay a good choice to build enterprise applications. Maybe the future will carry news about better and better RIA applications built with Java platform.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sN0MWR4vPfs/SgU3texS5II/AAAAAAAAAIA/vGD7ohAvFv8/s1600-h/Oracle_to_Buy_Sun.PNG"&gt;&lt;img style="cursor: pointer; width: 452px; height: 281px;" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/SgU3texS5II/AAAAAAAAAIA/vGD7ohAvFv8/s400/Oracle_to_Buy_Sun.PNG" alt="" id="BLOGGER_PHOTO_ID_5333730588183684226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;What I really care about and made me worried is the future of &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;, which is the most popular open source database that has a free community edition.&lt;br /&gt;How is this related to MySQL? Here is the story:&lt;br /&gt;&lt;br /&gt;MySQL has a pluggable database engine architecture. So it has many database engines to choose from, and you deal with them all using the same SQL dialect.&lt;br /&gt;One famous engine is the InnoDB engine, which is transactional and high performance database engine that was widely used by MySQL users. InnoDB was developed by Innobase, a Finnish company.&lt;br /&gt;&lt;a href="http://www.infoworld.com/d/data-management/oracle-buys-finnish-open-source-developer-519"&gt;Oracle acquired Innobase&lt;/a&gt;, which caused worries about the future of the transactional engine. &lt;a href="http://www.sun.com/aboutsun/media/presskits/2008-0116/index.jsp"&gt;Sun bought MySQL&lt;/a&gt;. And MySQL released the &lt;a href="http://dev.mysql.com/tech-resources/articles/falcon-in-depth.html"&gt;Falcon storage engine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sN0MWR4vPfs/SgU3tRrowJI/AAAAAAAAAII/i-qbtc-j79I/s1600-h/Oracle_Buys_Sun.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 217px;" src="http://1.bp.blogspot.com/_sN0MWR4vPfs/SgU3tRrowJI/AAAAAAAAAII/i-qbtc-j79I/s400/Oracle_Buys_Sun.PNG" alt="" id="BLOGGER_PHOTO_ID_5333730584670290066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Now, what is the future of MySQL under the control of Oracle, the database giant? The problem is not only that Oracle may kill MySQL gradually (&lt;span style="font-style: italic;"&gt;I think it won't do it directly&lt;/span&gt;). But is that MySQL engineers started to leave Sun after Oracle's deal. &lt;span style="font-style: italic;"&gt;(more about this in this &lt;a href="http://www.eweek.com/index2.php?option=content&amp;amp;task=view&amp;amp;id=53072&amp;amp;pop=1&amp;amp;hide_ads=1&amp;amp;page=0&amp;amp;hide_js=1"&gt;article&lt;/a&gt;&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;So. Big fishes eat small fishes. It's the turn of open source advocates and MySQL users to have their word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-4407958259760588877?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/_RZrostczMQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/4407958259760588877/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=4407958259760588877&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/4407958259760588877?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/4407958259760588877?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/_RZrostczMQ/oracle-buys-sun.html" title="Oracle buys Sun !!" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_sN0MWR4vPfs/SgU3texS5II/AAAAAAAAAIA/vGD7ohAvFv8/s72-c/Oracle_to_Buy_Sun.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/04/oracle-buys-sun.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUERXw4fCp7ImA9WxJTEEo.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-267968236584053236</id><published>2009-04-18T19:37:00.005+02:00</published><updated>2009-04-18T20:10:04.234+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-18T20:10:04.234+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Calling a PowerShell script in a path with a white space from command line</title><content type="html">I stuck in this problem once, so here is a solution in case you face it.&lt;br /&gt;First, how to call a script from PowerShell console when the script file path contains white space? because executing this:&lt;br /&gt;&lt;code&gt;PS C:\&gt; c:\new folder\myscript.ps1 param1&lt;/code&gt;&lt;br /&gt;will give this error:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);font-size:85%;" &gt;The term 'c:\new' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Putting the path between quotations like this:&lt;br /&gt;&lt;code&gt;PS C:\&gt; "c:\new folder\myscript.ps1" param1&lt;/code&gt;&lt;br /&gt;Will lead to:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);font-size:85%;" &gt;Unexpected token 'param1' in expression or statement.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the solution is to use the Invoke Operator "&amp;amp;", which is used to run script blocks&lt;br /&gt;&lt;code&gt;PS C:\&gt; &amp;amp; 'c:\new folder\myscript.ps1' param1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So farm so good. Now coming to the next part which is calling this from command line.&lt;br /&gt;Executing a PowerShell script from command line is as easy as:&lt;br /&gt;&lt;code&gt;C:\Documents and Settings\Hesham&gt;powershell c:\MyScript.ps1 param1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is fine as long as the script path has no spaces. For example, executing:&lt;br /&gt;&lt;code&gt;C:\Documents and Settings\Hesham&gt;powershell c:\new folder\MyScript.ps1 param1&lt;/code&gt;&lt;br /&gt;Again gives:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);font-size:85%;" &gt;The term 'c:\new' is not recognized as a cmdlet, function, operable program, or&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);font-size:85%;" &gt; script file. Verify the term and try again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With the help of PowerShell -?, here is a solution:&lt;br /&gt;&lt;code&gt;C:\Documents and Settings\Hesham&gt;powershell -command "&amp;amp; {&amp;amp;'c:\new folder\MyScript.ps1' param1}"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Tada!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-267968236584053236?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/B2KIaCB83xs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/267968236584053236/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=267968236584053236&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/267968236584053236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/267968236584053236?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/B2KIaCB83xs/calling-powershell-script-in-path-with.html" title="Calling a PowerShell script in a path with a white space from command line" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>4</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/04/calling-powershell-script-in-path-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cGRn8zfyp7ImA9WxVVFE8.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-1814816121777264231</id><published>2009-03-07T10:20:00.006+02:00</published><updated>2009-03-07T12:17:07.187+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-07T12:17:07.187+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Why should you learn PowerShell?</title><content type="html">Whether you are a software developer, a tester, a system administrator, or even a regular user, PowerShell has something for you to offer.&lt;br /&gt;&lt;br /&gt;It's amazing capabilities open many possibilities for you and it can be used in several scenarios:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For system administrators: quick and easy way to deal with the system in a consistent way. You'll have the power of many built-in commands, the .net CLR. Using it, you can perform several tasks like managing the file system and permissions, monitor even log, &lt;a href="http://forloveofsoftware.blogspot.com/2009/01/working-with-active-directory-using.html"&gt;work with Active Directory&lt;/a&gt;. And so much more.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As a Developer: you can use PowerShell commands to automate some systems like exchange server from your application. Most Microsoft server products support or will support PowerShell as a programmable interface to automate the product. You can also use it to check environment issues if you have a production or testing environment issues that you suspect it's root cause to be environment related.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As a tester: PowerShell can be used for &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163430.aspx"&gt;testing automation&lt;/a&gt;. With its easy to use commands and the simple syntax, I believe it's very suitable for this purpose. Have a look at: &lt;a href="http://blogs.msdn.com/powershell/archive/2009/01/19/why-should-i-test-with-powershell.aspx"&gt;Why Should I Test With PowerShell?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you want to get a high level image about what PowerShell can do for you and the flexibility it provides, you can watch this video by Jeffrey Snover the architect of PowerShell:&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/6Vbq4nOJtgc" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="255" width="320"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-1814816121777264231?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/E7uxIof78h8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/1814816121777264231/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=1814816121777264231&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/1814816121777264231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/1814816121777264231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/E7uxIof78h8/why-should-you-learn-powershell.html" title="Why should you learn PowerShell?" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/03/why-should-you-learn-powershell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQ3kzcCp7ImA9WxVQFUU.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-8237887443468660894</id><published>2009-02-02T17:03:00.002+02:00</published><updated>2009-02-02T17:25:32.788+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T17:25:32.788+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>How to know Active Directory attribute names</title><content type="html">When dealing programmaically with active directory objects using .net code, VBScript or &lt;a href="http://forloveofsoftware.blogspot.com/2009/01/working-with-active-directory-using.html"&gt;PowerShell&lt;/a&gt;, you need to set values of attribues you find in the "Active Directory Users and Computers" Snap-in (run dsa.msc). But these names are not always the same as the names used when setting attribute values in code. So how to know the attribute names?&lt;br /&gt;&lt;br /&gt;I stumbled upon a nice msdn page that has the &lt;a href="http://msdn.microsoft.com/en-us/ms677286.aspx"&gt;Mappings for the Active Directory Users and Computers Snap-in&lt;/a&gt;. It has has links to object type specific UI labels to attribute names.&lt;br /&gt;For example, the &lt;a id="ctl00_mainContentContainer_ctl08" onclick="javascript:Track('ctl00_mainContentContainer_ctl00ctl00_mainContentContainer_ctl08',this);" href="http://msdn.microsoft.com/en-us/ms677980(VS.85).aspx"&gt;User Object User Interface Mapping&lt;/a&gt; page shows that the &lt;strong&gt;Office&lt;/strong&gt; UI label maps to &lt;strong&gt;physicalDeliveryOfficeName&lt;/strong&gt;. How could you guess it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-8237887443468660894?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/Ti4V2AOpJSk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/8237887443468660894/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=8237887443468660894&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/8237887443468660894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/8237887443468660894?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/Ti4V2AOpJSk/how-to-know-active-directory-attribute.html" title="How to know Active Directory attribute names" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/02/how-to-know-active-directory-attribute.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4NSXYzeCp7ImA9WxVQE0w.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-6922687819667701432</id><published>2009-01-30T10:45:00.005+02:00</published><updated>2009-01-30T14:19:58.880+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-30T14:19:58.880+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Working with Active Directory using PowerShell</title><content type="html">&lt;p&gt;Working with Active Directory is one of the important administrative tasks. VBSctipt was the most used language for administartors to automate repetitive tasks.&lt;br /&gt;Now, windows PowerShell is the future, so it's important to know how to use it to work with Active Directory.&lt;br /&gt;I'll provide a simple example that should clarify some concepts. In this scenario, it's required to set the email attribute of all users under a certain OU (Organaizational Unit) in the format: sAMAccountname@domainname.com and output the results to a text file.&lt;br /&gt;PowerShell 1.0 does not have specific built in Cmdlets to handle active directory objects. But it has a basic support for [ADSI]. This will not limit us as we still can use the .net class library easly in PowerShell.&lt;br /&gt;Here is how the code works:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;First we decclare a variable that holds the output file path:&lt;br /&gt;&lt;code&gt;$filePath = "c:\MyFile.txt"&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Then, create the root directory entry which represents the OU that we need to modify users under it. Note the LDAP: it tells: get the OU named "MyOU" from the domain "win2008.demo"&lt;br /&gt;&lt;code&gt;$rootOU=[ADSI]"LDAP://ou=MyOU,dc=win2008,dc=demo"&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We need to get all users under this OU, so we create a .net directory searcher instance using New-Object Cmdlet&lt;br /&gt;&lt;code&gt;$searcher= New-Object System.DirectoryServices.DirectorySearcher&lt;br /&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Setting the root of the search to the OU and the filter to find users only. and start to find all objects that match the filter:&lt;br /&gt;&lt;code&gt;$searcher.searchroot=$rootOU&lt;br /&gt;$searcher.Filter = "objectclass=user"&lt;br /&gt;$res=$searcher.FindAll()&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Initializing the output file by writing the string "Emails"&lt;br /&gt;&lt;code&gt;"Emails:" Out-File -FilePath $filePath&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Iterating on the results:&lt;br /&gt;&lt;code&gt;foreach($u in $res)&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Getting the user object and setting the mail attribute, and committing:&lt;br /&gt;&lt;code&gt;$user = $u.GetDirectoryEntry()&lt;br /&gt;$name=$user.sAMAccountname&lt;br /&gt;$user.mail="$name@win2008.demo"&lt;br /&gt;$user.SetInfo()&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Appending the mail to the output file (note the &lt;span style="font-weight: bold;"&gt;append&lt;/span&gt; parameter):&lt;br /&gt;&lt;code&gt;$user.mail Out-File -FilePath $filePath -append&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;You can save these commands to a .ps1 file and execute from PowerShell, for example:&lt;br /&gt;c:\filename.ps1&lt;br /&gt;note that you need to execute &lt;span style="font-weight: bold;"&gt;Set-ExecutionPolicy RemoteSigned&lt;/span&gt; first.&lt;br /&gt;&lt;br /&gt;And here is the complete code listing, note that no error checking or handling is included for simplicity.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#Set-ExecutionPolicy RemoteSigned&lt;br /&gt;&lt;br /&gt;$filePath = "c:\MyFile.txt"&lt;br /&gt;&lt;br /&gt;$rootOU=[ADSI]"LDAP://ou=MyOU,dc=win2008,dc=demo"&lt;br /&gt;&lt;br /&gt;$searcher= New-Object System.DirectoryServices.DirectorySearcher&lt;br /&gt;&lt;br /&gt;$searcher.searchroot=$rootOU&lt;br /&gt;$searcher.Filter = "objectclass=user"&lt;br /&gt;&lt;br /&gt;$res=$searcher.FindAll()&lt;br /&gt;&lt;br /&gt;"Emails:" Out-File -FilePath $filePath&lt;br /&gt;foreach($u in $res)&lt;br /&gt;{&lt;br /&gt;$user = $u.GetDirectoryEntry()&lt;br /&gt;&lt;br /&gt;$name=$user.sAMAccountname&lt;br /&gt;$user.mail="$name@win2008.demo"&lt;br /&gt;$user.SetInfo()&lt;br /&gt;&lt;br /&gt;$user.mail Out-File -FilePath $filePath -append&lt;br /&gt;&lt;br /&gt;$user.psbase.Dispose()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;$rootOU.psbase.Dispose()&lt;br /&gt;$res.Dispose()&lt;br /&gt;$searcher.Dispose()&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-6922687819667701432?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/HsLNJ2QdutE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/6922687819667701432/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=6922687819667701432&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/6922687819667701432?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/6922687819667701432?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/HsLNJ2QdutE/working-with-active-directory-using.html" title="Working with Active Directory using PowerShell" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2009/01/working-with-active-directory-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AGRHk_eCp7ImA9WxVTGE0.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-2772124283449308314</id><published>2009-01-01T01:00:00.000+02:00</published><updated>2009-01-01T12:28:45.740+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-01T12:28:45.740+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Articles I read in 2008</title><content type="html">It's a new year, and it's time to share a list of most articles I read the last year. Hopefully you find it interesting and useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;2007 list can be fond &lt;a href="http://forloveofsoftware.blogspot.com/2007/02/list-of-articles-i-read-on-2007.html"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/vb/gen/vb_misc/tips/article.php/c14739"&gt;Sanity Checks for Your ASP.NET Web Site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_asp/webforms/article.php/c14575/"&gt;ICallback and JSON-Based JavaScript Serialization&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_general/threads/article.php/c14813/"&gt;.NET Tip: Creating a Thread-Safe Singleton&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2008/01/23/interviewing-thread-on-altdotnet.aspx"&gt;Interviewing thread on altdotnet&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Data+Modeling/61817/"&gt;5 Tips for Becoming a Better Data Modeler&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblog.com/blogs/andrew_kelly/archive/2008/02/27/when-getdate-is-not-a-constant.aspx"&gt; When GETDATE() is not a constant&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblog.com/blogs/andrew_kelly/archive/2008/03/01/when-a-function-is-indeed-a-constant.aspx"&gt; When a Function is indeed a Constant&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/dtjones/archive/2008/02/28/sql-server-2008-launch-the-day-after.aspx"&gt;SQL Server 2008 Launch - The Day After&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.sqlteam.com/jeffs/archive/2008/02/27/60539.aspx"&gt;Exporting data to a remote server with SQL Express&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ayende.com/Blog/archive/2008/02/27/Creating-objects--Perf-implications.aspx"&gt;Creating objects - Perf implications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2004/06/14/155316.aspx"&gt;Reading Code Is Hard&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001079.html"&gt;The First Rule of Programming: It's Always Your Fault&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Security/updatedsqlinjection/2065/"&gt;Updated SQL Injection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://haacked.com/archive/2007/04/20/write-readable-code-by-making-its-intentions-clear.aspx"&gt;Write Readable Code By Making Its Intentions Clear&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://javathink.blogspot.com/2006/10/short-concise-and-readable-code-invert.html"&gt;Short, concise and readable code - invert your logic and stop nesting already!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://javathink.blogspot.com/2006/10/invert-your-logic-part-2-for-loops-and.html"&gt;Invert your logic part 2: For loops and while loops&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2008/62204/"&gt;The HierarchyID Datatype in SQL Server 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.intelligententerprise.com/channels/performance_management/showArticle.jhtml?articleID=206901279&amp;amp;pgno=1"&gt;Column-Store Databases and DW Appliances: How to Make the Right Choice&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Advanced+Querying/fourrulesfornulls/1915/"&gt;4 Simple Rules for Handling SQL NULLs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc337893.aspx#S1"&gt;Standard Query Operators with LINQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sqlblog.com/blogs/aaron_bertrand/archive/2008/03/20/which-to-use-or.aspx"&gt; Which to use: "&lt;&gt;" or "!="?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlskills.com/blogs/conor/2008/03/18/1753DatetimeAndYou.aspx"&gt;1753, datetime, and you&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/news/article.aspx?editorialsid=9703"&gt;Analysts: Upgrading to Vista SP1 on Intel Chips? Proceed with Caution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlskills.com/blogs/bobb/2008/03/20/MoreAboutSparseColumnsAndColumnsets.aspx"&gt;More about sparse columns and column_sets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Entity-Attribute-Value_model"&gt;Entity-Attribute-Value model&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Advanced+Querying/gotchasqlaggregatefunctionsandnull/1947/"&gt;Gotcha! SQL Aggregate Functions and NULL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/msdnmagazine/archive/2008/04/09/8373606.aspx"&gt;An editor's top six pet peeves&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/howard_dierking/archive/2008/04/03/reviewing-article-submissions.aspx"&gt;Reviewing Article Submissions&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/content/article.aspx?article=494"&gt;The Case of the Skewed Totals&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/TSQL/62867/"&gt;The "Numbers" or "Tally" Table: What it is and how it replaces a loop.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.builderau.com.au/program/sqlserver/soa/Simplify-SQL-Server-2005-queries-with-a-Dates-table/0,339028455,339288411,00.htm"&gt;Simplify SQL Server 2005 queries with a Dates table&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Database+Design/62804/"&gt;Name Value Pair - Part II&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.businessweek.com/magazine/content/07_52/b4064048925836.htm"&gt;Google and the Wisdom of Clouds&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163304.aspx"&gt;IFileOperation in Windows Vista&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Performance+Tuning/temptabl/662/"&gt;Is a Temporary Table Really Necessary?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlteam.com/article/implementing-table-inheritance-in-sql-server"&gt;Implementing Table Inheritance in SQL Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlteam.com/article/implementing-table-inheritance-in-sql-server"&gt;Implementing Table Interfaces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/architecture/AOP_UsingSpringPart1.aspx"&gt;AOP Using Spring.NET - Part 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=printArticleBasic&amp;amp;articleId=9097818"&gt;Five things you should never tell your boss&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9097738"&gt;Five things you should always tell your boss&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/63115/"&gt;Correlated Joins Using "Apply"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.onjava.com/pub/a/onjava/2004/04/07/jsf.html"&gt;Introduction to JavaServer Faces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.networkworld.com/news/2005/041105-windows-crash.html"&gt;How to solve Windows system crashes in minutes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.businessweek.com/print/innovate/content/jun2008/id20080623_750025.htm"&gt;The 10 Commandments of Web Design&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gigaom.com/2008/06/30/10-of-the-biggest-platform-development-mistakes/"&gt;10 of the Biggest Platform Development Mistakes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm"&gt;Programmer Competency Matrix&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/63351/"&gt;Calculating Age&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Administration/63144/"&gt;Return Query Text Along With sp_who2 Using Dynamic Management Views&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Replication/logshippingvsreplication/1399/"&gt;Log Shipping vs. Replication&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2005+-+SSIS/thenewetlparadigm/1719/"&gt;The New ETL Paradigm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Performance+Tuning+and+Scaling/bookmarklookups/1899/"&gt;Bookmark Lookups&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/cc510319.aspx"&gt;The Great Debate: Security by Obscurity&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.sqlservercentral.com/brian_kelley/archive/2008/06/04/security-by-obscurity.aspx"&gt;Security by Obscurity?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlskills.com/blogs/conor/2008/06/03/OuterJoinsAndONClausesVsWHEREClauses.aspx"&gt;Outer joins and ON clauses vs. WHERE clauses&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163392.aspx"&gt;Digging into IDisposable&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;amp;A=/article/08/07/22/Warning_SharePoint_can_create_chaos_if_not_used_properly_1.html"&gt;Warning: SharePoint can create chaos if not used properly&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sciam.com/article.cfm?id=tough-choices-how-making&amp;amp;print=true"&gt;Tough Choices: How Making Decisions Tires Your Brain&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/content/article.aspx?article=532"&gt;Linus Torvalds, Geek of the Week&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://studios.thoughtworks.com/2008/4/30/deployment-pipelines-revolutionizing-release-management"&gt;Deployment Pipelines: Revolutionizing Release Management&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/440101"&gt;7 Ways to Improve Your Software Release Management&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/112800/Quality_Doesn_rsquo_t_Just_Happen"&gt;Quality Doesn’t Just Happen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://advice.cio.com/c_g_lynch/four_qualities_of_a_top_performing_it_deparment_0"&gt;Four Qualities of a Top Performing IT Department&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/dotnet/.net-framework/dynamically-generating--typed-objects-in-.net/"&gt;Dynamically generating typed objects in .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.bodurov.com/Post.aspx?postID=18"&gt;IDictionary options - performance test - SortedList vs. SortedDictionary vs. Dictionary vs. Hashtable&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/dotnet/.net-tools/software-tool-design-the-three-rs/"&gt;Software Tool design: The Three Rs - Part 1: The Three ‘R’s – Research, Research &amp;amp; Research&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/t-sql-programming/json-and-other-data-serialization-languages/"&gt;JSON and other data serialization languages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/441215"&gt;Five Things Linus Torvalds Has Learned About Managing Software Projects&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/article/08/08/11/33FE-unit-testing-doomed_1.html"&gt;Is unit testing doomed?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sdtimes.com/content/article.aspx?ArticleID=32690"&gt;Microsoft worried over .NET fragmentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/aspxcode_net.aspx"&gt;How do Convert IP Address to Country Name&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://west-wind.com/Weblog/posts/453551.aspx"&gt; ASP.NET gets no Respect&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/447275"&gt;Google App Engine: Getting Data Out Ain't Simple. Yet.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/cc745952.aspx"&gt;Top 10 Performance Improvements in IIS 7.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ambysoft.com/essays/agileLifecycle.html"&gt;The Agile System Development Lifecycle (SDLC)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/447712"&gt;7 Agile Leadership Lessons for the Suits&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/architect/207600615"&gt;Has Agile Peaked? Let's look at the numbers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ambysoft.com/surveys/agileFebruary2008.html"&gt;Agile Adoption Rate Survey: February 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Table+Variables/63878/"&gt;Local Temporary Tables and Table Variables&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/IOCDI.aspx"&gt;Design pattern – Inversion of control and Dependency injection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163739.aspx"&gt;Design Patterns: Dependency Injection&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/"&gt;Management Studio Improvements in SQL Server 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eweek.com/index2.php?option=content&amp;amp;task=view&amp;amp;id=49680&amp;amp;pop=1&amp;amp;hide_ads=1&amp;amp;page=0&amp;amp;hide_js=1"&gt;Changing Good Programmers into Great Programmers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bayt.com/job/career-article-1721"&gt;Ten career-damaging behaviours to avoid&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163519.aspx"&gt;Threat Modeling: Uncover Security Design Flaws Using The STRIDE Approach&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman/print"&gt;Cloud computing is a trap, warns GNU founder Richard Stallman&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sql-server-performance.com/articles/per/Speeding_up_the_Performance_of_Table_Counts_p1.aspx"&gt;Speeding up the Performance of Table Counts in SQL Server 2005&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/community/blogs/johnm/archive/2008/09/23/69684.aspx"&gt;Does Your Database Contain Sensitive Data?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/database-administration/brads-sure-dba-checklist/"&gt;Brad's Sure DBA Checklist&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/content/article.aspx?article=575"&gt;Using Covering Indexes to Improve Query Performance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/content/article.aspx?article=576"&gt;Why This SQL Server DBA is Learning Powershell&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://news.cnet.com/8301-17939_109-10065922-2.html"&gt;Five old-fashioned Web concepts that need to die&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://communication.howstuffworks.com/cloud-computing.htm"&gt;How Cloud Computing Works&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480518.aspx"&gt;At Your Service: Versioning Options&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Administration/64275/"&gt;Moving Large Table to Different File Group&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2008/64354/"&gt;SQL Server 2008 SSMS Enhancements - Debugging Support&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/e7/archive/2008/10/15/engineering-7-a-view-from-the-bottom.aspx"&gt;Engineering 7: A view from the bottom&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digital-web.com/articles/everything_you_know_about_CSS_Is_wrong/"&gt;Everything You Know About CSS Is Wrong&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.networkworld.com/cgi-bin/mailto/x.cgi?pagetosend=/export/home/httpd/htdocs/news/2008/102708-microsoft-identity-cloud.html"&gt;Microsoft to unveil tools to push identity platform into the cloud&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://reddevnews.com/blogs/print.aspx?blog=2885"&gt;PDC: Anders Gets Dynamic on Future of C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eweek.com/index2.php?option=content&amp;amp;task=view&amp;amp;id=50143&amp;amp;pop=1&amp;amp;hide_ads=1&amp;amp;page=0&amp;amp;hide_js=1"&gt;Microsoft Delivers Oslo Components&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cio.com/article/print/457169"&gt;Microsoft Launches Windows Azure for the Cloud&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://online.wsj.com/article/SB122426318874844933.html#printMode"&gt;Get Rid of the Performance Review!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://career-advice.monster.com/interview-preparation/technology/Ten-Tech-Interview-Errors/home.aspx"&gt;Ten Tech Interview Errors&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/architecture/WebArchitecture.aspx"&gt;Architecting .NET Web Applications for Scale &amp;amp; Performance (A Practical Guide)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;amp;A=/article/08/10/31/microsoft-azure-cloud-qa_1.html"&gt;The inside view of Microsoft's cloud strategy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc947917.aspx"&gt;Patterns in Practice: Cohesion And Coupling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sql-server-performance.com/articles/dba/Super_Sizing_Columns_in_SQL_Server_p1.aspx"&gt;Super Sizing Columns in SQL Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pcworld.com/printable/article/id,153396/printable.html"&gt;Once Thought Safe, WPA Wi-Fi Encryption Is Cracked&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://reddevnews.com/news/print.aspx?editorialsid=10363"&gt;Microsoft: 'Geneva' Will Help Change Access Paradigm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc982154.aspx"&gt;Security Quiz: Test Your Security IQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd153756.aspx"&gt;Agile SDL: Streamline Security Practices For Agile Development&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd148646.aspx"&gt;Test Run: Group Determination In Software Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc948343.aspx?pr=blog"&gt;Service Station: Authorization In WCF-Based Services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/rdoherty/archive/2008/09/03/sql-server-2008-top-10-list-for-developers.aspx"&gt;SQL Server 2008 Top 10 List for Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/sponsored+article/64909/"&gt;Invoking Stored Procedures through a One Line Native .NET Method Call&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sql-server-performance.com/articles/dba/Restore_Transaction_Logs_for_Point_in_Time_Recovery_p1.aspx"&gt;Restore Transaction Logs for Point in Time Recovery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/vb/vb_internet/aspnet/article.php/c15645/"&gt;New Features in Visual Studio 2010 and the .NET Framework 4.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_general/internet/article.php/c15643/"&gt;Notes from Microsoft PDC 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/TSQLUnit/64357/"&gt;Test-Driven Development of T-SQL Code&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Change+Data+Capture+%28CDC%29/64289/"&gt;Implementing Change Data Capture in Microsoft® SQL Server 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1600"&gt;Auto generated SQL Server keys - uniqueidentifier or IDENTITY&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Normalization/64428/"&gt;Normalizing-Denormalized Tables&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc441928.aspx"&gt;Selecting Rows Randomly from a Large Table&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/SQL+Server+2008/64421/"&gt;Is It Worth Upgrading to SQL Server 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/linq/Expressions.aspx"&gt;A journey into Expressions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480514.aspx"&gt;Using SOAP Faults&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html"&gt;AnemicDomainModel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://martinfowler.com/articles/injection.html"&gt;Inversion of Control Containers and the Dependency Injection pattern&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.directionsonmicrosoft.com/news-a-analysis/41-november-2008/323-five-strategies-microsoft-got-right.html"&gt;Five Strategies Microsoft Got Right&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sql-server-performance.com/articles/dba/Filtered_Indexes_in_SQL_Server_2008_p1.aspx"&gt;Filtered Indexes in SQL Server 2008&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/tess/archive/2007/04/10/net-garbage-collector-popquiz-followup.aspx"&gt;.NET Garbage Collector PopQuiz - Followup&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Cheat%20Sheet%20-%20patterns%20%26%20practices%20Security%20Engineering&amp;amp;referringTitle=Home"&gt;Cheat Sheet – patterns &amp;amp; practices Security Engineering&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.internetnews.com/dev-news/print.php/3788821"&gt;Does Google Have a Secret OS?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/T-SQL/64797/"&gt;Power and Deception of CTEs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.simple-talk.com/sql/sql-training/sql-server-data-warehouse-cribsheet/"&gt;SQL Server Data Warehouse Cribsheet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.developer.com/design/article.php/3788416"&gt;ASP.NET MVC 101&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlservercentral.com/articles/Dynamic+SQL/65154/"&gt;How To Avoid Msg 106&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/212201710?pgno=1"&gt;It's Time to Get Good at Functional Programming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://articles.techrepublic.com.com/5100-10878_11-1045782.html"&gt;Ten Commandments of Egoless Programming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2844"&gt;Inside VSTS: Code Metrics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cio.com/article/print/472377"&gt;5 Reasons for Software Developers to Do Code Reviews (Even If You Think They're a Waste of Time)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.computerworld.com.au/index.php?q=article/271034/-z_programming_languages_f&amp;amp;fp=&amp;amp;fpid="&gt;The A-Z of Programming Languages: F#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeguru.com/csharp/.net/net_general/internet/article.php/c15597/"&gt;KBSoft IP Locator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2008/12/15/10-useful-techniques-to-improve-your-user-interface-designs/"&gt;10 Useful Techniques To Improve Your User Interface Designs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://visualstudiomagazine.com/features/article.aspx?editorialsid=1317"&gt;Validate Business Objects Declaratively &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-2772124283449308314?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/4k5V45gYZO8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/2772124283449308314/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=2772124283449308314&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2772124283449308314?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/2772124283449308314?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/4k5V45gYZO8/articles-i-read-in-2008.html" title="Articles I read in 2008" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2008/02/articles-i-read-in-2008.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFRH49eyp7ImA9WxRbFU0.&quot;"><id>tag:blogger.com,1999:blog-2496415891665263000.post-4016273882550272442</id><published>2008-12-05T21:18:00.002+02:00</published><updated>2008-12-05T22:03:35.063+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-05T22:03:35.063+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Handling errors when calling PowerShell using C#</title><content type="html">In a &lt;a href="http://forloveofsoftware.blogspot.com/2008/09/calling-powershell-commands-from-c-code.html"&gt;previous post&lt;/a&gt;, I explained how to call PowerShell Commands from C# code in an easy way. But what about error handling?&lt;br /&gt;First, we should know about the types of errors that need to be handled:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Exceptions due to error in syntax of the command or script.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Errors generated from commands themselves due to logical errors or invalid parameters.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Handling Exceptions:&lt;/span&gt;&lt;br /&gt;Several exceptions can be thrown. The base for PowerShell exceptions is the &lt;a href="http://msdn.microsoft.com/en-us/library/system.management.automation.runtimeexception%28VS.85%29.aspx"&gt;&lt;span style="font-weight: bold;"&gt;System.Management.Automation.RuntimeException&lt;/span&gt;&lt;/a&gt; class. Exceptions can originate from bad syntax or calling invalid commands.&lt;br /&gt;Handling this kind of errors follows the common exception handling in .net as this example shows:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;       try&lt;br /&gt;       {&lt;br /&gt;           using (RunspaceInvoke invoke = new RunspaceInvoke())&lt;br /&gt;           {&lt;br /&gt;               result = invoke.Invoke("dir " + "c:\\" + " -recurse -Filter *.exe");&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       catch (System.Management.Automation.RuntimeException ex)&lt;br /&gt;       {&lt;br /&gt;           Console.WriteLine(ex.Message);&lt;br /&gt;           //Specific handling for PowerShell errors&lt;br /&gt;       }&lt;br /&gt;       catch (Exception ex)&lt;br /&gt;       {&lt;br /&gt;           //general handling and logging&lt;br /&gt;       }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Command Errors:&lt;/span&gt;&lt;br /&gt;These errors that commands return. For example, when you run this command in PowerShell while you don't have a Q drive:&lt;br /&gt;&lt;code&gt;dir Q:&lt;/code&gt;&lt;br /&gt;You'll get this error:&lt;br /&gt;&lt;blockquote&gt;Get-ChildItem : Cannot find drive. A drive with name 'q' does not exist.&lt;br /&gt;At line:1 char:4&lt;/blockquote&gt;Which makes sense. But how to check for this kind of errors?&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;Invoke &lt;/span&gt;method of the &lt;span style="font-weight: bold;"&gt;RunspaceInvoke &lt;/span&gt;class has an overload that accepts an IList as the 3rd parameter. This out parameter will contain a list of errors that has occurred.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;              IList errors;&lt;br /&gt;              using (RunspaceInvoke invoke = new RunspaceInvoke())&lt;br /&gt;              {&lt;br /&gt;                  result = invoke.Invoke("dir " + "Q:\\" + " -recurse -Filter *.exe", null, out errors);&lt;br /&gt;              }&lt;br /&gt;&lt;br /&gt;              if (errors.Count &amp;gt; 0)&lt;br /&gt;              {&lt;br /&gt;                  PSObject error = errors[0] as PSObject;&lt;br /&gt;                  if (error != null)&lt;br /&gt;                  {&lt;br /&gt;                      ErrorRecord record = error.BaseObject as ErrorRecord;&lt;br /&gt;                      Console.WriteLine(record.Exception.Message);&lt;br /&gt;                      Console.WriteLine(record.FullyQualifiedErrorId);&lt;br /&gt;                  }&lt;br /&gt;&lt;br /&gt;                  return;&lt;br /&gt;              }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;In the above code, I cast the error to &lt;span style="font-weight: bold;"&gt;PSObject&lt;/span&gt; and &lt;code&gt;&lt;/code&gt;get its BaseObject and cast it to &lt;span style="font-weight: bold;"&gt;ErrorRecord&lt;/span&gt; which contains the error information.&lt;br /&gt;&lt;br /&gt;An interesting part here, is that you can check the &lt;span style="font-weight: bold;"&gt;FullyQualifiedErrorId&lt;/span&gt; property which is a string to distinguish errors and create logic to handle specific errors. ErrorDetails property can also be checked. But be careful because it can be null.&lt;br /&gt;&lt;br /&gt;I hope this post can make your programming with PowerShell easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2496415891665263000-4016273882550272442?l=forloveofsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ForLoveOfSoftware/~4/QvWDMwymNPQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://forloveofsoftware.blogspot.com/feeds/4016273882550272442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2496415891665263000&amp;postID=4016273882550272442&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/4016273882550272442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2496415891665263000/posts/default/4016273882550272442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ForLoveOfSoftware/~3/QvWDMwymNPQ/handling-errors-when-calling-powershell.html" title="Handling errors when calling PowerShell using C#" /><author><name>Hesham A. Amin</name><uri>http://www.blogger.com/profile/00063404912692423973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="31" height="25" src="http://3.bp.blogspot.com/_sN0MWR4vPfs/S7j7260RLNI/AAAAAAAAANc/wzqcoVNXPTE/S220/h2_2.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://forloveofsoftware.blogspot.com/2008/12/handling-errors-when-calling-powershell.html</feedburner:origLink></entry></feed>

