Bill Blogs in C# -- Events

Bill Blogs in C# -- Events

Created: 1/10/2016 2:16:24 AM

I spent this past week at the 10th annual CodeMash conference in Sandusky OH. Every single event has been enjoyable, envigorating, and a great way to kick-start the year.

The event has changed dramatically over the past decade, but it still has the same core values from when it was started. It’s a group of people passionate about technology in many incarnations, and willing to share and learn from each other. Looking back at 10 years of CodeMash, several larger trends appear.

Early on, the languages discussed most were Java, C#, VB.NET, and Python. Over time, more and more interest in Ruby grew. Java waned for a time. Functional languages like F#, Haskell, and Erlang became more popular. There were a few Scala sessions.

More recently, the modern web became a focus: JavaScript, CSS and modern design techniques are now mainstays.

Interesting, for me, is that C# and .NET have always had a presence, and continue to be relevant and modern. Some of the most popular talks this year were on C# 7 and the upcoming ASP.NET 5 release. I’ve given a talk at every CodeMash. I’ve spoken on C# 3, LINQ, dynamic support in C# 4, async and await in C# 5, TypeScript, and C# 6 features. I’ve had a great time, and I hoe that the attendees have learned and enjoyed by talks.

I remember some of the amazing people that have been speakers at CodeMash: From Scott Guthrie, to Bruce Eckel, to Mads Torgersen, to Scott Hanselman, to Jon Skeet to Jesse LIberty to Lino Tadros to Katlhleen Dollard. I’m also sure I’m missing several prominent people that have spoken over the years. Carl Franklin and Richard Campbell have recorded several .NET Rocks! shows while in Sanduskey.

The attendance has grown from around 200 to roughly 2000. That still amazes me. It’s lost som of the feel of those early events. In the first few years, it always felt lie you knoew everyone. But, the current event does have the same culture, the same caring community, and the core group of friends are still there year after year.

Over the years, I’ve driven through ice, snow, and in some years Sptring like weather for CodeMash. My family has enjoyed the waterpark on the weekend after the event.

I want to congratulate the crazy dreamers that started CodeMash, and made it happen. It’s amazing to see what you’ve built, and how much fun the first 10 years have been.

Created: 4/11/2013 8:51:52 PM
Awesome. There's no other word. This was positively awesome. On the 10th, we built on the foundation we created on Tuesday. We spent the entire evening coding. The event was supposed to end at 10:00. Everyone asked for "15 more minutes to finish a couple cards". Two hours later, at 12:30 am, we finally left. The best part was that we had finished the key features we came to build. Tony Surma, Microsoft's CTO for disaster relief response said, "if a disaster hit tomorrow and I deployed this, it would get used already. It's better than what's in the field today." A lot of credit goes to some very dedicated people. First and foremost, credit goes to the conference attendees that were part of the hack a thon both nights. We didn't know what to expect, and as a result, we'll plan better in future. The folks were patient, and helped us drive the forward. We got great ideas, lots of energy, and most of all: Working Software. WP_20130410_009 Also, a quick tip of the hat to Aaron Skonnard and Pluralsight. Everyone that participated by making at least one checkin got a free month subscription to the entire Pluralsight library. Selfishly, I hope they learn more, and help us build more software for Humanitarian Toolbox. (Disclosure: I'm working on my first Pluralsight course.) Brian Randell did a lot of behind the scenes work to setup web hosted TFS for us. He also helped us test and work with the Git TF bridge so attendees could use whatever they felt most comfortable with. (And, he helped me get more familiar with TFS and it’s features.  He was a great help.) Three people deserve extra thanks: Ward Bell, Julie Lerman, and John Papa. The team wanted to apply what they were learning at the conference, and selected breeze, HotTowel, and Entity Framework Code First for this project. John, Ward, and Julie all gave up quite a bit of time to help. They paired with attendees, explaining as they coded, or guiding their pair (sometimes me) around the code and libraries involved. Pure bliss: Learning and building super useful software at the same time. WP_20130410_003 For examples of what they did, John told me he and Ward would "try to stop by for about 10 or 15 minutes" to help a bit. They were both helping for at least two hours. Julie stayed until she was in jeopardy of missing her flight. (She did make it). 756607639   We had quite the cast of characters show up and ask how they can get involved as this continues over time. At future events, you may see Phil Haack, Scott Hanselman, Damien Edwards and other familiar names helping out. All of those said they would have helped this time, had they known more about it earlier in the process. I can't close this "thank you" section without mentioning three other very important people. Mari Sessions took on every task that doesn't involve code (she's got a business background, not a developer background). I have no idea where she gets that much energy. She organized the room, promoted the event, walked up and down the halls asking random conference attendees if they wanted to participate. Arranged refreshments, made everyone feel welcome, and made the event happen. Tony Surma, Microsoft's CTO for Disaster Relief, kept us focused on the problem at hand. He's gone to disaster sites and written code while in the field. His experience and knowledge of disaster zones and the problems relief workers encounter in the field was invaluable. I'd be remiss if I didn't mention that he's also a super smart tech guy, and can just pitch in and make things work. Also, an extra hat tip to Microsoft.  They are providing free TFS hosting, Azure hosting, and other help supporting the effort. Furthermore, they are not mandating any technology decisions that we make. They are being a great partner to help us build software to solve real problems. And finally, without Richard Campbell, this doesn't get off the ground. I'm thrilled to be working with Richard on this. The reason is simple: when Richard gets behind an idea, things happen. Ideas turn into action. Tony started using the phrase "turn innovation into impact." That sums up Richard's contributions well. What we started only has meaning when it gets in the hands of real relief organizations during a (sadly) real disaster. When that happens, real lives are saved because those relief workers can do more. Richard brings energy, drive, and makes it happen. I'm glad he invited me to join. Finally, this last week can't be a one time event. It's got to be the start of long term commitments to create software that helps relief organizations respond to disaster events. Richard, Tony, Mari and I will be meeting in the coming weeks to go over what we learned. We're going to push code into release cycles. We're going to plan more events. We're going to create a plan to involve more people. Join us: When disaster strikes, code saves lives. If you're interested, signup at and well keep you informed.
Created: 3/28/2013 7:50:04 PM

I've always found that developers are very interested in contributing their skills and their time to help others.

I'm excited to be part of a new opportunity for developers to help others: The Humanitarian Toolbox.

The Humanitarian Toolbox  is the brain child of Richard Campbell, of .NET Rocks fame. The concept is to have developers create Open Source software projects that solve real problems for disaster relief organizations. A group of people, including Richard and I, have been working with global relief organizations to determine what they need most. We've already got a list of more than a dozen application ideas.

It's time to start building. We've picked the first project: a relief worker check-in system. This system would enable relief workers and volunteers to check-in and check-out at a disaster site. The field coordinators would have better information about the skills and the availability of relief workers, enabling them to better deploy the people that have volunteered their time to help. Relief workers and volunteers would get assignments and locations directly on their smartphone. The end result will be that relief workers are more efficient while on site, and more lives are saved.

We need developers that want to build this app.

Humanitarian Toolbox is hosting a hack-a-thon at DevIntersections. I'm working to organize the event, and help organize developers (like you) interested in participating. We plan to create a small proof of concept for the relief worker check-in system during the hack-a-thon. After the initial hack-a-thon, we want to enlist the broader community to continue building the app.

What's our deadline? We'd like it in place before the next natural disaster happens. We don't know when that will be, so we'd like to keep building and have it ready as soon as we can.

If you're going to be a DevIntersections, join us. Contribute your talent and help relief workers save lives. If you're not going to DevIntersections, there's still plenty to do to help. Follow us on twitter: @htbox or the hash tag for the event: #HtBox. We'll have plenty more software to build after the hack-a-thon. For us to be successful, we'll need to keep building and enhancing software for relief workers to battle the next crisis.

Write some code, help the world. Contribute to Humanitarian Toolbox.

Created: 1/7/2013 7:48:28 PM
We’ve partnered with Microsoft to host “Windows 8 Unleashed” in Ann Arbor on Thursday January 24th. This is a free event, sponsored by Microsoft, and hosted by SRT Solutions. Windows 8 Unleashed is a developer event focused on people that want to develop apps for the Windows store. (Surely you’ve seen the commercials for Windows 8 by now). The format contains 3 sessions where Jennifer Marsman and I will be explaining the principles of Modern UI Application development (what we formerly referred to as “Metro style apps”).  The afternoon is open lab time for you to create your Windows Store Application.  Jennifer and I (along with a few possible unannounced guests) will be available to help you over the rough spots. The first link above provide information about the event (including prize opportunities, and who doesn’t like free stuff). The second link is the registration page. Registration is free, but it will help us ensure we have enough room, and food for everyone that attends.
Created: 1/7/2013 7:48:28 PM
We’ve partnered with Microsoft to host “Windows 8 Unleashed” in Ann Arbor on Thursday January 24th. This is a free event, sponsored by Microsoft, and hosted by SRT Solutions. Windows 8 Unleashed is a developer event focused on people that want to develop apps for the Windows store. (Surely you’ve seen the commercials for Windows 8 by now). The format contains 3 sessions where Jennifer Marsman and I will be explaining the principles of Modern UI Application development (what we formerly referred to as “Metro style apps”).  The afternoon is open lab time for you to create your Windows Store Application.  Jennifer and I (along with a few possible unannounced guests) will be available to help you over the rough spots. The first link above provide information about the event (including prize opportunities, and who doesn’t like free stuff). The second link is the registration page. Registration is free, but it will help us ensure we have enough room, and food for everyone that attends.
Created: 12/14/2012 6:36:23 PM
We are excited to announce public classes for developers launching in January of 2013. Twice a month, we'll host .NET developer training classes for professional developers that want to grow their skills. Our curriculum is based on the wealth of material we've created to help .NET developers learn more about the C# language and environment. As readers of my blog, you're probably familiar with my books, videos and articles. But it's not just me. Patrick Steele has a regular column in Visual Studio Magazine. Many of our .NET developers have spoken at conferences and created content that we'll use in our classes. The format, the delivery, and the content are tailored for busy professional developers.  Each month, we'll conduct two afternoon sessions. One will be focused on a recent release to help developers learn the latest tools and techniques.  The second will be focused on mainstream releases to help developers become more proficient with the tools they are already using. Each session includes discussion and demonstrations. Most importantly, half the time will be spent on labs that provide guided experience on the topics being covered. We'll repeat sessions if there is enough interest. All the classes will be hosted by the experienced conference speakers that have been providing developers with great content for years. We're excited about this launch. It augments but does not replace our core focus: creating great software for our customers. Our area, like many locations, is experiencing a shortage of developers in certain areas, such as C# and .NET. That talent gap is slowing economic growth here. As Dianne and I have gotten more involved in the regional business community, we began looking for what we could do to help. The obvious choice is to help new developers in the community grow their skills. In fact, we’ve already hosted private classes for many of our customers. This launch enables us to reach a wider audience. Longtime readers of any of the blogs on our site know that SRT Solutions has a commitment to continued learning. We know that this industry moves fast, and we have to continue learning to stay relevant and move ahead. All our developers spend time learning new techniques and creating content. It helps us created create great applications for our customers. It also positions us to help other developers in our region.  Our goal for this new program is to train the developers that our growing regional companies need to grow. It's our way of closing the talent gap. You can learn more here. You can signup for the first two sessions here, and here. Finally, this effort doesn't stop with .NET.  We're also hard at work finalizing the curriculum for alternative languages on the JVM, HTML5/JS, mobile Development, and cloud based development. Those will be going live in the next couple months.
Created: 11/10/2012 2:51:24 PM

I’m finishing up my calendar and planning for next week. It’s a big week for developers here in Southeast Michigan. There are three big events you should attend:

Wed Nov 14th:  Windows 8 / VS 2012 Launch and InstallFest

This coming Wednesday, our local .NET developer group, AADND, is hosting an install fest / launch event for Windows 8 and Visual Studio 2012.  You can come and install Windows 8 and Visual Studio 2012 on your box. A number of people that have already worked with Windows 8 and VS2012 will be on hand to help, and to provide guidance. I’ll be there to help and to discuss the Open Source environment for Windows developers.

Thursday Nov 15th:  Doing Privacy Right. A workshop for app developers.

SRT Solutions is teaming up with the Association for Competitive Technology and the Mobile Technology Association of Michigan to raise awareness of privacy issues as it relates to mobile and app development.  We’ve got development experts, FTC officials, and legal and policy experts to help navigate what can be a complicated landscape. It is important information for developers to have at their disposal. I’ll be saying some opening remarks, and helping with Q and A on Windows 8 development.

Saturday Nov 17th: 1DevDayDetroit.

And the week ends with a full day of development goodness at Cobo Hall in Detroit. Dave McKinnon and Dave Giard have put together a strong program (well, I’m speaking too), and it promises to be a great day.  I am speaking on async / await features in C# 5 and what that means for .NET developers.

The first two events are free, and a great way to learn and grow your development skills.  1DevDayDetroit is $99.00. Check them out. All three events do require pre-registration. 

Created: 10/18/2012 12:26:09 AM

I’m thrilled to be enjoying a new experience at CodeMash 2013: I’ll be hosting a precompiler workshop on C# 5.0 async programming techniques.

I’ve spoken at every previous CodeMash, but this is the first time I’m running a half day workshop. I like the challenge of preparing a half day of async content, and taking participants on a larger journey. That’s what this is about: My goal, if you give me four hours, is to teach you to see async, await, Task<T> and related types the same way you see for, if, and foreach: tools you use every day. There’s quite a bit to cover, and I’m looking forward to every minute of it.  I hope you’ll join me.

You can see all the sessions here: They are a menus of awesome that’s better than a bacon bar.

Created: 10/18/2012 12:26:09 AM

I’m thrilled to be enjoying a new experience at CodeMash 2013: I’ll be hosting a precompiler workshop on C# 5.0 async programming techniques.

I’ve spoken at every previous CodeMash, but this is the first time I’m running a half day workshop. I like the challenge of preparing a half day of async content, and taking participants on a larger journey. That’s what this is about: My goal, if you give me four hours, is to teach you to see async, await, Task<T> and related types the same way you see for, if, and foreach: tools you use every day. There’s quite a bit to cover, and I’m looking forward to every minute of it.  I hope you’ll join me.

You can see all the sessions here: They are a menus of awesome that’s better than a bacon bar.

Created: 10/2/2012 7:11:14 PM

Thanks again to Carl and Richard for inviting me to come along to Omaha to join the awesome community in Omaha. I continue to believe that the strongest development communities are in the middle of the country. There are always strong crowds, engaged people, and good old mid-western friendliness. I’d love to see more of the big name conferences try locations in the Midwest.  There’s a huge untapped community of developers that would attend these conferences if not for the extra large travel expenses.  And, these developers are so energized that they are starting their own conferences in many of these locations.

Carl, Richard and I had a great discussion that is available here on .NET Rocks. We discussed how the software we create continues to change the world around us. My talk before the recording was around the concept that as developers our career is about changing the world and creating new possibilities. Software changes the way we do everything:

  • Delivering Health care has been radically changed by software.
  • Listening to music is completely different now that we buy music as files, not discs.
  • Watching TV and Video has been transformed by software.
  • Travel, retail, education.
  • Everything we is changed by software.

Our jobs are helping our customers create and adopt new workflows and new ways of leveraging software to make things better.

I talked about looking for different ideas, and being aware that often the best ideas are dismissed. As an example, I mentioned Steve Jobs fight to get the iPod released. His board fought him on that, saying that it had no market. The interview with Steve Jobs and Bill Gates that I reference is here. It’s long (2 hours or more), but it’s worth your time to listen to these giants of our industry discuss how they navigated long careers starting with home built computers on to the modern devices we now use.

The final point was why WinRT needs iTunes (or something like it). So many people use iTunes and and iPod (of some flavor) for their music source. Personally, I find much better value from ZunePass (now XBox live music). However, with the demise of the zune player device, those files aren’t portable. Music you download using your subscription is DRMed and can only be played on a linked device. I can’t plug my Windows 8 slate into my car. I can’t use it while I work out, or while I’m walking the dog. I need to get my music on an extremely portable device.

Today, that means iTunes and and iPod.

If I can’t do that on a WinRT device, I need another computer to manage my music library. That means I’m more likely to buy an Intel Windows 8 device, even if it’s only to manage my music. If I had a way to get my Zune music on a portable device (besides my phone), I’m set.

Created: 9/24/2012 8:29:34 PM
This will be a new adventure.  As you’ve probably heard, Carl and Richard are hitting the road again. They’ve asked a number of us to join them in different locations around the country as they do their thing. This time, I am joining them in Omaha, NE. I’m looking forward to this, because I’ve never  been there, so this will be a new experience for me. I’ve heard from Carl and Richard that they’ve had a very large number of people registered. I can’t wait to meet everyone, lift a jar or two, and discuss software development with a new community. Omaha, here I come!  See you Wednesday.
Created: 6/23/2011 6:02:45 PM

I’d had this feeling for a while that developers are in high demand in Michigan.  Earlier this week, I had confirmation on that during a meeting with some folks at the Michigan Economic Development Corporation (MEDC).

The MEDC, by working with growing firms, has learned that software development skills are in great demand in Michigan. They recently opened a state wide jobs portal, based on a version run by Ann Arbor SPARK over the last few years. After being open for a few weeks, over half of the jobs posted are software development, or IT jobs. There are 16 different (somewhat overlapping) categories, and still more than half of the jobs are IT and software jobs.

There are several reasons why software companies are migrating to Michigan. All of them are about the talent pool. Smart companies know that the manufacturing sector makes extensive use of technology, especially software. The auto companies have an especially strong background in leveraging software in all areas of their business. That gives the region more software developers than anywhere else outside of silicon valley. Several years ago, we began using the term “Lakeshoring” to describe bringing software development work to the Great Lake state. Companies are responding.  Systems in Motion opened an office in Ann Arbor and has hired by the hundreds. GalaxE Solutions has opened an office in downtown Detroit and is hiring at a pace that has ourperformed their own projections. Google has opened an office in Ann Arbor. Compuware has been a long time fixture in the Detroit area. QuickenLoans, while classified as a financial company, employs a large software development team.

But it’s not just large companies.  Ann Arbor alone has more than 100 software startups or second stage companies (like SRT Solutions). Grand Rapids also has a thriving software community.

The Software Community needs to answer this challenge

The software community needs to continue to ensure that we have the people that can step into these new jobs as they are created. We also need to demonstrate to those companies looking at Michigan that there is a wealth of talent ready to help them succeed. Luckily, we’re already doing much of work. We just need to keep doing the work, publicize it more, and attract more new members.

The obvious first task is to talk up the user groups. Many SRT developers, including me, have spoken to developer groups in Detroit, Southfield, Ann Arbor, Flint, Lansing, Kalamazoo, Grand Rapids, and Traverse City. We’ve talked to students at Michigan, Michigan State, and Michigan Tech.  If you’re here, find a group that interests you and start participating. You’ll learn the skills you need for your next career challenge. If you’re already attending a group, tell your friends. I recommend every developer should find a group to attend. That’s especially true if your considering a job change. Every meeting I’ve attended includes job announcements. You’ll learn more about software development, meet friends, and learn about new opportunities.

We need to promote our regional conferences more. We’ve got GiveCamps, Day of .NET events, CodeCamps, CloudDevDays, The Kalamazoo X Conference, and more that I’ve probably missed. We need to continue inviting new developers to these events, and make it easier for people that want to update their skills to attend.  We need to publicize these events to state leaders that are in the business of attracting companies to the area. I’ve been here a long time, and I know how strong and vibrant our development community is. We need to get that information in the hands of the economic development teams attracting companies to our area.

Finally, we need to do more to encourage the next generation of software developers to consider a career in Michigan. Get involved with one of the universities. Ask to be a guest lecturer to students in Computer Science or Software Engineering. Tell them about the opportunities, and the vibrant software community here. Get them to investigate opportunities here in addition on both coasts.

The software industry has already been an important driver in Michigan’s economic renaissance. It can continue to enjoy that role if the software developer community helps to do more to promote itself and our location. What other ideas can you come up with? If you have ideas, follow up with me on twitter. Let’s show the world how strong our software development ecosystem is.

Created: 5/12/2011 3:47:01 PM

I’m thrilled to announce another event in the SRT Software Development Series.

Paul Sheriff, a fellow Regional Director, and author of an immense amount of developer content, is coming to Ann Arbor for a one day class on Silverlight. “From Zero to Silverlight” teaches developers the fundamentals of Silverlight, and gets them started on the road to being highly productive Silverlight developers.

This class will be held on June 7th, at SPARK Central, just a block from SRT Solutions.

If you’re interested in becoming a better Silverlight developer, or you’re interested in being a Silverlight developer, you need to attend this class. Learn more, and sign up here.

Created: 3/22/2011 2:11:57 AM

We’ll be hosting two seminars by Richard Hale Shaw, a long been a mentor and colleague, at SPARK Central on Friday May 27th (details below, registration link here.)

Habits of Successful Software Developers

For Software Developers, success comes in a variety of forms:

Shipping a new product – or a new version of it – on-time and under budget with an acceptable minimum number of defects;

  • Confidence in being able to define a problem and implement a solution;
  • Understanding  – and internalizing – User’s requirements (even when they don’t know this themselves);
  • Writing easily understood, easily modified code with sufficient commenting, Unit Tests, and regular check-in.

There’s more…but these are all traits of successful software development, the results that are produced by successful programmers. The question is: how do you get there? How do you become a developer that delivers this way?

The operative word: Habits.

In this highly interactive session, Richard will lead you through an iterative process of discerning many (but not all) of the traits or characteristics of Successful Software Developers. We’ll then look at why those characteristics are found and what habits had to be put into place to develop them. Then examine what these habits are, how you create them and how you ensure that they take root and grow – and to do so, Richard will draw off of nearly 28 years of programming, development, team leadership, consulting and other experience in the software industry.

If you’re unhappy with whom you are as a programmer, or think that you can vastly improve your ability to perform as a software developer, you’ll not want to miss this session.

On Time and Under Budget: How to Stop Missing – and Start Meeting – Software Project Deadlines

What’s your biggest challenge as a software developer?

Maybe you think it’s learning and developing new skills, or keeping up with the latest technologies and tools? These can be tough – but an abundance of resources (such as books, training, and conferences – not to mention help from colleagues) is available. Or perhaps you’d say that requirements gathering and analysis is difficult? Granted, collecting, organizing and internalizing your understanding of users’ needs isn’t easy. But there are lots of great methodologies at hand that are designed to help you address just this issue.

So let me ask the question another way: if brought before a jury of your peers and accused of delivering your software projects on time, would there be enough evidence to convict you?

It’s likely that the answer is no – and that this may be your biggest challenge as a software developer.

Arguably the biggest problem facing every software developer – not to mention entire teams and perhaps the entire industry – is that of setting and meeting deadlines. The issue is a complex one: without deadlines projects would likely languish; but deadlines are often set by almost anyone other than the developer or team that’s responsible for meeting it. And while deadlines are supposed to be inflexible, product feature sets appear to be highly flexible – and completely out of our control.

In this highly interactive session, Richard will help you look at deadlines as contracts – where a contract is an agreement by both parties, and not open to change by one party without the other’s consent. We’ll talk about why deadlines are valuable – and to whom – when you should set them (or at least, agree to them) and when you shouldn’t. We’ll look at how deadlines are set, how they’re changed, who gets to change them – and why.

Finally, we’ll look at a number of strategic solutions and tactics that you can implement, turning deadlines from impossible tasks into achievable goals.

Created: 2/18/2011 3:17:51 PM

I was lucky enough to be invited to speak at the Windows Azure Boot Camp in Grand Rapids. I presented along with Dennis Burton, and Jason Follas. I covered Azure Queues, Azure AppFabric, and the closing session on migration strategies into the cloud. (You can download the materials at the boot camp site.

I enjoyed the trip. There was a lot of enthusiasm for the Azure, and for moving applications into the cloud. I’m thrilled to see our region building momentum behind cloud and Azure adoption.

Here are my key take aways from the sessions I delivered:

Azure Queues

Azure Queues are conceptually like a queue data structure. Obviously, most developers don’t need a full session to discuss a queue data structure, so there must be more here. In the case of Azure queues, that’s additional features for redundancy and persistence, and a protocol to ensure that messages are always processed: never started and then dropped.

Azure queues are a persistent and redundant data storage (like blobs and tables). All the instances of your application’s roles can access the logical queue. If a node storing a physical queue is rebooted (for a service upgrade, or some other hardware or software failure), the queue does not lose any of the messages. Other copies are still available, and the redundant node will come back, or migrate to a new VM if the node has a serious hardware failure.

The protocol for processing messages requires you write some defensive code when processing queues. Message processing is a three step process:

  1. Your worker role calls GetMessage() to retrieve a message. This retrieves message from the queue, and marks the message as in process. That means the queue storage will not hand that message to another worker role.
  2. Your worker role does the work represented by the message.
  3. Your worker role calls DeleteMessage to remove the message from the queue. This permanently removes the message. It’s done.

This three step process allows Azure queues to help you ensure that all messages are processed completely. If your worker role fails to finish processing, and doesn’t call DeleteMessage (within the specified timeout), that message moves back from the In Process state to the waiting state. The message now will be processed by another worker role.

Point to remember:  DeleteMessage() must be the last method call you make when you process a message.

Of course, a catastrophic failure may not be the only reason a queue message does not get completely processed.  Your worker role may simply exceed the timeout. In that case, the queue still marks the message as un-processed, and hands it to another worker role.  This does mean it is entirely possible for queue messages to be processed more than once.

Point to remember:  Azure queue messages will be processed at least once.  They may be processed more than once, due to timeouts. Ensure that your message processing code is idempotent. Processing a message twice (or more) must produce the same result as processing a message once.

Windows Azure AppFabric

AppFabric can be hard to describe. There are a lot of nuanced features under the AppFabric umbrella.  There are many different ways to use it to produce applications that are a combination of on-premise and in the cloud services. I find this session one of the harder ones to discuss. There’s just so much and so many different scenarios. It’s easy to give this session and leave attendees with spinning heads at all the possibilities.

I finally came up with a quick phrase that, while not strictly accurate, does get your head in the right space:

AppFabric is the Conjunction Junction of Windows Azure: It’s job is hooking up services, and making them run right.

Of course, that is obviously a simplification. But, it is a useful way to think about AppFabric. If your design calls for services running in different locations, and you want to have those services connect to each other, AppFabric is the right tool. AppFabric also helps with connecting peer-to-peer services. It’s got components and features that help with authentication and authorization.

In general, when different services need to find each other, and the end goal is having those two services speak directly to each other, starting the conversation by having AppFabric connect the two services is the right choice.

This is also a tough session, because the AppFabric is still in CTP mode, and new features and changes are coming quickly. I did have trouble practicing one of the demos because of the updated AppFabric portal release. I like the new portal much better, but I haven’t found all the features in it yet.

Strategies to migrate applications to Azure

The final session was is the one that discusses ways to migrate your existing applications and services to Azure. It discusses different ways to take large enterprise applications, decompose them into services, and migrate those services where you will get the most return quickly.

The key point: The Azure platform includes many ways to communicate between services on premises and in the cloud. The best way to get your applications in the cloud is to pick the service with the best ROI and move it. Rinse, and repeat with the next component or service. I do think this is one of the most important differentiators between Azure and Amazon’s EC platform. The same migration strategy requires much more work on the EC platform than it does on the Azure platform. You’ll need to build the communications infrastructure that is already part of Azure.

Dennis and I will be involved in two more Azure Bootcamps: April 13,14 in Southfield MI (near Detroit) and April 20-21 in Downers Grove, IL (near Chicago)

Current Projects

I create content for .NET Core. My work appears in the .NET Core documentation site. I'm primarily responsible for the section that will help you learn C#.

All of these projects are Open Source (using the Creative Commons license for content, and the MIT license for code). If you would like to contribute, visit our GitHub Repository. Or, if you have questions, comments, or ideas for improvement, please create an issue for us.

I'm also the president of Humanitarian Toolbox. We build Open Source software that supports Humanitarian Disaster Relief efforts. We'd appreciate any help you can give to our projects. Look at our GitHub home page to see a list of our current projects. See what interests you, and dive in.

Or, if you have a group of volunteers, talk to us about hosting a codeathon event.