Can’t we get this sorted?

T-SQL Tuesday Logo Andy Mallon hosts this month’s T-SQL Tuesday, asking us to reflect on Allan Hirt’s tweet lamenting that “we’re still dealing with the same problems” after 25 years in IT.

I think technology has the paradoxical problem of moving both too fast and too slow. Almost all of us would rather create something new rather than maintain something old. We love our green fields. And we’re always pushing boundaries. But today’s experiments become tomorrow’s legacy code. Our proofs of concept become mission critical systems. And then they stagnate. All of the hacks and shortcuts we took become immortal. And that’s why Little Bobby Tables is still the #1 vulnerability on the web today.

But that’s a big downer. It’s more fun to complain about our tools, so here goes.

After years of using SQL Server Management Studio (and its predecessor Query Analyzer), I’m struck by how incapable the results grids still are. Unlike Excel, you can’t sort them, you can’t filter them, you can’t search within them, and you can’t easily change their font size. In any commercial software product, grid tools are table stakes. For some reason vendors still like to run through them, but they’re never a differentiator. That’s because you can just buy a grid component and use it in your application. Even the basic grid control which came with .NET 2.0 could sort.

Sure, we could request these cutting edge features through Microsoft Connect, but now there’s a better way. The SQL Community, Chrissy LeMaire and Aaron Nelson, has created a Trello board called SQL Server Management Studio 2016 Enhancements to organize and vote on all of our requests. It’s like Connect, except it isn’t controlled by Microsoft, it’s actually fast, and it’s a modern web app with mobile support. There are several dozen suggestions already cataloged including several involving grids:

So take this opportunity to get involved, dream big, vote for your favorite features, and drag SSMS grids out of the stone ages.

Or, you know, comb through your old codebase looking for security vulnerabilities like you really should.

DocuMNtary Film Release

Ydocumntary-screening-2016-09-22ou know how every web site has a quick, inspirational video with energizing music, quick takes, and talking heads? Scale that up to over an hour where the product is the Minnesota technology community itself and that’s DocuMNtary. It’s an appropriate analogy because filmmaker Nick Roseth said the project was all about “scaling inspiration.”

This sounds like a criticism, but I don’t mean it that way. I actually like watching those videos, as long as they feel real or I’m interested in the subject matter. In this show, despite lofty aphorisms (“I think Minnesota is one of the best kept secrets in the country”) the participants come across as earnest. And who doesn’t like hearing about their own community? Childish though it might have been, every time a shot of the McNamara Alumni Center flashed across the screen, I thought “ooo that’s where we are right now!” It’s hard not to take it at face value when the filmmaker is in your row and the tech luminaries on screen just walked off the stage after their introductions.

The film begins with the elephant in the room– the Cold. We’re reminded that it’s only a few degrees colder than Chicago, that there’s still fun to be had in the cold, and that it’s not cold all the time– we have all four seasons! (I must admit that while a little snow around Christmas is nice, I’m no fan of weeks of cold, grey early winter days with no snow to cover the bare trees, brown grass, and dormant plants. But at least the long winter limits our bugs to a more manageable size.)

The contributors warn us not to strive to be the “silicon prairie”– that we should embrace our own identity. We’re taught how our tech chops were formed in the secrecy of post WW2 military projects and that in the early computing days, IBM and most of the other big players were in Minnesota. Despite the irony, we’re told that our midwestern values prevent us from talking about how those same values also make us loyal and productive. Indeed, this humility underscores the need for the film– to tell the stories we’re too polite to tell.

This ethos, they suggest, was probably formed from our agrarian roots and extreme climate. We’ve been forced to collaborate for generations, and that brings a competitive advantage in our new connected world. Ultimately it’s our people, everyone seems to agree, which make the technology community in Minnesota such a success.

During Nick’s introduction, he encouraged us to participate, celebrate, and advocate. DocuMNtary lived up to those words– and more importantly it’s infectious. From the boisterous ovation and discussion afterward, it was clear the audience was charged with its energy.

After the showing, I had the opportunity to chat with Mike Willbanks (who founded our local PHP user group MNPHP), Jonathan Sundqvist (who now runs that group and an annual, nationally recognized PHP conference MidwestPHP), and Marc Grabanski (who is active in the JavaScript MN user group and founded Frontend Masters, which brings in expert front end developers from across the country for on site and web-based training sessions). As I’m on the board of PASSMN, a Microsoft SQL Server user group, the lot of us are not just participating in our local tech community, we’re actively helping to build it.

And as if on cue, the power of community was displayed right in front of us as Dustin Passofaro entered the conversation. He’s the CTO at Genovest which makes investment tools for individual value traders. Jonathan just happens to work for Interactive Data Corporation (purchased by Intercontinental Exchange, which owns the New York Stock Exchange), and it turns out they supply some financial data Genovest might want to buy. These random encounters showcase the value of in-person community events.

So thank you to everyone who is participating, celebrating, and advocating. And thank you to the creators of DocuMNtary for reminding us of how important that is and how successful we are.

That Diversity

The last session of That Conference is about to begin. I’ve been steeped in technology for three days. I oscillate from confident and excited to overwhelmed and tired. There is so much to learn. I want to play with my nascent Swift app, but another talk beckons…

And then it’s over. It echoed a common theme– be nice. It seems obvious, but it bears repeating because some people just aren’t listening. There’s such a positive vibe at That Conference that harsh comments stand out— a snide tweet about the registration lines and a casual “worst ever” dismissal of a talk.

The organizers, counselors, and campers are doing what they can. Clark reminded us it’s a family atmosphere and encouraged us to get uncomfortable— in a good way— and get to know our fellow geeks. A session on team building explained how to build trust with empathy and listening. Another explained how withering code reviews and post-mortem witch hunts destroy spirits and encourage hiding mistakes. There was even an open space to discuss our aggressive developer culture.

I’m confident that conferences, user groups, and anything else which gets us out from behind keyboards and in front of each other will have a chilling effect on chiding. It’s easy to snipe at pixels or talk behind backs; a face makes it real.

I also believe that increasing the diversity of our community will force this issue. Diluting the monoculture will help dissipate its caustic effects. Here again, That Conference is fighting the good fight. Their efforts brought in 42 women speakers this year, and they have a goal of at least half for next year. There’s still room for improvement— my scan of their website found only a handful of speakers of color— but they’ve taken good steps with a public commitment, outreach, a code of conduct, and women’s t-shirt sizes.

They also gave me a chance to talk about this issue last year, and yesterday one of the attendees of that talk came up to me to thank me for giving him something to think about over the last year. So it’s working. Our culture is evolving, but we need to keep pushing.

Thank you to the organizers of That Conference for bringing us together to share knowledge and build our community. I hope to come back next year and continue to grow and make connections.

The Gift that Keeps on Giving

T-SQL Tuesday Logo

Chris Yates is hosting T-SQL Tuesday #080 and asks us to come up with a SQL-related present such as the gift of knowledge. Rather than simply share some tidbit of information, why not teach folks to fish?

Someone recently asked me how they could get started learning about SQL Server. Like many in technology, I’ve just learned things along the way, so I didn’t have an organized response. My first instinct of course was to Google “learn sql server”. I saw some of the usual online training suspects like Udemy, Lynda, and w3schools. Strangely, Pluralsight didn’t make the first page, despite several lessons by the prominent SQLskills crew.

At the time, I missed what appears to be an excellent summary on becoming a DBA by John Sansom (@SQLBrit) and my advice ended up as a list of relevant SQL-related websites. I thought I’d expand on that here and perhaps evolve it as time allows.

I find one of the assets of SQL Server is its community of professionals and PASS is the heart of that community. Through its local and virtual chapters, it “empower[s] data professionals who leverage Microsoft technologies”. If you have a local chapter– mine is PASSMN– you should join it immediately. Typically these user-run groups offer free food and training on a monthly basis.

PASS Summit “is the world’s largest and most intensive technical training conference for Microsoft SQL Server and BI professionals.” It’s put on annually, usually in Seattle, WA in October. I’ve never been, but from what I understand it’s *the* event for SQL Server. If you can swing the travel and conference costs ($1800), you’ll be in for loads of learning and– perhaps more importantly, engaging in the community.

If you can’t make to to Summit, there are still ample opportunities to engage. In addition to the monthly meetings, most local user groups also put on annual free training events called SQL Saturdays. Our local group in Minnesota is hosting one this October. Again, they are full days of *free* training, and because they’re on Saturday, you generally can’t be too busy with work to attend. (Sadly it does interfere with family time, and I wish there were more short, cheap training opportunities during business hours for those with supportive employers.)

If PASS is the heart of the community, then Twitter seems to be its veins. If you don’t have an account, make one. It’s easy and free. And it’s not just inane chatter; hundreds of SQL Server professionals have conversations and reference blog posts, news, and industry articles. SQL Server community member Brent Ozar has a Twitter guide for new users.

And then there’s the people of the community. No comprehensive list could possibly be compiled, but there is some guidance. Thomas LaRock has curated a list of important SQL Server related blogs. However, it hasn’t been updated in some time, and it’s missing what I would consider some notable personalities such as:

There are also a variety of SQL Server related web sites which have excellent content. Here are just a few:

Last but not least, everyone in IT turns to a search engine for help, and lately they all seem to point to the Stack Exchange network. And there’s even a Stack Exchange for Database Administrators.

There is no end to the content produced by the community of SQL Server Database Professionals, which is evidenced by the close of another T-SQL Tuesday.

Let me count the ways…

T-SQL Tuesday LogoMichael J Swart is hosting this month’s T-SQL Tuesday, about the June 1st release of SQL Server 2016.

There’s so much “new” that Microsoft spread it out across several sprawling lists. The headline features from a year ago are:

  • Query Store
  • Polybase
  • Stretch Database
  • JSON Support
  • Row Level Security
  • Always Encrypted
  • In-Memory Enhancements

Microsoft’s more recent data sheet lists a few more including:

  • Temporal Tables
  • Mobile Data Visualizations
  • R Language Support
  • Dynamic Data Masking

What’s impressive to me is that, despite neglecting Standard Edition for some time, many of these trumpeted features are available (in some form) in Microsoft’s $4000 per core budget offering. You only need to pay treble damages for Always Encrypted, In-Memory Enhancements, and Mobile Data Visualizations. You can check the exhaustive list for your favorite new feature. Maybe it’s some simple syntactic sugar like DROP IF EXISTS.

As usual, all of these tasty treats are available in the developer edition which is now a free download. Technically, this started with SQL Server 2014 (but not until April of 2016). Plus, the 2016 version of SQL Server Management Studio (SSMS) is also a free and separate download, so you can enjoy toys like Live Query Statistics even for your 2014 servers.

“Awesome Abacus” by Anne Ruthmann

“Awesome Abacus” by Anne Ruthmann

Despite all of this bounty, Microsoft passed over a seemingly low-hanging fruit. All sorts of T-SQL gymnastics can be performed with a simple table of numbers—often called a Tally TableThere are a variety of ways to make them, but Itzik Ben-Gan has a widely regarded solution involving CTEs and CROSS JOINs and TOP. But it’s 2016—we shouldn’t have to roll our own row constructor, even if it’s a neat trick using the new JSON capability. Microsoft should just answer the will of the people and create an optimized, pure T-SQL mechanism to produce some numbered rows for us.

Oh, well, perhaps they thought that we really only needed them to split strings and they took care of that for us with string_split. Sure, it performs well, but it’s no generic row expander.

Maybe in 2018.

SQL Server Community Speaker Ratings with Joind.In

Stack of Paper Surveys

“Surveys to compile” by The Bees @

Earlier this year Stuart Ainsworth wrote about some controversy over speaker selection for the PASS Summit. He lamented the “lack of a repeatable objective tool for speaker evaluations”. His solution was

I have also been dismayed by the paper slips used by the SQL community. As technology and data professionals, we really ought to have a database of speaker evaluations.

Stuart recognizes that might not be the best choice but says he hasn’t found an alternative.

Commenter Rob Volk offers up (acquired by Eventbrite in 2013) as an alternative. Eventbrite is currently used by our local PASS chapter (PASSMN). However, Lanyrd does not support speaker rating. They’ve said on Twitter they don’t like its chilling effect on new speakers.

I suggest as a superior alternative. is actively used by the PHP community and is open source. They support short URLs, a QR code generator, a star rating system, and room for comments. They allow anonymous and authenticated ratings. They also have an API. Their site is reasonably mobile friendly and they are actively working on improvements.

They have a manual approval system for new events, but they approved a SQL Saturday after a Thursday submission. I recently set up my talk and suggested using it during my presentation. There were no takers, but I did get paper evals.

Because is open source and has an API, at any point the SQL Server community could download the evaluation data, fork the code, and move things in a different direction. That wouldn’t be possible using

I think is the best choice, but would still be superior to the current manual methods. Let’s just move forward with online speaker reviews.

SQL Saturday #332 – Minnesota

PASSMN once again put on a great SQL Saturday. Kudos to Rick Krueger (Blog | @DataOgre) and the whole team for putting on a great event.

Folks were so impressed they compared it to a mini-PASS Summit (the premier SQL Server event):

I had the pleasure and honor of speaking at the event. It was a fulfilling experience with a small but interested group. I look forward to doing it again some day.

iOS 7 Reminders – Remove Due Date

Let’s say you make a reminder in iOS7 and set an alarm for some future time.


You get a nice, normal reminder:


Oh, it’s time to write a blog post!


Nah, maybe later. But now it scolds you with menacing cyan text:


You can’t handle all that pressure and decide to write it tomorrow. Edit the reminder:


Wait, what’s that now? When did you set a due date?

Well, you didn’t. The Reminders app did. It decided that although you might have wanted to be reminded a bit later, you still wanted to know the original due date, just so you felt really guilty.

But you’re the boss. These machines do your bidding. You’ll just go into that due date and remove it:


What’s that you say? You can’t figure out how to remove it? No, it’s not that “Never” underneath the dials. That’s tempting. After all, you’d rather this task were never due, right? But alas, that’s when it’s set to repeat. Scribnasium ad nauseam?

If you have an OS X device, you can just remove the checkbox.

Screen Shot 2013-10-22 at 11.48.32 PM - Cropped

But what if you don’t, or you don’t want to? It took me a bit to figure this out, but all you have to do is turn the “Remind me on a day” off and back on:

IMG_0113     IMG_0108

Voilà. Due date gone. If only real life were so easy.

In for a penny, in for a pound…

Jar of pennies.

“Three liters of pennies! 12.6 kg total mass.” — (c) Michael Pereckas

I historically eschewed Apple products because of the closed ecosystem and what I felt was an oversimplification of their software products. Everything “just worked”, but in mysterious ways. For example, just playing a media file on an Apple computer put it in your iTunes library– convenient for the average user, but as a power user I like to control where things are stored and how they are organized. That way I know how to back them up. But Apple’s got an app for that, too– Time Machine. Just turn it on and it takes care everything. I was a little bit too “Type A” to surrender to the simplicity and hope for the best.

My wife is a teacher, so whether she’s liked it or not, she’s used Apple products for many years. But she has liked it, so we got her a an Intel Core Duo Mac Mini back in the day. It’s still running, now as our simple home file server. That was the only foothold into our household Apple had for some time. As a primarily Microsoft ecosystem technology professional, all of my experience had been with Windows. I even used a smart phone with the much maligned Windows Phone OS (the Samsung Saga, which had a physical keyboard and a touchscreen back when folks thought those were mutually exclusive concepts). Then I won an iPad.

I had no plans to purchase a tablet, especially an expensive iPad. I thought the OS was crippled and it was useful mostly for surfing the web. If I needed to work on something away from home, I could just use my laptop. I was fooling myself. My old eMachines plodding tank of laptop barely got an hour on its aging batteries. I had no real mobility. I never took it anywhere but bed or vacation to offload pictures from my camera. With the iPad, I suddenly had something I could tote around as an afterthought. I started taking it to conferences and found that I could actually type really well on it. And it didn’t make a racket– no fan noises, no beeping with a failing battery, and my fingers made an almost-pleasant, muted tapping sound instead of the disruptive clacking of a keyboard. I was a fan.

It’s true what they say about the Apple ecosystem. When it was time for a phone upgrade, the iPhone– something I’d previously derided for its lack of a physical keyboard– was the default choice. I could buy an app on one device and use it on all my iOS devices for no extra charge. Plus, while my wife wasn’t interested in poking around on a half-size screen with a stylus, the iPhone’s consumer-friendly experience and polished media player which integrated with iTunes on her Mac Mini was enticing.

And the dominoes kept falling. iTunes was managing our media with our iOS devices and feeding the Apple TVs and Airport Expresses we’ve acquired, but that old Mac Mini couldn’t run the newest OS with the latest iTunes, and it was a big pain to increase the memory in that model. So we upgraded. That clunker laptop needed replacing– with a sleek MacBook Pro (Retina, because I love all those sweet, sweet pixels). And we recently upgraded from the iPhone 4S to the 5S.

We keep pouring money into Apple’s coffers. And while each product is excellent in its own right, if a bit expensive, the integration is a big driver. Reminders, calendars, contacts, and media (oh, yeah, we have iTunes Match, too) sync across all of the devices. We can throw audio and video from our portable devices to speakers and TVs throughout our house. When we buy an iOS application, all of our mobile devices can use it. When we buy an OS X application (on the App Store), all of our OS X devices can use it. For those most part, “it just works”.

And that’s the kicker. While it’s possible to get most of that working with Android, Windows, and/or Linux devices it’s not as easy or seamless– at least as far as I understand. It can be fun, to an extent. I get it. I used to assemble my own computers. I was impressed when I met my wife back in college and she was swapping out a replacement motherboard Gateway had sent her. I remember messing with IRQs and DMAs. I used to use ANSI drivers to make my MS-DOS prompt pretty colors. I played the game of loading things into extended memory to preserve that precious “conventional” 640K.

But that was then. I have a job now. And I have a family. Time on my hands could be time spent with them. So I pay a little extra to grease the gears of technology.

SQL Saturday #238

I will be attending SQL Saturday #238 tomorrow– or rather, later today.

I am amazed at the quantity and quality of *free* training available for SQL Server in the form of blog posts, webinars, training videos, user group meetings, and SQL Saturdays (an entire day of free, seminar-style training provided by industry experts– often Microsoft MVPs or Microsoft Certified Masters).

I’m grateful to the community for putting these events together.