Portfolio

Java

Java

I consider Java the heavy part of this document. So it's going to take a while to get all of the initial examples into place. But the good news is that I have put together my Java Servlet Shopping Cart, which is now available for download.  I put my heart into this Shopping Cart, I guess the Computer Science Department thought it to be a good idea to have JRUN as the Web Server, rather than Apache Tomcat. I imagine their thinking was that students would not be able to download a shopping cart from the Internet, they were 100% correct. So this is a Biggy, there are 19 .java files and the same amount of .class files. All formatted with my own style sheet and personalized with directions for compiling and running.

In a class I took, we spent a few weeks talking about Security and what not. For this course we were to make a Password Window using the JWindow or the JApplet classes, respectively. The Professor decided that it would be best to not play with an applet and just do a command line implementation. So this basically boiled down to using the String class to count the size of the user input and the RegEx class, new to versions 1.4.1+, to match correct type passwords. So this was a bit like the simple JavaScript example I have in my JavaScript file to the right). So if you are in Web Design or non-Java Web Development, take a look at the Password Checker files and you will see it's no big deal. The program comprises of two .java files, Password.java and ValidInput.java. The ValidInput.java is just the same user input class I use on a lot of my other programs, nice to get correct input inside of a never ending for ; ; loop.

I have written two Java implementations implementing Semaphores with the Mutex, one with buffer and one with no buffer. I listed these over in my OS folder, but figured I would put this here as well

Another important piece I have finally gotten situated is my first attempt at a 3-tiered Client Server Architecture; using RMI, a MYSQL database, and an Applet for the client. This was also my first attempt at a substantial amount of Inheritance along with using Hash Map technology. The image below describes briefly how I set this Client Server Architecture up.

3-tiered image

This flowchart was an initial plan, as time went by I did change things as much as needed. This is not great work, hey I only got a 'B' is this class, but learned how far I can go into making an efficient and Object Oriented Program. You can download the entire program here, or can view the code, or just for an explanation of everything view the doc. Special note, about Applet, the J2EE 1.3 compiler was not set up at the time of this project to connect to the database. The JDBC does connect to the server, click here to read the code and doc.

Updated 12-05-2003



C++

C++

This past summer I wrote my own rendition of the 0/1 Knapsack Problem. This program computes the maximum profit and time efficiencies of the 0/1 Knapsack Problem. The algorithms which were used to solve the problem are the Best-First Search with Branch and Bound Pruning Algorithm and the Dynamic Programming Approach, respectively.  The program is comprised of two files, Knapsack.cpp and Nodes.h; click the links if you wish to view them or click here to download the entire program including the raw data and the synopsis.

Wrote a C++ program for my Operating Systems class (also in the OS folder) using the PThread API, well to say the least I was a bit overwhelmed. At Franklin, the CS Department decided to switch to Java, from C++ as their main high-level language for teaching; so what that means is that a lot of us aren't very comfortable with C/C++. The program is about running Cheers for sports teams. If you would like to view the two classes, you can catch them at cheer.c and cheer.h. It barely works and it showed on my grade, but this Operating Systems course is extremely interesting. No, the book stinks, but writing programs with threads is really cool; I compare it with when I was a pizza manager. I didn't make much money, nor was it a great career choice, but there was a great satisfaction finishing a pizza, cutting it up, and putting it in the box; and that is the same feeling I get with threads, who knew?

Made a C/C++ Client Socket for the Networking course, I like to refer to the C family of languages as C/C++ because I write "mostly" in C but compile in C++. Reason being is that many of the Computer Science Labs are specific and not large, emphasizing a technology not something which is redundant. Consequently, the code is a bit redundant, but can't see making things more difficult than needed for a Socket Client. The program is a Balderdash game which is about guessing names. Basically, we write a client to communicate with a server, which the professor provided for us as an executable file. The subsequent labs are to create a server, of our own to communicate with the client; then create the entire process again by allowing multiple users, via Solaris or POSIX threads, respectively. If you would like to check out my code, then lab1.cpp is the client, and dasher1 is the server executable; or at your discretion you may down load the entire program, including the client executable at: Balderdash.

Updated 2-26-2004



RDBMS

RDBMS

I wanted to put a nice and pretty picture in here, but it is way too big. If you want to see what I a talking about then click to see the Relational Database I put together. (Just a note, to enlarge the image: just click it in Netscape 7+ or in IE 6 just quickly pull back on the mouse lever then click the topical legend tool).

This was a Course Project I created back in the fall of 2000. Thinking back, that definitely was the best summer of my life, though this work is not nearly as wonderful. The diagram was pursued to a tee and everything worked out in the end; which was to create a student schedule through a database! If you are interested in the SQL code they are viewable at: Main Code and here at the statement that unifies the entire RDBMS. This entire package can be downloaded from here.

Updated 9-02-2003



SQL

SQL

In this folder I am just going to talk about some SQL or T-SQL programming I have developed. I will talk about the Stored Procedures, Inner Joins, and Multiple Where's.

Yes, I do get Recruiters calling me, seemingly daily, so I try to give them a rough guide to my SQL development skills. To begin I will explain a simple Stored Procedure (ala Enterprise Manager; Microsoft, not Oracle) I wrote back at an old employer back in early 2004.

Create Procedure getValidStateZipCode
(
    @ThreeDigitZipArea varchar(3)
)

AS
SELECT State FROM mb_AreaRate
WHERE Zip = @ThreeDigitZipArea

GO

As you can see, this is a pretty direct, and albeit, a simple SQL statement. The name of the Stored Procedure(SP) is getValidStateZipCode. This SP takes in one parameter, that being @ThreeDigitZipArea, from there it compares that value against a zip code from any state with that zip code.

Next, I call it in a classic ASP 3.0 page. After setting the appropriate variables for connections and values and such, I enclose it in a Sub Procedure, so I may call it multiple times on that application page. Then call get the zip code from the previous page and take only the left 3 digits of that value, which hence will become the parameter. So I send the parameter to the SP, which resides in the SQL Server. The SQL statement in the SP in is then run and returns the correct state for that zip code. At the end I close the connection because I will no longer need it, because I have the value I need, plus other users on other pages or even this one will need to access the database so the lease use the better.


dim strNewState, ThreeDigitZipArea
dim strConnect, objRS
dim objComm, objParam
Set strConnect = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")

strConnect.open "PROVIDER=SQLOLEDB; DATA SOURCE=xxxxxxxx; UID=xxxxxxxx; PWD=xxxxxxxx; DATABASE=xxxxxxxx"

sub GetZipCodeStateInfo
    Set objComm = Server.CreateObject("ADODB.Command")

    objComm.ActiveConnection = strConnect
    objComm.CommandText = "getValidStateZipCode"
    objComm.CommandType = adCmdStoredProc

    'now the parameter     ThreeDigitZipArea = left(intHomeZip,3)
    set objParam = objComm.CreateParameter("@ThreeDigitZipArea", adVarChar, adParamInput, 3)
    objComm.Parameters.Append objParam
    objComm.Parameters("@ThreeDigitZipArea") = ThreeDigitZipArea

    'stored proc
    Set objRS = objComm.Execute
    Set objComm = Nothing
    Set objParam = Nothing
    strNewState = objRS("state")
end sub

Just when work is beginning to get monotonous, you spice up your day with a little SQL. To me, SQL is a vacation, or just a great way to clear your head after looking at thousands of lines of code. Not much to SQL, so lets jump straight to it!

I have not done a lot of SQL, when I get the opportunity I prefer to go into "SQL View" in MS Access; just to practice my SQL. Since SQL is very simple, and DBMS touches base a lot stronger, here is my most advance use of SQL; minus "if" statements.

SELECT IS_REGISTERED.RECORD_ID, IS_REGISTERED.STUDENT_ID, COURSE.COURSE_ID, COURSE.COURSE_NAME, IS_REGISTERED.COURSE_TAKEN, IS_REGISTERED.CHECK_PREREQUISITE, BUILDING.BUILDING_NAME, SCHEDULE.ROOM_NUMBER
FROM IS_REGISTERED, COURSE, SCHEDULE, BUILDING
WHERE COURSE.COURSE_ID = IS_REGISTERED.COURSE_ID
AND SCHEDULE.COURSE_ID = COURSE.COURSE_ID
AND BUILDING.BUILDING_ID = SCHEDULE.BUILDING_ID;

So you probably think that this is just fine and dandy, well think again. I once got in trouble because of this kind of coding. Sure, it works and everything, but besides it being hard to read, it is not very efficient. So now I will demostrate the same query statement useing T-SQL and utilizing the Inner Join.

SELECT IS_REGISTERED.RECORD_ID, IS_REGISTERED.STUDENT_ID, COURSE.COURSE_ID, COURSE.COURSE_NAME, IS_REGISTERED.COURSE_TAKEN, IS_REGISTERED.CHECK_PREREQUISITE, BUILDING.BUILDING_NAME, SCHEDULE.ROOM_NUMBER
FROM IS_REGISTERED, COURSE, SCHEDULE, BUILDING
    INNER JOIN COURSE
        ON COURSE.COURSE_ID = IS_REGISTERED.COURSE_ID
    INNER JOIN SCHEDULE
        ON SCHEDULE.COURSE_ID = COURSE.COURSE_ID
    INNER JOIN BUILDING
        ON BUILDING.BUILDING_ID = SCHEDULE.BUILDING_ID

When I was at Nationwide writing Stored Procedures (SP), I was given these absolutely hidious SQL Statements to write. In a week or 2 when my next project asks for Transactions, I'll add a sample. But below is an SP that I just wrote, the idea of it is to exclude any COM component, or if ASP.Net to simply my Visual Basic or C# code. Now this isn't the most efficient SELECT of all time, but it is limited to just 3 tables and I didn't have to use any INNER JOINS so it makes a little sense! So as you can see, SQL can get a bit nasty. I wrote it like this because I absolutely hate writing embedded SQL, I just can't get the hang of it!

Create Procedure getZipFactor
(
    @ZipCode varchar(5),
    @State varchar(2),
    @Gender varchar(6),
    @Age varchar(6),
    @SpouseGender varchar(6),
    @Spouse varchar(3),
    @Children varchar(3),
    @SpouseAge varchar(6),
    @ChildAge varchar(6),
    @NumChildren varchar(1),
    @DaysCovered varchar(3)
)

/*
    Purpose: This SP is designed to do all the calculations for RM App Quote.
        It's purpose is to eliminate dirty functions and/or COM component.
    Author: Joe Gakenheimer
    8/26/2004
*/

AS
DECLARE @ShortZip varchar(3)
DECLARE @FortisFactor decimal(8,2)
DECLARE @PrimaryRateLow decimal(8,2)
DECLARE @PrimaryRateHigh decimal(8,2)
DECLARE @SpouseRateLow decimal(8,2)
DECLARE @SpouseRateHigh decimal(8,2)
DECLARE @ChildRateLow decimal(8,2)
DECLARE @ChildRateHigh decimal(8,2)
DECLARE @PremiumLow decimal(8,2)
DECLARE @PremiumHigh decimal(8,2)
DECLARE @SpousePremiumLow decimal(8,2)
DECLARE @SpousePremiumHigh decimal(8,2)
DECLARE @ChildPremiumLow decimal(8,2)
DECLARE @ChildPremiumHigh decimal(8,2)
DECLARE @PremiumTotalLow decimal(8,2)
DECLARE @PremiumTotalHigh decimal(8,2)
DECLARE @EachChildRateLow decimal(8,2)
DECLARE @EachChildRateHigh decimal(8,2)
DECLARE @StateFee varchar(8)
/*Get Zip Code*/
SELECT @ShortZip = Left(@Zipcode, 3)
SELECT @FortisFactor = FortisFactor FROM mb_arearate WHERE zip = @ShortZip


/*Get State Fees*/
SELECT @StateFee = Fee FROM StateFees
    WHERE state = @state


/*Get Primary 250*/
SELECT @PrimaryRateLow = LowRate FROM StateRates
    WHERE State = @State
    AND sex = @Gender
    AND age = @Age

SELECT @SpouseRateLow = LowRate FROM StateRates
    WHERE State = @State
    AND sex = @Gender
    AND age = @SpouseAge

SELECT @ChildRateLow = LowRate FROM StateRates
    WHERE State = @State
    AND age = @ChildAge

/*Get Primary 500*/
SELECT @PrimaryRateHigh = HighRate FROM StateRates
    WHERE State = @State
    AND sex = @Gender
    AND age = @Age

SELECT @SpouseRateHigh = HighRate FROM StateRates
    WHERE State = @State
    AND sex = @Gender
    AND age = @SpouseAge

SELECT @ChildRateHigh = LowRate FROM StateRates
    WHERE State = @State
    AND age = @ChildAge

/*Give Spouse No Value If No*/
IF @Spouse = 'no'
    BEGIN
        SELECT @SpousePremiumLow = 0
        SELECT @SpousePremiumHigh = 0
    END


/*Get Premium*/
SELECT @PremiumLow = @PrimaryRateLow * @DaysCovered * @FortisFactor
SELECT @PremiumHigh = @PrimaryRateHigh * @DaysCovered * @FortisFactor

IF @Spouse = 'no'
    BEGIN
        SELECT @SpousePremiumLow = 0
        SELECT @SpousePremiumHigh = 0
    END
IF @Spouse = 'yes'
    BEGIN
        SELECT @SpousePremiumLow = @SpouseRateLow * @DaysCovered * @FortisFactor
        SELECT @SpousePremiumHigh = @SpouseRateHigh * @DaysCovered * @FortisFactor
    END

IF @NumChildren < = 3 AND @NumChildren != 0
    BEGIN
        SELECT @ChildPremiumLow = @ChildRateLow * @DaysCovered * @FortisFactor
        SELECT @ChildPremiumHigh = @ChildRateHigh * @DaysCovered * @FortisFactor
    END
IF @NumChildren > 3
    BEGIN
        SELECT @EachChildRateLow = @ChildRateLow / 3
        SELECT @EachChildRateHigh = @ChildRateHigh / 3
        SELECT @ChildPremiumLow = @EachChildRateLow * @NumChildren * @DaysCovered * @FortisFactor
        SELECT @ChildPremiumHigh = @EachChildRateHigh * @NumChildren * @DaysCovered * @FortisFactor
    END
IF @NumChildren < 1
    BEGIN
        SELECT @ChildPremiumLow = 0--this works and don't need @child
        SELECT @ChildPremiumHigh = 0
    END

/*Get the Premium Totals for both High and Low Rates as well as State Fees*/
--maybe need a case so I can delinate when no children and no spouse
SELECT @PremiumTotalLow = @PremiumLow + @SpousePremiumLow + @ChildPremiumLow + @StateFee
SELECT @PremiumTotalHigh = @PremiumHigh + @SpousePremiumHigh + @ChildPremiumHigh + @StateFee


/*Main*/
SELECT Distinct @PremiumLow AS PrimaryPremium250, @SpousePremiumLow AS SpousePremium250,
    @PremiumHigh AS PrimaryPremium500, @SpousePremiumHigh AS SpousePremium500,
    @ChildPremiumLow AS ChildPremium250, @ChildPremiumHigh AS ChildPremium500,
    @StateFee AS StateFee250, @StateFee AS StateFee500,
    @PremiumTotalLow AS PremiumTotal250, @PremiumTotalHigh AS PremiumTotal500
FROM StateRates

GO

Well, sorry about all of that code, for this example I will show how to use Error Handling and show an example of an INSERT using Error Handling. So below is a code snippet of Error Handling code I use in my SP's:

DECLARE @myERROR int, -- Local @@ERROR
        @myRowCount int -- Local @@ROWCOUNT
    BEGIN
        BEGIN TRAN
            INSERT INTO FACULTY
            (
                LAST_NAME, FIRST_NAME, TITLE, PERSON_ID
            )
            VALUES
            (
                @LastName, @FirstName, @Title, @Person_ID
            )

                SELECT @myERROR = @@ERROR, @myRowCount = @@ROWCOUNT
                IF @myERROR != 0 GOTO HANDLE_ERROR

        COMMIT TRAN
        RETURN 0
    END

HANDLE_ERROR:
ROLLBACK TRAN
RETURN @myERROR

GO

So it's pretty easy, click here if you want to see the entire getInsertPersonalInfo SP and see how it all works. Should be pretty basic to understand, especially if you have a background in Basic or VB. Also, have included a couple of simple Update and a Delete SP's which can be viewed here.

Updated 9-23-2004



JavaScript

JavaScript

JavaScript is a very strong language. Traditional programmers tend not to think of a scripting language as real language, but JavaScript is no scripting language. In a marketing venture between Sun Microsystems and Netscape, JavaScript was created. It looks like Java, but it's totally different, they created the name because Java is very popular, and they named it script; not to diminish Sun's language.

There are a ton of uses for JavaScript, but its most practical uses are for client-side application. I could make some "pretty" mouse over buttons, that change when you cursor over them, but I don't think that is a very good example. This page was created using JavaScript and CSS, so that is one example. But a good and popular implementation would be to use it as form validation.

Below are to fields in a form, the first is basic validation for an email. And the latter being validation for a valid email. The first example only tests whether or not the form field is empty or not, the second form field tests not only if the form field is empty but the contents inside of it.

Email: Checks for emptiness

Email: Checks every character

So there it is, not too big of a deal. But the sort of deal that can take away from the customers' experience, the customer service workforce, and give your site the look and feel of an unprofessional environment.

I could have even gone farther to check all proper types; e.g. .com, but now there are tons of new suffixes which the rest of the world uses and don't feel like taking it that far. For this application, programming for either 2 or 3 letters preceded by a period is sufficient enough.

I created a very excellent form, validating with JavaScript, but can't seem to find it. Though here is one, there is at least one bug in it, but that is many less than person I made it for. I sat around, for an hour of two on a perfect Saturday afternoon, making this to try to impress someone at Abercrombie and Fitch. They have been looking for a Web Applications programmer for sometime, but they were not so interested in me. Maybe I was a bit brash, but I hacked their form page in less than 5 minutes and only wanted to show them I was capable of much more. No I did not harm anything, that is for kids and criminals, I only broke down their form to show it is easy for common programming mistakes to lead to unprofessional work and higher utilization of customer service support. The trend should be for customer service help to be layout off, and for programmers to help in that lack of need. But lately it seems that there are more and more $10 an hour phone people and less of competent IT professionals. Which explains why I created this site and why I have gone the extra yard to show what I am capable of.

On the topic of form validation, I was up late tonight and was reading doing some reading about TCP/IP and came across checksum. Checksum is used in Lund's Algorithm and this algorithm is used to validate credit cards and below is a simple example of this. (This is a static HTML page, in fact of this site is static, except for my error pages and my hidden password protected files. So if you are scared credit card stealing, don't be, you should have my name and address and I am the only Joe Gakenheimer in this world!)

Please enter your credit card details below. Or you can try it here!

Credit Card Number:

Credit Card Type: Visa MasterCard American Express

Card Expiration Date  


Coming Soon, I will start to add some of my Cascading Menus examples to the site. Actually you can view one, which I am still working on, over at my Microsoft page located at Franklin's IIS server. I probably won't implement any on the main pages, just some as examples. I really don't have enough content, except for this Portfolio, so I will just make some examples; though I have been contemplating adding a special depository page for my "Cute Stuff," which I may build during Christmas.

Updated 12-28-2003



ASP

ASP

Coming within a week or so: * Cookie Soon, as soon as I can find it!

Below are some links to some elementary but efficient examples of ASP 3.0 form handling, but here I am going to show a basic example of calling a SQL Server Stored Procedure. Yes, it's the same one from the SQL tab, but in case you missed it, here it is!

dim strNewState, ThreeDigitZipArea
dim strConnect, objRS
dim objComm, objParam
Set strConnect = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")

strConnect.open "PROVIDER=SQLOLEDB; DATA SOURCE=xxxxxxxx; UID=xxxxxxxx; PWD=xxxxxxxx; DATABASE=xxxxxxxx"

sub GetZipCodeStateInfo
    Set objComm = Server.CreateObject("ADODB.Command")

    objComm.ActiveConnection = strConnect
    objComm.CommandText = "getValidStateZipCode"
    objComm.CommandType = adCmdStoredProc

    'now the parameter     ThreeDigitZipArea = left(intHomeZip,3)
    set objParam = objComm.CreateParameter("@ThreeDigitZipArea", adVarChar, adParamInput, 3)
    objComm.Parameters.Append objParam
    objComm.Parameters("@ThreeDigitZipArea") = ThreeDigitZipArea

    'stored proc
    Set objRS = objComm.Execute
    Set objComm = Nothing
    Set objParam = Nothing
    strNewState = objRS("state")
end sub

Well, I have written tons of ASP code, mostly VBS 5, so here is an example of a dropdown list that I once wrote. The dropdown list is to reference a list of States from a database to fill the dropdown list. This is only a simple example, it would not be too difficult to create it to have other or different values in the dropdown box. Sure, it does require some extra processing, but get rid of the Inline Query and save 25% plus it is a lot better than copying and pasting and code readability even if you have just an easy chore!

'Variables we are using<br />
dim objConn, objRS, objRS2, strSQL<br />
<br />
'Define our objects<br />
Set objConn = Server.CreateObject("ADODB.Connection")<br />
Set objRS = Server.CreateObject("ADODB.Recordset")<br />
Set objRS2 = Server.CreateObject("ADODB.Recordset")<br />
<br />
'Database path and Data provider<br />
objConn.ConnectionString = Server.MapPath("xxx.mdb")
objConn.Provider = "Microsoft.Jet.OLEDB.4.0"<br />
objConn.Open<br />
<br />
'Sub Procedure that builds the dropdown list.<br />
'Parameters c, r and table are passed when the sub is built.<br />
Sub showDropDownList(c, r, table)<br />
<br />
'SQL Statement, or use an SP; it's up to you!<br />
strSQL = "SELECT State FROM State ORDER BY State ASC"<br />
'Execute our SQL statement and store the recordset<br />
Set r = c.Execute(strSQL)<br />
<br />
'START MAIN CODE BLOCK<br />
'If we have records to return<br />
if not r.eof = false then<br />
'Open a form/select tag<br />
'This particular example has no action attribute, which would normally be<br />
Response.Write "< form name=""form1"">"<br />
Response.Write "< select name="dropdownlist">" & vbCrLf<br />
Response.Write "< option selected="selected" value="">Choose....</option>"<br />
<br />
' loop and build each database entry as a selectable option<br />
While r.EOF = false<br />
Response.Write "< option value="dynamic_dropdown_lists.asp">"<br />
_ & r.Fields("Title").Value & "</option>" & vbCrLf<br />
<br />
'Move recordset to the next value<br />
r.movenext<br />
Wend<br />
end if<br />
'END OF MAIN CODE BLOCK<br />
<br />
' close select/form tags<br />
Response.Write "</select></form>" & vbCrLf<br />
<br />
End Sub<br />
%><br />
<br />
<body>
<%'Call the sub procedure to build the drop down list
call showDropDownList(objConn, objRS, "tblDropDownTest")
%>

I have just Redone my Microsoft ASP 3.0 site at Franklin's IIS server. This is a new page I have about completed, still testing and tweaking. If anybody cares, this is a table less page, and my opinion of a table less page is not very good. Sure it makes an ASP 3.0 page download quickly, which should benefit any application, but it is very difficult to get things straight. Besides a few pictures, I think of this as almost a plain text site, because there are not tables for the browser to tangle with. But, I still think it is best the divide the page into a large table, to hold everything together, then divide with rows, columns, and divs, respectively.

The main page is an Access database driven message-type board which I created as a Page 2 type listing for my employer's Intranet site. Since I am the only one at my company that understands it, it was never published, except to Franklin. The links are to some unformatted works, consisting of some other professional applications which are cut down from their first implementations. These implementations currently consist of Page 2 Listings, my Auction House, Content Links, Tell a Friend Popup window (currently doesn't work at Franklin because they don't have CDONTS mail system installed, but I'm trying!), and some other stuff. So now the Page 2 (main page) will allow visitors to post messages or articles to the site. And only these users will be able to go back and edit or delete their postings, neat huh. But remember, unlike this site, these are stateful pages, so information can be gathered, unlike my credit card validation under the JavaScript folder. The Content Links are neat as well, I currently don't have any need for them, but if you choose you can view them and see my daily rituals. The Auction House is a modified version of my Page 2, this basically is an e-commerce type auction system. But I gave up when testing because at Franklin I can only run Access with ASP and ASP does not handle threads. So race conditions and deadlocks are abundant if you simultaneously bid and make changes, especially if you have Access open on your client. But I did implement an Excel hack, meaning that I display all passwords via Excel, pretty that you can write ASP and have it open in Excel on the users client. Thanks, Bill, now maybe we can get previous versions of Excel to work!

These samples of form processing will be using the Request.Form, Request.Cookies, and Request.QueryString, respectively. Thought of a Session, but will mess with that in my shopping cart example. Not elaborate code, but if you run it, the results may be a bit surprising! Also, I don't have my IIS 5.1 set up for JavaScript yet, so there is no client-side field validation, but it's better that way to read the code.

The code is not so elaborate, neither is the html, but it proves some points and you are welcome to download it here.
Just added my content links, the code is good, but not so fancy. You can download it here. I have implemented this in a professional environment and with a little bit of html they come out wonderful.

Around the end of June 2003, I had an interview with a man with a local government position. It was a free lance job through the government and was going to pay $12,000 to $15,000. My thought was finally, my big break! But come early August I have not heard from him again. I know the job was down to five people, but with the way the economy has been I knew my chances weren't premium. But what he needs is a 40 question form (many pages) and have that client data saved to the Server. From there he needs the form data that is saved in the database, which resides on the server, to output the data into pretty excel spreadsheets with all the bells and whistles of pie charts and what not. I have done this and have it set up in a secret folder off of my main page on the IIS Server over at Franklin (they reboot this server on Friday's, so on that day it may be down).  It is not anything too fancy, just using ASP 3.0 and an OLEDB connected Access database. So until then I have to keep the covers on this one.

Coming soon, I just finished a prototype site which uses what I call a cookie menu. What I do is created a multiple forms page, for one of my employer's products; 6 in all. Then I send the customer to purchase the item; actually insurance. Should they quit or leave the site, which is prevalent, I save all of their values into cookies, inlcuding those which were comuted through a MS SQL database. And when I give the link to this page, I will also implement a page, which was shot down by the higher ups, but it allows a user to change their values and jump back to any of the 6 pages of that part of the application process; cool huh! Well, not too cool, but unique to do that over so many pages, can't remember seeing such activities on other sites. So give me a few weeks and I will post it.

Updated 8-31-2004


HTML/CSS

HTML/CSS

I have been into HTML now for 4 years, I just posted a few on my examples in my Gakenheimer Directory.

Back in December 2003 I published which is a bulletin-board/ASP web portfolio on Franklin's IIS server. I mentioned this in my ASP 3.0 folder, but briefly this is a simply table less page. Besides a couple of images, this will download as fast as a textual page. The W3C and allow of their followers, also known in the Web Design field as Gurus, preach to implement only div's; no tables or frames. So here is my attempt, it looks pretty good, still tweaking and testing as on 12/28/2003. It goes with my normal philosophy of Human Computer Interaction when developing a particular site. For most personal usages I will create a page, and or site that uses up the entire client screen, rather than squish every into a small area and have the user scroll up and down to view the entire page. It is not easy, but I believe if you buy a large monitor, then you want to use the entire monitor, not just 650 pixels of it! But also aim to please the smaller monitors as well. Not only are they more abundant than the big and fancy monitors, in many cases business organizations don't spend extra money on their employees monitors, so who know my next boss may have a small monitor like me. So I do guard against embarrassment, whenever possible.

I wish that I worked in a large organization where about once a month I could get away from programming and work with the Graphic and Web Designers. Not only to get away from doing similar task, day to day, but making an html document is occasionally fun. I am not an artist, but sometimes I like to be artistic. I have tried to make the "pretty stuff" before, but it normally looks like I do when I get dressed up. A muscular man trying to look cute, but is only trying to be something different than himself. But it would be so wonderful to get an artistic person's work then recreate it in an efficient and cohesive form.

To some people, HTML is an extension they use when saving a document authored by FrontPage. To others, it's a gigantic conspiracy between browsers. And even others believe its some sort of programming language that makes them professional Programmer's. To me, it's a nice and easy tag based system that lets me construct web based documents that I can format or finagle.

To some people, they think that a Cascading Stylesheet is a great hassle that just complicates matters. Others just think that it's much easier to just use your favorite WYSIWYG text editor, instead of formatting your data by hand. To me, the use of an internal or external stylesheet is so I can make things look exactly as I wish. Not only is this approach much easier and time efficient, it conveys a reliable and consistent look for each page. And even better, it makes the Web Programmer's job that much easier. No need to search through possibly hundreds of font or span tags. It is so frustrating to see "font Arial, Helvetica, san serif" every line. If you check out the code on any of my pages, you won't see any instance of that nonsense. Though, when I put this page live you won't see all of my code, sorry I have to keep the hard stuff a secret. :) So below is an example screen shot of an html document with the appropriate illustrations of how I think it should be done.
html/css example

So, that is how I make things. When I do create html, it is like that, otherwise someone else created it.

When I was beginning to understand HTML and CSS, I purchased the most recent book by Netscape guru Eric Meyer. I bought the book and worked through some of the examples and came up with this Polar Bear page, which is currently my home page on Franklin's IIS Server (they reboot their servers on Fridays, so it may be down on that day). I learned a lot, a learned that Netscape 6+ is much stronger for HTML and CSS development, plus what can be accomplished without any client or server side scripting.

Updated 7-16-2004


XHTML

XHTML

XHTML is supposed to be a bridge between standard HTML 4.01 and XML 1.0. Critics, as well as the W3C say that XHTML is going to replace HTML. Personally, I can't see the any day in the near future where all website abide by XHTML Standards.

So I decided to create an XHTML document, not one which abides by XHTML rules, but one which is an XHTML document which is compatible to XML. This can be viewed at Franklin's IIS server. I mentioned this in my ASP 3.0 folder, but briefly this is a simply table less page. Besides a couple of images, this will download as fast as a textual page. The W3C and their followers, also known in the Web Design field as Gurus, preach to implement only div's; no tables or frames. I contemplated going the full XML route, but prior experience has taught me that many browsers don't show XML pages and secondly XML does come out differently than HTML. And XHTML comes out nearly identical to HTML, so there was no need to get extraordinarily complex.

But the greatest use I have is using XHTML when developing XML templates. After creating a XML Schema or Dtd, XHTML comes in very handy when styling an XML page with your HTML like formatting through the XSL Stylesheet.

I am pretty sure that every visible page on this entire site is XHTML compatible, except for the DOCTYPE. To change an html file to an XHTML file, first I would have to change the file extension, and secondly I would have to change the first line of my document form:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40/strict.dtd"

to

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

Besides that I think everything is good to go.

Updated 12-29-2003



XML

XML

There are several basic ways to make use of XML:

  • Traditional data processing
  • Document-driven programming
  • Archiving--the foundation for document-driven programming
  • Binding, where the DTD or schema that defines an XML data structure
  • Viewing outputted data

We will concentrate on the last, XML viewed in a browser.

Here is the link to an XML markup I created (IE only) XML Markup, sorry Netscape! And here are the links to the (NS 7 only) DTD and the XSLT stylesheet.

If you want to just check out the code for the DTD, just take a look below (minus the tags, you should understand!). It is quite simple and quite petite, I would show the code to the document and the stylesheet, but that is just too much date.

ELEMENT catalog (product)*
ATTLIST catalog
productName CDATA #IMPLIED

ELEMENT product (item,longDescription,price,image)*
ATTLIST product
name CDATA #IMPLIED

ELEMENT item (#PCDATA)*
!ATTLIST item
id CDATA #IMPLIED

ELEMENT longDescription (#PCDATA)
ELEMENT price (#PCDATA)
ELEMENT image EMPTY
ATTLIST image
imgURL CDATA #REQUIRED
src CDATA #IMPLIED
alt CDATA #IMPLIED

As you can see there are no brackets, but I think you get the drift!

Within a week or 2, I'll add an ASP XML application over at Franklin. I'll use the definately do something where I will use the XML file as a datastore, and probably use Schema to define the markup.

Updated 9-23-2004



MIS

MIS

I did create a "Cheesy Site" site for a class a couple of years ago. It was Management Information Systems, an entry level class but it should be sufficient till I can write my own philosophies.

I have also written a lot of MIS related works, ranging from IT Department etiquette to Windows 2000 Server Administration. These works can be read and used for research back in my mis_windows2000 directory.

Updated 8-13-2003

Algorithms

Algorithms

Learning about Algorithms is not so much fun, but sometimes can be very interesting. For an Algorithms class I wrote a few programs, the first is about Searching. The idea of the program is to randomly create 1000 integers and use various searching algorithms to test the timings.

The program utilizes the following searches:

  • Iterative Binary Search
  • Recursive Binary Search
  • Binary Search Split into 1/3 and 2/3
  • Ternary Search
  • Quadruple Search

Since today's computers are so fast I actually needed to create 1 million random numbers and search them from an array. The main program, NumberSearcher.java can be viewed here, along with its counter part ValidateMenu.java. I have just wrote it for 1000 integers, can download the entire program here, and run it on a compatible Java compiler. Note, for the counting of program steps, you must either exit the program or subtract from the previous run; reason being is that I made my counter global rather than incorporating it separately in each method.

Dating back to mid 2001, I have been working at a Marketing company. Hopefully, when YOU read this, I will have advanced my career, but what I notice is about 50% of the time Salesmen in my company are out of town. So here I have written a near perfect program for each of them to figure out the best path for their road trip to be. Well, actually this program is about a City Planner that needs to create a highway in which the Fire Department can quickly navigate through the city much easier during emergencies. But this program follows that of the classic Traveling Salesman problem. The algorithms used were Dijdstra's Algorithm (also known as Dijkstra's, if I could spell right!), Floyd's All Pairs Algorithm, and the Selection Sort. If you would like to give it a try, run the CityPlanner.java and the ValidateMenu.java by downloading the entire program right here, on your favorite edition of the Java compiler. Or view the CityPlanner.java here, or the ValidateMenu.java here. Just a brief observation, the two ValidateMenu.java files are both very similar. I thought of combining them, but I thought in this case I would be wasteful.

This past summer I wrote my own rendition of the 0/1 Knapsack Problem. This program computes the maximum profit and time efficiencies of the 0/1 Knapsack Problem. The algorithms which were used to solve the problem are the Best-First Search with Branch and Bound Pruning Algorithm and the Dynamic Programming Approach, respectively.  The program is comprised of two files, Knapsack.cpp and Nodes.h; click the links if you wish to view them or click here to download the entire program including the raw data and the synopsis.

Updated 6-27-2004



Software E

Software Engineering

Well since I have been creating websites now for around 3 years I have been creating user interfaces. So is being a website maker, a Software Engineer?

There seems to be many different and bland definitions of Software Engineering. The first and main definition is basically a new term, or jargon, describing a Programmer. A second definition is one who creates user efficient software for a user to interact with; which is sort of what I am accustomed with creating websites. And lastly, a third definition is building of software systems which are so large or so complex that they are built by a team or teams of engineers.

The last definition is what I am going to focus on here. Sure I have been part of projects, but never anything that covered a very large realm. So here is a project I created in a team environment. "download .doc." "download .ppt" Courtsey of Yahoo.com, I used their cache of the document format to create a not too bad html version here. It is not wonderful by any stretch of the imagination, but it was an excellent activity in planning, documentation, version control, etcetera.

Updated 6-13-2004



OS

OS

Created a few examples of the Producer / Consumer problem. I have written two Java implementations implementing Semaphores with the Mutex, one with buffer and one with no buffer. Well the reason that I put those links above is that with all of the processes running to power this Portfolio application, the Applets run real slow. But I did have them running right here in this folder for about a month, it just that the browsers had the tendency to seize up. Also, I have an implementation here on my website at this unlinked page Producer/Consumer.

Next week, I will post the code to these programs, as well as post code to my CPU Scheduler (no applet), which I just recently turned in.

The CPUScheduler is a program to run jobs through a RoundRobin.java and Lottery Scheduler. The Lottery.java Scheduler purpose is only for research against the RoundRobin.java Scheduler; that is the purpose of the Lottery Scheduler, so that is its purpose. The initial assignment called for a timing of them, but our instructor didn't really see any easy way to do that, so we aborted it. I went along and set up my main menu to time each run. What I did was I used an infinite for loop for each selection and time appropriately; check out the Scheduler.java for absolute comments. I kept the Round Robin Scheduler at a constant time slice because, through my research I discovered that Lottery Schedulers tend to be used for analysis and are comprised of random times and thread selections. I also learned that many Lottery Schedulers are based off of the Round Robin. So I made some appropriate changes to a the Round Robin and felt that this is a substantial Lottery Scheduler. The Lottery Scheduler has both random time slices as well as random priorities. Felt that having Random priorities would be the way to make choosing the tickets, much like a lottery; because one can not distinguish which ticket (or thread) will be chosen next. So if you are interested, you can download the entire CPUScheduler program here.

Wrote a C++ program using the PThread API, well to say the least I was a bit overwhelmed. At Franklin, the CS Department decided to switch to Java, from C++ as their main high-level language for teaching; so what that means is that a lot of us aren't very comfortable with C/C++. The program is about running Cheers for sports teams. If you would like to view the two classes, you can catch them at cheer.c and cheer.h. It barely works and it showed on my grade, but this Operating Systems course is extremely interesting. No, the book stinks, but writing programs with threads is really cool; I compare it with when I was a pizza manager. I didn't make much money, nor was it a great career choice, but there was a great satisfaction finishing a pizza, cutting it up, and putting it in the box; and that is the same feeling I get with threads, who knew? So for this Christmas, I got a pretty good feeling that Santa will bring me a Pthread book.

In a class I took, we spent a few weeks talking about Security and what not. For this course we were to make a Password Window using the JWindow or the JApplet classes, respectively. The Professor decided that it would be best to not play with an applet and just do a command line implementation. So this basically boiled down to using the String class to count the size of the user input and the RegEx class, new to versions 1.4.1+, to match correct type passwords. So this was a bit like the simple JavaScript example I have in my JavaScript file to the right). So if you are in Web Design or non-Java Web Development, take a look at the Password Checker files and you will see it's no big deal. The program comprises of two .java files, Password.java and ValidInput.java. The ValidInput.java is just the same user input class I use on a lot of my other programs, nice to get correct input inside of a never ending for ; ; loop.

Updated 12-05-2003



Networking

Networking

Well, the Networking course is the last class for me at Franklin as well as for this degree. Sometimes, its interesting and sometimes it's not. Being a Web Developer, I catch on to some topics very easily and some others take some work. We have a couple of papers to write and what not, as with many of my courses I decided to post my papers to my Gakenheimer directory. Reason being is that I like to offer my works for people looking to learn something, plus I am proud of the works that I have accomplished and proud of the curriculum for which I am completing.

Pertaining to Web Development, I wrote a very interesting paper about Secure Socket Layer (SSL), entitled, The Secure Socket Layer Review. I wish that I could have gone deeper into the topics, but was satisfied with the overall work.

Besides the paper, we also have a Network design project, for creating a design scenario for a school district; won't have that posted for another 6 weeks or so. But of course there are the labs, 3 Socket programs ranging from development of a client to an entire client server architecture containing a client, server implemented in C/C++. So far I have created a decent C/C++ Client Socket, The program is a Balderdash game which is about guessing names. Basically, we write a client to communicate with a server, which the professor provided for us as an executable file. The subsequent labs are to create a server, of our own to communicate with the client; then create the entire process again by allowing multiple users, via Solaris or POSIX threads, respectively.

If you would like to check out my code, then lab1.cpp is the client, and dasher1 is the server executable; or at your discretion you may down load the entire program, including the client executable at: Balderdash. As the course comes to a conclusion, I will conclusively add the subsequent programs in a rolodex manner; so stay tuned.

Updated 2-26-2004

Web Dev

Web Development

I have created a lot of work with college and on my personal web site, some on that stuff can be accessed from this site. Though, I have worked in a team environment at my place of work (2001->2003), American Insurance Administrators. There, I have done mostly programming and creating marketing data. Most of the programming has to do with creating extensive forms pages, validating input data, saving customer data, and outputting correct data in respect to their own individual alumni association.

Lately, I have been creating Cascading Menus using JavaScript by implementing them on various layers of DOM. These are more mainstream menus, one's which are prevalent on many modern and up to date sites. Below are links to these sites:

There are about 15 sites total, but these are the main ones and this is where I have spent most of my time.

Whenever I develop sites, I always script for both Netscape and Internet Explorer. The latest figures I have gathered have Internet Explorer with about 3 quarters of the web browsing market (06/2003), with Netscape products (AOL) making up most of the rest. Personally, I can't see any reason to use Internet Explorer except for wonderful compatibility with viewable XML documents. The web development tools that accompany Netscape 7.02 as well as some of the Mozilla builds are just wonderful. Plus using Netscape is 3 times faster downloading than IE, and Pop-up Blocker doesn't hurt either. Say, do Web Developers still deploy pop-up windows?

Updated 12-01-2003



ASP.Net

ASP.Net

Here is a nice little VB.Net page (with the accompanied forms page) I wrote for a piece of software I have been working on. Since I will only be showing one class, this example will not be involving true OOP; reason being is that there is no Polymorphism to justify the classification, but thanks to .Net there is some Inheritance. This piece of the software allows the user to change personal information. This is 100% my work, if I want to copy and paste then I'll do that on the job, but for me I develop from scratch. I use a click event sub for each control, and with each sub I use one SP. So I have ended up with using 11 SP's because I figure that the user may not need to update all their records, so why write one 1000 line SP to further drain the server resourses? All the SP's used: I think?

Well, I have shown how to call a Stored Procedure(SP) in Classic ASP, but how about ASP.Net. Refering to the SP in the SQL tab, calling a SP is pretty easy as well. This sample is just for validating a zip code against its state of residense. But, yes, I have called SP's with up to 9 input parameters as well as for Transactions. So here is the example.

Imports System.Data
Imports System.Data.SqlClient
Public Class App3
    Inherits System.Web.UI.Page
    Dim Zipcode, DaysCovered, NumChildren As Integer
    Dim Gender, Age, Travel, Spouse, Children, SpouseAge As String
    Dim State As String


        State = Request.QueryString("State")
        Dim ThreeDigitZipArea As String
        ThreeDigitZipArea = "432" 'Left(State, 3)
        'fill the dataset
        Dim objConn As SqlConnection
        Dim objCmd As SqlCommand
        Dim rdrLath As SqlDataReader

        objConn = New SqlConnection("server=xxxxxxxx;uid=xx;pwd=xxxxxxxx;database=xxxxxxxx")

        objConn.Open()
        objCmd = New SqlCommand("getValidStateZipCode", objConn)
        objCmd.CommandType = CommandType.StoredProcedure

        'parameter
        Dim parameterThreeDigitZipArea As New SqlParameter("@ThreeDigitZipArea", SqlDbType.Int,
        parameterThreeDigitZipArea.Value = ThreeDigitZipArea
        objCmd.Parameters.Add(parameterThreeDigitZipArea)


        rdrLath = objCmd.ExecuteReader
        DataGrid1.DataSource = rdrLath
        DataGrid1.DataBind()

        'The next three lines close the reader, the command and the connections.

        rdrLath.Close()
        objCmd.Dispose()
        objConn.Close()

    End Sub

    Public Sub Continue_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Continue.Click
        Response.Redirect("quote_4.aspx")
    End Sub
End Class

Anyone who knows me knows that it is no secret that I am not only looking for a new job but looking to learn new technologies and expand my career. I took a class winter of 2003 that covered JSP and Servlets, among other things. But now it appears that I have to learn the .Net architecture as well. So I went out and bought the Visual Studio .Net and begun learning about ASP.net. Don't worry, I bought the Student edition, it is the same as the Full edition but instead of it costing $1100 it cost $99 + shipping. So the plan is to migrate one of the ASP 3.0 sites I have made in my past to VB.net. I have learned about the wonderful technology of Microsoft Web Forms, but still haven't figured I hack to submit the form data. Why they created it like that is beyond me, but really like the document in XML type format and the server side validation. So far I have a form, not pretty, but substantial enough; it can be downloaded here. Is this any good, NO, but it was my first ASP.Net Web App.

Incase you don't want to download my first ASP.Net forms page, here is a snippet or validating a Social Security Number.

Social Security Number<br />
<asp:requiredfieldvalidator id="vldSSN" runat="server" ControlToValidate="ssn" ErrorMessage="Please fill in your Social Security Number."><br />
</asp:requiredfieldvalidator><br />
<asp:textbox id="ssn" runat="server" MaxLength="12" Width="150px"></asp:textbox><br />
<asp:regularexpressionvalidator id="vldRegExSSN" runat="server" ControlToValidate="ssn" ErrorMessage="Use this Format Please: xxx-xx-xxxx"
ValidationExpression="\d{3}-\d{2}-\d{4}"></asp:regularexpressionvalidator>

Updated 8-29-2004



VB/COM

VB/COM

Here is a COM component that I wrote sometime back. This simply computes premiums for an insurance company, and those not being Nationwide nor American Insurnace Administrators.

Option Explicit

'local variable(s) to hold property value(s)
Private varFF As Integer
Private varAge As Integer
Private varGender As String
Private varState As String
Private varNumberClaims As Integer

'constants for calculating premium
Private Const WEIGHT_PLUS = 1.25
Private Const LOWEST_CLAIM_AGE_MALE = 45    'years old
Private Const LOWEST_CLAIM_AGE_FEMALE = 40 'years old
Private Const ADD_PER_YEAR_FROM_LOW = 0.01 '1 percent
Private Const ADD_PER_CLAIM = 0.35     'plus 35 percent
'st
Private Const STANDARD = -0.15 'minus 15 percent
Private Const ORE = 0.25     'plus 25 percent
Private Const MISS = 0.5     'plus 50 percent

Public Function GetPremium() As Double
    Dim dblPremium As Double
    Dim sngExtraPercent As Single

    'calculate base premium depending on engine size
    dblPremium = varFF * WEIGHT_PLUS

'add on loading depending on gender and age
    If UCase(Left(varGender, 1)) = "F" Then
        sngExtraPercent = Abs(LOWEST_CLAIM_AGE_FEMALE - varAge) * ADD_PER_YEAR_FROM_LOW
    Else
        sngExtraPercent = Abs(LOWEST_CLAIM_AGE_MALE - varAge) * ADD_PER_YEAR_FROM_LOW
    End If
    dblPremium = dblPremium + (dblPremium * sngExtraPercent)

    'add on loading for number of accidents or claims
    sngExtraPercent = varNumberClaims * ADD_PER_CLAIM
    dblPremium = dblPremium + (dblPremium * sngExtraPercent)

    'add on loading for type or vehicle
    Select Case UCase(Left(varState, 1))
        Case "S": sngExtraPercent = 0
        Case "E": sngExtraPercent = STANDARD
        Case "C": sngExtraPercent = ORE
        Case "P": sngExtraPercent = MISS
    End Select
    dblPremium = dblPremium + (dblPremium * sngExtraPercent)

    'assign result to function variable
    GetPremium = dblPremium
End Function

Public Property Let NumberClaims(ByVal vData As Integer)
    varNumberClaims = vData
End Property

Public Property Get NumberClaims() As Integer
    NumberClaims = varNumberClaims
End Property

Public Property Let PremiumType(ByVal vData As String)
    varState = vData
End Property

Public Property Get PremiumType() As String
    PremiumType = varState
End Property

Public Property Let AccountGender(ByVal vData As String)
    varGender = vData
End Property

Public Property Get AccountGender() As String
    AccountGender = varGender
End Property

Public Property Let AccountAge(ByVal vData As Integer)
    varAge = vData
End Property

Public Property Get AccountAge() As Integer
    AccountAge = varAge
End Property

Public Property Let OverWeight(ByVal vData As Integer)
    varFF = vData
End Property

Public Property Get OverWeight() As Integer
    OverWeight = varFF
End Property

And to call this component with in an ASP page, you would do something like:

'GetPremium
If Not blnErrorFound Then

'create component instance
Set objINS = Server.CreateObject("objINS.Insurance_1")

'set the properties
objINS.PremiumType = strPremiumType
objINS.AccountGender = strGender
objINS.AccountAge = intAge
objINS.OverWeight = intOverWeight
objINS.NumberClaims = strClaims

'then call the GetPremium method and display the result
dblPremium = objINS.GetPremium()
strMessage = FormatNumber(dblPremium, 2, 0, 0, -1)
strMesg = "Your annual premium will be: $" + strMessage
Response.Write strMessage

End If

Well, most of my Visual Basic experience has had to do with VB 6.0 Components and some VB.Net. Well, I have included a few examples of ASP.Net so now I'll show some VB 6.0 examples. I haven't decided or not to include any COM components because their are security risks associated with them. Plus, I don't feel special enough to show something I developed at a previous employer. So here is a simple String Concatenator and Splitter that you can run on your PC. If you are running IE, then you can just click open, otherwise it won't open in Mozilla due to it being an excutable. But don't worry, this is not malicious, plus you know who I am and where I am! Updated 12-29-2003



Resume

Joe Gakenheimer

My short-term objectives are to learn and contribute as much as I can to my new position with the Government of the State of Ohio. My long-term goals are to continue in Software Development and to manage projects, bridging the gap between programmers and managers.

asterickNot Looking, Not Updated.

Joseph Gakenheimer
6637 McVey Blvd. Columbus, Ohio 43235-2815;
(614) 889-5179
via e-mail: joegakenheimer@columbus.rr.com
printable resume: Full Version

Education

Franklin University, 201 S. Grant Ave., Columbus, Ohio;
Bachelor of Science in Computer Science, April 2004, 3.44 GPA; Honors: President's List, Dean's List

Franklin University, 201 S. Grant Ave., Columbus, Ohio
Bachelor of Science, dual major of Business Management & Marketing; December 1994, 3.0 GPA in major

Skills

Languages & Technologies Professional:

Web Technologies: ASP 3.0, VBScript, COM, ASP.Net, DHTML/DOM, JavaScript, HTML/XHTML, XML/DTD/XSLT, CGI/Perl, JS/Perl RegExpressions, CSS2, OLEDB, ODBC

DBMS: SQL Server, Access

Operating Systems: MS XP Professional/Home, NT , 95, 98, 2000, Solaris, Vax

Languages & Technologies Cousework:

Java Technologies: Java 2 JDK 1.4, J2EE: RMI, JDBC 2.1 3.0, JSP

Other High-level LanguagesC++, C,Perl, C++ in the Unix Environment and TCP

Web Technologies: ASP 3.0, VBScript, COM, ASP.Net, DHTML/DOM, JavaScript, HTML/XHTML, XML/DTD/XSLT, CGI/Perl, JS/Perl RegExpressions, CSS2, OLEDB, ODBC

DBMS: Oracle 8i, Oracle 9i, MySQL

Operating Systems: Solaris, MS XP Professional/Home, NT , 95, 98, 2000

Software:

Macromedia MX, Adobe Photoshop 7.0, MS Office, MS Visual Studio 6.0, Visual Studio .Net, MS FrontPage 2002, Vi, SmartDraw

Methodologies:

Object-oriented design (Rambaugh & Booch), Version/Change Control, RAD

Interests:

Web Applications, Software Engineering, DBMS

Current Projects and Research:

ASP.NET: MCAD, Mail and Spiders, DTS

Experience

State of Ohio, Emergency Management Agency: Database Analyst
2-05 to Present

  • Not sure yet, start on 2/14 and should compose of:
    • ASP.Net
    • SQL Server, Oracle, Access
    • Web/GUI Screens
    • GIS → ARC View
  • Hopefully will be my career.
  • Well see !

Information Control Corporation(ICC): Web Developer Consultant
HTP-INC.
12-04 to 2/05

  • At HTP-INC., I worked on several Microsoft based intranet projects for HIPPA standards. The first project is the migration of a classic ASP/HTML/SQL Server site to ASP.Net/XHTML/SQL Server site in a team environment. Another project I worked on exclusively was a simple migration of a classic ASP/HTML/SQL intranet site to XHTML Transitional and Strict specifications, including extensive CSS2 usage, VBS 5.0 functions for enhancements, testing and debugging classic ASP and ADO 2.5 codes. Also I wrote some Stored Procedures from a SQL Server 2000 in Third Normal Form HIPPA standard database for use in various hospitals for insurance claims and eligibility statuses.
    • Created GUI Web Screens in Strict and Transitional XHTML abiding to all user needs for classic ASP intranet site.
    • Wrote VBS Functions for ASP site for general modifications.
    • Wrote VBS to create dynamic page headers and labels through SQL Server 2000 utilizing the Application Object.
    • Created GUI Web Screens in Transitional and Strict XHTML abiding to all user needs for ASP.Net intranet site.
    • Tested and debugged ADO 2.5 calls for classic ASP site.
    • Wrote and deployed Web Forms for ASP.Net intranet site, including binding Web Form elements to SQL Server 2000 through ADO.Net onto Datagrid form elements.
    • Wrote various Stored Procedures for Search screens Hospital type usages in a HIPPA development environment.
    • Called various Stored Procedures for Search screen documents.

Pillar Technologies: Web Developer Consultant
Exel Logistics
11-04 to 1-05

  • At Exel Logistics I worked with another developer developing a 2-tiered web search site in HTML, CSS, JavaScript, and Flash though an Oracle Portal. I developed the front-end work comprising from cascading menus (up, down, side-to-side) to creating search forms with values toggles between twin Select Lists as well as the User Interface utilizing I-frames, DHTML, CSS, and HTML.
    • Create a User Interface for a new search service for Exel Logistics. Used extensive CSS in conjunction with HTML implementations of up to five IFrames per page for basic main page layout.
    • Create complex search forms with DHTML holding similar groups in arrays for specific searching.
    • Created at least eight Cascading Menus, with attributes such as: cascade side ways, cascade up, cascade down, rollover images, within IFrames.

Agile Techologies: IT Consultant
Nationwide Insurance
Columbus, Ohio 6-04 to 8-04
Web Applications and Development:

  • Created 30+ Stored Procedures and User Defined Functions for Agent Intranet Site. The Stored Procedures were for an Agent Intranet Site so they may insert, update, or delete any information for their respected agencies. The database format is that of IBM IAA specifications and data redundancy is thwarted by the design in Third Normal Form (3NF) format.
    • SQLServer 2000
      • Stored Procedures
        • Wrote Select, Insert, and Delete Transact-SQL Statements for Stored Procedures.
        • Wrote User Defined Functions to implementing the Date function to validate current years agent reimbursement data.
        • Calculations
        • Error Checking Validation
        • DBMS Concentrated, minute COM layer
        • Error Checking Validation
      • Tested Stored Procedures through SQL Server 2000 and through company testing Intranet application.
      • Planning, Documentation, Specifications

American Insurance Administrators
Upper Arlington, Ohio 10-01 to 6-04
Web Developer:

  • Designed, developed, and maintained 2 and 3-tier web sites (15+), comprising of Active Server Pages, SQL Server or Access data tier and COM business rules tier when needed. The sites relied on SQL Server and Access databases for large accounting of zip codes, area rates, and other insurance data. The sites are heavy in ASP front-end scripting because of the delicate nature of the materials. And serve insurance policies and investments through e-commerce business activities. I also developed a migration project involving one of the web sites to the ASP.net architecture.
    • Developed and Implemented Active Server Pages for marketing products on National Alumni Associations. Implemented VB Script and JavaScript for individual state and insurance specifications, in regards to state and policy requirements. All sites comprised of selling insurance products to individuals based on state and policy specifications.
    • Extensive and interactive use of session and non-session cookies
    • Created prototype cookie menu for users as an alternate page for users who left the site and came back at another recent time. Allowed the user to change or modify data all on alternate page, if they had previous browser data. Used hash key type ASP cookies and query string to extract pertinent data to free SQL Server transactions.
      • Implemented hash key type ASP cookies on forms pages for users to save data on the client for possible return visits
    • Created several JavaScript Calculators for figuring investment from client for particular investing products. Also have created small Access databases for usages pertaining to more complex calculators.
  • Designed and implemented SQL Server 2000 database via non DNS connection for pertinent web sites. Wrote and tested Stored Procedures to replace inline SQL statements. Also, periodically made updates to database through Enterprise Manager and created DTS packages.
    • Created Data Transformation Services (DTS) through Enterprise Manager Wizard. This involved a migration of Access database to SQL Server 2000 database. Most notable changes were to change field names to appropriate names.
    • Created DTS package containing OLEDB driver and Active X script task to extract data as a text file and be used as an email attachment.
    • Create / Update Database; MS SQLServer 2000, MS Access
    • Designed and implemented Access database via OLEDB ADO connection for pertinent web sites in First and Second Normal Form. Made quarterly updates to database through Datasheet View.
    • Designed and created relational databases with Access, primarily for small web applications and marketing data. Created Access Reports and Queries for upper level management for extracting marketing data and related needs. Designed and implemented Access databases for several Intranet applications, normally saving employee public data, passwords, and logins.
    • Wrote Stored Procedures for querying and inserting data for e-commerce web sites.
    • Migrate Inline SQL Queries to Stored Procedures to save database processing.
    • Created state of residence validation through comparing first three integers with form and cookie values against SQL Server and before that Access databases, respectively.
    • Created simple 2-tier ASP 3.0 and Access intranet bulletin board (Page2) utilizing session cookies and logins; via OLEDB database connections.
  • Wrote both client-side (JavaScript) and server-side (VBScript) code for form validation and implemented necessary matches with Regular Expressions. My form validation also included client side Credit Card Validation using Lund's Algorithm for a first step check in the user's final application requirements.
    • Implematations using Regular Expressions
    • Credit Card Validation using Lund's Algorithm
  • ASP 3.0 to ASP.Net Migration of one of the web sites, primarily on form pages and Data Grid database call. The migration was not fully complete to deploy for e-commerce usages, but was well beyond prototype stage utilizing, VB.Net, ADO.Net, SQL Server, JavaScript, CSS, and HTML.
    • Wrote Stored Procedure to replace COM Component for individual user state premiums for ASP.Net migration project.
    • Utilized ASP.Net cookies and query string Request and Response objects, respectively to save data to client software to unload web server resources. And used ASP.Net Literal controls and Panel controls to delineate sensitive and uncommon data.
    • Implemented ASP.Net Web Controls to create and valdidate web forms. Validated user data with the typical validation tools:; RequiredFieldValidator, CompareValidator, RangeValidator, and RegExpressionValidator; respectively.
  • Created and designed COM VB components for individual state rates for premium calculations. As well, used and modified various commercial COM components (i.e. CDONTS and Content Links). Also, created simple COM components utilizing Windows Script Component, for simplifying complex VBScript functions.
    • Created several VB COM components for premium calculations
    • Created Simple COM components utilizing Windows Script Component
    • Implemented and Modified various Commercial COM components, i.e. CDONTS and Content Links
  • Used extensive CSS and other HTML document resources to simplify and reuse of HTML data. Received Gold Metal from PIMA in lieu of GradMed.com, for Ergonomic Design, for outstanding web site for marketing purposes.
    • Created several custom DHTML Interactive Dropdown menus for various Intranet and Internet usages.
    • Related DHTML development was an on click photo gallery created primarily for Intranet usages such as staff photos at given functions
    • Strict Usage of CSS and HTML 4.0
    • Received Gold Metal from PIMA in lieu of GradMed.com, for Ergonomic Design
  • Created and administered marketing data using Web Trends Report Data and also created multi-tabled Excel spread sheets displaying pie charts and other useful marketing data from the Web Trends Report Data.
  • Also published Statistical data into various Excel charts and data for browser based client-side downloading through Active Server Pages.

Consul Tech, IT Consultant
Westerville, Ohio, 12-00 to 6-01
Computer Operator II:

Interliant

  • Run Daily, Weekly, Monthly, Yearly Backups (Unix, Windows NT, Vax,)
  • Analyze Operations
  • Configure & Execute Scripts
  • Maintain Equipment
  • Create / Maintain Excel Based Backup Query
  • Customer Service
  • Update Daily Shift Security Tests

Other Experience

Administrative Assistant:

  • Office Team, Worthington, 11-98 to 7-00
  • Dawson Personnel Ohio,
  • Martha Vance & Associates Inc.
  • Worthington Industries
  • Quest Communications
  • Creating Flowcharts
  • Creating Memos
  • Editing
  • Scanning

Customer Service:

  • Submit Order.Com
  • Placing Orders
  • Resolving Product or Shipping Problems
  • Resolving Pricing Discrepancies
  • Clerical:
  • Filing
  • Accounting
  • Data Entry
  • Mail Merge

Irrevlevant Experiences

Restuarant Manager:

  • Franco's Pizza
  • Worthington Mall, Worthington, Ohio
  • 5 Years

Also:

  • Plumber - 1 year
  • Landscaping/Lawncare - 3 years
  • Bowler, on and off


Updated 3-24-2005