Presentation materials (slide decks, demo scripts, references, etc.)
| Date | Talk | Location | URL | Notes |
|---|---|---|---|---|
| 2014-09-16 | Correlated Concatenation | PASSMN User Group Meeting | http://minnesota.sqlpass.org | Lightning talk. |
| 2014-10-25 | Pseudo-Constants | SQL Saturday #332 - Minnesota | http://www.sqlsaturday.com/332/Sessions/Details.aspx?oldsessionid=25053 | |
| 2015-04-11 | Pseudo-Constants | SQL Saturday #387 - Madison | http://www.sqlsaturday.com/387/Sessions/Details.aspx?sid=21735 | |
| 2015-08-12 | Open Up the Clubhouse | That Conference | https://www.thatconference.com/Sessions/Session/7065 | |
| 2015-10-10 | SQL Server 2016 - New Feature Preview | SQL Saturday #453 - Minnesota | http://www.sqlsaturday.com/453/sessions/details.aspx?sid=40064 | |
| 2015-10-24 | SQL Server 2016 - New Feature Preview | Twin Cities Code Camp #19 | https://twincitiescodecamp.com/#/talks/796 | Repeat (no new materials) |
| 2016-08-16 | User-Defined Functions | PASSMN User Group Meeting | https://mnssug.org/Announcement?itemType=PASSMNMeetings&year=2016 | Lightning Talk |
| 2016-08-16 | Tally Tables | PASSMN User Group Meeting | https://mnssug.org/Announcement?itemType=PASSMNMeetings&year=2016 | Lightning Talk |
| 2016-10-01 | SQL Server 2016 - New Feature Preview | SQL Saturday #557 - Minnesota | http://www.sqlsaturday.com/557/Sessions/Details.aspx?sid=53615 | Updated materials |
| 2017-04-08 | XML vs JSON - Battle Royale | SQL Saturday #604 - Madison | http://www.sqlsaturday.com/604/Sessions/Details.aspx?sid=62671 | |
| 2017-08-08 | Clean up your campsite! | That Conference | https://www.thatconference.com/sessions/session/11442 | |
| 2018-04-07 | XML vs JSON - Battle Royale | SQL Saturday #724 - Madison | http://www.sqlsaturday.com/724/Sessions/Details.aspx?sid=74463 | Minor materials updates |
| 2019-03-23 | Refactoring Monolith Database Stored Procedures | SQL Saturday #825 - Chicago | https://www.sqlsaturday.com/825/Sessions/Details.aspx?sid=88609 | Minor materials updates |
| 2019-04-06 | Refactoring Monolith Database Stored Procedures | SQL Saturday #842 - Madison | https://www.sqlsaturday.com/842/Sessions/Details.aspx?sid=90600 | Minor materials updates |
| 2019-04-16 | Refactoring Monolith Stored Procedures | PASSMN User Group | https://www.meetup.com/MN-SQL-Server-User-Group-PASSMN/events/260455887/ | Repeat (no new materials) |
| 2019-04-27 | Refactoring Database Stored Procedures | Minnebar | https://sessions.minnestar.org/ | Repeat (no new materials) |
| 2019-10-12 | Pseudo-Constants | SQL Saturday #913 - Minnesota | https://www.sqlsaturday.com/913/Sessions/Details/sid/96622 | Repeat (little new material) |
| 2020-10-20 | T-SQL - Squish. Shred. Boom. | PASSMN User Group | https://www.meetup.com/MN-SQL-Server-User-Group-PASSMN/events/273978358/ | Remote |
| 2024-07-31 | Write More Testable T-SQL | That Conference | https://thatconference.com/activities/U19GznjhKtAPTgLeu9I4 |
See also Scribnasium blog Talks page.
Since SQL Server 2005, a popular method for concatenating values across multiple rows has been to use the built-in XML functions. Of course they work well for the simple case involving a single field, but with one small trick, they can be used to make multiple, correlated lists based on different fields.
You know you’ve done it. Maybe it was the lucky number 7. Maybe it was an enigmatic X. Maybe you smooshed some words together in ALLCAPS. That should be easier to spot, right? Because some day you might need to change it—in every stored procedure, function, and view.
Magic numbers, codes, identifiers, constants, enumerations. Whatever you call them, all applications have them. Sure it’s quick and easy to sprinkle the values throughout your code, but that breeds mistakes, rigidity, and obfuscation. There has to be a better way!
Other languages give us real constants and enums—with IntelliSense and compilation-level enforcement. Well guess what-- SQL Server does too, sort of. Join us and learn to write clearer, easier to maintain code without sacrificing performance.
Boys, there's something important we need to talk about. Girls don't have cooties. It's time to take down the "No Gurlz Allowed" sign. This clubhouse is big enough for all of us, and we'll all have a better time if we learn to play nicely together.
The percentage of women in technology has fallen steadily since the early 80s. 92% of Stack Overflow survey respondents identified as a male. Girls are discouraged from technology at a young age, and those who make it through are often driven out by an unwelcoming technical community. There are the obvious examples of sickening death threats against those in the gaming industry, but the daily grind of subtle undermining of women's competencies also takes its toll.
Teams perform better with diverse viewpoints, so it's in all of our best interests to solve this problem. And of course it's just the right thing to do.
We'll explore some of the challenges women face in technology communities, review ways we can all help improve our environment, and discuss efforts to bring more women into technology led by groups like Girl Develop It.
Be the first on the block to try the shiny new features coming in SQL Server 2016.
We'll review how you can get up and running with the SQL Server 2016 Community Technology Preview and play with all of the new toys.
Time travel with Temporal Tables. Watch the gears turn with Live Query Statistics. Go shopping in the Query Store. And impress your developer friends with some freshly minted JSON.
Maybe we'll even figure out how to bottle up that new version smell.
SQL Server 2016 is here. Curious what all the hype is about?
We'll take a stroll down memory lane to remind us how far we've come and then explore some of the brand new features.
Time travel with Temporal Tables. Watch the gears turn with Live Query Statistics. Go shopping in the Query Store. And impress your developer friends with some freshly minted JSON.
Maybe we'll even figure out how to bottle up that new version smell.
Shiny new touch bar MacBook Pro under one arm, JSON strolls in with a coffee from that new place with the ethically sourced beans. Grizzled XML looks up from an old ThinkPad and grunts, remembering that the stained company mug on the cluttered desk had been empty for some time. JSON was sure to be assigned the new web features while XML would be spending another week on those legacy third party integrations...
SQL Server 2016 brings JSON support, but does that mean XML is old news? Which has more features? Do they matter? Which is faster?
We'll review the many similarities and highlight some important differences between SQL Server 2016's XML and JSON support. You'll leave equipped to make the right choice for your environment.
Your campsite is a mess. There are "totally safe to burn" plastic wrappers melted in last night's ashes. The roasting sticks are coated with dirt-encrusted marshmallow goo. And some sort of animal went through the trash bag you left out. (Oops.)
We get it. Move fast and break things. Just ship it! But what's left a giant stored procedure with cursors, temp tables, and mystery calculations. It's a big black box that nobody wants to touch. Let's fix that. We'll open the lid on an example monolith and do major surgery. What's left will perform better, be easier to understand, encourage code reuse, and be easier to test.
You might even begin to like writing SQL.
(This talk is geared to developers using Microsoft SQL Server, but many of its principles apply to any RDBMS.)
We get it. Move fast and break things. Just ship it! But what's left a giant stored procedure with cursors, temp tables, and mystery calculations. It's a big black box that nobody wants to touch. Let's fix that. We'll open the lid on an example monolith and do major surgery. What's left will perform better, be easier to understand, encourage code reuse, and be easier to test.
Sure, you've written a SELECT or two in your day. Maybe there's a gnarly beast in your past with dozens of tables and sub-queries that you'd rather not think about. But have you really thought about all the ways you can morph data with a humble SQL statement?
Got too many rows? Squish them down. Got a big ball of text? Shred it into the little bits you need. Just not enough data? Blow it up. Boom! Who knew T-SQL could be so violent?
Together we'll explore derived tables, sub-queries, APPLY clauses, and window functions. But wait, there's more. How about a double string-split? We'll even dust off our disused friend CROSS JOIN.
You'll leave with an appreciation of just how much you can do with a single T-SQL statement.
If you've worked with a legacy business application, you've probably encountered database stored procedures, and they've probably been a fragile, scary mess. They typically have hundreds of lines of procedural code with many branches, convoluted logic, and overloaded variables. And there's no way to test anything because running the procedure makes all sorts of changes.
You might think that's just the way things are done in a database and there's no fixing it.
But I can tell you there is a better way.
You can move all of that logic into composable, testable components. You can test your code without risking any data modification. You can even quickly generate thousands of tests which will show the business exactly how your code will behave in every conceivable scenario.
Once you experience SQL done right, you might even grow to like it.
- Learn to encapsulate business logic.
- Learn a method for mass testing of business logic.
- Learn to make more reusable, composable database code.
Riley Major is an Enterprise Architect based in the Twin Cities, MN metro area who enjoys collaborating with business leaders to design technical solutions and working with technology professionals to build them. He's been programming and designing databases since he was a kid and doing so professionally for 25 years. He has a special place in his heart for T-SQL in SQL Server and loves to share that enthusiasm.