Kind of a convoluted title, I know, but I get questions like this every now and then:
@BrentO read your article on your home setup, any chance there could be a follow up on how you have things configured? You’re using a Mac, but how do you do SQL stuff effectively on a non windows platform? Would be helpful to share any tips.
— Chris Lumnah (@lumnah) September 25, 2018
Chris and I had a good conversation on Twitter, and I figured it’s time to post an updated version of how I work.
I have a “fake job” – I’m a consultant.
If you’re a full time employee somewhere, you probably manage the same servers every day. Your main applications probably consist of Outlook, SSMS, a team chat app, a monitoring tool, and a web browser, all open to the same stuff all day, just alt-tabbing around between different windows.
My job is a little different because:
- I’m not the primary line of support for any SQL Servers
- When I’m looking at SQL Server data, it’s through the lens of custom apps Richie wrote
- I jump around to a different client every 3 days
- A lot of my time is spent building & delivering training material
So there probably isn’t going to be a lot of actionable info in this post for you, but hey, y’all keep asking, so I’ll explain, hahaha.
My favorite thing: web apps.
Whenever practical, I try to use apps in a browser tab rather than a downloadable executable. Jeremiah Peschka really motivated me to try this – years ago, he really encouraged me to try GMail in a browser rather than Outlook or Apple Mail. I hated it at first, but now I adore it.
When I open Chrome, these tabs show up:
- Email & calendar: GMail – try to learn one new keyboard shortcut a day, and you’ll be an unstoppable ninja in a month.
- Tasks: RememberTheMilk.com – I still practice Inbox Zero with this approach. It involves a lot of replies that start with, “This sounds like a really interesting discussion, but I’m slammed right now, so here’s who you should talk to instead…”
- Reading blogs: Feedly – and here are my subscriptions if you wanna follow along.
- Amazon Music – even though I have a ton of music stored locally, I’ve been gravitating toward this because it’s included with Prime, and the web UI is pretty good.
- Power BI – just last week, I was able to switch over from mainly using the Power BI Desktop in a Windows VM, up to the cloud-based version instead. I still have to open the desktop for editing the report I use a lot, but I can consume the data and give client advice via a browser instead. (I was really, really happy the day I pulled that off.)
- WebEx – for client work. Our SQL Critical Care® is about mentoring, so we’re walking people through their own servers, showing them what to look at while we investigate the root cause together. We don’t get VPN access or anything like that, so it keeps the client work simple and fast.
And then I try to use web services for as much as possible, like Expensify, Quickbooks, etc. If my laptop bites the dust when I’m on the road, or if I need to get a few minutes of work in on vacation, then any web browser will get me most of the way there.
Web app not good enough?
Then a Mac OS X app.
Here’s my dock with my most common apps:
From left to right:
- Finder – the Mac OS X equivalent of Windows Explorer.
- VMware Fusion – to run virtual machines. I do a lot of work in the cloud, but 2 local VMs get heavy use: SQL2017 to build & show demos, and SQL2019 for R&D work. In very rare cases where a client wants me to VPN into their environment, I’ll build a separate VM for each client to avoid VPN client hassles. (Why VMware and not Parallels? I just started with it because I used to be a VMware admin, and it works fine.)
- PowerPoint & Excel – yeah, technically there are online equivalents of these, but I haven’t been satisfied with them, especially with the amount of training classes I teach.
- TweetBot – whenever I hear people complaining about ads in their Twitter feed, or out-of-order tweets, or likes showing up, I just shake my head. Pay $10 and make that garbage go away. Plus, powerful filters & muting rules keep you blissfully ignorant of the rants.
- Slack – although now that I think about it, I might be able to switch over to the web version of that now.
- Remote Desktop – because a ton of my work is in the cloud, and the official Microsoft RDP client makes it easy to move files around.
- Postico – like SSMS for PostgreSQL.
- Textmate – my favorite text editor. I try to write my T-SQL queries from scratch here, without IntelliSense, just to see if I can, hahaha.
- Github – for source control of the First Responder Kit, SQL ConstantCare®, internal apps
- Download folder – shortcut because when you work in GMail, you end up downloading a lot of attachments and editing them locally, like signing PDFs.
- Trash can – I have no idea why I left that icon in the dock, now that I see it.
No other choice? Windows VM.
I don’t dislike Windows – it’s totally fine – I just don’t want to open a VM if I don’t have to. These days, I only start a VM under 2 scenarios:
When I need to build or deliver SQL Server demos – I fire up a VM with SQL Server 2017 or 2019 running. My training classes generally involve performance tuning servers, indexes, and queries. In theory, I could run SQL Server in a Docker container and run queries in Azure Data Studio. In practice, ADS’s execution plan experience isn’t quite there yet, and I want the students to see the same user interface they’re used to using every day (SSMS).
When I need to edit Power BI reports – despite thousands of votes, Microsoft doesn’t plan on bringing Power BI Desktop to the Mac. It’s by far and away the top-voted not-planned item, and if it hadn’t been shelved as not-planned, it’d still be on the leaderboard for the top requested features overall:
So I have to fire up a Windows VM when I want to edit Power BI files.
This would be different if I had a different job.
If I was a remote DBA contractor, like if I had to regularly jump in and fix broken Agent jobs, then I’d probably have a lot more VMs. I’d still aim for one VM per client just because VPN software can be so terrible. I wouldn’t want one client’s VPN update to hose someone else’s connection.
If I was a full time DBA for a company with only a handful of production servers, or a development DBA doing performance tuning work on just a handful of applications, I’d still have a Mac as my primary desktop, but I’d use a jump box to run SSMS and SentryOne Plan Explorer.
If I was a full time DBA with dozens or hundreds of SQL Servers, I’d probably switch back to Windows and focus on automating my work with PowerShell.