Friday, June 16, 2006

The New/Old Prgramming Language


There is always anticipation and frustration learning a new programming language. Since I have started studying AI, I have gain an interest in Lisp, which is short for LISt Processor. John McCarthy, credited as being the father of artificial intelligence, created the language. Basically, he took some simple operators and created a language using lists as data structures and form for the language. It was not intended to be a programming language though, just a theory exercise. Here is a good essay about Lisp and programming languages in general by Paul Graham: Revenge Of The Nerds. If you want a more encyclopedia type description of Lisp, here is the Wikipedia page.


What I have had to get use to is the expressions. Everything in Lisp is written as a list starting with an open parenthesis and closing with a parenthesis. The elements inside the parenthesis are processed. In mathematical operations, the operator is the first element followed by the operands. An example is"

(+ 1 2 3 4)

The result is 10. In human readable form, this operation would be expressed as:

1 + 2 + 3 + 4 = 10

See what I mean. I recently wrote in an email to a fellow IT Architect, Derek Burt, about learning Lisp


...On another note, I have been trying to learn Lisp (yeah....I said Lisp). It all started when I began studying AI. It seems Lisp is the preferred language for AI which makes sense since John McCarthy invented the language and he is considered the father of modern AI. I have to tell you, I am digging the language. Especially using a REPL (Read Evaluate Print Loop) inside Emacs. Since I started down this path, I am learning more about programming languages than I have ever before. Example terms and tools are:

Emacs (I have used VI many times, but not Emacs. I am not sold on it, but it is a favored editor for Lisp)
S-Expression (Studying Lisp has opened my eyes to s-expression and m-expression)
REPL (Read Evaluate Print Loop)
SLIME (Superior Lisp Enteractive Mode for Emacs)
Abstraction (A common term, but programming in Lisp really demonstrates the importance)

There is more. You see, I was a MIS major in college, which is programming to process information for business. I did not study computer science. I did in high school when I was in a magnet cluster program design to "raise" kids in school to learn computers and programming, but that was a long time ago. I went down this path to refresh my mind for IT and get the war behind me. I wanted to get excited about the IT industry again so I can perform when I become an active IBMer. What better way to "re-learn" programming than by learning another language?

More to come on my journey of learning Lisp.

Thursday, June 15, 2006

House Cleaning

Have you ever look at your house and been disgusted and embarassed by the clutter? Well, that is how I have felt for over two weeks now. Today, I said enough is enough. I am going to clean and organize this place this week.

DAUGHTER'S ROOM
Let me clarify something. My house is not "dirty". There is no real dirt along the floor or on the tables. It is the clutter that agravates me. Unorganized piles of toys, artwork, crayons, markers, and jewlrey on my daughter's bedroom floor and closet is autrocious. To start my mission, I decided to buy some plastic boxes.
**update June 15, 2006**
Last week, I loaded all the toys into the plastic boxes. The toys that were not "complete" or my daughter was not interested in were taken to the Goodwill. You would be amazed at how much stuff that cleared up. With all the "undesirable" toys gone and the rest loaded in the plastic boxes, I was able to place all of them neatly into her closet. For the first time since I have been back from Iraq, I can see my daughter's floor. Now that she knows what right looks like, she has taken ownership of her room and keeps it clean. In addition, she does not let her younger brother mess it up. Organization can go a long way.

CLEANING MY HEAD
No, I do not have a "dirty" mind...well...sometimes. Building on what I learned about my Alexandra's room, I decided to organize my thoughts. You see, when I returned from Iraq, there was a thousand and one things I wanted to do. I wanted to take a vacation to Hawaii again, surf at Jax Beach, learn new programming languages such as Lisp (yeah, I said Lisp), create an intelligent bot program that could talk (this is where Lisp came from), and I wanted to write a book. See what I mean. Well, reality struck and I finally realized that I can not do everything at once. I need to organize my thought and prioritize my activities. More to follow...

The Start of a New Life

Hey, I have just returned from my year long deployment to Baghdad and now I am ready to restart my life with my wife and kids. In addition, I am trying to revamp my skills in Information Technology. Lets start there.

ARTIFICIAL INTELLIGENCE
Today is the day I have started my studies of Artificial Intelligence (AI). AI has always interested my, but I have only studied what I could do with program code, not what it can do for me. During my first search of AI, I quickly learned about Alan Turing and the LISP programming language. LISP is a different kind of programming language. I never realized it is considered the second oldest active language. The oldest active language is FORTRAN. After a few more searches, I learned terms like neural networks, natural language processing, knowledge representation, automic reasoning, and machine learning. I seem to have a lot to learn.

WRITING MY FIRST BOOK
Yes, I have said it the entire time I was deployed, "I am going to write a book". Now that I am home, I have yet to start. Well, today I made a solid decision. I am going to write this damn book while the knowledge of the war is still fresh in my head. The real reason I have not started, other than being lazy, is because I did not want to think about the war. I wanted to forget about it and get on with my life. Today, I realize that I am being lazy and selfish. I need to share my experiences. My experiences go well beyond the actual deployment to Iraq. They go back to my first deployment in Bosnia when the war started. It then goes through my many projects with IBM, some related to the war. After that, my experience at the Infantry Captain Career Course at Fort Benning, GA and finally, my mobilization and deployment to Iraq. Whew, that is a lot. Well, like I said before, there is no time like the present.