Wednesday, May 16, 2012

Guess and Learn


By Christophe Verdier (cc)
Some rights reserved
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.

Monday, May 07, 2012

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.

STOP!!

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.

Monday, April 23, 2012

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


Friday, February 17, 2012

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

Scripts


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.
https://github.com/extofer/l33tPassGen



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.




Wednesday, February 08, 2012

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.
Unable to display content. Adobe Flash is required.

UPDATE: 03/09/2012
Ninite is now also available for linux at http://ninite.com/linux/

Thursday, December 08, 2011

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
SpringsSQLParty

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.

Monday, August 22, 2011

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 http://www.opendns.com/.

Go to the Set up page and follow the instructions to set up your home router: https://store.opendns.com/setup/

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.

Tuesday, July 12, 2011

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
GO
CREATE PROCEDURE sp_TSQL2sDay

/* This is a block of comments
The end delimiter of this comment
is an asterisk and front slash */
GO
ALTER PROCEDURE sp_TSQL2sDay

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.


Tuesday, June 28, 2011

How I Overcame Epic Fail

FAIL STAMP
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 MCTS and 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.

Thursday, June 16, 2011

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.

Notepad++
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.

Grep 
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.   

Evernote
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.

Thursday, June 09, 2011

10 Super Powers Developers, Designers, and DBAs should have

I would like to send a tweet telepathically. I would like to jump over datacenters with one leg. I would like to eat Cheetos© without orange fingers, cool my Mt. Dew© with my bare hands and warm my coffee by looking at it. These powers would be mine if I were bitten by a radiation-infected squirrel, or hit by meteor residue that was actually a piece of a planet from another universe. However, being a mere mortal, I have been forced to acquire my super powers in other ways as a professional in the field of software, web and database production.

I've been developing software for over a decade and have worked in various industries. When I worked for a consulting firm, I quickly learned that I needed a well rounded skill set to be able to give a client what was needed at any moment. My skills are always being put to the test. Just last week I had to solve some problems that my superiors couldn't. So now I wonder, would I have been hired if I lacked those skills? Would I have been promoted?
Every now and then I read an article listing the skill set every Information Technology professional should have. I’d like to share my own list of skills that I believe developers, designers and DBAs should have.

Know how to fix common PC problems. Since you are in IT, don’t be surprised when family, friends or coworkers ask you to fix their computers. Unless you prefer to wear the infamous “No, I will not fix your computer!” t-shirt, you don’t want to get caught with your pants down, not knowing how to map a drive or printer, edit a registry, configure email POP accounts, or clean out a virus. I believe anyone in the field, from Jr. Programmer to CTO of a corporation, would rather NOT put in a call to Systems Support to fix a minor PC problem.


Understand general systems administration. IT professionals should know basic networking, how to trace a network and run cable. Do you know what I mean when I say "White Orange, Orange, White Green, Blue, White Blue, Green, White Brown, Brown"? Can you to trace a route and analyze packets from one IP network to another? You need to understand basic networking to understand a trace, why IP numbers change, why it makes stops, and so on. Permissions are also important in that rights must be granted or revoked for files or data you could be programming for. You need to understand these underlying hardware and software components.



Write a script. Shell script, or batch programming as it’s also referred, is needed to be able to manipulate files and directories, and to perform other system operations. You don’t have to be a programmer to know your OS shell commands. Unix Shell, MS-DOS, and PowerShell are examples of interpreters that will execute scripts. Other scripting languages like AppleScript or Windows Scripting Host are interpreted by an engine other than the OS command line.

Create and test backups. This topic cannot be stressed enough and should be in two parts. First, implement source control. Source control is very important. It allows you to check versions in, and versions out, and it manages changes in your code. Some source control tools include Subversion, Git or Visual Source Safe. Second, be able to back up your files, and even your version control repositories. I have found it easy to use tools such as TeraCopy, Dropbox, or Allwaysync to back up synchronized versions of code or databases to other drives or even offsite disk space. In either case, always test your backups. If you don't test backups periodically (I recommend once a month for each occurrence), you won’t know if the backups are complete or corrupt.


Train other developers, designers or DBAs. It is the opinion of many that “The Best Way to Learn is to Teach”. You should be able to take the time to explain the back-story of your work to others. Training forces you to increase your knowledge on certain topics. If you can explain something to others, then you really know it. There’s tremendous satisfaction in seeing your team, colleague or friend implement a concept you taught.



Contribute to the Open Source community. More and more, I see job postings with open source community requirements. My first thought is, “these are FOSS (Free and Open Source) companies requiring this”, but then, I’ve seen the same requirements in .NET jobs. Open source was once a subculture; now it’s a more of a mainstream obligation for a developer to share code, contribute to large projects, test and debug, publish documentation, and generally participate in the tradition. SourceForge was one of the first popular sites to host open source projects; along came CodePlex, Google Code, and GitHub, just to name a few.


Participate in social networking. Make social networking work for you, not against you. Define your personal brand and share that brand on Twitter and LinkedIn. Make connections with other professionals. Get the word out. See how Social Networking has worked for me.


Blog. Actively manuscript your knowledge or experience in an IT related weblog (blog). Share code, design ideas, database tips or other relative material. You are in IT, have a dot com (website) by your name. Become a resource.


Participate in online help. Don’t keep your knowledge to yourself; share the wealth that is your intelligence. Some of the best places to help others are forums such as StackOverflow and the MSDN forums. Another way of participating is to post questions to your social networks, for instance, the SQL Server Community. To post help questions to this community, use the #sqlhelp hash tag.


Do some public speaking. Start by attending user group meetings and speaking to your peers. I started with a 101 in a user group, then had abstracts selected to conferences. Get comfortable with a topic you know and get the nerve to make a presentation on it. You use all your super powers here - sharing source code, giving help, and training.


Wolverine
If you are not Wolverine or have Spidey-sense, use this guide to pinpoint and sharpen your skills. With these 10 superpowers under your belt, you should be ready and able to meet, and even enjoy, some of your own software, web, and database challenges.

Friday, June 03, 2011

Class of 2011: New era of programmers

“If I knew then, what I know now”. Back in the Dark Ages when I decided on a career in programming, resources were limited. The Internet was not evolved. I waited in computer labs just to get an hour on an x86 PC with a 14.4 modem to connect via Kermit, an Internet terminal service. I didn't know which direction to take or what language(s) to learn. I had a degree in Mass Communications but wanted to start my career over using the DIY method. It’s taken me years to get where I am now. Nowadays, beginning to program is not as difficult as it was for me. If I had the opportunity to do it again and shorten the trip, this would be my advice:


First, dedicate a computer to programming. In my recent series about hacking, “School of Hacks”, I recommend a Unix-like operating system, or Linux distribution, but that’s not necessary. If you only want to learn programming, Windows is fine. Furthermore, I’ll be sharing information for Linux and Windows operating systems.


Second, select a semicolon programming language, and learn the language. Programming languages vary - some update frequently, others seldom change. Learning a semicolon language makes it all better when the common methods and functions are similar within the array of that language. Once you learn one language, it would not be too hard to learn another. Kind of like learning the grammar and semantics of Spanish, then translating that to Italian. What’s important is that you are learning programming logic, i.e., conditional statements, while loops, and switches. For you to begin, here are a few highly and more important, semicolon languages to choose from: C#, C, C++, Java and Python.

Third, download and get some hands-on experience with an Integrated Development Environment (IDE). The IDE is the locale where the code compiles. In the past, it was more of a challenge getting the hands on experience with an IDE. Nowadays you can download the IDE’s and install them on the same PC you use for programming. Each semicolon programming language has its preferred IDE. Let’s Start with C#. I currently work with C#, although my first language was a flavor of BASIC then onto Microsoft’s Visual Basic for Windows programming. Windows programming is now readily available online even for Microsoft .Net Framework. You can now get a Microsoft Visual C# Express version at no cost. On the same .Net Framework, if you wish to learn C++, you could download Microsoft Visual C++ Express free version. Microsoft Visual C# and C++ are for Microsoft Windows development only. There are also non Microsoft IDEs for Windows programming, such as Eclipse IDE for C and C++. These IDEs are also available for Mac and Linux. If you are interested in C or C++ development specifically for Linux platforms, I recommend GCC, the GNU Compiler Collection. Although, you might see that the GNU Compiler Collection handles Java, I recommend Sun’s, I mean - Oracle's Java. Java is a powerful, popular and widely used programming language. It was created by Sun Microsystems, and it now owned by Oracle. That being said, you can download a Java IDE from the Oracle site in the Sun Developer Network in flavors for Microsoft Windows, Linux, Solaris and Mac. You can download the NetBeans or the EE Bundle. Lastly, I recommend Python as a good beginner language. You can follow my article, Installing Python on Linux, or you can download Python 2.7.1 Windows Installer.

Fourth, get these tools and put them in your programmer’s toolbox: First, a printable PDF file called Python Cheat Sheet, and a C Style, or semicolon language Cheat Sheet for C, C++ and Java. Also, a printable Visual C++ Key Binding Poster, a Visual C# Key Binding Poster.

Fifth, use a good map to show you the way.  From the curriculum taught in “Introduction to Computer Science” at MIT (don’t ask), I gathered these topics you can reference to be on your way to learning programming:
  • Hello World
  • Operators
  • Types
  • Boolean
  • Conditional Statements (If Statements)
  • Loops
  • Methods and Functions
  • String Operations
  • List and Collections 
Sixth, practice, practice, practice. I can only take you so far. You can continue the DIY method, all you need to Google keywords, “learn” or “programming”, the topic, and the programming language, for example: “learn C# Operators“. And lastly, you need to practice programming. Once you mastered one language, you can graduate to more complicated Object-oriented programming and topics, like:
  • Objects
  • Inheritance
  • Polymorphism 
So far, this lesson has cost you nothing, except a computer which you probably already had. It doesn't take much money or time to get started. Like I said before, if I knew then what I know now, I would have started on a semicolon, or C like programming language, I would have begun with free and open source software, or even just with free software IDE. I would have spent more time understanding arrays as a collection or loops. Whether you’re a high school graduate in Cocoa Beach, Fla. or an elementary school graduate in Colorado Springs, this is a good start. It’s a new era of learning, and you can be a new programmer at no cost.

Wednesday, June 01, 2011

Installing Python on Linux

I’m back. So last time I wrote, School of Hacks – Part 2, I emphasized the use or learning and understanding a UNIX/Linux Operating System. Based on the feedback, it goes without saying that learning Python is a popular response to learn next.

I plan to get you started on the right foot and in doing so, I anticipate we will program a strong password generator. The very first lesson of course, is this lesson: Installing Python on Linux. In part 2 of this series, I described the the meaning behind Linux distributions, most Linux distributions come with Python installed. However, I will show you how to install Python on Debian and Fedora Linux. I chose these two distributions because they are the two major distros other systems are based on. Ubuntu, Knoppix, Linspire and others are Debian based while Fedora is RPM based just as Mandriva, SUSE and all Red Hat versions.

RPM Based Python installation
  • Boot up your favorite RPM based Linux ditro, I’m using Fedora.
  • Go to the Python for Linux RPM page at http://www.python.org/download/releases/2.4/rpms/
  • Download the Binaries for Fefora Core 3, they are i386 RPM
  • When the download is complete, open a console and go to the python-2.4.2.4….. file
  • Make sure you have root access, otherwise type the following commands
localhost:~$ su
Password: [enter your root password]

  • Type in the following command
  • rpm -1 python2.4-2.4-1pydotorg.i386.rpm
  • you should get a message, to read message
cat /var/spool/mail/root | less

  • You should be able to start Python by typing Python on the console. This command can also be used prior to installation or to see the Python version currently installed.
Debian based systems could also already be pre-installed with Python. However, if need be, installing on a Debian based system might be a little easier.
Debian Based Python installation

  • Boot up your favorite Debian based ditro, I’m running Debian 5
  • Open a console and make sure you have root access, otherwise type the following commands
localhost:~$ su
Password: [enter your root password]
  • Type in the following command
localhost:~# apt-get install python

  • Do you want to continue? [Y/n] Y

  • At this point, you should be able to start Python on the console on a Debian based system.
Although this covers a broad range of distributions, the categories of Linux distributions also include Gentoo, a portage package distro.
If you can go to a console, and  type:

python
1+1

you should see and answer of 2, if so, you have properly installed Python on Linux and this should get you started in programming Python.