Jan 252011
 

After working with data day-in and day-out for a while, it doesn’t seem unreasonable that thinking about the domain and appropriate datatype for storing a set of data would become second-nature. I know it’s that way for me. Sadly, I can’t say the same for one of the banks I do business with, which shall remain nameless.

I have accounts at several banks, only one of which is brick-and-mortar in my neighborhood. The rest are either online only, or have a physical presence somewhere far far away from me. The bank in question has an online banking system that’s rather primitive compared to others, though it works perfectly well. The complexity of their interface was less important to me than the interest rate they paid about 5 years ago when I was shopping for another online bank.

The task I was trying to accomplish at said bank was to close one of the accounts I had there, as it had been unused and sitting empty for some time. After looking through their online help, I found that I had to “email” their customer service team to close out an account. I put “email” in quotes because I highly doubt this had anything to do with email – more like a secure messaging system that was probably utilizing a database and comparable (from an end-user standpoint) to Facebook messages.

So I typed out my “email” to customer service as follows:

Can you please close account #[Bacon] as I no longer need it and it has a $0 balance? Thank you!

I clicked “send” and was greeted by red text telling me my message contained invalid characters. My first thought was that the pound sign was the culprit, so I removed it and tried again to no avail. The question mark? Same thing. In the end, the character that (literally) broke the bank was the dollar sign. The absurdity of this still amuses me days later, as this is a bank that’s based in the U.S. and one would think that dollar signs would occur frequently in conversations with customers. Apparently whoever designed this system wasn’t banking on that.

This got me thinking as to why a bank wouldn’t allow a dollar sign in its recommended method of communications. I highly doubt the limitation is present in the database that’s storing the messages, it’s more than likely occurring in the application layer. My best guess is that this is for reasons of security, as many languages use dollar signs to denote variables including PHP and Powershell. Security is obviously important, especially in banking, but there has to be better ways to achieve the desired level of security other than disallowing dollar signs and presumably other characters as well.

The fact that U-Turns are prohibited on some roads in the U.S. doesn’t mean that all vehicles should be built without the ability to make a left turn. This would surely prevent U-Turns from occurring, but would also hamper the essential driving behavior of turning left. Similarly in a database environment if a user is not allowed to delete rows from a table, this does not mean that they should also be prohibited from deleting rows from other tables. Fortunately SQL Server permissions are very granular and can be granted/denied on a per-table basis. While security should always be a primary concern, effort should be made to ensure that acceptable behaviors are interfered with as little as possible.

Jan 212011
 

I haven’t had a real meat-and-potatoes technical post in a while and for that I apologize, however as you can see at the top of the page, this blog is “on SQL Server and kindred subjects”. I’ll have to write more about where the “kindred subjects” part came from later, but I’m clearly not limiting myself to just writing about SQL Server. Be sure to tune in next week and I promise I’ll have some SQL Server content for you!

Anyhow, not only is it Friday, but it’s Un-SQL Friday as declared by Jen McCown (blog | twitter)! This is actually the 2nd Un-SQL Friday, but the first one I’m available to participate in. Jen’s asking us to write about our tech giants – those we really look up to in the technical world.

I could easily rattle off a list of people with excellent blogs and content I could only dream of writing, but I don’t think that would be very interesting. Let’s face it, if you’re reading my blog, you’re reading their stuff too. So instead I’m going to tell you about my tech giant about everything that’s not related to computers, my father.

Hard at work with my tech giant

My dad is an auto mechanic for a pretty large city. Their garage works on a wide range of vehicles (police cars, fire trucks, snow plows, buses, you name it…) and many people don’t realize that a huge range of skills is necessary in a shop like that. Changing oil and tires is one thing, kind of like how pretty much anyone can understand a SELECT query after a few minutes of study, but there’s also way more to it depending on how deep you want to go. Just like SQL Server has Integration Services, Reporting Services and Analysis Services, each of which can be a totally different world, vehicles can have incredibly complex electrical, hydraulic, and/or pneumatic systems. Working on a large fleet of them requires knowledge of all the above.

After removing the swimming pool from my backyard

Needless to say, our family’s cars rarely have work done on them outside of my parents’ garage. But that’s not all that makes my father my technical hero, he’s handy with just about everything else as well. I can probably count on one hand the number of times people were hired to do home improvement work at my parents’ house because there was never a need to. Whether it was woodworking, plumbing, appliance repair or whatever else, Dad had it all under control and the rest of us were there to help. From an early age my brother and I were taught that anything can be accomplished with the right tools, know-how, and the occasional army of family members to help out.

Growing up in the environment I just described, I used to think I was pretty handy too. Then I bought my own house, and it’s been quite the humbling experience. I know how to do a lot of things, but I don’t think I’ll ever feel like I’m quite as handy as my dad. What I lack in handiness I make up for on the computer, but all the programming & database knowledge in the world isn’t going to help me too much when there’s water dripping out from inside a wall. Hopefully I can acquire a few more of those skills with time. Until then, thanks, Dad, for being my tech giant.

Jan 182011
 

It’s been a little while since I’ve read a non-technical book, so I thought I’d give this one a try. This full name of this book is DownTime – A Guide to Federal Incarceration, and that’s exactly what it is. It had an answer for pretty much anything I’d ever wondered about federal prison, and a lot of things I hadn’t even thought of.

It’s author is David Novak, who did time after pleading guilty to one count each of mail fraud and making a false distress signal. After his release he started a consulting business to help those facing federal incarceration, and writing DownTime was part of that. He has since retired, though he continues to update the book. Through internet searches I was also able to find out he was working on a documentary about life in federal prison, however he appears to have run into legal issues involving the financing.

DownTime CoverThis book was written with three audiences in mind: Lawyers whose clients are facing time in the hoosgow (as my grandmother called it), defendants, and their families. It goes through the entire process including the stages of the trial, the sentence, release, and what comes next.

Probably the biggest thing I took away from this book is that (surprise) prison stinks! Doing time there was never in my plans to begin with, but it most definitely is off the list now! All kinds of details of life in federal custody are covered. Here’s a few tidbits:

Phone Calls: Limited to 15 minutes each with a maximum of 300 minutes per month. When your call ends, go to the back of the line. If others are waiting and you dial again, you will be sorry.
Bacon: Occasionally available as a side dish.
Transport: Whether you’re serving time for jaywalking or murder, all inmates are transported as if they are in maximum security.
Conjugal Visits: There aren’t any.
Money: Inmates can spend up to $250 a month at the commissary provided they have the funds available in their account. Most prison jobs pay a few cents per hour, but your family can send you money via a lockbox facility in Iowa. This facility only accepts United States Postal Service Money Orders.
Prison Lingo: There’s a glossary of prison terms included so one can acclimate themselves quickly. More humorous entries include “Bitch Slap”, “Diesel Therapy”, and “Zoo-Zoos”.

My final thought: If you foresee federal prison in your future, I believe this book is full of useful information for both you and your family. If you’re like me and just plain curious, it’s very interesting and definitely worth your time.

Jan 112011
 

T-SQL Tuesday LogoThis month is the 14th T-SQL Tuesday (my how time flies!) and it’s graciously being hosted by MidnightDBA and newly-minted MVP Jen McCown (blog | twitter).

Jen is asking what our techie resolutions are for 2011 – what we hope to accomplish and why. I think this is a great topic, and I’m so glad I hadn’t already done a post like this as many do around New Year’s. Without any further ado, here are my resolutions for this year:

Speak More. I had a great time speaking at SQL Saturday #50 last year in Iowa City, and I hope to do more this year. I’ll only have to speak at 2 of them to accomplish this goal, though I hope it can be even more than that.

Travel More. Even if I don’t get a speaking spot at events I submit abstracts for, just being there and meeting new people is still the best part. I hope to make any event that’s within decent driving distance, and hopefully I can get to one that requires flying!

Become eligible to take the MCM exam. I’ve already passed Microsoft Exams 70-432, 70-433, and 70-450, which means I only need to pass 70-451 to become eligible to take the MCM test. I hope to do that in the first half of this year. I have no plans to take the MCM exam this year, as I consider that to be more of a long-term goal.

Attend training. The free training that’s available by reading blogs and attending user group meetings and SQL Saturday events is wonderful, but I don’t think there’s any replacement for for the type of training that isn’t free. I hope to attend some type of formal training this year, whether it be the PASS Summit or a SQLskills.com immersion event.

Keep up the blogging. My (unwritten) resolution for 2010 was to start a blog, and post at least once a week. I went live in May, and now here we are in January. I think I’ve done a pretty good job so far, and my hope for this year is to keep it up and eventually work up to a consistent 2 posts per week. So long as I have the time to type this should be very possible, as I have a long list of topics I’d like to write about.

Learn IO. While I definitely don’t consider myself to be the degree of SQL Server expert that I hope to be someday, I’d like to start learning some of the underlying technologies a little better, the foremost being IO. At this point I have zero desire to go all-out and become a SAN Administrator or anything, but I know I have a lot to learn in this area and hope to start doing it.

Help out more. Just like many other SQL Tweeps, I monitor the #sqlhelp hashtag and am more than happy to help others out when a question goes up that I feel qualified to answer. I hope to do that even more this year, and to expand to another site that does the same, whether it’s the official Microsoft Forums or something like StackOverflow or ServerFault.

So those are my goals for 2011. Towards the end of this year I hope to be able to post that I accomplished them all. Probably the biggest thing that could keep me from achieving them all at this point is the fact that I’m getting married this year and my wedding will be consuming great amounts of time and money that I could otherwise use for travel and/or training. I’ll definitely do my best though!

Thanks, Jen, for picking such a great topic, and good luck to everyone else. May all your resolutions become reality!

Jan 042011
 

What do you call someone who graduated last in their class? In this case, me! I recently took Microsoft Exam 70-433 (MCTS: Database Developer 2008), and am pleased to report that I passed. I’m happy to offer up some of my thoughts as well as tips for those who might take it in the future.

Scoring – Why Bother?

So you know how I just said that I passed? That’s a half-truth. The other half is that I exactly passed. The minimum passing score was 700, and that’s what I got. I feel pretty dumb, however I’m sure I would feel a lot worse were my score 699.

I’ve never been a fan of Microsoft’s scoring method for these exams. They never say what the maximum possible score is, nor is there any quantitative breakdown of how you received the score you earned. 700 is passing, but out of what? 900? 1000? They include bar graphs on the result sheet for each of the major subject areas, but I’d still like to see some numbers. For the results Microsoft provides and the almost nothing that can be gleaned from them, they might as well just skip the numeric score altogether and simply return whether you passed or failed.

How I Studied

Dunce HatMy study method was incredibly simple – I didn’t study. Now I know if my mother reads this she’s going to tell me how it serves me right for just barely passing if I didn’t study, but hear me out for a second before sippin’ the Hatorade, ok? There’s been lots of good debate over the usefulness of certifications compared to real-world experience. Brent Ozar (blog | twitter) has a great blog post about how certifications are icing, but not the cake. Anyone can buy the study kit, lock themself in a room for a while and pass the test. I was more interested in seeing if I could pass the test based on what I know right now without doing any cramming. After all, if I really know my stuff, studying won’t be necessary, right? So I purposely did nothing other than read over the list of skills measured on the 70-433 exam page at Microsoft Learning. While I did pass, I probably won’t use this exact same method again in the future and will instead try to find a happy medium between cramming and no preparation at all.

Subject Matter

Another thought about that “skills measured” page I linked to above: I’m not sure how accurate it is with respect to topic weightings. The test I took had 55 questions. There’s an awful lot of topics and skills listed on that page, and I realize it’s rather unlikely that all of them will be covered in only 55 questions. From my perspective, it sure seemed like there were a disproportionate number of XML questions – far more than the 12% listed there. 12% of 55 is 6.6, and while I didn’t keep count, I’d be willing to guess that probably 10 questions dealt with using XML-related functionality – most of them in ways that no sane DBA would bother. In the same way that owning a hammer doesn’t mean that every problem is a nail, SQL Server having XML features doesn’t mean that everything to do with XML should happen in the database. Application servers make XML parsing/searching/manipulation a lot easier in many cases!

Eliminating Stupid Answers

To me, test taking skills are things like keeping track of time, pacing oneself, knowing when it’s appropriate to skip a question and move on, and eliminating stupid answer choices – pretty much everything you can (legally) do during the test to help improve your score without actually knowing the material. Good test taking skills can really save your tushy at times, and Microsoft exams are no exception. I’ve found there to be a fair amount of just plain stupid answer choices in Microsoft exams, to the point where I’ve made a game out of finding and eliminating them. I usually don’t have much trouble dropping 2 choices from each question. If you can do this, your chances of choosing the correct answer greatly improve. Would you rather pick a random answer from 4 choices or from only 2? Here’s a made-up example and how I’d go about solving it:

Steve is querying the “Widgets” table for the top five widgets in terms of sales. What syntax should he use?

A) SELECT TOP (5) FROM Widgets ORDER BY Sales;
B) SELECT TOP (10) FROM Widgets ORDER BY Sales DESC;
C) SELECT TOP (5) FROM Widgets ORDER BY Sales DESC;
D) SELECT TOP (5) FROM Tools ORDER BY Sales;

The first thing I always do is play “which of these is different?”. In this case, B screams out to me because it’s selecting the top 10 instead of the top 5. The question’s asking for the top 5, so B is out. Similarly D is also different, as it’s selecting from the Tools table – everything else is selecting from Widgets. Once again, referring back to the question, we know that D can be eliminated. Now the only remaining choices are A and C. Even if you’re clueless as to the meaning of the “DESC” keyword, your chances of choosing correctly are twice what they were before.

All in all, this exam was alright. I wish I would have done better, but am happy that I passed. Next up for me will be exam 70-451 (MCITP: Database Developer 2008) which I hope to take in April or May. I’ll be sure to write about it when I do.