Let’s Get Ready to Summit!

Friends…the conference season is upon us (and could I have thought up a cheesier title for this post?!).   In less than two weeks the PASS Summit kicks off in Seattle and I am very much looking forward to a week of all things SQL Server. I will be in Seattle a full week, but it seems that’s never enough time to see everyone.  I’ll be posting here and on Twitter – with hopefully more pictures this year!  If you are not attending Summit, let me know if there’s something you want to hear about, or see, and I’ll see what I can do.  If you will be there and want to say hi or catch up, let me know! Even better, let me tell you where I know I will be to increase our chances of running into each other :)

Sunday, November 2

  • The MVP Summit kicks off in Bellevue, and most of my day will be spent absorbing as much as I can about what’s coming in SQL Server vNext.

Monday, November 3

  • Another day of MVP Summit…my eyes might be glazed over by the end of the day.

Tuesday, November 4

  • My pre-con with Jonathan kicks off at 8:30AM! If you haven’t signed up for a pre-con, there is still time… Jon and I are covering everything about Extended Events we can possibly can fit into one day: Everything You Never Wanted to Know About Extended Events. We finalized our slide deck last week when we were in Chicago teaching IEPTO2, and my only concern is whether we can get through all the material (maybe not?!). Whether you’ve been a devout user of Trace and Profiler for years, or have never used it in your life, this session will have everything you need to embrace Extended Events and be off and running in SQL 2012 and 2014. I am *so* looking forward to this day.  Oh, and check out the preview that Jon and I did with PASS…Jon’s answer to the first question still makes me laugh.
  • In the evening I plan to attend the Summit Welcome Reception – one of the best times to see A LOT of people and at least say hello.

Wednesday, November 5

  • I am kicking off the day with #sqlrun, organized by the best-roomate-ever, Jes Borland.
  • During Wednesday’s keynote, I will be sitting at the blogger’s table, live-blogging the event (any guesses on what vNext news the Microsoft team will share?).
  • After the keynote I plan to attend sessions throughout the day and will probably spend some time in the Community Zone.

Thursday, November 6

  • I will again be at the blogger’s table for Rimma Nehme’s keynote. I am looking forward to Rimma’s talk! I met her briefly before Dr. DeWitt’s keynote last year; she helped him put together that session and then surprised him by attending and lending her support.
  • I will be sitting at the blogger’s table during the WIT luncheon as well, and I love the slight change in format for this year. The past few years the luncheon has had a panel discussion so several individuals have the chance to share their stories, which I find fascinating and inspiring. However, I always struggle with an “action item” – what can I do to make a difference? Therefore, I’m extremely interested in hearing Kimberly Bryant talk about her non-profit, Black Girls CODE, and hopefully getting ideas for ways I can get more involved.
  • Thursday ends with my regular session which starts at 4:45PM: Five Execution Plan Patterns to Watch For. Thursday is a busy day. I think this is the first time I’ve had a session land in the application development track, which is cool. If you’re not sure where to start in a query plan, this is a session for you. I assume that attendees already know the basics of plans, and how to capture them, so we’ll just jump right into talking about the patterns I often see. As usual, I’ll have lots of demos :)

Friday, November 7

  • Sleep in. I’m kidding! I have nothing planned for Friday so I will be attending sessions, meeting people, and catching up with anyone I haven’t seen yet.

Saturday, November 8

  • Flying home…for once I don’t have a flight at o-dark-hundred and I get home in time to put my kids to bed before I unpack and tell my husband all about the week. Ok…let’s be honest, I’ll probably fall asleep with the kids as I’ll be so exhausted. But it will be worth it.

And just in case you’re wondering, here’s the Summit session schedule for the entire SQLskills team (unfortunately, some sessions overlap):


Pre-Con: Everything You Never Wanted to Know About Extended Events [Erin and Jonathan]
Pre-Con: Performance Troubleshooting Using Waits and Latches [Paul]


Dealing With Multipurpose Procs and PSP the Right Way! [Kimberly] 4:30PM – 5:45PM
Analyzing I/O Subsystem Performance [Glenn] 4:30PM – 5:45PM


Advanced Data Recovery Techniques [Paul] 1:30PM – 2:45PM
Solving Complex Problems With Extended Events [Jonathan] 1:30 – 2:45PM
Five Query Plan Patterns to Watch For [Erin] 4:45PM – 6:00PM


Going Asynchronous With Service Broker [Jonathan] 9:45AM – 11:00AM

I look forward to seeing good friends and meeting new ones in a couple weeks.  If we’ve chatted on Twitter or email and haven’t met in person (or if we haven’t chatted but you follow my blog!), let me know if you’ll be at Summit so we can connect.  Safe travels everyone, see you soon!

edit added October 22, 2014, 3:40PM EDT:

p.s. For those of you do attend Summit, two requests.  First, introduce yourself to people.  When you sit at breakfast or lunch, or when you find a seat in a session, take a second and say hello.  You never know who you might meet and what might develop.  Second, please thank the volunteers and the PASS staff for the time and effort they put in to create an amazing event.  It takes a lot of people to make the Summit run smoothly, and many of those people are volunteers, and a good number of them work behind the scenes and are not visible to most of the community.

What I Wish I Had Known Sooner…as a DBA

Mike Walsh posted 4 Attitudes I Wish I Had Earlier as a DBA, and tagged a few people to respond. Here goes…

  1. Surround yourself with people who are smarter than you. Interacting with colleagues who have had different experiences and know more about certain topics is the fastest way to grow, both personally and professionally. While it’s nice to be known as a person who can answer almost every question, where’s the challenge (and fun) in that?
  2. Take vacations, and don’t take your laptop with you. I have taken my laptop on way too many family trips. This doesn’t serve anyone. I’m not fully engaged in my time with my family, I don’t give my full attention to my customers because I’m stressing out about not spending time with my family, and my co-workers are just thinking, “What the heck?” If Jon or Glenn go on vacation, I am more than happy to fill in and do whatever is needed because they need that break. We all do. So stop worrying. You have earned this time. Leave the laptop at home.   Turn off your phone. Stop checking Facebook and Twitter. The world will still be there when you return.
  3. Take the time to mentor others. You didn’t get to this spot on your own, and that new DBA is never going to be able fill in for you when you’re on vacation and want to be completely disconnected (see above). You don’t just have to mentor one person, you can mentor many, in different ways and it doesn’t have to take a significant amount of time.  At my previous job, when I worked with anyone in Technical Support I would explain what we were doing, why, and talk them through the process.  This took maybe an extra 10 to 15 minutes.  If they asked questions, I knew immediately they wanted to learn more and I repeated that process every time I helped them going forward.  Eventually, they could troubleshoot basic database issues without me, freeing up my time.  At a leadership course I attended the facilitator said, “You should always be trying to work yourself out of your current position.” That means you’re teaching someone how to take over yours.
  4. Save every script you write. I love writing T-SQL. Sometimes I think I should have been a developer. In the beginning, I didn’t save many scripts, so when a similar problem came up I had to start over. At first I didn’t mind, because I got to write some code and I’d try to remember how I did it last time and how to make it better. Then I didn’t have enough time, and writing that code became a bottleneck. Also: organize your scripts. Everyone has different methods, one of mine is to use the same first word to name scripts with a common task. For example, Check_Baselines.sql, Check_Backups.sql, Create_DB.sql, Create_RG.sql. Find a system, stick with it, start saving.

I’m not tagging anyone in this post by name, but if you’re thinking “I wish she had tagged me” then you’ve just been tagged.

Helping First Time Presenters

Nic Cain (@SirSQL) has a blog post that I highly recommend reading if you attend User Group meetings or SQLSaturdays: An Open Letter To SQLSaturday & User Group Organizers.  I think Nic tells a good story with a very relevant example of how a new speaker could have a negative first speaking experience.  And he has a great call to action for organizers and presenters.

I suggest that we raise that call to action to include veteran speakers.  For example…my local user group is the Ohio North SQL Server User Group.  To anyone who is also a member of this group and wants present at a local meeting: let me know.  I am more than happy to help you get started, provide feedback, and be there for your first session.  Further, I’m attending SQLSaturday #304 in Indianapolis next month.  If you’re presenting there for the first time and want me to be there for your session, let me know!

This is an open offer, with no expiration, and I do hope that someone takes me up on my offer.  And I would be remiss if I did not mention the following individuals who were there for my some of my first sessions and supported me:

  • Allen White (@SQLRunr) – my first session was at our user group in December 2010, and Allen stood in the back the entire time, in my line of sight in case I needed him
  • Mike Walsh (@mike_walsh) – with whom I co-presented at my first SQLSaturday in Feburary 2011, something I would recommend new speakers consider (it’s not a great fit for everyone, but I enjoyed presenting with Mike)
  • Kendra Little (@kendra_little) – who sat in on my first solo session at that SQLSaturday in 2011, and laughed at my jokes :)
  • Rob Farley (@rob_farley) – even though Rob fell asleep during my first solo Summit session (Friday afternoon, end of the week, jet lag, and too many late nights, etc. :), he provided feedback I still remember to this day
  • Ted Krueger (@onpnt) – he helped me fine tune one of my favorite sessions (during a speaker dinner no less…I still owe Jes for that) and then sat through it and helped fill in some gaps when I needed help

To those of you that have been speaking for a while, I encourage you to seek out potential speakers – whether it’s in the community or at your office – and offer your help.  And for new speakers, please do not be afraid to ask for guidance.  Everyone starts at the beginning, with the same pile of nerves and fears about what could happen.  There are so many people who are willing to help make the process easier – seek them out, and have fun!


PASS 2014 Nomination Committee

Late last Friday afternoon PASS announced the results of the 2014 Nomination Committee election, and thanks to many of you, I was selected for the committee.  I appreciate all of the PASS members that voted (539 people this time), whether the vote was for me or not.  Every active PASS member with an updated profile can vote in elections, and I do believe it’s important to cast your vote each and every time.  It’s one opportunity to help direct the path of the organization.

I am fortunate to now have this opportunity to help shape “how things work” within PASS.  We have our first NomCom meeting this week, and I’m looking forward to getting plans in place for the summer and preparing for candidate application reviews and interviews…and of course, the process.  There is a significant portion of the election process that we will review, and I expect passionate discussion from my fellow committee members.

I will share relevant NomCom information on my blog as I can.  For those of you thinking about running, I recommend reviewing the Board of Elections Timeline, and note that the call for applications opens on August 6th (just 56 days away, in case that’s the way your brain works :) ).  If you’re thinking about running, I’d encourage you to do the following:

  • Start talking to current and past Board members.  Get an idea of what the job requires, not just in terms of time, but in terms of what they really do.  Does it match your expectations?  Is that where you want to invest your time within PASS?  Can you make the time commitment?
  • Start reading up how PASS works, as an organization.  Get familiar with the website, read the latest Board meeting minutes.
  • Talk to other members of the community about your interest, seek out individuals who would support you and ask if they would write a recommendation on your behalf.
  • Be prepared to explain why you’re running for the Board, you’ll get asked many times, many different ways.

Thanks again to all who voted!




PASS 2014 Nomination Committee Campaign Information

Hello PASS members! This post is the landing page for information related to my campaign for the PASS 2014 Nomination Committee and has a fair bit of information, so thanks in advance for reading!

If you haven’t reviewed my application, submitted to PASS, and my reasons for running, please visit my PASS Nomination Committee page.  On that page you can read a bit more about me, and also download my application.  To see the other candidates, please check out the main NomCom page.

My PASS application has information about why I’m running and my experience.  But just in case you haven’t read that, the quick summary is:  I was on the 2013 Nomination Committee and am running again this year because there are tasks we started as a committee last year that I feel I should help finish, and because I believe my experience as a committee member last year will provide valuable insight during candidate review.  I greatly value the opportunity to represent the PASS community and would be honored to help select the slate for this year’s Board of Director nominees.

If you want to review my NomCom-related posts from last year, I’ve provided the links below:

PASS Board of Directors Applications

Thoughts on the Nomination Committee and PASS Board of Elections

As I write additional posts this week, I will add those links below.

Finally, the PASS site is hosting a discussion page for the Nomination Committee elections here.  Please feel free to ask questions there, or in the comments below.  You can also contact me directly via email or say hi on Twitter.  I look forward to hearing from you, and please don’t forget to vote on June 3rd, 4th, 5th, or 6th!


Further Testing with Automatic Updates to Statistics

A new question on an older post, Understanding When Statistics Will Automatically Update, came in this week.  If you look in the comments, you see that Rajendra asks:

…I want know, whether schema change of a table (adding new / (deleting an existing) column) also qualifies for UPDATE STATS?

It’s an interesting question that I’d never considered before.  I had an instinct about the answer, but the scientist in me wanted to test and prove it, so here we go.  The scenario and code are similar to my original post, so this should be a quick read for many of you :)

The Setup

Start with a copy of the AdventureWorks2012 database, which you can download from CodePlex, on a 2012 SP1 instance, and confirm that the Auto Update Statistics option is enabled:

IF (SELECT COUNT(*) FROM [sys].[databases] WHERE [name] = 'AdventureWorks2012' AND [is_auto_create_stats_on] = 0) = 0

Create a copy of the Sales.SalesOrderDemo table for our testing, and add the clustered index and one nonclustered index:

USE [AdventureWorks2012];

INTO [Sales].[TestSalesOrderDetail]
FROM [Sales].[SalesOrderDetail];

CREATE CLUSTERED INDEX [PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID] ON [Sales].[TestSalesOrderDetail] ([SalesOrderID], [SalesOrderDetailID]);

CREATE NONCLUSTERED INDEX [IX_TestSalesOrderDetail_ProductID] ON [Sales].[TestSalesOrderDetail] ([ProductID]);

Validate the current statistics and modifications; the statistics should be current since we just created the indexes, and modifications should be 0 since we haven’t run any inserts, updates, or deletes:

Note: I refer to this query throughout the post as "the sys.stats query", rather than including it multiple times!
OBJECT_NAME([sp].[object_id]) AS "Table",
[sp].[stats_id] AS "Statistic ID",
[s].[name] AS "Statistic",
[sp].[last_updated] AS "Last Updated",
[sp].[modification_counter] AS "Modifications"
FROM [sys].[stats] AS [s]
OUTER APPLY sys.dm_db_stats_properties ([s].[object_id],[s].[stats_id]) AS [sp]
WHERE [s].[object_id] = OBJECT_ID(N'Sales.TestSalesOrderDetail');
Current statistics and no modifications

Current statistics and no modifications

Excellent, we’re starting with a clean slate.

The Test

Let’s first add a little bit of data (1000 rows), to up our modification count:

BULK INSERT [AdventureWorks2012].[Sales].[TestSalesOrderDetail]
FROM 'S:\SQLStuff\Dropbox\Statistics\Data\sod_1000.txt'
DATAFILETYPE = 'native',

When we run our sys.stats query again, we see the 1000 modifications for both indexes, because both indexes had rows added:

Statistics and modifications after adding 1000 rows

Statistics and modifications after adding 1000 rows

Great.  Now add a new column to the table…let’s pretend that we have a new ProductID, but we want to keep the existing one for historical reasons, so our new column is, creatively, NewProductID:

ALTER TABLE [Sales].[TestSalesOrderDetail] ADD [NewProductID] INT;

Did adding this column cause statistics to update?  This was our main question, and if we run our sys.stats query we see:

Statistics and modifications after adding new column

Statistics and modifications after adding new column

Nothing changed…  Adding a new column to the table does not invoke an automatic update to statistics.  Nor should it.  We haven’t modified data in any existing statistics.  We would certainly expect a change in query plans, for existing queries that are modified to use this new column, but adding a new column to a table does not cause any existing statistics for the table to update.

More Testing (because it’s good practice to keep proving out what we expect)

Just for fun, let’s see what happens if we modify some more data:

UPDATE Sales.TestSalesOrderDetail SET ProductID = 717 WHERE SalesOrderID = 75123;

If we check sys.stats, we see that our nonclustered index, IX_TestSalesOrderDetail_ProductID, has three more modifications than it had previously, but not enough data has changed overall for statistics to be invalidated.

Statisitics and modifications after updating 3 ProductIDs

Statisitics and modifications after updating 3 ProductIDs

What happens if we update NewProductID?

UPDATE [Sales].[TestSalesOrderDetail]
SET [NewProductID] = [ProductID] + 1000;

Well, we updated 122317 rows, but only the NewProductID column, which isn’t part of either the clustered index or nonclustered index key.  Therefore, no update to statistics:

Statistics and modifications after updating NewProductID

Statistics and modifications after updating NewProductID

To prove this out further, create a nonclustered index on NewProductID:

CREATE NONCLUSTERED INDEX [NCI_TestSalesOrderDetail_NewProductID] ON [Sales].[TestSalesOrderDetail] ([NewProductID]);

And if we verify the statistics and modifications, we see that our new NCI has zero modifications, as expected.

Statistics and updates after adding the nonclustered index on NewProductID

Statistics and updates after adding the nonclustered index on NewProductID

We’ll make another massive update to NewProductID, because the first update wasn’t correct, and then check sys.stats again:

UPDATE [Sales].[TestSalesOrderDetail]
SET [NewProductID] = [ProductID] + 10000;
Statistics and modifications after updating NewProductID a second time

Statistics and modifications after updating NewProductID a second time

Now we see the modifications – all 122317 of them.  If we query the NewProductID column now, we should invoke an automatic update to statistics, because they are invalid:

SELECT NewProductID, SalesOrderID
FROM [Sales].[TestSalesOrderDetail]
WHERE NewProductID = 10718;
Statistics and modifications after an auto update was invoked

Statistics and modifications after an auto update was invoked

And there you have it.  Adding a column to a table will not cause an automatic update to statistics to occur.  Automatic updates occur only when the threshold for modifications has been exceeded for a statistics key.

clean up code
USE [AdventureWorks2012];
DROP TABLE [Sales].[TestSalesOrderDetail];

SQLSaturday Cleveland – Just Around the Corner

It seems like this winter is dragging along, especially if you live anywhere where it snows, as I do here in Cleveland.  But at the same, I cannot believe that our SQLSaturday event is less than two weeks away!  If you live within a couple hours of Cleveland, I strongly recommend that you check out our event, which is on Saturday, February 8, 2014 in Westlake, OH.  You can find the schedule here, but let me list a few highlights for you:

  • 42 sessions
  • 38 different speakers
  • 18 sponsors and counting
  • 13 SQL Server MVPs
  • 4 SQL Server MCMs
  • 2 Microsoft PFEs

We have an amazing line-up of speakers and I am so thrilled with the content our event will provide to our local SQL Server community.  We have speakers coming from all over the US – Washington, Colorado, Minnesota, Georgia, and Massachusetts – to name just a few states from which colleagues will be traveling.    Thank you to our speakers that will brave the cold, snow, and wind to come to Cleveland (I’m hoping for a heat wave where we get above freezing, but let’s be honest, Mother Nature hasn’t been very kind this year).

In addition to our fantastic day-of sessions, we also have two pre-cons for which you can still register!  Argenis Fernandez will be hosting A Day of SQL Server Internals and Data Recovery, and Allen White will present Automate and Manage SQL Server with PowerShell.  Registration details can be found on our main SQLSaturday page, and the cost for these pre-cons is a great deal.  Both speakers have been selected for pre-cons at the PASS Summit previously, and the rate for those events is much higher.  Don’t miss this opportunity!

If you have any questions about our SQLSaturday, please don’t hesitate to contact us.  We hope to see you next Saturday, February 8th, and until then, stay warm!

Statistics Starters Presentation: Scripts, the Database, and Some Answers

This past Tuesday I presented “Statistics Starters” for the PASS DBA Fundamentals Virtual Chapter.  You can read the abstract here, and as you may have guessed from the title, it was a 200 level session on statistics appropriate for anyone who knew of statistics in SQL Server, but wasn’t exactly sure how they were created, how they were updated, how to view them, etc.  Over 300 people attended (thank you!) and I had some great questions.  I plan to answer the questions in a series of posts, starting with this one.

Question: Can we get a copy of the scripts in your demo?  And where can we get a copy of the database you used?

Answer: The scripts, slide deck, and database can be downloaded from the SQLskills demos and databases resource page.  The database I used for these demos, which I plan to continue to use for presentations, is the Lahman baseball database.  While the AdventureWorks database is well known and widely-used, I admit that I have a hard time thinking of good Sales and Product examples in my demos.  I know baseball a lot better than I know sales :)

Question: Are we able to rollback newly created statistics if the plans created after an update are bad?

Answer: (edited 2014-01-23 2:45 pm) Great question.  The answer is no kind of.  This is one feature that exists in Oracle that I would be interested in seeing in SQL Server.  Oracle provides the ability to save and restore statistics.  You can even export statistics from one database and import them into another.  Pretty cool…potentially dangerous, but still cool; however, it is not possible to restore statistics in SQL Server if you save out the stat stream first, and then update the statistic with the stream.  Thanks to my colleague Bob Beauchemin (b) for pointing out how it can be done (I learn something new every day).  Johan Bijnens also messaged me to point out that you can script out statistics – which I always forget.  The next step is to update statistics with stats_stream that you script out.  Take note: it is a hack.  Thomas Kejser blogged the steps here, and he has a fantastic disclaimer at the beginning because the method described is unsupported.  Before I write any more about the “feature”, I’m going to do a little testing and hacking of my own.  More to come!

Question: Why should I use the UPDATE STATISTICS command…isn’t sp_updatestats always the best option?

Answer: See my post Understanding What sp_updatestats Really Updates to see why I don’t recommend using sp_updatestats.

Question: Is it good to update statistics after rebuilding an index?

Answer: This is not recommended.  Remember that rebuilding an index updates statistics with a full scan – if you run a command to update statistics after a rebuild, you are wasting resources and the statistics may update with a smaller sample.   This is sometimes not ideal, because depending on the sample, it can provide less accurate information to the optimizer (not always, but it’s possible).

Question: Is it good practice to update statistics if I reorganize the index?

Answer: In general, yes, because reorganizing an index does not update statistics.  I recommend that you pro-actively manage your statistics, and not rely solely on automatic updates (assuming you have the AUTO UPDATE STATISTICS option enabled for your database).  If you are only reorganizing your indexes, make sure that you have another step or job that does update statistics.  If you either rebuild or reorg (or do nothing) based on the level of fragmentation, then you need to make sure you manage statistics accordingly (e.g., don’t update if a rebuild has occurred, do update if you’ve reorganized).

I’ll answer a few more questions in my next post, thanks for reading!

Refer a Friend, Get a Gift Card!

Yesterday I made this video:

Cold, snow, and wind in CLE

Notice at the end I mention Tampa and IE0IE0 is our Immersion Event for Accidental DBAs and it’s a newer course that Jonathan and I teach.

Not an Accidental DBA?  Doesn’t matter, please keep reading :)

If you refer a friend or colleague for IE0 or IEHW – that’s Glenn’s two-day hardware classYOU get a $50 Amazon gift card!

See, I would bet that the Accidental DBA/Involuntary DBA/Junior DBA/person-who’s-managing-the-SQL-Server-instance-but-isn’t-quite-sure-what-they’re-doing does not read my blog.  They may not know about SQLskills, they might not even know who Paul and Kimberly are (it does happen…NO ONE in my extended family has ever heard of them, can you believe it?).

But you know that person needs training.  And we can help.

So reach out to a fellow member of your user group, a colleague at work, or someone you know is new to SQL Server, and let them know the Accidental DBA training that we provide.  You can send them this link to learn more about our training and Immersion Events, and if they sign up for IE0, they can learn how to keep their SQL Server up and running, and you can buy something you probably don’t need but really want (and you won’t have to share it because we won’t tell anyone you got a gift card).

And…in case you’ve been eying an IE course…today (January 3) is the last day for discounted pricing for Tampa classes!  Book now, or book for one our May events in Chicago.

We hope to see you, and a friend, in 2014!

An Early Present

It’s Friday. December 20…the last day of the school year for my kids and we wake up to no power, rain, and 40 degree temps. On the way to school my 6-year old daughter threw up in the car. Huh…one of those days.

But you know what’s great about today? Voting for the first annual Tribal Awards opens. Not sure what those are? Check out one of these posts at SQLServerCentral or Simple-Talk. Why am I mentioning it? (And why am I asking so many questions this morning?!) Well, I was nominated for something…which is really, really cool. I consider it a huge compliment to have individuals who attended my Extended Events session at the PASS Summit nominate it for best presentation, and it’s even more humbling when you see the other speakers on the ballot. I did not see everyone else’s session (except Dr. DeWitt’s, which I live-blogged), but I know Rob Farley, Steve Jones, and Neil Hambly to be great speakers with deep technical knowledge. I find myself in good company, and I am honored. And I have Rob to thank for helping me make my presentation better. The day before my session at Summit, I spent about an hour with Rob talking through it, asking for his feedback and insight. Thank you, Rob!

Finally, I’d like to give a shout out to my SQLskills team members for their nominations. Glenn, Kimberly, and I each have one, and Paul and Jonathan each have three. I am so incredibly proud of our team and everything that we’ve accomplished this year.

Congratulations to all nominees in all categories, and if you want to vote, you can use this link. And in case I don’t post again before the end of the year, I hope you all have a wonderful holiday. Thanks for reading, and here’s to an amazing 2014!