Hitting the Books Again

I’m back in the groove wearing a “student” hat again. Pressing on towards the Masters degree. I took last semester off which was a nice break but it put me behind schedule a bit. This semester includes two GIS classes which both happen to be programming oriented. This is technically a good thing since I’m already fairly adept at programming and should be able to breeze through. Although, I am finding my skills are a tad rusty. The courses cover Object-Oriented Programming in C# and Relational Database Management Systems for GIS.

The C# (pronounced C Sharp) programming language is a much more modern version of the original C which I used back in the late 80’s…wow… what a scary thought…that was nearly 20 years ago. Side-trip down memory lane…. I even had hair back then! Anyways… it’s really the same old stuff just with different words and slightly different methods. It seems to have gotten more “foofy” and less technical.

Largely I think it’s because it’s very “Windows” oriented. But it’s still fun to build something from scratch and actually have it do something. If you want some sort of idea what all this GIS stuff is… take a wander over to GoogleEarth and download the free viewer.

Then take google earth for a spin. Plug in the address of someplace you used to live or went to visit. You’ll see a good example of what “Geographical Information Systems” can do.

I am fortunate to work for a company that believes education is important and provides a tuition reimbursement benefit. In fact, they upped the annual benefit from 3K to 5K this year. I would be pretty foolish not to take advantage of it.

Here’s a little code to glaze your eyes over….

// This is the callback function for TcpClient.GetStream
// Begin to get anasynchronous read.
private void DoRead(IAsyncResult ar)
{
int BytesRead;
string strMessage;

try
{
// Finish asynchronous read into readBuffer and return number of bytes read.
BytesRead = client.GetStream().EndRead(ar);
if (BytesRead < 1) { // if no bytes were read server has close. Disable input window. MarkAsDisconnected(); return; } // Convert the byte array the message was saved into, minus two for the // Chr(13) and Chr(10) strMessage = Encoding.ASCII.GetString(readBuffer, 0, BytesRead - 2); ProcessCommands(strMessage); // Start a new asynchronous read into readBuffer. client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(DoRead), null);

}
catch(Exception e)
{
MarkAsDisconnected();
}
}