I love LAMP: Learning Web Programming

Do you really love LAMP or are you just saying that?

Anchorman references aside, I have been teaching myself web programming in my spare time these last few months.  This seemed like the perfect way to stay fresh considering that my current job is not technical.  It has been a truly eye-opening experience.  Given my electrical engineering background, I thought this would be quite simple.

  • I’ve coded in C and Java extensively (Matlab too!)
  • I feel comfortable with compilers and IDEs
  • I like drinking coffee and staring at a screen for hours

But I am learning that this is a completely different animal – in a good and challenging way.  The first challenge was seeing the big picture – how these technologies intertwine.  Scouring wikipedia.org really helped – the amount of information is immense!  I also looked through Craigslist job posts for internet engineers to see what skills employers sought, PHP and MYSQL being the two most popular.  The LAMP acronym came up very frequently.

Learning to love LAMP

“LAMP is an acronym for a solution stack of free, open source software, originally coined from the first letters of Linux (operating system), Apache HTTP Server, MySQL (database software) and Perl/PHP/Python, principal components to build a viable general purpose web server.”  [from wikipedia]

I think it would be pretty cool to run my old laptop as a server for my own site using a LAMP solution stack, but that is a few steps ahead of the game.  For now, I am focusing my attention on learning PHP and MYSQL at a very high level.  Fortunately, there are many tutorials and tools available to help learn these.

XAMPP: The tool for testing and creating

A friend, Kilbot, made some good recommendations to one of my previous posts.  Since then, I have downloaded XAMPP so I can create/test the websites from my computer.  Without XAMPP, testing any .php file would require uploading the files to a server to run the php code.  This is really slick! XAMPP comes with phpMyAdmin, a web interface to help create and manage the MYSQL database. Using this tool allows me to build the database without having to fully understand the intricacies of database programming. Using XAMPP is a great way to learn web programming since it reduces a few of those barriers.

I can ignore MYSQL until I learn PHP, right?

Not quite – you have to set up the database properly to serve as the foundation for all the code.  I was going about this all wrong until I read this tutorial by Gizmola.  Part one of this tutorial helps beginners such as myself set up the database by creating an entity-relationship diagram.  He teaches how to make the ER-diagram and how to implement the various mappings (1-to-n and m-to-n).  This was something I had not considered.  Considering this tutorial, to make a highly functional website would require having the data structures set up properly from the beginning.

After you eat your vegetables: Ruby, Ruby-on-Rails, Erlang

With all this research, it has been very easy to go down the wrong path or to get sidetracked.  While sidetracked the other day, I found these awesome resources for Ruby and Ruby-on-Rails.  From my understanding, Ruby-on-Rails is the language used to power Twitter.  Both of these sites had great interactive tutorials.  Learning a language could not be easier with tools like these!  I was tempted to just learn these languages and scrap the whole LAMP idea, but I remind myself “first things first” and table the idea.  I really like that I can easily use a command line for this program.  This is really in my comfort zone from using Matlab for so long.

Also while sidetracked, I read about Erlang.  I would be interested in learning Erlang later since it is a concurrent programming language.  Having learned VHDL (concurrent hardware description language), I wonder if this would be easier to wrap my mind around?

Sanity Check

The W3Schools tutorials have been very helpful for learning/remembering HTML and CSS.

So now that I have focused on what languages to learn (PHP and MYSQL) and what tools to use (XAMPP and Notepad++), it is time to make progress on my projects.  It is very tempting to get sidetracked and go astray with the plethora of information available on the web – I hope that by blogging about this I can document my work, review what I have learned, and focus my attention through self-reflection.  This is my rubber duck.

Until next time, I will be learning to love LAMP.