Thursday, March 3, 2011

Trip down the memory lane: Feeling Unix-y

Today I am feeling very unix-y. 
Although I was introduced to programming with with BASIC at the dawn of 90's. My real hacking days started back in 1992 with programming in Turbo C on a new 286 machines we had in our college. That same year I learned C++. Back then to code was to code in C/C++. And I spent so much time reading about programming when I shouldn't have. 
My Original plan was to complete my Mechanical Engineering, but pretty soon I got addicted to programming. I switched lines, started all over again and become a Computer Engineer. I am so happy I did that ...

.Turbo C++ C Programming Language (2nd Edition)
My First Encounter with Unix : I saw it, I used it , I was conquered. 
Anyway,  Windows 3.1 was not released yet - it was early 1992 so all we knew was DOS. Then I read about the UNIX and wonderful things it can do. I think it was System V because I remember reading the System V manual to get by. Soon  after I got my hands on a book that completely transformed my thinking. To this day Unix Power Tools is the single most influential book.  It transformed the way I thought about programming.  We had a SCO based system in our labs and I played a lot with it. I was a first year engineering student (again), so I had very limited access to computers and I simply had no money to buy one for myself -it was out of question. But whatever hands on experience I got, it changed the way I see world. IT WAS ALL ABOUT MODULARITY AND REUSE.

        Unix Power Tools    
My Other Two Love Affairs
I was an avid reader and a hacker. I was in second year of my Computer Engineering the access to machines was still limited. So every semester I would choose some extra curricular project just so that I could get access to latest and greatest machines after the normal lab hours. That year I chose to implement a motorola 68000 simulator on then brand new Windows 95. I was already a fan of C++. To this day I always prefer C++ over C unless there is a specific reason not to do so - because it is simply more powerful especially with STL. But  mainly because IT WAS ALL ABOUT MODULARITY AND REUSE.
I read dozens of books on C++. Really tried to master every bit of it. Even today when i am bored I read Bjarne's book Design and Evolution of C++.   
The Design and Evolution of C++Visual C++ was fun and pain at the same time. But more importantly Pretty soon came across brand new idea - OLE and COM. It was awesome idea. Truely mind opening. Back in 1995-96 it was THE coolest idea I came across. It was so complex and required a huge learning curve but truely awsome.  IT WAS ALL ABOUT MODULARITY AND REUSE.

 Inside Ole (Microsoft Programming Series)   Inside Com (Microsoft Programming Series)

My Favorite OS Design books in school.

Operating system system design was a required subject and I had a habit of poking my nose in all sorts of complex and advanced studies not required.  

The Design of the UNIX Operating System [Prentice-Hall Software Series] UNIX Internals: The New FrontiersOperating Systems Design and Implementation (3rd Edition)UNIX System V Release 3.2 Streams Programmer's Guide (AT&T UNIX System V Library)
I started thinking about the new operating system concepts
My Seminar On Object Oriented Operating System
As students we were required to choose a subject, present a seminar and answer questions.  Back then I was so totally impressed with simplicity and abstraction of Unix that I wanted to combine that with the power of C++ and OLE and Java.  I chose the subject of "Object Oriented Operating System".  Underlying assumption was that OS will be Micro kernel based.  The interfaces would be object oriented. There would be "active filters" dynamically inserted like unix streams. Windowing system would be implemented as hierarchical file system to which one can write display commands, interprocess communication would be through local sockets. 
Away from Unix into NT
For next few years I worked exclusively on Windows. But my fascination  with OS switched  from Unix to NT. Inside the Windows NT File System soon became my bible. I was required to understand that just in case we had to write a driver or something,In my first job I passed on the opportunity to debug kernel code instead worked on WMI because I knew a lot of COM.
Inside Windows NT (Microsoft Programming Series)
Serendipity:Interesting Articles 
It was 1999 - In the mean time Linux was really picking up and while searching the internet I came across two very interesting set of articles - 

  • Halloween Documents : 
  • Extreme Programming : 

What I learned from those two random things I stumbled upon? Until that point I never thought the strength of the technology is in actually in how it evolves. And that nothing succeed like an idea whose time has come. Software is all about great ideas and a sturdy process to implement it.  

(Now make sure that I do not start a flame or blame war I stress that I everyone knows this : I do not think Microsoft is evil NOR Linux is a bad virus or any of that sorts. Both guys are awesome. Yes apple too. For servers Linux is strong. For Office space Microsoft is unbeatable. Apple does re-invent the consumer market. May be Rule of Three is true. 
But anyway - It was an eye opener- because there were layers of complex issues that I never thought about. I was impressed by the deep thinking on both sides. As predicted: Linux did kill all other major unix variants and Microsoft did embrace Open Source.)  
Back to Unix
One of my recent job required me to work with Unix again and then I came across this wonderful book   
The Art of UNIX Programming

What is my passtime these days? 
I down loaded the Linux Kernel source recently and started reading it ! Just for fun!!
I am also reading following three books simultaneously !! Every day I randomly pick one and read for fun ...
 Professional Linux Kernel Architecture (Wrox Programmer to Programmer) Windows® Internals 5th (fifth) edition Text OnlyMac OS X Internals: A Systems Approach

No comments:

Post a Comment