Since I’m leaving Quest Software to join SQLskills, I’ve gotten a few questions about how I’m handling content ownership. Since Quest was paying me to blog, tweet, and present, who really owns my content?
I think of myself as a developer, but instead of writing code, I wrote content. Companies hire programmers all the time, and intellectual property handling is pretty straightforward. Here’s how it works:
When a company pays a developer to write code privately, that ownership stays with the company – but it’s because the company’s usually using the code in internal software. They sell the developer’s code to other clients. Quest paid me to produce content – product ideas, documentation, plans, and marketing materials. That content has always been owned by Quest, and I was completely comfortable producing that because they paid me for it.
In terms of “private” public content, I wrote blog posts at QuestKB like What It’s Like to Work For a Vendor. Quest clearly owns that post, and if they wanted to, they could change the blog post author to be somebody else – either a real person’s name, or a generic “Administrator” style account. I would be completely okay with either of those, because they own the content, and it’s important as a blogger not to get too tied up in where your name goes. Think about ghost writers – people who write for celebrities. Ghost writers get paid (sometimes fairly, sometimes not) for their productions. It’s up to the ghost writer to do a good job of negotiating payment and rights. I didn’t negotiate anything like that with Quest because I was getting paid a very fair salary for the work I was doing.
Quest then has to make an interesting decision – do they leave my name on the content? If I’m living my life right, then they’d be proud to keep my name attached to it. If I’m living my life wrong, then they’d want to rip my name off as fast as possible. There’s another possibility – if someone at the company harbors a grudge against me, they might also want to rip my name off, but I can’t do anything about personalities like that, so I don’t lose sleep over it. The best I can do is to live my life in a way that makes people say, “Damn, we wanna have a piece of that.”
When a company pays a developer to write code for a community project, the code is owned by the community (think GPL or Creative Commons projects). Companies sponsor open source work all the time, but that doesn’t buy ownership of the code. Quest paid me to give presentations at community events like PASS, SQLBits, and local user groups. Those presentations are scattered around my blog, SQLServerPedia, and SlideShare.
This is a little bit of a gray area, but I like to err on the side of caution. I wouldn’t charge someone for content that I created while I worked at Quest. I would feel comfortable re-giving presentations at user groups if I’d already given those presentations at user groups. Furthermore, if a Quest employee wanted to give one of my presentations at a user group (or even at a paid event), I’d be completely comfortable with that too. In my mind, Quest has the rights to any presentation I gave while I worked for Quest, just like they can rebadge my blog posts on QuestKB.
When a developer does their own thing, the company usually owns that too. Companies ask their new hires to sign all kinds of documentation, and buried in the fine print – and sometimes even in the big print – the company asserts ownership of whatever you do on company time. This is especially important for software development companies.
Clearly, Quest doesn’t own BrentOzar.com – I produced it long before I went to work for Quest, and we didn’t have any kind of contract asserting their ownership over the domain. But what about the content I produced during the time I worked for them? What if Quest copy/pasted parts of my blog posts and use them as part of a marketing campaign or a training course?
This is where code development and content development take different paths. If a company takes your code and makes it a part of a product, the public probably won’t know because the code is hidden away. If a company takes your words and makes it part of their marketing or course material, the public will figure things out pretty quickly. That would be a public relations disaster, because even if the company won in court, they’d lose in the public market, especially when a blogger is involved.
I don’t think Quest would ever do something like that, and that’s why I went to work for them in the first place. I knew my managers and coworkers before I stepped foot in the door, and I knew how they treated content creators. Everything we’ve done along the way at SQLServerPedia is evidence of that – we’ve bent over backwards to do the right things for bloggers and writers.
However, you may not be so lucky. If you hit the Job Lotto like Tom LaRock and go to work blogging, presenting, and tweeting for a company, you need to ask:
- Who owns the rights to the content I create?
- What happens to the content after I leave?
- Can I use the content to build other things? (Think books and training materials)
- Do I get paid if the company builds something with my content now? What about after I leave?
When I talked to Paul and Kimberly about joining SQLskills, I asked these same kinds of questions. In the last year or so, my job at Quest has focused more on building the community than on building the content, but starting on July 12th, I’ll be spending more time building content again. What happens with the deeply technical content I’ll be creating? Paul and Kimberly understand those concerns because they pour a ton of effort into building top-notch content, so it was an easy conversation.
On the other hand, if you blaze a trail at a company by being one of their first evangelists, the conversations may not be so easy. You want to get those answers in writing earlier – rather than later – even if they’re in a casual form like an email. In the beginning, nobody thinks this content will be worth much. It doesn’t exist yet, and they probably don’t see a staggering amount of value in what you’re about to build. That’s precisely when you’re in the best position for negotiation. Ideally, you syndicate your blog, and the original content stays on your own domain.
Companies won’t always settle for syndication, and sometimes it isn’t even in your own best interest to take the syndication approach. For example, at SQLskills, I’ll be blogging my deeply technical material on SQLskills itself – not syndicating it. This would seem counter-intuitive to my recent post Why Syndication Rocks, but it’s all part of a negotiation process. I gain something when I write an in-depth technical post, put it on SQLskills.com, and say, “I made that. My stuff is right next to Paul and Kimberly’s.” It says my stuff is high quality and can stand with the best SQL Server minds out there.
There’s a risk for me, though – if Paul and Kimberly decided to pack it all in and sell SQLskills to spend all their time petting grouper, an evil company could take over. If I wanted to bail, I would have to understand that they could rip my name off the content or take my posts down forever, and all my hard work would be gone. This means I have to get value out of it AS I’m publishing it, and not think I’m building some permanent empire on somebody else’s web site. I can’t just fold up BrentOzar.com and call it a day – I have to continue to build awareness in as many places as possible.
As a blogger, you can build broad, permanent awareness by:
- Writing guest posts at other sites (read the book ProBlogger to learn more)
- Linking your posts together (pointing from one site to another, so everyone knows when you publish new stuff somewhere else)
- Presenting on vendor webcasts (because the vendors promote you to their email lists)
- Being a guest on podcasts
Webcasts and podcasts can be cool because they spread your investment around, and they get more people to promote your content. They’re long-term investments – they don’t instantly make you famous, but as more people watch the replays over time, they can pay off in a steady trickle of new readers. Webcasts & podcasts also give me an easy answer to hard questions. When someone asks me a question about, say, planning for disaster recovery in an enterprise, I can often say, “Ah, yes, I did an hour-long webcast about the basics of disaster recovery planning. Go watch that, and let me know what questions you have.” The webcast – even though it’s hosted by someone else – is a reference I can always use. The company can’t simply change my name inside the webcast, and the company probably even likes it because I’m bringing them more viewers.
Speaking of which, I’m a guest on this week’s Virtumania podcast, “Hyper-V Dynamic Memory Is Not Overcommit.” Hosts Rich Brambley and Rick Vanover did another entertaining job of interviewing me and Microsoft’s Ben Armstrong and Adam Fazio about the virtualization announcements at TechEd. Ben talked about his TechEd session’s dynamic memory demos, which bombed while I was in the crowd watching, and I talked about how Ben’s session eval scores STILL smoked mine. Ben’s a solid presenter with cool technology, and I highly recommend checking out his demos if you get a chance. You can watch Ben’s TechEd session free, and listen to us talking about Hyper-V memory at Virtumania.
Wouldn’t it be cool if you could make statements like that on your blog? What’s holding you back? Podcasters are looking for guests, reporters are looking for stories, and vendors are looking for webcasts. Figure out what you’d like to talk about, and then offer to talk. You’d be amazed who’s willing to listen. Start building your content, and start getting it out there in a way that you control.
I love working with the community. Blogging, webcasting, and answering questions are a big part of who I am, and I wanted to be able to spend more time doing this stuff. For years, Paul Randal and Kimberly Tripp of SQLskills.com have demonstrated their commitment to helping educate SQL Server professionals everywhere. They share knowledge – not just basic knowledge, but truly advanced topics – on their blogs, at events, and on Twitter. I don’t know any other consulting firm so dedicated to helping the public.
I love helping businesses solve tough SQL Server problems. In my spare time, I’ve been doing performance tuning, health checks, and staff training for a growing number of clients. I didn’t want to start a consulting practice on my own because it’s so much work, and I’m lazy. Paul and Kim have set a high bar here too – SQLskills is a widely respected consulting and training company that provides the best services to some big clients.
I love training and mentoring SQL Server professionals. I keep working to refine my presentations to make the learning experience more enjoyable and more involving. When I attended the Microsoft Certified Master program, the first week of training on database internals and performance tuning was the highlight of the course. I had a great time in the class and I learned a ton. And of course, Paul and Kim led that training.
I hate losing. Last year at the PASS Summit Celebrity Quiz Bowl, Kevin Kline and I were in the lead, coming down the home stretch, when Kim and Paul came out of nowhere, got every question right in the last two categories, and stole our lunch money. I would have been really angry except that I was amazed Kevin and I scored any points at ALL when we were up against those two plus the team of Grant Fritchey and Joe Webb.
I want to do more of what I love, so I’m joining Paul and Kim at SQLskills. In the last couple of months, after I achieved the Microsoft Certified Master certification, my steady stream of small side jobs has turned into a torrent of tuning and training. I got to the point where I had to start letting things slide in my life, and I had to turn down some clients in order to have enough time for the people I love. I’ve had a great time at Quest Software and I’ll miss my coworkers dearly, but something had to give. I decided to go into consulting full time, but I didn’t want to do it on my own – I’m all about community. I wanted to join forces with people I respected, people I knew personally, people I enjoyed spending time with. Paul Randal and Kimberly Tripp are exactly those people.
And I know I keep beating this drum, but you should be used to it by now: get out, blog, present, get involved with the community, and invest in your career. Just three years ago, I went to the PASS Summit for the first time and I ate every meal alone. I saw the “insiders” in the community, and I wanted to become a part of it too. I took ownership of my career, invested time and money in myself, and didn’t rely on anyone else to pave the way for me.
And man, does it pay off. Today, I’m on top of the world.
You can learn more about the consulting, training, and upcoming events at SQLskills, and if you’ve got questions, feel free to contact us. Kim, Paul, and I are some of the most approachable people in the SQL Server business. We want to help you succeed, and we’re here for you!
I, for one, welcome my new Quiz Bowl overlords.
Update: you can read Paul’s announcement over at SQLskills, and ask him why on Earth he’d take a chance on this bozo.
At SQLServerPedia, we syndicate blogs to help people get more exposure, build their brand, and enhance their careers. The cool thing about syndication is that the original post stays on your site, and the discussion happens on your site. SQLServerPedia just gradually brings you more readers over time.
The other option is to join up with an existing site and put your original content there. Bigger sites might already have more readers, and you get a lot more exposure right away. If you take that rocket ship approach, make sure you understand who owns your content, your conversations, and your readers.
“However, as of very recently InfoWorld has pulled my access and cancelled my blog of several years because they didn’t think I was writing often enough….The blog may stay online for a little while, but there’ll be no more updates. I’m told by a fairly reliable source that the guy who killed it is likely to delete all the content.”
Ouch. Remember, bloggers, no matter how good the relationship is with your blogging site today, everything can change over time. The site can sell out, the staff can change, and your content can disappear. Your content is your resume. When you give someone else complete control over your content, make sure you’re getting enough in return.
Don’t put all of your eggs in one basket – especially when it’s somebody else’s basket.
About two years ago, I made the leap from working as a production DBA to working as a SQL Server expert for Quest Software. When I tell someone what I do for a living, they usually have the same reaction: “Wow, you’ve got a really cool job.” It has its ups and downs, but it definitely beats being a production DBA, and I never would have thought I’d end up in a job like this.
Recently Tom LaRock (Blog – @SQLRockstar) made the same jump. He left a database management position and went to work for Confio. I’m proud of Tom because ever since I’ve known him, I’ve told him that he’d be great for a job like mine. He liked doing presentations, blog posts, and helping the community – so why not work towards getting a full time job doing that stuff? He set goals for himself, worked hard at building the right relationships, and next thing you know, he’s livin’ the dream too.
But I know what you’re thinking – jobs like this happen to other people. They happen to people with deep industry connections, people who get elected to the PASS Board, people who know the secret handshake. Companies don’t just go out and post a job description that says something like:
Engaging directly with technical professionals from Microsoft’s top 50 Global ISV partners. Travel is required.
Mentoring and training ISV Performance Engineering and Development staff to ensure quality technical adoption of SQL Server technologies
Developing training content for ISV partner Sales professionals.
Community championship – driving best practices through blogs, discussion forums and key conferences.
Engaging directly with customers of our ISV partners. This includes using our MTC assets to prove SQL capabilities and direct on location customer QA and problem solving.
Training System Integrators, ISV Technical Staff and key implementers.
This position is ideally based in Redmond and requires some domestic and international travel.
Dress Blog for the Job You Want
Career books remind us that we need to dress for the job we want. If we aim to be CIOs, then we need to come to work wearing a suit so that the executives see us in the right light. If we look like DBAs, then executives believe that’s our chosen route in life, and that’s the end of the line for us.
Today, there’s a new guideline: build the web presence for the job you want. The first impression is made long before you step foot in someone’s office. People search the web for you to check out whether you’re qualified. Ideally, they approach you for the job before you even know there’s a job available – both Tom and I got our positions by working directly with companies before they’d even posted a job, and I know other expert DBAs doing that same thing as we speak.
When you see a job posting like the Microsoft one, it’s too late to start building your brand online. You need to start now to invest in your future career. More and more companies are hiring for evangelist positions – not just big companies, but small ones too. Two or three years from now, I can’t imagine an IT company of any sort (hardware, software, or services) competing without a credible community champion. Lots of these positions will be open, and companies will fight over the (very) few visible people with strong online presences and a history of community involvement.
Start building your history today:
- Blog once per week
- Embrace IT communities on Twitter and Facebook
- Get involved in answering questions on #SQLhelp, StackOverflow, and ServerFault
- Do at least one user group presentation per quarter
- Think hard about my post “Rock Stars, Normal People, and You”
None of this is hard – it just takes free time – but trust me, it pays off. You never know when a job like this will become available, and when it does, you want to be ready to click “Apply.” It worked for me, it worked for Tom, and now it’s going to work for someone who reads that Microsoft job description.
The SQL Server Standard is an online magazine from the Professional Association for SQL Server. In their latest issue, they published my article about what it’s like to apply for the MCM program, prepare for it, and live through it.
When you click on this link, you’re going to have to be logged into the PASS site. It’s a free registration. Once you’re logged in, you’re going to have to come back here and click the link again because PASS doesn’t save the page you were trying to access when you registered. Yes, this sucks, and yes, I’ve told them it sucks, but it’s tough being a volunteer organization with limited resources.
Want to add something cool to your resume? Consider writing for the Standard. It’s a good thing to have on your accomplishments list when you’re looking for a raise, a new position, or a new client. Email Grant Fritchey and let him know what you’re interested in writing about, and if you’re stumped, check out my post on how to choose blog & presentation topics.
We’re doing another one! This time it’s Wednesday, July 21st, and we’re adding another great presenter – Buck Woody (Blog – @BuckWoody)! He’s Microsoft’s real world DBA, and he has the awesome distinction of being voted 3 of the top 10 sessions at last year’s PASS Summit. This promises to be a killer event.
Microsoft records TechEd sessions, and you can watch the recording of mine. Here’s the abstract:
You’ve heard it before: “It worked fine on my machine, but the users say it’s too slow.” Don’t blame the developers: they’re using SQL Server features that look great on paper, but in reality, they won’t scale up to production loads. Learn to recognize these common mistakes before they go into production and be armed with alternatives.
If you like it (or hate it), let me know by rating it at SpeakerRate.
Feedback From The Attendees
Here’s some of the comments I got from presenting it at TechEd:
“All developers should be forced to see this.”
“One of the interesting session attended. Quite humorous too. Well done.”
“Wonderful. Good info wrapped up into a nice package that was easy to understand.”
“The speaker made this one very enjoyable.”
So far so good – but then here’s a rough one:
“I would suggest that Brent not make blatant political references during his presentation. He compared the intellect of Albert Einstein to President George Bush. Also, other pictures included a person with clown makeup on holding a gun to his head. Maybe he thinks these are funny, but I really don’t… Inappropriate for a professional environment.”
Handling this kind of feedback is part of being a presenter. It would be easy for me to call this person a stick in the mud and disregard their opinion, but that’s not the right thing to do here. I want to reach as many people as possible, teaching things while having fun. My slides made this person so angry that they stewed in their chair throughout my session, then promptly went over to the feedback computers and banged out an eval. I don’t care about the evaluation scores – but I do care about reaching more people.
To do the right thing, I have to stop and ask myself, “How did the audience react when I showed those slides?” Nobody really reacted to the clown, so I need to pull that image out and swap it with something funnier or more appropriate. No sense in aggravating audience members if I’m not gaining anything. (I examine most of my photos that way – for example, the duct tape on the airplane window on the TempDB slide didn’t elicit so much as a chuckle, so that one comes out and either gets replaced with another photo or none at all.)
The Einstein vs Bush slides, on the other hand, made the audience erupt in raucous laughter. Most of the audience doesn’t know that I’m a Republican, so I could ease the pain for the hard-core guys by saying something like, “I’m allowed to make fun of Dubya because I’m a Republican myself.” That statement would generate negative comments for another reason, so that doesn’t work either. I need to find someone that is universally recognized as less-than-brilliant – preferably someone who isn’t well-loved, so that when I show their picture, nobody gets pissed off.
- Paris Hilton – might get interpreted as sexist, so no go.
- Me – pictured doing something really stupid. Usually I’m quick to jump in as a self-deprecating punch line, but because this is so early in the slide deck and I just got done touting my credentials, I don’t think it’d flow very well.
- Fictional character – ahh, now, here we go. I thought about the Three Stooges, but that might not play everywhere. Maybe Vanilla Ice. The only tough part about using fictional characters is that it’s sometimes harder to find Creative Commons-licensed pictures to use, but I’ll figure this out.
Feedback From Other Presenters
I was lucky enough to have a few other presenters in the audience, and I asked for their feedback individually. People like Buck Woody, Tim Ford, and Tom LaRock do a lot of presentations, and it’s interesting to see my work through their eyes. They gave me feedback on how to craft my message better and how to interact more smoothly with the audience.
I still have to work on repeating questions from the audience, and I need to avoid belittling someone with a controversial opinion. I cringe when I listen to the way I handled the Heap Heckler at about 50 minutes in:
- HH: “I get great performance from heaps, and *I* speak from experience.”
- BGO: “You’re experienced and I’m not? What? Call me when you’re up here.” (referring to him being in the audience and me being on the podium)
Ouch. Not good enough. It felt good at the time to zing somebody, but that’s not how I want to treat audience members. Thankfully he came up to me after the presentation and we hugged it out. He admitted he only used it for staging tables (which makes perfect sense) and I paid him off with Starbucks gift cards.
A presenter’s work is never done. This is why it’s so important to do your presentations at progressively larger sessions – I’d done this particular presentation at local user groups, the SSWUG Virtual Conference, and finally in front of 204 live meatbags at TechEd. Even now, I’m still honing this presentation and working on my delivery.
Buck Woody (Blog – @BuckWoody) tagged me in a blog post called How I Travel where he talks about how he packs, how he works on the road, and his journey logistics. Paul Randal responded with the Paul and Kimberly Travel Guide, and those two are definitely hard-core travelers. I think I’m probably the most amateur of that group. I’ve blogged my Travel Tips for Non-Frequent Fliers, but here’s a few more thoughts.
My Travel History
I got started working in the hospitality business – hotels & restaurants – and worked my way up to hotel general manager, then to a hotel management company’s corporate office. I traveled full time for a couple of years, and I do mean full time: I didn’t even have an apartment.
After I switched my career into IT, I met up with the love of my life, Erika. She went to work for an airline, and airline jobs come with unbelievable travel benefits. We flew all over the world for $10-$20 per flight, often first class.
These days, I prefer not to travel more than a week per month because Erika’s waiting back home for me here in Chicago. Therefore, my travel routines look a little more rushed – take my Germany trip next week, all times local:
- Saturday 6PM – leave Chicago on a flight
- Sunday 10AM – arrive in Munich, try to get acclimated to time zone changes
- Monday – present in Munich during the day, then grab dinner and catch a flight to Cologne. Get to hotel at 9pm.
- Tuesday – present in Cologne, then grab dinner and catch a flight to Berlin. Get to hotel at 9pm.
- Wednesday – present in Berlin, then grab dinner and catch a flight to Vienna. Get to hotel at 9pm.
- Thursday – present in Vienna, thankfully get one night without travel.
- Friday 9AM – leave Vienna, stop in Dusseldorf
- Friday 11AM – thanks to the magic of jumping time zones, arrive back home in Chicago completely exhausted
This kind of travel isn’t fun at all – it’s tiring even when everything goes flawlessly. Unfortunately, it never goes flawlessly, and some of my travel highlights include losing my ATM card in Mexico, getting food poisoning in Paris, crashing a laptop in Sweden, getting all my clothes soaking wet in London, and on and on. I try to prepare as much as I can to lessen the pain.
How I Plan My Trips
I try to avoid layovers when I’m planning my flights. Every time you change planes, you increase the chances that bad things will happen; your bags might not make the switch, weather might pop up in that middle airport, or delays might cause you to miss your connection. Employers these days have policies about taking the cheapest flight no matter what, without regard to flight cost, but I can usually work around that. I write something like, “The nonstop flight is $150 more than the cheapest one with a layover, but it’s worth the gamble here because I’ve got an event to attend first thing in the morning. I can’t afford to get delayed by a missed connection – we’ll miss the entire event.”
I stick with my main airline or its partners as often as possible because airlines treat frequent fliers better. When you’re elite, your bag is among the first ones off the plane, you get preferential treatment during boarding, and you can get bumped up a class if there’s space available. To learn more about how the reward game works, check out FlyerTalk, a forum site loaded with tips on how to get to elite levels fast. If you’re on the cusp of hitting elite, but you won’t make it before the year ends, read their mileage run forum. Readers post cheap, long flights that rack up lots of miles for very little cost, thereby ensuring you make elite.
My favorite airline isn’t always the one with the cheapest rate, so I’ve been known to tweak my arrival/departure dates & times in order to make my airline the cheapest choice. If I’m doing a conference from Tuesday to Friday, and my airline isn’t the cheapest choice for a Monday night and Friday night flight, I’ll switch to Monday morning or Saturday morning flights to see if that makes a difference. I prefer early morning departures because weather hasn’t mucked up the day’s flight schedule yet.
I don’t usually have much of a choice when it comes to my hotels or car rentals – that’s dictated by my employer – but sign up for the frequent flier rewards on those no matter what. They rack up much faster than you’d expect.
How I Pack
I look at my itinerary and try to narrow down my schedule to one pair of shoes. If I have to wear a blue Quest shirt for a particular event, I’ll try to coordinate the rest of my outfits on that trip to match, thereby letting me survive with just brown shoes. If I have to wear a black PASS shirt, same idea – set up all my clothes so I can just wear black shoes. This one decision determines whether I can do the trip with a carryon bag or if I have to check my luggage. If my flights involve a layover and I have to check my bags, then I’ll bring a carryon too, because I don’t want to worry about arriving without my bags.
Buy good luggage – not expensive luggage, just good luggage. The stuff you find at big-box discount stores isn’t made well and falls apart after a few trips. Check out FlyerTalk’s travel products forum for mind-boggling discussions of the lightest bags and how to pack them. For example, here’s how to pack a suit jacket into a carryon without wrinkling it too badly – a trick I’ve used on transatlantic flights:
Inside my checked bag, I put instructions in big print on where to send the bag if it gets lost. I print them out on an 8×11 sheet of paper and set them on top of all the clothes, saying, “IF THIS LUGGAGE IS FOUND, PLEASE SEND TO…” and list my home address. I don’t bother with my trip itinerary – I don’t have good luck with luggage catching up to me on a multi-city trip.
How I Work on the Road
I tried carrying just my iPad to TechEd this year, and that was a failure. Almost as soon as I got into the airport, I got a T-SQL question from the guys at StackOverflow, and I would have been able to solve it immediately if I’d had SQL Server with me. Several times during the week, I said to myself, “Dammit, this would be so much easier if I had this one file.” There’s solutions to put all your files in the cloud, but TechEd attendees will recall that the cloud failed us more than a few times during the week too.
There’s a few iPhone and iPad apps that make travel a lot easier:
- 1Password – syncs with the Mac 1Password app, so I’ve always got my passwords on the go. Great for security – generates extremely strong passwords for each web site. Not cheap, but makes security really easy.
- GoodReader – excellent document viewer with built-in library. I put my PDF ebooks in here for reference, but I don’t usually read from this when I’m on the road. I prefer reading magazines until the plane hits 10,000 feet, at which point I switch to working or playing games.
- RememberTheMilk (free) – companion to RememberTheMilk.com, which stores all my tasks in one place.
- Shanghai Mahjong ($.99) – iPad/iPhone game. I seem to have a new favorite game every few months.
- TripIt (free) – companion to TripIt.com, which stores all my travel plans in one place. Just forward your confirmation emails to them, and they parse out all of the details.
- Yelp (free) – business directory with reviews. Restaurants conveniently located near tourists are almost always horrendous. They don’t have to be good, because they don’t have to win your business twice. They just have to get you in the door once, and then repeat that over and over with thousands of tourists. Avoid ‘em with Yelp.
How I Travel
Once I hit the road, I’ve got a binary philosophy; either things matter, or they don’t.
Sounds stupid, right? Bear with me.
When I’m hungry, I either want to just eat, or I want to have an experience. There’s nothing in between. If I’m in a hotel on the road, getting ready to do a day-long seminar, I’ll eat breakfast at the most convenient location. I don’t care what’s on the menu, I don’t care how bad the service is, and I’m not concerned with the ambiance. My goal is to get fed, and to be the most pleasant human being possible during that transaction. Someone else is taking care of me, and I want to show my appreciation for them making my life easier. They didn’t aspire to work in the food service industry at an airport hotel, and a few moments of kindness will make their lives better.
When I’ve got the time and I want an experience, then I put effort into planning things out. I open up the Yelp app on my iPhone, check reviews for local (not chain) restaurants, and do some comparison shopping. I learn what the restaurant specializes in before I arrive, and I know what menu items to avoid. I go in with wide eyes, take my time, and savor what I’m experiencing.
I approach everything in travel with that same binary mentality. Pick your battles – not every experience on the road can be eating at WD-50 or taking pictures of the Eiffel Tower.
The most important thing, though, is to take care of yourself. When you’re traveling for fun, sure, you can abuse yourself by staying out late every night, drinking the bar out of Jägermeister, and walking around mumbling during conference sessions. When you’re doing this for a living and you have to present yourself in front of customers, then you have to get enough water, sleep, and downtime to project a good image. It’s tempting to stay out with the gang and go crazy, and I’ll let myself have one night like that at the very end of a long trip, but do that every night, and you won’t get paid to travel for too long.
People love to search.
Google has us addicted to fast, easy search functions. Users expect every application to have a built-in blazing-fast search functionality. To pull that off, developers build search queries that let users enter a string, and we ask SQL Server to find matches. For example, say our users need to find some nuts. We take their string, put percent signs on either side, and then search for that field in the product names:
SELECT * FROM AdventureWorks.Production.Product WHERE [Name] LIKE '%nut%'
This works great on our machine – but when we scale it up to hundreds or thousands of simultaneous users, or if we ramp up the number of products, our response time sucks. Let’s find out why by checking the execution plan. In SQL Server Management Studio, click Query, Display Estimated Execution Plan, and we get:
There’s only one operation, which would sound like a good thing, but that one operation is a clustered index scan. That means SQL Server has to read every row out of the Product table, check to see whether it’s got “nut” anywhere in the name, and then return our results.
But wait – there’s an index on Production.Product for the Name field, and SQL Server will use that index if we have a slightly different query:
If we take the leading % wildcard out, notice that this time it does two operations. First, it does an index seek against our Name index, then it looks up the corresponding rows in the base table (Product). Two operations might sound more expensive, but if we looked at the total cost for each query, the second one would be faster in situations where we’re only pulling a small number of search results back. If this table was for a company called Nothin’ But Nuts, on the other hand, we would probably still need to scan the entire table, but that’s a discussion for another day.
So why doesn’t SQL Server use the index for the %nut% query? Pretend for a moment that you held a phone book in your hand, and I asked you to find everyone whose last name contains the letters HAM. You would have to scan every single page in the phone book, because the results would include things like:
If, on the other hand, I asked you to find everyone whose last name began with the letters HAM, you could turn straight to the H page in the phone book, scan through a few lines, and quickly get the information you need.
When I asked you for everyone beginning with the letters HAM, my query was sargable. When I asked you for all last names containing HAM anywhere in the name, my query was not sargable – meaning, you couldn’t leverage the indexes to do an index seek. (Yes, sargable is sort of a real word – it stems from the phrase Search Arguments.)
Since we can’t talk users out of using search queries, and since non-sargable queries don’t scale, we need to find a better way to search for text. That’s where SQL Server’s Full Text Search comes in. Unfortunately, your queries must change – normally when you add an index, your queries just magically become faster. Full text indexes don’t work that way. You have to tweak your queries to use operators like CONTAINS instead of LIKE. If you’re dealing with an old boat anchor of a database and the developers are long gone, you might be out of luck.
%String% is just one thing that will cause SQL Server to do slower scans instead of high-performing index seeks. To learn more about sargability, check out:
- Beginner-level: StackOverflow question: What makes a SQL statement sargable?
- Advanced-level: Rob Farley on SARGable functions
- Book: SQL Server 2008 Query Performance Tuning Distilled
- Implicit conversions are another common sargability problem. Read Jonathan Kehayias’ post on finding index scans due to implicit conversions, Tibor Karasazi’s post on the performance implications, Jonathan Kehayias’ post on implicit conversion performance issues, Craig Freedman’s post on errors caused by implicit conversions.
Here’s some of the most popular stuff on the SQLServerPedia stream this week:
The Missing Speakers – Did you know PASS doesn’t actually control who speaks at the PASS Summit? This one floored me – Microsoft speakers are selected by Microsoft, not by PASS. If there’s a Microsoft speaker you want to hear – like Buck Woody, Cindy Gross, or Jimmy May – make your voice heard by commenting on Jeremiah’s blog. He’s a member of the PASS Board of Directors, and he may be able to help fix this issue.
The Truth About Cursors Part 3 – T-SQL genius Brad Schulz exposes an interesting optimization in SQL Server 2008: “When I insert 1 million rows into a temp table without a ‘#’ prefix, it creates 1,000,078 Log Records. But inserting rows into the temp table with a ‘#’ prefix never brings the Log Record Count higher than 400 or so.” But are cursors invited to the party?
SQL University: Database Testing – learn why you should test your database, and the basics of what database testing means.
Deprecated Features in SQL Server 2008 R2 – things you might want to start avoiding, like sp_dboption, SET ROWCOUNT, and SQLmail.
Keeping Track of Root Nodes in a Hierarchy – got one of those tables that refers back to itself for parent/child relationships? Check out this tip from Michael Swart.
Should I Use RAID 5? – SQL and storage guru Denny Cherry writes about when he recommends each flavor of RAID. His recent post on joining multiple fiber switches is also good – most of us don’t have to dive that deeply into storage, but if I was you, I’d start poking around. Your SAN admins probably don’t have this stuff under control.
You got your query on my server! You got your temp table on my server! – Lori Edwards discovers why temp tables and linked servers are a lot less appetizing than chocolate and peanut butter.
Amazon Management Console and MySQL – the Amazon Web Services offers a Relational Database Service. It’s like an easy-to-scale MySQL in the cloud with a built-in DBA who handles some basics for you. Check out this post on how easy it is to launch a database, and think what that might mean for DBAs down the road.
NoSQL Basics for Database Administrators – my post explaining why businesses are checking out NoSQL and cloud database solutions, and why SQL Server and Oracle might not be good fits for these.