Dominic,
Thanks for your reply and kind words. I will reply in turn by telling a story about one of my first UNIX projects. (can't actually remember the very first
<B>In a galaxy far away ....</B>
I worked as a contractor for Motorola outside of Chicago. I had very little UNIX experience but a lot of electrical engineering experience, so I got a break to work on UNIX. The boss said, here are the UNIX systems, and here is what I need, and here is the root login, be careful. Of course, the system was not a production box, but in the Motorola lab.
My first project was to take the HP test equipment running the HPIB (IEEE 488) interface to 'Rocky Mountain Basic' running on HPUX. It was a multiuser environment with different users needing the same test equipment so there were waveguide switches, command and control, etc. The atomic and threadsafe pieces were complex and challenging for a novice; would still be challenging today!
The first thing the project had to have was shared memory between different UNIX processes. (it took a while to learn that shared memory was the right IPC choice, BTW. why not message queues? semaphores? ) I had to learn everything about Interprocess Communcations (IPCs) which is the heart of the UNIX OS. I used the systems calls in HPUX to build this code and had to debug it. The systems calls did not work. I called HP. Back in those days you could talk directly to the system code developers. They told me that NO ONE had every used the system calls to do shared memory using RMB as we were doing with the HP test equipment. I was the first. We worked together, they fixed the bugs in the system call, and SUCCESS!! (I thought I would go crazy after a few weeks on this job!! My golf game fell to pieces. No way I could concentrate on the course during this learning period.)
After that, I got the task to interface the same system to a Progress database. I had to write both the socket clients and socket server APIs for this using HPUX system calls and Progress UNIX APIs, all in C (and some RMB interface glue to the test gear). Each line of the client-server code I had to debug myself. Of interest, the Progress gurus said what I was doing was 'impossible' because Progress would not do it out of the box. I said, 'that is what the published APIs are for, right?' In return, they refused to acknowledge my existance
Two terminals set up next to each other.. Create a socket, bind to the socket, listen, send data... "Hey,where is the data on the other end?" Debug more, write more print statements, lose another pound of fat (muscle!), drink more Mountain Dew, try again. Finally, I build the C APIs to allow a user in the Progress SQL system to make a query directly to the HPIB systems and to store the HPIB test results in the Progress database. We tested. Others tested.
The code all when into the production line on the Motorola assembly line where downtime is taken VERY seriously. Radios are built on assembly lines and assembly lines must roll!! Failure is not an option, period.
I will not bore you with too many 'war stories.' I hope you will understand my point that the best way to become an expert in UNIX is to use the UNIX systems calls and the C programming language to develop applications or APIs that use UNIX IPCs. You will learn system adminstration, shell, C programming, etc. by default because you can't build UNIX systems applications without mastering the shell environment. You can't be a good systems programmer without C - the best PERL programmers are old C programmers who don't have time to compile
I would suggest that you tackle modern problems like APIs and extensions to PHP, PERL, MySQL and/or work on UNIX interfaces to wireless protocols over the Internet, i.e. WAP, Bluetooth, or something modern and fun. Yes, it will be hard, but you just might become the next 'famous person' who built a killer app! If not famous ,you will become a great UNIX person. Think of Eric and sendmail. Larry and PERL ---- NTP, USENET News, etc. All of the people were just like you at one time. Many of the greatest programmers of all time gave their code away for free to benefit the community. Do they sell UNIX certifications?
That is why I started this forum. It is the newbies of today who will become the gurus of tomorrow. Everyone is an expert at something and no one can be an expert in everything. It is the passion for the results, for success, to achieve, which makes it fun. UNIX offers more for the imagination that any other software platform by far. Today, you can get a super fast processor, memory, and disks for next to nothing. Many of the best flavors of UNIX are free.
There are no barriers except your imagination, your motivation, and your interest.
<B>"Free Your Mind." -The Matrix</B>
BTW. The original book by Stevens that I used to learn from dring my days at Motorola is out of print. Here is an Amazon.com link to a later (maybe better) edition of UNIX Network Programming by Rich Stevens (a true UNIX hero!)
Moderator's Comments:
|
|
Removed old links to books.
|
|
Rich Stevens has 'opened the mind' of every successful UNIX programmer I know. Here are two other Steven's books that are core to any serious UNIX study. There are more too!
Moderator's Comments:
|
|
Removed old links to books.
|
|
If you work from these books you will learn more than any certification course could teach at any price. I promise that there is no better path. Don't forget to pick up a few good books on C programming. The K&R book is the classic.
[Edited by Neo on 11-09-2000 at 06:53 PM]