Old Dominion University
A to Z Index  |  Directories


Career Management Center




Directory

Career Assistance

Career Resources

Career Experience

About




David, Computer Science Blog

 
 First Post
 Projects so far
 This week's projects
 Programming strategy
 Final Report Items

Last few weeks

I have decided that Monday, August 20 will be my last day at DPS.  After that I will be getting things ready to move into my new apartment and preparing for the new school year.

The past few weeks I have been working on the Program Release Update module, but also I have been working on the new DPS website.  Recently, I authored a major design change to the website.

As an example of what the website looked like before the redesign, see The Internet Archive.  (Note that the question marks at the top of the page and broken image links were NOT in the original design, but are simply a limitation of the Internet Archive's image.)

The new website is available at distprsys.com.  As you can see, the gray background is taken out and new pictures are added to the top, as well as the content staying mostly the same (but adding new industry categories).

Final Report Items

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.

Position Information/Duties/Responsibilities

This information has been covered in previous blog posts.

Progression

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.

Academic Relevance

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!

Beneficial Suggestions

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.

Future Projections

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.

Conclusion

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...

Programming strategy

This week, I've been working on the basic programming strategy for the COBOL application I mentioned in my last few posts (you know, the one that has the program release update stuff).  In particular, I've had to modify the file descriptors, or the way the data is stored on the disk.

One of the ways that COBOL differs from other programming languages is that you can't just define a string or an int (integer) number to use in the program.  You have to know how many digits are in that number, or how many characters (letters, numbers, spaces, punctuation, etc.) are in that string.  This is one of the main reasons why COBOL is (or was) so susceptible to the Y2K problem.  Back when corporations and organizations first started writing large COBOL programs for mainframes in the 60's and 70's disk space was at a premium.  Entire mainframe's hard drives may not have been any bigger than the amount of data that you can store on a floppy disk.  (Remember floppies?  They've already almost gone away today.)

For this reason, programmers decided to store years as 2 digits instead of 4.  They thought the notion that the same programs would still be in use in 1999 to be ridiculous.  History proved these initial notions to be false, as the vast majority of code in use as well as new code coming out today, even in 2007, is in COBOL.

On my current project, I am not writing a new program from scratch.  Indeed, here at DPS and elsewhere, most COBOL coding is modifying existing programs, not writing new ones.  I am modifying a menu administration program to instead manage release updates.  This is logical because each release update will correlate to a specific menu item.

We should have a new server coming in for a client shortly.  Then I'll take some time to set it up to be ready for our system.  There's an interesting story relating to our new servers as well.

For many years, DPS purchased servers for our clients from a local custom computer company.  Recently, however, that company has gone out of business.  When we purchased servers from the previous company, generally we purchased white (more specifically, beige) servers for our clients.  Now, we purchase servers directly from Dell, and the model we purchase comes in black.  Many of our clients are surprised when we send them a new server and it's a totally different color from the old one.  Generally our clients don't resist the change too much, but it just goes to show that in business many people are resistant or hesitant when it comes to change.

Another change we're in the process of making right now is with regard to the way our clients back up their systems.  Previously, all backups were on tapes, but now we're moving to having our clients back up their systems on USB memory sticks.  There's been some hiccups and we'll probably have to deal with a few new issues, but we're hoping that the transition will be as smooth as possible.  All indications so far seem to be that everything will go smoothly.  We've already committed to the change though, because the last server we bought didn't have any tape drive in it.

Until next time...

This week's projects

I hope all my readers had a happy and enjoyable Independence Day, despite the fact that getting one day off in the middle of the work week isn't an ideal situation!  Mike Gruss from the Virginian Pilot has an interesting and humorous way of dealing with this, even if it isn't a particularly smart idea.

As I mentioned in my previous post, I have been working on a way to get a release update management software application written in COBOL.  At this point, I have been working on modifying the menu management software to better suit the needs of the new release update management system.

COBOL hasn't been the only thing I've been doing.  I've also been setting up a number of printers for use on our clients networks.  This isn't extroardinarily hard, but sometimes we ship out a particularly large printer and some heavy lifting may be involved.

Something interesting happened at DPS this week.  About a year and a half ago, one of our clients had their server stolen out of their office, along with the safe where they kept the backup tapes.  Unfortunately, they had no off-site backups to go back to, so they had to start all over again with no previous data.  As a result of this incident, DPS started offering a service at a modest price to clients where DPS would host a backup copy of a client's data on a server here at our office in Chesapeake.

A few clients initially signed up for the service, and said it was a very good idea.  But until this week, the client who had his server stolen did not sign up.  In the end, as soon as Joe (the owner) brought up the topic of signing up for the service this week, the client quickly agreed that it would be a good idea and that he wanted to be signed up for it.

Also, Joe and our programmer Frank are making some key modifications to our software this week.  Up until now, only one client could be hosted on a server running the DPS software system.  Now, Joe wants to set up a way so that more than one client's software can co-exist on a single server.  Under the current system, each client has a server at their site that runs the software and we can log into their server from here and perform certain administration tasks or check on things if necessary.

This will clear the way for DPS to start offering more clients a hosting service with us running the application on a server here in Chesapeake and interacting remotely with it over the Internet.  There is one client doing things this way now, but after we make these modifications more clients can do it as well.  This will lead to better utilization of hardware available as well as reduced costs for us and the clients, since our software only actually needs a fraction of the computing power and disk space available on a server that we provide.

 

Projects so far

I've been working here at DPS since shortly before Memorial Day, so I have been doing quite a bit of different projects here.  Most of them involve coding in COBOL, and my first few assignments pertain to printing reports on customer data from within the DPS software system.

One of my past projects was to create a web form that shows hardware and services that are available for clients to purchase, and allows them to place an order online.  They do not really place an order in the typical e-commerce way, but it instead just sends my boss Joe and Gale, our support technician, an e-mail saying the a particular client wants to buy something.  This lead into my next programming project that I've been working on for the past week, which is the following.

This project involves re-creating an application that my boss had previously that he does not have any more.  My boss paid a large amount of money about 10 years ago for a web-based release update management system to be developed.  This informed customers about what updates were in each release and allowed them to choose which updates they wanted added or modified on their individual system.

This worked well until about a year ago.  My boss purchases web hosting services from a local IT company, and last year one of the partners left the company in a spectacularly destructive fashion.  This resulted in all of our company's (and our client's) website data being erased from the server, including this very expensive web application.  After about a month of downtime for the DPS website as well as all the DPS client's hosted websites, some of the data was recovered.  Unfortunately, the web application was not able to be recovered.

At first, I started working on re-creating the application in the original web interface with ASP.net.  After some discussions of what type of database to use, and my boss's desire not to install anything else on his server, we decided the best alternate strategy would be to do the interface in COBOL.  This took the web interface out of the question, and I am beginning working on modifying the menu administration application we have to fit this project.

Not everything I've done has been strictly related to programming.  I've also been learning how to set up printers to ship to clients, and how to install servers that are shipped to clients.  When clients order a new printer or server, it is shipped to us to install and configure rather than being shipped directly to them from the manufacturer.  With the printer, we need to set up the correct font settings as well as the correct network settings for it.  With the servers, we have to install Red Hat linux on them, and also our custom packages as well as some other software that the server needs to function.

That's it for now, until next time...

First Post

Hello, and welcome to my summer internship blog!  I'd like to start by saying a few things about myself.

I'm a Computer Science (CS) major and Business Administration minor at ODU and I am going into my senior year.  I am involved in various organizations here at ODU, including Catholic Campus Ministry and the Association for Computing Machinery, which is a professional organization for CS majors at ODU.  I knew I wanted to get an internship this summer because I wanted to get real-world experience in CS while earning money to save and spend during the school year.

I found this internship through e-Recruiting, which is an online system run by the Career Management Center that helps students find jobs and internships for any field of study before and after graduation.  The company I am working for is Distribution Processing Systems in Chesapeake.  We design software for the wholesale flooring and furniture distribution industries.  At this point, I have been working here for 4 weeks.

One of the first things I realized here is how an understanding of business concepts and terminology can greatly assist with working on the specific types of programs that we work with.  For example, understanding what is meant by general ledger or different inventory control methods helps the programmer understand what the software is meant to do.  This is not true in some kinds of Computer Science applications like scientific and mathematical modeling or defense systems construction.

Here, I will be learning about COBOL, which is the computer language our software is written in.  COBOL is a computer language that has been around since the late 1960's that is designed for business use.  Many people consider COBOL to be outdated, however the truth is that there are many millions of lines of code that are in use that would be impossible (economically) to re-write in another language, but still need updating and modifying.  COBOL is notorious for being the major computer language affected by the Y2K problem, where dates were stored using only 2 digits instead of 4.

We also use Red Hat Linux file servers at client's sites and administer them remotely over the Internet because our clients are all over the country.  Remote administration was not always possible; since this company was founded in the late 1980's there was a time when Joe, my boss and our founder, would have to fly to client's sites and install and maintain systems in person.  Also, computer technology has advanced tremendously since those days.  In the beginning, computing technology would be a very foreign thing to most clients, but now clients have at least some understanding of PC technology and how it can help them run their business.

That's all for now, next time I'll write about my current projects I'm working on here at DPS.

 


Link to your future...Your future starts now!
Career Assistance  Career Resources  Career Experience