Won a PluralSight Subscription

Tonight, at my local .NET User’s Group meeting, I was lucky enough to win a 1-year subscription to PluralSight On-Demand!  The subscription was one of the give-aways that the group was doing.  I am really fortunate to have won it, too.  With my new job that focuses on Database side of development, I’ve been getting a little rusty at my coding skillset.  The standard subscription lets me have full access to over 70 .NET Courses, which is $499 value!  I guess I have one more thing to be thankful for this Thanksgiving.  I can’t wait to start watching the how-to videos and courses.  Thank you to my local .NET User’s Group for having awesome swag.

Turning a new leaf with a career change

I started a new job this week. I am working for Expedia, Inc now as a Database Development Engineer (or DB Dev, for short). So far, I am really enjoying the opportunity. The people are really great and have a real entusiasm for what they do.

It’s a quicker pace for development releases than I’m used to, but it seems like they have a really good system of checks and balances to ensure the process is flawless. I am learning that “Uptime” is the most important factor and that everything else comes in as second priority. That’s such a different mentality to me. My background has always been in the client-server world. So we could shut the system down to make our changes/updates and then give the All Clear signal to let everyone in. But not with a website that is running 24x7x365. It the site is down even a few minutes, that’s lost revenue, which is unacceptable.

The work is still similar from a database perspective, but every little change is scrutinized. Can’t update a table in a large batch, it has to be done in iterations of 100 records or less so that it doesn’t lock too many data pages.

Today, I was writing a multi-threaded query stress tool. It’s going to be something that will compare all the CPU, read/write IO, & memory metrics for a defined number of iterations and threads. We will be able to scale it up to simulate a real load on the database server. We have to be concisous of every little change we implement, because a small change can get magnified when 50,000 users hit the system.

Regardless of the details, I am LOVING my career change. It’s refreshing to change everything.

Too many “To Dos” and not enough “Dones”

I love taking on new projects, and I’m a do-it-yourself kind of person. If there is something that needs to be done around the house, I don’t hire it out, I do it myself. It’s not just physical stuff, either. That DIY mentality applies to everything in my life … doing taxes, starting businesses, writing websites/software, & designing logos. I really try to tackle all of these things myself.

However, as of lately, I’ve been feeling stretched really thin; too thin, actually. My “To Do” list hasn’t been getting items moved over to the “Done” side very quickly. Two of the bigger items on that list have been a pair of websites, my personal website and my wife’s business website, that both need similar functionality. I’ve written both from scratch and included a lot of really cool features on both. But the features are always taking me more & more time to add which is taking away from being able to get anything else done. The biggest feature is a blog engine. Now I know there are a ton of free blogging services out there, but I was really enjoying writing my own and figuring out all the nuances. And it has been a really fun challenge. But I need to let them go.

So I am deciding to change my focus a bit and give up control of having to do everything myself. That means that I will be transitioning both of the websites over to WordPress. It’ll cost a little bit more money than what it currently does, but the opportunity cost of being able to work on other things will far outweigh cost of switching over. Plus I’ll have more time to actually write content for the blog instead of the piping for it. And my wife will absolutely love the WordPress app for her iPhone. That alone should be the biggest reason to move.

With this change I will be losing some of my pride of creativity and accomplishment, but honestly, I’ll get those back with my next project. Move two more “To Dos” over to the “Done” column.

AutoRecover SQL Scripts

This morning, when I came into work, I discovered that Windows Update had graciously restarted my machine for me. No big deal. But wait, then I realized I had some SQL work that I hadn’t saved yet. NOOOOOO!!! I know, I know, … always save your work. But yesterday, I didn’t. So you can imagine how irritated I was to discover that all of that hard work was gone. Or so I thought.

A co-worker heard me getting mad at myself and chimed in that SQL Server Management Studio (SSMS) has an autorecover feature. WHAT!? Yep, when ever you start typing a query in SSMS, a file is automatically created and saves itself every 5 minutes. The location of this AutoRecover document is located in “\My Documents\SQL Server Management Studio\Backup Files\Solution [n]\”. The [n] represents an integer that corresponds to how many SSMS IDE windows you have open. I only had one IDE open, with two query windows open, so I had a “\Solution 1\” folder with two files in it: ~AutoRecover.~vs47E8.sql & ~AutoRecover.~vsD5FD.sql.

Try it out. Open the folder mentioned above and open a new SSMS IDE and Query window and start typing out a quick SELECT. After about 5 minutes, you will see a new file prefixed with “~AutoRecover.~vsXXXX.sql”. The X’s are alphanumeric values that change with every file. The new file will get auto saved in 5 min increments from there on. When you close SSMS or a query window and it asks you if you want to save, click No, and watch the auto-generated file delete itself.

Wow, that was a HUGE relief. SSMS 2005 and higher has this feature built in. Thank you Microsoft for saving me from my own carelessness.

Free eBook: Defensive Database Programming

Simple-Talk Publishing has released a new free eBook: Defensive Database Programming with SQL Server, by Alex Kuznetsov.

The goal of Defensive Programming is to produce resilient code that responds gracefully to the unexpected. To the SQL Server programmer, this means T-SQL code that behaves consistently and predictably in cases of unexpected usage, doesn’t break under concurrent loads, and survives predictable changes to database schemas and settings.

Too often as developers, we stop work as soon as our code passes a few basic tests to confirm that it produces the ‘right result’ in a given use case. We do not stop to consider what other possible ways in which the code might be used in the future, or how our code will respond to common changes to the database environment, such as a change in the database language setting, or a change to the nullability of a table column, and so on.

This book is filled with practical, realistic examples of the sorts of problems that beset database programs, including:

  • Changes in database objects, such as tables, constraints, columns, and stored procedures.
  • Changes to concurrency and isolation levels.
  • Upgrades to new versions of SQL Server.
  • Changes in requirements.
  • Code reuse.
  • Problems causing loss of data integrity.
  • Problems with error handling in T-SQL.

You can download the eBook in PDF format here.

Passed My Microsoft Certification Exam!

Today, I passed my first Microsoft Certification exam, MCTS exam 70-433!  With this certification, I am a Microsoft Certified Technology Specialist for SQL Server 2008 Database Development.

Getting a MS cert has always been something that I always wanted to achieve, but I never thought I would have the time to study.  Well I signed up back in April and just knew that if I didn’t just do it, I probably never would.  I had a great book to read from.  It included an application that simulated the exam with practice tests.  I took quite a few of the practice tests before the exam day and never could pass one, so needless to say, I was very nervous.

Once I was in the exam room, things seemed to get easier as I loosened up.  The questions were hard and quite a few were rather tricky.  Luckily, there was a review later checkbox at the top of each question that allowed me to go back after the test and review the ones that I was feeling unsure about.  That was the real key to passing, I think.  I went back through every question and re-read each word to make sure that I was fully understanding the question.  Honestly, I was able to change a few of my answers because of it.

All in all, I would definitely do it again.  In fact, I am already thinking about my next cert.  But I think I’ll take the summer off to relax before I dive into that study mode again.