Skip to content

Virtual Switch Loops

For some time I’ve had some issues on my network. They don’t happen very often so they’ve been hard to track down. I know for sure that one of the issues I have is that one of my Linksys SGE2024 refuses to hold on to its configuration if it loses power. This is made more difficult by the fact that the power supply in the unit has a very low capacitance. As a result of that it will appear to lose its configuration randomly. Take a look at my last post What is a UPS, Really? for the details on that.

However, I also had these weird “storms” where I’d start losing packets and despite my best efforts to diagnose it, I wouldn’t find a problem and suddenly it would be fixed. Honestly there’s nothing that’s more frustrating than a problem that fixes itself before you can put your finger on it — and then comes back later when you’re not ready.

This problem and the lack of diagnostic capabilities on the Linksys SGE2024 switches lead me to replace the switches with some new HP V1910 switches. However, immediately during the deployment of them I started seeing similar — but not identical issues. While not perfect the enhanced diagnostics of the V1910 switches allowed me to sort out that there was a problem with the connection between my virtualization server and the switch.

The virtualization server is a Dell R710 which has four 1 GB Ethernet ports on it. Since I expected that overtime I’d want to get more than 1GB of traffic to the virtual servers, I decided to team the Ethernet ports together to aggregate the total capacity of three of the four ports. The fourth port I’d used for the virtualization host. Wat is called Teaming on the windows side is known on the switch side as Link Aggregation. Generally speaking this aggregation is done through the Link Aggregation Control Protocol (LACP) — although it doesn’t have to be done that way. It defines how the communication should happen to form up an aggregated channel.

When I looked at the LACP status on the switch it told me that the ports weren’t properly bonding together. In more research I found that the infrastructure guy that I had helping me — and a friend of mine — had used network bridging to connect the NICs together and had not in fact actually used network teaming. The teaming had to be setup with a special utility that Dell didn’t see fit to include in the latest driver package. When my friend didn’t see it he tried to do a workaround.

The problem was that each of those adapters was operating independently. The Windows was doing a software bridge of them. This means that every multicast frame that one of the adapters would get would be copied to the other two adapters. This is what a bridge does; multicast (public) traffic is sent everywhere.

So imagine a scenario where each of these three adapters is in turn bound to a virtual switch inside the server. Well the virtual switch itself will send out multicast traffic on every port. Then imagine that the physical switche which the physical network adapters are connected to is also replicating the packets. What you end up with is the same packet getting sent over and over again. I have no idea whether it was three times per iteration or six times per iteration or how many it was but I do know that as soon as I plugged in the second adapter into the physical switch I got a lot of traffic very quickly.

So the mystery was somewhat solved. The packet loss was because I was accidentally flooding the switches. I had created a wiring loop — even if part of that loop was completely virtual. Fix the teaming and the problem went away. The network started working just fine.

So why did the network ever work? Well, eventually the switches were doing flood protection and shutting down some of the ports — but this took 15 minutes or more in some cases. So about the time I’d really get into looking at the problem the switch would have solved the problem — again back to diagnostics, the relatively poor diagnostics made it impossible for me to figure out what was going on with the Linksys — that’s really disappointing for a product that’s supposed to be marketed to people that can make mistakes.

power tower

What is a UPS, Really?

What most of us believe — that uninterruptable power supplies (UPS) today are uninterruptable – isn’t exactly true. What companies advertise as UPSs are in fact standby power supplies (SPS). What’s the difference? Well, in a true UPS the power never falters when the utility power is interrupted. There are several ways to do this but sometimes it’s done with a charger and an inverter. The charger converts the alternating current (AC) that the utility provides into the direct current (DC) that the battery can store. The inverter converts the DC into AC. It’s also been done with flywheels and other approaches too but the result is the same. The problem with this approach is that it’s inefficient. You lose some of the power by doing the two sets of conversions. The benefit is the output power is “as smooth as a baby’s bottom.” Because of the efficiency loss, only the most specialized applications use UPS.

Most of the “UPS devices” that we see in the market are really SPSs. The SPS work by keeping the load (usage) on the utility power while monitoring it. It’s also running a charger to ensure that the internal battery is always fully charged and ready to deliver power. Once the utility power falls out of range because of over voltage, under voltage (brown out), or outage (black out) the SPS transfers the load to an inverter. The inverter keeps the load going while the utility power is out. After a minimum switchover time and the utility power reentering a safe zone the load is transferred back to the utility.

The minimum switchover time is designed to prevent rapid transitions between utility power and inverter if the utility power isn’t stable. That’s important when you consider that during the transition to the inverter and back to utility power there’s a small gap in power. Most devices today can handle a small gap every now and then but they can’t take many of them in a small period of time.

Most devices (as opposed to lights or machines) today are actually internally running on DC current. From the computer to the DVD player internally they’re converting the AC power back into DC power for consumption. This can be done a few different ways but for the most part this is done through a switching power supply (sometimes called a switched mode power supply). This type of design has a small amount of capacitance depending upon the specific design. Capacitance is like a small battery. It’s the ability to keep the output side going with small fluctuations in the input power.

Some switching power supplies have a large amount of capacitance and others have a smaller capacitance. The problem is that sometimes when you couple a SPS with a switching power supply you can have a problem when you have a switching power supply with a low capacitance and a SPS with a high switching time you can run out of power before the SPS has made it to transfer the load to the inverter.

The impact of this is the device has a short power outage and reboots. If the process of rebooting is quick you may not even notice it. However, if your device takes a while to reboot it will be frustrating — and very hard to find the source of the problem. Most of the SPSs in use today don’t have monitoring or logging. Without monitoring or logging you don’t really know that the SPS switched the load to the inverter — and caused the momentary power outage. Larger units typically have this sort of logging like the RU2200 with the network management (Ethernet) card in it that I use to keep my virtual machine host operational. Take a look at the output of an event earlier this year.

You’ll see that several times the system transitioned to battery power for two seconds – the minimum switching time. You’ll also notice that even on these devices it’s somewhat frustrating because the events are scattered in with other messages – like the DHCP release being renewed. I’ve blogged before that many issues with technology are the result of bad power. That’s true even when you’re trying to ensure that the power is good.

In the case of the virtualization server I’ve got plenty of capacitance in the power supplies (they’re oversized for the load on them which tends to increase capacitance) and the RU2200 has a relatively quick switching time so I’m good. However, my Linksys/Cisco SGE2000 connected to a CyberPower CPS1500AVR doesn’t work so well. It has a tendency to reboot – and lose its configuration but that’s another story… I can figure out what happened because I check the other SPSs to see that they transferred – and I can infer that the CyberPower transferred power since they’re on the same power source.

Keep an eye out when you’re buying a SPS in the clothing (or branding) of a UPS.

Just How Hard is it? (To Find SharePoint Skills)

I’ve been watching an interesting discussion about the Shortage of SharePoint Skills based on a blog post by Nadir Kamdar and followed up by Doug Ware. The conversation has been brewing for a few months and I wanted to provide five of my thoughts on how easy or hard it is to find SharePoint skills.

First, SharePoint is a big product. It’s a product that no one person can really expect to know completely. I run in some circles with really smart folks and folks who’ve been on SharePoint for a long time. We’ll all admit that we learn something new about SharePoint all the time. For some of us it’s daily, some of us it’s weekly – but we’re always learning something new about SharePoint. Here’s an analogy that I think helps the business to understand how they have to think about SharePoint as a platform.

The other platform most organizations have is Microsoft Windows. Sure it’s an operating system but it’s also a platform. The organization doesn’t expect one person to know everything about Windows. Sure mid-sized and smaller organizations ask one person to know everything but everyone knows at some level that this isn’t realistic. There are specialists around Active Directory including Kerberos and Federation. There are specialists around storage including quotas, DFS, file replication, quotas, file classification infrastructure, etc. There are specialists around networking including DNS, DHCP, etc.

Expecting any one person to know every aspect of Windows deeply isn’t really realistic. There are a handful of people I know – including the Microsoft Certified Masters for SharePoint that come close to this but in general expecting to find that one expert isn’t something every organization can expect. Instead of hiring one expert, hire a few.

Second, Build Don’t Buy. Rob LaMear of FPWeb.net commented (in a Linked in group) that FPWeb.net “bake” their own engineers and developers. I’ve pretty universally recommended this strategy to customers for the last several years. I generally offer a few hours a week to review their new SharePoint folks progress whether that’s a new developer or IT Pro. It works out well because they get an employee that’s well trained – over time – based on the same apprenticeship model that’s worked for hundreds of years. I’m not saying that you shouldn’t look to hire SharePoint folks if you can find them – I’m saying, I don’t expect that you’ll be able to find them. You have to be prepared to build your SharePoint professionals when you can’t buy them.

Third, you don’t need a developer for every SharePoint project. When all you have is a hammer everything looks like a nail. That is, a developer always wants to develop. Ignore the business need. Ignore the platform’s capabilities. They want to develop. This isn’t always in the business’ best interests. I advocate the Value of Imperfect SharePoint Solutions. I believe that you can get a ton of value with out of the box functionality. SharePoint is a platform. Find the right resource to leverage the platform – that’s often a business analyst.

Fourth, SharePoint is more restrictive than ASP.NET. I sometimes use the Statue of Liberty as an illustration about developing for SharePoint. I use this illustration because SharePoint is all about leveraging what you’ve got. If you look at the Statue of Liberty there are really three distinct layers. There’s a relatively large star shaped platform that the pedestal sits on. In the analogy this large star platform is .NET – or more specifically ASP.NET. There’s a ton you can do – but the relative height or what you can do out of the box is relatively small. In other words, .NET is broad but not deep. The pedestal is SharePoint. It’s relatively speaking tall. In fact in the Statue of Liberty’s case the pedestal is roughly 40 percent of the total height – think about that 40% the total height. On top of this sits Eiffel’s infrastructure and Frédéric Bartholdi’s sculpture – what everyone thinks of as the Statue of Liberty. In the analogy the sculpture is the work that you build on the SharePoint platform. It’s got all of the quirks, intricacies, and wrinkles of the business problems that it solves. When you compare this with something like the Eiffel tower which stands more than 4 times the height of the Statue of Liberty you could say that you want the flexibility to build an Eiffel tower.

However, you’ll note that the architect (or structural engineer if you prefer) for both projects was Gustave Eiffel. Both are appropriate at different times. It’s true that SharePoint is more restrictive than ASP.NET. However, it’s also true that for workloads that SharePoint is good at, I can build a solution faster, cheaper, and I dare say better – than I could build in ASP.NET – because I have a great advantage in the platform that I’m building on top of. I don’t have to figure out document storage, versioning, workflows, navigation, security, etc. I get to use all of that stuff for free. All I have to do is build on the platform.

Fifth, Training is possible! I have spent a lot of effort over the last few years to augment the training opportunities that specialized training companies like Critical Path Training and Mindsharp offer with more standardized offerings that anyone can get. I’ve released the SharePoint Shepherd’s Guide for End Users including corporate licensing options and coming soon I’ll have classes that any Microsoft training center can teach. I was indirectly involved in Microsoft Learning’s 10175 course for SharePoint Development (corresponding to the 70-573 exam) and was the lead author for Microsoft Learning’s 10232 course for Professional SharePoint Development (corresponding to the 70-576 exam). Yea, the MS learning courses are for-pay resources but they’re scalable – you can get them from your local training provider. Historically the SharePoint courses from Microsoft hadn’t been very well regarded – on the developer side I can say that they’re much better. For that matter I can say that the exams are more focused on important skills rather than minutia as the 2007 exams were sometimes accused of. I also spent a great deal of time working with Microsoft Patterns and Practices on the SharePoint Guidance – free guidance on the best way to build SharePoint applications. In 2008, I helped launch www.mssharepointdeveloper.com which has been updated for developing on SharePoint 2010 – all free content on how to develop with Visual Studio 2010 and SharePoint 2010. I know the folks that worked on the exams and courses on the IT Pro side as well – it is solid content like wasn’t available for SharePoint 2007. I’m also working on some other courses that will make their way out to the public in 2011 that will cover more specialized workloads for SharePoint.

I should say that I take issue with some of Nadir’s initial post because there are some technical inaccuracies and some things which are misleading. There’s a focus on some of the details about navigation. The platform is actually quite extensible in this respect. It supports multiple navigation providers and any menu control that works with navigation providers. I’m not saying everything is possible out of the box but the areas he picked on are quite easy to extend. That’s what’s great about the SharePoint platform – it is extensible.

Why SharePoint? Seven reasons why a business user cares about SharePoint

Continuing in my video series, I’ve got a short video about why an end user or business user might be interested in SharePoint. Please feel free to forward this link to the folks inside your organization who don’t understand why they care about SharePoint.

Workflow vs. Business Process Management

In another one of my quick thoughts videos I cover the difference between workflow tools — like the out of the box SharePoint workflows — and business process management.

Quick Thought Videos – 10 Myths

One of the things that I hear fairly frequently is “that discussion was worth the price of admission.” Of course, the specific topics that folks are talking about change from presentation to presentation, however, the theme is the same. There are some conversations that are just so value they’re worth the entire presentation. In thinking how to address this I’ve decided to start posting some quick thoughts videos. They’ll be less than 10 minutes or so each and will cover whatever random topic I’ve heard folks say is valuable – or whatever topic folks are asking for. (Email me if you’ve got a topic that you want to see me talk about.)

The first quick thought is a revisit. I used to do a talk titled “The Top 10 Myths of SharePoint 2007.” I wanted to revisit this conversation from the context of SharePoint 2010 since some of the myths are still myths, some of them aren’t so “mythy” any longer, and some have been completely removed. I’ve posted a WMV version and a MP4 version. If you like it let me know.

If the concept is well received I’ll spin up a separate vidcast feed so you can subscribe to them as they come out. Right now it’s just a test to see how well the face-to-face experience translates to video.

On Influencer50 and the SharePoint Influencer50

First, I’ve been struggling with this post for a while now. I realize that there’s simply no way to post this post without some folks thinking that I’m just being “sour grapes.” However, I’ve had so many people reach out to me and ask me about this or talk to me about it that I just don’t feel like I can be silent about it any longer. I know that many of my friends have elected to be silent on this topic because they believe that it can be ignored. I, however, am concerned that if it remains it will create problems for users because they won’t realize just how bad the list is. If you don’t know what I’m talking about, Global360 published an Influencer50 report on their web site. There have been numerous folks commenting – some publically – that the list is hogwash. While I fundamentally support the concept of better understanding your market, I think the list itself is fundamentally flawed.

The basic set of comments that I’ve heard about the project is “Who are these people?” That’s a pretty impactful question when the list is supposed to be a set of folks who are the influencers in the market. Obviously, I’ve been asked why my name isn’t on the list – and while I must admit my curiosity, I’m much more interested in the folks who actually are on the list. I have a belief about how the list may have become fundamentally flawed – however, I’m way ahead of myself. Let’s talk about the public background that’s been explained and expand it with some additional data.

Global360 and KnowledgeLake commissioned Influencer50 to create a report on the most influential people in the market. That’s actually one of the smartest things I’ve seen in the industry (IT) in years – organizations that recognize the value of research in allowing them to target their marketing efforts. I’m working to better understand how marketing works so that I can better sell the SharePoint Shepherd’s Guide for End Users. I think the idea of understanding your market and influencers better is a great idea. However, I’m convinced that they just stumbled across the wrong folks to “help” them.

How did they stumble across the Influencer50 folks? I don’t really know. However, their claim to fame is the book Influencer Marketing. The book is published through Butterworth-Heinemann which is an imprint of Elsevier – a respected publisher. However, when you look more closely (more closely than either Global360 or KnowledgeLake would have reasonably been expected to look) you’ll see that the sales for the book aren’t that great. Amazon’s sales rank is notoriously fickle (in publishing circles) however, as I write this the Influencer Marketing book rank is 835,415 and by comparison The SharePoint Shepherd’s Guide for End Users (2007) is 31,287. Whether or not you’ve read The Long Tail you’ll know that there’s a big difference in sales between these two ranks. Having read it you’ll know that people way out on the tail can continue to make money. Consider that we’re talking about books that were released at roughly the same time (Q1 2008) and that mine was self-published so it has no back end marketing engine behind it (like you would expect from a publisher and an author of a marketing book.) Wouldn’t you think that a book by a respected publisher on marketing would out sell my little self-published book? Again, I know the Amazon sales rank number is not very reliable but it’s public so everyone can take a live look at the data whenever they want. You can draw your own conclusions but the one I drew was that a book about marketing didn’t sell very well or doesn’t continue to sell very well. It’s not something that seemed to resonate well for the market and if the authors are experts at marketing and the influencer concept is the key concept why didn’t it?

If the book doesn’t appear to be selling, what do we know about the organization? Not a ton really. Several of the links on the web site don’t work, there is a limited amount of content. The content that is there is repeated or framed into small windows to create the appearance of being more than it is. What do we know about the process? Well, there’s the new blog post on EndUserSharePoint.com titled Criteria for Selection of the SharePoint 50. That calls out 8 criteria. However, they’re not clear about how these are calculated. So rather than try to understand the details of the process, let’s look at what appear to be the foundational concepts of the book (I’ve not read it.)

The Influencer50.com site describes the book “‘Influencer Marketing’ is the next serious book in the tradition of The Tipping Point (Gladwell), The Influentials (Berry and Keller) and Purple Cow (Godin). The book demonstrates clearly, authoritatively and with numerous real examples Seth Godin’s widely accepted view that it’s ‘useless to advertise to anyone except connectors with influence.'” So let’s get past the marketing hype. They’re saying that they’re going to show you how to market (and identify) connectors with influence. But what are connectors? Malcom Gladwell’s book Tipping Point made the point that connectors are folks who are regularly make introduction. Gladwell talks about them in the context of Mavens – trusted experts in the field. Ideally you want someone who is a trusted expert in the field who is connected to a Connector to leverage that knowledge. The other piece of the marketing statement is ‘with influence.’ Dictionary.com defines influence in part as ‘the capacity or power of persons or things to be a compelling force on or produce effects on the actions, behavior, opinions, etc., of others’. That makes sense. Influence can change behavior. Organizations want to change behavior toward buying their product. (There’s not necessarily any malice in this. It can be that the organization believes that their product is in the influenced person’s best interest.)

I’d say that they missed more than a few books on the concepts that they are talking about. Specifically, Linked and Groundswell come to mind. I suppose that Wikinomics is also important because what we’re talking about is a set of mass-market, social interactions that generally don’t have any money changing hands.

We take Nick Hayes and Duncan Brown at their word that their work is based on the work of Malcom Gladwell, then we’re got a basis for understanding. I should say that Malcom Gladwell is an interesting individual in his own right. He deserves a bit deeper investigation because he’s an excellent researcher and writer. In addition to The Tipping Point, I’ve also read Blink and Outliers. Back to the point, we’ve got to tear apart Malcom Gladwell’s initial assertion about the value of connectors and their influence. In his book he made the point that connectors aren’t really valuable in themselves. They’re the conduit to connect to the get to the mavens. I believe, based on Nick Hayes responses in the interview with Global360 posted on EndUserSharePoint.com that they’ve tried to take this into account because they’ve made it clear that the loudest voices aren’t necessarily the influencers. True enough. However, I believe that fundamentally the approach that they’re taking cannot work and here’s why:

You cannot measure what you cannot see

Most of the connections that happen and most of the influence that is exerted simply cannot be seen. When I get asked by a client for a Ruby on Rails architect there’s no way you can see the email exchange. Nor can you see that my response included Mike Gunderloy who I met years ago when he was developing for Microsoft technologies and serving as a lab manager for 101 communications. There’s no way to see (from the outside) my Outlook contacts.

Influencer50 attempts to infer the effectiveness of a connector by public information – marketing information. However, the public information is noticeably skewed and incomplete. Let’s take an acquaintance for whom I have great respect, Susan Hanley. (She made the list by the way.) It’s hard to see the folks that she respects and refers folks to because here web site doesn’t have a set of outbound links from her web site. Thus there’s no way to see who she values or where she’ll send people if they ask her about any topic. There’s simply not enough data to know who she trusts – and who you should trust if you trust her.

My point is simply that it’s foolhardy to believe that there’s enough information to make an assessment of someone’s influence based on public information. Of course, this opens the opportunity that Influencer50 did interviews and got Sue to describe who she would recommend for different things. That would be fine if Influencer50 knew the right questions to ask about the important areas in SharePoint but candidly I don’t know anyone that does.

Let’s take for instance Global360’s market – business process management. If there were to focus on SharePoint Workflow (the most equivalent concept in SharePoint) they should have come up with three names: David Mann, Wouter van Vugt, and me. Why do I say that? Well, between the three of us we’ve got almost all of the public information and tools on workflow. David wrote a book. I’ve written book chapters. Wouter runs a codeplex project with helpful tools. With a handful of exceptions David, Wouter, or I are the ones speaking about workflow at conferences. None of us made the list. So clearly the question wasn’t asked about workflow influencers wasn’t asked. (I realize the preceding borders on “sour grapes” – you could leave my name off the list and the impact is the same but I didn’t feel like leaving my name off of the list would have been genuine.)

I realize that I’m saying if they did ask the question they should have fallen back and checked the market to see if Sue’s answer matched what the market was seeing – which I believe would have been prudent – but that goes against the idea that they were doing telephone interviews to figure out the connections. The reality is I know they didn’t have conversations with everyone on the list. The list was initially intended to be private but was made public because Global360 felt like they could get some marketing gain from it.

Honestly, I don’t know KnowledgeLake’s influencers well enough to tell you who that list should be and who didn’t make it. I can’t tell you who are the folks that you would look to for ECM guidance on SharePoint and whether KnowledgeLake is the right answer or not. Having been in and around the ECM market outside SharePoint in the past I know that I’ve not seen anyone talking about the kinds of issues that customers doing ECM think about.

You cannot predict the weather

I remember watching a TV show years and years ago which was talking about how scientists and researchers had created these massively complex weather models leveraging knowledge of fluid dynamics and other disciplines. The show was on chaos theory and the fact that there are some things that are difficult to predict even when you know all the data. The key experience was when the researcher fed data back into the program he was developing and he got a different set of results. His discovery was that he had rounded his values to 3 decimal places when he put the data back in and the difference between three decimal places and the computers values made a difference when he reran the simulation. Thus for complex formulas to work you need exceedingly precise data. Don’t believe me? How often is your local weather man wrong about the weather? I sometimes joke it’s the only job that I know where you can be wrong 2/3rds of the time and still keep your job. (I’m not picking on the people simply the belief that it’s a solvable problem.)

When you’re looking at influencers how can you possibly see enough detail about the interactions to accurately predict or influence them? Another set of examples. I’ve had really bad interactions with two corporations. First, Verizon back when they were GTE. I had a cell phone cloned (think analog.) They handled the problem so poorly that I refused to ever do business with them again. Second, Bright House/Road Runner and I had some issues where their customer support was so bad I’ll never do business with them again. The first example you wouldn’t have known. The second issue, you would only know because of my blog post. If you were trying to predict my behavior with regard to phone or internet providers you might assume that I’m flexible on these topics – as most people are. However, these details would make it clear that this isn’t the case.

Conversely, if you ask me about where to go for SharePoint IT Pro training, I’ll have no opinion. I won’t provide any influence to anyone because I simply don’t have an opinion to try to use to influence someone else. You’ll never get enough details to determine where someone will – and won’t have an opinion.

You can’t see the whole picture at one time

I made the point earlier that the question about SharePoint Workflow influencers probably didn’t get asked because that sphere of influencers I know pretty well. I think there’s another truth here that goes beyond asking the right question. The truth is that every market has a certain amount of grouping that happens. For instance, there are a set of instructors that work for Critical Path Training. They tend to talk with and work with folks from Critical Path Training – and some others. If you start with Andrew Connell or Ted Pattison (both on the list) you’re going to hear about the folks that they know well – and you’ll add folks that they believe are influential. You’ll miss folks who they don’t regularly deal with. They may be very influential but they may not be in the normal contacts of a person. Of course, if you go maybe 3 connections out you’ll find every good candidate but if you do that you’ll have thousands of folks you’re evaluating to determine if they’re truly influencers or not.

You either have to constrain your data mining to be very so small as to be incomplete – or you have to make it so large as to make the filtering process very difficult. Andrew Connell has 457 connections on Linked in. Scot Hillier has 182. So for round numbers let’s figure 300 connections per person. For simplicity assume that overlap is half of those contacts so 150 unique contacts per person if you go three levels out and you’re looking at roughly 3 million people. Obviously that’s not possible to even consider.

Let’s look at this from another angle. SharePoint’s a very big product. If you’re working as an IT Pro in a mid-sized organization you probably don’t know Andrew Connell. On the other hand if you’re doing WCM you probably don’t know about Chris Geier, his focus has been in workflow/BPM and more recently in storage management. The product is so big that most folks don’t even try to cover it all. There are folks that know me for the SharePoint Shepherd’s Guide and don’t know that I do a ton of high-end SharePoint developer content or that I’m one of the few folks that do workflow in SharePoint. So there are pockets of the SharePoint market that don’t really touch one another – or touch each other so tangentially that it doesn’t cause connectivity. So I don’t believe it’s even possible to define a single set of influencers over SharePoint. I think that it’s like trying to define influencers on Windows – or on Computing in general. Some folks will have great influence in their areas but beyond Bill Gates, Steven Jobs, Steve Balmer, and Larry Ellison – who are they? And how influenced by Larry Ellison are you if you’re not running Oracle software?

You can’t influence what you don’t recommend

From my perspective, you can’t influence what you don’t recommend. The nail in the coffin of the SharePoint Influencer50 for me was the inclusion of John Newton – Alfresco’s CTO and Chairman on the list. Their advertising has been consistently anti-SharePoint. In fact, most of the time I see their ads jump up on the search engines when I search for SharePoint. Their ads that try to lure people away from doing SharePoint at all. I suppose there’s an argument that they do have some influence on the market but they don’t have influence on the market once a person has decided to use SharePoint. Their influence is over the initial decision which isn’t the space that we spend most of our time in. I have had a few competitive solutions where the user hadn’t decided on SharePoint yet but I can tell you that none of the questions were about Alfreso. They’ve always been about large WCM implementations and those competitors.

How is it that a person that leads a competitive solution is any influence on the market once the decision is made? What this says to me is that Influencer50 didn’t bother to do any sanity checking on their results to ensure that they were reasonable.

Just Stop it

Before I close out, I have to say congratulations to everyone who has their name on the SharePoint Influencer50 list. I can on the one hand tear apart the exercise’s fallacy and at the same time say that I’m happy that many of the folks that I respect are recognized for their influence. I have not conflict with this. My issue isn’t and has never been the people who were recognized. I’m just convinced that the whole exercise was a fool’s errand.

I wish people would stop trying to publicize a list of the 100 most popular blogs, Top 50 Influencers, etc. Let’s just continue to do the things that are necessary to move the market forward. Bringing things full-circle… I fully support the idea of better understanding the market. I think it’s a monumentally bad idea to pass of this sort of an exercise as a marketing activity in and of itself.

If you agree, I have one small ask. Please post a link to this blog post in a blog post or tweet about this blog post. There’s a delightful irony in making the most influential post about SharePoint one about how bad the influencer list is.

Announcing Availability of The SharePoint Shepherd’s Guide for End Users: 2010 Book

After many months of hard work and more than a few struggles, I’m happy to say that I have in my hands a printed copy of The SharePoint Shepherd’s Guide for End Users: 2010. Before I talk about the upgrades that the 2010 version of the book has over the 2007 version of the book I want to take a step back and explain the journey that I’ve been on with this project – to tell the story of the book’s existence. While I’ve talked about the self-publishing process, I did so from the perspective of the financial impacts and didn’t focus much time on why I decided to self-publish. However, I think there’s an important story to hear about how the SharePoint Shepherd’s Guide came to be. Of course we’re now in our second edition so the story is really about the first version.

For most of my professional career I’ve been a consultant. I’ve worked for myself. I’ve worked for a large accounting firm/consulting company. I’ve worked for smaller consulting companies. I’ve more or less always been doing full solution creation. I’ve been taking a set of parts and assembling them into solutions for customers. Sometimes those solutions involved servers and sometimes those solutions involved software. During that time I noticed a disturbing situation that consulting companies find themselves in – and customers don’t realize that they’re creating such stress inside the consulting companies.

Consulting companies hire consultants – that is they hire folks who can go out and do work at a customer location. They don’t necessarily hire folks who are the best at documenting or writing documentation. In fact, by and large, the consultants I’ve met over the years are challenge oriented – they’re always looking for the next challenge to overcome and while writing documentation can feel challenging, it’s not exactly the kind of challenge most consultants are looking for. Hey want to create the next solution and documentation feels like busywork no matter how important it can be.

On the other hand, customers often wisely ask for documentation on the systems that the consultant has built for them. They want to be able to maintain it once the consultant is gone and they want to make sure that the users use whatever was built because a system that isn’t used is useless. For the most part the only person who can document a system is the person who built it and so consulting companies ask the consultant who did the work to write some documentation. What follows often succeeds but only after a great gnashing of teeth. The consultant begrudgingly does whatever it is the customer wants in the way of documentation – and absolutely not a word more than is required.

The problem is that this sets everyone up for negative feelings. The consultant doesn’t like the work of documenting so feels some angst for both the consulting company and the client for making them do this work. After all, don’t they know that the consultant is highly valuable and can’t be bothered to do such things as documentation? (Tongue planted firmly in cheek) The consulting company is frustrated because they want their consultant on the next project. The customer in the end is rarely truly satisfied with the documentation provided because the goal was “minimally acceptable” rather than excellence.

What’s perhaps more criminal about this whole process is that it’s repeated for each customer … over and over again. Consultants find the end of each project painful. Consulting companies realize that key resources can’t move on to the next project. The customers may like the solution but often struggle with the level of detail in the documentation. Most solutions built on top of SharePoint have a high amount of overlap in what must be documented. After all SharePoint is a platform and the platform does a lot. The way that items are edited, columns are added, lists are created, etc., are all common to most of the solutions built on SharePoint. Most of that documentation isn’t unique or different from one project or customer to the next.

My situation as a consultant is a bit different. While I’ve been consulting I’ve been writing and editing during the nights and weekends. I’ve got over 100 book projects to my credit and counting everything 20 book projects with some sort of author credit. So for me writing isn’t a burden, it’s therapeutic. It’s something that I can do to unwind, to relax at the end of a day or week. As a result I don’t mind writing documentation for customers. To me it’s a nice change of pace. (Yea, I know some of you are reading this thinking that I’m sick – I’m ok with that.)

One day I was going to lunch with my buddy who shared that he was writing the same documentation for how to edit a list item in SharePoint for what seemed to be the millionth time. He was exasperated because every new client meant doing the same stuff over and over – because if they were going to pay to have it custom generated then they expected their screenshots in it. Of course, that just meant he had to redo everything. During the discussion the idea came to me … what if you could standardized most of that and sell it as a package and then you would just have to fill in custom details with a little bit of work – instead of starting from scratch each time. It could dramatically reduce the amount of custom frustration and create a better set of deliverables in a fraction of the time.

Thus was the genesis of the SharePoint Shepherd’s Guide. That was the moment that I knew that I needed to generate content that could be reused for corporations who needed documentation for a part of their custom solution – that wasn’t really custom. Thus began the materials that would eventually become the book. I realized that having a set of corporate training materials for end user SharePoint concern was going to be an awareness problem. There are dozens of folks that have materials – if you know where to look. However, most of those organizations struggled to get the message out about their materials. They also didn’t scale down to the smaller organizations. The model for materials really works well for organizations that have 100 people or more but corporate licenses just don’t execute well for smaller organizations. With my background I knew that the answer had to be a book. Smaller organizations could purchase the book itself through distribution and the larger organizations could get the economies of scale with the corporate licensing.

Sometimes I describe the SharePoint Shepherd’s Guide as a book that is not a book. That sounds odd even to me; however, it makes sense when you realize that it’s a way for larger organizations to evaluate the materials and for smaller organizations to buy the materials in a way that works for them. So why am I so happy about the release of the book? Because for me it’s the way that people get to see all of the hard work. It’s the way that more people can benefit from the things we’ve done. With that in mind, let’s take a look at the new book in comparison to the previous edition.

I’ve already given some of the stats for the book in my previous blog post. However, things have changed a bit as I laid things out and got to a final stage. Let’s go through the numbers:

2007 2010 Increase
Page Count 377 556 47%
Tasks 116 181 56%
Index Pages 0 18
Decision Trees 0 6
Background Chapters 0 4

 

So what does all of this mean? Well, in short we tried to address every single concern that we heard about the previous version. This includes desires for some different types of content in places as well as the desire for an index –something that is only necessary for the printed book.

I’d encourage you to go learn more, or buy a copy at The SharePoint Shepherd’s Guide for End Users web site.

SharePoint Workflow and Two Events at Once

SharePoint workflows are really powerful – but debugging any workflow can be a very challenging exercise. You, obviously, have to drive through the process pushing an item one step to the next. That can be difficult if there are mandatory delays, retries, etc. Most of those things are just painful but generally speaking pretty solvable. However, there are some things in workflow that are really hard to get to. I ran into another situation with workflow that was hard to find.

When we were doing some stress testing we managed to break one of my workflows. After some careful work we realized that it happened anytime the workflow got two events at the same time. The second event would disappear. Poof. It just wouldn’t get handled at all. The nastiness of this is that if the second event was a task SharePoint would have locked the task and so it was no longer possible to modify the task – and because of this the workflow would never be able to be moved to completion.

I’m happy to say that the fix for this issue is in the August 2010 Cumulative update for Windows SharePoint Services 3.0. I tested it with some really abusive situations. In my validation test, I put the thread to sleep for 30 seconds after getting an event. I can say that the events are eventually delivered. However, I should caution that events aren’t always processed in the order that they came in. If I have three events, 1, 2, and 3 I’ve noticed that event 1 is processed then the workflow waits for the timer job and event 3 is processed and after the workflow goes back to sleep again event 2 is processed.

The net of this is that you should try to avoid scenarios where you have to get events in a prescribed order even after you’ve applied this fix. However, at least your workflows won’t break if two events come in at the same time – like for instance if you are asking for approvals from many people as was the case in our situation.

Capturing Page Load Times – FiddlerScript to the Rescue

So I have a client who has locations all over the world and we’ve been doing some analysis of some performance issues with SharePoint.  We believe that we narrowed down the issue to SQL server not having enough memory.  The key indicator for SQL Server memory is SQL Server Buffer Manager: Page Life Expectancy (PLE) – anything less than 300 (seconds) isn’t going to perform optimally.  However, we needed some “proof” that changing the SQL memory changed the performance – for people across the world.  The solution, rather than buying and setting up expensive monitoring all over the world was to get some of the users to run Fiddler.  If you’ve never seen the tool you should go check it out now.  (You can go look at an article I wrote in 2006 if you want to see what I was thinking 4 years ago.)

The problem was that there’s no quick and simple way to get the session timers out of Fiddler.  That is except that Eric Lawrence (the author of Fiddler) is a genius.  He added scripting support to Fiddler so you can script the stuff you need.  With a few looks at the cookbook, some trial and error, and a few pointers from Eric, I wrote some script that creates a tab separated value file which can be imported into Excel.  The file has all of the key timers and the number of milliseconds that elapsed.  You can go to Rules-Customize Rules (Ctrl-R) to customize the rules – or you can download the handy script editor.  I added a tools menu option to write all of the session timers to a TSV and a context menu option to write the selected session timers to a TSV.  The code is below if you want to do this yourself.  By the way, I used a tab separated value file because I had a situation where some of my URLs had commas in them.  (Don’t ask)  I won’t guarantee this is the absolute best way to make this all work – but it’s functional.

public static ToolsAction(“Write all session timers to TSV file”)
function WriteAllSessionTimers()
{
       var fileName = GetSaveFileName();
       if (fileName != null)
       {
              var oSessions : Fiddler.Session[] = FiddlerApplication.UI.GetAllSessions();
              WriteSelectedSessionTimersToFileName(oSessions, fileName);
       }

}

public
static ContextAction(“Write selected session timers to TSV file”)
function WriteSelectedSessionTimers(oSessions: Fiddler.Session[])
{
       var fileName = GetSaveFileName();
       if (fileName != null)
       {
              WriteSelectedSessionTimersToFileName(oSessions, fileName);
       }
}

public
static function GetSaveFileName()
{
       var sfd : System.Windows.Forms.SaveFileDialog = new System.Windows.Forms.SaveFileDialog();

sfd.Filter = “Tab Separated Value (*.tsv)|*.tsv|All files (*.*)|*.*”;
       if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
       {
              return(sfd.FileName);
       }
       else return (null);
}

public static function WriteSelectedSessionTimersToFileName(oSessions: Fiddler.Session[], filename: System.String)
{
       try
{

if
(oSessions == null || oSessions.Length == 0)
              {
                     MessageBox.Show(“Please select sessions first”, “Warning”);
                     return;
              }

var
sb: System.Text.StringBuilder = new System.Text.StringBuilder();
       sb.Append(“Host\tPathAndQuery\tMimeType\tClientConnected\tClientDoneRequest\tServerConnected\tServerGotRequest\tServerBeginResponse\tServerDoneResponse\tClientBeginResponse\tClientDoneResponse\tTotalTimeMS\r\n”);
              for (var looper=0; looper<oSessions.Length; looper++)
              {
                     var ts: System.TimeSpan = null;
                     var dtStart: DateTime = oSessions[looper].Timers.ClientConnected;
                     var dtEnd: DateTime = oSessions[looper].Timers.ClientDoneResponse;
                     ts = dtEnd dtStart;
                     var mimeType = null;
                     if (oSessions[looper].oResponse.headers.Exists(“Content-Type”))
                     {
                           mimeType = oSessions[looper].oResponse.headers[“Content-Type”];
                           if (mimeType.indexOf(‘;’) > 1) mimeType = mimeType.substr(0, mimeType.indexOf(‘;’));
                     }

sb.Append(oSessions[looper].host).Append(‘\t’)
                           .Append(oSessions[looper].PathAndQuery).Append(‘\t’)
                           .Append(mimeType).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ClientConnected.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ClientDoneRequest.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ServerConnected.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ServerGotRequest.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ServerBeginResponse.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ServerDoneResponse.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ClientBeginResponse.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(oSessions[looper].Timers.ClientDoneResponse.ToString(“MM/dd/yyyy h:mm:ss.ffff )).Append(‘\t’)
                           .Append(ts.TotalMilliseconds).Append(“\r\n”);
              }

var
sw : System.IO.StreamWriter = System.IO.File.CreateText(filename);
              sw.Write(sb.ToString());
              sw.Close();
              sw.Dispose();
       }
       catch (excpt: System.Exception)
       {
              MessageBox.Show(excpt.ToString());
       }
}

 

Recent Posts

Public Speaking