Tuesday, October 28, 2014

Day 48: Continuing with Terms and Installations

Today I continued learning web dev terms.  I read about cookies, which track what you do online, and Ruby on Rails, which is a framework for Ruby which simplifies many tasks that can be accomplished by Ruby.  I learned about AJAX (Asynchronous Javascript and XML).  I learned that JSON is replacing the XML part of AJAX.

I learned about front end web development.  CSS is the design part of the page, HTML is the structure of the page and Javascript is the interactive part of the page.  All of the front end happens in the browser.  The back end is everything that happens before the information gets to your browser.

A typical setup for a backend is a web server, an application, and a database.  The web server (running Apache, Nginx, or IIS), delivers a note to the application that you need some information, such as flight times, and the database (such as MySQL, MongoDB, or PostgreSQL) gathers the information, which the application then puts together and sends back to your computer via the web server.  The back end of the web page could be put together with Python, Ruby on Rails, or PHP.

I learned that Java and Javascript are two completely different languages that happened to come out around the same time, and only share a name thanks to marketing (Java was a buzzword at the time).  I learned that SQL stands for Structured Query Language.  I learned an easy SQL query!  See below:

SELECT name FROM users WHERE age > 25;

I learned that there's a NoSQL crowd of developers that don't really like how SQL works, and are making new kinds of databases instead.  Any blog posts we make, or even our bank account balances, for example, go into a database, and we retrieve the data from the database every time we retrieve the information from the internet.

I read a story on Slate about _why, the creator of "why's (poignant) guide to Ruby."  It was really interesting, it summarized _why's participation in the Ruby community and his legacy.  I really enjoyed learning all this background knowledge related to Ruby in particular, and to programming, generally.  I am definitely starting to get a sense of being part of a broader community.  I am starting to see myself, as a programmer.  :)

I learned about LAMP, which refers to the specifications of a web server (Linux, Apache, MySQL, and PHP/Perl/Python).  This defines the operating system, web server, database, and scripting language, in that order.  One of the advantages of LAMP setups is that the software used is all free and open source.

I learned that the &nbsp I see sometimes in my blog's html code is called non-breaking space, and it's a white-space character that isn't condensed by HTML.  Its primary function is to hold open table cells or add spacing between words (or at the beginning of paragraphs if an indent is desired).

I learned that "script" refers to a portion of the code on an HTML page that makes the page more dynamic and interactive.  Scripts can be written in a variety of languages, including Javascript.

I installed the XCode via the CLI by entering the xcode-select --install command into the CLI!  This was my first installation via the CLI!  :)  My Odin Project said to enter this:

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

This is in order to get "which git" to return usr/local/bin/git instead of usr/bin/git, which is the default. The problem with usr/bin/git is that it will point to an outdated version of git installed by XCode, as opposed to the newer version I just installed. The code above is supposed to fix this, but it did not. I googled around a bit, and this website:

http://blog.grayghostvisuals.com/git/how-to-keep-git-updated/

Had a different bit of code to enter to solve the problem, see below:

export PATH=/usr/local/bin:$PATH  

That worked.  So now, when I run the "which git" command, the CLI returns: 

usr/local/bin/git

And the version is 2.1.2 (as opposed to 1.9.3 before entering the code above to make the modification).  My RVM version is 1.25.34, my Ruby version is 2.1.3, my Rails version is 4.1.6, and my bundler version is 1.7.4.  So far, the only issue I encountered with my installations is the issue I described above with the file path leading to the older version of GIT that came with the XCode installation, and I was able to resolve that issue with a google search. 

After doing that, in my browser, I went to:

localhost:3000




That's the page above.  I went through quite a few commands, and then ended up at:

localhost:3000/drinks/1



The above is a screen shot of that address, showing the output after I entered some selections.  I created a Heroku account, and also set that up in my CLI.  I was able to see the app that I deployed in my Heroku account, live, on the web!  Woohoo!  That means I deployed my very first Rails app today!  I also created my Nitrous.io account, and got my first Ruby box running.


SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,823

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 336, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 86% of all students."

Badge(s) Earned Today:

None

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 7

Total Hours Coding: 232

Monday, October 27, 2014

Day 47: Installing via the CLI, Web Dev Terms, and Web Dev Tools

To install via the CLI, wIth Ubuntu Linux, we can use APT, which stands for the advanced packaging tool.  The "which" command, followed by a program, will tell you the location of a program.  sudo apt-get update will update your computer's catalog of available software.  We went to www.sqlite.org to download sqlite, and then walked through the process of manually installing a program.  

I finished the CLI course today and moved back over to the Odin Project, where I went over web development terms.  I learned of top level (.com, .edu, .gov, .co.uk, .jp) domains and second level domains (yahoo, cnn, bbc).

I learned of POP and IMAP, and the difference between the two (IMAP allows email to be read by multiple computers, as the emails are stored in the server, "the cloud," while POP deletes the server's version of the email once it has been downloaded on your computer.  This creates an issue if you use multiple devices to read your email and want access to your email on all of them.  POP used to be the most common protocol for accessing emails, but IMAP has become more and more popular.

I then went over tools used in the trade, such as Sublime 2, which is the text editor I have already been using, Heroku, Git, Nitrous.io, Ruby gems, RVM (a way to install multiple versions of Ruby and multiple versions of Rails or any other gem on your computer and then you can choose with gemset to use for a given project), Rails, and XCode.

I read up on the meaning of API (application programming interface), which is how computers and web applications share information with each other.  For example, FarmVille talks to the API, which Talks to Facebook.  Facebook talks to the API, which talks to FarmVille.  I learned how to look at the API, for example:

https://graph.facebook.com/cocacola

and 

https://graph.facebook.com/Skillcrush

It's really interesting.  I looked at the text and it looks like it's information a company 
would send to Facebook, which Facebook would then display graphically, in Facebook's visual format, but I'm still learning about API's.

I learned about IPv4 and IPv6. I learned that 127.0.0.1 is the standard IP address for your computer to talk to, which some of us might just call home. I learned that the numbers in between the dots can go from 0 to 255, for a total of 4,294,967,296 possible addresses. IPv6 offers MUCH more possible addresses. 

I learned that most web apps are comprised of PHP with a MySQL database running on an Apache web server on a Linux computer.  In regards to bugs in code, I learned about PEBKAC and ID10T errors, hahaha!

I learned about DNS (Domain Name System).  DNS servers are a bunch of computers that keep a record of the domain names and IP addresses of all the other computers on the internet.  So, when you want to visit a webpage, like www.cnn.com, your computer will ask the DNS server for www.cnn.com's IP address.  Once it gets the IP address, your computer (via the browser) talks directly with the computer at that IP address to ask for the desired webpage.  If you change web servers or IP addresses, it's your job to keep your DNS record updated.  When this is done, it takes about 2 to 24 hours for all the DNS servers on the internet to update.  This is called "propagation delay."

SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,822

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 336, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 86% of all students."

Badge(s) Earned Today:

Installing Programs

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 6

Total Hours Coding: 225

Saturday, October 25, 2014

Day 46: Command Line Interface

Today I continued working on the CLI.  We discussed environment variables, which store configuration information on our computers.  Environment variables store a value associated with a name.  Our environment variables will be written in all upper case, and the values they hold will be strings.  So, for:

HOME=/home/treehouse

HOME is the environment variable, and /home/treehouse is the value.

And for:

PS1=/u /w $

The PS1 environment variable defines value the CLI prompt uses.  When shown on the screen, the /u is replaced by treehouse (our username) and the /w is replaced by the "~" character (in other words, our current working directory, because the ~ stands in for our current working directory).  These are then followed by the $ sign, so that the prompt looks like:

treehouse ~ $

The echo command prints the argument to the screen, it literally just echoes back the arguments we give it.  However, if we use an environment variable with a dollar sign before it, like so:

echo $HOME

We will get an output of /home/treehouse

So, 

cd $HOME is the same as cd /home/treehouse

Both will take us home.  Entering the bash command will actually open a new instance of bash (the old instance will still be running, but inside of it, the new instance will be running).  Bash is a POSIX shell. The name stands for Bourne-again shell, referring to its objective as a free replacement for the Bourne shell.

Note: On the Treehouse testing terminal, the "~" sign stands for /home/treehouse.

If I enter this on the command command line:

MESSAGE="hello world"

And then enter echo $MESSAGE on the next command line, the output will be:

hello world

If we create a new bash, then enter the above commands, the output on the new bash will NOT be "hello world," and this is because the environment variable, by default, does not pass down to a new session of bash.  To prevent this, we can do this:

export MESSAGE="hello world"

Export will communicate the value down to any new bash instances created.

If I leave out the $, the output will be MESSAGE, as echo will simply echo the text, instead of the value for the environment variable.  Environment variables are useful for controlling programs.  Programs we write have access to the environment variables of their own processes, which means any environment variable exported will be available to that program.

$PATH will show the list of directories to search for when we run an executable (as in, where the bash will look for the program, the path it will take).  the "which" command will print the location of a program.  So, since echo is a program, entering:

which echo

In the command line will result in an output (at least, in my test environment) of:

/bin/echo 

Also, if I enter:

/bin/echo Hello

OR

echo Hello

"Hello" will be the output for both.  The "find" command allows us to locate a file based on its name using patterns, while the "grep" command allows us to look for a specific pattern within a file.  A "." can be used to represent the current directory.  So, we can look for a file like this:

find . -name "how_to_go_home.txt"

The video said the quotation marks are optional, but recommended.  The "." means the search will be conducted in the current directory and any directories under it.  If instead you search like this:

find / -name "sudousers"

Then the entire computer will be searched, and this could take a long time.  You could also run:

find documents bin -name "how_to_go_home.txt"

And this would look for the document in the documents folder and in the bin folder.  The grep command stands for Global Regular Expression Print, which means we want to search globally through a file for a regular expression.  Grep will look through a file for a pattern, then print out the line that the pattern appears on.  The command looks like so:

grep "is" hello.txt

And would return something like:

This is the text in the file I created

^^ The output would highlight the places where a match was made in the file for the item in the quotation marks.  The quotation marks are actually not necessary, and the different CLI's may or may not color the results.  The command grep -n will put line numbers in front of each result, and also, will separate each instance into its own line.  The grep-i command will perform a case insensitive search.  The grep-v command will find the lines that do not contain the search query.  So, for example:

grep-v "e" mydocument.txt 

Will find every line that does NOT contain an e.  Entering the "man grep" command will give you grep options (stands for manual grep).  If we ever enter grep followed by just a word, the output is blank, and will allow you to keep entering text, which grep will then scan for results.  In this case, ctrl + d will exit the grep process.

Input redirection is done with the symbol <, while output redirection is done with the > symbol.  A single > will rewrite the destination with the results.  Double >> will append the results to the destination.  The /dev/null is where you can send any outputs you want deleted.  We learned about pipes (|) today.  A pipe will pipe the output of command A to the input of command B.  It can be chained on and on, so B will go into C and so on.

Opening Ruby from the CLI

On a side note, I opened Ruby today for the first time from the Command Line Interface on my Mac!  I typed in irb (this stands for interactive Ruby), and this opened the irb program.  Then I typed in puts "hello world" and received output!  I used spotlight (command + space bar) and searched for terminal to access the CLI.  I already had the CLI in my dock, but today I learned how to use spotlight (I just bought my mac like a week ago, so I'm becoming familiar with the Mac OS).  I exited the program by typing exit into the irb.

SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,717

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 232, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 86% of all students."

Badge(s) Earned Today:

Environment and Redirection

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 4.5

Total Hours Coding: 219

Tuesday, October 21, 2014

Day 45: Command Line Interface

Today I continued working with the CLI.  I went over the su (switch user) command again, the whoami command, and the sudo adduser command.  I then went over permissions again (read, write, execute(rwx)) for the different entities (user, group, other(ugo)).  This structure means there are 9 permissions for each file, (rwx) for each of the three levels of ownership (ugo).  The ls -l command shows the various permissions for the entities on a file.  For example, in drwxrwxr-x, the first letter stands for drive, the first rwx means the owning user can read, write, and execute, the second rwx means the owning group can read, write, execute, and the last t-x means the "other" entity can read and execute, but NOT write.

The "q" key will have me exit a file (or ctrl X in some cases).  The "less" command, followed by the file name, will open a file.  The nano command will allow me to create a file.  I can then save it during the prompts that come up by exiting the file.  I can change the permissions for the various entities with the chmod (change mode) command, followed by what I want to change and the file that needs to be changed, like so:

chmod o-x hello.txt would remove execute permissions from the other entitity
chmod -x hello.txt would remove the execute permission from all three entities
chmod +x hello.txt would add the execute permission from all three entities

Below is some of my work today:



We went over octal notation today.  Decimal notation looks like this:

0    1    2    3    4    5    6    7    8    9
10  11  12  13  14   15  16  17   18  19

So, under decimal notation, the 10 means one 10 and 0 ones.  Meanwhile, octal notation looks like this:

0    1    2    3   4    5    6    7
10  11  12  13  14  15  16  17

So, under octal notation, the 10 means one 8 and 0 ones.  So, for example, in octal notation, 22 is two 8's and 2 ones.

So, when using chmod, we can say this:

chmod 777 hello.txt

Which would give ugo rwx capability.  This is because each permission is a assigned a number, read is a 4, write is a 2, and execute is a 1.  So if I want to give read, write, execute permission, that is a 7.  The first number corresponds to the user entity, the second number to the group entity, and the third number to the other entity.

chmod 640 would allow the user rwx, the group rw-, and the other ---.





























The code above uses the chown (change ownership) command.  This command must be preceded by the sudo command (this allows you to act as a super user) in order for it to work.  So, you would enter:

sudo chown mike newdoc.txt

This would change the user from treehouse to mike.  If we wanted to change the user AND the group from treehouse to mike, we would do this:

sudo chown mike:mike newdoc.txt

The commands "less," "more," and "nano," followed by a file name, can be used to view a file or modify a file.  In reference to a text file, more prints the file contents to the bottom of the CLI, less jumps into the file contents (I can jump back out with "q"), and nano also jumps into the file contents, but allows me to modify the contents and save before exiting.

The command !! will show the previous command that we ran.  This is useful when you entered a command that needed sudo, but forgot to type sudo, that way you don't have to type everything in again.  So, on the new line, you would enter "sudo !!" and that would work.

The "top" command opens a task manager on the CLI.  Hitting the question mark will bring up the help menu.  Hitting q takes you out of the program.  The "clear" command will clear the screen.  The ps command will show you the programs running in the shell, which is usually bash (the shell itself) and ps, which you just opened with the ps command.  The ps aux command will show a snapshot (non-updating) of the tasks running.  The PID column shows the process id.  This command will search the list of processes for the process with the search term in it:

ps aux | grep "search term"

When in a document (with nano, for example), we can hit "ctrl z" and the program we are in will be paused, to allow us to enter commands in the CLI, without having to save or quit the program and exit it.  The "fg" command (foreground) will take whatever we most recently paused and bring it back to the foreground.  The "jobs" command will print the list of jobs in this session.  You can run multiple jobs and bring them to the foreground with the fg command followed by the job number, such as:

fg 1

That would bring job 1 to the foreground.  This command will open up the task manager in the background, in case you want to open it up, but look at it later:

top &

The & opens a program in the background.  A signal is a message sent to a process by the operating system.  The "term:" signal, short for terminate, requests that the process terminates after any cleanup.  The "ctrl c" command will send a term: signal to a process that you are running.  The "kill" command followed by the PID number for the process will tell a process to terminate itself.  The "kill -9" command will terminate a process completely (as opposed to telling a process to terminate itself), but this can leave the computer/files in an unusual state, so we want to use this only if other methods to quit a process are not working.  With the "kill -STOP" command, followed by the PID, we are sending a signal to pause/stop the program, the same as "ctrl z," except we don't have to be in the program to do it.  So, the kill command isn't just used to completely terminate a program.

kill -kill, kill -sigkill, and kill -9 all turn a process off immediately.

SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,666

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 181, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 85% of all students."

Badge(s) Earned Today:

Console Users and Permissions
Console Processes

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 4.5

Total Hours Coding: 214.5

Friday, October 17, 2014

Day 44: Command Line Interface

Today I continued with the Command Line Interface course on Treehouse.  The course is extensive, it is composed of five badges.  In regards to Treehouse, in case you are unfamiliar with it, Treehouse teaches via the use of videos, which I follow along with.  After each video, there is a quiz which i must pass in order to move on to the next video.  After you complete several videos, you earn a badge, which is like completing a class.  It takes several badges/courses to complete an area of study, such as the Command Line Interface, and then, above the areas of study, there are things called "Tracks," which are groups of areas of study, organized into a coherent whole, such as "Front End Web Development," or "Android Development," for example.  You can either complete the tracks as they are, or, alternatively, you are free to pick and choose subjects from the Treehouse Library as you see fit, in order to custom-make your own plan of study.

The system is very organized, and I'm finding that in conjunction with the path to a Web Dev job laid out by the Odin Project, my learning pace has started to accelerate considerably.  Today, I woke up early, as usual, and prepared my office area for my coding studies.  However, one thing I did differently today is that I dressed up in business casual (I have a large business casual wardrobe in my closet from my days as a stock broker), even though, my office being in my home, I clearly don't have to do so.  I'm trying this out as a way to increase my focus on coding.  I'd like to increase the amount of hours I am putting in daily, and I think this may help.  The path laid out by The Odin Project has greatly increased my focus, it's nice to see a clear line from Point A, studying web development, to Point B, having enough skills to secure a position as a Junior Dev.

 On the CLI, I worked with the mv and cp commands today.

cp -r documents docs

The command above copies the entire documents directory and calls the new copy docs.  The rm command will remove/delete a file.


That's a screenshot of what I've been learning this morning so far, CLI basics.

The rm command, when used to delete a directory, such as "documents," the directory must be preceded by a "-r" (recursive).  With the mkdir command, we are making a directory (like documents).  However, using mkdir by itself, we are only able to make one level of a directory, so we could not add notes and console like so: documents/notes/console.  We would instead enter:

mkdir documents/notes

and then

mkdir documents/notes/console

Another way to do the same is to use the -p command, like so:

mkdir -p documents/notes/console/part1

^^ That works.

cd .. will take us one level up.  cd ../.. will take us two levels up.  cd ../../.. will take us three levels up and so on.  The whoami command will have the CLI display the active user.  I learned how to set up a new user with the sudo adduser command, and how, by default, the CLI creates a group with the same name as the user when a user is created.  I learned that there are different levels of permissions for different user levels.  The different permissions are read, write, and execute (rwx) and the different user levels are user, group, and other (ugo).

SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,557

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 72, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 85% of all students."

Badge(s) Earned Today:

Moving Around in the Console

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 4

Total Hours Coding: 210

Thursday, October 16, 2014

Day 43: Command Line Interface and a New Setup!

Today's a fantastic day!  Today's focus is on the Command Line Interface.  The Odin Project had several essays regarding the CLI, and Treehouse has a course on the CLI, so I read the essays, then headed over to Treehouse to take the course!

I started moving around using the CLI with commands such as cd followed by the folder path and cd followed by two dots.  I also used the "~" symbol, which is called a tilde.  I learned that the tilde symbol is equivalent to typing in /Users/adancamacho on the mac CLI.  I learned that hitting the up or down keys allows me to browse commands I previously entered into the CLI.

I changed my computer workspace setup around because it was a bit too cramped.  This works better:



Much more space!  The monitor on the left is hooked up to the macbook pro, while the monitor on the right is hooked up to the PC and the printer.  The empty desk and chair in the back include the part of my desk I allocate to my brother (he's running a real-estate wholesaling business), since I invited him to get his work done at my place after he let me know he was having trouble being strict with himself in regards to allocating certain hours towards his business.  He was going to use one of the extra bedrooms in his house as an office, but I told him not to do that, so he wouldn't lose out on the rental income, and invited him to operate from my home office.  It's empty because he clears his area out at the end of every day, but he has definitely been using it, and his focus and productivity have both increased quite a bit!  :)

SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,506

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 21, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 84% of all students."

Badge(s) Earned Today:

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 4

Total Hours Coding: 206

Tuesday, October 14, 2014

Day 42: A Change in Strategy

Over the past three weeks, I took the time to rethink how I am approaching learning web development.  I stopped taking the Adobe Illustrator course on Treehouse for now because I found a website called The Odin Project.  The Odin Project is an open source website which teaches you how to become a web developer.  I will still be using Treehouse, because the instruction there is fantastic, but I will be using it as an aid while going through The Odin Project's framework, which, while having less videos available overall, mirrors the EXACT learning path I set for myself in regards to becoming a web dev.  

This is the path I had come up with and was using Treehouse to accomplish, and this is also the path which The Odin Project chose to go with in teaching web development:

1.  Introduction to Web Development.
2.  Web Development 101
3.  Ruby Programming
4.  Ruby on Rails
5.  HTML5 and CSS3
6.  Javascript and jQuery
7.  Getting Hired as a Web Developer

Over the course of the last couple of months, I came up with a path almost identical to this.  The exception was that I had still not made a choice between Java and Javascript, as far as which was "more" important, but since I was going to learn it after Ruby and ROR, I figured I would get to that choice in due time.  I was using Treehouse to complete the rough outline/path I had come up with.  However, I was going through the Treehouse Tracks to do so, and the Tracks, which are a collection of courses, as opposed to individually selected courses, while they do delve deeply into many subjects, are not EXACTLY the path that I wish to take to web development.  This is in contrast to The Odin Project, which is EXACTLY the path I had come up with.

Treehouse relies heavily on videos, which is great, the videos are very well made, and I have learned HTML and CSS thanks to Treehouse.  The Odin Project, on the other hand, uses a mixture of both videos and essays on web development.  The videos are pulled from sources all over the web and vary in quality, but the essays are able to go much more in depth than Treehouse can (a good essay is much easier to produce than a good video).  Treehouse does not do essays.  The Odin Project is an Open Source project, anyone can contribute to it, and by the time you finish the path above, you are supposed to have enough projects under your belt to acquire a position as a web dev.

Also, the Odin Project goes deeply into the job search area, which I have not seen Treehouse delve as much into.  That makes a big difference to me, because I want to make sure I have all the tools necessary to secure a position upon my completion of the material presented.  Granted, I will still be a junior dev, not an expert by any means, but I am putting in the time, and I want to make sure that my efforts bear fruit.  The Odin Project is more tuned towards this end, at this point.  So. I will be using both Treehouse and The Odin Project, as both have their strengths, but Treehouse will be used as an aid to the Odin Project Curriculum.  

After weighing the pros and cons, I decided to take the plunge and purchased a Macbook Pro (13" screen).  It has two years left on the warranty and has 8 mb of ram and a 2.9 GHz Intel Core i7 processor.  Several sources emphasized how Ruby is much easier to develop on a Unix system.  Also, at a web development meetup I attended, the devs told me that pretty much all startups use macs, so I may as well become familiar with the Mac environment sooner, rather than later.  Previously, I was running a PC with two monitors, so I switche one of the monitors for use with the Macbook, and left the other monitor for continued use on the Windows machine.  Here's a screenshot of my current setup:



I'm not the best photographer.

On the left is the Macbook Pro, and the monitor above it is connected to it.  The Windows machine and its monitor are on the right.  It's a bit cramped, but this works for now, and I do have more desk space I can use if I need to, but for now I'm letting my brother and a friend use the extra desk space in a large room in my home I use for studying (I organize a study/entrepreneurship group that meets at 8 a.m. Monday through Friday, and we usually study or work on businesses about 4 hours a day, at least).

I'm really enjoying this journey...I was messing with the web developer tools earlier and changing my friend's facebook pages on my computer, tricking them into thinking I somehow was able to manipulate their actual Facebook page, hahaha!  My study friend says I've now reached the "mischief" phase of web development, haha!  I also messed with the javascript in the web dev console, making popups appear on my brother's laptop screen, the popups said, "Who wears short shorts?"  

Hahahaha!  I love learning.  :)

SUMMARY OF CODING SKILLS

Total Treehouse Points: 3,492

Treehouse Points by Subject Matter: HTML 663, CSS 1,599, Design 1,193, Development Tools 7, and Miscellaneous
Treehouse Ranking (%): "You have more total points than 84% of all students."

Badge(s) Earned Today:

Courses Completed:

How to Make a Website
HTML
CSS Foundations
CSS Layout Techniques
Aesthetic Foundations
Design Foundations
Photoshop Foundations

Books Read or in Progress:"Head First HTML and CSS," by E. Robson & E. Freeman (In progress, I've read the 37 pg. preface and the first 255 pgs. of actual content, which is the HTML section of the book)

Hours Spent Coding Today: 10

Total Hours Coding: 202