Vote

We don’t get political at MidnightDBA – it’s not part of what we do. We make IT videos and training. So, without taking sides, without getting political:

VOTE NOVEMBER 8

If you’re registered to vote in the U.S., please go vote on Tuesday, November 8. 

Thank you. 

https://www.usa.gov/voting
  

Fight harassment: be the “Backup” at PASS Summit

“Let’s say that for this particular conversation, a “creeper” is someone whose behavior towards someone else makes that other person uncomfortable at least and may possibly make them feel unsafe.” – John Scalzi

Harassment is a problem at some of the conferences we go to. And the organizers are working on solutions, which I applaud.

Several months back, I started wondering what we, as attendees and speakers and volunteers, can do to help. There should be a better way to ask others for help, if you’re being harassed.  There should be a better way to show that you understand harassment, and are willing to help out if someone needs it.

Then I ran into the Backup Ribbon project.

“You take a Backup Ribbon and attach it to your con/event badge… This is your way of saying that you will be willing to help anybody being harassed by somebody else at the event. You will not judge them, doubt them, or make them feel even more uncomfortable. You will NOT make exceptions for the person’s gender, orientation, or presentation. You will assist them in any way you can.” – Backup Ribbon Project FAQ

So: I’ve ordered some backup ribbons for the upcoming PASS Summit. (Note that this is a community-driven idea, and has no ties to the PASS Summit organizers nor the conference itself.)

Backup ribbon project

Summary of what follows:

  • Harassment happens at conferences.
  • That sucks.
  • It sure would be easier if you could have an insta-friend in a room of strangers.
  • We should all be available to be that insta-friend: “Backup!”.
  • Get your Backup! ribbon from Jen or Sean, or make one yourself.
  • If you’re harassed, ask someone for help.
  • “Cops, complaint, or company?” is a good place to start.
  • Stay safe. Only do what makes you comfortable.

Introducing: Backup Ribbon

The average, everyday conference attendee is often at the event on their own…especially if it’s an IT conference. Getting creeped on, or grabbed (or worse) is bad enough, without feeling that you’re alone.

So let’s make sure that people don’t feel alone.

A person being harassed wants to know who in the room they can ask for help (even though they could likely ask almost anyone). Friends who want to stand out as helpers can wear a Backup! ribbon on their badge.

Let’s make up a scenario:

Casey is attending the XYZ, Inc. after party at the annual spring conference. After avoiding a creepy fellow attendee (Riley) most of the evening, Casey is standing at the bar when suddenly there’s Riley, sliding a hand into inappropriate places. Casey ducks away fast and approaches a table of attendees. One of them is wearing a Backup! ribbon. “Hey. Can you help?”

The attendee with the ribbon speaks up. “I’m Lane. What do you need? How can I help?”  Casey thinks about this.

“I’m not sure. I just need to get away from a creeper…well, I mean, I just got grabbed. Groped.”

“Oh, no. I’m so sorry. Okay. Do you want company, complaint, or cops?” says Lane.

Casey laughs a little. “I think…well for now I want company. I’m not sure about anything else yet.”

“No problem, sit down with us!”

Maybe Casey will decide to lodge a complaint with the organizers. Maybe Casey decides to call in police and file a report. Maybe, if that’s what is most comfortable, Casey will just go back to the hotel and chill out. It’s all subjective: it’s all up to the person that got harassed, and it should be.

Options for the Harassed

When you’re harassed, you have options.  While there are of course more than three options, we’ll keep it simple for now:

  1. Cops: Do you want to call emergency services? (911 in the U.S.)
  2. Complaint: Do you want to report to the event organizers?
  3. Company: Do you just need to feel safe (with people) and/or get away?

I can’t tell you what’s right; there’s rarely an objective “right”. You decide what works best for you. But, a friend can help calm you down, give you “safety in numbers”, and offer to get you a cab, or a phone, or whatever.

“If you are being harassed, witness harassment, or have any other concerns, please contact a member of conference staff immediately. Conference staff can be identified by their “Headquarters” shirts and are trained to respond appropriately. To connect directly with the duty officer, you can call or text 206.965.5950. You can also file a report by one of the following…” –  PASS Summit Anti-Harassment policy

 

So, ask for Backup if you want it. “I need some help. That creeper over there won’t quit following me around.” You could ask anyone in the room, but your best bet may be someone with the Backup! ribbon…they’ve at least thought about this scenario.

This is important: Above all, do what you’re most comfortable with. If you’re not sure what you want to do, take some time (once you feel safe) to calm down and think it over.

Being a Backup!

Want to help? Come and get a ribbon from me – Jen McCown – or from Sean McCown. One of us will be in the expo hall, but we’re also very easy to find on Twitter.

Alternately, get yourself a name badge and write “Backup!” on it. It’s not perfect – my original idea was a symbol, like a square, that one could draw on your hand. But the ribbon works.

“Maybe you can just sit with the person while somebody else goes to get help. Maybe you can just be a mindful listener. Maybe you can find a way to distract the harasser from their intended target, or provide the person being harassed a non-confrontational way to get out of the situation.

“The point is that *anybody* can do this. Really. You don’t have to be built like the Incredible Hulk or have awesome Jet Li kung-fu moves. In fact, sometimes the more unassuming you seem, the easier it can be for you to help out.” – Backup Ribbon Project FAQ

If someone approaches you for help, bear a few things in mind:

  1. Do you feel unsafe? Get safe! I’m talking to you, Friend-with-the-ribbon. We do want to help targets of harassment, but this program is not meant to spread the danger around. You don’t have to personally escort someone to their hotel, or down a street, or anything like that. You don’t have to help the harassed confront their harasser (in fact, that’s a bad idea). If you feel unsafe, you feel free to call police or security. Rule #1: Stay safe!
  2. If you like, offer the three simple options: “Cops? Complaint? Company?” I think providing a starting place, with a few options, is an excellent way to be supportive of your new friend-in-need.
  3. Don’t judge: Remember that the harassed person may feel very differently about their situation than you would. It’s not your job to try to force them to file a police report, or a complaint. It’s certainly not your job to downplay what happened. You’re volunteering to be their Backup, okay? Okay.

One more note: Your new friend is also pretty shaken up. I don’t recommend taking them to somewhere secluded, or doing anything that might make them uncomfortable. Err on the side of caution, friends.

Not Being a Creeper

When this discussion comes up, a handful of people inevitably ask, “Is it me? Am I a creeper?”

Folks, I don’t monitor your behavior at all times, so I likely can’t answer that. I encourage you to talk to close friends, of course, if you’re worried.

If you’re worried you might be perceived as a creeper, or that you have committed creepy behavior, check out this essay by John Scalzi: http://whatever.scalzi.com/2012/08/09/an-incomplete-guide-to-not-creeping/

To Recap

  • Harassment happens at conferences.
  • That sucks.
  • It sure would be easier if you could have an insta-friend in a room of strangers.
  • We should all be available to be that insta-friend: “Backup!”.
  • Get your Backup! ribbon, or make one yourself.
  • If you’re harassed, ask someone for help.
  • Cops, complaint, or company is a good place to start.

What the “Backup!” initiative is not

This program is not, well, it’s not quite a few things. Among other things:

  • This is not emergency services. This is a grassroots idea. If you have yourself an emergency, or you might have yourself an emergency, dial 911 (or the equivalent in your country).
  • This is not a team of white nights. “Backup!”s are ordinary conference citizens, without specialized training, background checks, or credentials. That’s why real emergencies need to go to 911 (/equivalent), and why you need to do what you’re comfortable with, above all.
  • This is not a blacklist. Blacklists are a bad, bad idea in general, for reasons of low accountability, unjust reputation ruination, mob mentality, legal ramification, and so on. We are not doing a blacklist.
  • This is not a directive. You’re the one in the situation, not me or anyone else. You all have to make decisions the best you can at the time. I just want there to be help available, if you want it, and if at all possible.
  • This is not a judgement. I have my own policies on these situations, and I’ll be happy to talk them over with you if you want. But exactly what you should do, how you should handle a certain situation? Nope, not part of this program. We want to provide support and awareness, not hand out What You Did Wrong cards.
  • This is not a networking initiative: Backup! isn’t a social circle. It’s not a networking opportunity. This is about providing urgent help on the spot. Understand that the target of the harassment may not want to keep in touch after things have calmed down, and that’s fine. You were a friend in need when they needed you, and that’s golden.

 

Bonus Reading

Want to understand more about harassment in general? Here is one excellent article by Captain Awkward (contains NSFW language and of course trigger warnings for harassy/sexual assault discussions).

And, I encourage absolutely everyone in the world to read The Gift of Fear, by Gavin DeBecker, a world class expert on danger and safety.

More:

 

Women and Men

Note that we’ve stayed as gender-neutral as possible through this article. Yes, most times when there’s harassment/creeping/assault, it’s a dude targeting a lady…but not always. A handful of men have stepped forward during recent discussions about anti-harassment to say that they had been the victim of harassment and assault at conferences. It’s not just a woman’s issue.

Reread our scenario above, knowing that Casey is a man and Riley is a woman. Read it again with reverse genders. Now same genders. It all happens, folks.

In short: Men should absolutely be able to participate in Backup!

Update: Printable flyer. Download DOCX. Download PDF.

Step by Step: WHERE, GROUP BY, and HAVING

People new to SQL often have trouble with the difference between WHERE, GROUP BY, and HAVING…three separate clauses in the SELECT statement. The summary of each of these is simple to tell:

  • WHERE lets you limit the rows returned.
  • GROUP BY lets you perform aggregations (like count, sum, average, minimum, and maximum).
  • HAVING lets you limit the rows returned, based on aggregated values.

But that doesn’t really sink in well, so we’ll walk through some examples.  We have a simple table (“Livestock”) that tracks livestock on different farms:

Farm AnimalType AnimalName AnimalWeightLbs
The Rocking J Sheep Andrew 165
The Rocking J Sheep Bailey 180
The Rocking J Sheep Caroline 122
The Rocking J Cow Huberta 1620
Lazy River Sheep Murray 194
Lazy River Cow Zeke 1704
Lazy River Goat Bill 52

We can get different things out of it by using WHERE, GROUP BY, and/or HAVING.

IMPORTANT: You can play along at home with this script; it has the table definition, data, and all of the examples below (plus a few). For that matter, if you can’t stand long blog posts, just grab the script and go. I don’t mind.

WHERE

To limit the data I pull back – i.e., to limit what rows I get back – I use WHERE.  Maybe I only want data from The Rocking J. I can do that with WHERE:

SELECT  Farm, AnimalType, AnimalName, AnimalWeightLbs
FROM    dbo.Livestock
WHERE   Farm = 'The Rocking J';

Result:

Farm AnimalType AnimalName AnimalWeightLbs
The Rocking J Sheep Andrew 165
The Rocking J Sheep Bailey 180
The Rocking J Sheep Caroline 122
The Rocking J Cow Huberta 1620

If I only want to see sheep, from all farms:

SELECT  Farm, AnimalType, AnimalName, AnimalWeightLbs
FROM    dbo.Livestock
WHERE  AnimalType = 'Sheep';

Result:

Farm AnimalType AnimalName AnimalWeightLbs
The Rocking J Sheep Andrew 165
The Rocking J Sheep Bailey 180
The Rocking J Sheep Caroline 122
Lazy River Sheep Murray 194

And if I only want to see data on sheep from The Rocking J:

SELECT  Farm, AnimalType, AnimalName, AnimalWeightLbs
FROM    dbo.Livestock
WHERE   Farm = 'The Rocking J'
        AND AnimalType = 'Sheep';

Result:

Farm AnimalType AnimalName AnimalWeightLbs
The Rocking J Sheep Andrew 165
The Rocking J Sheep Bailey 180
The Rocking J Sheep Caroline 122

 

Conclusion: WHERE lets you limit the rows returned.

GROUP BY

Group by is very different. It lets you divide your data up into groups. We can group our data and not bother to do any aggregations:

SELECT  Farm, AnimalType
FROM    dbo.Livestock
GROUP BY Farm, AnimalType;

All this does for us is to get a distinct list of Farms, and the animals that each farm happens to have:

Farm AnimalType
The Rocking J Sheep
The Rocking J Cow
Lazy River Sheep
Lazy River Cow
Lazy River Goat

(There are other ways to get this, too, but that’s not what we’re talking about right now. And this is a perfectly reasonable use for GROUP BY.)


 

But, what if we want a COUNT of each kind of animal at each farm? Same thing, but add in the built-in function COUNT():

SELECT  Farm, AnimalType, COUNT(*) AS AnimalCount
FROM    dbo.Livestock
GROUP BY Farm, AnimalType;

Result:

Farm AnimalType AnimalCount
The Rocking J Sheep 3
The Rocking J Cow 1
Lazy River Sheep 1
Lazy River Cow 1
Lazy River Goat 1

 

There! We were able to tell SQL, “I want to make groups, defined by the farm and animal type. And then I want a count of each group’s members.”


 

We could do any aggregation, or any bunch of aggregations, on this group. In addition to the count, let’s get the average weight, maximum weight, and minimum weight of the animals in each group:

SELECT  Farm, AnimalType, COUNT(*) AS AnimalCount
                , AVG(AnimalWeightLbs) AS AvgWeightLbs
                , MIN(AnimalWeightLbs) AS MinWeightLbs
                , MAX(AnimalWeightLbs) AS MaxWeightLbs
FROM    dbo.Livestock
GROUP BY Farm, AnimalType;

Results:

Farm AnimalType AnimalCount AvgWeightLbs MinWeightLbs MaxWeightLbs
The Rocking J Sheep 3 155 122 180
The Rocking J Cow 1 1620 1620 1620
Lazy River Sheep 1 194 194 194
Lazy River Cow 1 1704 1704 1704
Lazy River Goat 1 52 52 52

Side note: GROUP BY and WHERE

A quick example:

SELECT  Farm, AnimalType, COUNT(*) AS AnimalCount
                , AVG(AnimalWeightLbs) AS AvgWeightLbs
                , MIN(AnimalWeightLbs) AS MinWeightLbs
                , MAX(AnimalWeightLbs) AS MaxWeightLbs
FROM    dbo.Livestock
WHERE Farm = 'The Rocking J'
GROUP BY Farm, AnimalType;

Don’t get freaked out by GROUP BY and WHERE. Take it step by step: if you had to do this by hand, the simplest thing is to narrow down your data first (WHERE Farm = The Rocking J), and THEN divide the remaining data into groups (GROUP BY Farm, AnimalType).

The resultset from our query above:

Farm AnimalType AnimalCount AvgWeightLbs MinWeightLbs MaxWeightLbs
The Rocking J Cow 1 1620 1620 1620
The Rocking J Sheep 3 155 122 180

HAVING

“Having” works on aggregations.

A query to pull back data on animals that weigh less than 200# would use a WHERE clause: “WHERE AnimalWeightLbs < 200”.

But if I want to pull back data on groups with an average weight less than 200#, I can’t use WHERE, because WHERE won’t work on aggregates. I have to use GROUP BY and HAVING:

SELECT  Farm, AnimalType, COUNT(*) AS AnimalCount
                , AVG(AnimalWeightLbs) AS AvgWeightLbs
FROM    dbo.Livestock
GROUP BY Farm, AnimalType
HAVING AVG(AnimalWeightLbs) < 200;

Result:

Farm AnimalType AnimalCount AvgWeightLbs
The Rocking J Sheep 3 155
Lazy River Sheep 1 194
Lazy River Goat 1 52

Bonus and Conclusion

There are other things to know and play with, of course. (For example, you can GROUP BY and perform HAVING on columns that aren’t actually in your SELECT list.) But that’s info for another time.

So, like it says at the top:

  • WHERE lets you limit the rows returned.
  • GROUP BY lets you perform aggregations (like count, sum, average, minimum, and maximum).
  • HAVING lets you limit the rows returned, based on aggregated values.

I have a blog that expands on these topics – SELECT, Deconstructed – but we really need a targeted introduction here.

Remember to download the script with all the examples, and play with the code yourself. That’s the best way to learn!

Happy days,
Jen McCown
www.MidnightDBA.com/Jen

Practice!

Real news, real tech.