Log of Steve’s Activity

Below is a log on my activity made by my freshman roommate, Nhan. It’s real funny. :):)

10/29/97 Wednesday

Today Steve influenced a girl named Michelle to not do her E100 assignment. Steve places these influences upon random victims. It is now plausible that Steve is a threat to the educational integrity of the students here at NCSU. From past experience, I’ve encountered myself mimicking Steve on numerous occasions. Although Steve denies that he has these powers, I think otherwise. He affects people emotionally, mentally, psychologically, technologically, and electronically.
Also, today Steve was playing Doom2 with Grant. During one instant in the game, he lost a battle. At this same instant, a loud noise came from my speakers. This may have resulted in Steve’s anger in which he lost control of his electromagnetic powers. I fear the worst for my computer. I do not know how much longer my secret defense shield can hold up to Steve’s irrational attacks. Although Steve does not know about my defense shield, and that he is unaware of his abilities to harness electromagnetism, I’ve decided to conceal my knowledge from him. I do not wish to encourage anymore-unstable fields from Steve in the electromagnetic band. This can result in the massive destruction of computers within a 1-mile radius.

10/30/97 Thursday

Today Steve has questioned my secret plans to mess up computers. I fear that he may be more dangerous than anticipated. He also has declared to me that he is “tired of my mess.”

Spring 1998

Before spring break, Steve happened to be at the right place at the right time. My security programs were not protecting the software that Steve wanted to get his hands on. He stole my weapons of mass destruction and used it on two other victims and myself. What have I done? I now fear the worst for the world, as they probably have condemned me for having such a powerful weapon unsecured, where a third world party can get their hands on. My life as the all-powerful LORD NHAN will soon end if I do not find a way to stop Steve’s destructive motives

Today, Steve has made major contributions to a possible cease-fire. I do not know what motivated Steve to take this action, but in any case, this is good news for everyone. I have not accepted his offer because I am still outraged by aggression against my sovereignty. He called for a total nuclear disarmament on both sides. I have not used my nuclear powers on anyone, so why should I be banned from something that I invented? I am not willing to weaken myself. This is what Steve really wants, and I am not willing to settle for that. He has shown has cooperation by dismantling all nuclear weapons from his computer. I do not trust him though. His words are like dirt to me. He could have secured some of his weapons in secret facilities that I cannot sense. So, I’ve decided not to remove any of my nuclear capabilities.

There have been no signs of aggression from Steve for quite sometime now. My strategy appears to be working. But I will not be foolish and lie down my guard just because Steve has not had the urge to attack. I will never let my guard down until Steve is 50 billion kilometers away from me. I still fear the worst for his close neighbors though, for next semester. ESPECIALLY ALFRED. He knows nothing about Steve’s hidden agenda. I will try to warn him, but I fear that he will not listen to me because I’m ASIAN. Also, they have nicknamed me “dangit.” I fear the worst for my reputation if my superiors hear of this insult, that I cannot stop. There are just too many of them [FRATERNITY] that has been encouraged to do this propaganda, [BRIAN, MATT, etc].

Javascript 2 Dimensional QuickSort

Here is some code I found and modified for a Javascript 2 Dimensional Quicksort. I was using a bubble sort but decided to change over to Quicksort considering I was going to have a huge dataset.

———————————————————

function Quicksort(vec, k){
QuicksortHelp(vec, k, 0, vec[k].length-1);
}

function QuicksortHelp(vec, k, loBound, hiBound){
if (debug)
if (!confirm(loBound + " " + hiBound))
return;
var loSwap, hiSwap, temp;
var pivot = new Array(vec.length);
// Two items to sort
if (hiBound - loBound == 1){
if (vec[k][loBound].toLowerCase() > vec[k][hiBound].toLowerCase())
swap(vec,loBound,hiBound);
return;
}
// Three or more items to sort
for (counter=0; counter < vec.length; counter++){
pivot[counter] = vec[counter][parseInt((loBound + hiBound) / 2)];
vec[counter][parseInt((loBound + hiBound) / 2)] = vec[counter][loBound];
vec[counter][loBound] = pivot[counter];
}
loSwap = loBound + 1;
hiSwap = hiBound;

mycount = 0
do {
if (debug)
if (!confirm(loSwap + " YEA " + hiSwap))
return;
// Find the right loSwap
while (loSwap <= hiSwap && vec[k][loSwap].toLowerCase() <= pivot[k].toLowerCase()){
loSwap++;
}

// Find the right hiSwap
while (vec[k][hiSwap].toLowerCase() > pivot[k].toLowerCase()){
hiSwap--;
}

// Swap values if loSwap is less than hiSwap
if (loSwap < hiSwap)
swap(vec,loSwap,hiSwap);
mycount++;
} while (loSwap < hiSwap);

for (counter=0; counter < vec.length; counter++){
vec[counter][loBound] = vec[counter][hiSwap];
vec[counter][hiSwap] = pivot[counter];
}

if (debug)
if (!confirm(loBound + " < " + (hiSwap-1)))
return;
// Recursively call function... the beauty of quicksort

// 2 or more items in first section 
if (loBound < hiSwap - 1)
QuicksortHelp(vec, k, loBound, hiSwap - 1);

if (debug)
if (!confirm((hiSwap+1) + " < " + hiBound))
return;
// 2 or more items in second section
if (hiSwap + 1 < hiBound)
QuicksortHelp(vec, k, hiSwap + 1, hiBound);
}

function swap(arr,p1,p2){
for (k=0; k temp = arr[k][p1];
arr[k][p1] = arr[k][p2];
arr[k][p2] = temp;
}
}

———————————————————

I also added the following code to sort blank entries last. You just need to run this before you call quicksort.

for (i=0; i < vec[k].length; i++){
if (vec[k][i].length <= 0){
vec[k][i] = "" + String.fromCharCode(127);
}
}

And run this after you call quicksort.

for (i=0; i < vec[k].length; i++){
if (vec[k][i] == ("" + String.fromCharCode(127))){
vec[k][i] = "";
}
}

Replacement for Shotgraph?

I might have found a shotgraph replacement. I currently use Shotgraph to dynamically generate images in websites. I haven’t determined yet whether this component can do everything shotgraph can, but I do know it can save images as a JPG, GIF, BMP, PNG, PSD, PCX, TIF or WBMP formats, where shotgraph can only save images as JPG, GIF, PNG, or WBMP formats. This new object is called csImageFile and can be found at http://www.chestysoft.com/imagefile/