<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-5060433</id><updated>2008-10-03T13:16:55.009-06:00</updated><title type="text">DevBlog</title><subtitle type="html">Craig's ramblings on FoxPro, .Net, software development in general, and more</subtitle><link rel="alternate" type="text/html" href="http://www.craigberntson.com/blog/index.asp" /><link rel="next" type="application/atom+xml" href="http://www.craigberntson.com/blog/atom.xml?start-index=26&amp;max-results=25" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.craigberntson.com/blog/atom.xml" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>788</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/craigberntsonDevBlog" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><entry><id>tag:blogger.com,1999:blog-5060433.post-5359123813240476399</id><published>2008-10-03T13:13:00.002-06:00</published><updated>2008-10-03T13:16:55.265-06:00</updated><title type="text">Utah Most Digital State</title><content type="html">"Utah topped the Center for Digital Government's (CDG) 2008 Digital States Survey after delivering the clearest evidence yet that electronic delivery of government services has matured.&lt;br /&gt;&lt;br /&gt;To reduce energy costs and carbon emissions, Utah Gov. Jon Huntsman Jr. announced in June that most state offices would be closed on Fridays. With more than 800 state government services online -- many boasting high user adoption rates -- Utah could close physical offices statewide without inconveniencing citizens." &lt;a href="http://www.govtech.com/gt/418945?topic=117673"&gt;http://www.govtech.com/gt/418945?topic=117673&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/5359123813240476399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=5359123813240476399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/5359123813240476399" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/5359123813240476399" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/410528141/utah-most-digital-state.asp" title="Utah Most Digital State" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/10/utah-most-digital-state.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-3590668729200255378</id><published>2008-10-02T12:42:00.003-06:00</published><updated>2008-10-02T12:48:59.326-06:00</updated><title type="text">Finally! An MSDN Event in Utah</title><content type="html">After a long absence, an MSDN event has been scheduled in Utah! "MSDN Events Unleashed: Demystifying WPF, Silverlight 2 and Visual Studio 2008 SP1" is scheduled for Thursday, October 23 from 1:00 - 5:00 at the Microsoft offices in the International Center.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The first 50 people to register will get a free copy of the book "Applications = Code + Markup" by Charles Petzold.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The event overview states:&lt;br /&gt;&lt;blockquote&gt;Today’s applications need to do more than simply work.  They need to draw&lt;br /&gt;in the user, and provide a differentiated experience. This means moving beyond&lt;br /&gt;battleship gray forms boxy UIs and simple HTML forms, and providing a positive&lt;br /&gt;user experience.  Windows Presentation Foundation (WPF) and Silverlight 2&lt;br /&gt;provide powerful capabilities to develop compelling user interfaces, on the&lt;br /&gt;client and in the browser, respectively. &lt;br /&gt;&lt;br /&gt;At the heart of&lt;br /&gt;these rich applications is data.  There are a growing number of choices of&lt;br /&gt;technologies available to access data, create database abstraction layers and&lt;br /&gt;expose data as services.  Visual Studio 2008 (and .NET Framework 3.5) SP1&lt;br /&gt;include the production release of the ADO.NET Entity Framework, ADO.NET Data&lt;br /&gt;Services, as well as some enhancements to the Web Programming model&lt;br /&gt;(REST-Friendly) in WCF. &lt;br /&gt;&lt;br /&gt;In this session, Rob Bagby will&lt;br /&gt;examine the core concepts of WPF and Silverlight such as layout panels, data&lt;br /&gt;binding, styles and control templates, and will use them to develop an&lt;br /&gt;application UI from the ground up.  Rob will further examine and demystify&lt;br /&gt;the options available to you to expose data to your rich applications.&lt;/blockquote&gt;Register &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032390917&amp;amp;Culture=en-US"&gt;here&lt;/a&gt;.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/3590668729200255378/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=3590668729200255378" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/3590668729200255378" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/3590668729200255378" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/409515568/finally-msdn-event-in-utah.asp" title="Finally! An MSDN Event in Utah" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/10/finally-msdn-event-in-utah.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-8410367107055587001</id><published>2008-10-01T07:52:00.002-06:00</published><updated>2008-10-01T07:55:05.763-06:00</updated><title type="text">Microsoft MVP Award</title><content type="html">I am honored to again have been named a Microsoft Most Valuable Professional. The award is given for providing community support in both online and in-person venues. I look forward continue to helping you understand Microsoft technologies and develop outstanding applications for your customers.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/8410367107055587001/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=8410367107055587001" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/8410367107055587001" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/8410367107055587001" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/408283871/microsoft-mvp-award.asp" title="Microsoft MVP Award" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/10/microsoft-mvp-award.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-3808654369324111268</id><published>2008-09-03T14:54:00.005-06:00</published><updated>2008-09-03T14:58:55.705-06:00</updated><title type="text">Is Google the new evil empire?</title><content type="html">Several people have asked me if I have installed Chome, Google's new web browser. No, not yet. I've been too busy getting work done, but it's been in my plans to try it out in a couple of weeks when I have more time. However, after reading Roger Jenning's blog post on the &lt;a href="http://oakleafblog.blogspot.com/2008/09/chromes-evil-terms-of-service.html"&gt;Chrome Terms of Service&lt;/a&gt;, I doubt I ever will. Wow.. those terms are worse than Microsoft's.&lt;br /&gt;&lt;br /&gt;And for the record, I don't agree with the journalists and prognosticators (weathermen are more accurate) that say Chrome will be the end of Windows and IE. We've heard it all before. It didn't happen then and it won't happen now.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/3808654369324111268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=3808654369324111268" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/3808654369324111268" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/3808654369324111268" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/382666042/is-google-new-evil-empire.asp" title="Is Google the new evil empire?" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/09/is-google-new-evil-empire.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-6363772480482843121</id><published>2008-09-03T13:57:00.003-06:00</published><updated>2008-09-03T13:59:26.517-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="FoxPro" /><title type="text">Ken Levy Joining EPS</title><content type="html">Ken Levy, long time VFP Product Manager and longer time FoxPro developer is joinng EPS in the role as Evangelist, primarily focused on VFPConvesion.com. Read the &lt;a href="http://www.eps-software.com/PressReleases.aspx"&gt;press release&lt;/a&gt;.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/6363772480482843121/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=6363772480482843121" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6363772480482843121" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6363772480482843121" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/382618804/ken-levy-joining-eps.asp" title="Ken Levy Joining EPS" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/09/ken-levy-joining-eps.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-5658360923030665583</id><published>2008-08-28T19:10:00.000-06:00</published><updated>2008-08-28T19:10:09.741-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="VFP" /><title type="text">Don't FILTER Data in a Grid</title><content type="html">&lt;div&gt;I've seen several postings on the forums lately where people ask about how to FILTER data displayed in a grid. This is a very bad idea as the scroll bars and thumb don't work correctly. Look at this form, that uses a filter.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.craigberntson.com/blog/uploaded_images/filter-736695.png" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The underlying table has over 200,000 rows. I appyled SET FILTER TO Lname = "SMITH". The result is not good. Notice the postion of the thumb. When I pull the thumb to the top of the scroll bar, it jumps back to the postition shown in the screen shot because that's where the current record is based on the entire table. This is very confusing to a user.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now look at what happens when you use a query or a view.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.craigberntson.com/blog/uploaded_images/query-736785.png" border="0" /&gt;&lt;br /&gt;&lt;div&gt;In this form, I set up a local view and set the grid to use the view as the data source. I then requeried the data using a View Parameter. Notice where that the thumb is located at the top of the scrollbar when the record pointer is on the first record. This is because the data for the grid only contains rows where Lname = "SMITH" rather than the entire table.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Writing applications this way may require a retraining of the users as they won't have all the data at the same time, but will always need to query the data they want. My experience shows that users prefer this type of application. YMMV.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;An added bonus is that you're preparing yourself to work with SQL Server as it only uses sets of data. You always need to query for the data you want and get back only that data rather than everything.&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/5658360923030665583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=5658360923030665583" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/5658360923030665583" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/5658360923030665583" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/377631444/dont-filter-data-in-grid.asp" title="Don't FILTER Data in a Grid" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/08/dont-filter-data-in-grid.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-717313362050480528</id><published>2008-08-28T14:35:00.003-06:00</published><updated>2008-08-28T20:11:51.960-06:00</updated><title type="text">Why Vista is more stable than XP</title><content type="html">Windows Vista has been much maligned by the press and users alike, mostly because of UAC, but when you start to look at improvements in Vista and understand why they are there, Vista becomes more and more attractive. One of the big changes in Vista was with device drivers. Note that I'm not a hardware wonk. I'm sure someone will correct me for any incorrect information here.&lt;br /&gt;&lt;br /&gt;For years, Microsoft has used the "Dr. Watson" tool to get back information about system crashes. You are probably familiar with the dialog that is displayed. You know, the one that says, "This application has performed an illegal operation. Would you like to send information to Microsoft?" Turns out, that information had lots of good stuff in it. Microsoft learned that 80% of crashes were caused by third party software and a very high percentage of that was caused by misbehaving device drivers. The result was often a system crash, the dreaded blue screen of death.&lt;br /&gt;&lt;br /&gt;Many times, the reason this happened is because the Windows kernel and the device driver were running in the same ring on the CPU. The rings are numbered 0-4 on Intel chips. Ring 0 is closest to the hardware, meaning anything running in ring 0 has the most direct access to the hardware. Anything in ring 3 has the least direct access. Under Windows XP and earlier, the kernel and the device driver both ran in ring 0. User applications ran on ring 2. Rings 1 and 3 were unused. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.craigberntson.com/blog/uploaded_images/ring1-788135.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;You may think this is crazy. Why not run device drivers in a different ring? Well, it all comes down to the early days of Windows. There were more than Intel and AMD chips around. Windows also ran on the Alpha computer from Digital Equipment Corp. (DEC). Turns out, the CPU in the Alpha only had two rings, not four, so to simplify coding, Microsoft decided that they would only use two rings on the Intel chips. However, in 1998, DEC was acquired by Compaq (which later was acquired by HP) and eventually the Alpha was killed.&lt;br /&gt;&lt;br /&gt;Now, when Microsoft was designing Vista, one of the goals was to make the OS more stable. They looked at all the data on blue screens. Even though the large majority of them was caused by third party drivers, most user blamed Microsoft for them. With the Alpha out of the picture, the decision was made to move device drivers to ring 1.&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.craigberntson.com/blog/uploaded_images/ring2-750024.jpg" border="0" /&gt;&lt;br /&gt;The benefit is that if a driver crashes, it is now less likely to cause the entire system to crash. The downside is that vendors had to rewrite many device drivers so they would run correctly in ring 1...and that led to many people saying that Vista device driver support was horrible. They still blamed Microsoft for it, but did so without understand why Microsoft changed how device drivers were to be implemented.&lt;br /&gt;&lt;br /&gt;Today, most of the device driver issues have been resolved, unless you have really old hardware. There are still other areas that people hate about Vista, particularly UAC, but again, it's there for a reason. So, before you just throw in the towel and bash Vista, think about what the design goals may have been for the "feature" and try to look at it from a different perspective.&lt;br /&gt;&lt;br /&gt;Update: Andrew MacNeill posts "&lt;a href="http://akselsoft.blogspot.com/2008/08/devblog-why-vista-is-more-stable-than.html"&gt;Craig - this is what they should be doing instead of Mojave...yes, it's techy - but it explains it right.&lt;/a&gt;" I meant to put this in my original post.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/717313362050480528/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=717313362050480528" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/717313362050480528" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/717313362050480528" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/377464004/why-vista-is-more-stable-than-xp.asp" title="Why Vista is more stable than XP" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/08/why-vista-is-more-stable-than-xp.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-2461035306814406951</id><published>2008-08-20T08:26:00.001-06:00</published><updated>2008-08-20T08:28:11.746-06:00</updated><title type="text">Speaking tonight in Utah county</title><content type="html">I will be speaking tonight at the Utah County .NET User Group. The topic is Continuous Integration for .NET Development. The meeting is at 6:00 at NuSkin Operations Center, 1175 S. 350 E., Provo.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/2461035306814406951/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=2461035306814406951" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/2461035306814406951" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/2461035306814406951" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/370036139/speaking-tonight-in-utah-county.asp" title="Speaking tonight in Utah county" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/08/speaking-tonight-in-utah-county.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-2000768816059457371</id><published>2008-07-31T09:58:00.002-06:00</published><updated>2008-07-31T10:04:09.317-06:00</updated><title type="text">Comparing Files</title><content type="html">When you write code for a living, it becomes important to compare files. Sometimes you have to know what changed between versions or even worse, when multiple devs can update the same source and you need to know what the other person changed. For a few years, I've used Beyond Compare from &lt;a href="http://www.scootersoftware.com/"&gt;Scooter Software&lt;/a&gt;. It's easy to use and does an amazing job of comparing differences and allow you to synch up the two files if needed. I found out this morning that Beyond Compare 3.0 is out. I couldn't imagine how they could make this product better, but the list of changes is amazing.&lt;a href="http://www.scootersoftware.com/moreinfo.php?zz=newfeatures"&gt;&lt;/a&gt;. I'm in the process of downloading and installing the new version.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/2000768816059457371/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=2000768816059457371" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/2000768816059457371" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/2000768816059457371" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/351683443/comparing-files.asp" title="Comparing Files" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/07/comparing-files.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-6305203869087592725</id><published>2008-07-16T09:40:00.003-06:00</published><updated>2008-07-16T09:42:46.567-06:00</updated><title type="text">Utah User Groups</title><content type="html">I just came across a list of Utah &lt;a href="http://blog.utos.org/utah-tech-groups/"&gt;user groups&lt;/a&gt;. While I know of groups that are missing, for example, SQL Server and BI groups, it is the most complete list I've seen.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/6305203869087592725/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=6305203869087592725" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6305203869087592725" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6305203869087592725" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/337195438/utah-user-groups.asp" title="Utah User Groups" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/07/utah-user-groups.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-7936478813492423135</id><published>2008-07-09T09:26:00.003-06:00</published><updated>2008-07-09T09:28:22.387-06:00</updated><title type="text">Error messages</title><content type="html">I got this error message this morning while opening a project in Borland C++ Builder. It could have had a tad more information.&lt;br /&gt;&lt;a href="http://www.craigberntson.com/blog/uploaded_images/BorlandError-775826.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://www.craigberntson.com/blog/uploaded_images/BorlandError-775822.png" border="0" alt="" /&gt;&lt;/a&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/7936478813492423135/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=7936478813492423135" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/7936478813492423135" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/7936478813492423135" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/330874208/error-messages.asp" title="Error messages" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/07/error-messages.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-4386881681368563606</id><published>2008-07-08T13:06:00.002-06:00</published><updated>2008-07-08T13:09:21.698-06:00</updated><title type="text">Sandcastle is back</title><content type="html">A few weeks ago, Microsoft pulled it's Sandcastle managed code documentation tool from the web when someone complained that it didn't come with source code, as was required by the licensing agreement on CodePlex. Now, &lt;a href="http://www.codeplex.com/Sandcastle"&gt;it's back on CodePlex&lt;/a&gt; and includes the source.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/4386881681368563606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=4386881681368563606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/4386881681368563606" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/4386881681368563606" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/330087239/sandcastle-is-back.asp" title="Sandcastle is back" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/07/sandcastle-is-back.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-8989119716182961133</id><published>2008-07-03T08:52:00.002-06:00</published><updated>2008-07-03T09:00:54.186-06:00</updated><title type="text">Beware of Microsoft Equipt</title><content type="html">Remember Enron? It was the Houston company that used the same accounting firm for it's accounting and auditing, then became one of the largest corporate failures in history when it was revealed the executives cooked the books. Well, Microsoft has just announced a new program called &lt;a href="http://office.microsoft.com/client/helpcategory.aspx?CategoryID=CH102565291033&amp;ns=qwzx10&amp;lcid=1033"&gt;Microsoft Equipt&lt;/a&gt;, where you can get Word, Excel, PowerPoint, One Note, OneCare, Live Messenger, Live Photo Gallery, Live Mail, Live Writer, and Live Toolbar for under $70/per year. It's not the yearly license fee that bothers me, it's having to use OneCare for anti-virus protection. The Microsoft web site says, "It is not possible to install Microsoft Equipt without Windows Live OneCare". IMO, using a Microsoft anti-virus to protect Windows is like using the same company for your accounting and auditing. Personally, I don't want to Enron my PC. I don't think I can recommend this program.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/8989119716182961133/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=8989119716182961133" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/8989119716182961133" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/8989119716182961133" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/325856867/beware-of-microsoft-equipt.asp" title="Beware of Microsoft Equipt" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/07/beware-of-microsoft-equipt.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-6023465383476093261</id><published>2008-07-02T11:22:00.003-06:00</published><updated>2008-07-02T13:26:39.565-06:00</updated><title type="text">C# to Excel Interop Color Bug</title><content type="html">I'm rewriting my &lt;a href="http://www.craigberntson.com/blog/2008/06/documenting-sql-server-database.asp"&gt;SQL documenter&lt;/a&gt; in C# 3.0 and came across a bug with Excel interop. I need to set the background color of some cells to light yellow, but when I use this code:&lt;pre&gt;curRange.Interior.Color = Color.LightYellow.ToArgb();&lt;/pre&gt; it comes out as light cyan. I tried Color.Yellow and it comes through as Cyan. The solution is to use Cyan:&lt;pre&gt;curRange.Interior.Color = Color.LightCyan.ToArgb();&lt;/pre&gt; to get light yellow. I added a comment to the code about why the colors are reveresed.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/6023465383476093261/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=6023465383476093261" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6023465383476093261" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6023465383476093261" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/325140734/c-to-excel-interop-color-bug.asp" title="C# to Excel Interop Color Bug" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/07/c-to-excel-interop-color-bug.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-7402997044398267729</id><published>2008-06-25T16:06:00.000-06:00</published><updated>2008-06-25T16:27:18.730-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="VFP" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><title type="text">Documenting a SQL Server Database</title><content type="html">I recently had a need to document the schema of a SQL Server database. The requirement was to have one worksheet per table and match the formatting done on similar project. The database I actually had to document contains over 300 tables. I worked up some Visual FoxPro code to do this automatically. &lt;span style="font-family:courier;font-size:10pt"&gt;&lt;pre&gt;&lt;span style="color:#000000;"&gt;* Document SQL tables into Excel&lt;br /&gt;&lt;br /&gt;LOCAL oXl AS Excel.Application&lt;br /&gt;LOCAL oSheet AS EXCEL.Sheets&lt;br /&gt;LOCAL oActiveSheet AS EXCEL.Worksheet&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;oXl = CREATEOBJECT("Excel.Application")&lt;br /&gt;oXl.Visible = .T.&lt;br /&gt;oWkb = oXl.Workbooks.Add()&lt;br /&gt;oActiveSheet = NULL&lt;br /&gt;&lt;br /&gt;lnHandle = SQLSTRINGCONNECT("Driver=SQL Native Client;Server=.;database=Northwind;Trusted_Connection=yes")&lt;br /&gt;SQLEXEC(lnHandle, "Exec sp_tables", "cTables")&lt;br /&gt;SELECT cTables&lt;br /&gt;INDEX ON Table_Type TAG TableType DESCENDING&lt;br /&gt;SCAN FOR Table_Type = "TABLE"&lt;br /&gt;  oSheet = oXl.Sheets.Add()&lt;br /&gt;  loActiveSheet = oXl.ActiveSheet&lt;br /&gt; &lt;br /&gt;  SQLEXEC(lnHandle, "Exec sp_columns '" + ALLTRIM(cTables.Table_Name)&lt;br /&gt;    +  "'", "cColumns")&lt;br /&gt;&lt;br /&gt;  * Add the top two rows with table information after adding the column stuff&lt;br /&gt;  * so that the columns will autosize properly&lt;br /&gt;  XLAddColumn(loActiveSheet, "cColumns")&lt;br /&gt;  loActiveSheet = XLAddTable(loActiveSheet, cTables.Table_Name)&lt;br /&gt;ENDSCAN&lt;br /&gt;&lt;br /&gt;SQLDISCONNECT(lnHandle)&lt;br /&gt;oSheet = NULL&lt;br /&gt;oWkb = NULL&lt;br /&gt;oXl = NULL&lt;br /&gt;&lt;br /&gt;*********************************&lt;br /&gt;&lt;br /&gt;FUNCTION XLAddTable(toActiveSheet, tcTableName)&lt;br /&gt;  LOCAL lcTable&lt;br /&gt;  LOCAL toActiveSheet AS EXCEL.Worksheet&lt;br /&gt; &lt;br /&gt;  lcTable = ALLTRIM(tcTableName)&lt;br /&gt;  * Handle the sheet title (table name)&lt;br /&gt;  toActiveSheet.Name = lcTable&lt;br /&gt;  toActiveSheet.Range("A1") = ALLTRIM(tcTableName) + " Table"&lt;br /&gt;  toActiveSheet.Range("A1").Font.Name = "Arial"&lt;br /&gt;  toActiveSheet.Range("A1").Font.Size = 14&lt;br /&gt;  toActiveSheet.Range("A1", "F1").Interior.Color = 12632256&lt;br /&gt;  toActiveSheet.Rows(1).RowHeight = 24.75&lt;br /&gt;  toActiveSheet.Range("A1:F1").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("A1:F1").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("A1:F1").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("A1:F1").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;  * Column Titles&lt;br /&gt;  toActiveSheet.Range("A2") = "Column Name"&lt;br /&gt;  toActiveSheet.Range("A2").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("A2").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("A2").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("A2").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt; &lt;br /&gt;  * Data type&lt;br /&gt;  toActiveSheet.Range("B2") = "Data Type"&lt;br /&gt;  toActiveSheet.Range("B2").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("B2").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("B2").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("B2").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;  * Precision&lt;br /&gt;  toActiveSheet.Range("C2") = "Precision"&lt;br /&gt;  toActiveSheet.Range("C2").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("C2").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("C2").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("C2").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;  * Length&lt;br /&gt;  toActiveSheet.Range("D2") = "Length"&lt;br /&gt;  toActiveSheet.Range("D2").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("D2").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("D2").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("D2").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;  * Scale&lt;br /&gt;  toActiveSheet.Range("E2") = "Scale"&lt;br /&gt;  toActiveSheet.Range("E2").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("E2").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("E2").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("E2").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;  * Comments&lt;br /&gt;  toActiveSheet.Range("F2") = "Comments"&lt;br /&gt;  toActiveSheet.Range("F2").Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("F2").Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("F2").Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;  toActiveSheet.Range("F2").Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;  * Format the cells&lt;br /&gt;  toActiveSheet.Range("A2", "F2").Font.Bold = .T.&lt;br /&gt;  toActiveSheet.Range("A2:F2").VerticalAlignment = 2&lt;br /&gt;  toActiveSheet.Range("A2", "F2").Interior.Color = 8454143&lt;br /&gt;  toActiveSheet.Rows(2).RowHeight = 26.25&lt;br /&gt;&lt;br /&gt;  toActiveSheet.Columns("B").Autofit()&lt;br /&gt;  toActiveSheet.Columns("C").Autofit()&lt;br /&gt;  toActiveSheet.Columns("D").Autofit()&lt;br /&gt;  toActiveSheet.Columns("E").Autofit()&lt;br /&gt;  toActiveSheet.Columns("F").Autofit()&lt;br /&gt;  &lt;br /&gt;  RETURN loActiveSheet&lt;br /&gt;ENDFUNC&lt;br /&gt;&lt;br /&gt;*********************************&lt;br /&gt;&lt;br /&gt;FUNCTION XLAddColumn(toSheet, tcColCursor)&lt;br /&gt;  LOCAL lnWorkArea&lt;br /&gt;  LOCAL toSheet AS EXCEL.Worksheet&lt;br /&gt; &lt;br /&gt;  lnWorkArea = SELECT()&lt;br /&gt;  tcCell = ""&lt;br /&gt;&lt;br /&gt;  SELECT (tcColCursor)&lt;br /&gt;  SCAN&lt;br /&gt;    * Column name&lt;br /&gt;    tcCell = "A" + ALLTRIM(STR(RECNO() + 2))&lt;br /&gt;    toSheet.Range(tcCell) = ALLTRIM(Column_Name)&lt;br /&gt;    toSheet.Range(tcCell).Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;    * Data Type&lt;br /&gt;    tcCell = "B" + ALLTRIM(STR(RECNO() + 2))&lt;br /&gt;    toSheet.Range(tcCell) = ALLTRIM(Type_Name)&lt;br /&gt;    toSheet.Range(tcCell).Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;  &lt;br /&gt;    * Precision&lt;br /&gt;    tcCell = "C" + ALLTRIM(STR(RECNO() + 2))&lt;br /&gt;    toSheet.Range(tcCell) = Precision&lt;br /&gt;    toSheet.Range(tcCell).Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;  &lt;br /&gt;    * Length&lt;br /&gt;    tcCell = "D" + ALLTRIM(STR(RECNO() + 2))&lt;br /&gt;    toSheet.Range(tcCell) = Length&lt;br /&gt;    toSheet.Range(tcCell).Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;  &lt;br /&gt;    * Scale&lt;br /&gt;    tcCell = "E" + ALLTRIM(STR(RECNO() + 2))&lt;br /&gt;    toSheet.Range(tcCell) = Scale&lt;br /&gt;    toSheet.Range(tcCell).Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;&lt;br /&gt;    * Comments&lt;br /&gt;    tcCell = "F" + ALLTRIM(STR(RECNO() + 2))&lt;br /&gt;    toSheet.Range(tcCell).Borders(7).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(8).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(9).Color = RGB(0, 0, 0)&lt;br /&gt;    toSheet.Range(tcCell).Borders(10).Color = RGB(0, 0, 0)&lt;br /&gt;  ENDSCAN&lt;br /&gt;&lt;br /&gt;  toSheet.Columns("A").Autofit()&lt;br /&gt; &lt;br /&gt;  SELECT (lnWorkArea)&lt;br /&gt;ENDFUNC&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/7402997044398267729/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=7402997044398267729" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/7402997044398267729" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/7402997044398267729" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/320046213/documenting-sql-server-database.asp" title="Documenting a SQL Server Database" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/06/documenting-sql-server-database.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-2749067596855133891</id><published>2008-06-13T09:37:00.002-06:00</published><updated>2008-06-13T09:45:19.276-06:00</updated><title type="text">VS2008 &amp; .Net 3.5 SP1 Beta</title><content type="html">This morning I installed the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=23516C63-2DB2-4E7F-AABA-32B12D6E025C&amp;amp;displaylang=en"&gt;.Net Framework 3.5 Service Pack 1 Beta&lt;/a&gt; and the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CF99C752-1391-4BC3-BABC-86BC0B9E8E5A&amp;amp;displaylang=en"&gt;Visual Studio 2008 Service Pack 1 Beta&lt;/a&gt;. The Framework beta required a reboot after install, but I expected it would. The VS beta required my original VS media CD. I've said before that an SP should never require the original CD. The second install took quite a bit longer then the first. &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx"&gt;Scott Guthrie blogged&lt;/a&gt; details on what all the goodies in the Service Packs and some warnings you should look at before install. As always, this is beta software and should not be installed on a production machine. Microsoft is targeting a late summer release of both SPs.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/2749067596855133891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=2749067596855133891" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/2749067596855133891" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/2749067596855133891" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/311237765/vs2008-net-35-sp1-beta.asp" title="VS2008 &amp; .Net 3.5 SP1 Beta" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/06/vs2008-net-35-sp1-beta.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-9065289811489042478</id><published>2008-06-12T12:56:00.002-06:00</published><updated>2008-06-12T13:00:40.098-06:00</updated><title type="text">Speaking tonight Utah .Net User Group</title><content type="html">I'm speaking tonight at the Utah .NET User Group. The presentation will part of the Microsoft Community Launch and will be geared to "What's New in C# 3.0" and "LINQ". I had some earlier requests to cover round tripping WPF between Visual Studio 2008 and Expression Blend and What's New in VB 9.0. If there is still interest tonight on those topics, we'll breifly cover them.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NOTE THE LOCATION CHANGE FOR TONIGHT&lt;/strong&gt;&lt;br /&gt;The meeting starts at 6:00 at the Microsoft offices, 123 Wright Brothers Drive, Salt Lake City. This is in the International Center, just west of the airport.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/9065289811489042478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=9065289811489042478" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/9065289811489042478" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/9065289811489042478" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/310609332/speaking-tonight-utah-net-user-group.asp" title="Speaking tonight Utah .Net User Group" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/06/speaking-tonight-utah-net-user-group.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-431946841035915022</id><published>2008-06-02T20:59:00.001-06:00</published><updated>2008-06-02T21:02:12.498-06:00</updated><title type="text">Desert Code Camp Followup</title><content type="html">Last Saturday I was in Tempe for Desert Code Camp. It was a great experience to be there and talk to developers from the Phoenix area. As promised, &lt;a href="http://www.craigberntson.com/files/introlinqsource.zip"&gt;here&lt;/a&gt; is the sample code from my LINQ session. The Continuous Integration whitepaper can be found &lt;a href="http://www.craigberntson.com/articles/CI.pdf"&gt;here&lt;/a&gt;. Thanks to Lorin and everyone there for making me feel welcome!</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/431946841035915022/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=431946841035915022" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/431946841035915022" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/431946841035915022" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/303403117/desert-code-camp-followup.asp" title="Desert Code Camp Followup" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/06/desert-code-camp-followup.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-5678052096767348661</id><published>2008-05-14T14:48:00.002-06:00</published><updated>2008-05-14T14:50:49.714-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Code Camp" /><title type="text">Speaking at Desert Code Camp</title><content type="html">I will be speaking at &lt;a href="http://www.desertcodecamp.com/"&gt;Desert Code Camp&lt;/a&gt; in Tempe, Arizona on Saturday, May 31. Topics are "Continuous Integration in .NET" and "Introduction to LINQ". I hope to see you there.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/5678052096767348661/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=5678052096767348661" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/5678052096767348661" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/5678052096767348661" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/290439073/speaking-at-desert-code-camp.asp" title="Speaking at Desert Code Camp" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/05/speaking-at-desert-code-camp.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-3217738155634448365</id><published>2008-05-12T18:33:00.001-06:00</published><updated>2008-05-12T18:36:11.470-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Continuous Integration" /><title type="text">Continuous Integration in .Net</title><content type="html">I've posted a new article on my web site, "&lt;a href="http://www.craigberntson.com/articles/CI.pdf"&gt;Continuous Integration in .NET&lt;/a&gt;". Continuous Integration is a method where source code is continually built and tested, resulting in better quality applications in less time. While Visual Studio Team System gives you the tools you need to do continuous integration, the cost is prohibitive to most shops. This whitepaper discusses free tools that allow you to integrate continuous integration into your .Net development.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/3217738155634448365/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=3217738155634448365" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/3217738155634448365" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/3217738155634448365" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/289063812/continuous-integration-in-net.asp" title="Continuous Integration in .Net" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/05/continuous-integration-in-net.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-4765512476797399760</id><published>2008-04-27T21:08:00.002-06:00</published><updated>2008-04-27T21:15:44.971-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MVP" /><title type="text">Questioning Steve Ballmer</title><content type="html">While at the MVP Summit in Seattle, I was able to ask Steve Ballmer a question about better support and interaction between MVPs and local Microsoft offices. I didn't blog about this before because much of the Summit was under Non-Disclosure Agreement, but a friend pointed me to a&lt;br /&gt;transcript on the Microsoft web site. Here's the transcript of our exchange (Toby Richards is the General Manager of the MVP program).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;QUESTION: More and more often we're being encouraged to engage with the&lt;br /&gt;local offices, but I've identified four things internal at Microsoft that makes&lt;br /&gt;this very difficult to do. The first one is, and before I get to I've&lt;br /&gt;talked to other people around the country, and they seem to have similar issues.&lt;br /&gt;The first is, we have not had MSDN events in Salt Lake for two years. We're told&lt;br /&gt;there's not enough numbers of attendees there. We sold out our Visual Studio&lt;br /&gt;2008 launch faster than most other cities within a thousand mile radius that are&lt;br /&gt;having events. That tells me the numbers exist.&lt;br /&gt;&lt;br /&gt;Second of all, I was told by one of our local developer evangelists,&lt;br /&gt;his budget is 25 percent of what it was two years ago. This makes it very&lt;br /&gt;difficult for him to engage with us.&lt;br /&gt;&lt;br /&gt;Third is that it seems that the evangelists turnover about every two years,&lt;br /&gt;and this one is going to be more of a thing for Toby. I found out this week,&lt;br /&gt;they do not have access to our MVP profiles, even if we check Microsoft visible,&lt;br /&gt;and I understand that it's a security thing, put another checkbox on there that&lt;br /&gt;it's visible for local offices.&lt;br /&gt;&lt;br /&gt;And, finally, when we do find out who these evangelists are, oftentimes&lt;br /&gt;it's like going to an e-mail black hole, we hear nothing back from them.&lt;br /&gt;(Applause.)&lt;br /&gt;&lt;br /&gt;STEVE BALLMER: Okay, a couple of reactions. If you'd like, I've made notes.&lt;br /&gt;Mostly I think that wasn't a question. That was very good input. I do want to&lt;br /&gt;pushback a little bit just so you understand where we're coming from, and then&lt;br /&gt;I'll tell you what I'm going to do. We did make a conscious choice a couple&lt;br /&gt;three years ago, maybe three or four years ago, to move more of our evangelism,&lt;br /&gt;and more of our MSDN event style activity online, to do more things through kind&lt;br /&gt;of online events, and presentations, and the like. We've gotten a lot more&lt;br /&gt;people to attend net, but it doesn't surprise me that we have I don't&lt;br /&gt;know, a 25 percent budget, no MSDN events in Salt Lake, that strikes me as odd,&lt;br /&gt;too. But we did make the conscious choice. Bad choice in your opinion to move&lt;br /&gt;more online?&lt;br /&gt;&lt;br /&gt;QUESTION: No, I think it's good to move more online, but let's keep an eye&lt;br /&gt;on what's happening locally still. That's vitally important.&lt;br /&gt;&lt;br /&gt;STEVE BALLMER: Okay. So what I will do, one other comment, if you send&lt;br /&gt;e-mail to somebody who works at Microsoft, and they don't return it, I'm angry.&lt;br /&gt;Feel free any time you're not getting an e-mail response from one of our people,&lt;br /&gt;just forward it to me. (Cheers and applause.) It will help, believe me. You will&lt;br /&gt;help me improve Microsoft, and I bet we can improve the response rates awfully&lt;br /&gt;quickly. I give out my e-mail address often, SteveB, SteveB, SteveB, okay. I do&lt;br /&gt;it all the time. And the truth is, I don't get that much e-mail from customers.&lt;br /&gt;The customers don't waste your time. MVPs don't waste my time. People send&lt;br /&gt;legitimate questions, concerns, ideas. Computers send spam, not human beings, by&lt;br /&gt;and large. And if you're not getting a response, seriously, send me one or two,&lt;br /&gt;I guarantee you things will clear up pretty darned quick.&lt;br /&gt;On your other&lt;br /&gt;comment, what I will do is, I'll step back and kind of take an all up look with&lt;br /&gt;our folks on what we've done in terms of physical evangelism versus virtual&lt;br /&gt;evangelism, and I'll take your input, I'll hear what we're doing, and if I agree&lt;br /&gt;with you I'll give them a little bit of a push, and hopefully we'll get it into&lt;br /&gt;a little bit better place.&lt;br /&gt;&lt;br /&gt;QUESTION: Thank you.&lt;br /&gt;&lt;br /&gt;STEVE BALLMER: Thank you. (Applause.)&lt;br /&gt;&lt;br /&gt;TOBY RICHARDS: I would just add, in terms of the engagement with our sales&lt;br /&gt;crew, that's a huge responsibility of my team, our profiling system has outgrown&lt;br /&gt;its capability, and I told the team, hey, we have a product called MSCRM, maybe&lt;br /&gt;we could start using that. Anyway, we'll take actions. By the way, my e-mail is &lt;a href="mailto:TobyR@Microsoft.com"&gt;TobyR@Microsoft.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;STEVE BALLMER: Say it loudly, Toby. &lt;a href="mailto:TobyR@Microsoft.com"&gt;TobyR@Microsoft.com&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;You can find the complete transcript of Steve's hour with the MVPs &lt;a href="http://www.microsoft.com/Presspass/exec/steve/2008/04-17MVP.mspx"&gt;here&lt;/a&gt;. We also heard from Ray Ozzie (transcript &lt;a href="http://www.microsoft.com/presspass/exec/ozzie/04-17MVP.mspx"&gt;here&lt;/a&gt;).</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/4765512476797399760/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=4765512476797399760" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/4765512476797399760" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/4765512476797399760" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/279113280/questioning-steve-ballmer.asp" title="Questioning Steve Ballmer" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/04/questioning-steve-ballmer.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-6754552774883689485</id><published>2008-04-26T11:32:00.004-06:00</published><updated>2008-04-26T11:42:19.980-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="VFP" /><title type="text">New VFP Help File Available</title><content type="html">A new VFP 9.0 SP2 help file is now available for download from the &lt;a href="http://msdn2.microsoft.com/en-us/vfoxpro/default.aspx"&gt;VFP home page&lt;/a&gt;. One issue that people are running into is that pages don't display or links aren't available in the file. If this happens to you, open Windows Explorer, right-click on the file and select Properties. Then click on Unblock.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/6754552774883689485/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=6754552774883689485" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6754552774883689485" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/6754552774883689485" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/278381758/new-vfp-help-file-available.asp" title="New VFP Help File Available" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/04/new-vfp-help-file-available.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-263628580830185005</id><published>2008-04-21T13:02:00.001-06:00</published><updated>2008-04-21T13:24:47.175-06:00</updated><title type="text">VFP Boot Camp</title><content type="html">I got this email today from Vision Pace. While I haven't attended the Boot Camp, I've heard really great things about it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next VFP Boot Camp will be in Kansas City, Missouri, May 12-14, 2008 Registration ends on April 24, 2008 for the highly-acclaimed VFP Boot Camp. This event delivers three jam-packed days of solid, hands-on learning. From the fundamentals of VFP development through the very latest VFP 9.0 features, this boot camp is designed to quickly get your VFP skills up to speed. Attendees will receive a 500 page manual in both print and electronic format. For more information visit &lt;a href="http://visionpace.com/developereducation.html" target="_blank"&gt;http://visionpace.com/developereducation.html&lt;/a&gt; or email info@visionpace.com. To register call &lt;a onclick="window.top.Com_Zimbra_Phone.unsetOnbeforeunload()" href="callto:+1888-904-7900"&gt;888-904-7900&lt;/a&gt;.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/263628580830185005/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=263628580830185005" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/263628580830185005" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/263628580830185005" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/274909885/vfp-boot-camp.asp" title="VFP Boot Camp" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/04/vfp-boot-camp.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-7399834381359976174</id><published>2008-04-16T11:14:00.002-06:00</published><updated>2008-04-16T11:19:43.372-06:00</updated><title type="text">What's Happening at the MVP Summit</title><content type="html">MVPs from all over the world are meeting today in Remond at the annual MVP Summit. Several Fox MVPs are here and attending several different sessions, not just talking about VFP. Much of what we're told is under Non-Disclosure Agreement (NDA) and can't be discussed here.&lt;br /&gt;&lt;br /&gt;However, last night we had the FoxPro Product Team dinner. We were able to meet with Alan Griver, Ken Levy, Calvin Hsia, Richard, Aleksy, and others that have been on the team over the years. It was a great meal and really good to see old Microsoft friends again.&lt;br /&gt;&lt;br /&gt;After all the the technical sessions today, we're heading over to the Experience Music Project (EMP) for the MVP party. Tomorrow is the last day of the Summit. It will be executive day and we'll hear from Ray Ozzie and Steve Ballmer before a farewell lunch.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/7399834381359976174/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=7399834381359976174" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/7399834381359976174" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/7399834381359976174" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/271571691/whats-happening-at-mvp-summit.asp" title="What's Happening at the MVP Summit" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/04/whats-happening-at-mvp-summit.asp</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-5060433.post-1471013992015734572</id><published>2008-04-15T17:20:00.005-06:00</published><updated>2008-04-15T21:50:17.741-06:00</updated><title type="text">Fox News from the MVP Summit!</title><content type="html">New updates for VFP are coming from Microsoft. There are not specific dates, because these things are still working their way through the large Microsoft ecosystem, but yag reported today the following two updates:&lt;br /&gt;&lt;br /&gt;- Help file has been updated to fix the index problem with the SP help file.&lt;br /&gt;&lt;br /&gt;- There was a bug reported that the report toolbar becomes unusable in the new style report preview.&lt;br /&gt;&lt;br /&gt;So, what about the other SP2 bugs that have been reported? We discussed some of the more critical bugs in the core with yag, Milind, and Richard. yag could not guarantee that the high priority bugs will be fixed, but he will see what he can do.</content><link rel="replies" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/1471013992015734572/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5060433&amp;postID=1471013992015734572" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/1471013992015734572" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5060433/posts/default/1471013992015734572" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/craigberntsonDevBlog/~3/271071939/fox-news-from-mvp-summit.asp" title="Fox News from the MVP Summit!" /><author><name>Craig Berntson</name><uri>http://www.blogger.com/profile/06386883781419438986</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.craigberntson.com/blog/2008/04/fox-news-from-mvp-summit.asp</feedburner:origLink></entry></feed>
