Thursday, July 31, 2008

My first contribution back to the programming world!!

Well tonight I posted my first contribution back to the programming world. It was part of my Database QA Tool I am writing. It can be found here.

Code Project - Open Database Utility


The article above is for a connection file manager that can be integrated within another C# application to manage connections to a database from an application. I am excited an anxious for feedback on items that others can give me to help me progress.

Sunday, July 27, 2008

My limited expereience - start in programming

To pickup from my last post now I am going to elaborate on what I have done thus far. I took a C++ class in college and am not sure how I passed it but did. I don't recall anything from the class so I don't even consider it. My first attempt at Java (Required class) was 2 1/2 years ago and I had to drop it. I wasn't ready for it and I had a new job so I needed to focus. I took Java during the Spring 2008 term again and this was a totally different story. During the first class nothing made sense to me. The second one - nothing DIDN'T make sense - I know a double negative. It all clicked and amazingly easy. I passed the class easily and even enjoyed it. Since that was complete I decided to look at C# and see what I could do with it since they are both very similar. Note I used a Java Book by Tony Gaddis and it was excellent so I bought his C# book too (Starting out with C#). It took me a weekend to go through a 500 page C# book. I was shocked. It clicked too. I though maybe this software thing was cool and could do it.

Prior to this I was interested in database technologies and spent about a year going through PL/SQL and SQL Server programming books. I increased my SQL skill set tremendously during this time and got a lot of experience setting up and maintaining Oracle and SQL Servers.

I figured my next steps were to read, read, and when finished - read some more. I found a list of some recommended programming books and immediately purchased them.

  • The pragmatic programmer (Andrew Hunt and David Thomas)
  • Don't make me think (Steve Krug)
  • Facts and Fallacies of Software Engineering (Robert Glass)
  • GUI Bloopers 2 (Jeff Johnson)

I have completed GUI Bloopers (great book and would recommend to anyone) and am about half way through the Pragmatic Programmer and Facts and Fallacies. (Hey easy - only so much time in a day). I also decided to expand my library a bit and bought some more books to use

  • Microsoft Visual Studio 2005 unleashed (Sams)
  • Visual C# 2008 (MS Press)
  • ADO.Net 2.0 (MS Press)
  • JavaScript Step by Step (MS Press)
I am currently reading a book from MS Press on Debugging .Net 2 applications which is really informative too.


So that is my current "Educational Reading" list I am working on.


Now on to my first project. Due to confidentiallity reasons I have to be vague about what I mention so the names are changed to protect the innocent :o).

I wanted a way to create meaningful (this is the key) test data for my testing purposed. I also wanted to get some interaction with a form application and a database. I decided to create a tool to use during my qa role. This tool would do the following:

  • Connect to an Access, SQL, or Oracle database
  • Provide a snapshot of the database (Counts) to give an idea of how it was being used
  • Run data validation checks to ensure the database had no corruption
  • Generate Test data to insert in bulk to the database yet have the data be meaningful and unique
I decided on a Windows Forms C# application. Originally I wanted this to be completely independent of our software so I began designing. I implemented the database connection dialog using the XMLReader class and storing the connection substrings in an XML file external to the application. I gave the user the ability to open a connection string from a drop down list or manage the drop down list in a separate form. This form allowed users to Add, Edit, or Delete database connections from a single XML file. The user could also do a "test" connection via the click of a button. I spent a great deal of time learning this feature and how to apply "Global" settings so each one of my forms would use this string. I also set these other forms to inactive if a db connection was not set. After completing this I moved on to the "Statistics" page and realized a challenge I had ahead of me by providing connections to 3 different platforms (DB). I would have to create an implement a Data Access Layer (DAL). Not sure if that's what I wanted to do with my first project.

I turned to our existing product and utilitized an existing DAL and Logging mechanism that was already in production and stable. I threw out (saved actually - can use later) the XML db connection manager I had spent a week on spent a day implementing the common class from our existing apps. This worked nicely and gave me exposure to integrating with existing classes.

I completed the Statistics page and was able to run it successfully against all 3 platforms with less than a second lag time from form load to stats populated. I had a total of 23 different pieces of data to return so I think it went well.

The next step which I worked on this weekend was to logically skip over the data validation and create the GUI for my Data Generation. I didn't rush this one as this would require a lot of thought to implement correctly. I drew this out on paper 3 times before I wrote the GUI. This allowed me to catch 4 logic errors I would have missed if I jumped and started coding. I have the GUI done for half of the data generation and know how I need to proceed. I took the rest of the weekend off and spent it with my family and just did some reading. I figured I would come up with other ideas and have. I will sit down tomorrow and map out my plan one more time then start coding away.


Thus far I am happy with the way things are going but know I have a long, hard road ahead of me and am anxious to learn as much as I can as quick as I can.

All for now....

My First Blog Post - Wow

Well this is my first post on a blog of any kind. I never really found any use for blogging until now. I tend to keep my family life and events private from the internet and will continue to do so. This blog is going to be my "record" as I start my journey into the Software Development world.

First a little history -

I started out using computers in Elementary school (I'm 31 now). I didn't really get into them until I was a senior in high school. It was two years after high school (and partying)that I started to gain an interest in them deeply. I was then engaged to my soon to be wife and I broke her cheap 75 MHZ PC which she needed for school work. I spent hours trying to get it fixed and that was my first experience with troubleshooting PC's. As time moved on I eventually had two pc's and networked them together (parallel cable) to see how it worked.

Around the same time I decided to go back to school. I was going to get a degree in Criminal Justice and my wife asked me literally if I was "stupid". She said go into computers - it's what you like. I started pursuing my 4 year degree in Management Information Systems (MIS) in Fall of 99 and Completed it in 2008 (long story).

While working I began night classes and my interest in computers was steadily growing. I was loading bread trucks for a living (harder than it sounds) and was promoted into the engineering department to order parts for a manufacturing facility. That was a neat job but soon was ready for a change. I then went back to the shipping department as a supervisor for 3 years. During this time I gained valuable management experience and during the same time I opened my own small business on the side Building, Repairing, Upgrading, and Troubleshooting computers and networks. This experience was more valuable than I knew at the time.

At the end of my third year I had the opportunity to move into an Assistant Network Admin position and I took it. This role also included some accounting work which would be valuable later as well. The whole time my love for computers was growing. I was up to 4 pc's at the house and had a pretty decent network.

My big break came when I was offered a position in Tampa with a large private firm troubleshooting a software package that was sold externally. That break led up to the reason I am writing this blog now. I had previously been around users and pc's but was bored with it. I wanted a new challenge. I took the role and learned as much as possible and was rewarded with well earned promotions. I learned many things along the way including

  • Learned new Customer Support Methodologies for Software Applications
  • Increased troubleshooting skills dramatically
  • Became proficient in TSQL and PLSQL with SQL and Oracle Database Platforms
  • Increased *nix knowledge in supporting Oracle
  • Increased knowledge surrounding the Operating Systems and underlying functions
  • Fell in love with Virtualization technologies (VMware, Hyper V, Virtual Server, etc) :o)

I am currently testing this software package and have the opportunity to work into a Jr. Developer / Developer role with this company in the future.

Now during this whole time I was going to school, building a home, starting a family. As of today school is finished, I have a 4 year old and 1 year old boy, and the most understanding and giving wife a person could hope for much less have. I owe a lot of this to her and appreciate her more than I think she knows.

To give you an idea of what she has to put up with take a look at these pictures:





These are about a year old but indicate what I do in my spare time :o).

I currently have enough PC's for a couple of households:

  • Main PC (Gaming, Dev, etc) Quad Core Vista Ultimate 8 gigs ram - Dual 22" LCD's- 8800 GT
  • File Server (Storage only) AMD3000XP 1.5 gigs Ram, Server 2003, 2.5 TB of storage
  • Test Server(VMWare) Intel Core 2 Duo, 8 Gigs Ram, Windows 2008 with Hyper V - love this role!!!
  • Wifes Machine - AMD X4200, 2 gigs ram, Windows XP Pro
  • Home Theaters PC - AMD X4200 - 2 gigs ram, Geforce 7950 GT, 1 TB storage
  • Desktop Test Machine - P4 2.0, 1gig ram, XP Pro / Ubuntu Linux
  • Spare Machine (Dust Collector) - AMD Athlon 1000, 768 mb ram - no OS
These are all networked together with Gigabit Switches and have an hour battery backup for each.

Ok - Just read back over this before posting. I think I fit the "Geeky" enough mold to be a developer one day.

Moving forward my aspirations are to learn as much about the software industry and the development process as possible. In my next post I will talk about what I have done thus far and my near future / long term plans.