What a day, what a day!! Andy Warren (Blog/Twitter), Jack Corbett(Blog/Twitter), and a team of volunteers put on an excellent event today. While this may only be a one day event, a lot of work is done behind the scenes, arranging an excellent facility at Seminole Community College, lining up sponsors for the event, marketing the event, picking speakers and sessions, coordinating food, and the list goes on and on. To provide a quick recap of the day from my own perspective.
My day started at 5:30AM since I live in Tampa, FL and was driving to Orlando, FL for the event. This is roughly a two hour drive, making it a easy drive to make the day of the event. Check in for the event began at 8AM and the first sessions began promptly at 9AM. After picking up a coworker and stopping for breakfast on the way to the event I made it through checkin by 8:30AM so not bad timing wise.
First up was Andy Leonard (Blog/Twitter) and Database Design. Andy is one of those people that I interact with at least weekly online, but I have never actually met in person, that is until today. His session was geared towards non-database developers and how to do database design that focuses on generating re-executable scripts. Five minutes into his session a crowd of people entered that had apparently gone to the incorrect room before finding their way to the right one, making Andy's session standing room only. Andy gave out some great tips, and his demo's started with how we generally write scripts to create database objects, and why those scripts are not re-executable. Then he slowly showed how to build on those scripts to make them better, fault tolerant, and re-executable. I tweeted key points from his and other sessions that I attended today, but some key takeaways from his session were:
- Writing EXISTS checks in scripts facilitates Test Driven Development in SQL later.
- The Database is not an Application.
- Bad design won't scale. Heck even Access can handle 1000 rows. efficiently.
For those wanting to comment on that last one, you had to be there, and in context it made for a funny joke. Smaller datasets are more tolerant to bad design, and the bad design may not manifest itself until the database grows to 10GB or more. These aren't Andy's exact words, but it is the message being portrayed. A flat file (csv, tab delimited, almost any storage medium, etc), can be efficient at handling a small set of data. I really enjoyed Andy's session, and his method of teaching is both highly effective and highly entertaining. One example he offered from personal experience will without a doubt be the source of many laughs for a while to anyone who attended his session. Andy also did a great job fielding questions throughout the session, and survived for twenty-nine minutes before throwing out the "It Depends" response. If you get the chance to see Andy speak I'd highly recommend that you attend his session.
Following Andy was Joe Webb(Blog/Twitter), whose afternoon session was moved up to the morning when another speaker was unable to show. This really worked out great for Joe since he had to catch a flight back to Nashville after the originally scheduled time. Joe's session was on Locking and Blocking and I have to say that Joe's slide decks make an amazing first impression. I personally am horrible at creating Powerpoint slide decks, its not a talent that I have dedicated enough time to, and my slide decks don't begin to stand up to most speakers. Joe's slide deck is very clean, easy to see from the back of the room, and has excellent graphics incorporated in the presentation. Joe did an excellent job covering Locking and Blocking in SQL Server and some key takeaways from his session were:
- ACID is not about Woodstock or the 70's
- Update locks allow shared locks for reading until converted to Exclusive
- The lock hints used in his presentation code are not for general use in production code.
- Using NOLOCK to solve blocking problems in an OLTP is a duct tape solution.
The third point above stood out to me the most. Joe did an excellent job of reiterating each time he used a lock hint to force a locking scenario for demonstration purposes that they shouldn't be used in normal coding practices. This, to me, is responsible presenting and something I am going to make a concerted effort to mimic when I am presenting code examples that use hints or abnormal coding practices. I actually made it a point to explain why SELECT * (I know, I've read Aaron's Bad Habits post, but there is a method to the madness of its usage in this case) should be avoided in general coding, and why it was being used in my demonstration code for the Auditing session.
Like Andy, Joe is a very entertaining presenter, and mixes humor in with his session materials, while also encouraging questions and interaction from the audience. On more than one occasion during his session, questions from the audience occurred at the perfect moment to allow Joe to transition to his next slide. Joe is a avid twitter user and had followed my tweets from Andy Leonard's session and had a humorous moment following a question where he tried to answer it without saying "It Depends" in the hopes to outlast Andy's twenty-nine minutes. I pointed out at that point that he was already thirty-seven minutes into his session and he promptly answered the question with "It Depends."
Following Joe's session I was presenting my own first session of the day, Auditing User Activity 101, which was, at least from the comment cards, well received by the audience. Andy Leonard attended this session and offered some constructive criticism after the session, which was much appreciated. I did a few things different with my sessions for this SQL Saturday than I have ever done previously. First since both of my sessions were fairly DBA-centric, I made it a point to cover SQL Server 2000, 2005, and 2008 for both of them. I chose to do this based on the amount of SQL Server 2000 questions continuing to be asked on the forums as well as in our user group meetings and during discussions with people about SQL Server. At one point Buck Woody(Blog/Twitter) came into the session and it happened to be at a point in time when SQL Server 2005 was on the screen which Buck asked why I was presenting using SQL Server 2005 in passing later. I also made an attempt at recording my sessions using Camtasia while I was presenting. I have not had a chance to review the quality of the recordings but plan to look at them tomorrow.
After my Auditing Session was lunch and I got to make some hallway talk with Buck Woody(Blog/Twitter), Kevin Kline(Blog/Twitter), Rodney Landrum (Blog), Eric Wisdal, and number of other people attending the conference. Proving just how small of a world it is, I ran into my Team Lead from AT&T Wireless when I worked in the Wireless Activation Center in Orlando while attending my first year of college at the University of Central Florida. It took a few seconds for me to recognize the face and then a few more seconds for the name on the name tag to actually click with the facial recognition. It's been over 10 years since I worked at that job, but it was my first non-fast food job and actually set me up for my start in IT later one. I pulled up a piece of sidewalk with Joe Webb and Andy Leonard to enjoy my turkey sandwich and ended up in long a ad-hoc conversation with Ken Simmons(Blog/Twitter), Buck Woody(Blog/Twitter), and Jorge Segarra (Blog/Twitter) joining in, which meant I missed Kevin Kline's session on End to End Troubleshooting. These sidewalk/sidetalk moments are what make attending events so rewarding though.
Following our sidewalk talk, I got a few minutes to meet the ever famous Joe Celko(Blog) in person and ask a few questions and learn about Minimal Perfect Hashing, something I had never heard of before, and a topic that seems to be well over my head, despite Joe's efforts to explain it. I think that there are a few prerequisites that I am lacking to actually understanding what he was talking about, but I plan to do some research on the subject.
I finished talking with Celko, just in time for Andy Warren's session on Social and Not So Social Networking for the DBA. Andy had some technical difficulties with the projector connection to his laptop I guess, but he basically did his entire session sans Powerpoint, shooting from the hip. I have to say that I was very impressed with his level of effectiveness and ability to guide the discussion without his slides being visible up on the screen. Some key take aways from his session were:
- Don't try to go to far on the first date when networking. Let your first meeting serve as the foundation for future networking growth.
- There are 2 types of networkers, tight (Very Controlling of who joins their network), and wide (Lets anyone and everyone join their network)
- Who is in your network says something about you.
Personally, I consider my self to be pretty good at networking, but it is not intentional networking in most cases. I usually end up networking just because it happens in most cases. I tend to be pretty social and that helps some, but I really don't see myself as an extrovert, despite what Meyers Briggs says about me. Andy pointed out that while most people have a professional development plan, they don't have a network development plan for growing their network or maintaining it. This is obviously an important subject to Andy and his passion really shows when he talks about it.
Being that I was presenting immediately after Andy's session, I left a few minutes early and missed the actual end of his session, but I am certain that his wrap up was just as good as the rest of the session. My last session of the day was on wait statistics in SQL Server, a subject that I really think deserves more focus by DBA's than it actually gets. Unfortunately I had a blue screen occur somewhere between my sessions and I had to start my laptop up from scratch which delayed my session a few minutes, but it also resulted in me losing some changes I had made Saturday morning to my slide deck so I had two slides that weren't quite what I wanted them to be. It worked out in the end though and the session seemed to hold peoples interests. I ended up running past my time by about 10 minutes, but since it was the last session of the day this didn't affect any other speakers, it just delayed those in attendance from getting to the raffles at the end of the day.
All in all it was fun day. I unfortunately returned home to a burned out FIOS router and have not had internet access, so I didn't get to upload my session powerpoint or my code examples yet, but I will take care of that here shortly.