I Failed 13 College Courses.

A couple years ago, I mentioned that I failed high school psychology because I didn’t show up to class often enough. In high school, they actually track your attendance. In college, not so much – and that came with disastrous consequences for me.

I had kind of an odd curse: I was a sharp kid, so public high school didn’t present much of a problem for me. With hardly any studying, I did well enough to score a National Merit Scholarship, which at the time got you a full ride to a lot of different schools. I picked the University of Houston for their awesome business school, computer lab, weather, and location in a really big city.

My first semester went well enough:

University of Houston, Semester 1

I loved all but one of my classes, and that one – math – I abhorred. I’d done so well at high school math without studying that I figured I could just coast through college math. Wrong-o. I showed up for the first exam (after self-paced studying) and bombed it. I started attending again, and pretty quickly realized it was too late to learn to study.

In my second semester, things got worse:

I would like to point out that I aced bowling.

I was up to two classes that I simply didn’t care about, and couldn’t be bothered to study. I hated math, and I wasn’t all that fond of science, either. I took geology because it sounded like the easiest one to pass. Rocks for jocks, right? Wrong again.

The great part about semester three is that even without math skills, I could calculate my GPA with ease:

Let’s see, carry the one, and – wait, there is no one

I met a girl, and she didn’t wanna go to class, so I didn’t go to class either.

And that was that.

I can laugh about my poor life choices now, but at the time – well, actually, I laughed about them then, too. I knew they were bad choices, but they didn’t really have consequences. Life just kept on going, and it was lots of fun.

A year later, after the girl and I split up and I moved back in with Dad, I figured it’d be the responsible thing to do to go back to community college and knock out a degree. Thing is, I still hadn’t learned how to study:

Community college, semesters 1 and 2

And not only did I try to tackle boring geology again, but I tossed in Cobol and dBase for good measure, two subjects I just couldn’t care less about back then. (Or now.)

I can be all philosophical now and say entitled things like:

  • High school should have taught me how to study
  • College should have picked up that I was in trouble, and intervened
  • I didn’t have any discipline or concepts of long-term gratification
  • I should have taken a year off school to find a career that really excited me

But that’s greedy talk, and I don’t have any good answers. All I have is respect for parents and teachers as they try to steer kids toward doing the right thing while instilling them with discipline and a love for learning.

Me, I can’t even be bothered to train Ernie to sit.

Read the Comments

Dream Car Garage: 4 Cars, $50k

Last week, I designed my dream 4-car, $100k garage. This week, I’m cutting the budget in half. Now, I know what you’re thinking: if you only have $50k to spend on collector cars, why wouldn’t you just buy one awesome car, and be done with it?

Well, because if you only have one collector car, you sweat bullets if something goes wrong with it, or if somebody dings it in the parking lot. On the other hand, if you have a handful of really sharp undervalued bargains, you shrug your shoulders and say, “Ah, well, it didn’t cost all that much anyway.”

Behold, my favorite bargain designs – and I do mean designs, because these are all really beautiful to me for different reasons. I even came in under budget! (Which is probably good, these are all gonna need a little work.)

1988 Audi 5000 Turbo Quattro Wagon ($8k)

1988 Audi 5000 Turbo Quattro

When I play this what-would-I-buy game, I usually take it pretty casually. I say, “Ooo, that was a good deal, wish I’d have gotten in on that auction.”

Not so here. Here, I get emotional. I stare at this auction, wail aloud, and beat my chest.

This was a phenomenal deal, and I am truly sorry I missed out on this car. What a beautiful, beautiful shape. And turbo? Quattro? It’s just icing upon icing upon cake. Dagnabbit, this auction alone is a reason why I need to move out to the country faster and get myself some garage space. This wagon deserves a garage stall adorned with Patrick Nagel posters and a Duran Duran soundtrack. It doesn’t get much more pop art modern 80s than this.

Runner-up: 1986 BMW 635CSi 5-speed – it’s not a wagon, and really, it doesn’t even seem like it came from the same decade. It’s an early 80s design icon, whereas the 88 Audi feels like it came from a much more futuristic age. Both of them are design classics, though.

1976 Jeep CJ5 Levi’s Edition ($15k)

76 Levi’s Edition

Jeep. Levi’s jean style fabric top and dash. If there’s anything more ‘Merca than that, it probably involves eating apple pies while playing baseball as the hair shirt team.

I’ve had Jeeps off and on since high school, culminating in my current 2005 LJ bought new off the showroom floor. (That one doesn’t count in my dream garage stuff, though.)

To really enjoy a Jeep, though, you need to leave the top and doors off, and just stick it in the garage, saving it for sunny days. That’s exactly what this CJ5 is suited for.

Runner-up: 1971 Toyota Land Cruiser FJ40. Like an exchange student in the CJ5’s class.

1991 Nissan Figaro ($12k)


In the late 1980s, Nissan decided to mine the past with their Pike Cars: the Pao (which I also adore), the S-Cargo van, the Be-1, and the spectacular Figaro. It’s a tiny convertible that harkens back to the 1960s. Now that it’s over 25 years old, it can be imported into the US.

They’re underpowered (70hp) and too tiny for the US market – if you’re driving one of these in an accident, you’re probably going to lose. Permanently.

But by God, they’re adorable.

Runner-up: 1985 Alfa Romeo Spider or 1990 Alfa Romeo Spider – they’re newer than the really classic Alfas, so they have some of the baggage of the bumpers and safety gear, but still beautifully classic shapes.

1983 Cadillac Eldorado ($7k)

1983 Eldorado

I like mixing irony in with my iron.

I don’t think you can look at this Caddy and say that it’s particularly good at anything. It’s not really luxurious, it’s not fast or safe, not built well, and it’s certainly not tasteful. Wire wheel covers and a landau top explain a lot about why Cadillac has a long, tough road ahead of it to regain any kind of luxury car respect.

But even having said all that, I think this car is undervalued. In another decade or two, it’s going to be a really good symbol of the “luxury” that was Caddy in the early 80s. It’s – dare I say it – the hipster’s Cadillac. The 70s ones are too stylish, and the 90s ones are too plastic.

This one is just the right amount of wrong.

I don’t usually include photos of the interiors on these cars, but I have to include one here because the interior tells such a tale of what “luxury” looked like in the 1980s. Behold!

Now that’s luxury.

Yeah. I would love to pick someone up from the airport driving one of these.

Runner-up: 1978 Ford Ranchero – I’ve been an El Camino fan all my life, but there’s something so great about the super-sharp angles on the front end of this long beast. Needs a lot of interior work though.

Read the Comments

Dream Car Garage: 4 Cars, $100k

I’ve always loved cars, but as a telecommuter living in urban Chicago, I have near-zero need for one. I bought an Audi RS6, and absolutely adored it, but pretty quickly realized I had no need for yet another car – especially not one that I anguished over every time it got a scratch.

I sold the RS6 and resolved not to get another fun car until I retire – or until we move to a place in the country where I can have a 3-4 car garage and not feel guilty about leaving a bunch of cars in the garage.

In the meantime, it’s fun to dream at my favorite car site, BringATrailer’s auctions. Scroll down to the bottom for the completed auctions, since the prices are final there, and keep hitting View Older until you build your perfect garage.

For this week, my garage has 4 spots and a $100k limit. Here’s what I picked:

1967 Pontiac Grand Prix Convertible ($23k)

67 Grand Prix

Back before the 1973 gas crisis, this is what America was good at: absurdly large coupes. This car makes no sense today – too big, too slow, too heavy, horrible gas mileage. However, when the sun’s out, and you wanna pick folks up from the airport or take a double date to dinner, you want a giant American convertible.

Any of the 60s-70s big coupe convertibles would do well in my dream garage, but I’ve got a soft spot for this one because it’s red, it’s rare (even the brand is dead), and the body is so smoothly minimal. I mean, yeah, it’s big – it’s maximal in terms of size – but the lines are simple and minimal. I wouldn’t change a thing about it.

Runner-up: the 1976 Cadillac Eldorado ragtop in glorious Chesterfield Brown tells your neighbors that you’re from the 1970s, and you don’t care who knows it.

1991 Beck 550 Spyder ($31k)

91 Beck 550 Spyder

I want a Porsche, but in our 4-car, $100K price range, the options are going to be slow Porsches, not fast ones – and that’s fine.

There’s a saying: it’s better to drive a slow car fast, than a fast car slow.

What they mean is that if you can hold the throttle down for long periods of time, and really feel like you’re wringing everything out of a car, then you’re going to have a great time. If you have to tiptoe around the gas pedal (as I did in my RS6), you’re going to feel like the car’s capabilities are wasted on you.

The answer: a Porsche feels incredibly fast, and was fast in its day – it killed James Dean, for that matter – but isn’t all that fast in today’s terms. Genuine Porsche 550s are heart-stoppingly expensive, and even the kit versions can soar into very expensive territory. At a higher budget than $100k for 4 cars, I’d love to commission my own 550 replica, but in this price territory, I’d be very happy spending $31k on a used Beck.

Runner-up: 1930 Ford Sprint Car – only one seat, but who cares? Nobody in their right mind is gonna wanna ride along with you in that thing.

1949 Ford F-1 Pickup ($32k)

Not F-100, not F-150 – F-1. The original deal.

The smiling, happy face. The fantastic paint job whose color says work, but whose thick, rich, glowing quality says pride and joy. The lovely whitewall tires and chrome. You can’t see those shapes and not wanna run your hands over ’em. They’re just friendly.

The original engine has already been replaced with something just a touch more modern, which means if the replacement isn’t bulletproof, then I wouldn’t feel guilty about throwing something WAY more modern in. This doesn’t need to be fast – it just needs to be quiet and reliable for trips to the grocery.

In this oddball set of 4 cars, I think this one would actually be the daily driver!

Runner-up: 1971 Chevy C10 Truck – no self-respecting construction worker would have been caught dead in this two-tone yellow and white beauty, but I love it. Like the Ford, the engine’s been replaced with something more modern (but not a hot rod), and a nice, easy automatic transmission.

1983 Chevy Camaro Z28 ($5k)

83 Camaro Z28

My first car was a pea green 4-door Dodge Aries. My second car was an 80s Dodge Charger along the lines of this, but nowhere near as cool or well-optioned. (My girlfriend at the time had a Shelby Charger, and I was insanely jealous.)

My first car that I was really proud of was an 83 Camaro with T-Tops.

I have vivid memories of what a horrible car this was, mechanically. For example, on trips from Michigan to Houston for college, it suffered from severe vapor lock – so bad that I had to stop and sit for an hour or more, waiting for it to be drivable again. I remember the sagging headliner, the awful fit/finish. I couldn’t even afford a good one of these, so I had a dent in the passenger front that I never bothered repairing – although I invested probably $3k into the stereo.

I know what a bad car the 83 Camaro was, but as an imaginary collector, I just don’t care. I want one again.

Runner-up: 1987 Pontiac Fiero GT – I learned to drive stick in a Fiero. Two of my uncles had Fieros: one ran a restaurant, and the other was in a band. I wish I had better reasons. Look, this is my list, not yours. Or maybe the runner-up is a 1980 Datsun 280ZX – I had this exact model, less the t-tops. They’re all in the same price range.

Wow. What an enjoyable way to spend an hour, and now you’re infected: BringATrailer’s auctions. Enjoy!

Read the Comments

Default to Open

Most older companies and people default to closed. They build things in private and discuss what they’re doing behind closed doors. “Collaboration” usually means by invite only.

Most newer companies and folks default to open. They build things out in public in their Github accounts while conducting discussions in public Slack rooms that anyone can join. Even if they’re private Slack rooms, they’re open to anyone inside the company.

(I’m making a sweeping generalization here. Of course there were people doing open source for decades, and IRC has been around for forever. But note that Github and Slack are both less than 10 years old, and they’ve completely revolutionized both of their markets and decimated competitors.)

There’s nothing wrong with either closed or open. They both make sense for different companies, and even for different projects inside the same company.

I’m not young. I grew up defaulting to closed. But these days, when I start a big new client project, I try defaulting to open. How could I share this stuff with the public? Sharing work in the light has so many benefits:

  • Other people can learn from the work
  • Other smart people can check work, catch mistakes, and suggest improvements
  • You do a better job when you know more people will be watching
  • You gain a reputation for delivering quality work (because your work is basically advertising itself via outbound marketing)
  • You can leverage that work again on other projects (and the public can leverage it too)

Practical example: the Faux PaaS project

kCura’s one of my favorite clients because they’re solving all kinds of fun data challenges, and they’re proud of talking about ’em publicly. At RelativityFest, their annual user conference, they offer technical sessions and engineer Q&A to talk their clients through what technical changes are coming in the future. (I’m missing Fest this year for the first time in several years because I’ve got a training class that same week.)

This month I started blogging about my Faux PaaS project at kCura. As I laid out my work in that project, I looked at each chunk of work and asked myself:

  • Could this part of the project be completely public?
  • If not, could I break this part into a few smaller parts, some of which could be completely public?
  • If I can’t share the exact output or results, can I share the methodology I used to get the results?
  • For the public parts, can I craft the documents for sharing right from the get-go?

It’s much easier to build something to be public right from the start as opposed to trying to redact sensitive information later. That thinking drove the creation of the Azure VM testing results spreadsheet you’ll see later this week, the upcoming sp_BlitzBackups script, and the upcoming Set-DbaMaxMemory PowerShell cmdlet.

I don’t lose anything by sharing my work.

It’s pretty unlikely that a prospective client will see the Azure VM testing results and say, “Great! I’ve got all Brent’s data – I have no need for Brent’s services.” Those very specific test results are a snapshot of the world as of a single point in time, and this stuff changes fast. The real value isn’t in the test results – the value’s in the methodology, the thought process, the results that mean something to the business.

And yes, I’m sharing my methodology and thought process, too – but let’s be honest, dear reader. If the only thing stopping you from stealing all my clients was you getting a hold of some methodology ideas, I’d be broke tomorrow. I ain’t the only source of methodology ideas out there.

Do things, tell people. If you wanna be really successful, you’ve gotta do both of those. Gotta let your dim light shine, and that starts by defaulting to open.

Read the Comments

47 Things You Incorrectly Assume About Shipping Database Changes #tsql2sday

For this month’s T-SQL Tuesday, James Anderson’s chosen theme is shipping database changes.

Hoo, boy, have I got some scars to talk about.

I’ve been a developer who had to deploy changes, a DBA who had to deploy other peoples’ changes, an open source maintainer, and even been a software vendor who had to hand other people scripts to deploy in their own environment.

Here’s some of the things I assumed over the years – only to learn the hard way that they weren’t always true:

  1. The deployment script you were given is the most recent one.
  2. The deployment script will work.
  3. The last deployment to the same database finished successfully.
  4. All of the indexes you deployed last time, still exist.
  5. If you add a unique constraint or index, the existing data doesn’t already violate that constraint.
  6. All of the tables you deployed last time, still exist.
  7. Your tables haven’t been moved into another database, with a view or synonym left behind in its place.
  8. No one has added columns to your tables.
  9. If you want to add new tables, views, procs, or functions, someone else won’t have already added an object with that name, but a different purpose.
  10. No one has added triggers on your tables.
  11. No one has changed the contents of your stored procedures, functions, or views.
  12. If your objects have been changed, the business wants you to put them back to your own logic, because they didn’t need whatever business logic they’d injected into your code.
  13. No one has set up a job to run every 15 minutes, check to see if any changes have been made to their (your) stored procedures, and if so, overwrite them with their own custom business logic.
  14. No one has encrypted your stored procedures or functions.
  15. No one has added indexed views, stored procs, or functions with schemabinding atop your tables.
  16. SQL Server Management Studio won’t crash.
  17. The account you use for deployment will have permissions to change tables.
  18. The transaction log file will be large enough to let your transactions finish.
  19. The data file’s drive will be large enough to let your transactions finish.
  20. No one else will kick off database changes or jobs at the same time as your deployment.
  21. No one else from your company is trying to do the same deployment you’re trying to do, to the same server, at the same time.
  22. No one will kick off a Profiler trace to log every one of your statements.
  23. If they do start a Profiler trace, they won’t do it from a massively underpowered desktop, thereby slowing your deployment to a crawl.
  24. At the start of your deployment, no one will have an open transaction that blocks you.
  25. If there’s an open blocking transaction, your work will be more important than theirs, and you won’t have to wait until theirs finishes.
  26. If there’s an open blocking transaction, and no one knows whose it is, you will be able to kill it.
  27. If you kill an open blocking transaction, the rollback will finish before your maintenance window ends.
  28. No one else will kill your session mid-deployment.
  29. If your deployment script includes multiple transactions, all of them will succeed.
  30. The deployment person wouldn’t dream of only highlighting some of it and running it.
  31. The staff who were supposed to work with you during the deployment will be available.
  32. The staff, if available at the start of the call, will be available during the entire call.
  33. The staff won’t come down with food poisoning halfway through the deployment call, forget to mute their home office phone, step into the bathroom, and leave the bathroom door open.
  34. The available staff will have the necessary permissions to do the deployment.
  35. The staff assigned to user acceptance testing will be able to complete their work in the time allotted.
  36. The staff assigned to user acceptance testing won’t say they see a problem that they never saw before during the tests that led up to this deployment.
  37. Midway through the rollback/undo, the user acceptance staff won’t say, “Wait, my bad, it’s fine, go ahead and keep the changes.”
  38. No one has added replication, synchronous database mirroring, or synchronous AGs into your database.
  39. If there’s replication or sync mirroring/AGs, they will not affect the performance of your deployment scripts.
  40. No one will restart the SQL Server instance during your deployment.
  41. Your connection to the SQL Server will be steady during the deployment because no one will have scheduled firewall work to be done during the same window.
  42. No one will restart all of the Active Directory domain controllers at once during your deployment, thereby taking your server offline.
  43. You will not discover corruption in the database during the deployment.
  44. You will not be blamed for that corruption.
  45. If you need to do a rollback, the rollback/undo script works with the edge case you ran into during the deployment.
  46. In the event of a deployment problem, there will be valid backups for rollback.
  47. Someone who has the permissions and power to do the restore will be available.

Database deployments remind me of the old saying:
In theory, in theory and in practice are the same.
In practice, they are different.

Read the Comments

Epic Life Quest: Level 9 Achieved. Let’s Talk About Passive Income.

Life’s little moments of success can pass us by so easily. If we don’t track the things we’re proud of, we lose track of how far we’ve come. Steve Kamb’s Epic Quest of Awesome inspired me to build my own Epic Life Quest. I keep track of achievements, and after five significant ones, I level up.

When I became the sole fella in charge at Brent Ozar Unlimited® back in fall 2015, running the company dominated my calendar for a while. I struggled with trying to grow the consulting company, then ended up laying off half the staff. Once I stopped trying to grow consulting, I shifted priorities and tackled a few other things:

Room 6E. No pressure. Instagram

Room 6E. No pressure. Instagram

  • Launch an online service. I’ve done scripts and apps before, but never an online service where code runs and stores your data in a database. PasteThePlan launched in September 2016.
  • Spoke in the biggest room at PASS, first session. After the opening keynote, I had the first session in the biggest room, broadcast live on the web. I wish I would have taken a panoramic photo! Completed October 2016.
  • Launch GroupBy, a free online conference. For years, I’ve been thinking about different spins on how the SQL Server community can get together. GroupBy.org launched in November 2016.
  • Scored Google as a client. I’ve had larger clients that I couldn’t talk about, but even if I could, Google would still hold a special place in my heart. I wish I had a picture of my face when they booked a meeting with me out of nowhere and said, “Hey, we’d like to work with you on an Always On project.” Completed October 2016, announced publicly February 2017.
  • Increase my passive income numbers to match my active income. Completed April 2017, and let’s talk about this one in detail.

Warning: the passive income topic is rife with spam. There’s a ton of slimy companies out there that wanna sell you their secret to making money while you sleep. Because of that, I’m not going to link to anything at all in this post – I’m just going to talk about strategies, and if you want to learn more specifics about a given strategy, you can ask away in the comments.

Active Income vs Passive Income

A quick definition:

  • Active income is trading time for money.
  • In theory, passive income isn’t directly tied to your time.

There’s a lot of gray area here. For example, if you have a rental house, and you earn rent money from it, is it truly passive? You probably have to deal with fixing the heat when it breaks, or chasing down tenants when they’re late on the rent. Another example is writing a book: you write it once, then earn royalties from it over time, but is that active or passive income?

For me, passive work means these four things aren’t fixed or related:

  1. The time when I do the work
  2. How much work I do
  3. The time when the income arrives
  4. How much income arrives

When I was learning about this stuff several years ago, I was mesmerized, and I totally understood that it was going to be the only way I was gonna get to retirement. Let’s face it, database administrators have a tough time accumulating a million bucks, let alone whatever money you need to retire. I had to figure out a way to build something that could make money while I was off doing other things.

But How Can a Geek Build Passive Income?

I’m a Microsoft SQL Server database administrator. I looked at people doing passive income businesses, and I had a hard time connecting the dots between what they were doing, and how I could make money. Eventually, I did enough research that I came across a few strategies that seemed to work.

I’m not going to include generic strategies like buying rental houses or stock. I’m specifically talking about things that us geeks can do.

Build a paid training course. It takes (a lot of) time initially, but once the material is built, people can buy and consume the material without you being involved. (Obviously, this is the one I went for.)

Build great content and get sponsors. If you can write or film stuff that brings in lots of eyeballs, you can cut deals with advertisers who want to piggyback off your popularity. You can make a living with active income as a vendor evangelist, but the catch is that when they let you go, you’re no longer making money off the content you built. If your goal is to do this with passive income, you’ve gotta figure out a way for the vendors to keep paying you long after you’ve stopped writing the content, or get other people to write the content. (This is totally doable in our industry – think about content sites with sponsors.)

Sell a retainer-based service. Clients pay you $X per month to watch over your systems, give them periodic health reports, and maybe even take action when the systems fail. In the cloud age, I see a huge opportunity here for ongoing DBA services to help keep monthly cloud costs low. This is tricky, though, because it can easily consume just as much time as active income, but the idea is to build something that you can hand off to someone else to perform.

License a process or idea. Say you build a powerful health check process, with tools and sample output. License it to other geeks who can use it with their own client base. They’re paying you while they do the work – although there’s also some ongoing improvement work you’ll need to do to make sure your process is the best. In the cloud age, this can mean building a VM template that has royalties built in – you just automatically make money when people start your VM template on AWS, Azure, or GCE.

Build a list and sell other people’s stuff. Start a popular blog, YouTube channel, or email newsletter, and then as your audience grows, use affiliate marketing to link to other creators. For example, people who start training classes want to reach as many people as they can, so they’ll give you a coupon code for your audience. When folks buy using your coupon code, they get a deal, the seller makes money, and you get a percentage. This was the entire basis of TheWirecutter.com‘s business – they made money when you clicked on Amazon links to buy products they reviewed. There’s no reason that business couldn’t work with tech industry products too, like monitoring software and cloud product reviews.

Build an app and make it popular. “But Brent,” you sneer and point, “that’s not really passive at all! Building stuff is hard!” Bad news: none of these techniques are easy. Remember, with passive income, those 4 key things I mentioned earlier aren’t related. If you can build something and make it go viral, the amount of money you make isn’t directly tied to the work you put in. More importantly, the app is making money that funds your next venture, and you can work on that next thing while you’re getting paid from the last thing. I separated out those two things – build an app and make it popular – because you gotta do both. There’s even a market for people who take a good app that never caught on, buy it from the creators, and then make it popular by selling it to their existing market. (This is how a lot of indie software makers get acquired.)

There’s many more, but I’ll stop there. When you’re looking for inspiration, don’t look in the tech market – look at completely unrelated markets like photography, gadgets, wedding planners, you name it. Pick your hobby, figure out how people are making passive income in your hobby, and then see if that technique can be used in your day job’s industry.

I Picked Training Courses, and I Worked My Tail Off.

You gotta use what you have to get what you want.

To do that, you gotta know what you have – your strengths and weaknesses – and identify exactly what you want. After a lot of self-examination, I decided that the best passive income strategy for me was to build training courses.

Free duffel bag with every subscription

It was a long, hard journey, but in April, I made it. For the last rolling 12 months, my total on-demand recorded online training – what I define as passive income – was higher than my consulting or active (live) training revenue.

Is it purely passive? Of course not – looking at my April 2017 calendar, I had four weekdays and two weekend days invested in the online training business. However, it’s a magical passive income feeling every time I check my email during a break, and there’s a handful of new-customer payment emails. Even now, as I’m writing this post, I’ve seen half a dozen come in. (I still have these going directly to my in-box during April just in case something with the new subscription process breaks. After I finish writing this, I’ll turn off that email again and just review sales daily.)

Having a passive income stream like this means that I’ve got more choices:

  • I can goof off on future Epic Life Quest goals (which to be honest, I haven’t done enough of lately), or
  • I can take normal consulting work, and basically get paid double, or
  • I can work on the training business, making investments to grow future passive income, or
  • I can work on other parts of the Brent Ozar Unlimited business (consulting & tools), or
  • I can give back to the community, like building GroupBy.org or the First Responder Kit

So that’s why I kind of look at our subscription training customers as community sponsors. They pay for my time to work on stuff like GroupBy. That’s kind of awesome.

Read the Comments

So How Did the Pricing Test Work Out?

Blog Posts
No Comments

Last month, I wrote about the pricing tests we ran in advance of our subscription training class launch. I explained why the winner was this one:

Price Test #3: The Highball

Going into the launch, I had a lot of questions. Here’s how they turned out.

Which option was the most popular?

  • DBAs – 29% of buyers (126) opted for this
  • Performance – 29% (125)
  • Enterprise – 41% (177)

Wow! The dead-even split between DBAs and Performance totally shocked me.

I’m not sure yet how much of the split is due to lower pricing – maybe people are buying the $39 plan because they see it as more affordable. It’s priced that way because there are less training videos for that plan, but the plan’s popularity hints that maybe I should get my butt in gear and record more training videos to justify pushing it to a $49/mo price tag along with perf.

How did buyers pay, card or Paypal?

We’ve always offered both, but previously (when 80%+ of our sales were the Everything Bundle), Paypal sales represented a very small percentage of our sales, and it was almost exclusively the $29 videos. Now that we offer monthly subscriptions, did that change?

  • Paypal – 18% of payments
  • Credit cards via Stripe – 82%

The majority of the Paypal checkouts were for monthly subscription plans – so yes, it would seem that we’re opening up to a new market of folks who not only prefer subscriptions, but also prefer paying with Paypal.

I’m not too surprised by that because the goal of the subscriptions was to enable people to get in at a lower transaction price if they were paying for the subscriptions themselves.

How many monthly subscribers bailed immediately?

On offering a subscription product, the big worry is that folks are going to subscribe for just one month, bum rush the videos, watch every one of them, and then cancel. The purchase instructions say you can cancel at any time, and you can continue to watch the videos for the rest of your month – and you won’t be charged a renewal. (I wanted to make this as easy as possible for everyone involved.)

Subscription vendors look at this in a couple of ways:

  • Churn – how quickly the subscribers bail
  • Lifetime value – how much the subscriber will pay you before they churn out

To decrease churn, a subscription product needs to add value over time. One way to do this is to trickle out videos during your subscription so that you can’t see all of the good content right away. I’m not a fan of that one just yet (although I do want to give people a better learning plan to navigate through the content.) Another way is to add new content for everyone on a regular basis – that’s the approach we’re using instead, with new video material from Erik going live today, for example.

I expected the initial sales to have a lot of cancelations right away because we didn’t have a track record of adding new videos over the last few months – I had my hands full prepping for the subscription launch. I was happy to see that only 10% of customers canceled, and surprisingly, most of those were actually annual customers. That makes sense in retrospect – we’re seeing a lot of corporate buyers where the boss is buying the training for someone else, and they don’t wanna get hit with an automatic renewal.

What holes had I missed?

I figured I’d end up with a few loose ends or desperately missing features, but there’s only one really big one right now: making it easier for corporate folks to buy seats for other people. Right now that buying process isn’t intuitive at all (causing Erika to tell me, “Your web site sucks.”)

I’ll outsource that tuning (plus some conversions testing and free trials stuff) to a WooCommerce guru. I’d love to keep working on this, but it’s time to switch focus. This week, I embarked on a client project to build self-healing, auto-scaling Availability Groups at scale (hundreds of thousands of databases) in Azure VMs. The last step will be building a Chaos Monkey that randomly kills VMs – our proof of concept will use a D6. Awesomely, the client is going to let us blog & talk about the end result.

Not enough hours in the day.

Read the Comments

WordPress Plugins I Use to Sell Training Classes

Blog Posts

First, a few disclaimers.

If I started today with a mission to build a $1mm/year e-commerce business, I probably wouldn’t start with WordPress – I’d probably go with a purpose-built e-commerce tool like Shopify. There are even folks out there who will tell you not to start a blog on it either, and that there are better static content generation tools that don’t require web hosting.

However, we’ve been powering BrentOzar.com with WordPress for just shy of a decade, and it’s grown into one heck of a consulting and training business. We’re running over $1mm/year through it, so I should probably talk about the setup I’m using these days.

None of these links are affiliate links – I’m just sharing what I know. Everything in here, I’m using in production today.

WooCommerce adds e-commerce to WordPress.

WooCommerce is a free plugin that enables the core of e-commerce processing: products, customers, orders. Automattic (the company behind WordPress) bought WooCommerce a while back, so you can feel pretty confident that it’s got a future. If you’re going to run a store on WordPress, WooCommerce is a no-brainer.

Woo is free because they make a ton of money on plugins/extensions that add functionality you’re going to want.

Plugins to help you get paid

Stripe – so you can take credit card payments via the credit card processing company Stripe. We used to use Authorize.net, and it was alright, but just not nearly as intuitive. Stripe is easy to get started with: just get an account and start taking money. Wildly different from the big providers like Authorize.

EU VAT/IVA Compliance – if you sell digital goods online, you have to charge tax to EU members even if you don’t live in the EU. Then, you have to file taxes back in the EU and send the money back over. Plus, some customers are VAT exempt, and they’ll want to put in their tax exemption data at purchase time. This process is a giant pain in the rear for US sellers, and this plugin makes it way easier.

PDF Invoices & Packing Slips – before we installed this, tons of corporate buyers wanted us to send them a PDF receipt. Yes, you get a receipt during checkout, but they next-next-nexted their way past that and deleted the email, and then they’d remember about the receipt later. With this, they can generate their own receipt in their my-account page.

Plugins for live instructor-led classes

We sell two things: live instructor-led classes, and self-paced online videos.

For live instructor-led classes, we use variable products: a single product with several variations, each one being a different class date/location (like August 22-25 Online vs Oct 24-27 in Chicago.) This way I can keep the same page URL for all class dates, getting me a little better SEO over time and easier linking. Plus, whenever I add a new SQLSaturday pre-con that I’ve already given once before, I can just add a date variation for that city/date, and my setup is done.

When people buy an online class, the Zapier Integration plugin sends a webhook to Zapier, which is like integration glue for all kinds of different web services. I have a zap set up to register the student in the appropriate GoToWebinar series.

Leading up to a class, we use the Product Variation Reports plugin to generate a list of everybody who registered for a specific class (variation). We send ’em email reminders, ask them about meal restriction specifics, print out check-in lists for the door staff, etc.

Plugins for self-paced online video classes

Until recently, we sold fixed-price, fixed-length video access: you bought a specific class for 18 months for, say, $299. As we built up a bigger library of videos and started offering bundles, we learned that most people wanted to just buy everything, and they wanted to be able to extend their access on a month-by-month basis.

So we switched over to a combination of monthly or annual subscriptions, and here’s the plugins we use to do it:

  • Memberships – lets you set up levels of memberships, and then on any page, you can restrict access to content to people based on their membership level. For group sales, add the Teams plugin so corporate buyers can manage groups of members, doing their own enrollments.
  • Subscriptions – so you can charge for memberships by the month or year. For corporate sales, add the Gifting plugin so corporate purchasers can buy subscriptions for their staff.
  • Easy Pricing Tables – really simple way to build pricing tables like the one I linked to. Without that, you end up with single-product pages, which aren’t quite as boss.

Plugins for better marketing and conversion

One Page Checkout – in our training model, people don’t buy multiple things anymore. They’re just either buying a single subscription plan, or a training class. With this plugin, they can check out entirely on the page without having to go through a cart. The easier you can make check-out for users, the more likely they’ll complete the purchase.

Gravity Forms and the Woo Gravity Forms Product Add-Ons – in our live instructor-led classes, there’s a small form on the product to enter the student’s name, email address, food restrictions, and t-shirt size. We’ve learned over time that for a lot of live classes, someone in a purchasing department buys a seat for someone else. They want the receipt to go to the purchaser via email, but they want the class’s seat in the other person’s name. Gravity Forms integrates with Woo to make that happen.

MonsterInsights – Google Analytics integration so you can see sales inside your web analytics and figure out where buyers are coming from. This has become really helpful now that all of the course pages are public: I discovered that a few specific class pages are getting a lot of web hits, and when non-members see the message that “you have to be subscribed to watch this class,” they’re buying a membership. Well, hello there – that raises new keyword opportunities.

Whew. That’s a lot of plugins and configuration.

The site as of April 2017

It’s been a ton of work over the years. We’ve always managed it ourselves (although we outsourced parts of it to a learning management system for a while.)

Today, I’m happy with the infrastructure, but there’s still things I want to do to continue taking it to the next level:

  • Bring in a design team to improve the child theme’s looks (but still keep the underlying stock theme code to be flexible)
  • Hire a conversion expert to simplify the browsing-to-purchasing process
  • Empower companies to buy group subscriptions online (right now, we’re handling that process manually)
  • Design an onboarding process so that new members are gradually coached through the content
  • Help users track which content they’ve watched

It’s genuinely fun for me to work on this stuff, but as I look at the revenue numbers, it’s time for me to step back and let someone more qualified manage this infrastructure. The skills and work that got us to $1mm/year of online revenue won’t be the same stuff that gets us to $2mm.

Read the Comments

You Should Take a Career-Planning Retreat

Blog Posts

I’m not talking about a vacation. Yes, you need to take vacations, but this is different.

Every now and then, you need to step back and ask yourself:

  • Do I like what I’m doing?
  • Do I like where I’m doing it?
  • Do I like the exchange of benefits for my work?

Every quarter for over ten years, I’ve gone to a coffee shop or bar and spent the day thinking through the above questions, my Getting Things Done 50k foot goals, and my Epic Life Quest. The rule: no network connectivity: just me and a notepad, thinking.

It usually takes me at least an hour just to unwind my brain because I keep remembering tactical things I need to do. A couple pages of the notebook end up filled with to-do items like “get the garage door opener fixed” or “build a better download form.” But after an hour or so, I find myself more relaxed and more willing to let my brain think big picture. I learn a lot about myself on those days.

But the real magic starts with multiple days.

A while back, I happened to take a cruise by myself. I sat on the back deck with my notepad, and had just one peaceful realization after another. I asked myself lots of tough questions, and with nothing breaking my thoughts, I was able to really get to know myself and my goals better.

So now, once a year, I try to take a personal retreat.

Zen Founder Guide to Founder Retreats

No, not just go get drunk on a cruise ship or go skiing somewhere – a retreat does have some unwinding aspects, but you’ve also got homework to do.

Your homework comes from the book “The Zen Founder Guide to Founder Retreats” by Sherry Walling, PhD (who cohosts the good ZenFounder Podcast.) It’s written for startup founders, but if I could go back and give it to 2004 Brent, I totally would, and he’d get value out of it.

Sherry gives you homework questions like:

  • What energized me this year?
  • What am I most proud of?
  • What events or tasks seemed to suck the life out of me?
  • What do I regret? What am I embarrassed of?

She asks further questions to help you drill down into those details, then helps you zoom out and ask bigger questions like whether you’re in the right job or relationship.

The book offers several different retreat strategies, and reading it, you might think you’re going to pick one when you start the retreat. I can’t – before the retreat, I’m just too absorbed in my day-to-day tactics to understand what’s going to happen on the retreat. However, by day 2 of the retreat, I’m able to look at her strategies list and say, “Now I get it. Now I see what question I really need to ask myself.”

How to prep for your first retreat

Here’s what your first year looks like:

  • Quarter 1 – day to think: read the first several chapters of Getting Things Done and/or Time Management for Systems Administrators and decide whether that approach makes sense for your life. Start brain-dumping your tasks into some kind of task management system, whether it be RememberTheMilk, EverNote, or a text file.
  • Quarter 2 – day to think: dump your brain into the task management system again. This is harder than it sounds when you’re first getting started because your brain really wants to hold on to a lot of baggage, and you may not have kept your task management system up-to-date.
  • Quarter 3 – day to prep: reread GTD’s chapter on 50,000 foot goals, and think about what’s most important in your life. What’s most important to you? What would really bother you if you didn’t achieve it over the next 5-10 years?
  • Quarter 4 – 3-day retreat: print out your GTD 50k foot goals, your current task list, and a copy of Zen Founder Guide to Founder Retreats. Buy a notebook and a pen. Go somewhere – it doesn’t have to be an amazing destination, just an easy place to drive to where you won’t be interrupted by day-to-day life demands. Check into a hotel, find a really comfy place to sit, and follow Sherry’s instructions.

It doesn’t have to be expensive – and indeed, if you’re really trying to focus on your career and your life goals, you shouldn’t be spending a lot of money. The value in a retreat like this isn’t about amazing selfies as you skydive from a plane – it’s about quiet introspection to help you start focusing on what matters to you, and how you’re gonna get out of the rut.

Read the Comments

How the Company-Startup Thing Worked Out For Me, Year 5

Every year, I stop to look back at what happened a couple of years ago. This post covers April 2015-April 2016.

My cofounders and I were all ready to try something new.

Jeremiah, Kendra, and I had the same vision for where the business was going next (on-premises software), what the next steps were, and the speed at which we’d make the journey. We didn’t want to kill consulting and training, mind you, just wanted to build up a third profitable leg for the business.

At the company retreat in Oregon, mid-2015

At the company retreat in Oregon, mid-2015

But in year five, both Jeremiah and I had the same thought individually: “The company should continue on as it is, but just without me.”

For me, it was the software work that was just over the horizon. I’ve worked for small and big software companies before, and I know the infrastructure is way, way bigger than it looks from the outside. I didn’t want anything to do with building a support team, managing groups of developers, QA processes, etc. I didn’t have any skills to bring to those tasks. I knew it’d be a Herculean amount of work over the next few years, just as the first 4 years were huge to get the consulting and training off the ground. I knew the company would succeed with Jeremiah and Kendra at the helm, and that I wouldn’t add anything to that success. (I wouldn’t hold it back, I just wouldn’t be able to contribute to those tasks.)

I took some time off by myself to think – I’m a big fan of doing structured solo retreats every year – and I sketched out a few ideas. I figured I’d walk away, then start a remote DBA services company or an e-discovery consulting company, because neither of those would compete with Brent Ozar Unlimited. (Neither of options had a particularly easy route forward, but I didn’t want to do anything competitive – I wanted Jeremiah and Kendra to succeed, period.) I talked it over with Erika, and we agreed that it was the right time.

I told them, “I’m walking away, but I fully believe in where you guys (Jeremiah & Kendra) are going to go with the company, and I’m totally okay with you using my name.” I was even willing to change my name to something else entirely just to make it easier to keep the existing company going. (I’d be Brent Valencia, if you’re wondering – I’d take my wife’s last name.)

But that company name made things awkward.

Jeremiah and Kendra didn’t want to keep the company without me involved because they would want to rebrand the company as something else. I don’t blame them – all throughout the company’s history, tons of readers/customers kept saying stuff like, “Great post, Brent” even when the blog post was written by somebody else. We had clients refer to our consultants as “Brent” no matter who was on the call. Jeremiah, Kendra, and I were always equal partners, and I know the constant “Brent” references had to be frustrating. If I was gone, they wanted the name to be gone too.

Rebranding – changing a company’s name – sounds easy, but it’s HORRIBLE work. We went through the rebranding process when Tim left – the change from Brent Ozar PLF, LLC to Brent Ozar Unlimited was a pain in the ass. I totally understand why they didn’t want the company if it came with that kind of baggage.

Company lineup, summer 2015

Company lineup, summer 2015

This is probably my biggest regret in founding the company – I wish when we started it, we’d have added another domain and started migrating our company stuff over to it. Something independent, like Data Bass Hatchery or whatever. It would have given us more flexibility around ownership. (When you start a blog, I still believe it should be under your own name, though.)

So in fall 2015, the company bought out Jeremiah and Kendra.

We brainstormed a bunch of options and came up with this:

  • Jeremiah and Kendra would each get a cash payout, plus money over the next several years
  • They would leave their intellectual property for training inside the company (which meant we could sell their classes, thereby helping pay them out)
  • They could do anything they wanted, even take clients with ’em, but not hire the company’s employees for several months (because if the company lost J&K and all the employees, it’d be too hard to bring in revenue and pay down the loan)
  • If the company defaulted on payments, Jeremiah and Kendra would get their ownership back

We came up with numbers that worked for everybody, worked through a bunch of legal paperwork, and then told the team.

I always say “the company bought out Jeremiah and Kendra” because I wanna make it really clear that I didn’t whip out my wallet and start slappin’ down hundos. I wouldn’t have been able to finance that big of a move. Instead, the company bought back their shares, which indirectly makes my shares worth more, but the company was the one taking on the debt and the risk. This move wouldn’t have been possible if it wasn’t for the incredible work that Jeremiah and Kendra put into the company, building up its earning potential over the years.

Since then, it’s been really cool to see Jeremiah go back to college and watch Kendra build up SQLworkbooks.com. I think the biggest lesson we learned over the years of working together was that each of us – and each of you, dear reader – can define what personal success looks like, and build a path to get there. I love watching them do their thing.

When the company ownership shifted, I had to pause to think about what success would look like to me, too. We were just hitting the $2mm/year revenue mark with a successful consulting and training business. I decided that over the next 2-3 years, if I owned the company, success meant growing the company to 10-15 consultants. (I didn’t choose to hire trainers.)

The first six months were really hard on me.

There’s probably never a great time to do stuff like this, but my first ~6 months of ownership (winter 2015-spring 2016) were rough. I knew it would all be fine if I could just get to May 2016, but until then, I was a little unhealthily stressed out because:

I had to do all partner duties. Jeremiah and Kendra hadn’t exactly been sitting idle playing Solitaire – they were managing the staff, building tools, and designing the new software. I found myself working seven days a week trying to tread water. Thank God we had really smart, self-starter people who could manage themselves, because I didn’t do jack for management.

I had to rehearse and teach week-long classes by myself. We’d already signed hotel contracts for our 2016 training classes, and we’d just announced our week-long class lineups. However, I didn’t have co-presenters anymore, and I was up by myself starting January. While Jeremiah & Kendra left their training material in the company in order to increase its value, I wasn’t necessarily familiar with all of their modules. Teaching a week-long class solo is exhausting, let alone two of them, as I wrote last week.

I was on the road most of the time. I’d already booked my own 2016 travel calendar, and between taking over classes, plus my existing training/client commitments, and new clients that would only take in-person work, I was on the road for 14 out of 16 weeks. That sucked. I wish I could have canceled some of that, but the company needed the cash flow early on because…

We had to backfill consulting capacity, fast. We’d just hired Angie, but that wouldn’t be enough to replace both Jeremiah and Kendra. I hired Tara before the company changes were even done because I had to get consultants up to speed really quickly. Doug & Erik had to do double duty – consulting, plus getting their new coworkers trained.

We had to go underground

We had to go underground

We were temporarily unprofitable. While Angie & Tara got trained on how we do the SQL Critical Care® process, we were way heavy on payroll – but way light on revenue. The first quarter of 2016 scared me more than any quarter we’d had – the consulting side of the business lost over $100k in those 3 months alone. We were never in a position where we wouldn’t make employee payroll, but I did a lot of training & consulting that I never got paid for, even to this day.

There were also some big expenses I couldn’t avoid:

  • We needed a company retreat to get the new team together to build camaraderie
  • My first solo class, a January 2016 class in Newark, bombed with only 5 tickets sold (losing a bunch of money, but we don’t cancel classes – lesson learned, nobody wants to go to Newark in January)
  • Doug wasn’t billable because he started recording Jeremiah & Kendra’s advanced querying & indexing training material, because we needed to start bringing in more passive income
  • I had the opportunity to hire Richie – but as a developer, he wasn’t directly bringing in revenue

“Wait – why hire Richie if you didn’t want to build software?”

Visiting Cliff Lede in Napa

Visiting Cliff Lede in Napa

If Jeremiah, Kendra, and I were all building Brent Ozar Unlimited, the right way to go forward was to add software to the company’s offerings.

If I left, and Jeremiah and Kendra ran the company, I thought software still made sense for them. I am absolutely positive that they would have succeeded wildly.

But if Jeremiah and Kendra left, and I was the only remaining partner, then I would have failed. It’s not that I don’t have the experience or the drive – it’s just that being a solo founder, running a consulting and training company, and trying to build an app – that’s stretching one person too thin. In the first year, there just simply wouldn’t be enough time for me to devote to designing a new app and building the staff infrastructure necessary to bring it to life.

However, I did see an opportunity to build something different than the SQL Server industry had seen before: free online services. (The first result which has since gone live: PasteThePlan.com.) I wasn’t really in a rush to build them, but when Richie became available, I wanted to snap him up fast because the personality fit would be so good for the team, plus he had the right architecture and project management skills that could hit the ground running with minimal oversight from me. (I really do suck as a manager – I just point at a dot on the horizon and yell, “Run that way! Let me know what you find.”)

Plus, I could have Richie build a tool to rapidly improve the SQL Critical Care® process, making it easier for us to onboard new staff that could produce a better product faster, and for less money. I gave him a general spec and two months to build it, and he totally delivered. His CriticalCareCollector app dramatically changed the way we do consulting.

By the end of year five, I thought could breathe again.

Breathing easier

Breathing easier

I remember laughing in April when a commenter called me arrogant – at that point, I was about the farthest thing from arrogant. I had spent months really stressed out, paranoid that I would have to ask my team to make compromises, work more hours, take less time off, work crappy engagements, cut bonuses, or stop investing in our future. I was willing to do whatever it took to make sure that didn’t happen, including making a lot of personal financial compromises.

Thankfully, by the end of April 2016, it looked like we were firing on all cylinders. The consulting business was kicking ass: we had a trained, profitable team, using new consulting and sales tools do to their jobs better/faster/cheaper. The training business was on track as well: my 2016 classes were all written and working fine, we had a successful (profitable!) class in Newark, we had new video classes coming into the sales pipeline, and the rest of the year’s classes were in a profitable state.

Sadly, I was wrong about of half of that, but that’ll have to wait until next year’s retrospective.

If you wanna read the past updates:

Read the Comments