Enter your email address:

Delivered by FeedBurner

Zune v2


The new Zune's are out. The tv ads are quite 'abstract'. You should check them out on YouTube (or wherever). The famous pink bunny one is my favorite.


Video: Zune TV Spot

There are some great new features. I like the new zunePad interface (since I still have a v1, I looked at the V2 hardware in the store). But my favorite feature is the new wireless syncing. I have been asking for this feature for years. I want to leave the Zune in my car, and when I pull into the garage, have it connect to my computer over wifi to sync. That's just awesome! And there is awesome support for podcasting. A great feature there is that you can unsubscribe form a pod cast on the device. When you go into the marketplace, there are hundreds of podcast series available, most for free. You can also provide your own URL if you want. You can change some settings for each series. Such as how many of the shows to keep (from just the newest one, to all of them), what order they should be played in, and when/how they should be sync'd (for example, only sync unlistened/partially listended to episodes)

The new colors and models (flash based, and new hard drive sizes) are cool too. But the brown is still my favorite. Hear that world? BROWN is my favorite.

Oh, but what is the iPod killer feature? (And I am saying this having never used or owned an iPod before, so I have little or no credibility.) It seems that every year or so, Apple releases new iPod models ('innovation'). These new features are only on the new models. So if you want that new feature (audible support perhaps), you have to buy a new iPod. All of the new features that are now dependent on v2 hardware (tv out) (wireless sync is v1 compatible) are downwards compatible to the Zune v1. Yes! I just have to update the software/firmware, and I get all of the new features. (well, except for the new zunepad interface thingy, which is a physical feature after all). I don't want to take anything away form Apple's iPod success, but it seems that the iPod is a treadmill. The new versions come out, and you have to buy a new one to get that new feature. I haven't heard of any of these devices every being forward compatible or upgradeable. That is an awesome story. There are lots of people buying three or four units from woot (v1 zunes for $85 or so). That's a great deal.

This v2 is a complete overhaul of the hardware, the ROM, and the desktop software. I can't wait to see quicker releases with new features more than once a year. But, since xmas is the driving force for buying these, I bet the major feature releases will still target the holidays.

The new desktop software/online presence is awesome! There is the social, a zunecard (like xbox cards), watch what your friends are listening to so you can sample or buy it. I like the now playing interface. Its a poster wall of the cover art of all of your albums. Elements appear and fade as needed. Very minimalist while not being bare.


Anyway, you have to check this stuff out. The UI is smooth, fast, really cool. I have over 4500 pictures on my zune. With the old software, it was really slow. The new software doesn't skip a beat.

The Zune team has done a truly fabulous job.


Oh, and did I mention it can now wirelessly sync?

CodeMash Early Bird Pricing about to fly the coop


CodeMash v2.0.0.8 is coming quicker than you know. The Early Bird pricing is going to close on November 15th. After that, the price will rise form $125 to $175. Alumni will still be able to register for $110 until December 15th. If you haven't received your alumni code, please let us know.

The final session list has been published as well. We will soon announce the keynoters (big drum roll) over the next few weeks.

Go register already!


Columbus BizTalk 2006 R2 Launch

Labels: ,

The launch event in Columbus was yesterday. I think it went very well. I was excited to see the room packed, and we had a lot of great conversations around BTS, SOA, and WCF. Several people asked for the decks. I believe MS will be sending them out to the attendees, but I will post them here (at least the ones I used) here as well.

And congratulations to William for winning the Xbox 360 Halo 3 Special Edition! 

Oslo bound!

Labels: , , ,

No, I am not taking a trip to here, here, or here.

Oslo is the codeword (gosh, I love code words for products. I still think of VS2005 as Whidbey.) for the next generation of SOA enabling products and technologies from Microsoft. Oslo was recently announced at the SOA conference in Seattle, WA this week. Oslo is a very small word for something so big.

I have been fortunate to be involved in some groups that get to provide feedback and input into the shaping of this strategy. And it has been killing me not being able to even talk a little bit about it. I have to be careful and only talk about what MS has been public about.

Parts of Oslo are the next versions of BizTalk, WCF, WF, Visual Studio, and a whole raft of other technologies that CSD are trying to bring into alignment.

The MS platform provides a bunch of great techs today to do SOA, and build ESBs. The current problem is that the toolset is rich, but not well aligned. These investments will make these solutions that much easier to build, and much more valuable.

One of the major underpinnings of this strategy is bringing modeling to the next level. There have been many, many attempts at modeling over the years, and the past of modeling is a MadMax-esuqe wasteland littered with the corpses of models and obtuse languages. The first modeling tools I have really liked were the class designer in Whidbey, and the workflow modeling with WF and BizTalk.

These models are the new abstraction layers. It all started with assembly, then c/c++, then c#. Each time moving a little farther away from the AX register, and making the developer better, faster, and cheaper. Now we are moving up the food chain, in a big way. We need to declare what the system needs to do (ala XAML and LINQ, saying what I want done), and move away from imperative development (saying what I want done, and how I want it done.) Let the platform figure out the HOW. As an enterprise developer charged with delivering value to the business, I just want to focus on the WHAT.

MS hopes to elevate models even farther, and make modeling a first class citizen across your systems. Many times models only apply to one part of the process, one role on the team. The models I mentioned above are like this. Only the developer uses the class designer. A business user doesn't, an IT operations manager doesn't, and a wacky cartoonist doesn't either. Models will stop representing the application; a poor reflection, and become the application. BizTalker's are used to this, as we see the orchestration as the application in some senses. What MS is talking about here is a 10x leap in the concept.

Well, we don't want models littered all over the place. So they have announced that they will unify and streamline several different repository technologies across the platform. This is pretty exciting, once you dig into the details. The repository will be much more than just a UDDI style directory of services, but exist as a place to house the models, and related meta data.

As I often say to my MS friends when I get to see this tech, "I wish the future was here now." I am just not patient.

Through a lot of the meetings that I have been in with MS about these future products and plans, I have seen a significant concern about leaving no model behind. Customers have been burned in the past when their investments wouldn't migrate forward with the new tech. I think they have learned their lesson, and will make sure that all of the investments customers have made in the platform will move forward easy. 'Pay it forward!'. :) If they don't, from a sales and marketing position, they open themselves up to a 're-evaluation' project with some customers. Just think, if you had to re-engineer all of your workflow's and business logic around doing-what-you-do, you would at least take a look at the market before blindly jumping into the next version.

The things I am concerned about are two fold:

- Will all of these new innovations move me forward from where I am with BizTalk, or will there be a new pain path to get back to where we are already. This is a major new move. Bigger than WCF and .NET 3 in my opinion. Some of this is re-engineering of what we have, it has to be. I want to make sure that I can do everything I can do today, and more, in the new world. I don't want a 1.0 world, I want a 6.0 world. And let me tell you, I have recent experience in delivery a new system that just simply does what the old system does. On the surface it seems as the easiest project. It's a huge iceberg though. One of the hardest types of projects you can do.

- Second, these tools and platforms MUST support an agile business, and an agile IT shop. Not just agile developers. I must be able to model, deploy, unit test, and refactor easily. This is what will draw over the biggest competition.

Who is the biggest competition? The developer who wants to write code the old fashioned way.

Jeff's first JUXtapose

Labels: ,

Jeff Blankenburg, the Dev Evangelist for the Microsoft Heartland District has launched a new screencast series titled JUXtaposed. JUX stands for Jeff on User Experience. Or Jeff Unglues Xylophones.

His first screencast is a quick 10 minute walk through of some simple animation in XAML using Expression. What I like about his 'cast is that it isn't perfect. Smooth demos are nice, but when there are small mistakes, the speaker gets to show you how to debug and fix things. That is a very handy skill when you are trying to learn something new.

I hear he is going to do 25 of these.


The best part? He chose to pimp CodeMash by animating our logo! And it only took him 10 minutes. Thanks Jeff.

CodeMash Speaker Announcements : Round 2


Ding Ding!

The content group for CodeMash has released another set of speaker confirmations. We have some rocking content this year. I know the content team is working hard to have a diverse set of talks, that really spans across all of the platforms we are targeting. They even have a special view in their database to monitor the distribution of talks across platforms.

So, without further ado:

Leah Culver: "Getting Started with Django"
Leah Culver founded Pownce with her friends Kevin Rose and Daniel Burka as a way of sending messages, links, files and events to each other. Leah is the lead developer for the site, which has become one of the largest sites using the Django framework Leah loves the challenge of developing a web application from scratch and writes about her experiences as a software developer at leahculver.com.

Kevin Dangoor: "Overview of the Dojo JavaScript Toolkit"
Kevin is the product manager at SitePen and the founder of the TurboGears open source web application framework. He has held positions in software development, management and sales engineering. He has previously spoken at CodeMash, PyCon, EuroPython and GLSEC and is the co-author of the book "Rapid Web Applications with TurboGears".

Catherine Devlin: "Crash, Smash, Kaboom Course in Python"
After a wasted youth studying chemical engineering, Catherine accidentally became a database administrator in 1999 and began tying web applications to her databases almost immediately. She works for IntelliTech Systems at Wright-Patterson Air Force Base, programming and maintaining small-scale, database-centered web applications.

Keith Elder: "Introduction to WFF" and "Building Custom Workflow Activities"
Keith Elder is a Team Leader / Sr. Software Engineer for Quicken Loans, the nation's largest online mortgage lender based in Livonia, MI. At Quicken Loans he is the team leader, lead developer and architect for a custom built in-house Smart Client CRM (client relationship management) application. As a Microsoft MVP he speaks throughout the South and Midwestern parts of the United States at various Code Camps, .Net User Groups, technical conferences and schools.

Joe O'Brien: "Ruby - Testing Mandatory"
Before helping found EdgeCase, LLC, Joe O'Brien was a developer with
ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.

Jay Pipes: "Performance Coding Techniques for MySQL"
Jay is the North American Community Relations Manager at MySQL. Author of Pro MySQL, Jay has also written articles for Linux Magazine and regularly assists software developers in identifying how to make the most effective use of MySQL. He has given sessions on performance tuning at the MySQL Users Conference, RedHat Summit, NY PHP Conference, OSCON and Ohio LinuxFest, among others. In his abundant free time, when not being pestered by his two needy cats and two noisy dogs, he daydreams in PHP code and ponders the ramifications of __clone().

Brian Sam-Bodden: "Rails: A Peek Under the Covers" and "Bitter Java? Sweeten with JRuby!"
Brian Sam-Bodden is the author of two Java titles; a frequent speaker at
national and international conferences, a professional trainer and a
full-time member of the NoFluffJustStuff symposiums. Brian is passionate
about clean, concise and understandable software and enjoys hacking away with Java and Ruby.

Chris Judd: "Agile Development with Groovy and Grails"
Christopher Judd is the president and primary consultant for Judd Solutions, LLC. (www.juddsolutions.com), international speaker, open source evangelist, Central Ohio Java Users Group (www.cojug.org) coordinator and co-author of "Enterprise Java Development on a Budget" and "Pro Eclipse JST". He has spent ten years developing software in the insurance, retail, government, manufacturing, service, and transportation industries. His current focus is consulting, mentoring and training with Java, J2EE, J2ME, web services and related technologies.

James Ward: "RIAs - Beyond the Buzz"
James Ward is a Technical Evangelist for Flex at Adobe and Adobe's JCP
representative to JSR 286, 299, and 301. Much like his love for climbing mountains he enjoys programming because it provides endless new  discoveries, elegant workarounds, summits and valleys. His adventures in climbing have taken him many places. Likewise, technology has brought him many adventures, including: Pascal and Assembly back in the early 90's; Perl, HTML, and JavaScript in the mid 90's; then Java and many of its frameworks beginning in the late 90's. Today he primarily uses Flex to build beautiful front-ends for Java based back-ends. Prior to Adobe, James built a rich marketing and customer service portal for Pillar Data Systems.

BizTalk Patch for Time Change


If you are running 2004 or 2006, then you need to apply this patch to deal with the upcoming time change as a result of the recent legislation.


Ted answers hard questions about what an architect is....


I read Ted Newards blog, because he is smarter than I am. You should read his blog too. Here is one of his recent posts.

Before you change the channel thinking "Oh, I hate link posts.", consider that I don't really like posts that are just links that say "hey, I just read this." I do like link posts that link to a post, and then discuss the topic. I am linking because I want to add to the conversation.

This conversation extends the first ArcReady meeting we had about six or nine months ago with Josh Homes (MS Architect Evangelist). That first event was about what an architect is, and what they do. It was a great talk, and dovetails into Ted's post.

To summarize Ted's post: Ted is responding to a reader who had a HORRIFYING interview and sent in an email about his experience. This experience drives the reader to have a crisis of faith when it comes to being an architect. Ted then answers some of the reader's questions.

The first thing this architect did was stick to his guns on HIS answers to  interview questions, and not roll over easy and say what he knew the interviewer was asking for. This is awesome. Want to move to Ohio?

When I am interviewing someone, I always make it a conversation, and make it clear that not only am I trying to see if that person is a fit for us, but that we are a fit for them. I want to be brutally up front about who and what we are so the candidate can determine if we are a fit for them. Because if our vectors don't line up, no one will be happy, and that's a waste of time and value to our clients.

If you are looking for a job, and interviewing, you have the responsibility to be who you are in the interview. If you pose, then you are falsely representing yourself. That's not good.

Ted's reader then goes on about three questions. I am pasting them here verbatim to make it easier for me to respond:

  1. How could their idea of an architect (being the policemen of corporate best practice) be so far removed from someone like myself, who aims to make case by case judgements based on pragmatism and experience?
  2. Is architecture supposed to be facilitative or restrictive?
  3. What relevance do architects have today? Are they just overpaid, out of touch developers?

1. Ted's reader says he was a consultant for years, and as such learned a skill that native architects don't usually learn. That skill is 'providing business value'. This problem has many forms. IT isn't aligned with business (if someone says business isn't aligned with IT you should run, run, run), IT isn't agile, no trust with IT, IT is a cost center, etc.

The policeman mentality (and please, I don't mean any disrespect to law enforcement) is when a control freak gets promoted, someone who is narrow minded (they know better than everyone else), they don't have the wisdom to understand context, and don't trust/value the developers and other staff.

If you treat 'best practices' like a rule book, solid walls to constrain you, then you probably don't GROK what you are doing. If you see best practices as dashed lines, guiding you, then you are doing well. You have to understand the experience and reasoning behind a best practice to use it well, and to avoid becoming a mindless zombie to it. Zombies eat brains, and no one wants that.


2. Both. It must facilitate the delivery of business value, while restricting the risks of putting prior and future value at risk by being too divergent. One thing that native guys have learned, that consultants don't too often, is that they must try to stabilize and normalize the entire enterprise environment. They must have vision beyond the one system that is being built. Ten systems with ten wildly divergent environments does raise development and maintenance costs. Architects, in this role, try to avoid the 'spaghetti problem', and using foresight, plan out how best to deliver that value, all while maximizing ROI on prior investments, if possible. In a sense, they sit between development, business, and IT ops. All of which have different needs and goals.


3. I think, by my definition of architect, an architect is super critical today. I think an architect, as defined by the reader's interviewee, is not only worthless, but an anti-architect. An anti-architect slows IT, siphons value from the business, and inhibits conversation.

I don't think there is much room on an XP project for an architect, if that architect's job is to draw out UML diagrams, and tell the developers what to build. The architects role on a software project (versus an enterprise architect, or another type), is to draw the general approach and direction of architecture on the system, and to help the developers flesh that out in an appropriate manner. The developer should run through their detail technical design with the architect on the team. In this way the architect trusts the developer is helping to provide an architecturally cohesive system. The developer also learns a lot from the architect as well.

QSI presenting at the .NET Technology Briefing in Columbus


Alexei Govorine and I will be presenting at the .NET Technology Briefing in Columbus, OH. Please register if you want to go.


Date: 11/12/2007

Time: 9:00am – 3:00pm

Location: Microsoft Office
8800 Lyra Dr., Suite 400
Columbus, OH 43240

.NET Technology Briefing

Come join your technology peers to learn about current and future.NET technologies. The focus of this 1 day seminar will be around Microsoft Visual Studio 2005 Team System. You’ll be provided with an overview of each role and the session will wrap up with a preview of Visual Studio 2008 (codenamed Orcas).


 9:00am – 9:45am

Visual Studio Team System (VSTS) / Team Foundation Server Overview

 9:45am - 10:30am

VSTS Project Management and Collaboration Features

10:30am – 10:45am

10:45am - 11:15pm


VSTS Architect and Developer Features

11:15pm -  12:00pm

12:00pm – 12:30pm

Version Control and Build Management

Lunch  (Provided)

12:30pm –  1:15pm

VSTS Tester Features

 1:15pm –   1:30pm

 1:30pm – 2:15pm


VSTS Database Professional Features

2:15pm –  2:45pm

Team System Futures (Visual Studio 2008 – Orcas)

2:45pm –  3:00pm



Turn in evaluation for drawings and fabulous prizes!

Turn in evaluation for drawings and fabulous prizes!

Attendance is limited, so please register early to secure your spot!

Date:   Nov 12, 2007

Time:   9:00am – 3:00pm

Registration Starts: 8:45am

Location:  Microsoft Office
8800 Lyra Dr., Suite 400
Columbus, OH 43240
Phone: (614) 719-5900

Click here to register

You may also access the registration site at: www.microsoft.com/events and reference Event ID 1032357541

This session will be delivered by Microsoft’s valued partners:

clip_image003 clip_image005

Speaking about BizTalk/WF at the ACM meeting

Labels: , ,

I have been invited to speak at the November meeting of the local chapter of the local chapter of the Association For Computing
Machinery (oldwww.acm.org/chapters/cocacm/).  The ACM's home page is www.acm.org.

I will be doing a lap around MS BizTalk Server 2006 R2 and Windows Workflow Foundation (WF), how to pick each tool for your needs, and to discuss their common uses.

I hope to see you there!

First Round of CodeMash Speakers Announced!


CodeMash is proud to announce the first round of speakers selected for this year's event. We have some great sessions lined up this year. So many, I think they content is going to blow away last year.

The content team (led by Jason Gilmore and Dianne Marsch) have been swamped with over one hundred session submissions, with only about 45 slots to fill. I don't envy them at all. I know they are working hard on picking the right topics, with the right mix and blend to really make this year special.

So, here goes...

Bruce Eckel: "Why I Love Python"

Bruce Eckel has given hundreds of presentations throughout the world,
published over 150 articles in numerous magazines, was a founding member of
the ANSI/ISO C++ committee and speaks regularly at conferences. He provides
public and private seminars & design consulting in OO Design, Python, Java
and C++.


Neal Ford: "Engineering and Polyglot Programming" and "DSLs in Static & Dynamic Languages"

Neal Ford is an senior application architect at ThoughtWorks, a global IT
consultancy. His primary consulting focus is the building of large-scale
enterprise applications. He is also an internationally acclaimed speaker,
having spoken at numerous developers conferences worldwide.


Jesse Liberty: "Coding in Silverlight"

Jesse Liberty is a Senior Program Manager for Microsoft's Silverlight
Development Team. He is a former Distinguished Software Engineer at AT&T and
Vice President for technology development at CitiBank, and was an
independent consultant for 12 years.

Dick Wall: "Testing with Guice"

Dick Wall is a software engineer at Google, based in Mountain View. He also
co-hosts the Java Posse podcast-a regular Java-centric news and interviews
show that can be found at http://javaposse.com.

Jim Weirich: "Advanced Ruby Class Design"

Jim Weirich has over twenty-five years of experience in software
development, and is employed with EdgeCase. He has worked with real-time
data systems for testing jet engines, networking software for information
systems, and image processing software for the financial industry. Weirich
is active in the Ruby community and has contributed to several Ruby
projects, including the Rake build system and the RubyGems package software.

We will be announcing more sessions soon!

Book Review: Professional BizTalk Server 2006


This is another great book from Wrox. They provided the book free to me in exchange for a (hopefully unbiased) review through the MVP program. The title is "Professional BizTalk Server 2006", and was written by Darren Jefford, Kevin B. Smith, Ewan Fairweather. You might recognize Kevin's name as the creator of BizUnit. I have never met any of the authors, but they have great reputations in our niche, and, based on the contents of this book, really know what they are talking about.

Let me start by saying there are many good books on BizTalk on the market now. I am really pleasantly surprised by this, as BTS 2004 only had a few books available.

This books suffers from a confusing title. If you scroll back in history, Apress has a book on BTS called "Pro BizTalk 2006", which is very similar to this book's title.

I think these two books actually make a good pair. The Apress book is great for people who just went to training, and are diving in, and are trying to learn the basics. Don't let this fool you, in BizTalk the basics are complex. The Wrox book then picks up from there goes REAL deep into the details.

The book is well structured, and grabs you from the start; well, if you are anything like me anyway. I loved how the overview chapter in the beginning does a SQL trace on how the message agent in the host instance commits a message into the mbox. When I hit that part, I really knew this book was for me.

There are a lot of internal details of BTS that a good architect and developer don't even need to know about to do their jobs well. But if you want to get to that next level, or just truly grok how this engine works, you need to know the details.

The book finishes out with some great chapters on testing and performance tuning of BizTalk.

This is definitely a must read for anyone who wants to know what goes on under the hood. Get this book, unless you are new to BTS. In that case, buy the Apress book first.

BizTalk Server 2006 R2 is released!


I have been super busy this week (getting CodeMash.org registration live), and didn't have time to let people know that R2 has finally been released. It should be available on MSDN now as well. Go download the bits, and enjoy all of the new goodness.

EDI and RFID rock. But for us, WCF is the biggest new feature I am excited about.

BizTalk Performance White Paper


John Brockmeyer is the primary author of a new BizTalk performance white paper titled "BizTalk Server Database Optimization". I have been waiting for this to come out for months now ever since he presented his draft material to us at the annual Virtual TS summit in San Diego.

This paper goes into great detail as to what settings and changes can affect the performance of your BTS system. He details each step, links to relevant background information, and even scores each with a difficulty level.

I feel the title is misleading, it covers far more than just tuning the SQL database.

I consider this mandatory reading for anyone managing or developing any significant BTS application. It is worth your time to read. Go now, read it before you focus shift to something less worthy.

Findlay - Hands On Agile Practices

Labels: ,


Just this week I was up in Findlay speaking at their user group about agile practices. I am posting a link to the deck on SkyDrive here.

I always have a lot of fun at Findlay. It's amazing how well downtown has recovered from the flood. You can hardly tell now.

CodeMash v2008 Registration is NOW LIVE!


We have put a lot of work in refactoring how the registration process works this year. It wasn't 'bad' last year, but we made it a little nicer. We added a section for tracking demographics. This will help us plan the content this year, as well as show our potential sponsors that awesome audience they will have access to. Remember, without sponsors, our registration prices wouldn't be this low.

PLEASE REMEMBER TO RESERVER YOUR OWN HOTEL ROOM. Details on how to do this will be included in the receipt email you receive after registering.

Thanks to the efforts of the team, especially the volunteer testers, we have just pushed a new build that includes registration. This new build also includes a new title graphic, and an upgraded session submitter form, plus some copy changes here and there.

We also just send out the emails with Alumni discount codes. The from address was registration at spammers suck codemash dawt org. Please check your spam filter in case you didn't just get it.

Please email the above address if you didn't get it.

Speakers from last year will also receive a discount code. If you have submitted a talk this year, hold out until you find out if your session was selected or not. If you are, you will be given a speaker registration code instead.

Please be gentle on the registration form. We will be upgrading it soon for mass registrations (my company sent about 20 people last year).

Anyway, the team is doing a great job with all of the planning for this year. I think it is going to rock more than last year.


So, time for bed. G'night.

CodeMash site update!


We just updated the CodeMash site to include the Sponsor Prospectus. Please pass it around. We had some great sponsors last year, and I appreciate their support. We did lower some of the prices this year for sponsors.


We have also opened the "Submit a Topic" form. If you would like to speak, please submit your session.


We hope to have attendee registration open in a couple of weeks.

HOAP in Findlay delayed...

Labels: ,

Due to some horrible flooding in Findlay over the past week or so, the monthly FANUG meeting was canceled. My talk was delayed until September 25th.

See you there!

KY Day of .NET Presentation

Labels: ,

On August 31st I spoke at the KY Day of .NET event in Louisville, KY. It was a lot of fun. I think Chad did a great job putting the event together.

I was invited to speak on WF. Because the time limit was 45 minutes of presentation, and 15 minutes of q/a I though I would do a level 100 talk on WF. I wanted to give people a feel for how WF might fit into their software projects, and to get the gist of it so diving into a book would be a little easier. I hope everyone liked it. I know I had a great time.

I posted the slides on my SkyDrive.

As a side note, when you upload files to SkyDrive they display a little bouncy beach ball game to entertain you while the files upload. Funny thing is, it's in Flash, and not Silverlight. Hmmm.

Using WSS v3 for a database

Labels: ,

As many of you know I am on the board of CodeMash. We are now working on updating the site for this year's conference.  We just pushed v1 live, and are now working on the attendee registration features.

Last year we had a great site. It was ASP.NET, web services built with the service software factory, and SQL Server 2005. It worked great.

One of the features for the site was a news channel that was on the homepage, a news page, and an rss feed. In order to manage the news content we also had an admin tool, and some supporting tables and so on.

This worked fine.

But this year, as I was refactoring, I just didn't want to deal with remote DBs, and upgrading the admin interface. So, one day while I was talking to local WSS bad boy (amongst other things), I came up with the idea of having the news content come from a WSS list that was on our planning portal.

Sounded easy to me; wire the news business object to the web services for WSS instead of some EntLib code that I had in place, and we're done. Check it in, go to bed.

In theory, it's that easy. I ran into the dreaded Loosey-Goosey anti-pattern that most of the WSS web services are based on. I don't know how I would do it better, but it still is Loosey-Goosey.

You see, many of them take a fragment of XML for a parameter, it isn't strongly typed in anyway. So the consumer has to munge together this XML (which is really CAML), and submit it in, and hope it is right. And if you screw up the official name for a list, view, or column (versus the displayed name), you really don't get much in the way of helpful information in the exception. You get 'field not found', which doesn't tell you which of the 20 fields you queried for wasn't found. Frankly, it made me miss the days of classic asp and vb6 com with 'Internal Server Error 500".

I want to share how I eventually figured out how to store and retrieve the news content form a list in WSS for our site. I don't know if this is the best way to do it, but it works for me.

Also, as a side note, I eventually found a tool that helps you write the CAML. It is published by U2U here. It even inspects your WSS list to know what all of the column names are. There is a library you can reference in your .NET application that loads the generated CAML (and 'connection string') so that you can abstract the WSS calls away from your code. This is a really cool idea. Unfortunately while I was able to use it to help me craft the CAML, I couldn't get the library to work. It might be because I am using Orcas Beta 2.

I started by adding a reference to the Lists web service for our WSS server. I had to provide username/password credentials to get through security. The URL I used was in this form:

http://<<site name>>/_vti_bin/lists.asmx

I did this with the normal 'add web reference' process in VS. Remember that the URL for WSS services is virtualized to the subsite that you want to access. So if the root had a collection of sites, and you wanted to query a list in a site in the collection, you would have to put that in the URL of the service: http://wss.mysite.com/subsite/_vti_bin/lists,asmx.

Once you have the reference, you can create an instance of the proxy class. You then have to add the credentials you want the proxy to use to access the list. You will need a 'using System.Net;' for the NetworkCredential namespace.

org.CodeMash.wss.Lists listService = new org.CodeMash.wss.Lists();
listService.Credentials = new NetworkCredential("WSSUsername", "WSSpassword");

You then need to craft several pieces of CAML. The first is the query expression. This is similar to a filter statement in SQL. Then you need a fragment that represents the columns/fields you want returned. The below statement is like this SQL:

select Title, ID, Created, Expires, Body, Summary From Listname where Expires > "07-15-2007" order by Created

  Here is the code:

XmlDocument xmlDoc = new System.Xml.XmlDocument();

XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");

XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");

XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

ndViewFields.InnerXml = "<FieldRef Name='Title' /><FieldRef Name='ID' /><FieldRef Name='Created' /><FieldRef Name='Expires' /><FieldRef Name='Body' /><FieldRef Name='Summary' />";

ndQuery.InnerXml = "<OrderBy><FieldRef Name=\"Created\" Ascending=\"False\" /></OrderBy><Where><Gt><FieldRef Name=\"Expires\"/> <Value Type=\"DateTime\">2007-07-15T00:00:00</Value></Gt></Where>";

Then, I create a generic collection of the business objects I am going to create. I plan on creating one NewsItem object for each item in the news list returned. After that I call the 'GetListItems' method on the List Service. You need to pass in the name of the list, the view to query against (which is optional), and the query expression, fields to be returned, and the query options. There are a few other optional parameters. You should go look up the full spec if you need to know all the details. That method is going to return a bunch of CAML. I use XMLNode to iterate over the collection of nodes, creating a new NewsItem object using the new C# 3.0 constructor syntax. This is really handy I have to say. You can see that I have to cast each value to the real type I want. Also, each field in the list is returned as an attribute on the item element in the CAML. After that I just return the generic collection of NewsItems back to the caller.

List<NewsItem> headlines = new List<NewsItem>();

                         XmlNode ndListItems = listService.GetListItems("Site News Feed", null, ndQuery, ndViewFields, null, null, null);

               String xpq = "//*[local-name() = 'data' and namespace-uri() = 'urn:schemas-microsoft-com:rowset']/*[local-name() = 'row' and namespace-uri() = '#RowsetSchema']";
               XmlNodeList nodes = ndListItems.SelectNodes(xpq);
               foreach (XmlNode aNode in nodes)
                   headlines.Add(new NewsItem
                       CreateDate = Convert.ToDateTime(aNode.Attributes["ows_Created"].Value),
                       ExpireDate = Convert.ToDateTime(aNode.Attributes["ows_Expires"].Value),
                       Headline = aNode.Attributes["ows_Title"].Value,
                       NewsBody = aNode.Attributes["ows_Body"].Value,
                       NewsId = Convert.ToInt32(aNode.Attributes["ows_ID"].Value),
                       Summary = aNode.Attributes["ows_Summary"].Value

Once a user clicks on a headline, I need to fetch the complete news article to display in a popup window. About the only thing that changes is the CAML on the query, and that I am receiving one record back, and not a collection. In this case, I am going to query on the item ID that WSS has, sort of like a primary key in a database.

public static NewsItem GetNewsItem(Int32 itemId)
            org.codemash.wss.Lists listService = new org.codemash.wss.Lists();
            listService.Credentials = new NetworkCredential("WSSUsername", "WSSPassword");

            XmlDocument xmlDoc = new System.Xml.XmlDocument();

            XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
            XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
            XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

            ndViewFields.InnerXml = "<FieldRef Name='Title' /><FieldRef Name='ID' /><FieldRef Name='Created' /><FieldRef Name='Expires' /><FieldRef Name='Body' />";

            ndQuery.InnerXml = "<Where><Eq><FieldRef Name=\"ID\" /><Value Type=\"Counter\">" + itemId + "</Value></Eq></Where>";

             XmlNode ndListItems = listService.GetListItems("Site News Feed", null, ndQuery, ndViewFields, null, null, null);

                String xpq = "//*[local-name() = 'data' and namespace-uri() = 'urn:schemas-microsoft-com:rowset']/*[local-name() = 'row' and namespace-uri() = '#RowsetSchema']";
                XmlNodeList nodes = ndListItems.SelectNodes(xpq);
                XmlNode aNode = nodes[0];
               NewsItem aNewsItem = new NewsItem
                        CreateDate = Convert.ToDateTime(aNode.Attributes["ows_Created"].Value),
                        ExpireDate = Convert.ToDateTime(aNode.Attributes["ows_Expires"].Value),
                        Headline = aNode.Attributes["ows_Title"].Value,
                        NewsBody = aNode.Attributes["ows_Body"].Value,
                        NewsId = Convert.ToInt32(aNode.Attributes["ows_ID"].Value)
                       return aNewsItem;

The great thing is I don't have to write an admin console, or anything like that. The tool is already there for me in WSS. The news authors can now go in there and control the content. Add items, remove items, stage them for future publication. All with very little work for me.

I implemented the same concept for our 'Topic Submission' form. This is where speakers can submit topics for consideration. In this case, I have a normal web form. Once I validate and control all of the input, instead of writing into a database, I write it to a list in WSS. Now the team that is managing content can easily see what topics have been submitted. With WSS' great filtering and views they can create views that are broken out by tracks, or author, or approval status. The code is below (some stuff was ripped out to make it simpler.) The tricky part is knowing what the field names really are. You have to spelunk the list design form and look at the URL in the browser to get these. For example, my field on the list I created called SpeakerBio is really named 'Speaker_x0020_Bio' by WSS. I did some REAL basic-hacky-ill advised-don't do this at home exception checking at the end. (Yeah, and I know I should have used a string builder. so sue me. this code is going to be run about 200 times, and that's it, and performance isn't an issue.)

private void SubmitATopic(string SessionTitle, string SessDesc, string SpeakerName, string SpeakerEmail, string SpeakerPhone, string SpeakerBio, string Track, int PrevGiven)
            string ListId = "ListGUID";

            org.codemash.wss.Lists listService = new org.codemash.wss.Lists();
            listService.Credentials = new NetworkCredential("WSSUsername", "WssPassword");

            string strBatch = "<Method ID='1' Cmd='New'>" +
                "<Field Name='Title'>" + SessionTitle + "</Field>" +
                "<Field Name='Session_x0020_Description'>" + SessDesc + "</Field>" +
                "<Field Name='Speaker_x0020_Name'>" + SpeakerName + "</Field>" +
                "<Field Name='Speaker_x0020_Email'>" + SpeakerEmail + "</Field>" +
                "<Field Name='Phone_x0020_Number'>" + SpeakerPhone + "</Field>" +
                "<Field Name='Speaker_x0020_Bio'>" + SpeakerBio + "</Field>" +
                "<Field Name='Track'>" + Track + "</Field>" +
                "<Field Name='UniqueID0'>" + System.Guid.NewGuid().ToString() + "</Field>" +
                "<Field Name='Session_x0020_Previously_x0020_P'>" + PrevGiven.ToString() + "</Field>" +

            XmlDocument xmlDoc = new System.Xml.XmlDocument();

            System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");

            elBatch.SetAttribute("OnError", "Continue");

            elBatch.InnerXml = strBatch;

            XmlNode ndReturn = listService.UpdateListItems(ListId, elBatch);

            if (ndReturn.InnerText != "0x00000000")
                throw new System.Exception(ndReturn.InnerText);

Anyway, this works fairly well, and saved me from having to build a whole bunch of backend infrastructure. Which is good, because I had to focus on reading the last Dune book. But that is a whole different post.

Applied SOA talk at CINNUG

Labels: ,

Last night I delivered my "Applied SOA" talk to developers for the first time. I have given many, many times to technical decision makers (TDMs) before. So it was nice to be in front of a nitty-gritty detail crowd,  instead of 30,000 foot view type people. Not that there's anything wrong with them, of course.

I think the session went really well. There were about 40 or so people there.

I have posted the slide deck on my skydrive public folder.

Upcoming Speaking Schedule


I just glanced at my calendar, and noticed I have quite a full schedule coming up.

August 21, 2007 - Cincinnati .NET Users Group - I will be speaking on 'Applied Service Oriented Architecture'. I will be discussing the underpinnings of SOA, and how it can be applied to your enterprise.


August 28, 2007 - Findlay .NET Users Group - I will be in Findlay presenting my "Hands on Agile Practices" talk. We will discuss how my company has adopted agile practices. I avoid the theory of agile (since so many talks already do that well), and focus on concrete application. I love giving this talk.


August 31, 2007 - Louisville, KY Day of .NET - Jeremy Sublett came up from KY to speak at the Central Ohio .NET developers group, and he told me they were throwing a Day of .NET event in Louisville. Since I love to speak on almost any topic, anywhere, I kind of invited myself to speak. Jeremy was very gracious in light of my slightly rude behavior, and said he would welcome me as a speaker. I am on tap to do at least a talk on WF, and I think one on BizTalk. I am hoping to squeeze in my agile practices talk as well.


If you are in the area, you should drop by. These are awesome community events.

BizTalk Server 2006 R2 details announced


We have been waiting anxiously for R2 to come out. There are some great features included; features that we could use today on several projects. Most clients are reluctant to start development on the beta, even if the go-live date of the project is after the expected GA date of R2.

We have been waiting to find out some final details on those features, as well as a release date, pricing, and edition information.

At the Worldwide Partner Conference 2007, MS announced these details to the public, but I haven't seen them discussed anywhere. I checked with the product group, and they said it would be ok for me to write about what was announced.

We, and other people, are looking for this information so they can plan for and manage their projects and environments for how R2 might impact them.

First, the features:

    1. Whole new, revamped EDI stack with AS2 in the box
    2. RFID platform
    3. BizTalk Adapter Framework 2
    4. Platform alignment (WCF adapters, etc.)

This is great news. I have been waiting for WCF support for a while now. It will really drive some of the ESB scenarios we are starting to engage with.

The 'edition' story gets a little more complex (although not as robust as the Vista edition schedule.)

  1. Developer - $500 - for development only. This hasn't changed. It is really just a re-branded Enterprise Edition, like most MSDN versions.
  2. Branch Edition - $1,800 / proc - This edition is new. This is for remote BizTalk servers that need to run across your enterprise. They are only allowed to talk to the centrally located, Enterprise Edition they are tied to. It isn't clear if this is a legal/license limitation, or if there is some technical bonding/pairing going on under the covers. This will most likely be used in Supply Chain Management scenarios in distribution centers for working with the RFID stack. This edition is limited to one BTS application, and can have up to two physical procs. The accelerators (read below) are not included with this license.
  3. Standard Edition - $8,500 / proc - This is very similar to the BTS 2006 R1 Standard Edition. It is still limited to 5 BTS applications, and two procs. You are still not able to join a group. This edition is aimed at departmental or low end scenarios. This edition does include the new EDI, RFID, and accelerator packs.
  4. Enterprise Edition - $35,000 / proc - This is also very similar to the existing EE version. The new EDI / RFID / Adapters / Accelerators are included. There aren't any limits on number of procs, and the server can join a BTS group. This is for serious SOA/ESB/Integration scenarios that have significant performance requirements. Even at this price it is a steal versus competing products (including custom code). There is an interesting footnote on this edition that it includes 'unlimited virtual procs.' I don't know what the means. I do know that under R1, you had to license the procs that a virtual server thinks it has as physical procs. Maybe this is a change. If so, it makes running a virtualized environment even more sensible (although I have yet to see a virtualized BTS environment that has any real performance).

Of Mice and Accelerators:

Up until now, MS has made accelerators available as an extra purchase. These have never been cheap, but usually a cost effective option. For example, the HIPAA accelerator provides all of the schemas and the processing engine you need. Making these by hand would be not only time consuming, but difficult to test. All of the current accelerators are now going to be included in the box. This is great news. I can now see a lot of my clients that have BTS for other reasons, adopt it for these other uses and be able to leverage their investment. In the past if they were to have to drop an extra $50k, they would be forced to go through a market evaluation. So this is great news.


I have heard some rumors about the new adapters, but I don't know what is official. So I will wait until there is a public announcement.


Above, where I quoted pricing, you will see that there is a small  increase in the licensing costs. Before I go further, I need to include the 'IANALE' clause:


With that out of the way.....

While a formal GA date hasn't been announced, they have been consistent in saying September, 2007. The pricing changes you can see above won't go into effect until January 1st, 2008. That means that you have between the release data and the new year to buy R2 at the current prices. That's a real nice move by MS.

Also, this is a newly licensed product. That means if you have R1, but do NOT have Software Assurance, you will have to buy new licenses for the new version. If you did buy SA, then you will get SA for free.

I always recommend to my clients to buy SA on any enterprise critical software. Mostly so they get great support and the free upgrades. The BizTalk product has a track record of new releases about every two years, so it works out well.

SOA and Business Process Pack

There is another package you can buy, called the SOA and Business Process pack. When most customers buy BizTalk, they usually have to buy other products as well (SQL Server for example). Microsoft has created a bundle that has all of these products grouped together: BizTalk Server 2006 R2, Microsoft Office SharePoint Server 2007, Visual Studio Team Systems, and Microsoft SQL Server 2005. If you buy them in this bundle, you will get an additional 10% of the regular pricing. I think this is a great bundle. I know a lot of my customers tend to buy all of these products as a result of deploying BTS, so it will save them some money.

This special offer is only valid for six months after R2 is released though. They haven't mentioned which edition of BTS this might be limited to (does it include standard, or just Enterprise?). Also, it doesn't mention a minimum number of CALs or procs to qualify. Maybe there isn't a minimum. I am not sure.


Anyway, this is great news to finally know when R2 will come out, what the pricing is, and some of the editions and features that will be available. I think the news that the accelerators will be included is the biggest news, as these were very expensive to purchase.

Local login fails on WSS v3 for me

Labels: ,

We have leased our own dedicated server as part of working on getting the back end tech setup for CodeMash 2008. Last year we used Sharepoint 2003 for the planning portal. This year we will be using WSS v3. There are a lot of great enhancements that will help us a lot.

I installed WSS on our server, and then deployed an asp.net application that we are going to use to collect speaker submissions. This app is a simple form, with some validation, that then submits the topic to a list in WSS via the WSS web services.

The app worked great on my laptop connecting to our WSS site on our dedicated server. When I deployed the app however, it was failing the authentication into the WSS web services.

The first step to troubleshoot this was to log into the portal from my machine. That worked. Then, try to login from the server itself (since that is where the web service is being called from.). That didn't work. The portal was working fine, but wouldn't let you login from the local machine.

After weeks of scouring all search engines, I finally stumbled across a blog posting by Robert Bogue. His article talks about this problem, and has all of the details. The short answer is that with IIS and AD, a site with 'integrated authentication' will use NTLM when the user is remote, but Kerberos when the user is local. Kerberos doesn't like web sites with host headers, and fails to log you in. Robert documents a few command line commands that you can use to disable Kerberos on the specific web site, but leave NTLM in place.

That fixed it. Thanks Robert! Turns out his blog has some great Sharepoint content.

ps. Step seven of his instructions has a small typo. NTAuthenticationProvider should be plural, NTAuthenticationProviders

Announcing CodeMash 2008!


We have finally finished the paperwork from last year, and have now made commitments for the next CodeMash.

We will have CodeMash 2008 at the same place, the fabulous Kalahari on January 9-11, 2008.

We are still working on the details, but it will largely be like last year. Stay tuned for more information.

We are also currently reworking the site. Up until now we have been working on all of the behind the scenes tech. Pretty soon a new site will be posted. Keep a look out here or on the Google group for more information.

Book Review: Professional WCF Programming by Scott Klein


This is the second Wrox book I agreed to review. You can find the book here.

Side Note: I did receive the book as a review copy from Wrox, the publisher. I have no affiliation with Barnes & Noble, beyond being a long time fan and customer.

This book covered all of the bases with WCF, and makes both a good first book, as well as providing enough material for the intermediate WCF developer. The book starts with the basic concepts, building on them, adding detail for each part of the stack. Later in the book, there are several thorough chapters on how to create custom WCF components.

The writing style was smooth, and easy to read. I think this is a result from Scott being the only author.

I always have high expectations for sample code in books. The sample code throughout the book was great. The samples were never a trivial sample. They had meat, and the scenarios made sense. This is usually one of my biggest pet peeves with books. I expect the author to put enough effort into the samples so that they tell a coherent story, and are relevant to a real world scenario. Of course, 'Hello, World!' is always the exception.

Some people complain about WCF, saying:

"WCF replaces a thousand lines of com code with a thousand lines of XML configuration."

WCF can be configured with a config file, with attributes decorating your code, or through code itself.  This can make WCF daunting to a beginner. The best practices for which approach you take depends on what element you are configuring, as well as your deployment scenarios. Scott does a good job mixing these three modes up, and discussing the best practices and conventions. I think his approach makes it easier for the new learner to focus on the style that seems easier to them.

The one thing I thought the book was missing was some diagrams to help visualize the layers and components in WCF, and how they relate.

I felt the last few chapters were the most useful for me. They discuss deployment and configuration, which is critical with WCF. As I have been working with customers, they immediately want to use the TCP binary bindings for performance reasons. This is a great approach, especially when the communication is interior to your enterprise. Scott's chapter on hosting WCF services really made it clear what the different options and choices are in each scenario.

I think that WCF is the single most important technology for any .NET developer to learn in the next two years. All of the planks in the platform are awesome (Silverlight, LINQ, WPF, WF, BizTalk, etc.), but it is WCF that ties them all together. While I think developers will soon specialize in each of these planks, they will all have to at least have a basic understanding of WCF.

This book will get you there.

Bad News: PDC is delayed

I was really looking forward to the PDC this fall. It is my favorite conference, and I love hooking up with all my conference buddies. I never fail to meet 20 new people every time (usually due to Drew and Josh).

Don't get me wrong, TechEd is great. But in a year when both are on the schedule, I usually go to just the PDC. I can't take two major conferences that close together.

Since the PDC was scheduled for this early fall, I passed on going to TechEd, preferring to wait for the PDC.

Microsoft just announced that the PDC will be delayed. The PDC is about giving developers insight into where the platform is going, and what is around the bend. Microsoft felt that the latest wave was so big, that it would be premature to hold a PDC at this time.

PDC has never been a regularly scheduled event. It has always been about giving leading edge developers insight into the next wave, and timed to do that, based on when that wave was coming. But with the current wave so big, developers are being completely overwhelmed with it.

I just wish Microsoft had announced this a month ago. I would have had time to make arrangements to attend TechEd instead. On the PDC site they do list other conferences, but I have never been to any of those listed. I did have a friend go to VSLive! Orlando, and he felt it was a waste of time, and thought the organizers didn't really care. Based on his input, I don't know if I want to spend the money or the time going to VSLive!. Maybe DevConnections? Any thoughts?

I still do plan on going to the SOA/BPM conference in October on campus.

Book Review: Professional Windows Workflow Foundation by Todd Kitta


 Earlier, I said I don't like to do book reviews. That's because I always had to buy the book, and spend time to do. It was too much like work. But then Wrox asked MVP's if they would like to book reviews in exchange for review copies.

Find the book here.

I am a sucker for books, so I said why not. I picked four books to start with, and they arrived quite quickly. I chose to start with the WF book, because of all of the new .NET 3.0 stuff, it is what I would be able to related to the best, considering by depth with BizTalk.

Let me also say that several of my friends are authors, and I know how MUCH work it is to put together a good book. My hat is off to any author. I have a goal to do at least one book, just for the experience. I have been approached for a title before, but I didn't want to start a book if I didn't know I had the time to finish it. Which I don't.

I have liked Wrox titles in the past, only because they were often first to market, which is important for people on the bleeding edge (or recklessly adopting new technologies). They aren't usually going to end up being the seminal work on the subject, but they are Just in Time on the topic.

Anyway. On to the book.

As I started reading it, I was immediately grabbed by the book. The initial chapter on why workflow was nice, but could of done a better job selling the need. I agree with the author, and think almost every app has workflow in it, and could use WF to one degree or another.

The next few chapters (until eight or so) were really hard for me to get through. I don't know if it is because I have been learning WF for a while now, or what. As I reflect, I think that section was too much like a slog through documentation. It was very reference oriented, and didn't really explain the classes and settings in depth, there was no 'grok' in it. Just definitions. I really struggled to keep going through the book at this point. I whined, I cried.

But I have a rule about finishing books that I start. I have this rule because I know deep down in my mind, I will always wonder if the book turns around, assuming it would be on the page after I stopped. I have a similar rules about games as well.

Chapter five was filled with production issues. The type, and the diagrams had problems with them. This probably isn't the authors fault, but I do expect better quality from a major publisher.

And, just then, in chapter 9, it got interesting. I could tell the author was writing. The insight I need from these books was there. The understanding. The grok. The book got real interesting from there.

The later chapters talk about hosting workflows in ASP.NET, and about other advanced topics. I really liked the section where he builds a controller for a MVC using WF to control the page flow. The code was deep and represented a good example of what WF can do.

It gave me the idea to start with his thoughts, and build out a new version of the UIP. But I have a feeling that MSFT has something like that in the works. It wouldn't be the first time I think I had a great idea for something to build, only to see MSFT announce it a few months later. This happened with the BizTalk solution designer, amongst other things. That's fine. Saves me a lot of work. :)


The book has a slow start, and could use better sample code. Around chapter 9, the book hits its stride, and gets it's second wind. The ending is very nice. I would recommend this for someone who hasn't started learning WF at all.


One down, three to go. Next up, WCF.

Updated BizTalk Resources List


Thanks to Keith Bauer and all of the other smart MS folks who put together the BizTalk resources list. Sometimes it can be overwhelming when you start to dig into the available material. Web casts, articles, books, v-labs, hands on labs, oh my!

This is a special post just for my Nashville BizTalk class.


BizTalk Server - Links and Resources

Primary Websites

BizTalk Product Website
BizTalk is a business process management (BPM) server that enables companies to automate and optimize business processes. This includes powerful, familiar tools to design, develop, deploy, and manage those processes. Everything you need for easy installation is included—integrated management tools, support for Web services, and a new business activity monitoring (BAM) portal. In addition, BizTalk Server 2006 includes 23 application and technology adapters in the box for connecting to legacy systems (mainframe and mid-range) and line-of-business applications (SAP, Siebel, PeopleSoft, Oracle, and JD Edwards).

BizTalk Server TechCenter on TechNet
For IT professionals, visit Microsoft TechNet for tools and resources to help you plan, build, deploy, and support BizTalk Server.

BizTalk Server Developer Center on MSDN
For developers, visit the Microsoft Developer Network (MSDN) for technical references and how-to resources to help you develop for BizTalk Server. Includes product downloads, samples, blog sites, top newsgroup discussions, learning resources and technical references for architects and developers of BizTalk solutions.

BizTalk Server Support Center
Lists a number of support options and services available for BizTalk Server.

Product Information, Pricing, Help, White Papers, Tutorials, Install/Upgrade Guides

BizTalk Server Product Information
Get a firsthand look at Microsoft BizTalk Server through a product overview, virtual labs and trial software, find out more about adapters and accelerators, and see analyst reports, case studies, news, and reviews.

BizTalk Server 2006 Pricing and Licensing
Details on the editions, language versions, features, pricing and licensing of BizTalk Server 2006.

BizTalk Server 2006 PDF Help Files
Microsoft BizTalk Server 2006 Documentation in PDF format.

BizTalk Server 2006 Product Documentation on MSDN
Visit the MSDN Library for BizTalk Server 2006 Help online.

BizTalk Server 2006 Tutorials
Download the BizTalk Server 2006 tutorials for detailed information on how to implement simple scenarios and use a variety of BizTalk tools while creating compiled, testable solutions. Updated 9/5/2006

BizTalk Server 2006 Installation and Upgrade Guides
Review the BizTalk Server 2006 installation instructions for how to install BizTalk Server 2006 on Windows XP, Windows 2000 Server, or Windows Server 2003 in a single server or multi-server environment. Updated 8/25/2006

BizTalk 2006 Skills Assessment
How much do you know about BizTalk 2006? This assessment focuses on the new features and functionality of Microsoft BizTalk Server 2006.

White Papers

BizTalk Server 2006 Developer Productivity Study
These whitepapers present the results of a study that compared Microsoft BizTalk Server 2006 to SAP XI for integrating heterogeneous systems, and discuss the value proposition of BizTalk Server. January 2007

Managing a Successful Performance Lab with BizTalk Server 2006
This paper outlines key strategies for managing a successful performance lab with Microsoft BizTalk Server 2006. August 2006

BizTalk Server 2006 Application Deployment and Upgrade
Read about improvements made to the application deployment and application upgrade experience via the platform’s application concept, the new BizTalk Server Administration Console, and more in this white paper. June 2006

BizTalk Server and Microsoft Dynamics: LOB Management and Integration Solutions for the Extended Enterprise
This white paper describes the deployment of Microsoft Dynamics and BizTalk Server, yielding a robust, high-value solution that provides cross-functional integration and coordination of line-of-business and supply chain management applications across the extended enterprise. May 2006

The Business Value of Integration and Automation for Midsize Companies
This white paper explains integration and automation in BizTalk Server 2006, how each enables midsize businesses to improve supply chain functioning, and some broad principles to be aware of when searching for effective integration and automation solutions. May 2006

The Business Value of Radio Frequency Identification (RFID)
This white paper examines the opportunities and benefits of RFID and how this technology will revolutionize supply chain management. January 2006

BizTalk Server 2006 Adapter Enhancements
This white paper discusses both the new built-in adapters and enhancements to the existing built-in adapters that will ship with BizTalk Server 2006. November 2005

BizTalk Server 2006 Runtime Improvements
This white paper reviews the improvements that have been made to message processing as part of the core engine enhancements for BizTalk Server 2006. November 2005

Understanding BizTalk Server 2006
Learn about key features and improvements in BizTalk Server 2006, such as significantly simpler installation; better support for deploying, monitoring, and managing applications; and improved capabilities for Business Activity Monitoring. October 2005

Understanding the Hub and Spoke Deployment Model for BizTalk Server 2006
Read this article to understand how the BizTalk Server 2006 hub and spoke model supports administrators who want to install and deploy the associated bits of a BizTalk Server solution from one central server and multiple remote servers. August 2005

BizTalk Server 2006 Business Activity Monitoring
This paper provides a detailed description of two new Business Activity Monitoring (BAM) features in BizTalk Sever 2006—the BizTalk Server BAM Portal, and Alerts and Notification Support—and it discusses enhancements to the BAM features in BizTalk Server 2004. April 2005

BizTalk Server 2006 Developer Tools Improvements
This white paper describes some key product enhancements in BizTalk Server 2006 that are of interest to developers, in particular the Flat File Wizard. April 2005

Check for updated and new BizTalk 2006 white papers:

Technical Articles

The following technical articles may appear out of date with respect to the current release of BizTalk; however, the content is still largely relevant considering the minimal change to the underlying architecture between the BTS 2004 and BTS 2006 releases. For the most part, these technical articles are relevant for BizTalk 2006 implementations.

BizTalk Accelerator for HL7 Management Pack Guide
BizTalk Server 2004: A Messaging Engine Overview
BizTalk Server 2004: A Review of the Business Activity Monitoring (BAM) Features
BizTalk Server 2004 and Web Services
BizTalk Server 2004 Convoy Deep Dive
BizTalk Server 2004 Database Sizing Guidelines
BizTalk Server 2004 Deployment Guide for Security
BizTalk Server 2004: Monitoring and Troubleshooting
BizTalk Server 2004 Performance Characteristics
BizTalk Server 2004: Performance Tuning for Low Latency Messaging
BizTalk Server 2004 Technical Guide for Certificate Management
BizTalk Server 2004 Technical Guide for High Availability
Build Better Business Processes with Web Services in BizTalk Server 2004
Connecting to the Elemica Network with BizTalk Accelerator for RosettaNet 3.0
Developing Integration Solutions with BizTalk Server 2004
How to Trigger a BizTalk Orchestration from SAP
Implementing Service Contracts with BizTalk Server 2004
Implementing UAN on BizTalk Server 2004 to Integrate Siebel and SAP
Risk Scoring with BizTalk Server 2004 and the Business Rules Framework
RosettaNet and SAP Integration
Transactions Across BizTalk Server 2004
Understanding BizTalk Server 2004
Using XML Schemas in BizTalk Server 2004
Working With BizTalk Adapter for SQL Server
Writing Effective BizTalk Server Adapters
Service Station: An XML Guru's Guide to BizTalk Server 2004, Part I
Service Station: An XML Guru's Guide to BizTalk Server 2004, Part II

Check for updated and new BizTalk 2004 technical articles:


MSDN Webcast: Enabling a New Generation of Dynamic Applications Through Service-Oriented Architecture (Level 200)
Dec 2006
MSDN Webcast: Accelerate Your Supply Chain with a Hybrid Approach to Business-to-Business Integration (Level 200)
Dec 2006
Beginning a Master Citizen and Master Property Database:
Oct 2006
Beginning a Master Citizen and Master Property Database: Maintaining the most trusted, accurate and up-to-date customer and address information
Sep 2006
MSDN Webcast: Enabling “People-Ready” Processes Using Microsoft Business Process Management Solutions and Technologies (Level 200)
Jul 2006
Data Driven Performance Management Solution Web Seminar
Jul 2006
MSDN Webcast: Integrating BizTalk Server 2006 and Windows Workflow Foundation (Level 200)
Jun 2006
MSDN Webcast: Integrating Sales Data with Your Line-of-Business Applications Using the Salesforce.com Adapter for BizTalk Server 2006 (Level 200)
Apr 2006
MSDN Webcast: Using the BizTalk Accelerator for SWIFT (Level 200)
Apr 2006
MSDN Webcast: Using the Business Activity Monitoring Tracking Profile Editor (TPE) Tool and APIs in BizTalk Server 2006 (Level 200)
Apr 2006
MSDN Webcast: Implementation and Tuning Best Practices for BizTalk Server Solutions (Level 300)
Mar 2006
MSDN Webcast: BizTalk Adapters for Host Applications (Level 300)
Mar 2006
MSDN Webcast: BizTalk Adapters for Siebel and TIBCO EMS (Level 300)
Mar 2006
MSDN Webcast: BizTalk Adapter for Oracle DB (Level 300)
Mar 2006
MSDN Webcast: BizTalk Adapters for DB2 and Host Files (Level 300)
Mar 2006
MSDN Webcast: End-to-End Scenarios: Creating Service-Oriented Solutions with BizTalk Server 2006 (Level 300)
Mar 2006
MSDN Webcast: Discover What’s New in Biztalk Server 2006: New Management Capabilities (Level 200)
Mar 2006
MSDN Webcast: BizTalk Adapter Spotlight: JD Edwards (Level 200)
Mar 2006
MSDN Webcast: BizTalk Adapter Spotlight: SAP (Level 200)
Mar 2006
TechNet Webcast: Identity Integration Using Host Integration Server and BizTalk Server (Level 300)
Mar 2006
MSDN Webcast: Business Activity Monitoring (BAM) in BizTalk Server 2006 (Level 200)
Feb 2006
MSDN Webcast: BizTalk Server 2006 End-to-End Scenarios: Business Process Management (Level 200)
Feb 2006
MSDN Webcast: BizTalk Adapter Spotlight: Windows SharePoint Services (Level 200)
Feb 2006
MSDN Webcast: High Availability, Fault Tolerance and Scalability with BizTalk Server 2006 (Level 200)
Jan 2006
MSDN Webcast: Implementing End-to-End Sequential Processing in BizTalk Server 2006 (Level 200)
Jan 2006
MSDN Webcast: Creating Your First BizTalk Server Application (Level 200)
Jan 2006
MSDN Architecture Webcast: What's New in BizTalk Server 2006: The Flat File Wizard (Level 200)
Dec 2005
MSDN Architecture Webcast: Spotlight on E-mail Adapters for BizTalk Server 2006 (Level 200)
Dec 2005
MSDN Architecture Webcast: Manage and Monitor Enterprise Deployments with BizTalk Server 2006 (Level 200)
Nov 2005
MSDN Architecture Webcast: Design Human Workflow Solutions with BizTalk Server 2004 (Level 200)
Nov 2005
MSDN Webcast: Extending BizTalk Solutions to IBM Systems Using Host Integration Server 2004 (Level 200)
Oct 2005
MSDN Architecture Webcast: BizTalk Server Security Revealed (Level 300)
Sep 2005
MSDN Architecture Webcast: Microsoft Integration Technologies: When to Use What (Level 200)
Sep 2005
MSDN Webcast: BizTalk Server 2004 Business Rules Engine (Level 200)
Aug 2005
MSDN Webcast: Business Activity Monitoring with BizTalk (Level 200)
Aug 2005
MSDN Webcast: BizTalk Orchestration (Level 200)
Aug 2005
MSDN Webcast: BizTalk Web Services and WSE (Level 200)
Aug 2005
MSDN Webcast: Introduction to BizTalk Server 2004 (Level 200)
Aug 2005
MSDN Webcast: An XML Guru's Guide to BizTalk Server 2004 (Level 200)
Jun 2005
TechNet Webcast: BizTalk Server 2004 Technical Overview (Level 200)
May 2005
MSDN Webcast: Implementing a Business Rules Engine Solution Using BizTalk Server 2004 (Level 200)
May 2005
MSDN Webcast: Using the BizTalk Business Rules Engine: Tips, Tricks and Best Practices (Level 200)
May 2005
MSDN Webcast: A Practical Approach to BizTalk Server 2004 and Web Services (Level 200)
May 2005
MSDN Webcast: Everything You Wanted to Know About Integration But Were Afraid to Ask! (Level 200)
May 2005
MSDN Webcast: Test-Driven Development with BizTalk Server 2004 (Level 200)
May 2005
Microsoft Executive Circle Webcast: BizTalk Accelerator for SWIFT
Apr 2005
Microsoft Executive Circle Webcast: A4SWIFT and Implementing SWIFT Standards Using BizTalk 2004
Mar 2005
Microsoft Executive Circle Webcast: Data Management in STP
Mar 2005
Microsoft Executive Circle Webcast: Creating Operational Efficiencies in Today's Financial Services Firms
Mar 2005
Microsoft Executive Circle Webcast: Interoperability Challenge of Maritime Security
Feb 2005


Pro BizTalk 2006
Paperback: 600 pages
Publisher: Apress (October 16, 2006)
ISBN: 1590596994

Book Description
Pro BizTalk 2006 is a high-end resource that is based on real feedback from BizTalk developers. Authors George Dunphy and Ahmed Metwally are well known within the BizTalk community, and here they cover topics not discussed in other books, like performance tuning, scalability, and administration. This book also features examples of specific, real-world implementations.

BizTalk 2006 Recipes (A Problem-Solution Approach)
Paperback: 700 pages
Publisher: Apress (July 1, 2006)
ISBN: 1590597117

Book Description
BizTalk 2006 Recipes: A Problem-Solution Approach is based on the experiences of many of the most prominent experts in the field. It features over 170 problem-solving recipes for BizTalk developers and administrators. BizTalk Server 2006 builds on the heritage and core architecture of BizTalk Server 2004, leading to a powerful tool that encompasses the latest Microsoft technologies and industry standards for automating and managing business processes. BizTalk Server 2006 adds incremental value to BizTalk 2004 by improving administration, deployment, and other key areas of the product.

Foundations of BizTalk Server 2006
Paperback: 400 pages
Publisher: Apress (Available: Jan 29, 2007)
ISBN: 1590597753

Book Description
Since Microsoft's release of BizTalk Server 2006, there is a serious need for more documentation on this product. Foundations of BizTalk Server 2006 fills that void. The book will take you from novice to professional, equipping you with the tools you'll need to get started in the world of BizTalk server integration.

Professional BizTalk Server 2006
Paperback: 700 pages
Publisher: Wrox (Available: May 7, 2007)
ISBN: 0470046422

Book Description
Description not available yet.

Microsoft BizTalk Server 2006 Unleashed
Paperback: 800 pages
Publisher: Sams (Available June 15, 2007)
ISBN: 0672329255

Book Description
Description not available yet.

Designing Healthcare Solutions w/BizTalk Server 2004
Paperback: 256 pages
Publisher: Agility Press (January 15, 2005)
ISBN: 1932577181

Book Description
The main challenge of business process integration is in the design – not in the implementation. A well-designed IT infrastructure creates the agility necessary to compete in today’s challenging healthcare market.

Product Trial Download and Tools

BizTalk Server 2006 Trial Software
Download the 120-day BizTalk Server trial software and begin optimizing and automating your business processes. Released April 3, 2006

BizTalk Server 2006 Best Practices Analyzer
Use the BizTalk Server 2006 Best Practices Analyzer to check your deployment against a variety of best practices, including high availability, security, management, and performance. Released June 2, 2006

BizTalk Server 2006 Orchestration Designer for Business Analysts
This Visio add-in allows business analysts to create basic orchestration flows and implement them using BizTalk Server 2006.

Online/Virtual Training

BizTalk Server Virtual Labs
Learn how to take full advantage of BizTalk Server key features through virtual labs. It's simple and free: no complex setup or installation is required to try BizTalk Server running in the full-featured MSDN Virtual Lab. You get a downloadable manual and a 90-minute block of time for each module. You can sign up for additional 90-minute blocks any time or take advantage of our introductory experience with the new Virtual Lab Express.
Express Lab: What's new in BizTalk Server 2006
BizTalk 2006 - New Features for Deploying and Managing a BizTalk Application
BizTalk 2006 - New Features for Working with Flat Files
BizTalk 2006 - Integrating Business Rules
BizTalk 2006 - Working with Maps
BizTalk 2006 - Working with Schemas

First Look: Microsoft BizTalk Server 2006 for IT Professionals
This online clinic provides IT professionals with an introduction to BizTalk Server 2006 and how to deploy and manage applications in a BizTalk environment. Major topics covered include installing and configuring BizTalk Server 2006 and managing a BizTalk Server environment.

First Look: Microsoft BizTalk Server 2006 for Developers
This online clinic provides developers with an introduction to the BizTalk Server 2006 development environment and BizTalk messaging and orchestration services. Major topics covered include building a messaging integration solution and building a business process integration solution.

Classroom Training

Developing Business Process and Integration Solutions Using Microsoft BizTalk Server 2006
This five-day instructor-led course provides students with the knowledge and skills to efficiently and effectively integrate systems, employees, and trading partners through orchestration in a highly flexible and highly automated manner.

This two-day instructor-led course provides students with the knowledge and skills required to install and configure a computer running Microsoft BizTalk Server 2006. The course also shows you how to deploy and manage BizTalk applications in a production environment.

BizTalk Friday Brown Bag Webcasts (Public Accessible)

This weekly series of technical brown bags is designed to help those of us implementing and supporting BizTalk, as well as key partners, learn the many features of BizTalk Server 2004, 2006 and beyond through presentations, demos and Q&A.

BizTalk 2006 Performance Methodology
Mar 23, 2007
Best Practices Monitoring BizTalk with MOM
Feb 16, 2007
Archive and Purge in BizTalk Server 2006
Feb 2, 2007
Excel XLS Data with Spread for BizTalk
Jan 19, 2007
Microsoft ESB Guidance for BizTalk Server 2006
Dec 8, 2006
Pro BizTalk 2006 Book - BizTalk Patterns Wizard - Interesting Brown Bag Stats
Nov 17, 2006
Managing a Successful Performance Lab with BizTalk Server 2006
Oct 27, 2006
BizTalk Disaster Recovery
Oct 20, 2006
Surviving Your First BizTalk Project
Oct 13, 2006
BizTalk Versioning
Sept 8, 2006
BizTalk Operations PowerToys
Aug 25, 2006
BizTalk Adapter for Host Applications
Jun 30, 2006
Enterprise Single Sign-On (SSO) in BizTalk 2006 and Host Integration Server (HIS) 2006
Jun 23, 2006
BizTalk Adapter for WebSphere MQ (Client-Based)
Jun 2, 2006
BizTalk 2006 Adapter for RIM BlackBerry
May 26, 2006
BizTalk Operations
May 19, 2006
WSE 2.0 SP1 Adapter for BizTalk 2006
May 12, 2006
BizTalk 2006 Adapter for WSE 3.0
May 5, 2006
BizTalk 2006 Adapter for Siebel
Apr 28, 2006
BizTalk 2006 Adapter for Oracle DB
Apr 7, 2006
BizTalk 2006 Adapters for DB2 and Host Files
Mar 17, 2006
BizTalk 2006 Adapter for SAP
Mar 3, 2006
BizTalk Server 2006 Lifecycle: Deployment, Monitoring & Maintenance
Feb 10, 2006
Discarded and Suspended Message Control
Feb 3, 2006
Future Directions: Beyond BizTalk Server 2006
Jan 6, 2006
BizTalk Server 2006: Development and Adapters
Dec 12, 2005
Best Practice Analyzer (BPA) - BizTalk 2006: Rules Design Spec Review/Discussion
Dec 2, 2005
Beginning-to-End Ordered Delivery (Sequential FIFO) in BizTalk 2004 and 2006
Nov 18, 2005
Writing Effective BizTalk Server Adapters
Oct 14, 2005
SAP Adapter Drilldown, Common Issues & Questions
Oct 7, 2005
Leveraging Windows 2003 Kerberos - Extensions Protocol Transition and Constrained Delegation in a Multi-Tier Integration Scenario Using BizTalk Server
Sep 30, 2005
Adapters New Features (POP3 & SMTP Drilldown) in Pathfinder/BizTalk 2006
Sep 9, 2005
Windows SharePoint Services (WSS) Adapter in Pathfinder (BizTalk 2006)
Aug 26, 2005
Leveraging Windows 2003 Kerberos - Extensions Protocol Transition and Constrained Delegation in a Multi-Tier Integration Scenario Using BizTalk Server
Aug 12, 2005
Two Worlds Collide: Transferring Data Between Microsoft BizTalk Server 2004 and Microsoft SQL Server 2005
Aug 5, 2005
Using the BizTalk Adapter for SQL Server - Common Scenarios
Jul 15, 2005
e-Taxation Portal: Using Biztalk, WSS Adapter and InfoPath for providing electronic tax filing services
Jul 8, 2005
New Features of Pathfinder (BizTalk 2006) Messaging Engine
Jul 1, 2005
BAM in Pathfinder (BizTalk 2006) New Features
Jun 24, 2005
BAS and Sharepoint Adapter in Pathfinder (BizTalk 2006)
Jun 17, 2005
Custom Pipeline Component Development, XmlCompleteValidator & More
May 27, 2005
Extracting, Transforming and Delivering Gigantic Legacy Application Interface Files Using BizTalk 2004 and Oracle
May 13, 2005
Utilizing Enterprise Library with BizTalk 2004
Apr 15, 2005
Deep Dive WRQ Verastream BizTalk 2004 Screen Scraping Adapter for Legacy Integration
Mar 18, 2005
ODBC Adapter for BizTalk Server 2004
Feb 18, 2005