For this blog post, I'd like to address some items that will be used in the grading of this blog as a substitute for a work report.
This information has been covered in previous blog posts.
When Joe and I first met in May 2007 about this internship, he stated that his goal with this internship was to train a student in COBOL programming so that he could hire that student upon graduation. In that regard, this internship has been preparation for a full time position upon graduation.
I would not say that my duties or responsibilities have increased since the beginning of the internship, but I would say that the assignments have gotten more difficult. This could be said for anyone learning any computer language, but the concept can be more broadly applied to many things outside the Computer Science field.
The main thing that increases my confidence in my abilities and skills as a computer programmer is when I get progressively more difficult things to work. This is because programming is results oriented and a programmer's efforts mean little if it the program doesn't come to a usable point in a reasonable period of time. It is a good feeling to know that you've finally solved a problem that you've been working on for several hours. However, it should be cautioned that you should never jump to conclusions about how your program operates before testing. Remember, users can and will find any way possible to screw up any computer program, so testing every possible scenario is very important!
COBOL has been the first language that I've worked with in-depth since most of my coursework in the CS program so far has been in C++. In learning a new computer programming language, the syntax is mainly the only part that changes. When switching from C++ to COBOL, however, one needs to switch from an object oriented programming to a procedural programming methodology. It is debatable whether or not object oriented programming is more advanced than procedural programming, but regardless object oriented languages such as C++ are much newer than procedural languages such as BASIC and COBOL.
This section wants me to detail a problem I've solved while working at DPS. For this example, I will describe my search for a Wyse terminal emulator.
For DPS clients we need a computer program, or terminal emulator, to connect to the server to run the program. For various reasons, such as needing a lot of control codes, we use Wyse 60 terminal emulation. Long, long ago we outfitted our clients with Wyse 60 terminals, but now they just use standard PC hardware. Unfortunately, today Wyse 60 terminal emulation is not widely available in terminal emulators available on the market. (By the way, there are hundreds of terminal emulation programs available on the Internet, many of which are no longer developed but are still sold. The number of terminal emulators available for download is truly mind boggling.)
Joe's current solution is to sell our clients copies of a terminal emulation product called Anzio. This product meets our needs, however it is not free. Getting a free terminal emulator would be a major cost cutting move for DPS, the savings we could then pass on to our clients.
Since I like free and open source software, I looked for something available. What I found was a package called Wy60. I proceeded to compile it and set it up on my personal server for testing.
I then created a script to connect to the DPS server and gave Joe an account to try it out. What we found with this piece of software was that we could use a free terminal emulator to connect to the system, and then run the script and connect to the DPS server. Our program, for the most part, appeared to work. However, many things were rendered incorrectly and did not work properly. Joe claims that this is because it did not support all the escape codes we needed. However, this was a major step up from what happens when a terminal not supporting Wyse emulation is used, so we went on.
The great thing about open source software is that you can look at the source code. I then proceeded to analyze the source code, in C, of the Wy60 terminal emulator. C is a very obfuscated language, which makes many things difficult to learn and understand. I decided that making the changes we needed to support our system to the Wy60 program would be too difficult and time consuming.
Upon further searching the Internet, I found that ALL of the other terminal emulation programs supporting Wyse 60 emulation cost money. There was no free program available to do this. After finding this, we determined that the solution to our problem was to stay with the status quo, or the way things are right now. This was not an ideal solution, but many times compromises need to be made so that things can continue to function. This is another one of many examples where there's no such thing as a free lunch!
Since we (Joe and I) weren't really successful in solving the Wyse terminal emulation problem (as defined by finding a free alternative to Anzio) we couldn't really claim full success. But what we can claim is that we looked into different possibilities and found that there wasn't really anything on the market right now that can serve our needs. This doesn't necessarily invalidate whatever time or effort we invested originally in the problem, however.
One alternate path to choose that could "solve" this problem is to pay a freelance C programmer to modify the Wy60 terminal emulation program to do what we need to do. However, if we do so, we are bound by the GPL license that the Wy60 software was made under to release our modifications to the community, along with the source code. This drawback (if you classify it as such) to going this route may prove to be worth the benefit (not paying for Anzio licenses), but further consideration would need to be given to this subject.
Over the past few years I have been working on my job search preparations in various ways. I have been an active member of the Tidewater Unix User's Group for several years now. This provides a social network of professionals and hobbyists who enjoy using linux, and their mailing list can also be a source of free support for many various problems that come up when using linux and free software. In return for these benefits, I provide help and support to other people on the list when I feel that I can be of help. I've also given presentations at TWUUG meetings in the past on topics such as IRC and GUI firewalling tools. (My presentation on IRC can be found here)
Also, when I have time I hang out on IRC on the 757.org server. This puts me in touch with a variety of local people interested in technology, many of whom are hardcore professionals in areas such as networking, systems administration, and security. In addition, I also meet some people on here in person from time to time in such forums as informal group chats over dinner.
As far as concrete plans for my future, I have some requirements for my postgraduation job. My 2 main requirements are a good salary and good health insurance as part of the benefits package. I would like to work for this company after I graduate.
I would recommend getting an internship to any student since there are many things you learn by being with a business that are not addressed in academic coursework. I have tried to address several of these items in my blog in previous posts. I would recommend learning more about the company you want to work for. There are internships available in all different types of companies, from multinational corporations to small businesses such as DPS. There are benefits and drawbacks for working for different types of companies. In a small business you may be afforded more latitude in the way that you dress, but sometimes a lot of things come up at once and you may have to work a lot at one particular time since there are less employees to spread the workload over.
I hope you enjoyed reading all of the above information, but this isn't necessarily the end of this blog. I plan to continue blogging regularly on this internship this summer until I go back to school on August 23.
Until next time...