<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-4097580925014565387</atom:id><lastBuildDate>Wed, 07 May 2008 21:49:50 +0000</lastBuildDate><title>Alexey Govorin (Leshka)</title><description /><link>http://govorin.blogspot.com/</link><managingEditor>noreply@blogger.com (agovorine@gmail.com)</managingEditor><generator>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AlexeyGovorin" type="application/rss+xml" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-7891408779240714977</guid><pubDate>Wed, 23 Apr 2008 20:48:00 +0000</pubDate><atom:updated>2008-04-23T16:07:37.216-05:00</atom:updated><title>Central Ohio ALM Group meeting</title><description>First of all I would like to aplogize to everyone who signed up for the email notifications for the ALM User Group.  That list was mis-placed and I was not able to add people.&lt;br /&gt;so we will try it one more time with list sign up, or you can subscribe to our &lt;a href="http://www.coalmg.org/"&gt;blog&lt;/a&gt; or sign through &lt;a href="http://www.codezone.com/"&gt;codezone&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;An now i am proudly announce that we have our first meeting on 4/29/08 at 5:30 pm.&lt;br /&gt;See more details at the &lt;a href="http://www.coalmg.org/2008/04/writing-maintainable-and-robust.html"&gt;site&lt;/a&gt;.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/276429354/central-ohio-alm-group-meeting.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2008/04/central-ohio-alm-group-meeting.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-1050868726030056731</guid><pubDate>Sat, 29 Mar 2008 02:11:00 +0000</pubDate><atom:updated>2008-03-28T21:11:39.781-05:00</atom:updated><title>Pictures from Detroit VS2008 Launch Event &amp; Geek Dinner</title><description>&lt;a href="http://www.flickr.com/photos/69157670@N00/sets/72157604167260604/"&gt;http://www.flickr.com/photos/69157670@N00/sets/72157604167260604/&lt;/a&gt;</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/259991889/pictures-from-detroit-vs2008-launch_28.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2008/03/pictures-from-detroit-vs2008-launch_28.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-8461347322545826595</guid><pubDate>Thu, 21 Feb 2008 18:30:00 +0000</pubDate><atom:updated>2008-02-21T13:44:01.766-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Quitter</category><title>How does an TFS geek pack?</title><description>Since I have been challenge to respond by my &lt;a href="http://brianhprince.blogspot.com/"&gt;Boss, known in the company as a QUITTER&lt;/a&gt; to the &lt;a href="http://brianhprince.blogspot.com/2008/02/how-does-architect-pack.html"&gt;moving&lt;/a&gt;, here is how I see moving and packing from the TFS point of view:&lt;br /&gt;&lt;br /&gt;First of all the shipping boxes would be known as a “Changesets” that may contain many different items. As each item is packed it will get a unique version id. As I move item around I would create new boxes to hold a newly moved item. Interestingly I may actually be able to “clone the item”, since the same item will be part of the different boxes. I may require a Packing Review before any of the packing is committed and the box filled. Once the box is full of the continents an automatic shipping process will kick off to verify that all my packing is done according the shipping standards and that my packing does not break other people packing, the shipping company and all other parties that subscribe to Alerts will be notified of the filled boxes. Not only one shall be able to see the contents and status of the box, but also all the requirements that prompted the filling of the box and how many times it has been re-packed due to the changing shipping/moving rules.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/238953799/how-does-tfs-geek-pack.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2008/02/how-does-tfs-geek-pack.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-5038295897363677422</guid><pubDate>Tue, 05 Feb 2008 01:19:00 +0000</pubDate><atom:updated>2008-02-04T20:19:15.869-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TFS</category><title>FRAG! I have checked in the code in TFS05 I did not mean. What do I do now?</title><description>&lt;p&gt;Hypothetically speaking...&lt;/p&gt;  &lt;p&gt;Lets assume that one of my &amp;quot;friends&amp;quot; made a big mistake and have checked in the code into TFS, and broke the build, and screw up the code that was frozen &amp;amp; suppose to be ready to go to the production! &lt;/p&gt;  &lt;p&gt;So, what can the &amp;quot;friend&amp;quot; do at this point, considering that once the code is checked in into the TFS source control it does become part of the permanent record.&lt;/p&gt;  &lt;p&gt;Well the &amp;quot;friend&amp;quot; has found that the easiest thing to do, besides blaming the PM is to do following:&lt;/p&gt;  &lt;p&gt;1. Find the Changeset that was preceding the check-in, one can do it by right clicking on the solution/project/file(s) (I think solution or project would be preferred to ensure that all changes will be rolled back) and selecting &amp;quot;Get Specific Version&amp;quot;; from the Type dropdown select &amp;quot;Changeset&amp;quot; and using the Changeset dialog to display all change for the day or person.&lt;/p&gt;  &lt;p&gt;2. Once the code for the selected Changeset is loaded, you still have nothing to check-in, so trigger the checking process, select solution/project/file(s) and select &amp;quot;Check Out for Edit&amp;quot;.&lt;/p&gt;  &lt;p&gt;3. Now one should be able to check-in the back into the source control by selecting &amp;quot;Checkin Pending Changes&amp;quot;.&lt;/p&gt;  &lt;p&gt;4. Here is where the fun comes, during the check-in process &amp;quot;Conflict&amp;quot; dialog will popup, one should select the file(s) and click on &amp;quot;Resolve&amp;quot; choice and select &amp;quot;Discard Server Changes&amp;quot;.&lt;/p&gt;  &lt;p&gt;5. Now that all conflicts has been resolved, repeat step 3.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Alternatively, one may download &lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718351.aspx" target="_blank"&gt;Team Foundation PowerToys&lt;/a&gt; (TFPT.exe) and use one of the nifty commands: tfpt rollback /changeset:###; if there are any conflicts detected user is presented with a &amp;quot;Merge&amp;quot; dialog.&lt;/p&gt;  </description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/229263126/frag-i-have-checked-in-code-in-tfs05-i.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2008/02/frag-i-have-checked-in-code-in-tfs05-i.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-7024560132639099827</guid><pubDate>Thu, 29 Nov 2007 01:34:00 +0000</pubDate><atom:updated>2007-11-28T20:34:34.113-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TFS</category><category domain="http://www.blogger.com/atom/ns#">Work Item "Description" bug export</category><title>Mysterious ### signs during Work Items export to Excel</title><description>&lt;p&gt;Several of my co-workers have run into the problem of exporting work items into the Excel 2007.&amp;#160; The problem was/is during the export of HTML type fields (like description) in some cases they have gotten #### instead of actual words.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/agovorine/R04XGXsNtvI/AAAAAAAAACA/hb59WNItQPE/image%5B2%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="66" alt="image" src="http://lh6.google.com/agovorine/R04XHnsNtwI/AAAAAAAAACI/rRfS_GNPMQA/image_thumb" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;There is a &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2443912&amp;amp;SiteID=1" target="_blank"&gt;forms post&lt;/a&gt; that have one of the permanent solutions listed, but I found a workaround to the problem or at least temporary solution by formatting the cell/column.&lt;/p&gt;  &lt;p&gt;option 1:&lt;/p&gt;  &lt;p&gt;I have selected &amp;quot;Format Cells&amp;quot; -&amp;gt; Number -&amp;gt; Custom -&amp;gt; General -&amp;gt; OK&lt;/p&gt;  &lt;p&gt;and the final result is:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/agovorine/R04XJXsNtxI/AAAAAAAAACQ/TFyYhFkxf1Y/image%5B5%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="69" alt="image" src="http://lh4.google.com/agovorine/R04XKHsNtyI/AAAAAAAAACY/vVNmYNIiGXw/image_thumb%5B1%5D" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;option 2:&lt;/p&gt;  &lt;p&gt;alternative approach, if one knows how to use new Excel ribbon menus would be selecting cell/column and: Home -&amp;gt;Style -&amp;gt; Normal to reset the style and to re-enable wrapping: Alignment -&amp;gt; Wrap Text&lt;/p&gt;  &lt;p&gt;So what is the moral of the post? Lets stop blaming TFS and start learning on how to use Excel&amp;#160; :)&lt;/p&gt;  </description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/192149557/mysterious-signs-during-work-items.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/11/mysterious-signs-during-work-items.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-1540825321595133415</guid><pubDate>Tue, 05 Jun 2007 18:32:00 +0000</pubDate><atom:updated>2007-06-05T14:06:52.708-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TechEd 2007</category><title>First Impressions of Tech Ed 2007: Process + Quality + Agility = Success</title><description>Key note presentation by Bob Mugila was pretty entertaining, "&lt;a href="http://www.neowin.net/events/?p=38"&gt;Back to the Future&lt;/a&gt;" skit was great. I like the message presented by Bob, he had mention that IT is a big pendulum that swings from what is the important at this time, and three key pilars of it are: process, quality, and agility.&lt;br /&gt;From my working experience, I can totally see it. When I started to work at one of my old companies it was all about process, it was driven into my head "RUP this and RUP that", we need to have a process in place on how to take a lunch prior to taking it. Shortly after I have started to dream about the process in my sleep, the company took a turn into a new direction, that can be summarise as: "we do not care how you do it, but it must be done with 'high' quality and bug free!"&lt;br /&gt;&lt;br /&gt;What I liked about keynote presentation is that for us to succeed, we need to do combination of all three. The idea that if you have a process in place, we can improve the quality of work (simply by doing what we do and examining the history) and of course if the process is flexible we can achieve agility without sacrificing the first two. It totally make sense, that combination of 3 is what will make any company successful. Interesting observation that at my current company we are taking the position that: process, quality, and agility is truly a single driving force/foundation to the success.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/122419692/first-impressions-of-tech-ed-2007.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/06/first-impressions-of-tech-ed-2007.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-3005013487461680763</guid><pubDate>Mon, 23 Apr 2007 01:34:00 +0000</pubDate><atom:updated>2007-04-22T21:38:19.155-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">TFS</category><category domain="http://www.blogger.com/atom/ns#">Testing in Visual Studio 2005</category><category domain="http://www.blogger.com/atom/ns#">VSTS</category><category domain="http://www.blogger.com/atom/ns#">TDD</category><title>Test Driven Development &amp; Visual Studio Team System</title><description>Recently, I was given an opportunity to give a presentation on TDD and how one may use VS2005 to accomplish this task. During the presentation I have used a standard &lt;a href="http://govorine.com/Documents/Test%20Driven%20Development%20with%20Visual%20Studio%202005%20Team%20System.pptx"&gt;Microsoft presentation on TDD and VSTS&lt;/a&gt;.&lt;br /&gt;During my presentation I showed several examples on how to author: unit test, manual tests, load tests, web tests, database unit tests (stored procedures), and ordered tests. We have looked closer at: Test Manager, Code Coverage, Code Analysis and how these functionality integrates with TFS. The sample solution containing all the code can be found &lt;a href="http://govorine.com/Documents/TDDinVSTS%20Sample.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My final thoughts on testing in VSTS:&lt;br /&gt;1. Visual Studio Team System makes testing easy, great auto-generation tools allow one to generate all the plumbing without any hassle; it also provides a starting point for learning how to create tests.&lt;br /&gt;2. With an exception on Windows Forms UI tests VSTS allows to generate tests that will cover all the aspects of the development and testing.&lt;br /&gt;3. 100% Code Coverage does not mean that the application is bullet prove, it should be used in conjunction with Code Analysis to identify if we are comfortable the number of tests.&lt;br /&gt;4. all written tests should be used in regression testing, once we start to modify existing code.&lt;br /&gt;5. We have "white tests" written usually by developers that deal implementation and technology details; and "black tests" written by testers (QC/QA) that deal functional requirements of the application.&lt;br /&gt;&lt;br /&gt;An interesting thought: From the tester's point of view we need to create a "time line". For example users does something in the system, system does something in response and based on the those results user does something else. For example user creates a task, task's work flow/state triggers additional email notifications that may provide user with additional information.&lt;br /&gt;&lt;br /&gt;So what is the problem? The problem is that we are violating several rules: Unit Test must be simple and cover small portions of the functionality and all Unit Tests must be independent of each other. My current solution for this problem:&lt;br /&gt;1. use multiple asserts in the test and&lt;br /&gt;2. group relevant tests in Ordered Test.&lt;br /&gt;&lt;br /&gt;Any thoughts on it?</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/111174390/test-driven-development-and-how-you-can.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/04/test-driven-development-and-how-you-can.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-885440092551236075</guid><pubDate>Mon, 09 Apr 2007 19:06:00 +0000</pubDate><atom:updated>2007-04-09T17:11:29.796-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">NHibernate</category><category domain="http://www.blogger.com/atom/ns#">ORM</category><title>ORM:1, Hand Coding:0</title><description>By definition I am lazy, I love using tools to reduce my workload. Object Relational Mapping (ORM) is one of those tools that I can not live without.&lt;br /&gt;&lt;br /&gt;Several projects ago we decided that it would be better if we generate at least 85% of persistence layer automatically, but still would have control of how and when do we use ORM. &lt;a href="http://www.hibernate.org/343.html"&gt;NHibernate&lt;/a&gt; was our choice of the ORM (at time it was beta 0.8).&lt;br /&gt;&lt;br /&gt;So why does ORM rule? Well, I would like to share a great story on how we were able to leverage NHibernate. On one of my current projects we are using NHibernate (1.03 beta) to generate the persistence layer for the use with Oracle 10G R2.&lt;br /&gt;As we were reviewing and finalizing the requirements for purchasing production hardware and licenses, the client’s newly hired CIO,  asked us: “why do we need to have both Oracle and SQL Server?” Of course we answered that: “we are using Oracle because it is your preferred choice of database to persist application data. SQL Server is a requirement for the BizTalk 2006, which we are using as a middleware server.”&lt;br /&gt;The next question was: “What will it take to switch to SQL Server completely?”  I should mention this conversation took place half way through our development effort. Our response was: “since we are using ORM to abstract the database from the application, it should only take 54 hours.”&lt;br /&gt;Here is a list of tasks we had to do:&lt;br /&gt;1. SQL Server Setup (Total Effort: 4 hours)&lt;br /&gt;2. Database Conversion (Total Effort: 24 hours)  &lt;br /&gt;   a) re-create 135+ tables from the Database Definition Language (DDL) scripts;&lt;br /&gt;   b) make unit conversion updates like: Change VARCHAR2 to VARCHAR, CLOB to VARCHAR(MAX), NUMBER to BIGINT, NUMBER (1) to BIT/BOOLEAN&lt;br /&gt;   c) update defaults, identities&lt;br /&gt;   d) update naming conventions&lt;br /&gt;   e) update DDL Script that generates triggers&lt;br /&gt;   f) update 5 stored procedures and functions&lt;br /&gt;3. Code Updates (Total Effort: 10 hours)&lt;br /&gt;   a) Update the NHibernate XML Mapping files (82+)&lt;br /&gt;   b) Update the method that calls stored procedures&lt;br /&gt;4. Regression Testing (Total Effort: 16 hours)&lt;br /&gt;&lt;br /&gt;As soon as we got the green light from the CIO to go ahead and make the conversion, our DBA and Lead Developer spent one week-end making the conversion. It surprised me that our actual implementation time was 55 hours, and most of that was spent in data conversion (32 hours).&lt;br /&gt;&lt;br /&gt;So on the following Monday, one of developers had a shocking experience. In the morning he was working on one of his features that required saving.  Typically, he would open &lt;a href="http://www.toadsoft.com/"&gt;Toad&lt;/a&gt; to view the table he was saving to, in order to verify the results. According to him, he was getting pretty mad, because a simple save feature started to look like a nightmare. He would type the values on the form, click save, get no errors, go look for the results in Toad and see no changes in the table, sol he tries to reload the form/restart application/visual studio/computer and see that typed values are loading back, while still not showing in the database. How can you troubleshoot a problem like that?&lt;br /&gt;Luckily, we have "Daily Stand Up Meetings," at which everyone gives updates on items they are currently working and have completed. So as the news of the database switch were announced, you could clearly hear swearing from the developer.  Mel, feel free to add to the story.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the end:&lt;br /&gt; - listening to the boss on why we should be using ORM is 0.0001 man hours,&lt;br /&gt; - choosing an ORM is 40 man hours,&lt;br /&gt; - crash learning NHibernate is 80 man hours,&lt;br /&gt; - getting comfortable with NHibernate is 160 man hours,&lt;br /&gt; - switching database during the development without developers noticing is PRICELESS!</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/107819686/orm1-hand-coding0.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/04/orm1-hand-coding0.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-1826015839721040881</guid><pubDate>Sun, 21 Jan 2007 02:27:00 +0000</pubDate><atom:updated>2007-01-21T23:31:04.179-05:00</atom:updated><title>Josh and Brian get Codemash style haircuts!</title><description>At our first Codemash convention, &lt;a href="http://www.joshholmes.com/default.aspx"&gt;Josh Holmes &lt;/a&gt;made a bold statement: that if by the end of the conference we add 500 blog entries on the topic of the CODEMASH, then he will shave his head.&lt;br /&gt;&lt;a href="http://brianhprince.blogspot.com/index.html"&gt;Brian Prince&lt;/a&gt; up the ante to 600 entries for his hair removal.&lt;br /&gt;&lt;br /&gt;Josh and Brian on day one of the Codemash:&lt;a href="http://bp1.blogger.com/_NvrMUcAboHk/RbLSVtrffVI/AAAAAAAAAAM/QbyMrtZqwY0/s1600-h/DSC00305.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5022307804952624466" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_NvrMUcAboHk/RbLSVtrffVI/AAAAAAAAAAM/QbyMrtZqwY0/s200/DSC00305.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_NvrMUcAboHk/RbLTS9rffWI/AAAAAAAAAAU/WVs50MqQLa8/s1600-h/DSC00306.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5022308857219612002" style="CURSOR: hand" alt="" src="http://bp2.blogger.com/_NvrMUcAboHk/RbLTS9rffWI/AAAAAAAAAAU/WVs50MqQLa8/s200/DSC00306.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and this is them at the closing note of the Codemash&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_NvrMUcAboHk/RbLVQtrffXI/AAAAAAAAAAc/g7pfjH1ToNY/s1600-h/DSC00431.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5022311017588161906" style="CURSOR: hand" alt="" src="http://bp1.blogger.com/_NvrMUcAboHk/RbLVQtrffXI/AAAAAAAAAAc/g7pfjH1ToNY/s320/DSC00431.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In case you have missed the hair cutting process or really want it to see it again, based on the people's demand, I bring you ... What 600 blog entries can achieve!&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lwYh0LSLMYk"&gt;&lt;embed src="http://www.youtube.com/v/lwYh0LSLMYk" type="application/x-shockwave-flash" width="600" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/79452130/josh-and-brian-get-codemash-style.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/01/josh-and-brian-get-codemash-style.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-2389322075500852352</guid><pubDate>Fri, 19 Jan 2007 20:16:00 +0000</pubDate><atom:updated>2007-01-20T01:45:51.239-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">"WHAT vs HOW"</category><category domain="http://www.blogger.com/atom/ns#">codemash</category><title>Codemash - what i got out of it</title><description>In several sessions I have heard speakers talking about of what we are getting without knowing how to get concept. I feel there is a trend to abstract/simplify programming, we are getting tools that will allow us to concentrate on getting WHAT we need, and letting underlying framework to figure on HOW to fulfil the request.&lt;br /&gt;&lt;br /&gt;This will allow us to take advantage of the hardware (multi-cores) and framework changes.&lt;br /&gt;&lt;br /&gt;For example, if we need to loop through the list of cities and do something with result(s), if we use 'for', we are stucked with a single thread.&lt;br /&gt;&lt;br /&gt;foreach (City city in cities)&lt;br /&gt;if (city.Name == "Columbus")&lt;br /&gt;whatever&lt;br /&gt;&lt;br /&gt;but if we use LINQ, even though it does not use multi-threading right now, he are not programming on HOW we are getting the data, which leaves framework for the future evolution to make a smart decision on how to get those cities for us:&lt;br /&gt;var results = from city in cities&lt;br /&gt;where city.Name =="Columbus"&lt;br /&gt;select city;</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/78141717/codemash-what-i-got-out-of-it.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/01/codemash-what-i-got-out-of-it.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-4056096258316614226</guid><pubDate>Fri, 19 Jan 2007 17:28:00 +0000</pubDate><atom:updated>2007-01-20T01:45:12.837-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">qsi party</category><category domain="http://www.blogger.com/atom/ns#">codemash</category><title>Codemash, QSI Party</title><description>I think QSI party was a great success. I had an opportunity to talk to a lot of people, and again take a few snap-shots, see them at &lt;a href="http://www.flickr.com/photos/69157670@N00/tags/codemashqsi/"&gt;flickr&lt;/a&gt; (codemashqsi).&lt;br /&gt;&lt;br /&gt;ps&lt;br /&gt;Just trying to see Josh and Brian with shaven heads.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/78028629/codemash-qsi-party_19.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/01/codemash-qsi-party_19.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-1639938222517820314</guid><pubDate>Fri, 19 Jan 2007 05:54:00 +0000</pubDate><atom:updated>2007-01-20T01:44:37.302-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">codemash networking</category><category domain="http://www.blogger.com/atom/ns#">codemash</category><title>Codemash Networking</title><description>No it is not about Brian's presentation.&lt;br /&gt;&lt;br /&gt;So what is the networking, well it is as simple as a group of geeks getting together in the water park. what should you expect? find out for yourself at &lt;a href="http://www.flickr.com/photos/69157670@N00/tags/codemashnetworking/"&gt;flickr (codemashnetworking)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I now do have an answer to a mind boggling question: can a Midwest developer surf?&lt;br /&gt;see it for yourself &lt;a href="http://video.google.com/videoplay?docid=-2676913860949129275&amp;amp;hl=en"&gt;"Codemash Networking"&lt;/a&gt;.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/77897323/codemash-networking.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/01/codemash-networking.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-4502907633543903620</guid><pubDate>Fri, 19 Jan 2007 05:45:00 +0000</pubDate><atom:updated>2007-01-20T01:44:04.893-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">codemash day 1</category><category domain="http://www.blogger.com/atom/ns#">codemash</category><title>Codemash, Day 1</title><description>First day was awesome, I continue to help with running the conference. I have enjoyed all sessions I have attended, some of them have confirmed that what I am doing is "the right thing". I also saw a few new angles/perspectives from other technologies.&lt;br /&gt;&lt;br /&gt;My thoughts on DSL, we all use it everyday, probably the most common/broad would be the language itself; obviously my English DSL skill can be improved :), but if people can understand me, that is good enough for me!&lt;br /&gt;&lt;br /&gt;Anyway, more pictures from Codemash Day 1 event, can be found on the &lt;a href="http://www.flickr.com/photos/69157670@N00/tags/codemashday1/"&gt;flickr&lt;/a&gt; you can use codemash or codemashday1 tags to get to the pictures</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/77799974/codemash-day-1.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/01/codemash-day-1.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-471622481690155934</guid><pubDate>Thu, 18 Jan 2007 05:28:00 +0000</pubDate><atom:updated>2007-01-20T01:43:38.698-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">codemash day 0</category><category domain="http://www.blogger.com/atom/ns#">codemash</category><title>CodeMash, Day 0</title><description>Day Zero of &lt;a href="http://www.codemash.org"&gt;CodeMash&lt;/a&gt; is over! I felt it would never end, I helped to setup and run the registration for it. If you have a chance you should check out the cool WPF check-in application that was written for this event by &lt;a href="http://brianhprince.blogspot.com/"&gt;Brian&lt;/a&gt;, it took him only a few hours. Obviously, not without errors, I spent several hours chasing the tail to figure it out, what in the world "User login is not part of the trusted connection", we can run the application to look up the data, but we were not able to update it; in the end it was a simple mismatch between database column name and the application field.&lt;br /&gt;&lt;br /&gt;Anyway I have uploaded "CodeMash - Day 0" pictures on &lt;a href="http://oldjew.spaces.live.com/PersonalSpace.aspx?_c11_PhotoAlbum_spaHandler=TWljcm9zb2Z0LlNwYWNlcy5XZWIuUGFydHMuUGhvdG9BbGJ1bS5GdWxsTW9kZUNvbnRyb2xsZXI%24&amp;_c11_PhotoAlbum_spaFolderID=cns%217D972F22B5C93733%21667&amp;amp;_c=PhotoAlbum"&gt;my msn spaces&lt;/a&gt; and a copy of them is loaded to &lt;a href="http://www.flickr.com/photos/69157670@N00/tags/codemash/"&gt;flickr&lt;/a&gt; with tag "CodeMash"</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/77159652/codemash-day-0.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2007/01/codemash-day-0.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-1024783872422696140</guid><pubDate>Fri, 08 Dec 2006 13:00:00 +0000</pubDate><atom:updated>2007-01-20T01:43:11.083-05:00</atom:updated><title>42 is the answer to any problem</title><description>I can now officially state and prove that solution to any problem is &lt;em&gt;&lt;strong&gt;42&lt;/strong&gt;&lt;/em&gt;!&lt;br /&gt;&lt;br /&gt;Let me run my solution by you. Lets assume that the problem is represented by a variable: X&lt;br /&gt;My prove:&lt;br /&gt;1. if x * 0 = 0&lt;br /&gt;2. if 42 * 0 = 0&lt;br /&gt;3. then (x * 0) = (42 * 0)&lt;br /&gt;4. divide both sides of the equation by 0: x * (0/0) = 42 * (0/0)&lt;br /&gt;5. since both sides of the equation contains (0/0) we cancel it out of the equation and end up&lt;br /&gt;with x= 42!&lt;br /&gt;&lt;br /&gt;Since any problem can be expressed mathematically, I can now say that the solution to any a problem is 42!&lt;br /&gt;&lt;br /&gt;My special thanks to &lt;a href="http://www.bbc.co.uk/berkshire/content/articles/2006/12/06/divide_zero_feature.shtml"&gt;Dr James Anderson, from the University of Reading's computer science department&lt;/a&gt;, that made my prove possible. &lt;br /&gt;&lt;br /&gt;Of course anyone with any basic math skills may point out that we are not allowed to divide by zero since it is undefined operation. In the computer world we know that division by zero produces a NAN (Not A Number) but thanks to a new number "nullity" (-0-) that Dr. Anderson proposed we can now safely divide by zero to solve all kinds of the problems! &lt;br /&gt;&lt;br /&gt;I found his lecture extremely interesting and I have enjoyed people's responses to his solution to 1200-year-old problem. I can not wait to talk to him on December 12th</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/59691998/42-is-answer-to-any-problem.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2006/12/42-is-answer-to-any-problem.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-8189057093693324521</guid><pubDate>Tue, 05 Dec 2006 03:52:00 +0000</pubDate><atom:updated>2007-01-20T01:42:14.470-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">error 2869</category><category domain="http://www.blogger.com/atom/ns#">Vista</category><category domain="http://www.blogger.com/atom/ns#">Service Factory Setup</category><title>"the error code 2869" while running installations in Vista</title><description>I have run into interesting problem in Windows Vista, while I was installing &lt;a href="http://www.gotdotnet.com/codegallery/releases/viewuploads.aspx?id=6fde9247-53a8-4879-853d-500cd2d97a83"&gt;Web Service Software Factory&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/Workshop/gat/download.aspx"&gt;GAT&lt;/a&gt; I kept getting 2869 error code, followed by a few empty 'OK' prompts.&lt;br /&gt;&lt;br /&gt;It looks like this error is due to the installation package requiring administrative rights. In my case installation package was denied contact with Visual Studio 2005.&lt;br /&gt;&lt;br /&gt;There are several ways to fix this problem:&lt;br /&gt;1. create a batch file containing msi package, and run it as Administrator&lt;br /&gt;batch file will contain following line: msiexec /i {package.msi}&lt;br /&gt;&lt;br /&gt;2. run msi from the with elevated privileges command prompt.&lt;br /&gt;Find your "Command Prompt", typically located in: %SystemRoot%\system32\cmd.exe (or just search for Command Prompt); right click on it and select "Run as Administrator", and then navigate to your msi file</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/57320693/error-code-2869-while-running.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2006/12/error-code-2869-while-running.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-5941322679021797259</guid><pubDate>Sat, 02 Dec 2006 20:50:00 +0000</pubDate><atom:updated>2007-01-20T01:41:44.292-05:00</atom:updated><title>Register for CodeMash</title><description>This is a great opportunity for developers to get together and exchange ideas and learn what is going in different branches of technology. I am looking forward to the event.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codemash.org/"&gt; &lt;img src="http://www.codemash.org/includes/images/bloggerbadge.gif" alt="CodeMash &amp;#8211; I&amp;apos;ll be there!" /&gt;&lt;/a&gt;</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/56580982/register-for-codemash.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2006/12/register-for-codemash.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-4574701042989589952</guid><pubDate>Thu, 30 Nov 2006 01:39:00 +0000</pubDate><atom:updated>2007-01-20T01:51:45.876-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">NHibernate</category><title>NHibernate repository variation on the Criteria</title><description>After reading &lt;a href="http://www.arcware.net/archive/2006/11/07/NHibernateRepository.aspx"&gt;Dave Donaldson&lt;/a&gt; post on NHibernate repository, I was pleasantly surprised on how similar our implementations are. By 'our' I mean Kevin Spargue and I; we are using NHibernate on one of our projects. This is my third NHibernate project and this time around we have enough time to sit down and make corrections to hard learned lessons of using NHibernate. One of those days I will get around publishing our version of the NHibernate repository, but for right now I would like to add our variation on dealing with criterias.&lt;br /&gt;&lt;br /&gt;Originally we started with the similar implementation as in Dave's repository:&lt;br /&gt;public static Collection&lt;t&gt; FindByProperty&lt;t&gt;(string property, object value)&lt;br /&gt;with an overload&lt;br /&gt;public static Collection&lt;t&gt; FindByProperty&lt;t&gt;(string[] property, object[] value)&lt;br /&gt;&lt;br /&gt;but then we have decided against it, and end up with creating a class wrapper that have included property value, name and operator. This implementation helped us to reduce the number of methods we need to maintain and have provided us more flexibility when it comes to &amp; finding/filtering data.&lt;br /&gt;&lt;br /&gt;Repository methods&lt;br /&gt;public static IList&lt;t&gt; Find&lt;t&gt;(QueryValueCondition[] queryValueConditions, QueryOrCondition[] queryOrConditions)&lt;br /&gt;where T : IPersist&lt;br /&gt;{&lt;br /&gt;if (queryValueConditions == null) queryValueConditions = new QueryValueCondition[0];&lt;br /&gt;if (queryOrConditions == null) queryOrConditions = new QueryOrCondition[0];&lt;br /&gt;IList&lt;t&gt; results = new List&lt;t&gt;();&lt;br /&gt;Type type = typeof(T);&lt;br /&gt;IList list = Find(type, queryValueConditions, queryOrConditions);&lt;br /&gt;foreach (T item in list)&lt;br /&gt;results.Add(item);&lt;br /&gt;return results;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static IList Find(Type type, QueryValueCondition[] queryValueConditions, QueryOrCondition[] queryOrConditions)&lt;br /&gt;{&lt;br /&gt;IList results = Accessor.LoadList(type, queryValueConditions, queryOrConditions);&lt;br /&gt;return results;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Accessor implementation (Helper class consists of a few static methods that help us final query assembly.)&lt;br /&gt;&lt;br /&gt;public static IList LoadList(Type type, QueryValueCondition[] queryValueConditions, QueryOrCondition[] queryOrCondition)&lt;br /&gt;{&lt;br /&gt;IList results = null;&lt;br /&gt;ICriteria criteria = NHibernateSession.CreateCriteria(type);&lt;br /&gt;foreach (QueryValueCondition valueCondition in queryValueConditions)&lt;br /&gt;criteria.Add(Helper.GetCritria(valueCondition));&lt;br /&gt;foreach (QueryOrCondition orCondition in queryOrCondition)&lt;br /&gt;criteria.Add(Helper.GetOrExpression(orCondition));&lt;br /&gt;results = criteria.List();&lt;br /&gt;return results;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I will not dive into the details of the methods, but I do want to talk about: QueryValueCondition and QueryOrCondition.&lt;br /&gt;&lt;br /&gt;QueryValueCondition class consists of properties wrapped around fields:&lt;br /&gt;string _propertyName = string.Empty;&lt;br /&gt;object _propertyValue = null;&lt;br /&gt;Operators _operators = Operators.Equals;&lt;br /&gt;&lt;br /&gt;Operators is a simple enumeration&lt;br /&gt;public enum Operators&lt;br /&gt;{&lt;br /&gt;Equals,&lt;br /&gt;GreaterThan,&lt;br /&gt;GreaterThanEqualTo,&lt;br /&gt;LessThan,&lt;br /&gt;LessThanEqualTo,&lt;br /&gt;Like,&lt;br /&gt;IsNull,&lt;br /&gt;In,&lt;br /&gt;IsNotNull&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;This class allowed us to group a set of data into a logical unit, that contains everything we need to be able to retrieve data on a passed property value.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;QueryOrCondition class contains wrap around properties for following fields:&lt;br /&gt;QueryValueCondition _leftCondition = null;&lt;br /&gt;QueryValueCondition _rightCondition = null;&lt;br /&gt;&lt;br /&gt;Just an additional class that allow to group multiple properties into OR condition. So now we can use one Find method to get data by one or more properties and we have a power of matching it by various conditions.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/55755463/nhibernate-repository-variotion-on.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2006/11/nhibernate-repository-variotion-on.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-4097580925014565387.post-8379548424758366088</guid><pubDate>Wed, 22 Nov 2006 04:20:00 +0000</pubDate><atom:updated>2006-11-22T00:15:10.072-05:00</atom:updated><title>Installing Team Build</title><description>After finishing the installation of TFS, one may notice that  Team Build is not installed with it.  It is a separate installation.  Depending on the version of the TFS it may be located in a different folder, typically it will be located under \build or \bb folders.  By the way bb abbreviation is for 'Big Build' code name for the Team Build. &lt;br /&gt;&lt;br /&gt;Anyway, once you start setup, you should see title: Microsoft Visual Studio 2005 Team Foundation Server (build) Setup.  Just go through normal setup procedure.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms181741%28VS.80%29.aspx"&gt;MSDN has a great reference&lt;/a&gt; on TFSBuild Commands that can be handy for batch processing, like starting a build.  I commonly use following:&lt;br /&gt;TFSBuild start {http://TFSServerName:8080} {TFS Project Name} {TFS Build Name}&lt;br /&gt;&lt;br /&gt;Obviously, one will have to create a build prior to using tfsbuild from command line.</description><link>http://feeds.feedburner.com/~r/AlexeyGovorin/~3/52527396/installing-team-build.html</link><author>noreply@blogger.com (agovorine@gmail.com)</author><feedburner:origLink>http://govorin.blogspot.com/2006/11/installing-team-build.html</feedburner:origLink></item></channel></rss>
