Monday, May 5, 2014

Language Used in Discussion about Net Neutrality and Peering


< Please see my disclaimers at the bottom of this article. >

A great deal of the discussions about net neutrality and the Netflix peering deals have me concerned because of the language people have chosen to use when discussing these topics. I fear that the real truth about what is really happening with regards to the cause of bandwidth usage is becoming lost. I just want to set the record straight about some of the language used and where certain blame should be placed.
My problem with this issue is that several times I have read or heard statements similar to the following:

“Netflix is using 30% of all of the bandwidth in the U.S. …”

In most of the conversations I’ve read the blame for all of this bandwidth usage is placed on Netflix alone. Yes, it is true that according to many different reports and even some official statistic websites that Netflix services account for a large percentage of all U.S. internet traffic. But is Netflix really the cause of this internet traffic? Is Netflix itself hogging all of this bandwidth? Consider the diagram below.

TCP - Syn Syn-Ack Ack handshake

This is a diagram of the TCP-handshake and is a very basic way to display how communication is established between devices in a computer network, especially between devices on the internet. In a nut-shell, the 3-way handshake works like this:
  • The home laptop sends a TCP SYNchronize packet to the online server,
  • Server receives the laptop SYN packet and sends a SYN-ACK response back,
  • The home laptop receives the server's SYN-ACK and sends an ACKnowledge packet,
  • The server receives ACK.
Like I said, the diagram is a very simple display on how basic communication is established in a TCP\IP network such as the internet.

So here is my question to you: Who initiates the communication request? Who is the one that starts ‘talking’ to the other side? The Home Laptop, that’s correct!

Now lets change this diagram a bit so I can make my point…

TCP - Syn Syn-Ack Ack handshake2

So with this diagram, who is the one that initiates the communication with Netflix? The CUSTOMER. My point in displaying all of this information is this:

Netflix isn’t eating up all of the internet bandwidth, its customers are.

You heard me correct. All of Netflix’s customers, including myself, is why Netflix services account for a large percentage of internet traffic in the United States – not Netflix. Netflix never starts the communication between itself and it’s customers, the customers do. Each of Netflix customers must manually start the communication stream on their own device, not the other way around.

So the next time you hear someone blame Netflix for eating up bandwidth just remember that Netflix isn’t the cause. It is Netflix customers that are hogging all of the ISP bandwidth.

- Joe

  1. It is not the goal of this article to discuss the justification for throttling Netflix communication (positive\negative) or the morality of either side of this case (ISPs, CDNs, or content providers such as Amazon or Netflix).
  2. Yes, I am a Netflix customer and have been since before streaming was a large part of their business.
  3. Yes, I am an employee of a large media company. No I will not discuss my job or where I work. These are views are my own.

Monday, April 28, 2014

Powershell Script to Get the Current Count of Windows Processes with the Same Name

Along with my colleagues, I have the privilege of serving many different technical roles at my place of employment. One of the most interesting and uniquely gratifying roles I serve is being one of the "the app monitoring guys" or "the SolarWinds guys". Since I literally wrote the book on SolarWinds Orion NPM it seems suiting that I wear that hat. Like thousands of other organizations, we use SolarWinds SAM to monitor a wide array of infrastructure and business applications. Recently we ran into a snag with trying to monitor one of our more critical apps, so I'd like to share how\what we did to resolve that problem using Windows Powershell....

One of our critical applications runs for a few hours each day starting at 6am then closes on its own anywhere from 10am or 4pm or even 2am the next day. When the application process finishes and closes depends on the day the application is launched - some days have more data to process than the others. In addition, there cannot be more than one instance of this application running at one time or the 4 or 10 or 24 hour process will have to start all over (which will delay some of our core business units' daily numbers). This poses a unique problem when trying to monitor this application in SolarWinds SAM.

Here is the biggest limitation of any application monitoring solution --- SAM expects an application to always be up\running in order for the alerts to properly work and also to show if the application is up\down on the web dashboard. This isn't only the default way SolarWinds SAM monitors applications, it is by design. Unfortunately there isn't an out-of-the-box solution for monitoring applications "intermittently". To be perfectly honest, I'm not surprised that SolarWinds SAM would include such a feature out-of-the-box. I mean, why the heck would you want to monitor an application only "part of the time" anyways? Trying to set up a proper alert for an intermittent application would be troublesome if not impossible. But this is just what I need to do with this specific business application. Also, I needed to monitor if there are more than one instance of the application running on the server. The default app monitors in SAM just won't suit my needs here. Instead, what I needed to do was utilize the feature in SAM where I can create my own custom app monitor using a script. And Windows Powershell does the job nicely.

I created a Windows Powershell script that finds out how many instances of the application's Windows process is running at the same time returns the value in the variable $stat, only if the process is running. Here is a copy of the script text:

# Change 'Notepad' to the process name of your liking. Remember to include the single quotes.
$processname = 'Notepad'
$process = Get-Process $processname -ErrorAction silentlycontinue

if ($process)
   $count = @($process).Count
    $msg = "$count instances of $processname running."
    $stat = $count  

  $msg = "$processname is not running."
  $stat = 0
Write-Host $msg
Write-Host "Statistic: $stat"

The script is simple but powerful. First, the script determines if the process name 'Notepad' (defined in $processname) is running at all. If it is, then it will find out the current instance count and store it in the variable $stat. If the process is not running, then $stat will equal a numeric '0'. Finally, we write the message information and statistic information to the screen. The message ($msg variable) is just for SolarWinds SAM use - it is something to display in the dashboard instead of leaving a big question mark on the app monitor details view. The $stat variable is the important one since this is the numeric value needed by SAM. We set the threshold to '1' in the SAM settings for this monitor. When the threshold is reached an alert will be generated in SolarWinds. Bada boom bada bing.

This monitor works great for us since it helps us utilize SAM without circumventing the way it works. The script monitor is in 'good' status (or 'green' status) when the value is 0 or 1, which is exactly what we expect because either the application is not running at the time the script is executed or there should only be one instance of the process running. We only want to know if there are 2 or more instances of the process running on the computer - nothing else. We have to use a different application monitor in SAM to find out if this 6am process did not execute when we needed it to, so I'm not concerned about including that information here at this time :)

This script can be used not only in SolarWinds SAM, but your own custom solutions or projects. It is designed to be extremely easy to modify. The only thing you have to change is the $processname! Just change ‘Notepad’ to some other process name!

If you find this Powershell script useful I'd love to know how you use it in your own environment. Or if you modified the script I'd love to hear what you did with it.

I hope this helps you create a solution in your own environment.

- Joe

Thursday, April 10, 2014

How Much Fun are You Having on the Job?


Imagine that you are talking with your boss, or a possible employer, or friend, family member, or even a complete stranger about what you do for a living. You discuss where you work, how you work, what your duties are, and other things of the sort. But then the other person throws you a curve ball question. That person leans in towards you and looks you in the eye like they've been dying to ask this question the entire conversation, and with an eagerness and a genuine smile they ask "So, tell me something... how much FUN are you having on the job?"
Wow... Just think about how much power that question can have. Has anyone ever asked you that question before without being sarcastic or with a negative overtone? Better yet, have you asked yourself that question ever in your life? It is a powerful question! Go ahead - stop reading this article and ask yourself right now,

"How much fun am I having on the job?"

Now, when you answered this question did a lot of positive thoughts pass through your mind? If you did, maybe some of the positive responses included things like:
  • I get to work on complex projects.
  • I get to learn this and do that.
  • I get to create interesting solutions to problems at work.
  • I get to teach others and I get to be a teacher.
  • I get to work with various customers.
  • I get to sell my business's excellent products that I believe in and use myself.
  • I get to share my experiences with my co-workers and we have the opportunity to learn a lot of things from each other.
  • I get to help achieve the business's goals.
  • and so on
If you did respond with some of these positive responses I'm certain you were able to answer that question fast! I'm sure if you had some of these positive answers you'd be looking forward to going to work the next day, am I right? If we were that positive about our jobs we would head to work ready to hit the ground running! But I know that some of you are still working on trying to muster up the courage to attempt to answer the question. Some of you may be really asking yourself, "Do I ever have fun on the job?". I imagine some negative responses might include things like:
  • You don't understand the things that I have to do just to get a paycheck every week.
  • I have a terrible boss and I can't stand working for him\her.
  • I haven't had a day off of work in a month and no one cares about it.
  • I work all day, then I come home and I have to work even more!
  • My co-workers earn more money than I do.
  • My co-workers don't come close to working as hard as I do!
  • I don't believe in the products my business makes and\or the services they offer.
  • Other people don't have the setbacks that I experience every day.
  • One of my co-workers just got promoted and they haven't been working here as long as I have!
  • I'm stuck right where I am and I can't get out.
  • I don't know why I even work here.
or even the worst of the worst....
  • I hate my job.
Ouch... We've all been there before haven't we? Some of you may even be there right now. I can still remember when I said those dreaded words about some of my bosses, some of my co-workers, or some of the companies I've worked for. It doesn't feel good to say those bad things does it?
I've had the privilege of being able to work for many different businesses, many different bosses, and work with many different people throughout my career. I've had plenty of jobs where I was excited to get to work in the morning, and I've had jobs where I dreaded walking in the door. Even today I have setbacks just like you. There are times where someone does not do something they are supposed to do and it affects my work. I have to deal with irate customers and I have many different people that jump down my throat about various issues here and there. There are even times where I make mistakes and it affects other people's work! In my past I have even made mistakes that cost me my job. None of these things helped reduce my stress level. None. Just imagine if I had these negative thoughts all day long. I doubt anyone would want to talk to me, let alone work with me. Do you know what these negative thoughts about our jobs do to our perception about our workplace, or our bosses, or the businesses we work for? It impacts the way we work, how we work, and it impacts the quality of work that we produce. These thoughts set us up for failure and causes increased stress in the workplace.
In 2010, The American Psychological Association published a Fact Sheet that displayed some very interesting research done about workplace stress. Here are a few of them:
  • 69% of employees say their work is a significant source of stress in their lives.
  • 51% of employees say they were less productive due to stress.
  • Health care expenses for employees with high levels of stress were 46% higher compared to those without.
  • Job stress is estimated to cost U.S. industry more than $300 billion a year in absenteeism, turnover, diminished productivity and medical, legal and insurance costs.
These are some very substantial numbers and facts and simply put -- they are DISTURBING. Just look at what we are doing to ourselves when we complain about our jobs or when we stress out about our work. IT IS DISTURBING. But I have come to realize a few things…
I have discovered that 100% of the people that are unhappy about their jobs do not feel good about their jobs. But wait! There's more... I've also discovered that 100% of the people that feel good about their jobs are actually HAPPY about their jobs! Yes! I have found that it FEELS GOOD TO BE HAPPY! And when someone does NOT feel good, THEY ARE NOT HAPPY!
So how should we respond when feeling negative about our work? How can we transform our way of thinking about our work?

I just finished reading an article by one of my good friends Andrew Ralon at called "Choose Your Response". It is an excellent article and I highly suggest you read it. At the top of the article there is a quote that says "Whatever happens, you always have a choice -- you are always able to choose your response." After having said many of the negative things listed above in this article I made the choice long ago that I will never allow myself to hate my job ever again and if I do, I will be the one to change my situation. Every day I make the choice to do everything I can to be a better employee today than I was yesterday. We are all given the opportunity to respond, either positively or negatively, about our jobs. And every day that I work, I PLAN on having fun at work.

Having a plan means that I am intentionally going to follow through
with what I say that I am going to do.

Having a plan to have fun on the job means that I am intentionally going to have a positive attitude regardless of the setbacks that I encounter. If I wake up in the morning, and I PLAN on having a great day at work that day then I will have a great day! When I plan on having fun at work, it affects not only myself but my attitude affects everyone around me too. There is this tremendous positive energy that flows outward from myself towards others. This positive energy helps me to perform well at my tasks and projects. And when I perform well on the job, I feel a sense accomplishment and personal satisfaction in the work that I do. I have this sense of empowerment and feel that I have a long future in the company. When I have fun on the job I feel that I am a valuable team member in my workplace. Ladies and gentleman, this type of positive attitude is contagious. Everyone around me lights up. My colleagues are happy to work with me to achieve my goals and I am more than happy to help them achieve their own goals.

"But Joe, you just don't understand my situation. It just isn't that easy to 'flip the switch' and just feel good about my job." I know it isn't easy but the more you work on your own attitude about work, the better it will get. If you are in a constant struggle with your boss or your place of employment or you still find it difficult to have fun on the job no matter what you do, I recommend you read the article "When you feel there is no way out" by my good friend Glenn Stewart at You are never stuck. There is always a way out of the rut that you are in. My point is this...

"If you target nothing, you'll hit it every time." - Zig Ziglar

I want you to wake up tomorrow and plan on having fun on the job. If you do this every day I guarantee that it will make a tremendous difference in your career. Your co-workers and your bosses will notice the difference as well. And you know what? When you plan on having fun at your job, and you actually HAVE FUN, I guarantee that you will make a positive impact on someone else that might have negative thoughts about their job.

Plan on having fun on the job so that you not only make a difference in your own career, but your colleagues' careers too.

- Joe

Wednesday, April 2, 2014

My Personal Development and Learning Resources


I read a lot. Most of my work day involves reading the onslaught of business email, alert messages, text messages and instant messages, vendor documentation, knowledgebase articles, and many other types of documentation related to my job. However, as an I.T. professional I need to keep up with the latest tech news and tech training so my skills don’t become stagnant. I need to stay ahead of the game by developing my own personal learning plan not only for new software and new technology, but for personal growth in my capabilities as a leader, parent, husband, and community member.

Several people have asked me what I read on a daily basis and what I use to develop my own learning plans. Below are my own personal resources in several categories.

Spiceworks Community & Local SpiceCorps Groups:
SpiceCorps of Volusia County, FL -
SpiceCorps of Central Florida -
SolarWinds Thwack Community -
Microsoft Answers Community -
IT Pro Camp -
I.T. Training:
Microsoft Virtual Academy -
Microsoft TechNet Virtual Labs -
Cisco Learning Portal -
Links to Cisco training resources -
Linux Training -

Daily reading:
Hacker News @ Y Combinator -
Network World -
Farnam Street Blog -
Om Malik (GigaOM founder) -
Dave Ramsey's Blog -
Zig Ziglar -
Michael Hyatt -
Leadership Vacuum -
Equip your Life by Glenn Stewart -
Surface Geeks -
This Week In Tech a.k.a. TwiT (with Leo Laporte and friends) -
Re/Code -
Engadget -

Podcast Subscriptions:
The EntreLeadership Podcast -
This Is Your Life Weekly podcast from Michael Hyatt -
Zig Ziglar's Inspiring Words of Encouragement -
Surface Geeks Podcast -
This Week In Tech Podcast (TwiT) -
Let My People Think (RZIM) -

Book List:
Dave Ramsey, "The Total Money Makeover" -
Dr. Henry Cloud, "Integrity" -
John G. Miller, "QBQ!" -
Michael Hyatt, "Platform: Get Noticed in a noisy world" -
Stephen R. Covey, "The 7 Habits of highly effective people" -
Dr. Henry Cloud, "Boundaries" -

You may notice that in my book list there is NOTHING technology related. The reason is because I have the gift of being able to consume tech learning resources online very quickly. But for the things that I cannot learn easily such as commitment… integrity… character... leadership… perseverance…and patience, I prefer to learn and grow by reading an actual hardcover book.

Well there you have it. Even though this list is fairly comprehensive, you will need to find your own resources that meets your own needs, your own learning plan, and your own personal growth plan.

Always remember that leaders are readers. I hope all of this helps you as it helps me every day!

- Joe

Friday, March 7, 2014

Upgrading to Windows Server 2012 R2 from 2012 RTM Running SharePoint 2013

These are some of my own notes on upgrading Sharepoint Server 2013 from the server running Windows Server 2012 to Windows Server 2012 R2. I know this will help others that made the same mistakes that I did. I'm grateful to have the ability to assist others in their projects. In addition to helping my clients achieve their goals, I am able to learn new skills along the way which then I am able to share with others. Knowledge truly is power. Today's blog post is information about a mistake I made while working on a client's server, as well as how to fix the problem.

My client's request was simple; they wanted to upgrade all of their servers from Windows Server 2012 to Windows Server 2012 R2. They had one server running SQL Server 2012 RTM, one virtual machine running Sharepoint Server 2013 RTM, then a handful of some other virtual servers running Windows Server 2012. They have a single hardware server running Windows Server 2012 RTM and all of their workloads run in Hyper-V virtual machines on this physical server. Backups are properly configured.

I will continue with describing my mistake:

  • On the SQL Server 2012 virtual machine, I captured a VM snapshot, attached the 2012 R2 ISO to the virtual machine settings, executed setup.exe from the disk, then started the upgrade.
  • On the Sharepoint Server 2013 server, I attached the 2012 R2 ISO to the virtual machine settings, executed setup.exe from the disk, then started the upgrade.

So first off, there is one very important mistake I made -- I did NOT do any research on application compatibility for SQL Server 2012 for Server 2012 R2, or for Sharepoint 2013 running on Windows Server 2012 R2 either. If I knew the requirements before the upgrade, I would have made sure  The 2nd mistake I made was NOT taking a snapshot of the Sharepoint server.

When both servers started back up after the 2012 R2 upgrade, I was able to log in to each of them just fine so the OS portion was good. But both SQL Server 2012 had tons of errors and Sharepoint 2013 wouldn't display any web pages and displayed nothing but HTTP 500 errors. Shoot, what was I to do? Damage control mode. I was left with unusable SQL database and a broken Sharepoint server. Not good.

First things first, I reverted back to the saved snapshot for the SQL Server. Once that was done and after I confirmed the SQL server was back in good operating condition it was time to focus on Sharepoint 2013.

After several hours of trying several things, here was our fix:

  • Install SharePoint Server 2013 Service Pack 1, then reboot.
  • Run the SharePoint Product Configuration Wizard to finish the upgrade. Reboot when prompted.
  • Verify SharePoint sites come up without a problem.

The environment was finally back up and running with no more errors. From this point we made snapshots of each virtual machine then continued to perform the 2012 R2 in-place OS upgrades.

If you want to perform an in-place upgrade your servers from 2012 RTM to 2012 R2, this can be done successfully for most cases since 2012 to 2012 R2 in-place upgrades are supported by Microsoft. If your 2012 RTM servers are running SQL Server 2012 RTM or SharePoint Server 2013 RTM, then read the following:

Upgrading to Windows Server 2012 R2 from 2012 RTM for servers running SQL Server 2012 RTM.

  • First install SQL Server 2012 Service Pack 1. Reboot when prompted.
  • Execute setup.exe from the Windows Server 2012 R2 installation media. Complete the upgrade.
  • Done.

Upgrading to Windows Server 2012 R2 from 2012 RTM for servers running Sharepoint Server 2013 RTM.

  • First install SharePoint Server 2013 Service Pack 1. Reboot when prompted.
  • Run Sharepoint Configuration Wizard to complete the upgrade. Reboot when prompted.
  • Execute setup.exe from the Windows Server 2012 R2 installation media. Complete the upgrade.
  • Install available Windows Updates after you can log in for the first time. Reboot when prompted.
  • Run the Sharepoint Configuration Wizard again. Reboot when prompted.
  • Done.

Performing an in-place upgrade to Windows Server 2012 R2 FROM a 2012 RTM server works just fine and, yes, to save time and resources I would recommend doing this if you have the ability to do so. The only problem is that it can take several hours for the in-place upgrade to finish per server, but it does work. As always, make sure you read Microsoft's official documentation on TechNet for your specific upgrade situation. Don't make the same mistakes that I did :)

- Joe