July 2006 - Posts
For the past 13 years or so, I've been involved with the wonderful folks at Advisor Media (who, although being great to work with, have a web site you'll have to see to believe). They've run a series of conferences starting (for me) with Access, back in 1993, adding coverage of Office, and VB, and now .NET, Sharepoint, and more. They're having a big conference in Phoenix in August (a great time to be in Phoenix if there ever was one!) and you should consider attending.
Click here for more information.
The conference covers everything from .NET and Visual Studio 2005 to Sharepoint, ASP.NET, and SQL Server. You can also attend sessions on FoxPro, and Access/Office. I've found the Advisor events to be refreshing, low-key, informative, and fun. I've kept speaking, for 13 years, mainly because I just like going, seeing friends, and meeting the great attendees. This isn't a huge conference--you won't find 2500 attendees--so it's more friendly, more informal, and more fun.
Get a $100 Discount!
If you do decide to attend, you can receive a $100 discount. When you register, simply enter "Ken Discount" in the comment field, and you'll get $100 off the price of admission. I'd love to see you there.
My good friend and frequent co-author Paul D. Sheriff has decided to try something new--he's created a "gated community" for .NET developers--Paul Sheriff's Inner Circle. He's providing a good amount of free content for .NET developers, and also a subscription-based site where developers and managers can share and gain knowledge of development in general, and more importantly, the business of development (something about which I certainly know little).
I've checked out the site and although it's still in the growing phase, there's a good deal of starter content there. Check it out yourself, and see what you think.
I've been writing and presenting training courses for AppDev for about 10 years now, and have recently released a series of new courses, along with co-authors Andy Baron and Robert Green.
For a few demo CD, drop by their site.
If you're interested in training for Visual Studio 2005, drop by AppDev's site for more information. Specifically, the new topics include:
Coming Soon: Programming in Visual Basic 2005
Coming Soon: Programming in Visual C# 2005
Visual C# 2005: Developing Applications
Visual Basic 2005: Developing Applications
ASP.NET 2.0 Using Visual C# 2005
ASP.NET 2.0 Using Visual Basic 2005
ASP.NET 2.0 Using Visual C# 2005: Additional Topics
ASP.NET 2.0 Using Visual Basic 2005: Additional Topics
Exploring Visual Basic 2005
Exploring Visual C# 2005
Thanks to INETA, I recently visited both the Sacramento .NET User's Group and the Central California .NET User's Group. Thanks to both groups for hosting my visit. Both were lots of fun, provided me with some challenging questions, and (I hope) got a lot out of the presentation.
In each case, the presentation was .NET Windows Forms Tips and Tricks (one that I've done several times in the past).
In case you were there, and would like to download the demonstrations, you can do so here.
Thanks to all who attended, and to the user groups for hosting the events.
How can I make posts on July 4th and not wish the country a happy birthday? It would just be unpatriotic.
And thinking of important dates, it appears that I'll be speaking at VSLive NYC, in the shadow of the Brooklyn Bridge, on the morning of September 11 2006. I mention this not so much to promote the event, but just to make a public point that I really prefer not to treat this date as "normal" work date--I had to speak at VSLive on September 11 in the past (in Orlando, it was somehow easier) and found it emotionally debilitating, and doing so seems to me to trivialize the anniversary in some way.
I'm hoping that the bravery of those that actually witnessed and survived that day will inspire us to remember the sacrifices of all those involved. (As you might guess, I'm trying to work out the emotional issues before the date itself...)
So Happy Birthday, USA. I'm so happy to be here.
When Cingular announced a Windows Mobile 5.0 phone late last year, I rushed out for the latest and greatest, assuming that Exchange Server SP2 and its support for "push email" would just work. So very, very wrong. The extra security and push email features were a long time in coming--supposedly, Microsoft completed work on these features of WM5 back in January, but the various vendors needed time to "test" the features (Note the irony implied by the quotes. You have to imagine the air quotes as I'm telling this story).
Finally, this month, Cingular has released the MSFP update, which includes two huge features: push email from Microsoft Exchange SP2, and added security features, such as the ability to wipe a phone remotely should you happen to lose it while traveling. I really like the concept of being able to remove all the personal information from my phone, via a Web site (http://yourserver/mobileadmin), should I ever inadvertently leave the phone in a "bad neighborhood."
My main goal was to avoid those nasty SMS charges (Cingular provides an unlimited data plan, which I have, for my phone. But when you have unlimited data, SMS messages cost $0.10 each, and the phone was using SMS to have Exchange notify it when email had arrived. The charges add up). By having push email enabled, in theory, Exchange isn't using SMS to push information about new email to the phone, but is instead using HTTP(S). All I can say is that when a new message arrives, it appears on my phone within seconds. Finally, I can be just as tethered to work as my Blackberry-addicted friends!
Installing Exchange SP2 and updating the phone was a snap. I'm not an IT-kind of guy, and we only have three or four mailboxes on our single Exchange instance, so I'm guessing the update was way easier for me than it may be for you, but to get started, drop by the Exchange site. Download and install SP2.
This was a no-brainer, on my server, but I strongly suggest you back the server up first. For this purpose, I love Acronis True Image Enterprise Server. (I'm using the older 8.0 version, but a sales rep told me "If it's working for you, don't bother to upgrade to 9.1". Not upgrading saved me $599.)
Next, you must upgrade your phone. If you're a Cingular customer, you can find the links here. If not, you might find an update for your phone on Microsoft's site. Make sure you take heed of the warnings you see online: When you update the phone, you'll lose all your settings and data. If you have installed applications, or data stored in the phone that doesn't come from Exchange, you must back it up before applying the ROM update.
All I can say is that after a few days using the MSFP update, I'm sold. It works flawlessly, and installs easily. I swear I get better connections and better signal strength than I did before. (I live way out in the country, and before this update, I could never get a signal at my home. Now the phone shows three or four bars here.) I'm a happy Cingular customer (for a few minutes).
Over the years, I've spent my share of time programming in Visual Basic. From VBA to VB6 to VB .NET to VB 2005, there's been a feature buried in there that might be useful, and I had just never noticed it. Perhaps it's one of those "in" things that everyone else but me knows (just like in high school--a trauma that I'll carry with me to the grave <g>), but maybe you don't know about this, either.
You know, of course, that Visual Basic supports a number of different loops: For, For Each, While, Do While/Until. In each case, you can break out of the loop prematurely using the Exit For, Exit Do, or Exit While statement. I always thought that you could only break out of the inner-most loop. Not so--as long as you have nested loops of different types, the logic in your application can break you out to any level, as deep as you like.
For example, the following demo procedure shows how you can nest different loop types, and can exit any loop to any level:
Private Sub LoopTest()
Dim dir As New DirectoryInfo("C:\")
Dim i As Integer = 0
Dim j As Integer = 0
For Each file As FileInfo In dir.GetFiles("*.*")
Do While i < 10
Console.WriteLine("{0} {1}", i, file.FullName)
While j < 100
j += 1
If j = 1 Then
Exit While
End If
If j = 2 Then
Exit Do
End If
If j = 3 Then
Exit For
End If
End While
Console.WriteLine("===After Do While loop")
i += 1
Loop
Console.WriteLine("===After While loop")
Next
Console.WriteLine("===After For loop")
End Sub
Try the code--you'll see that you can jump from the inner loop to any level of outer loop. This technique obviously has limited uses, but when you need it, it's nice to know you can use it. The alternative, of course, is to use a Goto statement to break out of an inner loop, and gosh, how we hate Goto statements!