Thursday, February 04, 2010
Prairie DevCon
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.
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.
Now I get a chance to visit again. I will be speaking at the Prairie DevCon, June 2 & 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.
Wednesday, February 03, 2010
Rocky Mountain Tech Trifecta
Thursday, January 21, 2010
Free excerpts from CI in .NET
Chapter 1: Grokking Continuous Integration
Green Paper: Continuous Integration in .NET
dotNetSlackers.com: Continuous Integration with TeamCity
Labels: CIinDotNet, Continuous Integration, TeamCity
Wednesday, January 20, 2010
CI in .NET Chapters 3 and 4
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.
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!
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.
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.
Keep an eye out for Chapter 5, which will look at diverse feedback mechanisms provided by CI servers.
Monday, October 19, 2009
Continuous Integration in .NET
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.
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.
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.
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, Manning, 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.
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 here to get your MEAP.
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 here.
I hope you will check out our book and library. We?re working hard to make it a great resource for your library.
Thursday, October 01, 2009
Reawarded Microsoft MVP
The Microsoft MVP program 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.
Tuesday, September 29, 2009
Tech Speaking.. The first steps
In my last post, 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.
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?
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.
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:
WHAT am I going to show you?
WHY should it matter to you?
HOW can you do it?
If you've answered these three questions, the audience should go away satisfied.
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.
My next post in this series will cover session artifacts.
Friday, September 25, 2009
Speaking with PowerPoint
This post is the first in a series of how to be a better tech conference speaker.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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. 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.
- 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.
- 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.
- 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.
- 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.
You may want to get a good book on using PowerPoint. I recently picked up Slideology and Presentation Zen and found them very useful to tweak my presentations.
Monday, August 31, 2009
Interview on Continuous Integration
While at DevLink, I was interviewed by David Giard for the webcast "Technology and Friends". The topic was Continuous Integration. You can see the interview here.
Wednesday, August 19, 2009
Alistair Cockburn at Utah Code Camp
Register now for Utah Code Camp, 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.
Labels: Code Camp
DevLink Day 3
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.
Pure T-SQL Code
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.
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.
I also talked to Paul about coming to Salt Lake City next month for the Utah Code Camp. I hope he does. Great session.
Architecting Modern Distributed Applications
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.
There are a number of trends in distributed applications
- Service Oriented Architecture (SOA)
- Software As A Service (SaaS)
- Web 2.0
- Rich Internet Applications (RIA)
- Cloud Computing
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.
Understanding User Experience Design Patterns
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.
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.
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 Quince.
.NET Rocks, Live!
One of the great .NET podcasts is .NET Rocks. 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.
Epilogue
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.
DevLink Day 2
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.
Beyond the Core Concepts of OOP
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.
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.
- Abstraction ? Can only focus on one thing at a time
- Encapsulation ? Keep data private
- Inheritance ? ?Is a? relationship
- Polymorphism ? Objects shape shift around
When creating classes, we need to remember the ?ilities?
- Reusability
- Extensibility
- Maintainability
- Testability
But wait, there?s more! To really use OOP properly we need to use the SOLID principles
- Single Responsibility Principle ? A class should have one and only one responsibility
- Open/Closed Principle ? A class should be open for extension but closed for modification
- Liskov Substitution Principle ? A subclass should be able to replace it?s parent class
- Interface Segregation Principle ? Make fine-grained classes that are client specific
- Dependency Inversion Principle ? Depend on abstractions, not concreteness
This was a session that lots of meat and lots to think about afterwards, but the topic is so important to use as developers.
JQuery 101
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.
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.
Being More Than a Code Monkey
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.
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.
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.
There are many more, but like I said, I got to the session late. Pick up Robert Martin?s book. I highly recommend it.
Nashville Sounds
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.
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.
After the game, I headed back to the hotel to do a run through of my Saturday session, then off to bed.
Tuesday, August 18, 2009
DevLink Day 1
Thursday was the first official day of DevLink. Each session was three hours today, instead of the usual 75 minutes.
Configuration Management with Team Foundation Server
I attended "Configuration Management with Team Foundation Server" presented by VSTS MVP Steve Andrews. 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.
But, Visual Studio doesn't know about .proj files, so you need to add in that support.
- Select Tools –> Options from the Visual Studio menu.
- Expand Text Editor and select File Extension.
- Enter proj as the file extension then map it to the XML Editor.
MS Build files have four main tags:
- Targets – a collection of Tasks and containers
- Tasks – Actions that MS Build will perform
- Properties – Name/value pairs
- Items – Individual items
If you add MS Build to the External Tools dialog, then you can call it from Visual Studio.
He talked about T4, 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.
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.
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.
This was a really good session that gave a great overview of working with MSBuild and Team Build.
Thursday Afternoon
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.
Keynote
Thursday evening was the DevLink Keynote, given by Josh Holmes. 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:
- Engineering – As software people, we often use the same tool for every job. We often don't understand how programming languages work.
- 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.
- Ux – The user experience should concentrate on function, then worry about aesthetics.
If we can simplify how we do things and make things simpler for our customers, it's a win all around.
Labels: DevLink
Monday, August 17, 2009
DevLink Day 0
Never heard of DevLink? 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.
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.
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.
After enjoying lunch, the discussions got started. First, it was important to define community. Three important items came up:
- We're a community of developers, no matter what language we use
- We should learn from everyone
- We should be teaching new people
Jon Keller, who runs DevLink, then talked about how to build events:
- You must have a passion to help others and create a great event
- Ability to talk to people you don't know
- 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
- The event must be reasonably priced
- The topics need to be relevant
- You must say no to sponsors who try to guide you and make the event more for them than the community
- You must understand your target audience
- Don't do it alone. Get some help
- Have a great venue
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.
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:
- 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.
- 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
- 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.
- Give tokens for UG participation. After x number of tokens, you get a prize.
- Code and coffee. This is a small gathering, usually six to eight people that meet for coffee (or your beverage of choice)
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.
Thursday, August 13, 2009
Speaking gigs scheduled
Utah Code Camp, South Jordan, UT, Sept 19, Domain Driven Design for the Average Application
German DevCon, Frankfurt, Germany, Nov 12-14, Data Access Smackdown, Getting Started with Azure Services, Domain Driven Design for the Average Application
Friday, April 24, 2009
What is the MVP Program?
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. http://cli.gs/9MU5Hr
Three Strikes and I'm Out
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.
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.
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.
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.
I wish the Rick, Doug, and Tamar all the best for this year?s Southwest Fox and for many years to come.
Tuesday, April 21, 2009
Functions and Procedures in VFP 101
When working in Visual FoxPro, functions are procedures are almost the same thing. Look at the following code:
FUNCTION DoSomething
LPARAMETERS Param1, Param2
? "Param 1= " + Param1
? "Param 2= " + Param2
PROCEDURE DoSomethingElse
LPARAMETERS Param1, Param2
? "Param 1= " + Param1
? "Param 2= " + Param2
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.
DO DoSomething WITH "Hello", "Procedure"
DoSomething("Hello", "Procedure")
You'll notice that DoSomething was defined as a procedure, but we can call it as either a procedure or a function. We can do the same thing with DoSomethingElse.
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 SET UDFPARMS TO REFERENCE but you can?t change how parameters are passed when calling the routine as a procedure.
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.
Labels: VFP
Tuesday, April 07, 2009
Two Microsoft Events Coming to Salt Lake City
The first is XAMLFest, coming up on May 1
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 xamlfest-slc@live.com. Come as you are - leave xamlized!
The second is MDSN Unleashed Presents: The Best of MIX 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!
What’s New in Silverlight 3?
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:
- Support for perspective 3D
- Offline Support
- .NET RIA Services which simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms
Building Web Applications with Windows Azure
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.
MVC 1.0 vs ASP.Net Webforms
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.
The morning session is from 8:00 am to 12:00 pm. Register here.
The afternoon session runs from 1:00 pm to 5:00 pm. Register here.
All events are free and will be held at the Microsoft office in the International Center, 123 Wright Brothers Drive, Suite 100.
Labels: Microsoft, Salt Lake City
Monday, March 30, 2009
Speaking at DevLink
Domain Driven Design for the Average Application: 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.
Continuous Integration in .NET 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.
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!
Wednesday, March 04, 2009
VFP DDEX Provider Sample Updated
Download the update
Thursday, February 05, 2009
MSDN Event in Salt Lake City
- Demystifying Azure - An Overview of the Azure Services Platform for Developers
- Deepen your Debugging - Tips and Tricks for the Visual Studio 2008 Debugger
- Developing for Windows Mobile Devices
Register here.
Wednesday, January 21, 2009
Two speaking gigs scheduled
The second is Saturday, March 28 at the Boise Code Camp and Techfest. I have two topics scheduled, Windows Azure and Microsoft Entity Framework.
Monday, January 19, 2009
Nothing Express About SQL Server 2008 Express
- clearly indicated; distinctly stated; definite; explicit; plain: He defied my express command.
- special; definite: We have an express purpose in being here.
- direct or fast, esp. making few or no intermediate stops: an express train; an express elevator.
- used for direct or high-speed travel: an express highway.
- duly or exactly formed or represented: an express image.
That's the definition of express from dictionary.com. But there is nothing express about SQL Server Express. I have been attempting to install it on a VPC image of Vista Ulitimate, SP1. Here's what I went through:
- Download the install package. I'll accept this one. I can't install without having it.
- Launch installation package.
- Install FAIL. I need to download and install a Windows Installer 4.5 Why does every Microsoft product need a different version of the installer? And why can't it be included in the product's installation package?
- Download Windows Installer 4.5
- Forced reboot. An installer is an APPLICATION, not part of the OS and should not require an OS reboot.
- Launch installation package.
- Install FAIL. I walked through several screens only to be told that installation couldn't continue because PowerShell was not installed. Why is PowerShell even required? And if it is, I should at least be told at the beginning of the install process that it's not installed. Don't tell me half way through several dialogs.
- Download and install PowerShell.
- Launch SQL Server Express installer.
- But wait, there's more. I walked through 16!!! different screens and had over 30 clicks!!! in addition to selecting the account to run SQL Server, entering an administrator password (twice). I didn't even select all features or look at all the options. Many of the dialogs (Setup support rules, Setup support files) weren't needed. Others (license terms, product key) could be combined into a single dialog.
Express is supposed to lite weight and easy to setup and use. Nothing about this was easy to setup. Install process FAIL. In the end, the install was successful.
Labels: SQL Server
Saturday, January 10, 2009
Installing Windows 7 and First Impressions
- Backup Vista hard drive.
- Launch Windows 7 install.
- Select to get updates. 862K was downloaded.
- Chose Custom install. This created a Windows.old folder on the drive that contained the old Vista Windows folder, Perflogs, Users, Program Files, etc. Other folders that I had created were untouched.
- Setup then copied files and began to expand them.
- Setup rebooted the PC.
- After startup, setup continued to expand the files.
- Another reboot.
- Setup continued, updating the registry and started services. New Windows files were installed.
- I was prompted for international settings, country, time zone, etc, for computer name, username, and password. The password hint was required. Why was this required? IMO, it shouldn't be.
- I then entered the product key. This step is far too late in the process. Windows should ask me for this before I select any of the previous options.
- I then had the option to set the time, which was already correct.
- Setup detected the wireless networks available and I selected mine. I was then asked if I wanted to create a Home Group. I chose not to do so.
- Setup completed soon after. Total time after I did backup was less than an hour.
Overall, the setup process was very clean and easy. Here are my first impressions:
- Taskbar: I'm realy used to the old taskbar and like how it works. I set it up so that running programs appear on top and shortcuts are below. I organize my shortcuts in the order I want so they are easy to find. At first, I didn't like the combined short cuts/running programs on the task bar. I had it set to display the names of the running programs, which moved the icons to the right. After changing the settings to show only the icon, things are much better. It's easy to tell which programs are running. However, when you click a running Internet Explorer, you are prompted to select the tab to activate rather than just activating IE.
- Paint, WordPad, NotePad. Paint and WordPad now use the Ribbon in the UI. NotePad does not and it really looks dated because of that.
- My: The return of My is not welcome by me. When Vista was released, I blogged that I was happy My had been removed, but it's back again in My Documents, My Music, My Photos, and My Videos.
- Media Player: A new UI that looks dated.
- IE 8: Overall, I like IE. In fact, I use it as my primary browser. It does everything I need, so I don't see a reason to change to something else. I found a couple of web sites that had minor problems in IE 8. The biggest issue is that when I tried to log into my bank, I was told the browser wasn't supported and I could not log in. Good thing I still have an XP machine.
- Reboot: I installed updated (beta) drivers for my video card. Windows asked to reboot after. I was very impressed with the speed of the process.
- Aero Glass: I don't see the Aero Glass effects on windows. The window borders are not transparent. I'm not sure if it's the video drivers or a change in Windows.
Overall, Windows 7 seems to be faster and snappier than Vista and I'm happy with it so far. I'm still installing software, so that may change. If you've been debating/waiting to go to Vista, I say wait for Windows 7.
Labels: Windows 7
Monday, January 05, 2009
Microsoft Event in Salt Lake City
Morning: 8:00 - 12:30 Register at http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032399782&culture=en-US
Afternoon: 1:00 - 5:30 Register at http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032399784&culture=en-US
Both sessions will be at the Microsoft offices in the International Center.
Wednesday, October 29, 2008
Maintaining state in VFP COM+ components
We are looking to a way to distrubute the application server load (FoxPro MTDLL) by using a COM+ clustering configuration. Question: How FoxPro COM+ state will replicated through all cluster members? The COM+ are mainly to access MS SQL DB.
The answer is:
You can never count on state being replicated across servers. COM+ itself is designed to be stateless. You'll need to keep state information in a central location, for example SQL Server, or send all the state information every time you CREATEOBJECT() on a COM+ object.
Tuesday, October 28, 2008
Windows 7 Debuts
- New task bar similar to OSX Dock
- Jump lists
- New Start menu
- Windows Explorer Libraries
- Home Group Networking provides separate profiles for home and work. You'll be able to plug your work laptop into your home network and not compromise your work files
- Vista Sidebar is dead. Gadgets just go on the desktop
- New light weight media player
- System tray is locked down by default. You can decide what goes there.
- New Action Center. It's a superset of Vista Security Center. It will also queue up "toast" notifications.
- Touch UI is built in and usable with no code changes. One reporter said, "It's like a big friking IPhone".
- WordPad now supports ODF and has a new Ribbon interface, similar to Office 2007.
- Paint is finally updated and also Ribbon interface.
- UAC is more controllable and less intrusive. There is a UAC settings in Control Panel. You can set the level of UAC protection via a slider.
- Reduced memory footprint and disk IO
- Better power management. Microsoft spent time on end-to-end testing with playing a DVD on battery power.
- Faster boot
- Native Virtual Hard Drive monitoring. You can directly mount and boot from VHDs.
- Bit Locker works on USB devices
- Remote Desktop supports dual monitor
- Windows key + P goes into new Presenter Mode
- Shutdown button is customizable
Microsoft promised a beta early next year. It will be feature complete but will not be ready for performance testing. The beta will be public and available on microsoft.com. It will be followed by on Release Candidate, then RTM. While Microsoft did not give a date for release, the press is reporting it will be available late 2009.
More Win7 details are expected at the WinHEC conference in about 10 days.
Here are some links to screen shots and more info on Win7 and Office 14.
http://blogs.zdnet.com/microsoft/?p=1675
http://www.techflash.com/microsoft/Microsoft_taking_Office_to_the_browser.html
http://content.zdnet.com/2346-12354_22-244222.html
http://blogs.zdnet.com/Bott/?p=575
http://www.flickr.com/photos/longzheng
http://www.neowin.net/news/live/08/10/28/introducing-the-windows-7-ui
http://www.winsupersite.com/win7/
http://blogs.zdnet.com/microsoft/?p=1676
http://news.cnet.com/8301-10805_3-10074795-75.html?tag=newsLeadStoriesArea.0
http://news.cnet.com/8301-13860_3-10076864-56.html?tag=newsLeadStoriesArea.0
http://news.cnet.com/8301-10805_3-10076883-75.html?tag=newsLeadStoriesArea.0
http://www.winsupersite.com/office/office14_web_preview.asp
Labels: Windows 7
Friday, October 17, 2008
Winforms, ActiveX, WPF, and VFP
Labels: .Net, ActiveX, VFP, Winforms, WPF
Tuesday, October 14, 2008
Windows 7 to be called....
Friday, October 03, 2008
Utah Most Digital State
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." http://www.govtech.com/gt/418945?topic=117673
Thursday, October 02, 2008
Finally! An MSDN Event in Utah
The first 50 people to register will get a free copy of the book "Applications = Code + Markup" by Charles Petzold.
The event overview states:
Today’s applications need to do more than simply work. They need to drawRegister here.
in the user, and provide a differentiated experience. This means moving beyond
battleship gray forms boxy UIs and simple HTML forms, and providing a positive
user experience. Windows Presentation Foundation (WPF) and Silverlight 2
provide powerful capabilities to develop compelling user interfaces, on the
client and in the browser, respectively.
At the heart of
these rich applications is data. There are a growing number of choices of
technologies available to access data, create database abstraction layers and
expose data as services. Visual Studio 2008 (and .NET Framework 3.5) SP1
include the production release of the ADO.NET Entity Framework, ADO.NET Data
Services, as well as some enhancements to the Web Programming model
(REST-Friendly) in WCF.
In this session, Rob Bagby will
examine the core concepts of WPF and Silverlight such as layout panels, data
binding, styles and control templates, and will use them to develop an
application UI from the ground up. Rob will further examine and demystify
the options available to you to expose data to your rich applications.
Wednesday, October 01, 2008
Microsoft MVP Award
Subscribe to Posts [Atom]
