Wenton's Linux Programming Page

Linux is generally thought of as a variant of UNIX that is run on a PC or MAC or Amiga, or any one of many different kinds of platforms.  Sometimes, this is a fair description, but it is also very important to understand that linux is much more than that.  There are a lot of people that work on linux to expand it to do much more than the basic UNIX system does.  This is a great benefit to the capabilities of linux systems.  However, it is also important to understand that this also causes a great instability in many systems.  with so many people creating so many differetn system-level programs and libraries, and then even more people building applications programs, the result is that there is a tremendous amount of software out there, being produced, that can not really be fully tested.  Even if each independant developer (or company) does perform rigerous tests of their software, and the software passes their tests, anybody that is integrating different companies' software MUST keep in mind that although they might be guaranteed that each package works, there is rarely any guarantee that the two (or more) packages will work together.  Although openly available software such as linux is an excellent means of making linux (for example) it's own society and develop a lot of software, which, in turn, helps people in that society find lots of really neat things, it does have the dark side of being at leas a little unstable.  If you are a developer, particularly of application software, be warned that combining libraries from different manufacturers can be very complicated.  Anybody building software that uses more than one thrid-party library should plan to include integration testing as part of their development... but that's a whole other issue.

UNIX, itself, is a very old operating system in terms of computer software.  It predates even DOS by so much that when DOS was created, it was actually a very small implementation of a UNIX shell (the Bourne shell, to be specific).  DOS (and windows) makes the assumption that a computer is only used by one person at a time.  UNIX, on the other hand, comes from a time when an office might have one computer (usually locked in a huge room full of air conditioners), and everybody used dumb terminals or graphics terminals, connected to the main computer using RS-232C cables.  If you don't know what RS-232C is, basically, it is the serial port on your computer.  Because UNIX is designed to have multiple people connected to the same computer at the same time, when a program runs (including simply logging a user into the system), it builds an environment, basically to contain the user into his/her own private little area.

OK, that being said, let's look ahead into some of the capabilities of linux as a variant of UNIX, first, and then look at some of the linux-specific goodies.  Here is a list of simple programs that may (or may not) be useful.  The table below shows some of the projects and ideas I've worked with, and in a few cases, there is a link to some samples.

libraries communications networking database GUI

shared memory
child/parent processes
pipes and IPC
embedded ESQL in 'C'
I hate database work!
Basic X11: Ellipse Escape

Wenton's email (wenton@ieee.org)