Wednesday, November 19, 2008

Oracle Manager

Over the past few years I have learned quite a bit about Oracle Databases and the management functions that go along with using Oracle as a back end for applications. Creating users, backups, and settings can be time consuming and confusing for most users. To assist those who do not have the time (or desire) to learn the ins and outs of this I am creating a utility in C# that will automate most of this for a user. Keep in mind this is not intended for any production type of environment. This is geared more towards small development shops where Oracle isn't the main Database Platform of choice but is still required.

Below is a screen shot of the main page along with the Create New User tab. The main roles needed in our environment are listed in the checked list box (I will probably add additional at a later time).
































Imports and Exports:

Importing and exporting dump files from Oracle can be time consuming and very hard to do. It requires multiple steps using multiple utilities. With this tool (installed on the Oracle Server) a user can import a dump file in a few simple steps:

  1. Browse for dump file
  2. Specify From User
  3. Specify To User and Password
  4. Click on the import button


This is far simpler than creating the user in SQL Plus or Toad and then importing using a command line utility on the server. Plus it doesn't require in depth knowledge of Oracle Administration that may be needed.

Basically - it takes all of the guess work out of it and takes stress off of me supporting others. :o)

Saturday, November 15, 2008

One Step at a time

Well the past few weeks have been interesting. I created a tool to automate a data creation task that I had to perform at least twice a week. This task took two hours a pop. It took about 3 days to create the automated application but has been well received. It is now being run twice a day for our local group and also by a remote group. This was a great learning experience for me.

After that was complete I wrote a tool to fix a data issue with our application. This tool was long over due and has also been well received by management. One step at a time - what's next on the Agenda? WPF, WPF, and more WPF...

Sunday, October 19, 2008

Web UI Testing put to good use :o)

Well my wife's high school needed some votes on a local news channel site to win some recognition. The rules say you can only vote once per hour. To keep things ethical I have limited our voting to 2 votes per hour (1 for me and 1 for my wife). To do this though I needed an automated way of putting in the votes. I used an open source web UI testing tool (Watin) to create a console app that opens the web page, selects the correct radio button, and then hit the vote button. Once complete the application closes IE. It then waits 60 minutes and starts all over again. I have this running on my virtual machine servers so it can run for the next few days.

This was a neat test and now has my interest in this tool for other items. While I am not at the computer during my votes - I am still abiding by the rules :o).

Happy Voting!!!!

Update - Still busy - just not blogging

Well it has been a while since my last post. I have been quite busy though. I have written a few test apps for various product support issues. My latest test app (in progress) is similar to a Microsoft UDL file. This app will let you run queries against and of my products databases using any of the data providers we utilize. This will give more details on why the connections / apps are failing.

My latest project is to write the automation that allows databases to be created (SQL and Oracle) once the software builds are complete. This is not a difficult task but is time consuming. There are some proprietary methods that must be used and learning these is not difficult - but can by tricky. Oracle and SQL behave so different they must be made to mimic each other.

Here are the steps I have to perform (all automated):

1) Create Database Connections
2) Create the Database and users on the database servers (Oracle and SQL)
3) Use our system to generate the schemas for the database
4) Populate the databases with sample data
5) Connect our software application to the databases

I am currently on step 3 due to time constraints.

Monday, September 15, 2008

SQL Query Tester

Well I took some time off from progamming at home to spend time with the family. Life is going great and my development juices are flowing strong. The balance between family and work is delicate so I had to ensure that remained balanced. I did manage to write another tool I have been needing for a long time. This tool will test a query against Access, SQL, or Oracle. It is written in C# using some ADO.Net libraries. It is pretty stable and I have had some positive feedback from some developers in my group using the tool to write some application queries.



Here is an image of the tool to the left.


Below is the Grid View of the results returned.











This is a simple tool but highly effective. I am still searching for my next project. I am leaning towards a some type of scripting (Javascript, VB, or Pearl).

Tuesday, August 5, 2008

SMTP Email - Another Tool

We have been having some email SMTP issues as of late with our software package. I decided to write a small Forms app that allows users to enter SMTP information and send a test email. It was straight forward and easy to write. I even added some cleanup to the text fields to ensure the values were set correctly. While not a lot to look at it should be very useful in troubleshooting email issues.

Here is the app. It includes a results section that throws exception errors as well which will be very helpful in troubleshooting.



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.