Sunday, January 04, 2009
It's that time again. The next Alabama Code Camp has been scheduled for Saturday, January 17th in Montgomery, AL at the Auburn University campus. The call for speakers is now open. Please stay tuned to the web site for additional information. The event is barely two weeks away. So, registration will probably open soon.
This should be a good opportunity to learn some new things and meet some new people. I hope to see you at the event.
Tuesday, November 18, 2008
For those of you that haven’t heard, Microsoft has recently announced the MSDN Developer Conference, which is a one day event that delivers that core content from the PDC. So, if you didn’t get to make it out to Los Angeles for PDC 2008, this will be your chance to get to see some of the primary content. The event will be held at several cities across the U.S. over the next couple of months. The fee is $99, which is quite reasonable.
On Tuesday, December 16th, I will be speaking at the Atlanta event. I will be co-presenting with Chad Brooks for the “Lap Around Windows Azure and the Azure Service Platform” session. Glen Gordon recently blogged about several perks for attending the conference including a lot of nice giveaways. If you are interested in keeping up with the future of the Microsoft .NET platform and peripheral technologies, you should make time to attend.
I hope to see you at the event.
Monday, October 27, 2008
Microsoft formally kicked off the PDC event this week with Ray Ozzie delivering the keynote address. I was fortunate enough to land a seat on the front row. As expected, some new initiatives were finally unveiled: Windows Azure. Azure is the new cloud services platform, which has an extremely compelling story. Essentially, this is an effort to push the hosting of application from inside the enterprise to the cloud. Don't be fooled into thinking that this is only referring to web applications. Azure expands well beyond the scope of mere web applications. It will offer a platform for inexpensively hosting applications, databases, and more.
Based on what has been shown so far, it appears to be a very simple and seamless development experience. Developers are still capable of locally developing and debugging applications on their desktop. After the solution is ready to be deployed, you merely have to go to the Azure portal to create an application environment and upload the solution as a package.
Where all of this stuff starts to get interesting is the scalability aspect. So, you need to scale your application up for an increased number of users? No problem. All you need to do is modify your configuration to specify a higher number of nodes. Azure takes care of all of the dirty work behind the scenes. It will be interesting to see whether all of this works as well as advertised. If it pans out, I can see this as being overwhelmingly compelling for small companies all the way to large enterprises. Imagine not only the cost savings, but the how much easier it would be to avoid the headaches of setting up your own major infrastructure in house.
However, I still think trust is going to be a major factor. There are many businesses that are understandably reluctant to let someone else house their data. It will take some time to build up trust and convince many organizations that this is a viable option. However, I am starting to believe that the cost savings could be a compelling argument to give it a try. Nevertheless, security will be a concern at the forefront of this platform. I am anxious to hear more about the security aspects of the platform later this week. More importantly,I am incredibly eager to get my hands on the CTP and give it a test drive.
What do you think? I'd love to hear the comments of others.
Tuesday, October 21, 2008
For those technology professionals in Birmingham and surrounding areas, take note that the next TechMixer has been scheduled for Thursday, November 13th. It will be held at the Innovation Depot from 5:30 PM to 8:30 PM.
In case you aren't familiar with it, this is one of the area's largest technical networking events. There will be booths to represent all of the area user groups as well as several technical companies. Each iteration of the event has turned out a larger and larger crowd. There is usually free finger foods as well as a cash bar. So, load up on business cards and come on out to meet some new people.
Be sure to visit the registration site and RSVP.
Monday, October 20, 2008
It is getting close to time for PDC, and I have been giving some thought to the sessions that I want to attend. There are too many scheduling conflicts to make all of the ones that interest me. So, I have tried to strike a balance between my focus areas and some things a little outside of my comfort zone. Given the breadth of the technologies that will be presented, I wanted to get a broad mix to try and understand the vision of where things are going over the next year or two. Considering all of the pending announcements, it is certainly promising to be a very exciting week.
For those that are interested, I will be blogging and using twitter quite a bit for the duration of the event. If you want to meet up and talk tech for a while, feel free to ping me. Here is my tentative schedule of sessions that I plan to attend, but it is certainly subject to change.
Sunday, October 26
| Sunday Evening |
Party with Palermo |
Monday, October 27
| 8:30 AM - 10:30 AM |
|
| 8:30 AM - 11:00 AM |
|
| 11:00 AM - 12:15 PM |
Under the Hood: Advances in the .NET Type System
151
|
| |
| 12:45 PM - 1:30 PM |
Microsoft Expression Blend: Tips & Tricks
408B
|
| |
| 1:45 PM - 3:00 PM |
Microsoft Visual Studio: Bringing out the Best in Multicore Systems
502A
|
| |
| 3:30 PM - 4:45 PM |
ASP.NET MVC: A New Framework for Building Web Applications
153
|
| |
| 5:15 PM - 6:30 PM |
|
Tuesday, October 28
| 8:30 AM - 10:30 AM |
|
| 8:30 AM - 11:00 AM |
|
| 11:00 AM - 12:00 PM |
|
| 11:00 AM - 12:30 PM |
|
| 12:45 PM - 1:30 PM |
WCF: Zen of Performance and Scale
515B
|
| |
| 1:45 PM - 3:00 PM |
SQL Server 2008: Beyond Relational
406A
|
| |
| 3:30 PM - 4:45 PM |
Microsoft Silverlight Futures: Building Business Focused Applications
153
|
| |
| 5:15 PM - 6:30 PM |
Entity Framework Futures
151
|
| |
Wednesday, October 29
| 8:30 AM - 10:00 AM |
|
| 8:30 AM - 11:00 AM |
|
| 10:30 AM - 11:45 AM |
WCF 4.0: Building WCF Services with WF in Microsoft .NET 4.0
151
|
| |
| 12:00 PM - 12:45 PM |
Improving Code Quality with Code Analysis
409A
|
| |
| 1:15 PM - 2:30 PM |
Modeling Data for Efficient Access at Scale
403AB
|
| |
| 3:00 PM - 4:15 PM |
|
| 4:45 PM - 6:00 PM |
WF 4.0: Extending with Custom Activities
408B
|
| |
Thursday, October 30
| 8:30 AM - 10:00 AM |
Parallel Symposium: Addressing the Hard Problems with Concurrency
515A
|
| |
| 8:30 AM - 9:45 AM |
|
| 10:15 AM - 11:30 AM |
Microsoft .NET Framework: CLR Futures
153
|
| |
| 10:15 AM - 11:45 AM |
|
| 12:00 PM - 1:15 PM |
"Oslo": Building Textual DSLs
502A
|
| |
| 12:00 PM - 1:30 PM |
|
| 1:45 PM - 3:00 PM |
An Introduction to Microsoft F#
502A
|
| | | |
Wednesday, October 01, 2008
I was just informed that I have been awarded again as an MVP for 2009 in Connected Systems. This is something that I certainly regard as an honor considering the extent of distinguished talent in the ranks of the MVP program.
It is going to be an exciting year for Connected Systems with Oslo around the corner among many other advancements in areas such as BizTalk, WCF, and WF. Even outside of Connected Systems, there is a plethora of interesting topics: Visual Studio 2010, .NET Framework 4.0, F#, Parallel LINQ, Iron Ruby, Iron Python, etc.
It is an exciting time to be a developer on the Microsoft platform, and I am honored to be in a privileged position where I can leverage additional resources to engage and assist the community.
Thursday, September 25, 2008
It took me a lot longer than expected to post this material. I am beyond overloaded between work and personal stuff that is going on right now. At any rate, the presentation slides and code can be downloaded here.
Keep in mind that the code requires Enterprise Library 4.0 to be installed, which can be downloaded from CodePlex at the following link: http://www.codeplex.com/entlib. Be sure to look at the QuickStart sample projects that are installed with the library. A couple of them are the ones we looked at during the presentation. These are a great guide to getting started and learning more about the features.
You should also check out the community project: http://www.codeplex.com/entlibcontrib.
Tuesday, September 09, 2008
I meant to blog about this last month, and it completely slipped my mind. On Thursday, September 11, I will be presented for the Birmingham Software Developer Association. The meeting will convene at 6:30 PM at New Horizons. I will be delivering a presentation that provides an overview of the major features in Enterprise Library 4.0. Obviously, due to the breadth of functionality, this will be a high level survey that only gives a teaser of what Enterprise Library has to offer.
Here is the abstract:
Enterprise Library is a collection of application blocks provided by the Microsoft Patterns & Practice Team. These application blocks are essentially "infrastructure modules" that can be used "as is", extended, or modified to assist with solving common development challenges such as database access, logging, validation, and more. In this presentation, we will survey the major features that Enterprise Library has to offer by taking a look at both pros and cons of the most commonly used application blocks.
Wednesday, August 20, 2008
Yesterday, the first ever TechMixer University was held at the BJCC. Hats off to the organizers of the event. It seemed to be very well planned and coordinated. Everyone that I spoke with was enjoying themselves. I hope there will be more of these events in the future. They are great for building the overall technical community in the Birmingham area.
Right after lunch, I gave a presentation entitled "Hit the Ground Running with WCF Services." It was an introduction to some of the core concepts in WCF. Based on a rough estimate, I would say about 40 or so were in the session. I greatly appreciate the feedback that I received from several attendees. Hopefully, it will ease the learning curve for some of you.
As promised, I have posted the slides and code for my presentation. You can download it here. If you have any questions, feel free to ping me at jeff _ at_ jeffbarnes.net.
Monday, August 11, 2008
There will be a special presentation by Sara Ford on Monday, August 25th about Visual Studio IDE Tips and Tricks. For those of you that don’t know, Sara Ford maintains the popular blog Visual Studio Tip of the Day and works on the CodePlex team. She will be passing through the Birmingham, AL area after the DevLink event and has graciously agreed to drop by and give a talk to the area. It will be held at the Southern Living Auditorium on the Southern Progress Campus located at 2100 Lakeshore Drive. Here is a link to the event registration with complete details: https://www.clicktoattend.com/invitation.aspx?code=130429
Those of you that know me are already aware how I am a big advocate of time savers in the IDE. This will be a great opportunity to learn a few things to add to your bag of tricks for getting things done in Visual Studio. I hope to see you there!
Here is the abstract for the presentation:
Performance improvements begin by speeding up the simple task you do every minute of every hour of every day you use Visual Studio. Just like a coin jar where you place your spare change, you’ll see the time you save add up into the days, weeks, and into the months. This talk provides the best of the best, 21 tips that can be used in any language, which stretched across your 3 primary activities in the IDE: coding, customizing, and debugging.
Sara Ford is the program manager for CodePlex, Microsoft’s open source project hosting site. Prior to CodePlex, she worked on the Visual Studio team for six years, where she continues to run the Visual Studio Tip of the Day on her blog. Her life-long goal is to become a 97 year old weightlifter, so she can be featured on the local news.
On Tuesday, August 19th, TechMixer University will be held in Birmingham, AL. This will be a large community driven training event that covers a wide spectrum of technologies. The organizers have strived to offer a little something for everyone including developers, database professionals, project managers, and network professionals. The event also provides coverage of non-Microsoft technologies such as Oracle, MySql, and Ruby.
Even if you can’t attend the entire event, I would encourage you to drop by for one or two sessions that interest you. Visit the website for complete details: http://www.techmixeruniversity.com/TechMixer_University.html
I’ll be delivering a session on WCF entitled “Hit the Ground Running with WCF Services”. Here is the abstract:
Windows Communication Foundation (WCF) is a major advancement within the Microsoft .NET platform that allows for easily exposing units of functionality as services that are accessible via a broad spectrum of communication protocols. WCF has been built from the ground up around a highly flexible and extensible model that allows developers to concentrate on business problems rather than the details of communication plumbing. Write your business logic once and simply expose it over the necessary protocols via configuration without changing a line of code! If this sounds interesting, please join me for a crash course in the fundamental concepts of WCF. This session is packed with material and strives to significantly reduce the learning curve for those that are new to the technology by providing an introduction to major features and capabilities of the WCF platform.
Monday, May 12, 2008
In case you haven't heard, Microsoft has formally announced plans to provide a service pack (SP1) for Visual Studio 2008 and .NET Framework 3.5 by the end of the year. There is a long list of items that will be included, but the most notable one to me was the ADO.NET Entity Framework.
I'll avoid repeating all of the information here. My intent was to simply help propagate the information to the masses. For all of the details, go read Brad Abrams' extensive blog post about the framework portion of the news. The WebDev Tools Blog also has a long blog post that details more of the Visual Studio portion of the release. You should also listen to the latest episode of Dot Net Rocks (Show #340). Carl Franklin and Richard Campbell interviewed Brad and Omar Khan about a lot of the details.
Over the next few months, I will be closely following this release and tinkering with the betas as much as possible. Once EF is officially released, I'm hoping to get it into my production environment as soon as possible.
It is an exciting time to be a .NET developer!
Thursday, April 24, 2008
In case you haven't heard, it was formally announced that a new release of BizTalk Server 2006 is being planned to provide better support for Windows Server 2008, SQL Server 2008, and .NET Framework 3.5.
Here are the major highlights:
- New web service registry capabilities with support for UDDI (Universal Description Discovery and Integration) version 3.0
- Enhanced service enablement of applications (through new and enhanced adapters for LOB applications, databases, and legacy/host systems)
- Enhanced service enablement of “edge” devices through BizTalk RFID Mobile
- Enhanced interoperability and connectivity support for B2B protocols (like SWIFT, EDI, etc)
- SOA patterns and best practices guidance to assist our customer’s implementations
The major goodness will still have to wait for Oslo. :)
Wednesday, April 09, 2008
Next week, the annual Microsoft MVP Summit will be held in Seattle. The event runs for four days and will be split between the Washington Convention Center and Microsoft's campus in Redmond. The majority of my focus will be on Oslo. At this point, I'm not sure how much of the information will be subject to NDA, but I will definitely pass along any interesting tidbits that are eligible for disclosure.
If nothing else, I'm sure that I will be twittering a lot during the week. So, you can follow along with what's happening via my twitter feed: http://twitter.com/jeff_barnes. I'm looking forward to the opportunity to hang out and speak geek with a number of other MVPs and Microsoft employees. It has been far too long since I have spoken with a number of those guys due to my crazy workload over the last couple of months.
Tuesday, March 18, 2008
Between work and stuff going on in my personal life, there hasn't been a lot of spare time for blogging and developer community things over the last few weeks. Hopefully, that will be changing in the near future. In the meantime, I wanted to squeeze in a quick blog post about something that came up today regarding StringBuilder.
It was pointed out someone on my team was concatenating several strings to build a query in a few methods. It is arguable whether these particular queries should be embedded in the source code, but that isn't what this post is about. It was requested that the developer modify the source code to use a StringBuilder rather than concatenating the strings. Generally speaking, I would agree with this approach as the StringBuilder is more efficient when concatenating several strings, but this wasn't one of those cases.
Consider the following two methods:
public static string LiteralConcatenationExample()
{
return "SELECT T1.Field1, " +
"T1.Field2, " +
"T1.Field3, " +
"T2.Field4 " +
"FROM Table1 T1 " +
"INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1";
}
public static string StringBuilderWithLiteralsExample()
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT T1.Field1, ");
sb.Append("T1.Field2, ");
sb.Append("T1.Field3, ");
sb.Append("T2.Field4 ");
sb.Append("FROM Table1 T1 ");
sb.Append("INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1");
return sb.ToString();
}
Which method do you think would be more efficient?
If you chose the second method, you should take a closer look at the generated IL:
.method public hidebysig static string LiteralConcatenationExample() cil managed
{
// Code size 11 (0xb)
.maxstack 1
.locals init ([0] string CS$1$0000)
IL_0000: nop
IL_0001: ldstr "SELECT T1.Field1, T1.Field2, T1.Field3, T2.Field4 "
+ "FROM Table1 T1 INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1"
IL_0006: stloc.0
IL_0007: br.s IL_0009
IL_0009: ldloc.0
IL_000a: ret
} // end of method Program::LiteralConcatenationExample.method public hidebysig static string StringBuilderWithLiteralsExample() cil managed
{
// Code size 90 (0x5a)
.maxstack 2
.locals init ([0] class [mscorlib]System.Text.StringBuilder sb,
[1] string CS$1$0000)
IL_0000: nop
IL_0001: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: ldstr "SELECT T1.Field1, "
IL_000d: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_0012: pop
IL_0013: ldloc.0
IL_0014: ldstr "T1.Field2, "
IL_0019: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_001e: pop
IL_001f: ldloc.0
IL_0020: ldstr "T1.Field3, "
IL_0025: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_002a: pop
IL_002b: ldloc.0
IL_002c: ldstr "T2.Field4 "
IL_0031: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_0036: pop
IL_0037: ldloc.0
IL_0038: ldstr "FROM Table1 T1 "
IL_003d: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_0042: pop
IL_0043: ldloc.0
IL_0044: ldstr "INNER JOIN Table2 T2 ON T1.Field1 = T2.Field1"
IL_0049: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
IL_004e: pop
IL_004f: ldloc.0
IL_0050: callvirt instance string [mscorlib]System.Object::ToString()
IL_0055: stloc.1
IL_0056: br.s IL_0058
IL_0058: ldloc.1
IL_0059: ret
} // end of method Program::StringBuilderWithLiteralsExample
As you can see, the string concatenation is considerable more efficient. This may be a bit confusing to some people as you have undoubtedly had it hammered into your head that a StringBuilder should be used when concatenating strings. Well, I would agree when you are dealing with dynamic strings that are built using parameters. However, literal strings are a different story.
Since this scenario is using literal strings, the compiler can optimize the values into one large string that can be loaded with a single load string operation (ldstr). If the code is modified to use a StringBuilder for each line of the query, it actually increases the number of operations by four for each line of the query.
In fairness, most situations will probably be dealing with dynamic strings, which would change this scenario back to favor the usage of a StringBuilder. However, you should keep in mind that a StringBuilder doesn't automagically give you a more efficient solution in every situation, especially if you are only concatenating a few strings.