Category Archives: Uncategorized

Where do people get stuck with Power BI?

I was recently talking to a potential customer about getting started in Power BI. A question they asked me was essentially “What are the difficult parts of Power BI, how do these engagements usually go?”. This was a really interesting question and for me a lot of customer engagements fall under two broad categories.

The lost and confused. A lot of potential customers are just starting to look into Power BI. They cans see what it can do, they understand what it is for, but they have questions. Generally these questions are all about governance and implementation. How do we deploy Power BI? How do we license Power BI? How do we secure it?

This is a reasonable challenge because Power BI has a lot of nooks and crannies. It has a bunch of ways to deploy it and a bunch of ways to license it, and it seems like that add a new one every 6 months. For these customers they generally just seem to be concerned about the unknown unknowns out there. Usually after that first hour, that seems to be all the help they need.

The out of control. These customers have made an investment in Power BI. These customers have started creating reports and seeing result. The problem here is scaling their reports. M and DAX have goofy learning curves. Both start out easy, but get incredibly difficult when you try to do more complex things. Maybe reading CSV files was easy, but now you need to work with a web api now. Maybe your report was fast when it was 60 MB. But now your measure or more complex and you have 250 MB of data and it is slow. These customers need help applying good data modeling and optimizing those models.

Resources for Freelancers – Free and Paid

In my experience , working for yourself provides a unique set of challenges and required skills. You need to learn how to work on your business, not just in your business. You have to become your marketing, sales and HR departments. Without useful resources, I undoubtedly would have failed as a freelancer. Below is a list of resources I would recommend to anyone getting started as a freelancer.

Blog posts

As I’ve made the leap to working for myself, I’ve written a set of “lessons learned” posts.

Podcasts

Podcasts are my most valuable resource, because they provide a slow drip of insight and expertise. Listening to a podcast provides a regular insight on how other think about this stuff, without a large commitment.

  • Business of Authority. This is my #1 recommendation in podcasts. Rochelle and John are focused and understandable. This isn’t some 2 hour rambling podcast. They provide expertise from very different types of businesses. Every week I enjoy listening to this.
  • Ditching Hourly. John continually beats the drum of “hourly work is bad”. Even if you never switch to a flat-rate model, this podcast will help you think of yourself as a business, not as a technician.
  • Startups for the Rest of Us. While the topic is startups, the actual focus is small businesses. If you are a business, this podcast will have something for you.
  • The Freelancer’s Show. More of a casual chat format, this show regularly has lived experiences from developers working for themselves.
  • Finish your Damn Course. If you are a freelancer, you should consider offering products, not just services. Janelle interviews a wide variety of guest who are making training courses on wildly different subjects.
  • Creative Class. This podcast is generally only active when the Creative Class course is open for enrollment. I love the easy style Kaleigh and Paul have when talking about freelancing.
  • Building a Story Brand. Marketing isn’t always fun or intuitive work, but it is important. Donald Miller explains marketing in wonderful down to earth terms.

Books

Sometimes you need to read a book to get a core idea to stick. Many of these books are also available as audio books, so even if you are busy you can listen to them while exercising or cleaning.

    • Consulting
      • Getting Started in Consulting. If you travel, you probably have a checklist of everything to pack. This book is a big checklist of everything for starting your consulting business.
      • The Secrets of Consulting. Consulting is the art of telling people they are wrong without them having to admit it. This is a fun read on all the weirdness of being a consultant.

  • Running a business
    • The E-Myth. So many of us go freelance because we are great technicians. But we also have to be managers and entrepreneurs, and much as we might hate it. This book covers that through a great parable.Company of One. I absolutely love Paul’s approach to running your own company. This is a great book for thinking about the unique advantage of running a company of one.
    • Building a Story Brand. If you buy one book on marketing, buy this. It is the most intuitive, plain-English explanation of what marketing is that I have ever seen.
    • Built to Sell. While it’s almost impossible to sell a one person business, it’s important to think about it anyway. Much of your work can be automated or outsources, but you have to work hard to identify which parts.
  • Productivity
    • Getting Things Done. The best book I ever read on productivity. A series of simple guidelines for defining and organizing your work.
    • Atomic Habits. One of the hardest parts of working for myself was rebuilding structure and routine. This is a great book on the subject, very practical.
    • The Phoenix Project. While technically a book about IT management, there is insight for everyone. I found this book tremendous in helping me think of work as a flow and not just concrete tasks.
  • Communication

Courses

I’ve only taken one course for freelancing and the was the Creative Class course by Kaleigh and Paul Jarvis. If you are brand new to freelancing, I would consider this but definitely listen to their podcast before you buy. The content is easy to follow and enjoyable, but quite introductory. If you’ve been doing this a year or more, you likely won’t get as much value out of this course.

Software

There are tons of pieces of software out there for running a business, but here are some I have had experience with.

  • Toggl. I use toggle to track my time spent. Having a weekly timesheet makes it easy to track billable hours and review what my focus is.
  • Trello. If you need to collaborate or track todos, Trello is a great free tool.
  • Quickbooks. If you are running a business, then you need to track your books and send invoices.
  • Mailchimp. I send my weekly newsletter using Mailchimp. It’s simple to use and fairly cheap to start out.
  • Buffer. whenever I have a presentation or a course coming up, I like to schedule social media posts. For that, I use buffer.
  • Emergent Task Planner. Not actually software, but I find this note pad to be useful for planning and tracking my day.

Summary

When you work for yourself, you need to manage the entire pipeline Marketing –> Sales –> Delivery. You need to think of yourself as a business, and you need to have a plan for growing your business even if you always stay a “Company of One”. You need to rebuild structure and routine and find a way to focus on your work.

Consulting is a unique job. Freelancing is a unique job. With the right resources you can succeed at both.

Lessons learned from being self-employed, 12 months in

This months marks one year of working for myself, and undoubtedly I feel mixed about it. I’ve made a number of mistakes that I can’t help feeling dumb about. In retrospect, I probably wasted three months learning these lessons the hard way. And yet, it’s a lot like a hot stove. People can tell you it’s hot, but until you touch it you won’t quite grasp it. Here is what I’ve learned from a year of self-employment

What I learned

Don’t force your job into your dream job

When I quit my job, I had ambitions of doing all the things that give me life. I was going to attend more conferences. I was going to study all of the time. I was going to write more. I would work whatever hours I wanted, whenever I wanted. These were all things I imagined I would do once I quit my job.

And while I did many of these things, I was putting the cart before the horse. What I learned is that I needed to get the fundamentals in place first. I had to learn how work from home. I had to learn how to rebuild the boundaries and structure of a normal job. I had to learn how to create a new routine.

And as a result, I probably spent the first two months a bit unfocused. I also made a number of commitments that I am finally coming out the other side of. While I’m proud of all the presenting and speaking I’ve done this year, I wish that I had put first things first.

Respect your human fragility

I underestimated just how human I am and how hard this would be. Often it was dumb stuff, like needing to set office hours. I’m used to just being productive, just getting things done. But in reality, there was so much invisible scaffolding that had been supporting me, that I had interpreted as my own strength.

When you have a day job, you often have set working hours. You have coworkers and expectations. Consequences are often direct and measurable. Most people work in a different environment than they live in, so our brains have context clues.

All of this goes out the window when you work for yourself and work from home. Consequences are both diffuse and existential. No one will yell at you if you put off marketing or sales, and yet your whole life depends on it. There’s a vagueness there that is unsettling. The temptation is to just work harder, to push harder if things aren’t working. But without some structure to push off against, it is exhausting.

Find a way to rebuild that structure

Through trial and error, I found a way to rebuild the structure I had given up. I set office hours of 9AM-6PM, with an hour lunch. I peppered exercise through the day. I worked on breaking things into concrete tasks. I started building a python app to track personal todos and basic things like checking my blood sugar.

I feel like I’m starting to get the hang of it, but I’m not quite there. I find mixing consulting work with creative work to be a challenge. It reminds me of Paul Graham’s essay on Manager’s schedules versus Maker’s schedules.

The contrast of urgency and distant deadlines, of deep work and quick meetings, can be quite jarring. In theory I’d like to have dedicated days for creative work, but it never seems to quite work.

Join a peer group

One of the smartest things I did during this process was a lucky accident. I was friends with a wonderful peer in the Pluralsight space. He lived near me and was a full time author. And when I quit, he invited me to join his mastermind group. We have a Slack chat and we have a Skype call every other week.

Working for yourself is incredibly and brutally lonely, and alienating. You are making all of these decisions and going through new experiences. Having someone to bounce ideas off of is critical. It is so relieving to have a group of peers going through the same thing.

Take a vacation

Schedule a vacation. Make it happen. It took me 8 months but I had a real vacation. By planning it far in advance, I could warn clients and build it into my schedule.

When you work for yourself, there is a creeping sense of opportunity cost. Let’s say your billable rate is $100. That means every movie is $200 you could be earning. That board game is $100 you could have made. And that vacation is $2,000 you didn’t bill someone.

And that is why you need set office hours. That’s why your need strong boundaries. And that’s why you need to schedule a  vacation. Because otherwise there is a temptation to work yourself into the ground.

Was it worth it?

So, was it worth it? Would I do it again? Let’s look at it financially first.

Financial benefits

At my prior job, I made about $65,000. This year I made $85,000 in gross revenue. So, big improvement right? Well…

So, when you work for yourself you have to pay all of your own health insurance, 401k and vacation. You also have to pay both halves of the payroll taxes. Realistically, it turns out to be a bit of a wash, when you factor in all of these costs. Overall, it has been a modest improvement, at the cost of monthly consistency.

If I really wanted to make more money, I could have taken a job with “Senior” in the title and gotten paid $80-$100k AND benefits. At the same time, It probably would involve being on call or quite a bit of stress.

Personal benefits

The personal benefits are huge, and I will probably not take a regular job for the next ten years. When you work for yourself, you decide what you want to focus on and specialize in. You do set your own hours and eventually you can fire your worst clients. There really is something soothing in knowing you have control over your career.

But beyond that, working for myself has allowed me to be a caretaker for my mother. I’m able to visit her 3 days a week and take her in to a Medicare replacement program. I’ve been able to see a marked improvement in her quality of life as a result.

So yes, it was worth it and I would do it again. I just wish I had a time machine so I could do the first year the easy way, haha.

GroupBy Conf was a stepping stone in my career. You should submit a session.

The year was 2017, and I was feeling a bit stagnant and frustrated. I had spoken at a handful of different SQL Saturdays, and I wanted to know how to get to the big conferences:

“There’s a joke about industries with no entry level jobs. How do those types of industries exist? How do they not just die out? But I don’t think entry level is the issue here. There are tons of opportunities to speak at user groups. SQL Saturdays are a clear stepping stone after that. The next step is…less clear. Do you blog? Do you speak at virtual user groups? Do you go to 20 SQL Saturdays a year?

No seriously, I don’t know. Can someone tell me? You wanna know why I started presenting at virtual user groups? Because I asked someone how to get to Summit, and they suggested that as a stepping stone. I think it’s important to give “new” speakers like me a path for reaching the top.”

Two months later, I was accepted to speak at the GroupBy conference about how to keep up with technology. It was a little nervewracking, but it went great and was truly a stepping stone in my career. It was my second virtual presentation and bigger than anything I had ever done. It helped me grow as a speaker, and later that year I was accepted to speak at PASS Summit.

I can’t ever know if that was what got me accepted to Summit. It might have been my abstracts, it might have been the fact that Summit was during Halloween, or that I had done some Pluralsight courses by then. But I truly believe it was part of the equation.

Now as someone on the other side of the selection process, I can definitely say that you will benefit from having an online record of your presentations. Having online presentations allows people to see that you can speak well and get a better idea of the type of material you cover.

Submissions are open for a few more days for the October session. I hope you’ll join me in sending in a few sessions, and I hope to see you there.

T-SQL Tuesday #116 – I only do demos on SQL for Linux

T-SQL Tuesday

When I first heard about SQL on Linux back in the beta days, I really didn’t see the point. Was this an attempt to steal customers away from Oracle? Was this intended to appeal to Postgres and MySQL users who were used to $0 licensing? Were that many organizations that were fully Linux except for the one SQL server?

And then as I learned more about devops and containers, it started to click for me. And while I’m still fumbling with devops, I’ve found one really good use for Linux and containers: demos.

Specifically, making a presentation on SQL Server 2019 is what convinced me. I presented on it back when it was still called vNext. Then 5 months later I was presenting it again. But now I had to uninstall it and reinstall the latest version. And I have to find whatever virtual machine I had installed it on in the first place. I had a virtual machine because I didn’t want to contaminate my host laptop.

But now, I can run 5 lines of code or less and suddenly I have the latest CTP ready to present against. All in the time it takes to down the update plus a minute or two. I couldn’t do this without SQL on Linux and Linux containers. So, at least for demos, I’m never going back.

Are You the Same as Your Business?

In Pennsylvania, if you start a business it starts out as a sole proprietorship. Legally, your business has the same name as you, and until you get an EIN, it can be identified by your social security number. In a very real sense, your fledgling business is you. But the question is, should it be?

I recently read two books that have got me thinking about that question. First is “The E-Myth” by Michael E. Gerber, which breaks people down into 3 contradictory personalities: the entrepreneur, the technician and the manager. Whenever you start a business, there is a little bit of each in you. Often times, however, you are mostly a technician. You quit your job because you were good at doing the work. But as I learned the hard way, there is more to running a business than just being technically proficient.

Another thing that it talks about is how businesses should be designed like the prototype for a franchise model. There should be standard operating procedures, code and processes for everything. Literally everything. As a solopreneur, this seems so strange at first.

We get even stranger when we get into “Built to Sell” by John Warrillow. This book is all about making a business that can be sold and live without you. What are the things that make a business appealing to buyers? I say this is strange because, as a consultant, if I left the business there wouldn’t be anything left. It literally has the same name as me, right?

But I’ve been thinking about it more, and not everything has to or should be me. When I make video courses, I pay an editor to do all of the video editing. As a consultant, in theory, I can make anywhere from $100-$200 per hour for what I do. Most of the things I do, such as accounting, or social media management, are nearly as valuable. So logically, even if I can’t separate myself from my business, or ever sell it, I should be thinking about the piece I can carve off. I may be at the core of my business, but I don’t have to be all of it.

Fumbling in the Dark with DevOps and Automation

In the past, I’ve been skeptical about how much things like PowerShell, Devops and Docker are relevant to me personally. It makes sense if you are writing application code. It makes sense if you are managing hundreds of servers.

But I do Business Intelligence. How do you write unit tests for a report? Why do I need PowerShell when I can just hit Publish on Power BI Desktop? Do I really need Powershell if I manage 3 SQL Servers?

This year, however, there have been a number of events that have been slowly changing my mind:

I don’t know what I’m doing

I’ve talked before about how automation is a relative term. But I’d like to do some true automation, I’d like to make a script like Cody’s where I can spin up a multi-server homelab with SQL Server, Sample databases and client tools all installed.

And right now I have no idea what I’m Doing and I’m fumbling in the dark. I’ve made a github project and I’ve gotten Lability to create the virtual machines. I know I need to learn Desired State Configuration, and I can’t quite get it to work with Lability yet.

And beyond that, I have no idea what I’m doing. And that’s okay. I suspect that this is a pain a lot of people run into with devops and why they put it off. The reason I write this is to remind people is that it’s okay to suck at something.

Image result for adventure time suck

I’ll keep y’all updated as I slowly make progress, fumbling in the dark.

DAX error: A function ‘XXXX’ has been used in a True/False expression that is used as a table filter expression. This is not allowed.

Whenever you start trying to use more complicated filters in the CALCULATE or CALCULATETABLE functions in DAX, you may start to get the following error:

A function 'MAX' has been used in a True/False expression that is used as a table filter expression. This is not allowed.

image

The function in single quotes may vary. Instead of MAX, it could be SUM, MIN, AVERAGE or nearly anything. Sometimes, you may not even be using a function and the error will just say CALCULATE is the problem:

A function 'CALCULATE' has been used in a True/False expression that is used as a table filter expression. This is not allowed.

image

What causes this error?

The error is caused by using a TRUE/FALSE expression, something that evaluates to TRUE or FALSE, to filter the table in a way that CALCULATE or CALCULATETABLE doesn’t support.  So the error is saying you can’t use a boolean comparison to filter your table except in very specific circumstances.

The following comparisons are not supported:

    1. Comparing to a column to a measure. SalesHeader[TerritoryID] = [LargestTerritory]
    2. Comparing a column to a an aggregate value. SalesHeader[TerritoryID] = MAX(TerritoryID[TerritoryID]])
    3. Comparing a column to a What-If parameter. SalesHeader[TerritoryID] =

TerritoryParameter[TerritoryParameter Value]

In fact, you only have three options if you want to filter a column in a CALCULATE/CALCULATETABLE function:

  1. Compare the column to a static value. SalesHeader[TerritoryID] = 6
  2. Use variables to create a static value. VAR LargestTerritory = MAX(SalesHeader[TerritoryID])
  3. Use a FILTER function instead of a true/false expression. FILTER(SalesHeader, SalesHeader[TerritoryID] = [LargestTerritory])

This is because CALCULATE was designed for safety and performance. Complex row based comparisons can dramatically affect performance. So, in order to do more complex comparisons, you have to take the safety feature off and use the FILTER function.

How do I fix it?

In order to fix the issue, wrap your expression in the FILTER function. To use the FILTER function, you need to pass in the table you want to filter, and then a TRUE/FALSE expression to determine which rows get return. So, let’s say we had the following code:

CALCULATE (
    SUM ( SalesHeader[TotalDue] ),
    SalesHeader[TerritoryID] = [LargestTerritory]
)

to use the FILTER function, we would use this:

CALCULATE (
    SUM ( SalesHeader[TotalDue] ),
    FILTER ( ALL ( SalesHeader[TerritoryID] ), SalesHeader[TerritoryID] =    [LargestTerritory] )
)

The ALL function isn’t strictly necessary, but normally when we filter a single column in a CALCULATE function, it will undo any existing filters on that column. We use ALL here to replicate that behavior. In order to understand the specifics better, check out this article at sqlbi.com

Want to learn more about DAX? Check out my free learning path, or my paid Pluralsight course where I cover CALCULATE, FILTER, ALL and more in how to use DAX.

Getting Kubernetes and Containers to “click” for me

Today I had the pleasure of co-hosting the GroupBy Conference. Part of that involved co-hosting as Anthony Nocentino present on Kubernetes. His talk was based on his Pluralsight video on the same topic. After watching his presentation, Kubernetes finally clicked for me. I think I get it.

Before you can get what Kubernetes is about, you need to understand one layer lower and get what containers are about. Aaron Nelson has written a great article on setting up SQL in containers in 5 lines of code. This helped me see how quick and easy it is to spin up a container. Additionally, I see how useful it is to be able to set up a container, kill it and spin up a new one, all in a matter of seconds.

Once you start playing around with containers, you realize you need some way to control and organize them. If you are going to treat them like cattle, not pets, then you need to higher a cattle wrangler. Kubernetes is that cattle wrangler. Or should I call it a kattle wrangler?

I wrote last week about how The Phoenix Project totally altered the way I think about work. It also altered the way I think about deployments and devops. To go fast, to make 10 deploys per day, you need to remove humans as much as possible. You need infrastructure as code. Kubernetes turns your datacenter into code.

I still have some reservations about SQL Server Big Data edition, and I have to wonder when Kubernetes is overkill. But when you need to do dozens of deployments, or blue-green deployments, or implement stateless microservices, it’s a total no-brainer.

SQL Saturday Philadelphia: Power BI Precon

This Friday at SQL Saturday Philadelphia, I will be presenting a precon on implementing Power BI. I’m excited about it because it’s the kind of presentation I would have attended two years ago.

One of the big challenges of learning Power BI is that everyone wants to sell the sizzle (great visuals) and not the steak (Infrastructure). And because of how it is to get started with Power BI, you can get a nice looking dashboard together in a  few hours. But the hard part is answering “What’s next?”.

In my precon I break it up into two pieces Data Wrangling and Administration. Power BI works great when you can just drag and drop, but most of the time the data we have to work with is just plain ugly. Power BI gives you two languages for cleanup and modeling and both require a new mindset to understand.

Once you have your data cleaned up, you have to deploy and administer the thing. And boy are there a lot of ways to deploy it. And there are gotchas too. Like the fact that you need a pro license to deploy that content, even if you have Power BI Premium or Power BI On-Prem. Nobody get’s excited about data governance, but if you want a production solution you’ll need to learn the ins and outs.

If you are interested, there is still time to sign up.