Showing posts with label Learning Ruby the Hard Way. Show all posts
Showing posts with label Learning Ruby the Hard Way. Show all posts

Saturday, September 5, 2015

TreeHouse Ruby Operators, Control Structures, and Collections by Jason Seifer Course Review

I decided to finish the Ruby track on TreeHouse before I continued on with Rails.  While I have worked with Ruby for quite some time, there is still much of it that I need to relearn, refresh, or learn for the first time.  While I had approached much of this material before, I definitely did needed the refresher.  I come to this review as someone who has completed Code Academy's Ruby course, worked through Chris Pine's Learning to Program, and having completed about a third of Zed Shaw's Ruby the Hard Way book.

When I saw Seifer staring me down I had some reservations.  Last time I saw this man he was speed racing through the Rails tutorial and was a major player in the coding crisis that ensued after I "halfpleted" the course.  By halfpleted I mean that I worked through it but conceded that I was essentially lost for the whole second half which i the worst case scenario of online tutorials and a scenario that played itself out many times when I worked through Code Academy.

Fortunately, my fears were unfounded.  The speed-racing alien that replaced kindly Jason Seifer seems to have left his body.  This was the friendly and kindly fellow who taught me Ruby Basics!  He moved slowly and I was easily able to follow along in Workspaces without excessive video pausing.  Generally speaking, these courses reminded me of why I subscribed to TreeHouse in the first place.  It features a nice combination of quizzes, coding, and videos.  The videos are succinct and it is not torturous to watch quite a few of them in one sitting.

These courses do a fine job of covering arrays, hashes, and programming branching in Ruby and I came away with a stronger knowledge of these subjects and was closer to mastery than before.  There is also a really nice exercise during which you have to build a grocery list.  The exercise is difficult where I had to look up some of the tough parts but not so tough where I felt lost and hopeless.

These two courses are pretty quick and accomplish their aims without much difficulty.  I did not feel like I was just doing it for the points or clicking through as I had with Rails.  They are perfectly paced and offer enough complexity to get you thinking and provide a solid foundation as we move forward.  Next up, I take on loops which has been a topic I have a basic understanding of but certainly need more practice on.

Resources in Progress:
Total hours into Programming: 111 (3 since last time )
Days into Programming/Hours per day: 2.5 Hours Per Day (Goal:3.0)

Progress on Gaddis' Starting out with Python: Done With Chapter 1, Appendix A,B


Progress on Shaw's Learning Ruby the Hard Way: Finished Exercise 1-13

My Text game: 3 hours, 118 lines

TreeHouse (3437 Points, 40 Badges)

Code Academy Points: (752 points, 78 badges)

Progress on Hartl's Tutorial Ready to start Chapter 3! 

Resources Finished:
Josh Kemp's No Degree, No Problem 8/14/2015

Chris Pine's Learn to Program 8/9/2015

TreeHouse Make a Website Track 8/17/2015
TreeHouse Ruby Basics 8/20/2015
TreeHouse JavaScript Basics 8/22/2015
TreeHouse Console Foundations 8/24/2015 
TreeHouse Git Basics 8/25/2015
TreeHouse Installing a Ruby Environment 8/26/2015
TreeHouse Making a ToDo Rails App 8/31/15
TreeHouse Ruby Logical Operators 9/4/2015
TreeHouse Ruby Collections 9/5/2015

Code Academy Make a Website Course 7/29/2015


Code Academy Ruby Course 8/5/2015
Code Academy HTML and CSS Course 8/24/2015

Sunday, August 23, 2015

Three Ways to Help Retain Coding Knowledge

A few days ago one of my friends in higher ed posted this article regarding student learning.  The article explores whether taking notes on the computer is more or less effective than taking notes in the old school pen and paper fashion.  This hit home for me as I have been engaged in my own coding journey for around a month now.

(1) Repetition
When I first started to code I was obsessed with the "best" online resources.  I only wanted to utilize the top books and tutorials because I imagined that I would only be doing a few of them.  What I have learned is that you will probably end up doing more than one book and/or tutorial about each language, track, or topic you want to learn about.  I have found repetition to be crucial!

Early on, I started with Code Academy and went through their Ruby, HTML, and most of their Python lessons.  More than anything, this was a warm up.  I retained little from these early days.  Since that time I have worked through additional TreeHouse tutorials on many of these topics and read other books and tutorials about the same topics.  Each time I do a new one, I understand a little bit more and I get a little bit more understanding before everything becomes a mush of confusion.  Don't beat yourself up if you have to go through many resources on the same topic, I am pretty sure this is very normal.

(2) Note Taking
The next thing, that I try to do is take copious notes.  I have these cheap ass 17 cent notebooks that I bought a boatload of for use in my coding journey.  As I do anything I take notes.  This slows me down a bit, but it definitely helps retention.  I do not take notes to reference, the internet is probably better to reference than my handwritten notes.  However, just the act of writing helps to add these terms and syntax to my brain.  If you are learning coding but not taking notes, I suggest you add note taking.  It is kind of annoying, but I think it helps a lot.

I do organize them by resource.  I have one for books, one for online tutorials, and one specifically reserved for Hartl's tutorial since I think that one is really important.  I also think if you are really committed to mastering commands and syntax that you could make flashcards as Zed Shaw says.  Yu don't need to run them all the time, but carry them around with you and flip through them when you have a second.

(3) Practice
Finally, there is the one I am bad at - putting it into practice.  I think this is a crucial way of making the knowledge stick.  Make a few programs using the commands, even if they are not very long or intense. This is more or less what Shaw suggests in Learning Ruby the Hard Way.  He makes you type into the editor and create programs.  However, ultimately, you need to build your own stuff.  Right now, I don't feel like I can build much anything of any real use so I don't do this that much which is probably a mistake.  That said, I really just want to keep learning more right now until I can do functional work.

How do you retain your knowledge?  Do you any other ideas for me?

Code Report!

Resources in Progress:
Total hours into Programming: 87 (4 since last time )
Total Weeks Programming/Hours per week: 4/21

Progress on Gaddis' Starting out with Python: Done With Chapter 1, Appendix A,B


Progress on Shaw's Learning Ruby the Hard Way: Finished Exercise 1-13

My Text game: 3 hours, 118 lines

TreeHouse (1549 Points, 19 Badges)

Code Academy Points: (672 points, 70 badges)

Progress on Hartl's Tutorial Ready to start Chapter 3! 

Resources Finished:
Josh Kemp's No Degree, No Problem 8/14/2015


Chris Pine's Learn to Program 8/9/2015

TreeHouse Make a Website Track 8/17/2015

Code Academy Ruby Course 8/5/2015
Code Academy Make a Website Course 7/29/2015

Friday, August 21, 2015

Month 1: Looking Back

I started this in the strangest way.  I am a gamer and in mid July, I read an article on Kotaku about the "Exceptional Beauty of Doom 3's Source Code".  I did not really read the article deeply but have since read it many times.  The article (re)flipped a switch and  reminded me that I was very interested in code in high school (around 1995).  I even worked a whole semester on a project in BASIC under one of the math teachers at my high school.

I did not pursue coding because I was already in the process of deciding to hate math at that point.  When I got to college I saw that one would have to take many math courses to do anything with computers and so I turned from it pretty quickly.  Everyone was pretty surprised because I was a computer geek from age 13 on and worked pretty consistently with them after I bought my first one in the summer of 1993.  I think tying computers and coding to math makes some sense, but we are also losing a lot of great people to this marriage.  Coding has math in it, but it is also about logic, creativity, and critical thinking.  I also did not code then because the software was so expensive.  I always wanted to learn Pascal, but it was $100s of dollars and I never could muster up that much desire.  Now, it is all more or less free which is so amazing!

At any rate, this article reminded me of coding and so I googled it a few days later and came to a kids coding website with inspiring interviews from Bill Gates, Facebook guy, and a host of others.  I was intrigued!  Shortly thereafter, I discovered CodeAcademy and since then I have been off and running.  Let's take stock of where we are now:

The Good:
(1) I love it!  Learning new commands and solving mysteries you previously did not understand is so refreshing.  I am no master, but I have come so far in a month and have really loved learning every bit I have.  Coding is super fun!  (Yesterday I worked on understanding ARGV in Ruby!)

(2) I am working on it every day, because I like it!  I wondered when I first started how long I would do this for.  I do not dread it and I do not do it because I want to "finish what I started".  I look forward to learning, finding new resources and gaining confidence and skill.  Over the past month I have done something with coding every single day.

(3) I have found many (too many?) resources ranging from Pine and Shaw's books to TreeHouse, Code Academy, and Code Newbie.  I have made friends and acquaintances and have come to really love the community.  It is welcoming and inspiring!

The Bad:
(1) I need to focus fire.  I am doing too many things at once.  Currently I am working on 3 books, TreeHouse, and Code Academy.  This is probably too many.

(2) I have nothing to show for my study yet outside of a basic shell of a Ruby text adventure game.

(3) I am still a bit confused by GitHub and how to share work and I do harbor a fear that I will never actually be able to create things on my own!

Where is this going?  I have no way of telling if coding will be my next career move, but right now I am absolutely in love with it and can't get enough of it!  I am definitely open to pursuing options in coding, but before I commit to that, I want to prove to myself that I can write a piece of code that works and is useful.  As always, thanks for reading!

Wednesday, August 12, 2015

Ruby the Hard Way: Early Going

I did not have a ton of time to work tonight, but I made sure to get in some exercise even though I was not deeply feeling it.  This is about the time when I would normally start to feel like I want to do something else or get bored with this mission, so I am trying extra hard to remain committed!  I went through the fist 5 lessons in Ruby the Hard Way and here are my initial thoughts:

(1) Very hard not to read fast, skip stuff, and not do it the hard way.  Shaw has you on some seriously rote stuff especially early on.  I am trying to respect the process and not cheat.  I am typing in every last comment and doing all of it even if it at times seems inane.

(2) I am counting on this to continue!  One of my problems is that I do not type in the commands or use them enough and then I am presented with a situation and I end up stumped before I even start because I am scrambling trying to remember basic syntax.  I think Shaw's book will help me drill the syntax a bit harder.

(3) It is hard to go back over things you feel like you understand, but to be honest I still make so many basic mistakes that this is clearly needed.

(4) I love the format of the book, it is very straightforward, nicely written, and follows a predictable repetitive pattern.

Early returns are good, but then they almost always are.  I will reserve judgement (praise or critiques) for the later chapter when I see if Shaw is more successful than Code Academy or Pine at teaching me some of the more advanced methods.  It's also true that repetition is required to learn so even if Shaw does unlock the next level for me, I probably always needed to do the previous work to get to this point (if that makes sense?).

Total hours into Programming: 58.5 (1.5 yesterday)
My Text game: 2 hours, 107 lines

Progress on Shaw's Learning Ruby the Hard Way: Finished Exercise 1-5

TreeHouse (105 Points) Code Academy Points: 564
Code Academy Badges: 59
Code Academy Skills Finished: 2 (Make a Website, Ruby)
Progress on Hartl's Tutorial Ready to start Chapter 3! 

Books Finished:
Chris Pine's Learn to Program 8/9/2015 

Tuesday, August 11, 2015

Learning the Powershell

So I cracked into Zed Shaw's Learn Ruby the Hard Way and was immediately met with a bit of a choice.  Do some follow up background on the command prompt or dive right into the book?  I decided to go ahead and do the legwork and get some knowledge of the command prompt in no small part because Shaw seems to have a gift for guilting you into doing things the right way.  Apparently, my hundreds of hours screwing around on the computer in the early 1990s have earned me something - a pretty solid knowledge of the command prompt.

These days, you never find a computer at C:\ unless something has gone horrifically wrong.  Back in the day, this was pretty much all you had (woot, Dos!)...I mean there was a version of Windows (3.0, 3.1!) but we harshly mocked people that used it.  I still remember the shrieks of barely computer literate high school keyboarding instructors "GET OUT OF THE DIRECTORIES" as we installed games and other less savory programs on the school's computers.  Back in the day it was pretty rare to have any idea what this structure was and I think it is even more rare now.

That said, I do remember a lot about the "Directories" as I spent hours editing "autoexec.bat" and "config.sys" files as I tinkered with my computer and attempted to get games to work.  While some of the commands are slightly different, most of it is pretty much the same.  I must say, after having some tough times on Code Academy and at the end of Pine's Learn to Program book it was nice to go through something that made sense to me....even if it had nothing to do with Ruby.  At any rate, I got it done tonight and tomorrow I will begin in earnest on the Ruby Exercises.

So far I enjoy Shaw's no nonsense writing style.  I can understand how a person might find it abrasive if you are taking it the wrong way, but I think he is trying to be a straight shooter and tell you realistically what you need to know in order to succeed.  My son (age 6) once had a swimming instructor that always told him he was doing great even though he was more or less flopping around at times.  Under that type of instruction, nobody gets better.  I am hoping Shaw's insistence on memorization and practice will help me to extend my understanding of Ruby.

Total hours into Programming: 57 (5 yesterday)
My Text game: 2 hours, 107 lines

Progress on Shaw's Learning Ruby the Hard Way: Appendix Finished, Ready for Exercise 1

Progress on Hartl's Tutorial Ready to start Chapter 3! 

Code Academy Points: 564
Code Academy Badges: 59



Code Academy Skills Finished: 2 (Make a Website, Ruby)

Books Finished:
Chris Pine's Learn to Program 8/9/2015 

Monday, August 10, 2015

Learning Ruby the Hard Way by Zed Shaw

Tonight after having finished Pine's Learn to Program, I begin a new course - Learning Ruby the Hard Way by Zed Shaw.  At first glance, Shaw's work seems pretty focused on repetition, typing, learning, and practicing.  I like this.  I am looking forward to working through slowly and repetitively and hoping that more of it sticks.  I have been through the basic of Ruby on both CodeAcademy and in Learn to Program.  I have some of it down, but I feel I need more of the basics hammered down more tightly like iterating through an array and a list.  I need more hands on coding practice so I am feeling good about this.  I have not purchased the physical copy of the book, but may if I find it to be irritating to switch back and forth between the book and the editor on my pc.


Total hours into Programming: 54 (2 yesterday)
My Text game: 2 hours, 107 lines

Progress on Hartl's Tutorial Ready to start Chapter 3! 

Code Academy Points: 564
Code Academy Badges: 59



Code Academy Skills Finished: 2 (Make a Website, Ruby)

Books Finished:
Chris Pine's Learn to Program 8/9/2015 

Sunday, August 9, 2015

On Perseverence

One of the things that's really hard for me to work through at times is being confused.  I don't like being confused and this is, in fact, the only thing that can prevent me from reaching my goal of being a competent coder.  Confusion leads to a loss of confidence which can inspire feelings like "this just isn't my thing", "I am no good at this".  As I read through more and more stories of people coding I have seen over and over again that being baffled is a natural part of learning to code.

In this spirit, I have continued on with Pine's Learning to Program and have nearly finished reading it and taking notes on it.  While I am not capable of doing all of the exercises, the book still has a great deal to teach me and I have learned quite a bit by reading and taking good notes even if it is not all clear to me.  Three weeks ago, I knew nothing, now I have a solid foundation in terminology and can write basic programs.


Total hours into Programming: 52 (5 yesterday)
My Text game: 2 hours, 107 lines
Chris Pine's Learn to Program (Finished with Chapter 12 of 14)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 546
Code Academy Badges: 58
Code Academy Skills Finished: 2 (Make a Website, Ruby)