Telling a story

I am currently working a project that involves, among other things developing several reports, using a variety of technologies, all centered on a delivery model in SharePoint. Some reports favor SQL Server Reporting Services, others, Excel Web Access and PowerPivot, and others are more focused on PerformancePoint Services. In some cases we are connecting to a SQL Database view that is a transform of a SQL Table, other times we are connecting to data that is entered/stored in SharePoint Lists.
The most important thing about all these reports is that they tell the right story, i.e. the convey the right message. Sometimes when we are building these reports, we get hung up on form or format, and less on bringing the right content up to the reader in an efficient manner. For example, I am working on a report that is a very complex report. It has 10 different data sources, and has 10 different sections. The problem is that we have a customer entity that advocates a 1.7 sec understanding, however the complexities of htis particular report do not lend themselves to that delivery. There are times for susinct, quick hits of information, but there are other times that the ‘Cliffs’ notes version simply will not suffice. This is one of those times. I have been struggling with trying to reduce voluminous, highly complex data sets into a pretty picture, but it is not working. After talking the issue through, we learn that the end users of this report want a complex story, one with many facets and they understand that consuming this report is not a trivial matter. Ultimately the notion of 1.7 second understanding is irrelivent in this report and so I am undertaking, today, to rebuild the report properly. Remove that one condition and the report opens up a vast amount of creativity and allows us as developers to apply the data in a more meaningful way.
When developing requirements for any solution it is important to fully understand the nature of the problem and explain the problem fully and discuss the use case of the proposed solution, whether that is application development, hardware or software investments or in this case reports development. So what I have struggles to come to terms with for the last week now gets to be wiped clear and redone. This time should only take a few hours rather than several days.
Wish me luck!


It’s the little things

When I joined my new firm, they got me a new Laptop, with all the extras, 24″ monitor, docking station, and wireless keyboard and mouse.  It’s a real nice setup, but the laptop is a Dell.  Specifically a Latitude E6520.  Over the past many years of supporting end users, home users and data center equipment, I had given up on Dell as a capable provider of IT equipment.  I have been working with an HP VAR as well as individually using HP Laptops and Desktops, and have been sold on them.  They are terrific, reliable and sturdy, everything Dells are not.

However, this laptop is actually pretty darn good.  It clearly is not an entry level or home user machine, and the quality does show through.  The lid hinge is solid, the case, is only a little flimsly, the keyboard is solid.  My favorite thing though is the light up keyboard, available via fn+ right arrow.  Yea, it’s the little things, and while this is quite possibly the smallest of things it is very kool.  My Personal HP EliteBook has a light that pops out and that’s kool, but the light up keyboard is very kool.  the kind of thing that makes me think twice about whether they are a player again in the marketplace.  for now, we are still and HP house, but we may come back around…

My 10 year old daughter…

…is awesome, inspiring, a ROCKSTAR!  Yesterday was her birthday, and the one thing she really WANTS is to have a huge blow-out party…we did not give her that.  She was understandably disappointed, but she managed to make it a tremendous birthday none-the-less.  Our friends will recognize how terrific she is, how big her heart is, how genuinely nice she is, and how she is becoming the picture perfect young lady.

As you may know already, we are building Maison du Rustre for our family.  This is not a trivial persuit for Erika or me.  We specifically made the decision that this is exactly what our family needs.  The dogs need a back yard to rule, the boy needs a home with stability and consistency, Erika needs a kitchen that matches her ambitions, we need a garage to park in without getting wet when it rains.  Kate needs a neighborhood, she needs a room she can paint and design 1000 times over, she needs a place to retreat to when life is overwhelming, and she needs a place that can take as much love as she has to give.  We told her that we would give her a blow-out soon, but that she has to wait for the right time.  She made the best of the situation by dragging us to Olive Garden and then shopping for her Birthday, and she lived in the moment and loved it.  Yes she was disappointed, but once we are in la Maison du Rustre, we will be able to give her birthdays and and cookouts and pool parties and saturday night parties and ice cream socials and lemonade stands and who knows maybe a pool in the back yard and a tree house in the woods behind the house, and a loft bed in her room and paint it 1000 times over and a tv and a wii and punching bag and whatever she wants, but for now she needs a home to grow up in, we need a house to grow old in, the dogs will need a place to rest, and the boy needs a home base to be grounded in.

So Kate, you are the best 10 year old daughter ever, and you deserve your birthdays and your sleep overs and your guitar lessons and your sneeking out when your 21 years old 😉 but all in due time.  For now, thank you for being such a great young lady and inspiring us, Mom and Dad, to make the decision we have run from for the last 10 years, and for showing us how to grow up.

Changing a data source in PowerPivot

PowerPivot creates and consumes a SQL Server Analysis Services data-source to provide users information.  This is built via the PowerPivot GUI as an Add-In for Excel.  It works pretty well, but we recently had the opportunity to learn more about the inner workings of PowerPivot.

When one creates a PowerPivot Workbook, you can connect to a variety of Data Sources, and whne you are finished ‘building’ your PowerPivot workbook, it builds out an Analysis Services sytle databse in a ‘PowerPivot’ SQL Instance on the server.  Nice.  What happens when the source data needs to be moved to a new location, i.e. a SQL Instance is being replaced on a server or moved to a different server.  When PowerPivot goes to update the Analysis Services Instance Database, it cannot connect to the original source, and there is no simple way to advertise the change of server location fo rhte source database.  PowerPivot does however, allow us to do this, by opening the PowerPivot add-in and choosing the Design Tab.  From there click on the Table Properties button.

From here you can point to a different Source Name or create a new SQL Query in order to bring the data from an original source location into the Analysis Services Instance :: ‘PowerPivot’…when you build out the data source, it will import all the data into the Analysis Services instance Database, and then you can set a refresh schedule for th analysis services data to refresh from  the source data.  This will improve preformance as the PowerPivot workbook only talks to the PowerPivot Analysis Services Database, and not all the way through the process to the backend source databse.

Why it’s OK to leave a tech job at 5 p.m. –

Why it’s OK to leave a tech job at 5 p.m. –

the best part is this…’Ultimately, I think the measure of our work is in our productivity, not the number of hours we put in…’ so true, but in the current system, the method by which productivity and value is measured almost entirely on a time equation, rather than a results equation, unless you are an owner or a business.  While this industrial age system works, it is fraying at the seems and ought to adapt to the world in which we work and exist.  The eternal question is how does an entity compensate for work on an effort basis without subjectivity coming into the equation for information workers who do not make widgets or consumables.  A Salary is devised to compensate an employee for their application of intellectual property to company.  Currently that application is measured by units of time rather than the actual value of the work performed or the value of the intellectual property as it is applied to the company’s income.  Can employers and information workers properly overcome this disconnect without major disruptions to the status quo?

Conditional Formating in SSRS Report Builder 3.0

I am building reports in SSRS and delivering those reports via SharePoint Integrated Mode reports library. Most of it is relatively standard stuff, but I recently had cause to do some conditional formatting. When I hear conditional formating of data, I think of things like color coding data based on the value of the data in a table. And a good discussion of this is here.  That does a terrific job of explaining the concepts, but my client set requirements to format an element’s size.  Specifically the element must not extend the box it is contained in.

In this case I had an expression in a Text Box.  The expression returns the values of a parameter as it is rendered when the report is run.  Problem is when the parameter value is multi-selected the value extends the text box down beyond the graphical layout and messes up the entire report.  I searched the inter-tubes for an answer but could not find on…so I finally just crafted it myself.  As first I thought that counting the values passed as parameters ought to work, i.e. if there were 1 value passed, then set the font size to 48pt, if there were 2 values passed, then set the font size to 36pt, etc…well that failed miserably, but with some collaboration with a collegue, I tried it out with len(Join(…

=Switch(Len(Join(Parameters!DRS.Value,”, “)) < 18, “48pt”, Len(Join(Parameters!DRS.Value,”, “)) < 36, “36pt”, Len(Join(Parameters!DRS.Value,”, “)) < 48, “24pt”, Len(Join(Parameters!DRS.Value,”, “)) < 100000, “18pt”)

and low and behold it worked, like a champ.  Problem is that now I have a client who knows I can figure out how to fix / work around these problems.  While SSRS Report Builder was not built with this specifically in mind, some creative engineering makes it work.