<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.softec.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>Central Coast Code</title><link>http://www.softec.org/blogs/central_coast_code/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Google Factors In Site Speed For Search Ranking</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/05/14/google-factors-in-site-speed-for-search-ranking.aspx</link><pubDate>Fri, 14 May 2010 21:33:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:2904</guid><dc:creator>Robert Hope</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=2904</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/05/14/google-factors-in-site-speed-for-search-ranking.aspx#comments</comments><description>&lt;p&gt;So it&amp;#39;s official.&amp;nbsp; You will now be penalized by Google if your website underperforms in terms of speed.&amp;nbsp; While the impact should be minimal right now, there is no doubt that this can and likely will become a major differentiator for search ranking down the line.&amp;nbsp; Faster sites not only mean happier users and a happier internet, they also mean less overhead time for GoogleBot as it scans sites that perform more quickly, so it&amp;#39;s in Google&amp;#39;s best interest to make things go faster all over the internet. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html"&gt;http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This implies a couple of things for your website and your ability to acquire a good search ranking score.&lt;/p&gt;
&lt;p&gt;Excellent Search Engine Optimization techniques are no longer good enough.&amp;nbsp; You must also keep a sharp eye on your site performance.&amp;nbsp; Make sure that you are configured for maximum optimization including output caching, compressing static web content, and keeping your technology stack up to date.&amp;nbsp; The article suggests several measuring tools for tracking the speed of your website.&amp;nbsp; In addition, you might want to turn a critical eye to pages that are getting crawled, determine how relevant they are to your site SEO strategy, and then put a &amp;quot;no follow&amp;quot; on links to less relevant pages that do not perform well but are getting crawled and potentially damaging your performance rank.&lt;/p&gt;
&lt;p&gt;Be aware of third party tracking tools that might damage your performance rank.&amp;nbsp; This is true of not only any crawlers should they choose to track page speed based on all of the resources your page requires, but its also true if you are using services like Nagios or Keynote to track and alert you if your pages are slow.&amp;nbsp; While the user might not have any real problem in the browser waiting for a DoubleClick ad to load up, your performance metrics and any bot performance tracking might be harmed.&lt;/p&gt;
&lt;p&gt;This also could potentially impact how you build your SEO content.&amp;nbsp; There are several approaches to providing SEO content to crawlers.&amp;nbsp; One is to dynamically respond to a query and build a response with some sort of code.&amp;nbsp; Another is to build out a bunch of static html pages ahead of time in response to any possible SEO requests.&amp;nbsp; There are others, but the larger issue is it becomes even more important to weigh performance over ease of implementation or reuse of existing infrastructure. &lt;/p&gt;
&lt;p&gt;I can attest from my personal experience that site performance is directly tied to site usage.&amp;nbsp; On past sites that I have worked on, performance improvements have almost always been followed by spikes in site metrics such as page views and ecommerce sales.&amp;nbsp; However, I am concerned with how this requirement by Google un-levels the playing field in regards to SEO rank.&amp;nbsp; Before, if you had great content, that was good enough. But now, if you can&amp;#39;t get your site to perform up to Google&amp;#39;s standards, you could be in trouble.&amp;nbsp; I have to wonder what that means for small lightweight shops who have the resources to address their content but don&amp;#39;t have the resources to pay for high end servers or qualified programmers to make their site work as fast as possible.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=2904" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/performance/default.aspx">performance</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/google/default.aspx">google</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/page+rank/default.aspx">page rank</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/search/default.aspx">search</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/search+rank/default.aspx">search rank</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/site+speed/default.aspx">site speed</category></item><item><title>You should speak at (and attend!) Central Coast Code Camp.</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/04/21/you-should-speak-at-and-attend-central-coast-code-camp.aspx</link><pubDate>Wed, 21 Apr 2010 18:36:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:967</guid><dc:creator>Robert Hope</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=967</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/04/21/you-should-speak-at-and-attend-central-coast-code-camp.aspx#comments</comments><description>&lt;p&gt;Code Camps follow a simple manifesto.&amp;nbsp; The original Code Camp was a conglomeration of ideas by many different people across the development community. The idea was simple: provide an off hour forum for the development community to speak and share ideas for them to come and enjoy. The results have been astounding as they have been held across many different cities.&amp;nbsp; They follow these guidelines.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.centralcoastcodecamp.com"&gt;http://www.centralcoastcodecamp.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;By and For the Developer Community&lt;/strong&gt;&lt;br /&gt;Code Camps are about the developer community at large. They are meant to be a place for developers to come and learn from their peers. Topics are always based on community interest and never determined by anyone other than the community. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Always Free&lt;br /&gt;&lt;/strong&gt;Code Camps are always free for attendees. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Developed Material&lt;br /&gt;&lt;/strong&gt;The success of the Code Camps is that they are based on community content. All content that is delivered is original. All presentation content must be provided completely (including code) without any restriction. If you have content you don&amp;#39;t want to share or provide to attendees then the Code Camp is not the place for you. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No Fluff only Code&lt;/strong&gt;&lt;br /&gt;Code Camps are about showing the code. Refer to rule #1 if you have any questions on this. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Ownership&lt;br /&gt;&lt;/strong&gt;The most important element of the Code Camp is always the developer community. All are welcome to attend and speak and do so without expectation of payment or any other compensation other than their participation in the community. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Never occur during work hours&lt;/strong&gt;&lt;br /&gt;We need to understand that many times people can&amp;#39;t leave work for a day or two to attend training or even seminars. The beauty of the Code Camp is that they always occur on weekends. &lt;/p&gt;
&lt;p&gt;As the primary planner and guiding force behind the first two Central Coast Code Camps, I want to encourage you to speak at the upcoming camp at Cal Poly.&amp;nbsp; Any topic is available for a session, from the simplest code tricks and tips the most complex projects and frameworks.&amp;nbsp; Chances are if there&amp;#39;s something you&amp;#39;ve hit or felt like you should share, there is an audience for you.&amp;nbsp; And camps are a great way to get your feet wet and give presentations in a low-key, highly supportive atmosphere if you are interested in giving talks at User Group meetings or other gatherings.&lt;/p&gt;
&lt;p&gt;If you don&amp;#39;t want to speak at Code Camp, you should still come out and attend and support the camp.&amp;nbsp; In many cases you will meet people you would never have a chance to meet otherwise, including representatives from companies like Microsoft and Zend, who have both sent people to past camps.&amp;nbsp; You&amp;#39;ll get to interact with your local peers and get great content too.&amp;nbsp; Having spoken at Code Camps across the country, I can tell you that nothing, not even the big conferences, holds up to the level of talent and interaction you can get at Camp.&lt;/p&gt;
&lt;p&gt;Hope to see you there!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=967" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/code+camp/default.aspx">code camp</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/central+coast+code+camp/default.aspx">central coast code camp</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/speakers/default.aspx">speakers</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/cal+poly/default.aspx">cal poly</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/seminar/default.aspx">seminar</category></item><item><title>Central Coast Code Camp Returns May 22!</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/03/25/central-coast-code-camp-returns-may-22.aspx</link><pubDate>Thu, 25 Mar 2010 17:44:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:862</guid><dc:creator>Robert Hope</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=862</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/03/25/central-coast-code-camp-returns-may-22.aspx#comments</comments><description>&lt;p&gt;Code Camp is coming&amp;nbsp;May 22nd, 2010 to the California Central Coast!&lt;/p&gt;
&lt;p&gt;The Third Annual Central Coast Code Camp will be held at Cal Poly in San Luis Obispo, CA.&amp;nbsp;&amp;nbsp; It has been a very successful event in the past with speakers from all over the country.&amp;nbsp;&amp;nbsp; Registration is now open for this free 1-day code seminar, and they are also looking for speakers.&amp;nbsp;&amp;nbsp; Let&amp;#39;s all get involved everyone!&amp;nbsp; Sign up to attend, or even better, sign up to speak!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.centralcoastcodecamp.com/"&gt;http://www.centralcoastcodecamp.com/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=862" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/code+camp/default.aspx">code camp</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/central+coast+code+camp/default.aspx">central coast code camp</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/speakers/default.aspx">speakers</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/cal+poly/default.aspx">cal poly</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/seminar/default.aspx">seminar</category></item><item><title>Beware Stale Data</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/03/09/beware-stale-data.aspx</link><pubDate>Tue, 09 Mar 2010 22:48:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:688</guid><dc:creator>Robert Hope</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=688</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/03/09/beware-stale-data.aspx#comments</comments><description>&lt;p&gt;Once every week, our development team shares lunch and watches a video on some new code, new technology, or maybe something from a recent technology conference online. It&amp;#39;s a continuation of the &amp;quot;Lunch &amp;#39;n Learn&amp;quot; program we started at LoopNet several years ago. This week and last week we watched Udi Dahan&amp;#39;s presentation at the London User Group on his alternative to the traditional n-tier web application architecture. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311"&gt;http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query-responsibility-segregation/rl-311&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Dahan attempts to make the case that the current data/business logic/presentation layer hierarchy is not only outdated, but fails to deliver on things such as determining user intent. Instead he claims that systems should be architected by establishing pre-calculated, cached copies of data on a per-query basis to be used for validation and determination of whether UI requests to the database, or &amp;quot;commands&amp;quot;, should be allowed to execute. There&amp;#39;s more to it than that, of course, but the main thrust of his argument is that, since data is always already inherently stale, that it doesn&amp;#39;t matter how stale it is, and it should also be stored out somewhere in some persistent view model to be used for &amp;quot;decision support&amp;quot; as to whether or not to allow &amp;quot;commands&amp;quot; to be accepted. Once accepted, he states that it is perfectly reasonable for those commands to take hours to process, thereby dramatically reducing the load and contention inherent in most n-tier web applications that deliver data immediately, or close to it. The subject of &amp;quot;does your data need to be up-to-date&amp;quot; has come up myriad times in our User Group meetings, so I thought it would be appropriate to discuss. &lt;/p&gt;
&lt;p&gt;I feel that while he makes some good points on determining user intent, he misses the point completely on his analysis of when data should be allowed to be stale and processes not be handled real-time. I am going to go through two scenarios he presented and explain why I feel that he doesn&amp;#39;t make his case. &lt;/p&gt;
&lt;p&gt;In his first scenario, Dahan uses a seat-reservation and ticketing system as an example. He describes a scenario where a user would click on 4 seats, attempt to reserve them, then find one of them taken when they go to check out. At that point they would go back and select a new block of 4 seats, have a similar issue where one or more are taken, and then have to go back and find another block of seats. His argument is that the UI should simply be asking &amp;quot;how many seats do you want, and do you want them together, and in what area/what price&amp;quot;? I&amp;#39;m with him to this point. However, he states that once the UI has gathered that data, the next step should be to inform the customer with a message saying &amp;quot;Thank you for the request. We will send you an email confirmation shortly.&amp;quot; No other confirmation, no approval that the seats are available, nothing. I as the user might have to wait as long as two hours to find out whether or not my tickets are actually purchased. And if the request fails, I might have to stop what I am doing and go back and repeat the process again. Dahan&amp;#39;s argument is that since we know we have 4 contiguous seats somewhere, we should be able to fill the request 99% of the time, and the &amp;quot;feel-good feedback&amp;quot; of &amp;quot;we&amp;#39;ll get to you with a confirmation later&amp;quot; is enough to satisfy the user. I think this is poor customer service, and depending on how things go, I would use a site like Ticketmaster or some other site that could immediately confirm my seats rather than a site designed this way so I could be completely assured that my transaction is done and there is nothing left for me to do to acquire my tickets. &lt;/p&gt;
&lt;p&gt;Dahan even goes so far as to suggest that ATMs follow the same model, that it is not necessary to go to the bank directly when a customer withdraws money, that they should be able to persist enough data out into the world so that ATMs could decide whether or not to dispense cash without the issuing bank&amp;#39;s direct involvement. In fact, he goes on to state that this actually helps the banks because it encourages overdrafts in the case where a husband and wife both withdraw money on the same day, not knowing that their bank is not actually approving their withdrawals. Dahan claims this is a good thing, because all banks love overdraft fees. I find this type of attitude underhanded, and would cease doing business with a bank that designed their system in this fashion. Further, if I call my bank and report my ATM card stolen, they better be able to stop any use of it immediately, and that&amp;#39;s not available in a system of this nature. &lt;/p&gt;
&lt;p&gt;To me, real time data is at times critical and necessary, and to employ this sort of distributed caching system across the board seems naive and at times irresponsible. Systems Architects should be able to deliver their data immediately when requirements call for it rather than try to push their inefficiencies or inability to solve the problem back on to the user by making the user wait hours for ticket approvals...or overdraft their bank accounts because the system was incapable of a real-time approval call.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=688" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/cache/default.aspx">cache</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/stale+data/default.aspx">stale data</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/data/default.aspx">data</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/presentation/default.aspx">presentation</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/architect/default.aspx">architect</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/business+logic/default.aspx">business logic</category></item><item><title>SLO .Net User Group Member posts new CodePlex project:  NCacheD</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/03/04/slo-net-user-group-member-posts-new-codeplex-project-ncached.aspx</link><pubDate>Thu, 04 Mar 2010 18:35:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:657</guid><dc:creator>Robert Hope</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=657</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/03/04/slo-net-user-group-member-posts-new-codeplex-project-ncached.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;Ryan, one of our local .NET user group members, has posted a new CodePlex project.&amp;nbsp;&amp;nbsp; For those of you that don&amp;#39;t know, CodePlex is an online open source community hosted by Microsoft.&amp;nbsp; Developers can create new software projects and upload them to CodePlex for use by others in the community.&amp;nbsp; Ryan has posted a new Cache mechanism called NCacheD&amp;nbsp;for use in .NET applications.&amp;nbsp; Take a look if you&amp;#39;re interested!&lt;/p&gt;
&lt;p&gt;&lt;i&gt;NCacheD is a &lt;b&gt;simple&lt;/b&gt; distributed cache system written entirely in C# 4 using WCF and the TPL. NCacheD offers functionality similar to that of &lt;/i&gt;&lt;a href="http://memcached.org/" class="externalLink"&gt;&lt;span style="color:#3e62a6;"&gt;&lt;i&gt;memcached&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#30332d;"&gt;&lt;i&gt; but scaled back. The only functions available are Get, Set, Delete, and GetSize. The client API also includes an OutputCacheProvider for use with ASP.NET.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ncached.codeplex.com/"&gt;http://ncached.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=657" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/services/default.aspx">services</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/cache/default.aspx">cache</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/codeplex/default.aspx">codeplex</category></item><item><title>Query execution plans warn you of missing indexes in MS SQL Server 2008</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/02/25/query-execution-plans-warn-you-of-missing-indexes-in-ms-sql-server-2008.aspx</link><pubDate>Thu, 25 Feb 2010 21:53:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:578</guid><dc:creator>Robert Hope</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=578</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/02/25/query-execution-plans-warn-you-of-missing-indexes-in-ms-sql-server-2008.aspx#comments</comments><description>&lt;p&gt;For those of you out there who are tasked with improving your sql query performance, one of the best tools you can use is the Execution plan that you can optionally set to come back with the results of your query in Sql Server Management Studio.&amp;nbsp; It provides a host of data about what tables and indices are used by the server to acquire the results for your query.&lt;/p&gt;
&lt;p&gt;In the past, the developer would either have to make an educated guess, or use the Index Tuning Wizard to try and determine where indices might be beneficial.&amp;nbsp; But Sql Server 2008 introduced a new feature of the execution plan:&amp;nbsp; suggesting missing indexes.&amp;nbsp;&amp;nbsp; I hadn&amp;#39;t heard of this and it was very exciting the first time I noticed it.&amp;nbsp; The only drawback is that it only works against databases running on Sql Server 2008.&amp;nbsp; Even with the new SSMS, this data is not returned in the execution plans on earlier server versions.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;There isn&amp;#39;t anything fancy you have to do beyond turn on the &amp;quot;Include Execution Plan&amp;quot; as you&amp;#39;ve always done.&amp;nbsp; If the server feels that your query performance would be improved with an index, that suggestion is included in the execution plan in green, along with the necessary script to create the index, making it easy for you to copy and paste that into a new query window and execute the creation of the index.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.softec.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/central_5F00_coast_5F00_code/3252.sample_5F00_suggest_5F00_index.jpg"&gt;&lt;img border="0" src="http://www.softec.org/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/central_5F00_coast_5F00_code/3252.sample_5F00_suggest_5F00_index.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=578" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/indices/default.aspx">indices</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/sql/default.aspx">sql</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/sql+server+2008/default.aspx">sql server 2008</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/index/default.aspx">index</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/execution+plan/default.aspx">execution plan</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/query+execution+plan/default.aspx">query execution plan</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/performance+tuning/default.aspx">performance tuning</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/sql+server/default.aspx">sql server</category></item><item><title>WCF .NET Serialization</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/01/25/wcf-net-serialization.aspx</link><pubDate>Mon, 25 Jan 2010 20:03:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:237</guid><dc:creator>Robert Hope</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=237</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/01/25/wcf-net-serialization.aspx#comments</comments><description>&lt;p&gt;You may or may not know that data serialization plays a huge part in how Windows Communication Foundation (WCF) works.&amp;nbsp; When incorporating WCF services into your .NET application, one of the primary functions of the &lt;b&gt;DataContract&lt;/b&gt; and &lt;b&gt;DataMember&lt;/b&gt; attributes is to tell the WCF framework how to represent the data to client applications that are generated by either Visual Studio or svcutil.exe for use by your .NET code.&amp;nbsp; The DataContract (or &lt;b&gt;CollectionDataContract&lt;/b&gt; for lists or collections) attribute specifies class definitions, and the DataMember attribute specifies properties.&amp;nbsp; In the example below, the &lt;i&gt;Age&lt;/i&gt; property will not be visible to client applications because it is not properly attributed for use by WCF.&lt;/p&gt;
&lt;p style="margin-left:40px;"&gt;[DataContract]&lt;br /&gt;public class Dog&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;[DataMember]&lt;br /&gt;&amp;nbsp;public int TailLength { get; set; }&lt;/p&gt;
&lt;p style="margin-left:40px;"&gt;&amp;nbsp;public int Age { get; set; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;Recently I had a need to store the incoming data from a WCF service call for asynchronous processing later.&amp;nbsp; In particular, I wanted to store individual items in a CollectionDataContract type that was coming across the wire from my service client rather than the whole request.&amp;nbsp; I also wanted only to store the information that WCF was sending, not the entire object, so I didn&amp;#39;t want to use a standard XmlSerializer or other serializer because, using the example above, I did not want to include the &lt;i&gt;Age&lt;/i&gt; property in my serialization as it had not been sent to me.&lt;/p&gt;
&lt;p&gt;Enter the &lt;b&gt;DataContractSerializer&lt;/b&gt;.&amp;nbsp; It&amp;#39;s included in the System.Runtime.Serialization namespace.&amp;nbsp; It uses the same serialization processes that WCF does to serialize and deserialize objects based on the appropriate DataContract and DataMember attributes.&amp;nbsp; This allows us to serialize and optionally store incoming WCF requests as a whole or in whatever parts we choose.&amp;nbsp; Here&amp;#39;s a generics-based Serialize and Deserialize method using the DataContractSerializer.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static t WcfDeserialize&amp;lt;t&amp;gt;(string data)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where t : class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataContractSerializer ser = new DataContractSerializer(typeof(t));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ser.ReadObject(XmlReader.Create(new StringReader(data))) as t;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string WcfSerialize&amp;lt;t&amp;gt;(t obj)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where t : class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string val;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataContractSerializer ser = new DataContractSerializer(typeof(t));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (MemoryStream memoryStream = new MemoryStream())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ser.WriteObject(memoryStream, obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] data = new byte[memoryStream.Length];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.Copy(memoryStream.GetBuffer(), data, data.Length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val = Encoding.UTF8.GetString(data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return val;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=237" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/Serialization/default.aspx">Serialization</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Migrating to 64-bit Windows: Getting Your Executables and Services to Run 32-bit Components</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/01/18/migrating-to-64-bit-windows-getting-your-executables-and-services-to-run-32-bit-components.aspx</link><pubDate>Tue, 19 Jan 2010 06:26:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:167</guid><dc:creator>Robert Hope</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=167</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/01/18/migrating-to-64-bit-windows-getting-your-executables-and-services-to-run-32-bit-components.aspx#comments</comments><description>&lt;p&gt;When migrating to a 64-bit Windows Server, one of the things a developer has to consider is how to continue to use any 32-bit COM components that they might have referenced in their applications.&amp;nbsp; A common example would be any file uploaders or data encryption tools generally used by legacy ASP applications prior to a migration to .NET. &amp;nbsp;Handling this in IIS for your .NET application is easy enough:&amp;nbsp; you can set up your IIS process to run in 32-bit compatibility mode and it will load up your 32-bit COM components quite nicely.&amp;nbsp; Configuring this is relatively straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open a command prompt and navigate to the %systemdrive%\Inetpub\AdminScripts directory.&lt;/li&gt;
&lt;li&gt;Type the following command:&amp;nbsp; cscript.exe adsutil.vbs set W3SVC/AppPools/Enable32BitAppOnWin64 true&lt;/li&gt;
&lt;li&gt;Press ENTER.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;However, the developer will run into a similar problem when trying to get a windows service or an executable to load the same 32-bit COM component.&amp;nbsp; It is not immediately apparent looking through the Services list or at the properties of the exe how to configure it to run as a 32-bit process.&amp;nbsp; Even the &amp;quot;Run As...&amp;quot; feature of Windows will not accomplish this.&lt;/p&gt;
&lt;p&gt;There is a conversion exe that ships with Visual Studio as part of the Microsoft SDK that allows the developer to configure an exe to run in 32-bit compatibiity mode just like IIS does.&amp;nbsp; Configuring this is also fairly easy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open a command prompt.&lt;/li&gt;
&lt;li&gt;Type the following command:&amp;nbsp; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\CorFlags.exe &lt;i&gt;full path to your exe&lt;/i&gt; /32BIT+&lt;/li&gt;
&lt;li&gt;Press enter.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is one catch.&amp;nbsp; If you don&amp;#39;t set this flag as part of your build or deployment processes prior to deploying your code, you will have to manually set it each time your executable is deployed to a server.&amp;nbsp;&amp;nbsp; But once done, your .NET applications will be able to work with your 32-bit COM components as expected.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=167" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/windows+executable/default.aspx">windows executable</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/32-bit/default.aspx">32-bit</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/windows+service/default.aspx">windows service</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/IIS/default.aspx">IIS</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Free Microsoft Software... Listen Up!</title><link>http://www.softec.org/blogs/central_coast_code/archive/2010/01/14/free-microsoft-software-listen-up.aspx</link><pubDate>Fri, 15 Jan 2010 03:12:00 GMT</pubDate><guid isPermaLink="false">237d73a1-6c37-4813-9188-cf6639c9be28:132</guid><dc:creator>Robert Hope</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.softec.org/blogs/central_coast_code/rsscomments.aspx?PostID=132</wfw:commentRss><comments>http://www.softec.org/blogs/central_coast_code/archive/2010/01/14/free-microsoft-software-listen-up.aspx#comments</comments><description>&lt;h3&gt;SLO .NET User Group is BizSpark&amp;#39;s Local Network Partner that helps startup companies get access to Premium Microsoft Development tools for FREE &lt;/h3&gt;
&lt;p&gt;What is BizSpark, you ask? &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.Microsoft.com/BizSpark" title="Microsoft BizSpark"&gt;BizSpark&lt;/a&gt; is an exciting new program from Microsoft that allows eligible startup companies access to the top of the line Microsoft development tools and platforms. And the &lt;a href="http://www.softec.org/groups/slo_net_user_group/default.aspx" title="SLO .NET User Group Team"&gt;SLO .NET User Group Team&lt;/a&gt; is proud to be the local network partner, in charge of approving local startup companies for the program. &lt;/p&gt;
&lt;p&gt;So if you&amp;#39;re a startup company, and you meet the following criteria you qualify: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Actively engaged in development of a software-based product or service that will form a core piece of its current or intended business, &lt;/li&gt;
&lt;li&gt;Privately held &lt;/li&gt;
&lt;li&gt;In business for less than 3 years &lt;/li&gt;
&lt;li&gt;Less than US $1 million in annual revenue &lt;/li&gt;
&lt;li&gt;Headquarted in San Luis Obispo County or the Santa Maria area &lt;/li&gt;
&lt;li&gt;Willing to join and participate in the SLO .NET User Group &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Feel free to contact&amp;nbsp;&lt;a href="http://www.softec.org/members/rdhopeca/default.aspx" title="Contact Robert Hope"&gt;Me&lt;/a&gt;&amp;nbsp;through my &lt;a href="http://www.softec.org/members/rdhopeca/default.aspx" title="Contact Robert Hope"&gt;Softec Profile&lt;/a&gt; or by email at &lt;a href="mailto:info@sanluistech.com"&gt;info@sanluistech.com&lt;/a&gt;&amp;nbsp;to get approved. For more information you can check out the &lt;a href="http://www.softec.org/groups/slo_net_user_group/pages/microsoft-bizspark-program.aspx" title="Microsoft BizSpark"&gt;BizSpark Page&lt;/a&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.softec.org/aggbug.aspx?PostID=132" width="1" height="1"&gt;</description><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/SLO+.Net+User+Group/default.aspx">SLO .Net User Group</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://www.softec.org/blogs/central_coast_code/archive/tags/BizSpark/default.aspx">BizSpark</category></item></channel></rss>
