<?xml version='1.0' encoding='windows-1252'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-5060433</atom:id><lastBuildDate>Fri, 05 Mar 2010 05:59:10 +0000</lastBuildDate><title>DevBlog</title><description>Craig's ramblings on FoxPro, .Net, software development in general, and more</description><link>http://www.craigberntson.com/blog/index.asp</link><managingEditor>noreply@blogger.com (Craig Berntson)</managingEditor><generator>Blogger</generator><openSearch:totalResults>822</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-5321414298453164121</guid><pubDate>Fri, 05 Mar 2010 05:52:00 +0000</pubDate><atom:updated>2010-03-04T22:59:10.611-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>CIinDotNet</category><title>CI in .NET Chapters</title><description>More chapters for &lt;a href="http://www.manning.com/kawalerowicz/"&gt;Continuous Integration in .NET&lt;/a&gt; are now available to MEAP subscribers. This means you can get a look at what we're working on. And please provide us feedback in the &lt;a href="http://www.manning-sandbox.com/forum.jspa?forumID=612"&gt;Author Online&lt;/a&gt; forum. Here's what you can find in the latest MEAP:&lt;br /&gt;&lt;br /&gt;Chapter 7 has arrived! This chapter takes you deeper into testing in your continuous integration environment. You'll go beyond unit testing to integration, system, and acceptance testing. You will learn when it is good to use tools like Selenium, White, or FitNesse in your CI process.&lt;br /&gt;&lt;br /&gt;Chapter 8 is also new! Here you will learn why you should obey some coding rules and best practices and how to incorporate enforcing these rules into CI. In this chapter, we will look at FxCop, StyleCop, and (briefly) NDepend and how to use them to continuously analyze the code.&lt;br /&gt;&lt;br /&gt;As always, happy MEAPing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-5321414298453164121?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/03/ci-in-net-chapters.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-9018091164870778894</guid><pubDate>Fri, 12 Feb 2010 06:09:00 +0000</pubDate><atom:updated>2010-02-11T23:12:24.239-07:00</atom:updated><title>No Fluff Just Stuff coming to SLC</title><description>I just learned that the &lt;a href="http://www.nofluffjuststuff.com/home/main"&gt;No Fluff Just Stuff&lt;/a&gt; seminars is making a stop in Salt Lake City July 9-10. This is a Java/Agile conference. No details are available yet other then the date, but you can sign up to get info when it's released.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-9018091164870778894?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/02/no-fluff-just-stuff-coming-to-slc.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-7777066784789405913</guid><pubDate>Fri, 12 Feb 2010 05:47:00 +0000</pubDate><atom:updated>2010-02-11T22:49:40.173-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Code Camp</category><category domain='http://www.blogger.com/atom/ns#'>Continuous Integration</category><title>Speaking at Boise Code Camp</title><description>Got confirmation today that I'm speaking at &lt;a href="http://www.boisecodecamp.com/Home/tabid/36/Default.aspx"&gt;Boise Code Camp&lt;/a&gt;. The camp is March 27-28. I'll be there on Sunday, March 28. I've changed the title of my topic, but the content is the same. It's "We're doing Continuous Integration, now what?" I'll talk about StyleCop, FxCop, and SandCastle, and how to add them to your CI process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-7777066784789405913?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/02/speaking-at-boise-code-camp.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-4094269239447192868</guid><pubDate>Thu, 11 Feb 2010 16:06:00 +0000</pubDate><atom:updated>2010-02-11T09:10:21.191-07:00</atom:updated><title>CI in .NET Excerpt - FxCop</title><description>Another excerpt from my book &lt;a href="http://www.manning.com/kawalerowicz/"&gt;Continuous Integration in .NET&lt;/a&gt; is available. You can read &lt;a href="http://www.developertutorials.com/tutorials/miscellaneous/continuous-code-analysis-with-fxcop-10-02-09/page1.html"&gt;Continuous Code Analysis with FxCop&lt;/a&gt; free. Don't forget the other excepts that I talk about &lt;a href="http://www.craigberntson.com/blog/2010/01/free-excerpts-from-ci-in-net.asp"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-4094269239447192868?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/02/ci-in-net-excerpt-fxcop.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-5634747006142038404</guid><pubDate>Thu, 04 Feb 2010 22:18:00 +0000</pubDate><atom:updated>2010-02-04T15:25:41.144-07:00</atom:updated><title>Prairie DevCon</title><description>The summer after I graduated high school, two friends and I set out on a two week, cross country trip. We left Salt Lake City and headed north into Canada, then took the Trans-Canada highway east. We came back into the US at Niagra Falls, made a stop in Boston, then across the US and back home.&lt;br /&gt;&lt;br /&gt;One place I remember visiting is Regina, Saskatchawan. It sits out on the plains, north of Montana/North Dakota state line. I remember how beautiful it was there. I also remember visiting a museum.&lt;br /&gt;&lt;br /&gt;Several years ago, I met Fox guru Doug Hennig at a FoxPro conference and learned he was from Regina. He was surprised to hear that not only did I know where Regina is, but that I had been there.&lt;br /&gt;&lt;br /&gt;Now I get a chance to visit again. I will be speaking at the &lt;a href="http://www.prairiedevcon.com/"&gt;Prairie DevCon&lt;/a&gt;, June 2 &amp;amp; 3 in Regina. My topics are "Continuous Integration in .NET" and "Continuous Integration in .NET...the Next Steps". I've seen the list of speakers and topics. It looks like a great conference. Oh, and my friend Doug will be speaking too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-5634747006142038404?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/02/prairie-devcon.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-6860707039610100576</guid><pubDate>Wed, 03 Feb 2010 14:06:00 +0000</pubDate><atom:updated>2010-02-03T07:10:06.138-07:00</atom:updated><title>Rocky Mountain Tech Trifecta</title><description>Every February, Denver hosts a great mini conference, the &lt;a href="http://www.rmtechtrifecta.com/"&gt;Rocky Mountain Tech Trifecta&lt;/a&gt;. It's like a Code Camp with sessions on Windows, SQL, and .NET. This year it's on Saturday, Feb. 27. I've been confirmed as a speaker again this year. My topic is "Domain Driven Design in .NET'. I'm looking forward to being in Denver again this year. If you're anywhere in the Colorado area, I hope you can make it too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-6860707039610100576?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/02/rocky-mountain-tech-trifecta.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-3608567045208313796</guid><pubDate>Thu, 21 Jan 2010 18:23:00 +0000</pubDate><atom:updated>2010-01-21T11:30:40.674-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>TeamCity</category><category domain='http://www.blogger.com/atom/ns#'>CIinDotNet</category><category domain='http://www.blogger.com/atom/ns#'>Continuous Integration</category><title>Free excerpts from CI in .NET</title><description>Our book, Continuous Integration in .NET is generating lots of interest around the Interwebs. If you're wondering about this book, you can get some free excerpts. The latest is a look at using &lt;a href="http://www.jetbrains.com/teamcity/index.html"&gt;TeamCity&lt;/a&gt; for your CI server. Check them all out, then go &lt;a href="http://www.manning.com/kawalerowicz/"&gt;buy the book&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.manning.com/kawalerowicz/Kawalerowicz_MEAP_Ch1.pdf"&gt;Chapter 1: Grokking Continuous Integration&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.manning.com/free/green_kawalerowicz.html"&gt;Green Paper: Continuous Integration in .NET&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dotnetslackers.com/articles/net/Continuous-Integratio-with-TeamCity.aspx"&gt;dotNetSlackers.com: Continuous Integration with TeamCity&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-3608567045208313796?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/01/free-excerpts-from-ci-in-net.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-6419976752656904859</guid><pubDate>Thu, 21 Jan 2010 05:01:00 +0000</pubDate><atom:updated>2010-01-20T22:13:03.713-07:00</atom:updated><title>CI in .NET Chapters 3 and 4</title><description>Wow! Has it really been three months since my last post? Well, I have a good reason for it. I've been hard at work, along with Marcin, on our book, &lt;a href="http://www.manning.com/kawalerowicz/"&gt;Continuous Integration in .NET&lt;/a&gt;. We've had some speed bumps along the way, but I think we're now working well together.&lt;br /&gt;&lt;br /&gt;For those of you who don't know, Marcin is from Poland and I am from the US. We got to meet in person in November when I was in Germany for the German FoxPro DevCon.&lt;br /&gt;&lt;br /&gt;So, what have we been busy doing? Writing and editing of course. The first eight chapters have been written, but not edited to the point we can MEAP them. However, earlier tonight Manning posted the first MEAP for Chapters 3 and 4. That means you now have access to 1/3 of the book!&lt;br /&gt;&lt;br /&gt;Wondering what's new? Chapter 3 introduces MSBuild as an automation build platform for .NET Continuous Integration. The chapter begins with the basics, then takes you through the usage of community contributed functionality. By the end, you'll be developing your own custom build tasks.&lt;br /&gt;&lt;br /&gt;Chapter 4 guides you through the process of choosing the right CI server for your needs. It covers CruiseControl.NET, TeamCity, and TFS 2010. After you finish reading Chapter 4, you should be able to navigate your way through the options of the CI world.&lt;br /&gt;&lt;br /&gt;Keep an eye out for Chapter 5, which will look at diverse feedback mechanisms provided by CI servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-6419976752656904859?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2010/01/ci-in-net-chapters-3-and-4.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-7027995648336167039</guid><pubDate>Mon, 19 Oct 2009 14:08:00 +0000</pubDate><atom:updated>2009-10-19T08:08:43.464-06:00</atom:updated><title>Continuous Integration in .NET</title><description>&lt;p&gt;The Agile movement has changed the way we develop software, even if you are solidly in the Waterfall methodology camp. Increased emphasis on customer involvement, working software, and more involved team work are great benefits to any development process. One addition that you can and should adopt in any size team is Continuous Integration, commonly called CI. With CI builds and unit tests are handled automatically when you check in code. This helps you create better quality software in less time.&lt;/p&gt; &lt;p&gt;For the past few months I?ve been hard at work co-authoring a new book, "Continuous Integration in .NET". There are many tools available to do this. The best know is probably Microsoft?s Visual Studio Team Suite with Team Foundation Server. It has lots of bells and whistles and is pretty easy to setup, but it?s also expensive.&lt;/p&gt; &lt;p&gt;My co-author, Marcin Kawalerowicz, and I are taking a different route. We?ll show you how to use free or low cost tools to get CI working in your environment. We?re focusing on two of the better known solutions, Cruise Control .NET and TeamCity. We walk you through the entire process, beginning to end and include areas that most teams don?t get into such at tessting with FitNesse, documenting with SandCastle, running code analysis, and many other things.&lt;/p&gt; &lt;p&gt;We?re a long way from seeing the book in print. We?re currently targeting July, 2010. But you can get started with the book now. Our publisher, &lt;a href="http://www.manning.com"&gt;Manning&lt;/a&gt;, has a great way to see the book progress and provide input to shape the book and make it a tremendous resource. It?s calling the Manning Early Access Program, or MEAP.&lt;/p&gt; &lt;p&gt;With MEAP, you get to read Chapter 1 for free. You can then purchase either the ebook or both the ebook and the printed book. Either way, you get access to every chapter as it?s available. Currently the first two chapters are online. None of the chapters we?ve written have been polished. Copy editing doesn?t happen until we?re done writing every chapter. Go &lt;a href="http://www.manning.com/kawalerowicz/" target="_blank"&gt;here&lt;/a&gt; to get your MEAP.&lt;/p&gt; &lt;p&gt;By giving you early access to the book, you get access to the Author Forum. It?s on this forum that you can post comments, good and bad, about the book and make suggestions on additional content. You can access the forum &lt;a href="http://www.manning-sandbox.com/forum.jspa?forumID=612" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I hope you will check out our book and library. We?re working hard to make it a great resource for your library.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-7027995648336167039?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/10/continuous-integration-in-net.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-1436748982084729801</guid><pubDate>Thu, 01 Oct 2009 16:20:00 +0000</pubDate><atom:updated>2009-10-01T10:20:19.285-06:00</atom:updated><title>Reawarded Microsoft MVP</title><description>&lt;p&gt;The &lt;a href="http://mvp.support.microsoft.com"&gt;Microsoft MVP program&lt;/a&gt; is a great award given to people doing great things to support the community. You may speak at conferences, write books or magazine articles, provide support in forums, or many other areas. These are the things that can qualify you to be an MVP. I'm humbled to again be counted among the 4700 people worldwide that are current MVPs. It is a great honor to get this award again. After all, this award allows me to help you create better applications for your customers.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-1436748982084729801?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/10/reawarded-microsoft-mvp.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-4526026405422315650</guid><pubDate>Tue, 29 Sep 2009 18:51:00 +0000</pubDate><atom:updated>2009-09-29T12:51:52.229-06:00</atom:updated><title>Tech Speaking.. The first steps</title><description>&lt;p&gt;In my &lt;a href="http://www.craigberntson.com/blog/2009/09/speaking-with-powerpoint.asp"&gt;last post&lt;/a&gt;, I discussed ways to improve your PowerPoint when giving conference presentations. But before you even get to that point, you need to plan what you are going to present.&lt;/p&gt; &lt;p&gt;Step one is to know your audience. Are they experienced with the technology you're speaking on? Do they understand competing or parallel technologies? What do you think they are looking for in this presentation? &lt;/p&gt; &lt;p&gt;Next you need to define the technical level for your presentation. Is it a high-level, 30,000 foot view or will it be deep dive? If going deep dive, you need to define some prerequisites that attendees should know so you don't have to spend time covering the basics. This sets the attendees expectations on what they'll learn.&lt;/p&gt; &lt;p&gt;Now it's time to work up an outline. This is your guide to what you'll actually present and can be used for the Outline slide at the beginning of your session. The presentation should cover three main points:&lt;/p&gt; &lt;p&gt;WHAT am I going to show you?&lt;/p&gt; &lt;p&gt;WHY should it matter to you?&lt;/p&gt; &lt;p&gt;HOW can you do it?&lt;/p&gt; &lt;p&gt;If you've answered these three questions, the audience should go away satisfied.&lt;/p&gt; &lt;p&gt;One last thing?Pick out one key point and make it the "If you don't learn anything else in this session, learn this one thing" item. This should be the most important concept in your session. It's not often easy to find one key thing, but it's important that you do.&lt;/p&gt; &lt;p&gt;My next post in this series will cover session artifacts.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-4526026405422315650?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/09/tech-speaking-first-steps.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-7953017930412667840</guid><pubDate>Fri, 25 Sep 2009 20:22:00 +0000</pubDate><atom:updated>2009-09-25T14:22:45.907-06:00</atom:updated><title>Speaking with PowerPoint</title><description>&lt;p&gt;This post is the first in a series of how to be a better tech conference speaker.&lt;/p&gt; &lt;p&gt;I have presented at lots of geek events since my first conference presentation in 2000 and picked up several tips along the way. I have also done a presentation on speaking at a couple of Code Camps. At the last couple of events I saw presentations where the speaker clearly didn't understand how to use PowerPoint. Granted, PowerPoint should not be the focus for most tech conference sessions as the attendees want to see the code, but some concepts are just better addressed through PowerPoint. My Domain Driven Design session is one such example. It takes nearly 75 minutes just to explain the concepts. That leaves no time for code. PowerPoint is also very good for explaining complex concepts because you can explain a little bit at a time, then put it all together at the end so the attendee grasps the concept better. If you are a keynote presenter, then you will probably use all PowerPoint and no or little code. But the same PowerPoint rules will apply. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;There are two basic reveal styles. You can show the entire slide at once. This is good to use as a prompt for you to know what to present next. However, the audience often reads ahead. In the second method you reveal one item at a time as you present it to the audience. I use both techniques, depending on what I'm talking about.&lt;/li&gt; &lt;li&gt;People on the back row can't see the bottom of the slides. This rule is commonly broken. I try to use only the top 75% of the slide. The longer the room, the worse the problem becomes.&lt;/li&gt; &lt;li&gt;We've all come to hate bullet points. Use a maximum of three levels of bullets. Better yet, keep it to one level. Only use keywords. &lt;/li&gt; &lt;li&gt;Limit the total amount of text on a slide. If you have to go to a third row of text on a bullet, you have too much text. If you have a long quote from someone, highlight the key points in a different color so the audience can pick that out quickly.&lt;/li&gt; &lt;li&gt;Slides should be simple and relevant. Don't include information that isn't needed. Use the minimum amount of text needed. Remember that bullets don't need to be complete sentences. The audience is there to hear you speak, not read your slides.&lt;/li&gt; &lt;li&gt;If you have text on a slide, you need to talk about it. Don't leave the audience wondering why you didn't mention something that seemed important enough to put on a slide, but not address in the speech.&lt;/li&gt; &lt;li&gt;Avoid animation and sounds. They are distracting to the audience. One version of PowerPoint had a standard template that included animation of a light swooshing across the screen with every slide change. It looked cool, but distracted the audience.&lt;/li&gt; &lt;li&gt;If you need to use complex diagrams, build them one portion at a time. Explain each part as you display it. This makes it easier for the audience to understand the diagram. If you show the whole thing at one time, the audience will try to figure out what you're showing and won't hear what you're saying.&lt;/li&gt; &lt;li&gt;Think about the fonts you are using. Don't use anything smaller than 20 point. Also, sans-serif fonts are easier to see on a screen while serif fonts are easier for printed material.&lt;/li&gt; &lt;li&gt;Be careful of the slide background. Most of the templates that ship with PowerPoint are unusable for conference presentations. You should use something plain. That means no pictures and no swirling geometric figure. Dark color backgrounds work best in most conference venues. Blue, black, dark green are good choices. Light backgrounds work better in small conference rooms like you see in most offices.&lt;/li&gt; &lt;li&gt;The text color should have good contrast with the background color. Yellow text on a blue background or white text on a black background work well.&lt;/li&gt; &lt;li&gt;Don't put your logo or company name on every slide. Your introduction slide should say who you work for, so it isn't needed again later.&lt;/li&gt; &lt;li&gt;Arrive at the venue early and check your slide deck on the projector in the room you are speaking in. Walk to the back of the room. Sit on the last row. Make sure everyone in the room can see your slides. Make adjustments as needed.&lt;/li&gt; &lt;li&gt;Add supporting information into the Notes section of each slide. Most of the time, attendees will only get slides and sample code from events. They won't remember all the information from just a few bullet points. If a conference requires whitepapers from the speakers, you can ignore this rule.&lt;/li&gt; &lt;li&gt;Don't use laser pointers. They are more distracting than helpful. Have you ever played with a laser pointer and a cat? Guess what humans look like when the presenter starts using a laser pointer.&amp;nbsp; Almost every time I see someone use them, they press the laser pointer button, then move the pointer around trying to find the exact place on the slide they want to emphasize. Your mind starts to follow the red light and you stop listening.&lt;/li&gt; &lt;li&gt;I can't tell you the number of times I've seen a presenter launch PowerPoint, click the Show button so the slides are full screen, show some slides, then hit Escape to turn off the Show before switching to Visual Studio to show code. Stop doing that!!!! It's distracting to the audience because when you switch back to PowerPoint you have to find the Show button again to get the slides to full screen. It really shows a lack of preparation and professionalism. I think the reason people do this is because if you Alt+Tab from PowerPoint to Visual Studio, then back, that you'll find two instances of PowerPoint in the programs list and it isn't easy to tell which one you want. It's easy to avoid that. The solution?don't launch PowerPoint. Instead, launch Windows Explorer, navigate to the folder that contains your slide deck. Right-click on your slides file and select Show. You'll get one instance of PowerPoint running. Just remember to not hit Escape during your presentation because it will kill PowerPoint.&lt;/li&gt; &lt;li&gt;Get a clicker. One of those things that will advance to the next slide. This way you can use the entire stage and not have to cross it to advance to the next slide. Practice using the clicker. Change the batteries often so that it won't die in the middle of the presentation.&lt;/li&gt; &lt;li&gt;Always include an introductory slide that lists the topics you will present. This gives the audience an idea of where you will go. If the topic is complex, include slides along the way to transition from one idea to another. Include a summary slide at the end that talks about what you presented. &lt;/li&gt; &lt;li&gt;Most presenters have a slide at the beginning that includes contact information. That's good, but most people won't get the information then. I show a slide at the end with contact information and leave it up while taking questions. This gives attendees a chance to write down the information so they know where to download slides or how to get hold of you.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You may want to get a good book on using PowerPoint. I recently picked up &lt;a href="http://www.amazon.com/slide-ology-Science-Creating-Presentations/dp/0596522347/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1253909846&amp;amp;sr=8-1"&gt;Slideology&lt;/a&gt; and &lt;a href="http://www.amazon.com/Presentation-Zen-Simple-Design-Delivery/dp/0321525655/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1253909846&amp;amp;sr=8-2"&gt;Presentation Zen&lt;/a&gt; and found them very useful to tweak my presentations. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-7953017930412667840?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/09/speaking-with-powerpoint.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-3727230092693776727</guid><pubDate>Mon, 31 Aug 2009 15:48:00 +0000</pubDate><atom:updated>2009-08-31T09:48:12.346-06:00</atom:updated><title>Interview on Continuous Integration</title><description>&lt;p&gt;While at &lt;a href="http://www.devlink.net"&gt;DevLink&lt;/a&gt;, I was interviewed by &lt;a href="http://www.davidgiard.com/"&gt;David Giard&lt;/a&gt; for the webcast "Technology and Friends". The topic was Continuous Integration. You can see the interview &lt;a href="http://www.davidgiard.com/2009/08/31/CraigBerntsonOnContinuousIntegration.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-3727230092693776727?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/interview-on-continuous-integration.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-4625722307948346146</guid><pubDate>Thu, 20 Aug 2009 05:01:00 +0000</pubDate><atom:updated>2009-08-19T23:01:32.125-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Code Camp</category><title>Alistair Cockburn at Utah Code Camp</title><description>&lt;p&gt;Register now for &lt;a href="http://www.utcodecamp.com/"&gt;Utah Code Camp&lt;/a&gt;, Sept. 19. One of the biggest names in the industry is the Keynote speaker. Dr. Alistair Cockburn, one of the guys behind the Agile Manifesto and Use Cases. There are some other heavy hitters coming from the local community: Pat Wright, Aaron Skonnard, Aaron Zupancic as well as nationally known presenters Aaron Skonnard (yeah, I know, he was on the local list because he lives here), Joe Mayo, and Jason Beres. There are many others with some great content. Oh yeah, I?ll be there too presenting ?Domain Driven Design for the Average Application?. We?ll have lots of stuff to give away. Best of all, it?s free! Register today and I?ll see you at camp.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-4625722307948346146?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/alistair-cockburn-at-utah-code-camp.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-2950664249441331820</guid><pubDate>Thu, 20 Aug 2009 04:48:00 +0000</pubDate><atom:updated>2009-08-19T22:48:45.904-06:00</atom:updated><title>DevLink Day 3</title><description>&lt;p&gt;The final day of DevLink started pretty much the same way as Day 2?a trip to McDonald?s for breakfast and a car full of attendees.&lt;/p&gt; &lt;h3&gt;Pure T-SQL Code&lt;/h3&gt; &lt;p&gt;I wasn?t sure which session to attend first thing. Nothing really jumped out at me. I finally decided on ?Pure T-SQL Code? by Paul Nielsen for a couple of reasons. First, I had been following Paul on Twitter for a while. Second, I met him this past Spring at the MVP Summit. Third, my session followed his in the same room.&lt;/p&gt; &lt;p&gt;Paul is a very personable speaker. Right away he makes you feel like an old friend. I don?t write much TSQL in my job and some of the stuff he was doing was more complex than the simple scripts I write, but he was using real world examples that he?s written in his own applications. And you can get the same info. Pick up Paul?s book, SQL Server Bible. It?s all in there?and then some.&lt;/p&gt; &lt;p&gt;I also talked to Paul about coming to Salt Lake City next month for the &lt;a href="http://www.utcodecamp.com"&gt;Utah Code Camp&lt;/a&gt;. I hope he does. Great session.&lt;/p&gt; &lt;h3&gt;Architecting Modern Distributed Applications&lt;/h3&gt; &lt;p&gt;After Paul?s session, I did my ?Domain Driven Design for the Average Application? session, then it was lunch. The first session of the afternoon was ?Architecting Modern Distributed Applications? by Clint Edmondson.&lt;/p&gt; &lt;p&gt;There are a number of trends in distributed applications&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Service Oriented Architecture (SOA)&lt;/li&gt; &lt;li&gt;Software As A Service (SaaS)&lt;/li&gt; &lt;li&gt;Web 2.0&lt;/li&gt; &lt;li&gt;Rich Internet Applications (RIA)&lt;/li&gt; &lt;li&gt;Cloud Computing&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Each one of these has different strengths and weaknesses. How we choose one over another depends on what we need to accomplish. Clint then showed a number of slides that showed a path from one technology to another to show how we choose the technologies to use.&lt;/p&gt; &lt;h3&gt;Understanding User Experience Design Patterns&lt;/h3&gt; &lt;p&gt;Jason Beres of Infragistics did the next session, ?Understanding User Experience Design Patterns?. Working for a company that creates user interface controls gives him a unique perspective into how users work and what Ux they expect. &lt;/p&gt; &lt;p&gt;We can look at everyday things to figure out how usable they are. Jason showed some examples of good and bad Ux of both software and real things.&lt;/p&gt; &lt;p&gt;He showed some Ux patterns that we used based on how the user will use the software. These are all listed on a great patterns site called &lt;a href="http://quince.infragistics.com/"&gt;Quince&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;.NET Rocks, Live!&lt;/h3&gt; &lt;p&gt;One of the great .NET podcasts is &lt;a href="http://www.dotnetrocks.com/"&gt;.NET Rocks&lt;/a&gt;. Carl Franklin and Richard Campbell do an incredible job of getting guests, asking them the right questions, and entertaining us at the same time. The closing session of the conference was a panel discussion on the topic of ?Is Software Development Getting Too Complex?. On the panel was Billy Hollis, Kathleen Dollard, Josh Holmes, and Jim Holmes. The discussion was recorded for a future episode of .NET Rocks. Watch for it to be available soon.&lt;/p&gt; &lt;h3&gt;Epilogue&lt;/h3&gt; &lt;p&gt;This was my first time at DevLink, but I hope it?s not my last. It was simply one of the best conferences I?ve attended. The content was second-to-none. The venue was superb. The food was tasty and healthy. The networking was great. The price was even better. Three days of geek goodness for $100. The preliminary dates for DevLink 2010 are August 5-7. After the conference, Paul Nielsen Tweeted, ?DevLink is the best tech conference in North America. Period.? That?s a great endorsement. I hope to see you at DevLink next year.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-2950664249441331820?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/devlink-day-3.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-6659768634439952508</guid><pubDate>Thu, 20 Aug 2009 04:22:00 +0000</pubDate><atom:updated>2009-08-19T22:22:07.268-06:00</atom:updated><title>DevLink Day 2</title><description>&lt;p&gt;Day Two started off with loading attendees in my rental car and stopping at McDonalds for breakfast on the way to the venue. Meeting up with old friends is one of my favorite things at a conference. In the car were Rod Paddock and John V. Peterson, who I have known for a very long time. &lt;/p&gt; &lt;h3&gt;Beyond the Core Concepts of OOP&lt;/h3&gt; &lt;p&gt;When the DevLink sessions were announced, there were two sessions that jumped to the top of my ?Must See List?, both presented by Claudio Lassala. One was ?Design Patterns?, which unfortunately was scheduled at the same time as my ?Domain Driven Design for the Average Application? session. The other was ?Beyond the Core Concepts of OOP?. Claudio is another old friend and I knew his session would be great. He did not disappoint.&lt;/p&gt; &lt;p&gt;Claudio started out with a review of the core concepts of OOP. These are the things we all have heard about many times and should know. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Abstraction ? Can only focus on one thing at a time&lt;/li&gt; &lt;li&gt;Encapsulation ? Keep data private&lt;/li&gt; &lt;li&gt;Inheritance ? ?Is a? relationship&lt;/li&gt; &lt;li&gt;Polymorphism ? Objects shape shift around&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;When creating classes, we need to remember the ?ilities?&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Reusability&lt;/li&gt; &lt;li&gt;Extensibility&lt;/li&gt; &lt;li&gt;Maintainability&lt;/li&gt; &lt;li&gt;Testability&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;But wait, there?s more! To really use OOP properly we need to use the SOLID principles&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Single Responsibility Principle ? A class should have one and only one responsibility&lt;/li&gt; &lt;li&gt;Open/Closed Principle ? A class should be open for extension but closed for modification&lt;/li&gt; &lt;li&gt;Liskov Substitution Principle ? A subclass should be able to replace it?s parent class&lt;/li&gt; &lt;li&gt;Interface Segregation Principle ? Make fine-grained classes that are client specific&lt;/li&gt; &lt;li&gt;Dependency Inversion Principle ? Depend on abstractions, not concreteness&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This was a session that lots of meat and lots to think about afterwards, but the topic is so important to use as developers.&lt;/p&gt; &lt;h3&gt;JQuery 101&lt;/h3&gt; &lt;p&gt;The second session of the day was ?JQuery 101? by Rod Paddock. I?d heard alot about JQuery, but because I don?t do web development I?d never looked into it. If you do web development and aren?t using JQuery, you should be. &lt;/p&gt; &lt;p&gt;JQuery makes Javascript easy to use. It goes hand-in-hand with CSS. JQuery is a way to easily implement Javascript using CSS. Because it?s really powerful, it?s difficult to explain and show in a session summary. My best advice is to run, do not walk to your local bookstore and pick up book about JQuery.&lt;/p&gt; &lt;h3&gt;Being More Than a Code Monkey&lt;/h3&gt; &lt;p&gt;After Rod?s session, I did my session on ?Continuous Integration in .NET?, then it was time for lunch. Then I did some networking before the next session, ?Being More Than a Code Monkey? by Michael Wood. Because of the networking, I got to the session late. Too bad because Michael had some great points.&lt;/p&gt; &lt;p&gt;I?ve long expounded the importance of code standards and keep source code easy to read. After all, you?ll write it once but read it many times. I?ve used the book Code Complete by Steve McConnell as a guide. I recently picked up Clean Code by Robert Martin and have slowly been working through it. And, it seems it was used as the basis for Michael?s session.&lt;/p&gt; &lt;p&gt;Concepts such as what kinds of comments and how many are important. It turns out that most comments in code aren?t needed. If you write self-documenting code, even fewer are needed.&lt;/p&gt; &lt;p&gt;There are many more, but like I said, I got to the session late. Pick up Robert Martin?s book. I highly recommend it. &lt;/p&gt; &lt;h3&gt;Nashville Sounds&lt;/h3&gt; &lt;p&gt;After Michael Wood?s session I did a bit more networking, then left a bit early to drop off stuff at the hotel before going to the conference party at the Nashville Sounds baseball game. It?s a AAA team affiliated with the Milwaukee Brewers. I actually saw Nashville play in Salt Lake City a few days before DevLink started. This time they were at home facing Fresno.&lt;/p&gt; &lt;p&gt;A party patio at the stadium had been reserved for us and a great spread of hotdogs, hamburgers, and pulled pork was provided. The game was lots of fun. A great way to wind down from fantastic sessions.&lt;/p&gt; &lt;p&gt;After the game, I headed back to the hotel to do a run through of my Saturday session, then off to bed.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-6659768634439952508?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/devlink-day-2.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-7935696533498887415</guid><pubDate>Tue, 18 Aug 2009 20:41:00 +0000</pubDate><atom:updated>2009-08-18T14:49:09.776-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>DevLink</category><title>DevLink Day 1</title><description>&lt;p&gt;Thursday was the first official day of DevLink. Each session was three hours today, instead of the usual 75 minutes.&lt;/p&gt;&lt;h3&gt;Configuration Management with Team Foundation Server&lt;/h3&gt;&lt;p&gt;I attended "Configuration Management with Team Foundation Server" presented by VSTS MVP &lt;a href="http://www.platinumbay.com/blogs/"&gt;Steve Andrews&lt;/a&gt;. He started with a discussion of an MS Build file. MS Build is Microsoft's build engine. It ships as part of the .NET Framework. MS Build files have an extension of .proj. Both .csproj and .vbproj are already MS Build files, you just may not know that. MS Build files are XML, so they're easy to edit. In the Solution Explorer, right-click on the file and select Unload Project. Right-click again and select Edit. The project file will open in Visual Studio's XML editor.&lt;/p&gt;&lt;p&gt;But, Visual Studio doesn't know about .proj files, so you need to add in that support. &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Select Tools –&amp;gt; Options from the Visual Studio menu. &lt;li&gt;Expand Text Editor and select File Extension.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/$vs013.jpg"&gt;&lt;/a&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 438px; DISPLAY: block; HEIGHT: 248px; CURSOR: hand" border="0" alt="" src="http://www.craigberntson.com/blog/uploaded_images/vs01-740313.jpg" /&gt; &lt;li&gt;Enter proj as the file extension then map it to the XML Editor.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;MS Build files have four main tags:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Targets – a collection of Tasks and containers &lt;li&gt;Tasks – Actions that MS Build will perform &lt;li&gt;Properties – Name/value pairs &lt;li&gt;Items – Individual items&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you add MS Build to the External Tools dialog, then you can call it from Visual Studio. &lt;/p&gt;&lt;p&gt;He talked about &lt;a href="http://msdn.microsoft.com/en-us/vstudio/cc308634.aspx"&gt;T4&lt;/a&gt;, a templating engine from Microsoft. I'll admit, T4 was entirely new to me. I've added it to my "need to look at" list, but admittedly, it will be awhile before I get to it.&lt;/p&gt;&lt;p&gt;Steve talked a bit about "Data Dude", which is Visual Studio for SQL guys. Since its release, it's been pulled into other VS editions. If you have VS Professional, you can get "Data Dude" for free. Why do you want it? Because it makes writing stored procs and designing and maintaining your database easier.&lt;/p&gt;&lt;p&gt;Steve also talked about Team Build, the team version of MSBuild. If you're working on a using TFS, you want to use Team Build.&lt;/p&gt;&lt;p&gt;This was a really good session that gave a great overview of working with MSBuild and Team Build.&lt;/p&gt;&lt;h3&gt;Thursday Afternoon&lt;/h3&gt;&lt;p&gt;I had planned to attend WPF 101 by Michael Eaton, but the room was packed. There wasn't even very much standing room. By the time I found out the session had been moved to a bigger room, it was really too late to go. So, I spent the afternoon networking…an often overlooked benefit of going to a conference. If you attend a conference and don't network, I think you've wasted your money.&lt;/p&gt;&lt;h3&gt;Keynote&lt;/h3&gt;&lt;p&gt;Thursday evening was the DevLink Keynote, given by &lt;a href="http://www.joshholmes.com/blog/"&gt;Josh Holmes&lt;/a&gt;. The topic was "The Lost Art of Simplicity". Josh started by providing a definition of and discussion of what simplicity is. There are a several reasons why we've lost simplicity:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Engineering – As software people, we often use the same tool for every job. We often don't understand how programming languages work. &lt;li&gt;Process – We get so caught up in how to do things that we don't look for ways to do things better. Sometimes we add process for process's sake. &lt;li&gt;Ux – The user experience should concentrate on function, then worry about aesthetics. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If we can simplify how we do things and make things simpler for our customers, it's a win all around.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-7935696533498887415?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/devlink-day-1.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-7840768451547400836</guid><pubDate>Mon, 17 Aug 2009 16:35:00 +0000</pubDate><atom:updated>2009-08-17T10:35:45.290-06:00</atom:updated><title>DevLink Day 0</title><description>&lt;p&gt;Never heard of &lt;a href="http://www.devlink.net"&gt;DevLink&lt;/a&gt;? Too bad. It's a small developer conference held in Nashville and it's fantastic! I had heard about it in the past, but never been there until this year. It's three days of jam packed geek goodness. I met lots of great people, connected with old friends, and learned lots, lots, lots. I also hope my sessions were interesting and informative. I'm always looking for input, good and bad. If you were in my sessions and have feedback, email me craig at craigberntson dot com.&lt;/p&gt; &lt;p&gt;Day 0 started off early. I took a red eye from Salt Lake City to Atlanta then a short jump to Nashville. I arrived Wednesday morning so I could attend the Community Summit that Microsoft was holding. I was at Pat's Bar-B-Que in downtown Nashville. This place is reported to be the best in the country and I have to say it was pretty dang good.&lt;/p&gt; &lt;p&gt;We started off playing a game. Sheets that contained the letters of the alphabet were handed out. The trick was that each letter was from the logo of some company. We had to figure out the company it came from without using the Internet. I still haven't figured them all out. The idea was to get us to meet other people and start talking to them.&lt;/p&gt; &lt;p&gt;After enjoying lunch, the discussions got started. First, it was important to define community. Three important items came up:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;We're a community of developers, no matter what language we use&lt;/li&gt; &lt;li&gt;We should learn from everyone&lt;/li&gt; &lt;li&gt;We should be teaching new people&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Jon Keller, who runs DevLink, then talked about how to build events:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You must have a passion to help others and create a great event&lt;/li&gt; &lt;li&gt;Ability to talk to people you don't know&lt;/li&gt; &lt;li&gt;You need a reason to do the event. It should be done for the community. If you're doing it for your own reputation, it's for the wrong reason&lt;/li&gt; &lt;li&gt;The event must be reasonably priced&lt;/li&gt; &lt;li&gt;The topics need to be relevant&lt;/li&gt; &lt;li&gt;You must say no to sponsors who try to guide you and make the event more for them than the community&lt;/li&gt; &lt;li&gt;You must understand your target audience&lt;/li&gt; &lt;li&gt;Don't do it alone. Get some help&lt;/li&gt; &lt;li&gt;Have a great venue&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We heard a brief overview of GiveCamp. There have been GiveCamps going on around the country. Basically, it's a weekend of coding and sharing, where the goal is to create an app, website, etc for a non-profit?and do it free of charge. Sounds like a great time and a better cause.&lt;/p&gt; &lt;p&gt;We then suggested topics for small open spaces groups and broke up into those groups. I chose a discussion on alternative user group formats. Unfortunately, the red eye caught up to me and I left early to get some sleep. But, here's what I gleaned from the discussion:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Hands-on presentation. We did this recently at the Utah .NET User Group for a presentation on doing TDD. It was a very effective way to present the topic. Just make sure the word gets out before the meeting so that everyone brings their laptop.&lt;/li&gt; &lt;li&gt;Geek dinners. We've had .NET User Group lunches here in Salt Lake in the past, but I'd like to see them more often&lt;/li&gt; &lt;li&gt;Fish bowls. This is kind of a panel discussion, but there is always one empty seat on the panel. Anyone in the audience can get up at anytime and take that seat, but someone on the panel has to go sit in the audience. You can't talk unless you're sitting as one of the panel. I participated in a fish bowl last year at Boise Code Camp and thought it was a great idea.&lt;/li&gt; &lt;li&gt;Give tokens for UG participation. After x number of tokens, you get a prize.&lt;/li&gt; &lt;li&gt;Code and coffee. This is a small gathering, usually six to eight people that meet for coffee (or your beverage of choice)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Microsoft said they will be aggregating all the discussions and posting them online. Once I get a link to them, I'll pass it along. A big thanks to Microsoft for putting this together.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-7840768451547400836?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/devlink-day-0.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-1619801159390300656</guid><pubDate>Thu, 13 Aug 2009 20:24:00 +0000</pubDate><atom:updated>2009-08-13T14:31:05.134-06:00</atom:updated><title>Speaking gigs scheduled</title><description>I'm currently at &lt;a href="http://www.devlink.net/"&gt;DevLink&lt;/a&gt; in Nashville where I am speaking tomorrow on Continuous Integration in .NET and Saturday on Domain Driven Design for the Average Application. I have three other speaking gigs scheduled before the end of the year:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://utcodecamp.com/"&gt;Utah Code Camp&lt;/a&gt;, South Jordan, UT, Sept 19, Domain Driven Design for the Average Application&lt;br /&gt;&lt;a href="http://devcon.dfpug.de/"&gt;German DevCon&lt;/a&gt;, Frankfurt, Germany, Nov 12-14, Data Access Smackdown, Getting Started with Azure Services, Domain Driven Design for the Average Application &lt;div&gt;&lt;a href="http://www.socalcodecamp.com/"&gt;SoCal Code Camp&lt;/a&gt;, Los Angeles, CA, Nov 21-22, Domain Driven Design for the Average Application, Continuous Integration in .NET&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-1619801159390300656?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/08/speaking-gigs-scheduled.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-2582058057876344048</guid><pubDate>Fri, 24 Apr 2009 19:44:00 +0000</pubDate><atom:updated>2009-04-24T13:44:14.628-06:00</atom:updated><title>What is the MVP Program?</title><description>&lt;p&gt;Have you ever wondered what the Microsoft MVP program is about or how MVPs are selected? Toby Richards, who runs the MVP program at Microsoft, talks about. &lt;a href="http://cli.gs/9MU5Hr"&gt;http://cli.gs/9MU5Hr&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-2582058057876344048?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/04/what-is-mvp-program.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-1475720502314134471</guid><pubDate>Fri, 24 Apr 2009 14:43:00 +0000</pubDate><atom:updated>2009-04-24T08:47:07.358-06:00</atom:updated><title>Three Strikes and I'm Out</title><description>&lt;p&gt;Speaking a conferences is a very time consuming prospect. You need to put great effort into the material to ensure it matches the expectations of the audience. Code needs to be tested. And then there are the practice sessions, preferable in front of a live audience.&lt;/p&gt; &lt;p&gt;But conference preparation starts long before any of that. You need to first come up with several topics because conference organizers generally ask potential speakers for more than one topic. A catchy title helps. Several years ago, I had one called "OOP, I Did it Again", that was an introduction to Object Oriented Programming. You then have to come up with a description, bullet points that hit the highlights of the presentation, figure out if it's a 100, 200, 300, or 400 level talk, and what pre-requisites are needed. Then, you need to put your proposal into the format needed by the conference organizers. So, by the time you've done this for three or four topics, you have easily spent several hours. &lt;/p&gt; &lt;p&gt;For the past three years, I've done this for Southwest Fox, but have not been accepted as a speaker there. So, I've decided to no longer submit proposals for the conference. I have no doubt there will be great presentations and it will be a fantastic conference, but it's no longer an effective use of my time.&lt;/p&gt; &lt;p&gt;I probably won't be there as an attendee either. My company has no training budget this year and it really is cost prohibitive for me to foot the bill myself. &lt;/p&gt; &lt;p&gt;I wish the Rick, Doug, and Tamar all the best for this year?s Southwest Fox and for many years to come.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-1475720502314134471?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/04/three-strikes-and-im-out.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-3831634585626755101</guid><pubDate>Tue, 21 Apr 2009 22:14:00 +0000</pubDate><atom:updated>2009-04-21T16:19:13.411-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>VFP</category><title>Functions and Procedures in VFP 101</title><description>&lt;p&gt;When working in Visual FoxPro, functions are procedures are almost the same thing. Look at the following code:&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Courier New"&gt;FUNCTION DoSomething&lt;br&gt;LPARAMETERS Param1, Param2&lt;br&gt;? "Param 1= " + Param1&lt;br&gt;? "Param 2= " + Param2&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Courier New"&gt;PROCEDURE DoSomethingElse&lt;br&gt;LPARAMETERS Param1, Param2&lt;br&gt;? "Param 1= " + Param1&lt;br&gt;? "Param 2= " + Param2&lt;/font&gt;&lt;/p&gt; &lt;p&gt;The function and procedure are actually identical. The difference to determine whether you have a function or procedure is not how they are defined, but how they are called. You can even call them the same way. &lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Courier New"&gt;DO DoSomething WITH "Hello", "Procedure"&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Courier New"&gt;DoSomething("Hello", "Procedure")&lt;/font&gt;&lt;/p&gt; &lt;p&gt;You'll notice that &lt;font face="Courier New"&gt;DoSomething&lt;/font&gt; was defined as a procedure, but we can call it as either a procedure or a function. We can do the same thing with &lt;font face="Courier New"&gt;DoSomethingElse&lt;/font&gt;.&lt;/p&gt; &lt;p&gt;The difference is how the parameters are passed. When called as a procedure, the parameters are passed by reference. When called as a function, the parameters are passed by value. You can change how they?re passed in a function with &lt;font face="Courier New"&gt;SET UDFPARMS TO REFERENCE&lt;/font&gt; but you can?t change how parameters are passed when calling the routine as a procedure.&lt;/p&gt; &lt;p&gt;So, which should you use? I think you should always call the routine as a function because the routine cannot accidently change the value of the parameter. This is the kind of nasty side effect that can be difficult to track down. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-3831634585626755101?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/04/functions-and-procedures-in-vfp-101.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-3173545825151439030</guid><pubDate>Tue, 07 Apr 2009 20:57:00 +0000</pubDate><atom:updated>2009-04-08T08:50:02.860-06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Salt Lake City</category><category domain='http://www.blogger.com/atom/ns#'>Microsoft</category><title>Two Microsoft Events Coming to Salt Lake City</title><description>Microsoft has scheduled two events in Salt Lake City in May.&lt;br /&gt;&lt;br /&gt;The first is &lt;strong&gt;XAMLFest&lt;/strong&gt;, coming up on May 1&lt;br /&gt;Are you excited about the WPF but concerned about the learning curve? Have you seen Silverlight but don’t know where to get started? Or are you curious about how tools like Visual Studio and Expression Blend help designers and developers work together to deliver great user experiences? If so, join us at XamlFest! XamlFest is an interactive event where you’ll learn about the platforms, tools, and processes used to deliver differentiated user experiences. It’s a chance for you to mingle with UX-minded Microsoft folks. To register, please send an e-mail with the names and e-mail addresses of your attendees to &lt;a href="mailto:xamlfest-slc@live.com" target="_blank"&gt;xamlfest-slc@live.com&lt;/a&gt;. Come as you are - leave xamlized!&lt;br /&gt;&lt;br /&gt;The second is &lt;strong&gt;MDSN Unleashed Presents: The Best of MIX&lt;/strong&gt; is scheduled for May 6. It will be three different topics offered in two sessions. You only need to sign up for one session and get all three topics for the price of one!&lt;br /&gt;&lt;br /&gt;&lt;em&gt;What’s New in Silverlight 3?&lt;br /&gt;&lt;/em&gt;Are you interested in building business-focused Rich Internet Applications (RIAs)? Would you like to take advantage of 3D in the browser, but assume it is too hard? Have you wanted to take a Silverlight application offline? Then this session is for you. We will explore and illustrate the new features of Silverlight 3, including the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for perspective 3D&lt;/li&gt;&lt;li&gt;Offline Support&lt;/li&gt;&lt;li&gt;.NET RIA Services which simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;em&gt;Building Web Applications with Windows Azure&lt;br /&gt;&lt;/em&gt;This session will begin with a brief overview of Azure and discuss some of the announcements made at MIX. We will then illustrate through demo how to build a Windows Azure application from the ground up. We will illustrate how to consume Azure Table Storage, how to host services, web pages and Silverlight components, as well as how to deploy your solution to the cloud.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;em&gt;MVC 1.0 vs ASP.Net Webforms&lt;br /&gt;&lt;/em&gt;Have you heard about the new ASP.NET MVC framework from Microsoft and wondered what it was all about? Are you curious whether this replaces ASP.Net WebForms? Well in this session you will learn how to use the model-view-controller (MVC) pattern to take advantage of your favorite .NET Framework language for writing business logic in a way that is de-coupled from the views of the data. In addition, we will talk about the pros and cons of both MVC and Web Forms, how to determine the best choice for a specific project, various techniques and patterns used to build MVC applications vs. Web Forms applications, and the implications for using each approach.&lt;/p&gt;&lt;p&gt;The morning session is from 8:00 am to 12:00 pm. &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032413164&amp;amp;Culture=en-US"&gt;Register here&lt;/a&gt;.&lt;br /&gt;The afternoon session runs from 1:00 pm to 5:00 pm. &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032413163&amp;amp;Culture=en-US"&gt;Register here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;All events are free and will be held at the Microsoft office in the International Center, 123 Wright Brothers Drive, Suite 100.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-3173545825151439030?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/04/two-microsoft-events-coming-to-salt.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-5039234646546003418</guid><pubDate>Mon, 30 Mar 2009 15:48:00 +0000</pubDate><atom:updated>2009-03-30T09:53:40.336-06:00</atom:updated><title>Speaking at DevLink</title><description>I will be speaking at &lt;a href="http://www.devlink.net/"&gt;DevLink&lt;/a&gt;, August 13-15. I've heard great things about this conference and Nashville and am excited to be going. I have two presentations:&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Domain Driven Design for the Average Application: &lt;/strong&gt;Domain Driven Design is a way to design and develop enterprise applications so that they are easier to maintain, enhance, and extend. DDD is overkill for many of the applications we develop today, but still has principles that can be applied to most of the apps we write. In this session, you will learn to apply these concepts.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Continuous Integration in .NET &lt;/strong&gt;Continuous Integration is a development practice where code changes are continuously checked in to source control and then automatically checked out, built, and tested. Whether you are a one person shop or have many developers, by using Continuous Integration you will improve the quality of your software and increase your productivity. This session will show you how to use Continuous Integration in your daily development by integrating several free tools.&lt;br /&gt;&lt;br /&gt;The DDD session is all new. I have been presenting the CI session for about a year and a half, but it will be updated for DevLink. Registration opens April 1. The conference is a bargain at $75. See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-5039234646546003418?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/03/speaking-at-devlink.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5060433.post-3355027816531159670</guid><pubDate>Thu, 05 Mar 2009 06:21:00 +0000</pubDate><atom:updated>2009-03-04T23:23:36.540-07:00</atom:updated><title>VFP DDEX Provider Sample Updated</title><description>Microsoft today posted an update to the VFP DDEX Provider sample. From Milind's post, "The original VFPDDEX sample did not include a license ID for Visual Studio. This required the user to register with Visual Studio Extensibity program, get a package load key (PLK) and update the provider with the new key.This download fixes this problem. The sample includes the PLK in the resource of the provider. The dowload also contains source code for registering the provider."&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4c2c869e-af08-46f2-acfb-828348588b9e&amp;amp;displaylang=en"&gt;Download the update&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5060433-3355027816531159670?l=www.craigberntson.com%2Fblog%2Findex.asp' alt='' /&gt;&lt;/div&gt;</description><link>http://www.craigberntson.com/blog/2009/03/vfp-ddex-provider-sample-updated.asp</link><author>noreply@blogger.com (Craig Berntson)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>