Jeff W. Barnes

Ramblings on the .NET platform
posts - 228, comments - 69, trackbacks - 61
Microsoft Most Valuable Professional

Sunday, January 04, 2009

Alabama Code Camp - January 17th

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.

posted @ Sunday, January 04, 2009 6:49 AM | Feedback (2) | Filed Under [ Alabama Cloud Services Code Camp ]

Tuesday, November 18, 2008

MSDN Developer Conference

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.

posted @ Tuesday, November 18, 2008 2:31 PM | Feedback (0) |

Monday, October 27, 2008

Thoughts on PDC 2008 Keynote

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.

posted @ Monday, October 27, 2008 4:52 PM | Feedback (2) | Filed Under [ Cloud Services ]

Tuesday, October 21, 2008

Next TechMixer Scheduled for Nov 13th

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.

posted @ Tuesday, October 21, 2008 5:01 AM | Feedback (0) | Filed Under [ Alabama Birmingham Cloud Services ]

Monday, October 20, 2008

PDC 2008 Is Approaching

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
Keynote
 
 
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
WF 4.0: A First Look
151
 
 

Tuesday, October 28
8:30 AM - 10:30 AM
 
8:30 AM - 11:00 AM
Keynote
 
 
11:00 AM - 12:00 PM
Keynote
 
 
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
Keynote
 
 
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
The Future of C#
502A
 
 
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
 
 

posted @ Monday, October 20, 2008 9:14 PM | Feedback (0) | Filed Under [ Conferences Personal ]

Wednesday, October 01, 2008

MVP++

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. 

posted @ Wednesday, October 01, 2008 2:58 PM | Feedback (1) | Filed Under [ Personal ]

Thursday, September 25, 2008

EntLib 4.0 Presentation Materials

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.

posted @ Thursday, September 25, 2008 9:15 AM | Feedback (0) | Filed Under [ Presentations ]

Tuesday, September 09, 2008

Presenting for BSDA on Thu Sept 11

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.

posted @ Tuesday, September 09, 2008 2:10 AM | Feedback (0) | Filed Under [ Alabama Birmingham Cloud Services ]

Wednesday, August 20, 2008

TechMixer University WCF Presentation Material

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.

posted @ Wednesday, August 20, 2008 10:41 AM | Feedback (0) | Filed Under [ Alabama Birmingham Cloud Services WCF ]

Monday, August 11, 2008

Sara Ford Presenting in Birmingham on 8/25

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.

posted @ Monday, August 11, 2008 9:04 PM | Feedback (0) | Filed Under [ Alabama Birmingham Cloud Services Visual Studio ]

TechMixer University – August 19th

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.

posted @ Monday, August 11, 2008 8:46 PM | Feedback (0) | Filed Under [ Cloud Services ]

Monday, May 12, 2008

VS2008 and .NET 3.5 SP1

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!

posted @ Monday, May 12, 2008 9:29 PM | Feedback (0) | Filed Under [ Announcements Visual Studio ]

Thursday, April 24, 2008

BizTalk Server 2006 R3 Announced

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. :)

posted @ Thursday, April 24, 2008 12:07 PM | Feedback (0) | Filed Under [ BizTalk ]

Wednesday, April 09, 2008

MVP Summit Next Week

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.

posted @ Wednesday, April 09, 2008 10:27 AM | Feedback (0) | Filed Under [ Cloud Services Conferences Oslo ]

Tuesday, March 18, 2008

To StringBuilder Or Not To StringBuilder

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.

posted @ Tuesday, March 18, 2008 5:14 AM | Feedback (4) |

Powered by: