My Foray Into Office Feng Shui

Sometimes reorganizing a space, like a home office, generates greater benefits than just a more organized space.

Just to level-set at the start: this is not a technical post, and I’m talking about my personal office – not Microsoft Office. Now, with those disclaimers out of the way …

What Exactly Am I Writing About?

When we moved into our current home six or seven years ago, one thing I felt I needed was a proper office. In our old house, I worked out of our unfinished basement, and I’ll be honest: it was depressing. Despite my attempts to “liven up the place” with things like Christmas lights, the only natural light I received while working was provided by three small glass block windows.

And when I say the basement was “unfinished,” I really mean it. Through sheer dumb luck, the table I worked at was also the location of some sort of recessed drain access in the cement floor. I managed to get my office chair wheels stuck in that recess about half a dozen times a day. My chair would nearly tip over whenever that happened.

I think the image I’m painting is bleak enough. I’ll spare you from additional details, like when our sewer line collapsed and the resulting back-up invaded my “workplace.”

I Needed A Proper Office

Hopefully that point is obvious.

The criteria I had when we were looking for a new house six or seven years ago was an office that (a) was at ground level (or higher), and (b) had a proper window. Nothing too excessive, and easily met by my current office.

Below are some images of how my office was set up when we first moved in. Many people say it kind of looks like a college dorm room with the Christmas lighting – a point I can’t argue against.

This configuration worked well enough for a while, but over time I grew more and more dissatisfied with it for the following reasons:

  1. I didn’t make particularly good use of the space I had … and over time, piles grew on every exposed surface.
  2. I used the filing cabinet (it came with the house), but I hated the filing cabinet and the way it jutted out into the room.
  3. My wife regularly registered grievances with the one-off, mismatched furniture. And she hated all the cords everywhere. And the fact that my lighting choices were circa 1995.

Why Did I Do It That Way In The First Place?

If you’re asking that question, it’s a good one. The reason, quite simply, was time. The week that we moved into our home was also the week my wife went in for breast cancer surgery. After the surgery came chemotherapy and then radiation treatments. If you’ve never been with someone going through cancer treatment, then I’ll give you the short version: it knocks them on their ass.

Brendan and Sabrina: Easter 2012

Our children were only about five at the time, and they were still in daycare on the west side of Cincinnati – a good 30-40 minutes away. So, with my wife out of commission, I’d have to run them to daycare in the morning, come back, and then do the reverse in the evening. Between taking care of the family and trying to find time to work, reorganizing my office was the last thing I had on my mind.

But redoing my office was a topic that kept coming up again and again. And so at the start of 2019, with encouragement from my wife, I decided it was finally time to do something.

Office 2.0: The Plan

About the only aspect of my office that I really liked and wanted to keep was the Ikea furniture that I purchased and put together just before we moved in (a desk and a corner table).

Step one of “my plan” was to start getting rid of a lot of old books and associated materials. Technology consulting is a brutal field to be in from the perspective of trying to stay up-to-date on changes and new trends. Most of the books on my shelves weren’t just old, they were ancient.

For example, as much as I loved Practical Standards for Microsoft Visual Basic, it was published about 20 years ago. The things I learned from reading it are still applicable today in slightly modified form (lots of good information/guidance on code readability, documentation, etc), but extended support on VB6 ended in 2008 – over ten years ago.

I ended up getting rid of most of the books I’d bought and inherited over the years. Any that other authors and friends had signed were spared (couldn’t let those go!), as were copies of books that John Ferringer and I co-authored. Other than those that met the narrow range of criteria, any books that were clearly out-of-date were expunged.

With the books gone, I was able to start removing the ugly bookshelves. In truth, it wasn’t a seamless process by any stretch. I had to stage a lot of my office content in the entryway and living room just so I had room to maneuver and manipulate the office space.

Rebuilding from the Ashes

No fires were set; I’m speaking metaphorically when I say “ashes.”

With the old bookshelves gone, I was able to put in new ones that did a much better job utilizing my limited office space. And I was also able to address one of my wife’s standing grievances; i.e., that nothing (or very little) in my office matched.

I again decided to look for bookshelves on Ikea’s site (since my computer desk and corner table were of Ikea design), and I landed on the Brimnes Bookcase. By my rough math, I could get four of them in the office, they were available in black, and I thought they’d work equally well for both books and storage.

When my wife and I got to the Ikea store in West Chester, though, Ikea only had two of the four bookcases in stock that I had come to pick up (despite me doing an inventory check before coming up and successfully purchasing four for pickup). So the remaining two bookshelves were delivered about a week after I got the first two, and I got to work on the two bookcases I had once we got home:

Below is a comparison of the front of my office both with and without the new Brimnes bookcases. I could have used a little more clearance on the sides of the bookcases nearest the office doors, but things went in pretty well.

Let There Be Light!

There were two more things I was hoping to achieve with my office reorg. One of them was being able to finally have some clear desk space, because I always had junk galore on every surface. I didn’t want to keep things that way indefinitely, but I simply had no place to put everything with the old office.

Once I had a place for everything in my office (and quite a bit of extra space, actually), then I should be able to adhere to a “clean desk policy” – or as close as I could get to it – with a little discipline. And I’m happy to report that I’ve largely been able to do that.

The other thing I wanted to do was “grow up” a little bit – at least with my lighting. I am in my mid-to-late 40’s, so I figured it was high time I upped my lighting game.

The immediate problem was that I really still loved multicolor lighting! With some hunting, I managed to find something that nailed my needs straightaway in a very adult/grown-up fashion: Philips Hue Lighting.

Hue Lighting is incredibly flexible. I opted for the bulbs and system that supports changing colors, and it’s wonderful. Let me be clear about an important fact, though: Hue is NOT cheap. It seemed that the cheapest way to buy a bunch of bulbs was to buy a few starter kits, so I have a couple of extra lighting bridges (to tie the lighting into the home wifi) I’m not currently using. If my existing Hue bridge ever goes south, I have a couple of backups.

Since Hue ties into Alexa, I control everything from the Amazon Echo devices we have in nearly every room. And the Hue App for smartphones makes editing lighting configurations easy – and comes with some defaults that produce nice results regardless of the number of Hue bulbs you might have active in the room.

The Results

Below are some office shots with all the bookshelves in place and nearly everything the way I wanted it. Even though I’ve got my lights turned on, these were taken during the day.

To see the true effects of the Hue colored lights, I had to take some night shots:

The last three shots in the series immediately above are of the same office corner; the only real difference is the Hue lighting preset I activated in the system before taking the shots.

Conclusions

In addition to now having an office that fits me better, I discovered a thing or two I really wasn’t expecting as I undertook the overhauling and process:

  1. For me, a cluttered office contributes strongly to my feeling of being unorganized. When I started clearing my desk off and putting things away more regularly, I felt much more “with it.” The effect was almost tangible in a way I never would have expected.
  2. Having room to actually put things away is important to maintaining control over your office environment. Heck, I would argue that addage is true in most rooms and environment. The saying “out of sight, out of mind” holds its weight for me.

Now that I’ve had my office squared away for a few months, I’ve begun the process of organizing the unfinished part of the basement which acts as my server room and hardware workshop. That area needs organization probably worse than my office ever did … but I’ll save that for another time and another post.

References and Resources

  1. Book: Practical Standards for Microsoft Visual Basic
  2. Microsoft: Search Product Lifecycle
  3. LinkedIn: John Ferringer
  4. Ikea: Brimnes Bookcase
  5. Product: Philips Hue Lighting
  6. Amazon: Philips Hue Starter Kit

Obtaining Performance Metrics for SharePoint Online Modern Pages

In this post, I’ll show you how to obtain page performance core metrics from Modern SharePoint Online pages. It’s easier and more reliable than trying to obtain the same data from classic pages.

Background

It was quite some time ago that I wrote my Five-Minute Page Performance Troubleshooting Guide for SharePoint Online – a little over a year-and-a-half ago, actually. Since that time, SharePoint Online (SPO) has continued to evolve relentlessly. In fact, one slide I’ve gotten into the habit of showing during my SPO talks and presentations is the following:

FiveYearWarning

The slide usually gets the desired response of laughter from attendees, but it’s something I feel I have to say … because like so many things that seem obvious, there’s some real life basis for the inclusion of the slide:

OldPost

The exchange shown above was the result of someone commenting on a post I had shared about limitations I was running into with the SharePoint App Model. The issue didn’t have a solution or workaround at the time I’d written my post, but Microsoft had addressed it sometime later.

BestBeforeDateThis brief exchange highlights one of the other points I try hard to make while speaking: PAY ATTENTION TO DATES! It’s not safe to assume (if it ever was) that something you read online will stay accurate and/or relevant indefinitely.

In any case, I realize that much of what I share has a “born on date,” for lack of a better label. I’ll continue to share information; just note when something was written.

End of (slight) rant. Back to the real topic of this post.

Modern Pages

Since I had written the previous performance article, Microsoft’s been working hard to complete the transition to Modern SharePoint in SPO. I feel it’s a solid move on their part for a variety of reasons. Modern pages (particularly pages in communication sites) are much more WYSIWYG in nature, and SharePoint Framework (SPFx) web parts on modern pages make a whole lot of sense from a scalability perspective; after all, why assume load on the server (with classic web parts) when you can push the load to the client and use all the extra desktop/laptop power?

As good as they are, though, modern pages don’t obey the standard response header approach to sharing performance metrics. But not to worry: they do things more consistently and reliably (in my opinion).

Performance on a Modern Page

SPRequestDuration (the amount of time the server spent processing the page request) and (SP)IISLatency (the amount of time the page request waited on the server before getting processed) are critical to know when trying to diagnose potential page performance issues. Both of these are reported in milliseconds and give us some insight into what’s happening on the server-side of the performance equation.

Instead of trying to convey these values with response headers (as classic pages do – most of the time), modern pages share the same data within the body of the page itself.

Consider the following page modern page:

PerfPage

If this were a classic publishing page and we wanted to get the (SP)IISLatency and SPRequestDuration, we’d need to use our browser’s <F12> dev tools or something like Fiddler.

For modern pages, things are easier. We turn instead to the page source – not the response headers. Grab the page source (by right-clicking and selecting View page source) …

PerfPageSource

… and you’ll see something like the following:

SourceMetrics

Now, I’ll be the first to admit that you’ve got to have some sense of what you’re seeking within the page source – there’s a lot of stuff to parse through. Doing a simple <CTRL><F> search for iislatency or requestduration will land you on the content of interest. We’re interested in the metrics reported within the perf section:

PerfUpClose

The content of interest will be simple text, but the text is a JSON object that can be crunched to display values that are a bit easier to read:

Metrics

The other thing you’ll notice is that a lot of additional metrics are reported along with the page processing metrics we’ve been looking at. In a future post, I’ll try to break some of these down for you.

Conclusion

“Modern” is the future of SharePoint Online. If you haven’t yet embraced modern lists and pages, consider dipping your toe in the waters. As we’ve seen in this post, Modern also makes it easier to obtain performance metrics for our pages – something that will make page performance troubleshooting significantly more predictable and consistent.

References and Resources

  1. Blog Post: Five Minute Page Performance Troubleshooting Guide for SharePoint Online
  2. Office.com: SharePoint Classic and Modern Experiences
  3. Office.com: What Is A SharePoint Communication Site?
  4. Microsoft.com: Overview of the SharePoint Framework
  5. MDN: Response Header
  6. Telerik: Fiddler
  7. JSON Viewer: Code Beautify

Threatening Outlook to Restore Drag-and-Drop Functionality

Have you ever experienced a loss of drag-and-drop functionality with the Microsoft Outlook client? If so, I might have a solution …

Yes, that’s right. I said threaten Outlook.

Angry Woman
Don’t make me come over there, Outlook …

I’m not a violent person, but I can become rather … colorful … when my drag-and-drop functionality stops working. And when that happens, I know how to threaten Microsoft Outlook to restore it.

Let me back up for a second and ask: have you ever been clicking away inside of Outlook, reading messages, cutting through email and discovered that drag-and-drop functionality had stopped working? If you’re like me, I receive tons of email each day. I count on being able to use drag-and-drop to move things out of my inbox and into designated folders so that I can retain what little sanity I have left.

My typical email triage routine entails me reading new messages in my inbox, determining if I can address or somehow close out whatever is being asked of me within the email, and then shuttling the email to a folder for future reference. That “shuttling” part, for me, depends on drag-and-drop functionality.

Microsoft Outlook normally works fine for me (we’re buddies), but every now and then something happens and drag-and-drop stops working. For instance, I’m trying to drag an email message into a folder and Outlook simply doesn’t comply with my orders. Maybe the mouse cursor changes to let me think I’m dragging-and-dropping, but in reality the message movement never happens.  The email remains in my inbox, and I’m left without an expedient way to organize messages.

I discovered, quite by accident, that there was a way to fix the problem – to restore drag-and-drop capability to Outlook. What is the way, you ask?

Well, I say give it the three-finger salute. Yes, that’s right: <CTRL><ALT><DEL>!

I don’t exactly understand the mechanic myself, but the <CTRL><ALT><DEL> sequence seems to do something to get drag-and-drop back to a functional state.

DragAndDrop

I thought I was crazy when I encountered this and that the usefulness of this information might be limited to just me, but my wife convinced me otherwise. She was banging her head against the same drag-and-drop problem I had, and simply hitting <CTRL><ALT><DEL> fixed it for her, as well.

I want to be clear here: I’m not advocating for a <CTRL><ALT><DEL> to reboot your system, or anything like that. I jokingly say that we’re threatening to reboot. Simply press the three keys, and then cancel out of the screen that appears. No logging out, and no launching into Task Manager required.

If you depend on drag-and-drop in Outlook like I do, and you find this trick works for you, please leave me a comment or let me know. I’d like to get an idea of how widespread this problem is so that I can give some feedback to Microsoft.

Good luck!

The Five-Minute Page Performance Troubleshooting Guide for SharePoint Online

I regularly hear from SharePoint Online customers that their pages are slow … but they don’t know where to start troubleshooting. Is it the SPO servers? The network? Their page(s)? In this post, I’ll show you how to determine the general source of your slow pages in five minutes or less. It won’t solve your slow page(s) problem, but it will give you enough direction to know where to focus further analysis.

UPDATE (3/20/2018): As most of you who have been following-along in your own tenants know, this issue wasn’t actually truly resolved last September. For a while, in some cases, it looked like the SPIisLatency and SPRequestDuration headers came back. But the victory was fleeting, and since that time I’ve continued to get comments from people saying “but I don’t see them!” And while I had the headers for a while in my tenant, I haven’t seen them in any predictable fashion.

The good news is that after much hounding and making myself a royal pain-in-the-tuckus to Bill Baer and others at Microsoft, it looks like we FINALLY have the right engineering and dev teams engaged to look at this. We got traction on it this week, with multiple repro scenarios and Fiddler traces being passed around … so I’m truly hopeful we’ll see something before long. Stay tuned!

ItsBack

UPDATE (9/2/2017): As I was preparing slides for my IT/DevConnections talks, I decided to check on the issue of the missing Page Response Headers (SPIisLatency and SPRequestDuration). I went through three different tenants and several pages, and I’m happy to report that the headers now appear to be showing consistently. My thanks to Microsoft (I’ll credit Chris McNulty and Bill Baer – I had been pestering them) for rectifying the situation!

“Why is it so slow?” That’s how nearly every performance conversation I’ve ever had begins.

No one likes a slow intranet page, and everyone expects the intranet to just “come up” when they pop the URL into their favorite browser. From an end-user’s perspective, it doesn’t matter what’s happening on the back-end as long as the page appears quickly when someone tries to navigate to it.

SharePoint Online is a big black box to many of its users and consumers. They don’t understand what it takes to build an intranet, nor should they have to. The only thing that really matters to them is that they can bring up a browser, type in a URL, and quickly arrive at a landing page. The burden of ensuring that the site is optimized for fast loading falls to the folks in IT who are supposed to understand how everything works.

If you’re one of those folks in IT who is supposed to understand how everything works with SharePoint Online but doesn’t, then this blog post is for you. Don’t worry – I know there’s a lot to SharePoint Online, but performing some basic troubleshooting analysis for slow pages in SharePoint Online is pretty straightforward. I’ll share with you a handful of techniques to quickly ascertain if the reason for your slow pages is due to the content within the pages themselves, if the issue is network-related, or if there might be something else happening that is beyond your control.

Your Toolset

The first step in your performance troubleshooting adventure begins by opening up your browser from a client workstation. Everyone has a favorite browser, but I’m going to use and recommend Internet Explorer for this exercise because it has a solid set of development tools to assist you in finding and quantifying performance issues. In particular, it is able to chronologically list and detail the series of interactions that take place between your browser and the SharePoint Online web front-ends (WFEs) that are responding to your requests.

When recommending IE, some people ask “how come you don’t use Fiddler?” It’s a good question, and when I first started showing people how to do some quick troubleshooting, I’d do so with Fiddler. If you’re just starting out, though, Fiddler comes with one really big gotcha: operating inside an SSL tunnel. To get Fiddler (which is a transparent proxy) working with SSL, there is some non-trivial setup required involving certificate trusts. Since this is intended to be a quick and basic troubleshooting exercise, I figure it’s better to sidestep the issue altogether and use IE (which requires no special setup).

The Setup

To make this work, let us assume that I am attempting to profile the Bitstream Foundry (my company) intranet home page in order to understand how well it works – or doesn’t. My intranet home page is pretty plain by most intranet standards (remember: I’m a developer and IT Pro – not a designer), but it’s sufficient for purposes of discussion.

Step 1. Open Your Browser

I start by opening Internet Explorer and navigating to the Bitstream Foundry intranet home page at https://bitstreamfoundry.sharepoint.com. Once I move past the sign-in prompts, I’m shown my home page:

Bitstream Foundry Intranet Home Page

My home page has very little on it right now (I’m still trying to decide what would go best in the main region), but it is a SharePoint Online (SPO) page and it does work as a target for discussion purposes.

Step 2. Access the Developer Tools

Accessing the developer tools within Internet Explorer is extremely simple: either press F12, or go to the browser’s gear icon and select F12 Developer Tools from the drop-down that appears as seen below:

Accessing the IE Developer Tools

Doing either of these will pop-open the developer tools as either a stand-alone window or as a pane on the lower half of the browser as shown below:

Internet Explorer F12 Developer Tools

Step 3. PREPARE TO CAPTURE

When the developer tools first open, they’re commonly set to viewing the page structure on the DOM Explorer tab. For purposes of this troubleshooting exercise, we need to be on the Network tab so we can profile each of the calls the browser makes to the SPO WFE.

Select the Network tab and then select the “Always refresh from server” button as highlighted below in red.

Prepare for Capture

The Network tab is going to allow us to capture the series of exchanges between the SharePoint WFE and our browser as the browser fetches the elements needed to render the page. The “Always refresh from server” button is going to remove client-side caching from the picture by forcing the browser to always re-fetch all referenced content – even if it has a valid copy of one or more assets in the browser cache. This helps to achieve a consistent set of timing values between calls, and it’s also going simulate someone’s first-time visit to the page (which typically takes longer than subsequent visits) more accurately.

Step 4: Capture the Exchange

The next step is to capture the series of exchanges between IE and SPO. To do this, simply refresh the page by pressing the browsers Refresh button, pressing , or going to the browser’s address bar and re-issuing the page request.

The contents of the window on the Network tab will clear, and as content begins to flow into the browser, entries will appear on the screen. For every request that IE makes of SharePoint Online, a new line/entry will appear. It will probably take a handful of seconds to retrieve all page assets, and it’s not uncommon for a SharePoint page to have upwards of 75 to 100 resources (or more) to load.

Capture the Exchange with SPO

Strictly speaking, you shouldn’t have to stop the capture once the page has loaded, but there are several reasons why you would want to.  First, you will eventually retrieve all SharePoint assets necessary to render the page. If you continue to capture beyond this point, you’ll see the number of requests (represented in the bottom bar of the browser – the number is 83 requests in the screenshot above) continue to tick up. It will slowly go up over time and it’s not due to the contents of the SharePoint page – it’s due to Office 365.

If you look at the last entry in the screenshot above, you’ll see that it’s a request to https://outlook.office365.com/owa. In short: this is due to a background process that allows Exchange to notify you when you receive new messages and calendar/event notifications. See how the Protocol and Result/Description columns indicate a (Pending) state?

If you get to this point and additional SharePoint elements are no longer loading, press the red “recording stop” button in the toolbar of Network tab. This will stop the capture. Not only does this help to keep the captured trace “cleaner,” but it also prevents excessive distortion of certain values – like overall time to load and the graphical representation of the page load (shown on the far right of the Network tab) as shown below.

Page Timeline Distortion

Step 5: Find the SharePoint Page Request

At this point, you should have a populated Network tab with the entire dialog of requests that were needed to render your page. Of these requests, the overwhelming majority of them will be for JavaScript files (.js), cascading stylesheets (.css), and images (.png, .gif, and .jpg). Only one of them will be for the actual SharePoint page itself (.aspx) … and, of course, this is the request that you need to find in the list.

My intranet home page is named Home.aspx (as can be seen in the browser address bar), so I need to find the request for Home.aspx on the Network tab. I got lucky with this dialog attempt, because Home.aspx is the first entry listed. Note that this isn’t always the case, and it’s not uncommon to find your page request 10 or 20 down in the list.

Select the ASPX Page

When you locate the entry in the list for your .aspx page, click on it to select it. You can confirm that you’ve selected the right entry by verifying Request URL on the Headers tab to the right of the various requests listed for the exchange with SPO (highlighted in the image above).

Step 6: Analyze the Headers

At this point, we need to shift our focus to the HTTP Response Headers that are passed back with the content of the page. Much like the request headers that the browser sends to the server to provide information about the request being made, the response headers that are sent from the server supply the browser with all sorts of additional information about the page. This can include the size of the page (Content-Length), the payload (Content-Type), whether or not the page can be cached (Cache-Control), and more.

Making sure that you have the Headers tab selected, locate and record the three response headers as shown below:

Response Headers of Interest

The three values we want to record are:

  • SPIisLatency. This is a measure of the amount of time (in milliseconds) that the request spent queued and waiting to be processed by IIS (Internet Information Services – the web server). Ideally, it should be zero or very close to zero. In my example, the SPIisLatency is 3ms.
  • SPRequestDuration. This is the amount of time (again, in milliseconds) that it took to process the request on the server. Basically, this is the end-to-end processing time for the page. Healthy pages range from a couple hundred milliseconds to around a second depending on the content of the page. In my example, the SPRequestDuration is 249ms.
  • X-SharePointHealthScore. This is the value, from zero to ten, that indicates how heavily loaded the SharePoint Server is at the time when the page was served. A score of zero means the server is not under load, while a score of ten means the server is overloaded. As the X-SharePointHealthScore goes up, the server begins to selectively suspend work designated as “low priority,” like some Timer Service jobs, Search requests, and various other low-priority tasks. ideally, this value should be zero – or close to it. In my example, the value is zero.

We can infer a great deal about the page processing and network traversal of our page request with just these three values and a final number.

A quick note (2017-07-06): For some reason, a variety of SharePoint Online sites have been returning pages without the SPIisLatency and SPRequestDuration headers lately. I don’t know why this is happening, and I’ve reached out to Microsoft to see if it’s a bug or part of some larger strategy. I don’t think it’s deliberate, because the headers provide some of the only insight end-users can get into SharePoint Online page performance. When I hear something from the product team, I’ll post it here!

The Magical Trio: SPIisLatency, SPRequestDuration, and Total Trip Time

So, you’ve now got three numbers – two of which are helpful for page profiling (SPIisLatency and SPRequestDuration), and a third number (X-SharePointHealthScore) which will tell you how stressed the server was when it served your page. What can you do with them? As it turns out, quite a bit when you combine two of the three with a fourth number.

What is the fourth number? It’s the total trip time that is reported for the page being loaded, and it represents the elapsed time from the point at which the page was requested until the time when the last byte of the page was delivered. For example, I profiled my Bunker Tuneage site. It’s a SharePoint Online site (yes, I know – I have to get it moved to another location soon), so it makes a good target for analysis:

Bunker Tuneage Page Profile

In the above example, the three numbers we’re most interested in are:

  • Total Trip Time: 847.47ms
  • SPRequestDuration: 753ms
  • SPIisLatency: 0ms

If we think about what the individual values mean, we can now reason that the total amount of time spent to get the page (847.47ms), minus the total amount of time spent waiting or processing the server (753ms), should be roughly equal to the amount of time spent “elsewhere” – either in routing, traversing network boundaries, on proxies and firewalls, etc.

So, considering our numbers above, the equation looks like this:

Performance Equation

Based on our equation, this means that approximately (this isn’t exact) 94.47ms of time was spent getting from from the SharePoint Online server to our browser – not too shabby when we consider it.

The Permutations

The numbers could come out a variety of different ways when doing this, so it’s best if we try to establish a general trend. Variability between any two runs can be significant, so it’s in your best interests to conduct a number of runs (maybe a dozen) and come up with some average values.

Regardless of the specific values themselves, there are some general conclusions we draw about each value by itself – and when it is compared to the others.

  • High Total Time. The total end-to-end times can vary dramatically. The examples I’ve got shown thus far demonstrate sub-second latency (i.e., hundreds of milliseconds), and any time you can get values like that, it’s nothing to complain about. When your total round trip time climbs to two or three seconds, your generally still doing pretty good. If you hit five, six, or seven+ seconds, it’s time to move on to what to see what SPRequestDuration, SPIisLatency, and the time-spent-elsewhere values say.
  • High SPIisLatency. If you observe consistently high SPIisLatency values, they point to there being something wrong server-side, since a high SPIisLatency suggests that requests are backing up on the server. Although I’ve never seen it, I believe you could see high SPIisLatency for a brief period of time … but during that time, I’d also expect SharePoint Online to be spinning-up additional WFEs to deal with the effects of high user load. I’ve only ever seen SPIisLatency values in the single digits before, and they’ve never lasted beyond a request or two.
  • High “Time Lost ‘Elsewhere.'” If you crunch the numbers in the performance equation and come up with a significant amount of time being lost “elsewhere,” it suggests that the traffic between SharePoint Online and your computer is being slowed down for some reason. It doesn’t specifically indicate what is causing the slowdown, but the slowdown could be due to any number of network conditions: excessive routing, web proxies, egressing to the Internet out-of-region (a form of excessive routing), firewall issues, or a whole host of other conditions. What represents “excessive” time spent elsewhere? Again, I can only speak to trends here, but I tend not to get too upset about anything under 1s (1000ms) being lost to other factors. When time lost elsewhere grows to be high – especially compared to SPRequestDuration – that’s when I get concerned. For example, an SPRequestDuration of 800ms with a time-lost-elsewhere value of 2500ms makes me wonder what’s happening between SharePoint Online and my computer.
  • High SPRequestDuration. A high SPRequestDuration value can be caused by a variety of factors, and in truth the diagnosis tends to become a bit contentious. Since a high SPRequestDuration means that a page is taking a long time to process on the server, the most common response I frequently encounter (especially among those new to SPO) is that “there’s something wrong with SharePoint Online.” I hate to be the bearer of bad tidings, but repeat after me: “The problem isn’t with SharePoint Online, it’s with my site.” That 9000ms SPRequestDuration probably has very little to do with SPO and everything to do with how you customized SharePoint, your choice of navigation style, the fact that there are two dozen “expensive” web parts on the page, or something related to that. I’m not willing to rule out a problem with a SharePoint Online tenant, but in truth I have yet to encounter it.

What Can I Do About a High SPRequestDuration?

If you don’t believe me and instead feel that the problem is with the SharePoint Online environment, the good news is that there’s an easy way to tell one way or the other … and I highly recommend doing this before calling Microsoft Support (trust me, they’ll thank you for doing so).

Believe it or not, SharePoint Online is also where OneDrive for Business data is stored. A OneDrive for Business page, at its core, is a SharePoint page with nearly no customization. Using someone’s OneDrive for Business page becomes an excellent A/B test when the performance of SharePoint Online page is sub-par. Simply load up their OneDrive for Business page and compare performance numbers to the page in question.

OneDrive for Business Performance

Revisiting my Bunker Tuneage site example, you can see that the OneDrive for Business landing page is served from the same tenant as the earlier page. If I were to compare the SPRequestDuration value of the OneDrive for Business page (223ms) with the SPRequestDuration of the SharePoint page in-question (753ms), I’d note that the values differed … but are they different enough to think something is going awry in the SPO environment?

Roughly half a second (~500ms) is indeed a difference, but it’s not enough for me to think that the online environment has problems. When I see SPRequestDuration values like 9000ms for a SharePoint page but 500ms for OneDrive for Business page, that’s when I begin to suspect something is amiss. And again: with such an extreme disparity in values, SharePoint Online is healthy (500ms), but there’s clearly something wrong with my page (9000ms).

Practical Advice

When it comes to diagnosing the root cause or causes for high SPRequestDuration values, the good news is that there are plenty of fixes that range from the simple to the quite invasive. Microsoft has taken the time to compile some of the more common causes, and I highly encourage you to take a look if you’re interested.

At the end of the day, though, sometimes you just want to know where to begin troubleshooting so that you can focus remediation efforts. If you follow the steps outlined in this blog post, I think you’ll find that the five minutes they take to execute will help to focus you in the right area.

References and Resources

  1. MSDN: Discovering Windows Internet Explorer Developer Tools
  2. Company: Bitstream Foundry
  3. Telerik: Fiddler Web Debugging Proxy
  4. Fiddler: Decrypting HTTPS-protected traffic
  5. Mozilla Developer Network: HTTP Headers
  6. SPO Public Site: Bunker Tuneage Online
  7. Blog Post: Save Your SharePoint Online Public Site from the Chopping Block
  8. Office Support: Tune SharePoint Online Performance

Principles and the Power of Community

In this post, I cover the re-ignition of Bitstream Foundry’s fires and spend some time reflecting upon the principles that guide me in my day-to-day dealings with people.

HandOfCommunityLast week was an extremely tumultuous and event-filled week for me. And to be completely honest, it was tremendously stressful at a couple of points. But I’ll cut to the chase on one very important detail: it ultimately ended on a high note, so I can say that this story has a happy ending.

As many of you know, last October I joined the PAIT Group as their Chief Technology Officer. The decision to join PAIT wasn’t one that came about quickly. My friend of many years Mark Rackley (you might know him as “The SharePoint Hillbilly”) and I had been involved in a couple of different discussions over a period of time … but the actual decision to join PAIT came after a series of discussions at last year’s Microsoft Ignite conference.

The idea of joining PAIT and being able to both work with friends (Mark and Stephanie Donahue) and refocus on SharePoint was the breath of fresh air I needed at the time … and once again I found some excitement and genuine happiness in the work I was doing – and in the people with whom I was interacting on a daily basis.

Things went pretty well for a while, but sometimes even friends who start with the best of intentions find that different styles, approaches, experiences, and value systems don’t always mesh the way they would like. And businesses sometimes have influencers and drivers that remain “behind the scenes” but still wield a heavy hammer in day-to-day operations and long-term strategy.

What Happened?

defeat looser koLast Thursday (April 27th) was my last day with PAIT Group. The end came abruptly and surprisingly to me, but in hindsight I can say that I understand the trajectory and how things got to where they did – whether I agree with the ultimate outcome or not. Like so many business decisions, there are motivations and drivers that are obvious and visible to everyone … and sometimes there are factors (and actors) behind-the-scenes that have tremendous influence and power. In this case, there was some of the former and an awful lot of the latter.

Stephanie, Mark, and I remain friends … and the desire to remain friends was the most important and overriding aspect at the end of the day. I truly wish the two of them the best of luck in everything they do. They’re top-notch SharePoint professionals, and I have a great deal of respect for both of them. And they’re still my friends, and I’ll continue to do anything I can to help them personally in their endeavors. I don’t want our parting to impact the friendships we share.

What Now?

After learning of my separation from PAIT Group, the first feelings to hit me last Thursday were shock and uncertainty. I have a wife and two kids, and I’m the primary “breadwinner” for my family. Suddenly finding myself without gainful employment created a tremendous amount of stress in the immediate sense. Anytime I’d parted with an employer in the past, I had been a part of the decision – or at least a part of the discussion that led to the outcome. This time proved to be a first for me, and I’m not going to lie: I was initially scared.

Once the shock and fear subsided, I set about figuring out what to do next. Since my timetable was short, I decided to go with the “fallback” plan I’d always had the foresight to maintain: to brush the dust off of Bitstream Foundry LLC and rev things back up.

Bitstream Foundry LLC Logo

I’ve always kept my LLC in-order, kept my insurance (Business Liability and Errors & Omissions policies) paid and up-to-date, and tried to keep material related to my company current. Truth be told, I still have some work to do on that last one (I’ve spent a chunk of time this weekend updating social profiles and getting other public-facing items in order), and I still need to both migrate my company’s site and update its content.

More important than any other “get ready” aspect, though, was something else that settled over me in a somewhat unexpected way.

The SharePoint Community

When I made my initial round of social and professional networking profile changes late last week to reflect the move back to Bitstream Foundry, I was immediately deluged on all channels of communication from my friends and business contacts across the SharePoint space. The outpouring was immediate, overwhelming and … extremely humbling. I was dumbstruck.

Within the space of less than 36 hours, I had no fewer than a dozen different collaboration opportunities – including a number of requests for SOWs (statements of work), some partnership and referral offers, and more. I was stunned. Simply stunned.

And that brings me to the topic of community. The SharePoint Community is like no other community I’ve ever been involved with. It’s vibrant, full of wonderful people, and chock full of life and energy. Every time I speak at a conference or present for a SPUG, I leave the event “charged” and wanting to do more.

I’ve been involved in the SharePoint Community since 2004, and I’ve actively been giving back to the community since 2009. Giving back is important to me, because I’ve benefited tremendously from knowledge that many of you have openly shared. Sharing what I know has been the right thing to do, as well, and I’ve worked to make all of my conference materials, presentations, workshops, development projects, and other efforts freely available to all.

I feel fortunate to be a part of this community, and I am so tremendously grateful for the relationships and friendships that I’ve built with many of you over the years. Simply put: you folks are awesome.

Reflecting On My Principles

Anytime life throws me a curveball, I try to take a step back and reflect on what I’ve learned, where I’ve made mistakes, and where things have gone well. Given that I’m in the middle of another tectonic shift in my professional career, it seemed like a good time to conduct another review.

In thinking about the last six months (recent history) and the last eight years (a bit longer), I would say that I’ve tried very hard to operate according to the following principles:

  1. For me, one-to-one personal relationships are more important than anything else within any community or arrangement – far ahead of skills, and definitely ahead of day-to-day business practices and arrangements. Over the years I’ve always found great pleasure and meaning in the relationships I’ve built across the country and across the globe. I recently took the Gallup StrengthsFinder questionnaire, and my relationship focus was confirmed and reinforced by my number one strength according to the assessment: “Relator.” Read the description in the previous link for more insight.
  2. A lot of people use SharePoint, but the global SharePoint community is relatively tight-knit and personal. And Karma is an active participant within the SharePoint community. The way that you treat people sends ripples through the social ecosystem. If you are good to people, others will hear of your deeds and come to regard you in a positive light. If you put things like money and self-interest before relationships, then others will hear of it and treat you accordingly. What you do will come back to you.
  3. To the extent that I’ve been able to, I’ve always attempted to provide assistance and time to those who have asked for them – and in situations where I could see that they were needed. Service to others has been a cornerstone of my life, and that goes all the way back to my college days. My wife and I met through Alpha Phi Omega, our co-ed service fraternity, and we’ve both tried to maintain a “pay it forward” outlook that is consistent with A Phi O’s principles in our adult lives. Paying it forward is a great way to live a meaningful existence, and I know that many of you share the same outlook – especially the incredibly wonderful Jeff Shuey. Jeff got me hooked on “Pay It Forward Fridays” (#PIFF), and I try to follow his example whenever I can.
  4. Companies come and go, and businesses grow and die every day. I choose not to focus on companies and businesses, but rather on individuals and one-on-one relationships. This probably comes as no surprise in light of #1 (above), but it bears saying explicitly. I have yet to go wrong by focusing on my relationships with individuals within a company rather than a company itself, and I plan to continue doing so in the future.
  5. Probably the most important thing I’ve learned in the last 15 years or so is that communication is critical in everything we do. If you cannot communicate openly and effectively, then life is bound to be pretty muddled and confusing. I credit my wife, Dr. Tracy McDonough, for helping me to grow in this area. She’s a licensed clinical psychologist and a wonderful person to boot. And believe me: you won’t survive in a marriage with a psychologist if you don’t learn how to communicate effectively.

Charging Forward

Tomorrow starts Bitstream Foundry’s first week of being “back in business,” and I’m ready to jump into it. I still have a lot of things to get done to get back into “fighting shape,” but I’m looking forward to the challenge.

In the meantime, please don’t hesitate to reach out to me if you think that I may be of assistance to you in some endeavor or undertaking you have planned!

References and Resources

  1. People: Mark Rackley
  2. People: Stephanie Donahue
  3. Company: Bitstream Foundry LLC
  4. Resources: SharePoint Interface Presentations and Materials
  5. Site: Gallup StrengthsFinder
  6. Strength: Relator
  7. Organization: Alpha Phi Omega
  8. People: Jeff Shuey
  9. People: Dr. Tracy McDonough

Save Your SharePoint Online Public Site from the Chopping Block

If you’re like me and have one or more SharePoint Online public sites, you may or may not be aware that they’re currently on the chopping block! In this post, I describe what’s going to happen, and I also cover the process you can follow to extend the life of your SPO public site for another year.

The GuillotineI’ve been very concerned about the fate of my SharePoint Online (SPO) public sites as of late. It’s March of 2017, and I know that Microsoft intends to pull the plug on all of those SPO public sites in the not-so-distant future. I have three of them myself: one for my wife’s non-profit organization (for which I’m also the CTO), one for my LLC, and a final one for my musical labor of love.

A while back, I pleaded with Microsoft publicly to give us some help before they shut things down for the SPO public sites. Well, it would seem that we’ve been given some help in the form of an end-of-life reprieve.

I had heard about the possibility of Microsoft pushing the deadline for the “ya gotta move it” date for SPO public sites, but I hadn’t been looking all that closely to see if there was any movement on that front. Since this month is due to close out in the next few days, I decided I’d better actually take a look. So, I went into one of my tenants and found what I’d hoped to find:

Postponing Deletion

Thank the Heavens!

If you’re like me and you haven’t been tracking things as closely as you might have liked, it turns out that you can spare your SharePoint Online public site a cruel and horrible death for roughly another year (i.e., until March 31 of 2018). The process for delaying your site’s demise is relatively straightforward and described in the body of this support article. If you want something a bit more visual, though, then the following walk-through might help you out.

  1. selectAdminSign in to your Office 365 tenant with a set of credentials that have the necessary rights to make changes to SharePoint Online settings. Go ahead – click the link I just supplied.
  2. Click on the waffle menu in the suite links bar near the top of the page. The waffle menu is opened by clicking those nine dots (arranged like a Rubik’s Cube). When you click the waffle menu button, you’ll get a menu with a bunch of tiles that looks something like the image above. You’re interested in the Admin button right now.
  3. Admin CenterClick the Admin button, and you’ll be taken to your tenant’s Admin center as shown on the right. I’ve branded my Bitstream Foundry tenant, so chances are your admin center is going to look different than mine – perhaps with a different color scheme and logo. Note that if your organization hasn’t assigned a logo, you won’t see one in the suite links bar.
  4. Admin centers drop-downAlong the left-hand side of the Admin center will be a set of collapsed drop-downs that represent your various administrative functions and management pages/areas. You’ll want to click on the Admin centers option at the bottom of the list to expand it as shown on the right. When you do this, you should see SharePoint listed between your Skype for Business and OneDrive options.
  5. SharePoint admin optionsClick on the SharePoint option, and you’ll be taken to the SharePoint admin center for your tenant. You’ll see the list of site collections that exist within your tenant in the main window area, and a toolbar will appear above the main window area providing you with options to create a new site collection, buy storage, and quite a bit more. you’ll also see the list of SharePoint-specific admin areas/options appear along the left-hand side of the admin page as shown to the right.
  6. Locate the settings option in the left-hand column and click it. Once you click it, you’ll see a whole host of settings that you can review and change. It is in this list that you’ll find the Postpone deletion of SharePoint Online public websites option buttons that I showed a bit earlier.
  7. Click on the I’d like to keep my public website until March 31, 2018 option button to pull your SPO public site off of death row.
  8. Scroll to the bottom of the page and click the OK button along the right-hand side of the page. This will save your change.

Save your changes!

That’s all there is to it!

Can’t You Just Give Me the Shortcut?

Sure! If you’re not into clicking through all of the admin screens and options I just walked through, you can simply point your browser at https://{tenantName}-admin.sharepoint.com/_layouts/15/online/TenantSettings.aspx to get to the page which is shown in Step #6 above. Note that you’ll need to replace the {tenantName} token in the URL above with the actual name of your tenant to make this work for you.

A Few Notes

This process buys you roughly another year to get your act together and move your SPO public site. You’ll then have until March 31 of 2018 to locate another home for your site and/or its content.

If you don’t follow the process I’ve outlined, Microsoft calls out the following dates:

  • Beginning May 1, 2017, anonymous access for your SPO public site will be removed.
  • On September 1, 2017, Microsoft will be deleting SPO public sites which haven’t been protected via the opt-in I described above. If you haven’t saved your SPO public site content by 9/1, you’re going to lose it!

Hopefully you’ll rest a bit easier (as I have been doing) after opting-in to protect your public site(s). I intend to get my sites moved before next March, and I’ll likely detail that process in a future post. But for now … deep breaths!

References and Resources

  1. Site: The Schizophrenia Oral History Project
  2. Site: Bitstream Foundry LLC
  3. Site: Bunker Tuneage
  4. Post: Help, We Are Stranded on SOPSI (SharePoint Online Public Site) Island
  5. Microsoft Support: Information about changes to the SharePoint Online Public Websites feature in Office 365
  6. Site: Rubik’s Cube

The Day Outlook Became My Secretary

In this post, I share a brief bit of magic that Outlook exhibited for me recently. I don’t know where it came from or if it is even is an indication of things to come … but I liked what I saw!

typewriterI feel that I’ve been tricked. Okay, maybe “tricked” is a harsh word, but let’s put it this way: I’ve seen a bit of the future, I like it, and I’m not sure if and when it’s coming back.

I recently returned from SPTechCon. While I was in San Francisco, I delivered a few sessions (including a new advanced PowerShell session) and managed to make it to Muir Woods to visit the Redwoods once again. The entire time I was in San Francisco, I was riding around in a rental car from Enterprise. I usually get my rental cars from Enterprise, but something weird happened when I was getting this rental car.

Outlook did me a favor.

When I booked the rental car with Enterprise, I received the following email:

Enterprise Pickup

Do you see the part stating “This event was automatically added to your calendar from email by Outlook?” That caught my attention. Outlook had never taken any action on my behalf prior to this trip, and I can’t say that I’ve seen it do anything since. But for some strange reason, this one car reservation got Outlook to do something new and cool.

I checked my calendar, and sure enough, there were events for both pickup and drop off.

Calendar View

I’ll be honest: I don’t know how these events got onto my calendar, and I don’t even know who wrote the code to make the magic happen. But in this one single instance, I feel like I’ve had a taste of what’s to come … and I really like it.

I did a little digging as I was writing this post to see if I could figure out where Outlook got its smarts from. I didn’t find a whole lot, but I did find this one post on Microsoft’s acquisition of Genee to accelerate intelligent experiences in Office 365. Maybe that had something to do with what I was seeing?

I like the idea of Outlook getting some intelligence and being able to look at my email to ascertain when things will happen. Maybe Delta will send me a trip confirmation and my flight times will end up on my calendar. Or maybe Mark will send me an email about a great Baconfest that’s happening in Harrison, Arkansas, and that event will get parsed and entered into my records so that I’ll know when I need to leave my house to make it there on-time.

I see a lot of potential for this sort of processing and assistance, but I think I’d like to understand it all a bit better before things move on. Heck, right now I’m not even sure if what happened to me is something that’s going to roll out more broadly … or if it was just a blip/test. As I indicated, I haven’t seen anything appear on my calendar since the car reservation, so I’m not even sure that it’s something that “someone” is rolling out.

But I like this. If it’s done right, it has the potential to simplify a lot of things we manually push ourselves to do today.

I’m okay with Outlook becoming my secretary. How about you?

ADDENDUM: 12/12/2016

My friend Tom Resing reached out via Facebook after I shared this blog post, and he opened the door to a world of settings I was simply unaware of. He pointed me to a link titled Automatically add travel and package delivery events to your calendar. It discusses how to control the behavior with Outlook online, and it’s definitely worth checking out. I’m always happy to discover new knobs and levers!

References and Resources

  1. Event: SPTechCon San Francisco
  2. Resources: Tapping the Power in PowerShell (slides)
  3. Resources: Tapping the Power in PowerShell (scripts)
  4. Location: Muir Woods
  5. Microsoft Blog: Microsoft acquisition of Genee to accelerate intelligent experiences in Office 365
  6. Blog: Mark Rackley
  7. Blog: Tom Resing
  8. Office Support: Automatically add travel and package delivery events to your calendar