Latest Financials Show Microsoft is Catching up to Amazon

Amazon just released its latest financials for the quarter and Microsoft just released their results a few days ago. 

Amazon does not report its cloud revenue separately (although they have no committed to do so in future releases) – AWS is categorized under “Other”.  Amazon reported “Other” revenue of $5.6 billion for the year, up from $3.9 Billion.

Microsoft’s commercial cloud revenue is currently projected at $5.5 billion, making it a close second.  In addition, Microsoft’s growth rate seems to be higher at 114% year over year.

Read More

Key Features in the New Power BI Service Announced

As posted previously, Power BI is getting a make over from its first version launched early last year.  Microsoft has just announced some new details on the revamped business intelligence service.

Power BI is going Freemium for Consumers, Discounted for Businesses

Microsoft has announced that there will be a free version of Power BI.  In addition, there will be an enterprise version called Power BI Pro that will replace the existing subscription pricing available in Office 365 today, but at a significantly reduced price of $9.99 per month.

Power BI is being Disconnected from Excel

Up until now, the key design surface for Power BI has been Excel 2013 with its Power Query, Power Map and Power View add-ons. 

In the new version of Power BI, Excel is no longer a requirement for building dashboards – you can build them through a browser.  You can still design dashboards using Excel and upload them to Power BI but this is no longer a requirement.

Instead, the new Power BI Designer will allow you to build new dashboards.  From the current model, the Power BI Designer is still an application that needs to be installed and not a web application and is only currently available on Windows.

Power BI is being Disconnected from Office 365 and SharePoint

The history of Power BI is rooted in Excel Services and SharePoint.  One of the key reasons to use SharePoint as a portal was because it was the vehicle to run excel services.  Excel services allowed you to render excel reports, dashboards and charts without the need for an Office desktop client.  This was one of the key features of SharePoint – see the old SharePoint 2010 “wheel” and you’ll see “insights” (e.g. Excel Services and BI) is a key part of the feature set.

Well in a similar strategy that has already been seen with One Drive and Office Web Apps, Power BI will be no longer tied to SharePoint and exist on its own as a set of apps, services, APIs and data.  You’ll still be able to presumably add the Power BI App to your SharePoint sites, but you’ll just as easily be able to go directly to the Power BI App and consume reports directly.

Power BI will have New Visualizations

As part of the new Power BI, dashboard designers will have access to new visualizations including:

Combo Charts


Tree Maps

Filled Maps

Funnel Charts

Power BI is still Cached Data and Refreshes are Limited

The core of Power BI is Power Pivot and its in memory cached data repository.  This architecture still holds true in the new version which means that if you’re looking for real time streaming, direct access to your data sources, etc. then you’re out of luck.  In addition, while Power BI’s caching feature is highly useful for data that is cacheable (e.g. static reports, weekly dashboards, distributed data extracts, etc.) it still has some weaknesses in comparison to a direct connection to a database. 

The one exception to this is the new SSAS connector – it actually connects in real time and queries your cubes directly instead of caching the data in the cloud.

In the free version, Power BI is limited to Daily and 10K rows per hour.  This means that free is going to be limited to visualizing pre-canned excel files, already aggregated pivot tables, etc. because a 10K limit is quite small. 

For the pro version, the refresh limit is 1 hour and 1 million rows / per hour.  This also seems pretty limiting at first glance.  Assuming that there isn’t another more enterprise option, this will mean some thinking about how you design the SSAS cubes, Hive tables or other repositories so that you’re not sending over millions of rows per hour to be aggregated by your business intelligence layer.  It’s not quite clear whether a query against SalesForce for example requires a refresh or whether it’s a direct connection to the repository but assuming it’s similar to current Power Query / Power Pivot then in most cases it’s a full refresh of the data (In the current version of Power Query / Power Pivot, data refreshes are full with no support for incremental updates – if you pull in 10 million rows into your model it will refresh all 10 million every refresh).

You’ll need to do some level of aggregation before you send over the data.

It’s all About the Connectors

One of the strengths of products such as DOMO and Tableau are the large numbers of data connectors.  As organizations move to the cloud, the number of repositories of data is growing exponentially so an enterprise BI product needs to be able to connect and pull data not just from traditional data sources such as databases but also cloud services such as SalesForce, Twitter, Facebook, Google Analytics, etc.  They also need to be able to connect to NoSQL data sources such as Hadoop.

Microsoft has made some progress in expanding the number of data sources available through various updates to Power Query in the past year.  The current list includes a number of standard databases, NoSQL data sources, Azure Services and HDInsight.  Expect this to accelerate with the new Power BI service.  Currently, they have announced connectors to GitHub, Marketo, Dynamics CRM, SalesForce, SendGrid and Zendesk. 

The Weakest Link Still Seems to be the Data Management Gateway

Microsoft has released both a Data Management Gateway and a SSAS connector to enable hybrid connectivity from Power BI back to your on premise data sources.

These connectors act as a proxy between Power BI and your on premise data sources.  In the current architecture, these are applications that run in your local environment on a client computer or server.

There are some significant weaknesses to the current approach to these connectors – they are really just client applications, not robust service applications.   At least in their current incarnation, I wouldn’t consider them enterprise class for a number of reasons:

  • Power BI Analysis Services Connector can only connect to SQL Server Analysis Services Tabular Models – no support for multidimensional models yet.
  • The Power BI Analysis Services Connector has to be continually running but it runs as a desktop client.  There is no clear way to install it as a Windows Service.  There is also no clear way to run it with redundancy or to load balance multiple servers to provide high availability.
  • You cannot run the Power BI Analysis Services Connector and the Data Management Gateway on the same computer.  That means two separate servers are required at the moment to handle different proxy mechanisms.
  • The error checking, exception handling and traceability when gateway refreshes happen is not very robust and not easily monitored outside of Office 365 (e.g. by System Center or other aggregate monitoring tool)
  • Credentials are based on a single refresh account and not by the logged in user.  Refreshed data is available to all users who have access to the report.


Read More

Update on Office 365 Public Facing Web Site Third Party Service Offering

As previously posted, Office 365 will be discontinuing its support for public facing web sites.  Microsoft is outsourcing the service to third parties – the current list includes GoDaddy and Wix.comMicrosoft has just released some new information on the new offering.

Neither third party has published any product details, pricing, etc. for their new Office 365 public facing web site service.

Public Facing Web Site is No Longer Included in Office 365 Subscription

Microsoft does not include the cost for your new public facing web site in the subscription cost – you will need to pay the third party provider an additional hosting fee.  Microsoft is promising “discounted pricing rates where available”.  The cost of your Office 365 subscription isn’t being reduced either.

New Third Party Offerings will be More Robust

The original Office 365 public facing web site offering was limited in scope.  The new third party offering will be more robust (presumably a full instance of on premise SharePoint 2013).

The existing SharePoint Online Public Website feature was designed for customers who need only a basic online presence. These new solutions will provide more robust tools and solutions needed for delivering, supporting and managing a complete online presence.

Third Parties are Responsible for Migration, Training and Onboarding

Microsoft’s only commitment is essentially to provide a link to these new third party services only.  Training, migration, documentation is now the responsibility of the third party service.

You Have Two Years to Migrate

For those with existing web sites, you will have two years from March 9, 2015 to migrate to the new third party service.  No new public facing web sites will be allowed to be created.

Read More

Microsoft Extends its Support for R through its purchase of Revolution Analytics

Microsoft has bought a small open source company called Revolution Analytics.  Revolution Analytics is a provider of an open source distribution of R, one of the most widely used data analysis software packages.    They also provide consulting services.

Revolution Analytics also has a product called Revolution R Cloud which is a distribution of R designed specifically for the cloud.  It is currently targeted at Amazon Web Services – presumably now it will be retargeted to Microsoft Azure.

This acquisition will help customers use advanced analytics within Microsoft data platforms on-premises, in hybrid cloud environments and on Microsoft Azure. By leveraging Revolution Analytics technology and services, we will empower enterprises, R developers and data scientists to more easily and cost effectively build applications and analytics solutions at scale.

R is an important language and toolset for data scientists working on advanced statistics algorithms.  Microsoft is investing in supporting R in its cloud offerings including support for integration of R code and R packages in its Azure ML offering

Read More

Warning: Azure Web Sites Turning Off PHP 5.3 Support on January 31, 2015

I just received an email from Microsoft that informs me that PHP support for version 5.3 will be turned off as of January 31, 2015.  All Azure Web Sites will now only support the upgraded 5.4 version of PHP.

For those of you using PHP to run your web site, check for 5.4 compatibility before the end of the month!


Read More

New Microsoft Surface Hub Announced–Interactive White Board Powered by Windows 10

Microsoft has just announced the Microsoft Surface Hub, a new device designed to replace your white board with a fully interactive and touch enabled screen.  Powered by Windows 10, the device will be an 84 inch 4K display with built in touch support and a high performance screen. 


The Surface Hub leverages Microsoft’s investments in collaboration technology with built in OneNote, Skype, and connectivity driven through WiFi.  Offices have had video conferencing and interactive white boards for many years, but have typically required expensive proprietary networks and hardware to make them work effectively. 

It will be interesting to see the performance of the video in particular.  Lync running over Internet is somewhat variable performance running as a postage stamp video on my laptop – I wonder how an 84 inch 4K video stream will perform without dedicated networks between locations. 

The coolest part of the device is that it is developer friendly – Microsoft has created a new surface to build applications.  These applications could be specifically designed for the Surface Hub or be universal apps that scale up and down from deployment on your cell phone all the way up to a Surface Hub screen size. 

For those of us building SharePoint sites, applications and apps this also creates some new possibilities for deploying team collaboration portals that can be leveraged in a team collaboration context.

Read More

How to use Microsoft Project Efficiently for Building Plans

As consultants, we have to develop estimates and the number one tool we use is Microsoft Project.  Over the years, I have developed a set of best practices for using Microsoft Project that will make building estimates in particular more efficient. 

De-clutter Your Workspace

When Project 2013 creates a new project, the default view includes a timeline and a Gantt chart.    Remove both of these views because for estimation, these aren’t particularly helpful and clutter the screen.

In addition, I would recommend removing the Indicators and Task Mode columns.


If you’re working with budgets, I would add in the Cost column for sure so you can see your costs changing as you plan.  I would also add in the Work column so you can see the hours.

Here is the de-cluttered version of the default project view.


Much simpler, easier to see the tasks and much faster for data entry purposes.

Split Your Window

Now that you have removed the timeline and Gantt chart, you can split your window to have the Task Form on the bottom pane and your task list on the top.  To split your window, just drag up the window from the scroll bar on the right.  If you right click on the Task Form you can change the view – I always use the Resources and Predecessors view.


This view makes allocations of resources and predecessors much easier than typing them directly into the cell.  You can adjust each allocation and instead of typing predecessors as numbers you can pick them from a drop down list. 

Configure Your Project from the Start

There are a number of settings that govern your project plan as a whole.  While you can change these at any time, if you set these up from the start you will find Microsoft Project is a lot faster and easier to use. 

Project Start Date

By default, Project sets the project start date to today’s date.  It seems obvious, but setting the project start date to an appropriate date will ensure that your project plan flows appropriately.


Working Time

Setting the Working Time is important for two key reasons – it allows you to add in vacation days, holidays, etc. and it sets how long the day is for your plan.  By default, a day in Project is 8 hours per day.  Many organizations work on a 7.5 or 7 hour day instead – I recommend changing this before you start plotting out tasks. 


Switch to Auto Scheduling

By default, Project sets all new tasks to be manually scheduled.  However, in most cases you want tasks to be automatically scheduled so that Project manages your schedule for you instead of you plotting out dates manually.   For estimates, don’t use manually scheduled tasks if you can avoid it – always use automatically scheduled tasks.

You can change the settings for newly created tasks by going to File –> Options –> Schedule and setting the New Tasks Created to “Auto Scheduled”.


You can also switch to auto scheduling by clicking on the New Tasks: Manually Scheduled button in the bottom left hand corner.


Change this to auto schedule.

Pick a Task Type and Stick With It

Microsoft Project has three types of tasks that you can use.

  • Fixed Units: units are fixed.  If you change the work value, the duration is recalculated but units stay the same.
  • Fixed Duration: duration is fixed.  If you change the work, the units are recalculated.  If you change the duration, the work is recalculated.
  • Fixed Work: work is fixed.  If you change the work, the duration is recalculated.  If you change the units, duration is recalculated. 

By default, any new tasks are created as “Fixed Units”, which in my experience is the least intuitive of the three options. 

You can change this by going to File –> Options –> Schedule.


My recommendation is actually to use “Fixed Duration” and to check off the box “New Tasks are Effort Driven”.   Here is why I personally find it easier.

When I plan out a project, I don’t think to myself – I need 83 hours of work and I have 1.5 developers to do the work.  This is what the approach for “Fixed Work” assumes – it assumes you know the raw number of effort hours to plot out.  Instead, when I estimate out a project, I think to myself, “I need 2 developers for 2 weeks” or “I’m going to allocate a project manager for 30% of his/her time for duration of the project”.  Fixed Duration works MUCH better for these types of scenarios because it is inherently schedule driven and not work effort driven.  Work is calculated as an output – e.g. if you allocate 2 people x 2 weeks x 50% with 8 hour days the work is automatically calculated to be 80 hours. 

If you’re the type of person who thinks in effort hours, then use Fixed Work as your task type. 

The worst practice in my experience is having a project plan that uses multiple tasks types – this can cause errors in your plan and makes it hard to follow.  Set the default task type and stick to it consistently.

Highlight Your Critical Path

One of the key challenges with large and complex project plans is tracing through the critical path and ensuring that all your dependencies are included so that the path flows from the beginning to the very end of your project plan.

One easy usability enhancement you can do is to highlight critical path tasks.  You can change the text style of the critical path tasks – for example, you could change them to red and bold.  To do this, you click on Format –> Text Styles and then select Critical Tasks from the Item to Change dropdown.  You can then change the color, font, size, etc. for those critical tasks.


You can also highlight critical tasks in the Gantt chart as well by clicking on Format and then clicking the Critical Tasks checkbox.


Keep Your Dependencies Simple and Modular

A project plan is a set of tasks organized as blocks.  For example, the out of the box Software Development plan in Project is a series of modular blocks of tasks.image

In general, I always start with the summary tasks first and create dependencies between them instead of creating relationships between tasks.  By using this approach, you can abstract what is inside each module and change it around without breaking the dependency. 

This helps with moving around sprints, re-organizing complex plans, etc.  If I can keep the dependencies limited to the modules and not individual tasks, I can re-organize them as a set of blocks instead of having to re-organize each task and check every dependency.

Allocating Overhead

Every project has specific tasks (building something, testing something, etc.) and then an amount of work to manage the project.  “Management” in this case could include project management, architecture, operational support, etc. as pools of hours allocated to the project and not to a specific task.

In theory, you could add these overhead tasks to every single task as a resource allocation but this becomes impractical quickly.  Instead, what we do is create a specific task for overhead tasks such as Project Management, Technical Architecture, etc.  – any role that isn’t tied to a specific task.

This is where the Fixed Duration task helps a lot – in most cases, it’s conceptually easier to think of allocating a project manager or architect across the duration of a project or phase at % allocation.  For example, for a large project, it might require a full time architect or even multiple architects for the duration of the project to supervise the development team.  When you estimate this, do you think “I need 542 hours of architecture time” or is it more practical to estimate with a model like “I need 50% of an architect for 6 weeks”?  I find the later is much easier to model.  We can create a task that encompasses the duration of the project or phase and then just allocate the resources appropriately.

Adding Contingency

Adding contingency is unfortunately not easy in Project and there are multiple types of contingency – hours, time, resources, cost, etc.  There are a few ways we add contingency to our projects:

  • You can use a custom formula to add a % to your cost.  For example, you could create a Cost with Contingency column and make it equal to Cost * 1.10.  This works well for cost calculations but doesn’t impact hours or time.
  • For schedule contingency, you can create tasks with no resources and just have them as artificial delays in the project plan – these don’t increase your cost but allow for schedule slippage.
  • Another schedule contingency approach I have seen used is to use a 7 hour calendar when you have an 8 hour day.  This effectively provides an additional hour per day in schedule slippage.  However, again this will increase time while not increasing cost or hours.
  • To add hours and then impact the schedule and cost accordingly, the only way to do this is to add hours to your plan, either as a separate task or baked into the existing tasks. 

For macro estimates, I like the first approach the best because it keeps the project plan lean while allowing you to change contingency globally to increase the cost.  This is particularly useful for fixed cost projects.  However, this also means that you may have an unrealistic schedule or need additional resources if the contingency is actually needed because the hours are not in the plan. 

Read More

Check Out New Azure AD Connect: Simplified Tool for Hybrid Directory

Microsoft has supported hybrid directory architectures for years but it’s always been somewhat complicated to setup and required multiple services and services.  We just implemented Office 365 in a hybrid architecture and the most complicated aspects are the integration of directory services, especially when including Exchange and Lync on top of Active Directory services.

Given that Microsoft controls most of these technologies, it shouldn’t really as complicated as it is – this is primarily because of legacy reasons and the evolution of all these various federations scenarios. 

Microsoft has released a new tool in preview (e.g. it’s not Production support just yet) called Azure AD Connect that centralizes and simplifies the hybrid directory scenario of connect your on premise AD with Azure AD.  It’s available for download here.

This tool will replace DirSync, Azure AD Connect and Azure AD Sync as a single centralized tool.

Read More