Jeff Pries

Business Intelligence, SQL Server, and other assorted IT miscellany

Month: March 2015

Career Goal Planning

Professional-Development-Picture-341x348A big topic that’s been making the rounds lately personally, around the office, and on the Internet is career planning and career path planning.  Do you do it?  Do you wish you did it?  How do you do it?  Do you use any tools or methodologies to do it?  You’d be hard pressed to find anyone that says that setting goals is a bad thing.  Even harder would be to find someone that says tracking progress toward those goals is a bad thing.

One of the common ways to document these goals and track progress toward meeting them in the SQL Server world is with a tool called a Professional Development Plan.  If you mention a Professional Development Plan in the SQL Server work, that brings up one name:  Andy Warren.  Andy has done numerous talks and presentations over the years to spread the word of the Professional Development Plan to the masses and I’ve become a big believer in the system.  But are there any other systems out there?

In talking with a coworker outside of the SQL Server world not long ago, he mentioned something similar — a Personal Development Plan outlined in a PDF from a company named MindTools.  After speaking with him about it, I thought to myself “this sure does sound familiar” so I went to the website and subscribed to their newsletter in order to download the free PDF outlining what a Personal Development Plan is and the various worksheets to create one.  While the process was a little bit too structured for me, there were some elements of it which I really liked, such as the Skills Audit, which I plan to incorporate into my personal Professional Development Plan template at some point (and will be linked to a future post).  As their plan is free for the price of providing them an email address, I highly recommend downloading it and checking it out for ideas.

In reading an unrelated blog post the other day, I saw mention of an “Epic Life Quest.”  Epic Life Quest?  What is that?   As it turns out, an Epic Life Quest is just another way of documenting achievements.  While most of the examples I saw seemed to be a mix of career and personal achievements, I suppose you could easily choose to do one or the other rather than a mix (though a mix does make sense as personal life heavily influences career and vice versa.)  The idea is pretty simple — you document your achievements, but in a way that you make a little game out of it.  In the examples of others trying this, they commonly use 5 as the magic number.  For each 5 achievements, you go up a level.  Pretty simple stuff.  Here are a couple of good examples I saw of these Life Quests.  [The original], [Brent Ozar], [Derik Hammer], [George Stocker], [Andrew Notarian].

Learning about Epic Life Quests (of Awesome) got me to thinking.  Peanut butter is good.  Chocolate is good.  But, if you combine them, you get a Reese’s Peanut Butter Cup — which is great!  What would happen if you combined some of the ideas of a Professional Development Plan with some of the ideas of an Epic Life Quest?  A Professional Development Plan brings goal setting to the table.  Both the PDP and the Life Quest bring goal tracking (achievements) to the table.  The Life Quest brings the game aspect or “leveling up” aspect.  They seem to be pretty compatible ideas.


So, how to combine them?  Well, that’s a good question.  For now, I’m going to eat a Reese’s Peanut Butter cup and I’ll leave the answer to a future post as I go to figure out that very thing.  Stay tuned!

Custom Dashboard Development – Part 3: SignalR Design

Microsoft_.NET_Framework_v4.5_logoIn my previous posts, here and here, I discussed my objective to create a custom dashboard solution in order to meet a number of requirements as well as a method for creating that solution using a traditional Web Services approach.  In this approach, the client is wholly responsible for requesting all of its updates from the server whenever it needs them (typically on a set timer).  In this post, I’ll create the same dashboard but use a different technology, SignalR, for performing the data communications.  Much of the solution will be the same or similar to the previous solution, however the back-end is fundamentally different.

With the SignalR approach, rather than the client being responsible for requesting data updates from the server, the server maintains a connection with the client and pushes them to the client on an “as needed” basis.  This basis can be timed (such as sending an update once every 5 minutes) or it can be triggered (such as sending an update whenever data changes.)  In this example, we’ll be using the timed approach for parity with the previous solution.  As an extra benefit to the SignalR solution, when multiple clients are connected to the same dashboard, they will all display the exact same data and refresh at the exact same time (as they are not maintaining their own individual update timers.  The following diagram gives a quick illustration of the data communications between the clients, web server, and database server:

Continue reading

Custom Dashboard Development – Part 2: Web Services Design

Microsoft_.NET_Framework_v4.5_logoIn my previous post, I discussed my objective to create a custom dashboard solution in order to meet a number of requirements.  In the process of researching how I would create the solution, I made multiple choices pertaining to the technology and design which would be used to create the dashboard.  I chose to implement both a traditional communications model utilizing web services where the client is responsible for requesting data refreshes as well as the SignalR communications model where the server pushes updates to the client.

To recap, I made the following design decisions for the application:

  • Use a custom developed application instead of an off-the-shelf product
  • Use web-based technologies within the Microsoft ecosystem
  • Use ASP.NET MVC5 with C# and HTML/JavaScript
  • HTML/JavaScript based chart control library — jChartFX

Continue reading

Could Not Load File or Assembly Microsoft.Web.Infrastructure

I’ve gotten the error message “Could not load file or assembly ‘Microsoft.Web.Infrastructure, Version=…’ a few times lately when deploying new ASP.NET MVC5 projects to an IIS7.5 or IIS8 web server via the Web Deploy method within Visual Studio 2013, so I thought I’d put up this quick article on how to resolve it.

This error occurs for me when publishing a new MVC5 project to a web server (it does not occur when previewing the project locally from my machine).  Initially, after deploying, I’m greeted with the very vague error message:


Continue reading

Custom Dashboard Development – Part 1: Introduction

Microsoft_.NET_Framework_v4.5_logoI just recently finished a series of custom development projects which required me to revisit the programming world from which I once came.  Programming is something I started doing when I was very young and have always enjoyed.  While I’ve done plenty of scripting, Powershell, and T-SQL in recent years, my current job roles have had little need for true programming skills until recently.  And wow, things have changed!  In this series of posts, I’ll be going through my process for choosing a technology and developing a custom dashboard solution as well as some of the lessons I learned along the way.  Here in Part 1, I plan to cover my goals for the dashboard as well as how I chose the platform I did.  In Part 2, I’ll cover the more traditional of the two methods I explored and in Part 3, I’ll cover a SignalR solution.

Whenever learning or refreshing skills, it always helps to have a goal.  In this case, my objective was to create a dashboard solution with the following objectives:

  • Display near real-time data from a OLTP SQL Server data source
  • Be aesthetically pleasing as it will be viewed on multiple large screen displays 24/7
  • Refresh gracefully with no user interaction or display interruption while refreshing

Continue reading

© 2017 Jeff Pries

Theme by Anders NorenUp ↑