Category Archives: Uncategorized

Slides for PASS BI Virtual Group

Today I’m going to be presenting on DAX for the PASS BI Virtual Group. The focus is on all the hard mental concepts of DAX. If I could sum up the talk in one picture, it would be this:

That red area is where I banged my head when learning DAX. The learning curve shoots up wildly in the middle of learning the technology, instead of a slow gentle curve. This presentation covers the middle parts that are key to understanding DAX.

Here are the slides for the presentation: Introduction-to-DAX-2017-03-30

Here is the recording:

Here is the talk by Marco Russo I mentioned in my presentation: Optimizing Multi-Billion Row Tables in Tabular

The challenge with being a “data professional”

During PASS Summit, I wrote a post about the broadening data platform. I talked about the term Data Professional, and how I feel how it describes the changes going on the in SQL space. Here’s the problem: It’s a terrible guide. It’s a great description, it’s a wonderful attitude, it’s an ambitious goal; but it’s a terrible guide.

Being a data professional means being a jack of all trades. It means being a renaissance man (or woman). It’s means a career plan that looks like this:

And then you end up with Buck Woody telling you you are trying to do too much, cut it out kid.

So that’s the problem. Sometimes broadening your horizons is really a mask for being scared of commitment. Sometimes it’s a mask for being scared of an ever-changing future. You have to bet on a horse, you can’t bet on them all. Being a data “professional” is great in theory, but in practice it turns into majoring in the “universe” (see XKCD).

Major in the Universe

I’m not saying don’t learn Docker or Powershell. If you don’t learn those things, Kevin Feasel will warn you about becoming homeless. And who wants that.

What I am saying is that if someone asks you “Where do you want to be in 3 years?”, “everywhere” is not an answer. If someone asks you “What are you going to learn this week?”, “everything” is not an answer. So yes, generalize your skill set, who knows what you’ll be doing in 5 years. But right now you need a focus, it’s the only way to become an expert at anything.

Ultimately, I think it comes down to two quotes:

If you don’t know where you are going, any road will get you there.

-George Harrison, paraphrasing Lewis Carrol


Two roads diverged in a yellow wood,
And sorry I could not travel both
And be one traveler,


I took the one less traveled by,
And that has made all the difference.
-Robert Frost, The Road Not Taken

For me, I’m looking into Data Science. The problem is I’m not sure what Data science actually is! What I know for sure is it involves R and pirate jokes. We’ll cover that in next week’s blog post.

PASS Summit–Quick thoughts

Last week I was at PASS Summit and it was an incredible time. I went in feeling deflated about my career and came out excited and energized. It was wonderful seeing the potential of the Microsoft Data Platform and where things are going. It was also great to meet a lot of people and hang out with my SQL Saturday friends.

Overall, there was one theme I saw over and over again. You could call it technological diversity. You could call it fragmentation. You could call it accelerating growth. What it really comes down to is more technologies, more platforms and more things to learn.

You could see it in the keynotes multiple times. SQL Server is now on Linux. Polybase connects to Mongo. NoSQL support is available via DocumentDB. PASS is rebranding and focusing on the Microsoft Data Platform, not just SQL Server. Clearly the surface area of a data professional is expanding.

I like that term a lot, Data Professional. At first, it sounds meaningless and generic. But it’s one of the few things that aptly describes what I do. Because being able to be just a DBA or a database developer is going to get rarer. Now you need to know a bit about Azure. Now you need to know a bit about Excel and PowerPivot. Now you need know the difference between Pokemon and Big Data.

All of this has inspired me to work on my first professional development session; Drinking From the Firehose: a Guide to Keeping Up With Technology. I’ve submitted it to SQL Saturday Cleveland. I also might get to present it for the Professional Development VC. I’m hoping if I can put some of these concepts into words, I can get a better handle on them myself.

Power BI User Group – Getting Started and Keeping Up

Here are the slides from the presentation.

Overall I think the first meeting went fairly well! We had a delay because the the president was in town, which I certainly wasn’t expecting. Still, we were able to get everything covered in a timely fashion.

I’m excited for when we put out the survey because I have no idea what kind of content people are looking for. I expect I’ll be doing  a number of the presentations going forward.

Starting a todo app: part 2, technologies

Last week, I wrote about my desire to make a todo app. this week, I’m going to talk about the technologies I’m using and what I think so far.

Currently, I’m building this app on the following technologies:

  • C#
  • Azure
  • DocumentDB
  • Xamarin

Notice any pattern? I am a giant Microsoft shill. My career focuses on Microsoft SQL server and Power BI, so It’s in my best interest to learn surrounding technologies.

Of course Microsoft keeps doing weird things like including Git in Visual Studio, or putting SQL Server on Linux. So the surrounding technologies get a big broader these days.


I really like C#, but I don’t feel like I “get it” just yet. I think it’s clean and understandable as a language, but it feels like 80% of the language is learning about random libraries and classes. And if you don’t know that Microsoft.Azure.Client.Document.UriFactory exists and you need it, then you are out of luck. It just doesn’t feel as discoverable as it should.

In contrast, when I worked with Python, I felt like everything was laid out in orderly modules and it was easy to fit it all in your head. When they said the batteries were included, I felt like you could count all the batteries.

Maybe the work I did with python was just simpler, maybe C# has a richer set of standard libraries. I’m really not sure. I just wish I knew when C# would really click for me.

I’m really excited that they combined Web Forms, MVC and WebAPI into one project type. You can even gracefully add them after the fact. However, your Global.asax.cs may look like this as a result.


I can’t say I have a good idea when to choose between one or the other within a project. It seems like 3 very different modes of working and routing.


Azure is to today what virtualization was 5 years ago. The cloud is just going to keep getting bigger and bigger and bigger. If you aren’t learning about it now, you are going to be very remiss about it 5 years from now.

Unfortunately most of us don’t have a need for cloud hosting. You probably don’t have a need for your own personal Azure Active Directory or Hadoop Cluster. So a lot of times, that means doing projects and labs to learn it preemptively. If you are waiting until it comes up at work, it’s going to be too late.


DocumentDB is… interesting. Brent Ozar mentioned that he is using NoSQL for a new project. He picked Amazon DynamoDB over DocumentDB. I’m picking DocumentDB as a way to learn Azure.

So, why go the NoSQL route? Partly it’s something new to learn, but there are a couple of advantages. I think Document databases when you want to store lists of things or hierarchical data. In my app, I have lists for times of day, task categories, and tools/contexts. I want to be able to do filtering on these things, which can be clunky in SQL.

Things I like

Some other things I like so far are the dynamic schema, dynamic serialization, and TTL. Normally I appreciate have a well-defined structure to my data. However, this is a design that’s constantly evolving and changing. It’s hard to plan it up front. With Document DB, I can add a field to my model class in C#, set a good default, and that’s it. Now I have a due date field

The other thing I like so far is the TTL feature. I can mark completed tasks with a ttl of a week. Then, if I don’t touch them for  a week, they will self-destruct. That is a really cool feature.

Things I don’t like

One of my big pet peeves with DocumentDB is that collections are billing containers not logical containers. This to me just seems silly. If I want to have different types of objects, such as summary data, I have to store them all in the same place or pay 2-4x as much. That approach feels really messy.

Another thing that’s an issues is case sensitivity.  Because it’s a dynamic schema, if I get a column name wrong, it won’t tell me I screwed up. So I have to remember if my columns start with a capital or not. Also, if I do a contains I have to get the case right for that as well. This is more of a mindset shift than an actual issue with Document DB.

Finally, because it’s JSON there isn’t a date standard. C# does a great job of serializing and deserializing things. However, if I want to store the dates in a human writable way, I have to find another option. For all of my pure dates I’ve been using an integer for now. So September 11th would be 20160911. It requires an extra step to convert or add days to a date, but at least it’s easy to edit. Additionally, because it’s an int, it allows for range filtering.


Xamarin technology is pretty exciting. I absolutely love the idea of being able to write C# and deploy it to a bunch of platforms. It’s especially exciting because my phone is a great place to run a todo app.

That being said, if understanding C# is difficult, then understanding C# that’s a thin wrapper on Java is even worse. I am finding the learning curve on Xamarin to be a bit difficult.

Starting a personal todo app

Todo apps and gamificiation

Todo apps have been done to death. If you go on Google Play, there’s at least 200 of them. There’s even a website that uses todo app tutorials to compare Javascript frameworks.

Still, I’m a huge fan of David Allen and Getting Things Done. I love the idea of tracking all your “open loops” and the next action on everything. I love the idea of context aware lists that take into account location, time and energy.

I’m also a huge fan of gamifying your life. If video game developers can use psychological tricks to get me to play more video games, why can’t I use the same concepts to get me to be healthy and accomplish more.

A great example of this is Beeminder. It’s this really cool application where you set a goal and track the goal on a daily basis, sometimes automatically. If you don’t meet it, they take your money, and then restart with higher stakes. I love it. If there was a single startup idea I wish I had thought of, this would be it.

The problem with Beeminder is you either need to pick just a few simple goals, or you need to guarantee you have an even workload. If your day-to-day has a lot of ups and downs, it can be stressful.

Finally, I like the idea of externalizing my executive function. I seem to run into the problem of having to many things I want do to, have trouble choosing, and do none as a result. It’s very frustrating. If I can outsource that analysis paralysis, I think I would get more done.

The idea for the app

This is actually the second time I’ve tried to make a todo app. The first time had more of a gamification feel and I called it EugeneQuest. I figured if I was going to be paying someone to motivate me to do things, why not pay myself. It worked out decently well, but I mostly broke my addiction to Magic The Gathering by accident.

Despite how that went, it’s still really important to me to have personal projects. I think personal projects are the best way to learn and I’m desperate to learn C# and Azure. So I’m trying again, but focusing more on filtering tasks by time and energy. So far it seems promising.

Next week I’ll talk about the technology I’m using and what I’ve learned so far.