Running a User Group on Twitch

Last year, I started streaming TriPASS meetings on Twitch. With all the hullabaloo going on, this turned out to be a prescient thing. I’ve also had a couple people ask me for streaming advice for technical topics, so I wanted to put together a blog post where I cover all of this. I’ll start with what we’re doing at the Triangle SQL Server Users Group (as well as a few ideas we’re kicking around) and then share some advice on getting started for yourself.

The TriPASS Offerings

We currently have three things on offer over on our Twitch channel.

Regular User Group Meetings

Our group meets approximately three times a month: the 2nd, 3rd, and 4th Tuesdays, though the 4th Tuesday only meets from January through October due to holidays. This gives people a regular schedule to check in and watch a technical talk. The format is similar to a webinar with a presenter lecturing to an audience.

The good old days, back when we could be near people.

This is the easiest to wrap your head around and implement as a user group leader. It’s also convenient for attendees because they know when meetings will be well in advance.

Bonus Meetings

This is kind of the same as above, but I’m taking advantage of the fact that there are a lot of speakers who lost the opportunity to present and would like to do something. These are additional meetings that we have at times more convenient to the speaker. The plus side to this is even more content, but it means that there isn’t a set schedule.

Coding with Kevin

One of the things Twitch has to offer is the experience of unplanned content creation. Shortly before everything was cancelled, I started a series that I called Coding with Kevin, where I’d work on some stuff while I was in hotel rooms in various cities. It is definitely a low-fidelity stream experience and a way for me to get some (usually) presentation work done while giving folks a place to hang out and kibitz.

All the fun of pair programming with half of the interaction!

I won’t say that I’m going to ramp it up much in terms of frequency, but I do aim for approximately one of these a week and they last about 1-2 hours depending on how much I get accomplished and how much of a fool I currently appear to be (spoilers: in the session I took the image above from, I end up looking like quite the fool at the end).

What Else is On Tap?

I’m also looking at expanding this out to include a few other formats, including maybe an interview-based web show or semi-technical, semi-personal content, where we have a few regular panelists and bring on a guest for a technical segment. I also have other ideas kicking around in my head; it’s just a matter of ensuring I have the time to commit to them.

So You Want to Get Started

Here’s where I offer up some advice. First up, let me give you some recommended reading. About 9 months ago, I put up a post with the equipment I use for capturing in-person streams. You do not need most of this equipment if you’re online-only! Chrissy LeMaire has a great post on her setup, and that’s a lot closer to what you’re looking for. But let’s make it even easier.

Minimum Viable Equipment

You will absolutely need the following to broadcast on Twitch:

  • A desktop or laptop computer
  • A microphone, preferably one which isn’t awful
  • Broadcasting software (which is free)

That’s really not that much. You don’t need to spend thousands of dollars on studio equipment, especially when you’re getting started.

Here’s the equipment I use when online streaming:

  • A Surface Pro laptop. It’s what I have available to me, and it works absolutely fine.
  • A Jabra speaker phone. It’s hands-free and portable, which really helped me when I was doing this from hotel rooms. When I get serious about things, I have a Blue Yeti microphone.
  • An Elgato Stream Deck Mini. I love this thing but it is absolutely not required equipment.

Note that I didn’t say anything about a camera. You might look into something like the Logitech Brio as Chrissy recommends, though they’re sold out due to everybody needing to go buy a new webcam to work from home. I have a Logitech c930 (with privacy shade) at home and bring a c920 with me for in-person meetings with an in-person speaker. But for Coding with Kevin, I don’t have a camera on at all. Maybe in the future.

Minimum Viable Software (Plus Some More)

Regardless of what you’re streaming, you need broadcasting software. OBS Studio is my software of choice. It’s free and open source software and runs on Windows, MacOS and Linux. I’ve also tried out Streamlabs OBS (SLOBS), which looks nicer but I had some problems getting everything working, so I eventually abandoned it.

You’re going to want to spend an hour or two configuring OBS Studio. For that, I recommend the Gaming Careers YouTube channel, in particular videos like this one which give you an idea of how to set things up. OBS has a lot of settings and can be a daunting piece of software when getting started, so don’t be afraid to hack away at it for a few days.

If you want to broadcast remote speakers, you can try your meeting software of choice (Teams, GoToMeeting, WebEx, Zoom, whatever). I’ve had trouble capturing some of them in OBS Studio, though–I just get a black box. As a result, I use Whereby for conferencing. It’s free for 4 concurrent users and because it’s just HTML5, there are no plugins or add-ins you need to install.

Free Advice, Worth What You Paid For It

Here’s some advice that I’d give to people looking at going online for user groups and thinking about Twitch.

Audio > Video

If you’re going to spend money, spend it on a good microphone. A cheap webcam isn’t at all flattering, but unless your face is the star of the show (typically not for technical broadcasts), how you sound matters a lot more than how you look. You don’t need a perfect radio voice (heaven knows I don’t have one of those) but don’t use a crappy built-in laptop microphone. Even a $50 lav mic can work well.

As far as video settings go, I’d recommend broadcasting at 720p (1280×720) at 30 frames per second. That’s clear enough that you can see it on a 1080p monitor without much artifacting on the screen and the bandwidth requirements are low enough that people can watch on not-great internet connections. You can also broadcast at 1080p (1920×1080), but I’d highly recommend keeping the framerate at 30. If you get affiliated on Twitch, they’ll upsample and downsample your stream automatically and then you can broadcast at the highest resolution, framerate, and bitrate you can handle, but until then, keep those low-bandwidth folks in mind.

Contribute at Your Own Pace

At the high end, there are people who broadcast 5-8 hours a day on Twitch, and it’s a full-time job for them. None of those people are streaming technical content, though. We have day jobs (and sometimes night jobs), so expectations are different. It’s easier to build an audience if you have regular content, but “regular” can mean once a week or once a month.

That said, I would recommend that you try to have a schedule if possible. That gives people an idea of when they can probably catch you. Think of it closer to a broadcast TV experience than a pure streaming experience where people can tune in whenever but have little real interaction.

Have Two Screens

You’re going to want at least two screens here. The good news is that they don’t necessarily have to be on the same computer. When I broadcast remote presentations, I can work within OBS Studio, where I get Twitch chat and a little bit of control over the stream. But when I’m doing Coding with Kevin, I’m displaying my entire laptop screen, so opening OBS Studio is pretty much a no-go as you’ll get picture-in-picture-in-picture zaniness pretty fast and that’s not a great look.

Instead, I have a desktop machine where I can tune into the broadcast while I’m presenting (leaving my speakers off, of course). That lets me see what the viewers see and allows me to see chat. I usually respond to chat with voice—it’s a more interactive feeling that way and also limits the number of keyboards I need to clang on.

If you don’t have a second machine, Twitch has a mobile app which lets you manage your stream, so you can get to chat there on your phone or tablet.

Use the Science and Technology Channel

Twitch has you choose your category. If you’re doing a technical stream, you want to be in Science & Technology. There are some good streamers on that category and that’s where your content best fits.

Along with that, I want to spend a moment talking about chat. Twitch chat is, for the most part, an excellent community. Most of this comes from streamers setting the tone. Don’t be afraid to time someone out for crossing the line, but this also isn’t a cesspool—don’t come in expecting that you’ll have to ban everyone all the time as you’re besieged by trolls. It is a lot easier for someone to say something stupid in chat than at a live meeting, but you’re also aiming at a more mature audience, mostly people who should know better. And generally they do. If you’re really concerned, get another user group member or two to act as moderators.

Embrace the Suck

I tune in to some really great Twitch streams where a lot of time and sometimes money went into the setup. You don’t have to be that. I’ve been at this for several months and I’m nowhere near professional-grade streaming. But that’s okay—this isn’t a broadcast TV show with a multi-million dollar budget, cast of trained actors, and dozens of supporting staff. And your viewers don’t expect that.

If you really get into this and find you enjoy it, you’ll probably dedicate a good amount of time to improving the setup, but don’t feel like the barrier to entry is that you need to be a pro with expertise in videography, audio, broadcasting, and everything else. Just take it one stream at a time.

What’s Your Experience?

Have you tried streaming? What have you learned? If you have tips you’d like to share, I’d love to get your comments.

SQL Server 2019 CU2: PolyBase and Cosmos DB Version Issue

After upgrading to SQL Server 2019 CU2, I noticed some issues when trying to connect to a Cosmos DB collection via PolyBase. Specifically, I started getting the following error message:

Msg 105082, Level 16, State 1, Line 35
105082;Generic ODBC error: [Microsoft][MongoDBODBC] (110) Error from MongoDB Client: Server at <<my Cosmos account name>> reports wire version 2, but this version of libmongoc requires at least 3 (MongoDB 3.0) (Error Code: 15) Additional error <2>: ErrorMsg: [Microsoft][MongoDBODBC] (110) Error from MongoDB Client: Server at <<my Cosmos account name>> reports wire version 2, but this version of libmongoc requires at least 3 (MongoDB 3.0) (Error Code: 15), SqlState: HY000, NativeError: 110 .

This account had worked through SQL Server 2019 and I hadn’t changed anything on Cosmos DB’s side.

The Solution

After reaching out regarding the issue, I learned that the PolyBase ODBC driver for MongoDB (which SQL Server uses to connect to Cosmos DB) was updated in CU2.

A New Account?

The word I got was that, if you received the error above, you would have to upgrade your Cosmos DB account from API version 3.2 to API version 3.6. There isn’t a nice way to do this, so I created a new account.

Be sure to select Version 3.6.

Well, I tried that and no dice—I still got the same error. Fortunately, there is a workaround.

The Workaround: Reverting the Driver Change

The workaround is to revert back to the original MongoDB driver that PolyBase used. You can find this driver in your SQL Server installation path, which by default is %PROGRAMFILES%\MSSQL15.{Instance}\MSSQL\Binn\PolyBase\ODBC Drivers.

The secret lives of INIs.

Inside this folder, there is a file named PolyBase ODBC Driver for MongoDb.ini. Open this file and make the following edit:

Deversioning the Mongo driver.

As of CU2, the driver and setup have moved to a path PolyBase ODBC Driver for MongoDb\2.3.8\. Remove the 2.3.8\ and you revert SQL Server back to its pre-upgrade version of the Mongo driver. You’ll need to restart the PolyBase services, but you do not need to restart the database engine.

Once you do that, you should be able to create external tables against a Cosmos DB account, whether that account is using version 3.2 or 3.6.


For now, I recommend reverting the MongoDB driver if you want to connect to Cosmos DB and experience the problem listed above. I’ll update this post as I learn more about the issue, and hopefully, everything will be sorted out.

Need a Remote User Group Speaker?

If your user group needs a remote speaker, especially over the next couple of months, I’d be happy to step in. Check out my list of presentations. If that didn’t scare you off and you still want to get ahold of me, hit me up on Twitter, LinkedIn, e-mail (if you know the address), or put your contact details in a trap cleverly designed to look like a SQL Saturday.

It gets me every time.

Or Just Watch Our Group

Also, if you are a user group attendee jonesing for a bit more content and missing your user group over the next couple of months, come check out the Triangle SQL Server User Group. We’re going to be remote-only through April, but we meet three times a month and broadcast nearly all of our user group meetings on Twitch. You don’t need an account to watch, but if you want to follow and chat, registration there is free.

SQL Server 2019 Bug: PolyBase and Windows Authentication

I wanted to throw out a blog post in case anybody runs into this bug. It started happening with SQL Server 2019 CU2 and I have confirmed that it is still a problem in SQL Server 2019 CU3.

Update: 2020-08-09

This was fixed in SQL Server 2019 CU6 IF YOUR SERVER IS IN A DOMAIN. After installing CU6, I was able to create external objects using my Windows-authenticated account, so the bug introduced in CU2 is finally gone. You can also query data from external objects using Windows accounts, meaning that everything is peachy now IF YOUR SERVER IS IN A DOMAIN.

If you have a machine which is not in an Active Directory domain, it appears that you still get the error from CU5. So it looks like this is halfway fixed.

Update: 2020-06-23

With SQL Server 2019 CU5 released, I wanted to check if this is still an issue. The issue is still here, but it only generates a Level 16 error, so although Windows authentication fails, it at least no longer kills your session immediately. Here’s the error message I get:

OLE DB provider “MSOLEDBSQL” for linked server “(null)” returned message “Cannot generate SSPI context”.
Msg -2146893042, Level 16, State 1, Line 65
SQL Server Network Interfaces: No credentials are available in the security package

PolyBase and Windows Authentication

Here’s the short version of the bug. If you are connected using a Windows authenticated account and attempt to perform a PolyBase-related action, such as creating an external data source or querying from an external table, you receive the following error:

This domain comes from a low-trust society.

The error text:

Msg 46721, Level 20, State 1, Line 5
Login failed. The login is from an untrusted domain and cannot be used with Integrated authentication.

Because this is an error with a severity level of 20, it kills your session.

The Workaround: SQL Authentication

For now, the only workaround is to perform all of your PolyBase-related work using SQL authentication. This includes creating or dropping external data sources, file formats, and tables, as well as querying any external tables.

Clarification: PolyBase and Kerberos

Just to clarify, I’m talking about work that happens on the local side of a PolyBase system, that is, things which happen on the local SQL Server instance(s). This bug appeared in CU2, but prior to that, you could use Windows authenticated accounts to create PolyBase objects.

If you are connecting to a Hadoop cluster, you can still use Kerberos to make that connection.

If you are connecting to a remote SQL Server instance, Oracle or Teradata server, MongoDB cluster, etc., Kerberos is not supported. This has been the case since the first CTPs of SQL Server 2019. So, for example, let’s suppose you want to connect to a remote SQL Server instance, SQLRemote. Your database scoped credential that you use when connecting to SQLRemote must be a SQL authenticated login; that is the current design, and even after they fix the bug I’m talking about, it won’t change this design.

Coding with Kevin on Twitch

I’ve been thinking of ways to make the Triangle SQL Server User Group Twitch channel a bit more active. I broadcast all of the TriPASS user group meetings that I can on the channel and though it’s a lot for a user group (we meet three times a month), it’s not that frequent by Twitch standards.

But last week, while I was in my hotel room after SQL Saturday Tampa, I decided to start up a new thing: Coding with Kevin. The idea of Coding with Kevin is as follows. I build out a pretty large amount of content for presentations. Aside from looking like an idiot during the content creation process, there’s not much downside in doing it live. Chrissy LeMaire does something like this, where she livestreams writing her dbatools book (without the looking like an idiot part, of course) and I enjoy watching her build content.

I won’t have a fixed schedule for this, but my goal is to stream at least a couple of times a month, most likely for about 30-60 minutes. This will supplement the regular user group meetings and give the channel a bit more content.

These won’t be saved on YouTube, though—once two weeks roll around that they’re deleted from Twitch, those videos are gone forever. This is intended to be a chance to unwind and talk a bit of shop, not something to come back to in the future like a proper user group meeting. Still, I hope you’ll join me for some of these as I figure out my next crazy scheme to drive viewership.

Upcoming Events: PASS Virtualization Virtual Group

Key Details

What: PASS Virtualization Virtual Group.
Where: Online only.
When: Wednesday, March 11th.
Admission is free. Register on the PASS Virtualization Virtual Group website.

What I’m Presenting

12:00 PM — 1:00 PM (Eastern) — Data Virtualization with PolyBase

I think it’s interesting that Tom and Scott are moving the virtualization virtual group to include data virtualization rather than VMware & containers.

Upcoming Events: SQL Saturday Baton Rouge BI

Key Details

What: SQL Saturday Baton Rouge, BI Edition.
Where: LSU Patrick Taylor Hall, Baton Rouge, Louisiana
When: Saturday, March 7th.
Admission is free. Register on the SQL Saturday website.

What I’m Presenting

11:30 AM — 12:30 PM — Classification with Naive Bayes
1:45 PM — 2:45 PM — Launching a Data Science Project: Cleaning is Half the Battle

It took me several years to make it to Baton Rouge for a SQL Saturday, and now I’m going back for the BI edition as well.

SQL Saturday Raleigh Pre-Cons

We have two pre-cons going this year at SQL Saturday Raleigh. These are both full-day trainings and will take place on Friday, April 17th at the Microsoft office in Raleigh.

Data Science with Databricks by Ginger Grant, currently $125.

Databricks is a very popular environment for developing data science solutions. More and more companies are interested in Databricks as it is very simple to set up and contains a collaborative workspace for working with a team of people. In this session you will see how to create Machine Learning Solutions with multiple workflows starting with ETL, to data exploration, model experimentation, and lastly to a production release of a data science solution.

Today, more and more development is performed on very large datasets. Attendees will learn how to use Apache Spark, which is part of Databricks, to rapidly analyze lots of data. Learn how to use Databricks to reduces operational complexity to create solutions which can be scaled up or down depending on the amount of data needed to process without having to change the underlying code.

Python, Jupyter Notebooks, and Apache Spark are the technologies used to create solutions within this session. No experience is required.

PowerShell Top to Bottom by Mark Wilkinson, also currently $125.

Lots of people are talking about PowerShell these days. If you are DBA that manages a few servers you have probably even used some PowerShell here and there that you found on the internet, but what if you need to write a script or function from scratch? What if you already have a few scripts that you have on hand but want to organize them into a module to distribute to your team members?

In this session we will be exploring the powerful and flexible “PowerShell” scripting language. We’ll start with the basics of writing simple scripts and work our way up to more complex topics like writing advanced functions, executing tasks in parallel, creating modules, and embedding .NET code in your PowerShell code. This will be an interactive session where we will work to build a useful set of functions to illustrate the many strengths of PowerShell.

These two trainings are a great way of getting even more out of SQL Saturday Raleigh.