Guess and Learn

I was thinking the other day that I pay no attention to how old I am anymore. I could say that I have to think about it when I’m asked how old I am. Today adds another notch to my years. I’ll allow you to guess my age:
I began my career in computers as a graphic designer before I was old enough to drink– although my eye for art and design is very subpar now. My first experience with a PC was on MS-DOS 6.21 or 22 then Windows 3.1. When I had my first professional job as a Layout Designer for a local newspaper, I bought my first Hewlett Packard, with all of 8MB of RAM, 1GB hard drive, 14.4 mbps modem and Windows 95. I doubled the RAM instantly and set me back about $100 – for 8 more MB of memory mind you. At my day job, I would design graphics with Freelance, Aldus Photoshop and layouts on Aldus PageMaker. Aldus was later bought out by Adobe. At night, I became an enthusiast of the Internet and Telneting into the World Wide Web. I liked the black screen and green text and I heard of this thing called “Netscape” and something called “Geocities”. So I learned HTML like any good boy did, on Notepad, or was it WordPad then on Windows 95, I can’t remember. So I created my first site, “Extofer’s World”. I switched my day job from design soon after. I since dabbled in all sorts of computer work, from data entry and computer operator of AS-400s, to Assistant Engineer and Systems Analyst, then VBA and VB6 developer, Web Developer into the arena of ASP and SQL Server (2.0 and 7.0 respectively) and then there was .Net and SQL 2000. In its inception, I did what any hardcore programmer would do and dive into C#, but I digressed, went to my comfort zone of VB.Net. I took a hiatus from full time development and into management, however, I still took the time to work with open source software and experienced the LAMP stack, and grew fond of Linux, particularly Fedora and at times, Debian. The businesses I was managing were soon equipped with PHP sites with MySQL databases. I left the world of business and management and went back to work as a fulltime developer in the government contractor sector, this time, full on C#. I commenced my track to become certified, and I became a Microsoft Certified Technology Specialist in SQL Server 2008 Development and a Microsoft Certified Professional Developer in ASP.Net 3.5.
Did you guess my age? Today I turn 37, and life has been good. I wound up in Colorado Springs a year and a half ago to work with a small ISV. I really enjoyed working for that company, and I still keep in touch with the people I worked with. Nonetheless, I took a turn to challenge myself, be adventurous and take a stab at consulting. I’m a contract developer for a public company specialized in virtual meetings and telecommunications and am open for other contracts. In my career as a developer, I’ve learned a lot of things, most importantly; I’ve learned that you never stop learning.
What am I saying here? Yes, I’m getting old, and it’s never too late to learn something new. I’ve set several goals for myself over the next year. One of which will benefit you – I hope. In attempt to learn something new each day, I intend to post each and every day now for the next 365 days. I diligently try to post something each week, and will continue to do so, but in the days that I don’t have a topic, I’d like to share what inspires me, a quote or video. I feel we can all learn something new each day, and by the time I’m 38, I will have learned 365 new things I didn’t know.

Great Scott!! Don’t use Visual Basic – Meme Monday May 2012

If I could go back in time and meet myself on Day one of my IT career, I would advise myself not to use VB 5.0.
I can almost say I was an accidental developer – let me explain. I had a degree in Mass Communications and found myself interested in computers enough to land a job as a Layout Designer for a local newspaper. I began to dabble in HTML soon after as I was able to afford my first Packard Bell P1. When I left the world of Newspaper and Media, I took a job as a computer operator in the automotive industry and learned to use a product management application on MS Access. There were inconsistencies in the engineering department I worked in with our, *cough, cough* database and the data coming to us from an AS400 application networked from Detroit and Japan. So my curiosity took me to explore options and I discovered I could use VBA within Access, or Excel mind you, and create an ODBC connection to a datasource. All this was mind boggling and I resulted to learn programming and create our own application to connect to the Access data as well as the AS400 data. My first question was, “Where do I begin?” Seeing that I worked in the engineering department, I pursued advice from the engineers as they recommended C or Java (cerca 1997, 1.1 or 1.2). It was Visual Basic that caught my attention.
I wish I could have done that. It was pretty, it was easy, it was just the thing a newbie could have done. From that moment, I became a Visual Basic developer; luckily, there was .Net in the next three years. The problem was, old habits die hard. VB is not an OO language; it’s procedural and event driven. I spent most of my development going back to VB.Net during its inception or used C# as I did VB – event driven. Object oriented design and development was beyond foreign to me.
Programming languages don’t make the programmer, but learning the right language where other major languages are derived from and are the foundation to pattern design, would be a good start. I develop in C# now, and have dabbled in PHP as well as Java. But learning Object orientation design and development took a reboot in my career. I am happy where I am now, but it could have been a shorter trip given the opportunity to go back in time and meet myself on Day One of my IT career.

Colorado GiveCamp, Spring 2012

There are those that do, and those that don’t. Seldom do you get an opportunity to help those in need, now is your chance. For the third time in my life, I’m part of a GiveCamp, a weekend long event where Developers, DBA and other technologist gather to work for charities. Now is the time show where you fit, Walk the Walk, or Talk the Talk.
That intro might have been harsh, nonetheless when you have Colorado charities, asking for help because they don’t have the infrastructure, the funding or the personnel, I’m lost for words. In the past, we have given food banks a facelift online, we have introduced an original application in efforts to assist combating human trafficking, we have written applications for non-profit organizations for blind children, youth mentoring and service programs for boys and girls.
The next iteration of GiveCamp in Colorado will be held in Greeley Colorado, May 4th – 6th, 2012. We have received several requests from area charities, requesting for assistance. We can’t help them all – unless we have the skill set from volunteers. We are looking for an array of talents.  Obviously, we can use developers, developers from all walks of life, C#, PHP, Ruby. If you have experience with Content Management Systems, have some knowledge of HTML, CSS, JavaScript, Flash or Silverlight. We can work with various databases, platforms and frameworks. However, it doesn’t have to stop there. If you are more involved in everyday business, we also need Project Managers, Technical Writers and Software Testers. You don’t have to be technical to volunteer; you can imagine the three day event can require lots of hands. You can register now, and volunteer for GiveCamp.
You can get all the details of Colorado GiveCamp on our site or you can register directly on our event page. Consider it, but don’t think about it too long, Colorado charities need our help

SSWUG Expo: Understanding Database Security Threats and Countermeasures

SQL Server Security and Intrusion Prevention

Today was my first experience being part of a Virtual Conference. I will definitely admit, it was an interesting experience. I’d like to thank those that watched the sessions and here some details for that talk.
Below you’ll find the Slide deck and the link to the scripts used


l33t Password Generator
You can download the source code project and even contribute to the project by checking out the shource code from my GitHub.

Slide Deck

Speaker Rate
I haven’t done many presentation, but I’d like to here how I’m doing. Please take a moment to rate my talk and I appreciate constructive criticism.

Extofer Bits – Episode 00110001

I wanted to try something new when it comes to posting, so I created a screencast, and decided I will do more of these, “quick tip” posts. Today, I shared a site I use regularly, most importantly, it’s a must visit site for new installs. I recently re-installed Windows 7 on my machine and I visited Ninite to install my everyday software.

UPDATE: 03/09/2012
Ninite is now also available for linux at

Christmas in Colorado Springs SQL Server User Group: 2011 Year in Review

Thank you SQL Family

Meet Andrew, Troy and Gary

In 2011 there’s been a lot of noise regarding the SQL Family, and a lot of it has to do with friends and a shared passion – with SQL Server.

For eleven months out of this past year, fellow professionals – now friends – gathered every third Wednesday of the month to share that passion and discuss and learn about SQL Server technologies.  When I moved to Colorado Springs in 2010, I attended their last meeting that was held in a public library. The following January, 2011 we had our first meeting at Mr. Biggs Family Fun Center, a smart move – it has become our safe haven for SQL Saturdays and two Christmas Parties.  So this year, we have had a great line up of speakers and presentations since then, including:

Tim Mitchell
Kevin Cox
Tom Norman
Mike Fal
Paul Nielsen
Chris Shaw
Troy Ketsdever
Doug Lane
Mark Halstead

Upcoming SQL Events

Ski Attire

As the year winds down, we sincerely thank our SQL Family for coming to the meetings, for sharing and participating, and for growing our SQL community.   Our membership has grown and so has the attendance.

The Springs SQL Server User Group has a great following and is looking bright for the future.  If you haven’t heard already, we have a great event coming up in the beginning of 2012. We are kicking off the SQL Year with SQL Saturday #104, again including some awesome events:

Women in Technology with Karen Lopez ( b | t ), Meredith Ryan-Smith ( b | t ) and Thomas LaRock ( b | t ).
And Pre-Cons:

1. “Scaling SQL Server” (Glenn Berry)
2. “Data Warehouse Dimensional Design and Architecture Planning” (Erik Veerman)
3. “What’s In Your Utility Belt?” (Chris Shaw and TJay Belt)

To top it off, we will have a Ski Trip to Monarch the day after the conference.
Why do I mention all of this?   It would not be possible without the hard work of SQL community members who are making this happen, FOR the people and BY the people.  That is why we commemorate our Colorado Springs SQL Family with an Annual Christmas Party.

Christmas Party 2011

Red Gate SQL Christmas Party

Our very own Rebecca Mitchell, you all can refer her as her royal highness SQLPrincess, was contacted about an opportunity for our user group Holiday party to be sponsored by Red Gate.

We would like to extend a special thanks to Red Gate for awarding us funds to have an awesome party, Colorado Springs Style. Last night at Mr. Biggs Family Fun Center we had a blast with our members.  We didn’t just have appetizers and drinks – Nay Nay No No!  We had BBQ ribs and all the fixin’s.   We had reserved the VIP bowling alley, as members and their guests enjoyed unlimited bowling on half a dozen lanes.  Then we had a great time playing Laser Tag.  Why laser tag? our fearless Princess explained to Red Gate, “There’s nothing quite like taunting, err.. chasing after fellow database professionals in a round of Laser Tag.”

SQL Blue Team

We’ll call them “Red Gate” Team

For two rounds the Blue Team dominated, finding the Red Team’s fort and annihilating it.  I was able to take a few good shots at some Blue Team soldiers but we were still defeated – All in Good Fun!   I hope our members enjoyed their time playing Laser Tag and eating great food.
We anticipate another banner year in 2012.

Christmas Party Pictures


I leave you with this, Happy Holidays and thanks again to our wonderful sponsor, Red Gate and our Colorado Springs SQL Family. Enjoy the shared photos as well, taken by Troy, Rebecca and myself.

Call to Action: SecureKidsWeb

In recent news in the city I live in, a 12 and a half year old boy was severely injured at home. After a five day battle, the young man was taken off life support. This really hit home for us when we first heard of the news because it was my son’s first day of school and the young man went to the same school. The parents kept the accident private, but encourage these words:

“Please take good care of all your children and loved ones.
Watch closely what they look at on the Internet and things they talk about with friends. We feel we did not know enough and this lack of knowledge made us pay a high price !!”

It’s a shame when families don’t know enough about parental control. It is a vary sad thing to think this could of been prevented with simple, free Internet security tools or sites. I been using OpenDNS since my young ones were freely able to surf the web on their own computers. Not to mention, I was able to block out unwanted information from their Wii game console as well.

I want to share my quick lesson to anyone listening, and I encourage friends and families with children to do the same right now. I would also challenge and ask all my acquainted IT professionals that I know, personally or via Social Network, that we come forth and help. Please take a minute and share your Internet Parental Control knowledge and post and tag it #SecureKidsWeb

Create a free Opendns account at

Go to the Set up page and follow the instructions to set up your home router:

When set up, go to your OpenDNS Dashboard. You should be able to see a network address in the form of ###.###.###.####. That is called an IP address. Click the “Add Network” button and name your network.

Once you have added the Network, click on the Settings tab, and you will find the Web Content Filtering section. At this point, you can choose your filtering level, or customize your setting. By doing so, you can block content by category, i.e. Adult content, Sexuality, Drugs, Hate/Discrimination.

Once you have set up your OpenDNS, you may manage to see reports of site visited and judge for yourself whether you want to block addition site by name in the same manner by going to the Manage individual domains section.

Now you can have the ease to monitor and manage Web Traffic and content.

TSQL Tuesday #20: T-SQL Best Practices

It’s T-SQL Tuesday again, and although I seldom write on Tuesday, I attempt to participate. The brainchild of Adam Machanic (Blog|Twitter), T-SQL Tuesday invites new and existing SQL Server bloggers to post about the same topic on the same day.  This time around, the topic is “T-SQL Best Practices”, hosted by Amit Banerjee (Blog|Twitter)

What is T-SQL, anyway?
T-SQL, or Transact-SQL, is Microsoft and Sybase’s proprietary extension to SQL.All applications that talk to a SQL instance use T-SQL statements to talk to the server, regardless of the user interface or the application.

T-SQL is a proprietary top-down procedural programming language. It was originally developed jointly by Microsoft and Sybase for Sybase SQL Server on UNIX until 1993. From that point forward, Microsoft SQL Server was developed for NT Server. T-SQL is not an object-oriented programming language with object or methods and it does not compile into binaries. It is, however, a Server Side processing code used to query data. When I develop T-SQL, I treat it as any other programming language.

For T-SQL best practices, I recommend using programming guidelines similar to those of C#, Java or VB.Net.

User Defined Functions
I have always been a fan of functions. To “bring out the Fun in Functions”, I learned that in any programming language, if you write it more than once, write a function; if you write it three times, stop programming and start a new career. In T-SQL, a UDF can return a single value (Scalar Function) or return a set of data (Table Value).

Use naming conventions
Use common naming conventions to name your variables. This standardization allows any programming to read your code and understand what is being processed. First, figure out the purpose of the variable, then give the variable a precise name, and finally, imply its Data Type. For instance, the date variable @BirthDate [datetime] is easy to understand. However, if you named it @BornColumn [datetime], somebody down the line would be thinking “Huh?”It would not be so interpretive.

Legible Code
Like most word processing programs, SSMS will automatically wrap your lines of code we all write lengthy blocks of code if you don’t press at certain points you could theoretically have only one long line of code the best thing to do is to turn off word wrap for better legibility to do this, select Tools, Options, Text Editor, Transact-SQL, under Settings Turn off Word Wrap for legibility.

Commenting Code
In T-SQL, make concise comments describing the stored procedure or trigger. Best practice for commenting code is to make it understandable when you revisit this code years later. Dates and initials on comments can also alleviate problems.
There are two ways to comment code in T-SQL:

– Two hyphens create one line for commenting

/* This is a block of comments

The end delimiter of this comment
is an asterisk and front slash */

Version Control
SVN, Mercurial, Git, and SourceSafe are a few well-known version control systems to apply to source code. Although how do you source control T-SQL? It is not common to build the scripts in a programming IDE (Integrated Development Environment). Red-Gate has a product to source control schemas and data, but T-SQL saves in the database as a Server Side Script. I don’t use Red-Gate’s product, but I recommend that you save the scripts, whether stored procedures, triggers, or UDF, as a .sql file, and add them to your version control of choice.

If ifs and buts were candy and nuts, we’d all have a Merry Christmas. If pigs could fly, we’d all need stronger windshield wipers….As much as I wish this could be a feature rich post on how to create a UDF or implement version control on .sql files, it’s not. My sincere hope is that this will soon lead to that. In the meantime, these are just a few of my most recommended rules of thumb when developing T-SQL.

How I Overcame Epic Fail


You can’t avoid mistakes.  It takes a seasoned programmer to admit they’ve had their share of epic fails. I think I do well, as my boss exclaimed “You’re at the Real McCoy now!” … meaning (I think) I’m not working for internal clients anymore.   This is my first job working for an ISV (Independent Software Vendor) since I began programming.

While the wounds are fresh, I’d like to share some of my greatest challenges and how I overcame them.

Being a Software Consultant
I never thought working for myself and making my own hours writing code, wearing pajamas in the room next to where my one and three year olds slept would be a problem. Truth was, although you can actually make great money working from home, you don’t get the experience from team building, code reviewing or even source control.
I had to struggle to get out of my independent coder cocoon. I did this, at least in the inception of .Net, by going to TechNet events and listening to a broad array of developing with .Net sessions.  I also joined an AITP chapter and a Linux User Group. At that time I also learned about the open source community, and how you could share your projects with other users.  I started to interact more and more with developers on Internet forums. It seemed like I had co-workers at my disposal.  With a few clicks, an email or instant message could help me when I got myself into a tight spot.  I learned advanced techniques only by sharing with other developers. The greatest benefit I got out of this was learning how to manage time, project and money. This allowed me to take a position in management for the first time.

Falling Behind
Being a manager was not all it was cracked up to be. I thought I could come in fashionably late and leave as I pleased. I could, but the truth was, there were tasks to be done and staff to oversee. As business grew, the responsibilities increased. Instead of working less and making more, the norm was making less and working more. Weekly travel, hours on Saturday, and on-call on Sunday left me no free time. My greatest challenge was keeping up with the ever changing technology. I wasn’t programming on a daily basis. Implementing new systems meant hiring a contractor to take on a project for three to six months. I was no longer involved and I was no longer happy.
I left the management position to pursue what is dear to me, writing code. It’s hard to do a comeback.  It’s not impossible. Take for instance, Robert Downey, Jr.  He was a wreck and now he’s Iron Man. I knew I could do the same but I had a lot of catching up to do.  I’d missed several versions of Visual Studio .Net and didn’t even realize they dropped the “.Net” from it. SQL Server was totally different from 2000. I had to move quickly as a company took a chance on me even though my knowledge was a little outdated. The company gave me six months to progress.  I had to redo some .Net 2003 and take it to the next level.  Rather than playing it safe with 2005, I chose 2008. I also had to convert from my comfort zone of Visual Basic to C#.   I challenged myself to do this in three months rather than six.

How To Catch Up
I looked long and hard at what was around me. I knew Visual Studio 2003, but not as well as I knew Visual Studio.Net. After playing some catch-up on Visual Studio 2008 and SQL Server 2008 for two months, I registered for an exam to be taken a month later so I could still meet my three month challenge. The most important thing I did was to schedule and register for the exam. I know people who want to certify and study to certify, but it’s when you’ve paid money and scheduled a date that you’ve created yourself a real deadline.  
Still cloudy on the subject, I created a study plan.  I also found much help and resources on Twitter. Social Media was evolving, and virtual user groups and #sqlhelp hashtags were mentioned regularly on Twitter.  I became family with Twitter, again, creating a network of go-to experts that could get me out of a jam.  I found free training and learned about branding myself.
Maybe the stint in management could count for something. I worked hard at my career and planned it as a project with goals, and certifications served as my benchmarks.  I became certified in 2009 as an MCTSand achieved MCPD status in 2010. 
Now I plan on staying on the certification track.   I won’t allow my certs to expire and I vow to upgrade to newer technologies one day at a time.

The Source Code Tool Belt

As the cast of Home Improvement was heard to say, “What time is it?  TOOL TIME!”
probably violating some copyrights
Every profession has its tools of the trade.  Country doctors have the little black bag.   Cable guys bring Velcro totes with crimpers and punchdown tools.   The Maytag Repairman brings – nothing.  Anyway, don’t you wish you had tools like Handy Mandy, those talking tools that do the work themselves? Or wonder how to get Kevin Smith’s Mallrats character Silent Bob’s utility belt with grapplers or lassos, “Bigitty Bong”?  We’re talking about the right tool for the right job.   Here are some tools you can confidently hang on your source code tool belt.
For text editing, you can use the Windows Notepad by pressing the Windows© Key and the letter ‘R’, then typing “notepad”; or you can use other text editors, such as Programmer’s Notepad, Notepad2, and Notepad ++.   In a post earlier this year I listed Notepad++ as one of my favorite tools.  I use Notepad++ as my text editor for several reasons:  it handles multiple documents; it displays line numbers, which is valuable in writing code; and, with syntax support for just about every popular programming language from ADA to YAML, Notepad++ is just short of Visual Studio’s IntelliSense© in its ability to detect keywords and operators.
Notepad++ configured in Obsidian Style
How can you use Notepad++ instead of the default MS Notepad?   There are several techniques in doing this and you can search them online, however, here’s my preferred technique:
1. After installing Notepad++, go to the Notepad++ directory (C:\Program Files\Notepad++).
2. Copy the Notepad++.exe file and paste a copy of it in the same location.  This copied file will be “C:\Program Files\Notepad++ – Copy.exe”.
3. Rename the copied file “C:\Program Files\Notepad++ – Copy.exe” to “npp.exe”.
4. Go to your System Environment Variables:
  • Right click on “My Computer”
  • Click on Properties, Advanced, System Settings, Environment Variables
  • Under “System Variables”, choose “Path”, then click Edit
  • Go to the end of the Variable Value and type a semi-colon “;” followed by the Notepad++ path (C:\Program Files\Notepad++).
  • Click OK.
5. Open the run command, type “npp”, and press Enter.
6. Notepad++ should start.
If you’re like me, you probably have a mish mash of code samples dating back to when you first learned to write a User Defined Function in SQL, or created your first class in C++.   These code snippets might be saved in text files or even .vbs, .js, .cpp or .sql files. When it comes time to share or reuse that code, it’s a pickle of a problem to find it.  I will be the first to admit that I don’t have my code samples organized 100% of the time.
Here’s a great utility for this problem:  It’s called Windows Grep, and it searches content within files   (for you computer trivia collectors, the word “grep” was originally a Unix command meaning “global regular expression print “).  If I want to share a snippet of code that I know I wrote and saved as a .vb file, I use Grep to find this for me.  For instance, I can enter the word “Loop”, select my path “E:” drive, and search for all VB files, “ *.vb”.   Grep will then return any VB files with a Loop in the content.   
If you want a more organized method to search for code, use Evernote to organize your code snippets. Evernote is a great note taker that will synchronize your files online for all devices listed under your account.  “How is a note taker useful with source code?” you may ask.  For one, it saves your files online.  Also, you can categorize your code in Notebooks by language, i.e., JavaScript, Batch, C#, SQL and so on.  Each file can be tagged with specific keywords, for instance “Adapters”, ”Mouseovers”, or “TableValueParameters”.  This makes finding code easier.  You can select a Notebook of language like C# and narrow down the C# snippets to only show you code with “Adapters”. To add your current collection of snippets to Evernote, it’s easy:
Evernote view of my C# Notebook
1. Install Evernote
2. Go to Tools, Import Folders
3. Begin Organizing files into Categories and Tags
Notepad++, Grep, and Evernote already make a powerful source code toolbelt.  I might be leaving out ExamDiff, the free, easy to use code comparison tool with a few remembering capabilities, navigation and command options, and the ability to detect live changes.  I might also be leaving out the “new to me” CodeRush Xpress, Visual Studio plugin with features for navigation, refactoring, and much more. 
So, get out your laptop or toolbox of choice and put these freely available tools in there.  You’ll then be well equipped to master your source code.

Get every new post delivered to your Inbox.