<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><title>sfeldman.NET</title><link>http://weblogs.asp.net/sfeldman/default.aspx</link><description>.NET, code, personal thoughts</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sfeldmannet" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sfeldmannet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Tag Management With GTM</title><link>http://weblogs.asp.net/sfeldman/archive/2013/06/12/tag-management-with-gtm.aspx</link><pubDate>Thu, 13 Jun 2013 03:37:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10378005</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=10378005</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=10378005</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2013/06/12/tag-management-with-gtm.aspx#comments</comments><description>&lt;h2&gt;What is a tag? &lt;/h2&gt;  &lt;p&gt;In the marketing world tag (or pixel) is used for tracking purposes. Historically it was based on a call to retrieve a 1x1 transparent image. Rational behind this was to retrieve client side information of a site visitor on a 3rd party server. Information would include browser standard information including cookies. There’s a lot of things that can be done with this information from analytical and marketing point of view.&lt;/p&gt;  &lt;h2&gt;Why is is so Messy?&lt;/h2&gt;  &lt;p&gt;Tracking and conversion tags (pixels) were supposed to be “add-ons” that any non-technical web master (and later “business user”) should be able to drop into mark-up and be done. After a little bit information flows into tag vendor server and reports are available. But it is not as simple as it sounds when you need to work with &lt;em&gt;multiple &lt;/em&gt;tag vendors. Imagine following scenarios.&lt;/p&gt;  &lt;p&gt;Scenario 1:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;We need to know how many unique visits we had to a page X.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Scenario 2:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;We need to count how many times visitors clicked a button Y.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For scenario #1, traditionally it is achieved by adding a tag to the HTML. Something like &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;     &lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://vendor/tag.jpg?client=id&amp;amp;page=code&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;For scenario #2, again, traditionally it is as “simple” as embedding code into onclick event&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;
    &lt;pre style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: white"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;button&lt;/span&gt; &lt;span style="color: #ff0000"&gt;onclick&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;vendorTagFunction(params)&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;It’s almost good, except mixed concerns and need to constantly change. In the marketing world, tags come and go. And it happens frequently. And with multiple vendors. Therefore you end up with a few issues doubled (when tag is added and removed), multiplied by number of vendors.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Constant need to modify mark-up &lt;/li&gt;

  &lt;li&gt;Constant need to modify client side code (JavaScript handlers) &lt;/li&gt;

  &lt;li&gt;Constant need to deploy changes &lt;/li&gt;

  &lt;li&gt;Mixing of concerns (marketing vs. development) &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;What’s a Solution?&lt;/h2&gt;

&lt;p&gt;Separation of Concerns. Tags are not needed for markup and client side code. Developers and designers shouldn’t be concerned with those. Marketers should (well, ideally at least). In order to achieve that, tags should be &lt;strong&gt;placed and managed&lt;/strong&gt; &lt;strong&gt;separately from markup and code&lt;/strong&gt;. This is where Tag Management tools are handy. &lt;/p&gt;

&lt;p&gt;A tool I have tried so far was &lt;a href="http://www.google.com/tagmanager/" target="_blank"&gt;Google Tag Manager&lt;/a&gt; (or just GTM) and it works great for these kind of things.&lt;/p&gt;

&lt;h2&gt;How Tag Management Helps?&lt;/h2&gt;

&lt;p&gt;These are a few things that GTM does for you:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Takes tags code and markup out of your markup and code and by that makes it clean and lean &lt;/li&gt;

  &lt;li&gt;Injects tags dynamically based on rules execution &lt;/li&gt;

  &lt;li&gt;Allows to manage rules and tags outside of your main solution &lt;/li&gt;

  &lt;li&gt;Versioning by marketers – a very strong feature &lt;/li&gt;

  &lt;li&gt;Publishing* of a specific version &lt;/li&gt;

  &lt;li&gt;Preview and debugging to ensure things work before get published &lt;/li&gt;

  &lt;li&gt;Ability to add/remove tags w/o main site re-deployment &lt;/li&gt;

  &lt;li&gt;and more… &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;* Publishing that is happening within GTM, no connection to your main markup/code publishing&lt;/p&gt;

&lt;h2&gt;How Simple it is?&lt;/h2&gt;

&lt;p&gt;Simple. There’s really not that much to it, but once you utilize the power, you’ll not go back again to embedding tags in markup/code ever again. &lt;/p&gt;

&lt;p&gt;Another benefit is integration. If you use Google Analytics, you can easily integrate that one (another cross-cutting concern is removed from you markup).&lt;/p&gt;

&lt;h2&gt;Are there Alternatives?&lt;/h2&gt;

&lt;p&gt;Plenty. Google is not the pioneer in this area, and the tool is far from perfect. Lots of other companies have offerings that are good and viable solutions. We found GTM to be simple, clean, and cost effective (free for now) to address our requirements. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10378005" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Patterns/default.aspx">Patterns</category></item><item><title>Testing RavenDB Custom Bundle/Plugin</title><link>http://weblogs.asp.net/sfeldman/archive/2013/02/22/testing-ravendb-custom-bundle-plugin.aspx</link><pubDate>Fri, 22 Feb 2013 18:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9901909</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9901909</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9901909</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2013/02/22/testing-ravendb-custom-bundle-plugin.aspx#comments</comments><description>&lt;p&gt;RavenDB is amazing. You don’t have to work with it for a long time to get that. What’s even more amazing is the extensibility and testability of it. This post is about the last two.&lt;/p&gt;  &lt;p&gt;In my recent work I needed to have versioning of documents with very specific requirements that are not matching RavenDB built in &lt;a href="http://ravendb.net/docs/server/extending/bundles/versioning" target="_blank"&gt;versioning bundle&lt;/a&gt;. Default versioning bundle would generate revisions of all documents upon any change that occurs to a document. In my scenario, I needed only 1 revision at any given time, and revision should be generated only for the documents that have a Status field and its value is changing to “Published”. Very specific to the business requirement. After poking around, reading &lt;a href="http://ravendb.net/docs/server/extending/plugins" target="_blank"&gt;documentation&lt;/a&gt;, and bugging people on &lt;a href="https://groups.google.com/forum/?fromgroups=#!topic/ravendb/kAruTZeTuZ4" target="_blank"&gt;user group&lt;/a&gt;, I learned a few things about testing custom bundle/plugin RavenDB style. &lt;/p&gt;  &lt;h2&gt;Testing&lt;/h2&gt;  &lt;p&gt;If you are doing unit testing, &lt;a href="http://nuget.org/packages/RavenDB.Tests.Helpers" target="_blank"&gt;RavenDB.Tests.Helpers&lt;/a&gt; is your friend. Once nuget package is installed, your tests can inherit from &lt;em&gt;RavenTestBase &lt;/em&gt;class that will wire a new embedded document store for you, optimized for testing, and allowing additional modification needed for testing scenario(s) (#3). For bundle/plugin testing, I needed to register all of my triggers (optionally, you could register one at a time, or all of the triggers found in assembly) in Raven’s configuration. The base class exposes &lt;em&gt;ModifyConfiguration&lt;/em&gt; for that purpose (#1). In addition to that, RavenDB needs to be told that we are activating our bundle (#4). Logging (#2) was more for me to see what happens with RavenDB while test is running.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_54DD5A8B.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_3088503C.png" width="840" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Custom Triggers&lt;/h2&gt;  &lt;p&gt;One this that I haven’t seen in documentation, but was helped with at the user group was the attributes needed for each custom trigger. &lt;em&gt;InheritedExport &lt;/em&gt;and &lt;em&gt;ExportMetadata &lt;/em&gt;are both needed. BundleName is the name that is registered with Raven’s configuration.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_68C6C754.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_2F43B75D.png" width="486" height="39" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Enabling Bundle in RavenDB&lt;/h2&gt;  &lt;p&gt;In order to get custom bundle to work, it has to be copied into Plugins folder under RavenDB location and database setting has to be updated to let Raven know we want bundle to be activated.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_75C0A765.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_1C228AB1.png" width="370" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Bundle in Action&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_7FA598D0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_5B140B4C.png" width="420" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_5EB22629.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_05140975.png" width="456" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_2B75ECC0.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_23EA7D53.png" width="461" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9901909" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/TDD/default.aspx">TDD</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/OSS/default.aspx">OSS</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/RavenDB/default.aspx">RavenDB</category></item><item><title>Visual Studio 2012 Update 2 CTP – Browser</title><link>http://weblogs.asp.net/sfeldman/archive/2013/02/08/visual-studio-2012-update-2-ctp-browser.aspx</link><pubDate>Fri, 08 Feb 2013 21:32:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9853523</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9853523</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9853523</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2013/02/08/visual-studio-2012-update-2-ctp-browser.aspx#comments</comments><description>&lt;p&gt;I have ran into an interesting message when opened a user group site in Visual Studio (not something that I usually do) and it made me wonder&lt;/p&gt;  &lt;p&gt;1. What version of IE Visual Studio 2012 Update 2 CTP is using if not the one found on machine (IE9 on my Windows 7)&lt;/p&gt;  &lt;p&gt;2. Google is playing dirty… this message would only show up in IE version 8 and lower.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/Capture_7264BB5E.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Capture" border="0" alt="Capture" src="http://weblogs.asp.net/blogs/sfeldman/Capture_thumb_03D51C37.png" width="941" height="36" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9853523" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/VS.NET/default.aspx">VS.NET</category></item><item><title>RavenDB In Memory Query Monitoring</title><link>http://weblogs.asp.net/sfeldman/archive/2013/01/21/ravendb-in-memory-query-monitoring.aspx</link><pubDate>Tue, 22 Jan 2013 04:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9784019</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9784019</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9784019</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2013/01/21/ravendb-in-memory-query-monitoring.aspx#comments</comments><description>&lt;p&gt;RavenDB has a great way to monitor what’s happening between client and server. I found it very helpful when trying to figure out what’s happening, or just understand how things work (such as querying). &lt;/p&gt;  &lt;p&gt;When doing unit testing, the pattern is to leverage in-memory store to speed things up. Unfortunately, when that’s the case, there’s exposed communication happening between unit tests (client) and in-memory store (server).&lt;/p&gt;  &lt;p&gt;There are a few possible solutions folks have suggested, but one that really made my day was… custom logger. This is a fantastic way to tap into what’s happening and see it all (Thank you &lt;a href="https://groups.google.com/d/msg/ravendb/ANEIBix4pTY/smUjE5jk78IJ" target="_blank"&gt;Matt Johnson&lt;/a&gt; for help).&lt;/p&gt;  &lt;p&gt;Now there’s no more blindness and magic. Everything is revealed. Happiness.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9784019" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/TDD/default.aspx">TDD</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/RavenDB/default.aspx">RavenDB</category></item><item><title>browserstack</title><link>http://weblogs.asp.net/sfeldman/archive/2013/01/07/browserstack.aspx</link><pubDate>Tue, 08 Jan 2013 05:38:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9715274</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9715274</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9715274</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2013/01/07/browserstack.aspx#comments</comments><description>&lt;p&gt;If you are doing web development, then you have the headache of testing your web application on various browsers. What makes it even more “fun” is the fact that on a given OS you might run multiple browsers of various versions. What I have done in the past was targeting “standard” browsers. That was long time ago, and today reality is a little more challenging. Along with the desktop browsers, nowadays there are mobile browsers that are making things a bit more complex.&lt;/p&gt;  &lt;p&gt;Typical solution would be to create VMs. But just a thought of managing all those VMs in a library of VMs, hardware/cloud investment to make it work… gives me chills. Luckily, there’s a service called &lt;a href="http://www.browserstack.com"&gt;browserstack&lt;/a&gt; that does it for you. And let me tell you that for the money they ask you get a LOT.&lt;/p&gt;  &lt;p&gt;Windows XP/7/8, OSX Snow Leopard/Lion/Mountain Lion/iOS-*, Android-* – that’s just a short list of OSes supported by browserstack. But that’s not all. What makes it even better, are the Web Tunnel and Command Line options. So far I have tested only the first, which allows you to run an OS/browser you choose with the LOCAL web site under development. Yes, you are reading correctly, local version. I.e. you do NOT have to publish to a preview public site to make it work. Slick.&lt;/p&gt;  &lt;p&gt;The second option, command like, is more for automated testing. I’m yet to try it, but it sounds promising and something tells me my team will love this option &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://weblogs.asp.net/blogs/sfeldman/wlEmoticon-smile_7E14D716.png" /&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9715274" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Automation/default.aspx">Automation</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Tools/default.aspx">Tools</category></item><item><title>2012 Summary</title><link>http://weblogs.asp.net/sfeldman/archive/2012/12/21/2012-summary.aspx</link><pubDate>Fri, 21 Dec 2012 15:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9624386</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9624386</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9624386</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/12/21/2012-summary.aspx#comments</comments><description>&lt;p&gt;Year end is always an interesting time. Reminds a sort of retrospective, but that’s a geek in me that sees it that way. Yet what happened this year? A lot for me. Here’s a list of significant things for me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Leading and managing people are two different things, combining both and having good results is not an easy task&lt;/li&gt;    &lt;li&gt;Start-up experience, building from concept to a pilot&lt;/li&gt;    &lt;li&gt;Windows Azure experience, lessons learned from Cloud Services with NServiceBus&lt;/li&gt;    &lt;li&gt;Getting a little taste of Client Side “revolution” through knockout and backbone&lt;/li&gt;    &lt;li&gt;Power of ASP.NET MVC WebAPI and SignalR&lt;/li&gt;    &lt;li&gt;RavenDB (and document databases in general) awesomeness I wish I’d discover earlier&lt;/li&gt;    &lt;li&gt;And last, but not least, learning more about humans and myself&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This was a good year, packed with lots of learning and new things. The goal for 2013 is to keep it that way and exceed. &lt;/p&gt;  &lt;p&gt;Happy new year to everyone!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9624386" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Nuget Package Restoration on a Build Server</title><link>http://weblogs.asp.net/sfeldman/archive/2012/12/11/nuget-package-restoration-on-a-build-server.aspx</link><pubDate>Tue, 11 Dec 2012 18:52:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9561380</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9561380</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9561380</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/12/11/nuget-package-restoration-on-a-build-server.aspx#comments</comments><description>&lt;p&gt;One of our latest projects has failed to restore nuget packages on the build server. Error message was &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, click on Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I have looked into options, and was surprised that default way to handle it was&lt;/p&gt;  &lt;blockquote&gt;   &lt;ul&gt;     &lt;li&gt;Go to your build server (rdp or physical) &lt;/li&gt;      &lt;li&gt;Start Visual Studio&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;While this is acceptable for a local development, for a build server this is a big red light right there. Gladly, as pointed out in this &lt;a href="http://blog.deltacode.be/2012/07/10/nuget-package-restore-fails-on-tfs-build-server/"&gt;blog post&lt;/a&gt;, there’s an option of setting a system variable to solve the issue.&lt;/p&gt;  &lt;p&gt;Would be nice to see nuget default to system variable, and then fallback to an instance of VS on a server, but not the way around. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9561380" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Automation/default.aspx">Automation</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Windows 8 – Start Menu Button</title><link>http://weblogs.asp.net/sfeldman/archive/2012/11/08/windows-8-start-menu-button.aspx</link><pubDate>Thu, 08 Nov 2012 15:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8908244</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=8908244</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=8908244</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/11/08/windows-8-start-menu-button.aspx#comments</comments><description>&lt;img style="display: inline; float: left" align="left" src="http://teknowlodgy.com/wp-content/uploads/2012/06/Windows-Vista-Start-Button.png" width="40" height="40" mce_src="http://teknowlodgy.com/wp-content/uploads/2012/06/Windows-Vista-Start-Button.png" /&gt;   &lt;p&gt;Quite amusing to read pros and cons of not having a start menu button in Windows 8. Debates from how great it is to how poor the decision was to remove it are all over the web. &lt;img style="display: inline; float: right" align="right" src="http://upload.wikimedia.org/wikipedia/en/3/3a/Windows7StartMenu.png" width="183" height="242" mce_src="http://upload.wikimedia.org/wikipedia/en/3/3a/Windows7StartMenu.png" /&gt;&lt;/p&gt;  &lt;p&gt;I know people want to be able to navigate to their apps quickly through a single point. But for the love of simplicity, is THIS simple? Yes, I am talking about that monster hiding behind little cute as button button… Start Menu. Not only you had to click through multiple times, but also you had to master multiple cascading menus that where chaotically expanding all over the screen, unless you never installed applications and had it nice and tidy. Is this what people are complaining about? Hmmm, interesting.&lt;/p&gt;  &lt;p&gt;For myself this was not even relevant. I have stopped using this “useful” button along with the spaghetti menu long time ago (from Windows XP) thanks to David (ex-co-worker) who has introduced me to &lt;a href="http://www.stardock.com/products/objectdock/information_plus.asp" mce_href="http://www.stardock.com/products/objectdock/information_plus.asp"&gt;Object Dock Plus&lt;/a&gt;. That got rid of the start button along with the unnecessary task bar (you may say I copied Mac – so it be, they also “borrowed” the idea from somewhere, good software development &lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_2693E620.png" mce_href="http://weblogs.asp.net/blogs/sfeldman/image_2693E620.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_651933C6.png" width="188" height="245" mce_src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_651933C6.png" /&gt;&lt;/a&gt;practice). Next step – &lt;a href="http://executor.dk/" mce_href="http://executor.dk/"&gt;Executor&lt;/a&gt;. There are other alternatives, but I found this one the best. Wish only the creator would compile it in 64bit mode, but that’s a different post. So switching to Windows 8 is seamless – no need in button and menu at all. &lt;/p&gt;  &lt;p&gt;Now why do I write this post? Probably because it’s my reaction to&amp;#160; those who wine and complaint about the fact that someone moved their cheese, ignoring the fact that the cheese was stinky old. Embrace the change, and if you don’t like it, then find alternative, but don’t complaint just because you &lt;u&gt;think&lt;/u&gt; it’s not going to work.&lt;/p&gt;  &lt;p&gt;And BTW, Windows 8 has brought my old hardware back to life. Something that only Linux could do before &lt;img class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://weblogs.asp.net/blogs/sfeldman/wlEmoticon-winkingsmile_2B29F0DA.png" mce_src="http://weblogs.asp.net/blogs/sfeldman/wlEmoticon-winkingsmile_2B29F0DA.png" /&gt;&lt;/p&gt;  &lt;p&gt;Update 2012-09-20: If you really miss the button, there’s a solution for you as well. It’s called &lt;a href="http://lee-soft.com/vistart/windows-8-start-menu.html" mce_href="http://lee-soft.com/vistart/windows-8-start-menu.html"&gt;VI Start&lt;/a&gt; for Windows 8&lt;/p&gt;  &lt;p&gt;Update 20012-11-02: Another free alternative is &lt;a href="http://classicshell.sourceforge.net/" target="_blank" mce_href="http://classicshell.sourceforge.net/"&gt;Classic Start&lt;/a&gt;. &lt;a href="http://classicshell.sourceforge.net/features.html" target="_blank" mce_href="http://classicshell.sourceforge.net/features.html"&gt;Features list &lt;/a&gt;is quite impressing.&lt;/p&gt;  &lt;p&gt;Update 2012-11-08: If you want Shutdown/Logoff/Restart tiles on your new start screen, there’s an easy &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Create-a-ShutdownRestartLog-37c8111d"&gt;PowerShell commands&lt;/a&gt; to get the job done.&lt;/p&gt;  &lt;p&gt;Update 2012-11-26: So far the slickest implementation is &lt;a href="http://www.stardock.com/products/start8/"&gt;Start8&lt;/a&gt; by StarDock, which I like for Fences and ObjectDock.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8908244" width="1" height="1"&gt;</description></item><item><title>Git Repository on Windows Server</title><link>http://weblogs.asp.net/sfeldman/archive/2012/11/01/git-repository-on-windows-server.aspx</link><pubDate>Fri, 02 Nov 2012 02:13:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9278620</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9278620</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9278620</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/11/01/git-repository-on-windows-server.aspx#comments</comments><description>&lt;p&gt;Our group is moving to Git for code management and we were looking for in-house hosting option on Windows platform. I was surprised to find out that out of the box there are not many options. Rolling your own solution (aka setting it up manually) was not an option as we are a small group that is already tasked with enough work. So I started my search for free or paid options. You can guess that options were limited, yet one product I found has exceeded expectation and was just perfect – &lt;a href="http://www.scm-manager.org"&gt;SCM-Manager&lt;/a&gt;. Easy, simple, smooth integration with Active Directory and Jenkins build server. What else a boy needs &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://weblogs.asp.net/blogs/sfeldman/wlEmoticon-smile_3F177B71.png" /&gt;Not to mention that it’s absolutely free. Amazing piece of work. Highly recommended.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9278620" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Not a Good Day to Watch Presentations on Software Development</title><link>http://weblogs.asp.net/sfeldman/archive/2012/09/27/not-a-good-day-to-watch-presentations-on-software-development.aspx</link><pubDate>Fri, 28 Sep 2012 02:48:18 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9007594</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=9007594</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=9007594</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/09/27/not-a-good-day-to-watch-presentations-on-software-development.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_71ABAFC4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_5E1E5023.png" width="787" height="85" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wow.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9007594" width="1" height="1"&gt;</description></item><item><title>Windows Live - Multiple Accounts Simultaneously</title><link>http://weblogs.asp.net/sfeldman/archive/2012/09/20/windows-live-multiple-accounts-simultaneously.aspx</link><pubDate>Thu, 20 Sep 2012 13:58:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8953932</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=8953932</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=8953932</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/09/20/windows-live-multiple-accounts-simultaneously.aspx#comments</comments><description>&lt;p&gt;Among the features I love about Gmail is to be able to access multiple accounts w/o signing out and signing in. I’m late to learn this, but apparently you can do the same thing with Windows Live IDs. Same idea, straight forward.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_02E408AE.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_2FF8F57C.png" width="686" height="321" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The bonus is that you can control access to your account like LinkedIn, Facebook, Twitter, and Google. Very neat.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8953932" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Other/default.aspx">Other</category></item><item><title>cURL to Scrape Data</title><link>http://weblogs.asp.net/sfeldman/archive/2012/09/20/curl-to-scrape-data.aspx</link><pubDate>Thu, 20 Sep 2012 13:43:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8953864</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=8953864</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=8953864</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/09/20/curl-to-scrape-data.aspx#comments</comments><description>&lt;p&gt;I ran into a situation today when one of our microsites that was developed by a 3rd party is no longer… manageable. To be less politically correct, we don’t have access to the data anymore. Nothing significant, but annoying. The only way to see the data was through the web site. Yet data was paged, with about 40 pages. This is where curl was really helpful. Apparently, you can &lt;a href="http://www.codediesel.com/tools/6-essential-curl-commands/"&gt;parameterize URLs&lt;/a&gt; (thanks to Sameer’s post) passed into the command, as well as the output. Here’s an example:&lt;/p&gt;  &lt;p&gt;curl.exe -o &lt;strong&gt;page#1.html&lt;/strong&gt; http://dummy.com/show?page=&lt;strong&gt;[1-40&lt;/strong&gt;&lt;strong&gt;] &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Where page#1.html will be populated by the current index and index is set from 1 to 40. Awesome trick!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8953864" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Automation/default.aspx">Automation</category></item><item><title>My Son`s First Program</title><link>http://weblogs.asp.net/sfeldman/archive/2012/09/05/my-son-s-first-program.aspx</link><pubDate>Thu, 06 Sep 2012 00:14:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8894452</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=8894452</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=8894452</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/09/05/my-son-s-first-program.aspx#comments</comments><description>&lt;p&gt;This is it. Liam has built his first program (sort of) and I am glad that the reason he did it was to confirm what he learned and not as a desire to become a programmer. If you haven’t seen &lt;a href="http://www.khanacademy.org/cs/"&gt;http://www.khanacademy.org/cs/&lt;/a&gt; check it out. An outstanding resource for kids to learn basic programming and practice some math skills. Liam has started Algebra and this was his first “program” to solidify understanding of concepts such as &lt;em&gt;variable&lt;/em&gt;,&amp;#160; &lt;em&gt;algebraic expression&lt;/em&gt;, &lt;em&gt;formula&lt;/em&gt;, &lt;em&gt;input&lt;/em&gt;, and &lt;em&gt;output&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_0E593A4F.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_7B380DA2.png" width="614" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I loved the fact that it was in JavaScript, so natural (he knows how to use browser), intuitive (var for variable). Except semicolon – VB developers would agree with Liam on his words: “weird”.&amp;#160; &lt;/p&gt;  &lt;p&gt;As a parent, I’m going to embrace this tool, hoping that Liam will benefit from “real-time” visualization, though I will never substitute a printed book with it.&lt;/p&gt;  &lt;p&gt;PS: Liam is 8, in case you are wondering.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8894452" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Twitter Bootstrap</title><link>http://weblogs.asp.net/sfeldman/archive/2012/09/04/twitter-bootstrap.aspx</link><pubDate>Wed, 05 Sep 2012 05:58:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8892189</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=8892189</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=8892189</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/09/04/twitter-bootstrap.aspx#comments</comments><description>&lt;p&gt;If you have tried to build a web interface that would work for most of browsers and variety of devices, you’ll appreciate &lt;a href="http://twitter.github.com/bootstrap/index.html"&gt;Twitter Bootstrap&lt;/a&gt; project/framework. &lt;/p&gt;  &lt;p&gt;Personally, I liked the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Decent documentation and examples&lt;/li&gt;    &lt;li&gt;Ease of setup and use (nuget: Install-Package twitter.Bootstrap)&lt;/li&gt;    &lt;li&gt;Intuitive rules names&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Recent &lt;a href="http://www.dotnetcurry.com/magazine/dnc-magazine-issue1.aspx"&gt;DNC Magazine&lt;/a&gt; has a starter article on how to get it going.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8892189" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/CSS_2F00_HTML/default.aspx">CSS/HTML</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/sfeldman/archive/tags/OSS/default.aspx">OSS</category></item><item><title>Automate or Not</title><link>http://weblogs.asp.net/sfeldman/archive/2012/06/22/when-manual-is-better-than-automated.aspx</link><pubDate>Sat, 23 Jun 2012 01:30:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8635367</guid><dc:creator>Sean Feldman</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/sfeldman/rsscomments.aspx?PostID=8635367</wfw:commentRss><wfw:comment>http://weblogs.asp.net/sfeldman/commentapi.aspx?PostID=8635367</wfw:comment><comments>http://weblogs.asp.net/sfeldman/archive/2012/06/22/when-manual-is-better-than-automated.aspx#comments</comments><description>&lt;p&gt;When system is built, no one wants to baby sit after its up and running. Therefore, there is a strong desire to automate everything, including error handling. But sometimes automation is not suitable for every error, and here is a good example.&lt;/p&gt;  &lt;p&gt;An email signup service that I have created is using a 3rd party service to discover city, region, and country from city name only.&amp;#160; Easy and intuitive for customers, head ache free to maintain (no need to keep data source up-to-date). All good and nice till I got an error reported by someone on the team – instead of City the system reported “junk” (see screenshot).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sfeldman/image_37D247A5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sfeldman/image_thumb_548BBCBA.png" width="461" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After debugging a little, it was simply bad data coming back from the 3rd party service (which I have to admit was extremely reliable and accurate for the most part). So what do you do? Initial response in the team was “lets code it so that when a city has a comma and space, we strip it along with the rest. I.e., when “Calgary, Alberta” is received for a city name, we strip the “, Alberta” portion. Sounds like a great idea, can be automated and be done.&lt;/p&gt;  &lt;p&gt;But wait a second, there’s also a different issue as well, sometimes system reports Region (aka state / district / province) incorrectly (“AB Alberta” rather than “Alberta”). It is not affecting production right away. So would it be correct to apply the same “fix logic”? At the same time, it could be “City, Regions, Country” returned in a field for City only. Does it make sense to automate the process of fixing the problem (considering that it happens rarely)? Or, perhaps, it’s worth to automate alerts about malformed data, but leave data clean-up to a person?&lt;/p&gt;  &lt;p&gt;We have decided to do the minimum required – automate alerts for data that looks odd, and leave fixing to a person that actually deals with subscriptions.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8635367" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/sfeldman/archive/tags/Automation/default.aspx">Automation</category></item></channel></rss>
