Showing posts with label Ruby. Show all posts
Showing posts with label Ruby. Show all posts

Sunday, September 6, 2015

Programming Practice Vs. Programming Tutorials

I love tutorials.  I especially love tutorials that give me points and badges.  This is one of the reasons why I will do an exercise every day on Code Academy despite the fact that I have long ago given up on it as a great resource for me to learn code.  I have moved on to TreeHouse which I really love.  However, is there a time when tutorials hinder more than help?

Tutorials are wonderful for a number of reasons.  You are always making progress, you are always learning new things, and there are a number of built in confidence boosters.  Even if you are not understanding as I experienced with the Rails course, you are still getting points and moving along!  However, if you are not careful, you will end up knee deep in the tutorials and stunting your progress.

One of the dangers of hanging out in the tutorials is that you can become very reliant on their environments, forums, and constant positive feedback.  When you work on your own, you don't get any badges and some of the problems you face may take hours to solve.  You may fail to solve some of them or there may not be a solution at all!  You have to search high and low to find what you need and it is rare when the answers are in any kind of easily digestible format.

However, making your own programs is the goal!  Yesterday I was buoyed by my creation of a very simple program which simply takes information I input and processes it into a usable format.  As a professor every semester we need to take a series of archaic numbers and turn them into averages.  Now, I have a program that will do it for me!  It made use of my work with loops, but there are still more improvements I want to make.  That said, it was very gratifying to help solve a real world problem with my programming knowledge.  It is also empowering to make something on your own without a friendly face (who you are paying for) guiding you every step of the way.

Am I going to stop using tutorials?  Of course not!  However, I am going to work on getting out of them more often so I can refocus on the task at hand: making programs on my own.  Even though I ran into a host of problems making my little program, it was so empowering to solve them based on my own research!


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

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

My Text game: 3 hours, 118 lines

TreeHouse (3637 Points, 42 Badges)

Code Academy Points: (753 points, 79 badges)

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

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


Resources Finished:

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

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

Created a Program for Teaching Evals 9/6/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
TreeHouse Loops 9/6/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

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

Wednesday, September 2, 2015

Beginner Coding Resources and the Curious Case of the Cliff

One of the most amazing things about learning to code is that there are so many resources out there!  You will want to do them all and you will want to complete them all, I know that's how I feel/felt.  That said, all resources are not created equally, even if they all often bill themselves as being beginner friendly.

I have found that there is a curious learning curve in beginner resources including Pine's Learn to Program, Code Academy, and the TreeHouse Rails track I just took.  The curve, or cliff as I call it, usually happens around 75% of the way through the resource.  Whereas they will spend inordinate amounts of time explaining the most simple of tasks early on, there comes a point where things start racing and zooming and explanation is at a premium.  Terms, language, and sophistication pick up at a rapid pace and you (the beginner) begin to feel like a total jackass which should not be the pedagogical goal.

In the case of Pine, he has you knee deep in problems that his previous 75 pages simply do not prepare you for.  In the case of the Rails track on TreeHouse, Seifer seems to start in the middle of an intermediate course on test based design and literally races through making an example app.  One of the things I realize this field needs is a guide to the guides.  Many of these resources that have "cliffs" are probably not that bad for the intermediate, but for the true beginner, they are absolutely demoralizing.  In fact, spending 15 hours building up to a Ruby tutorial that did not end up working out for me has left me pretty salty about the whole thing.  It's called the Rails track and that's the one thing that is not explained in any kind of detail!  I love the points, the interface, and the teachers, but in the end, it did not help me learn rails.  I learned many thing leading up to this, but at the end of the day, the course fell short.

Where do I go from here?  I think I am going to try to scale back to more Ruby programming fundamentals, finish up Shaw's book, take the Ruby course in TreeHouse, and then get into a new book I have discovered which draws rave reviews from beginner by Daniel Kehoe entitled learn Ruby on Rails.

Frustrated but not defeated!

Monday, August 31, 2015

3 Ways to Improve TreeHouse's Rails "To do App" Course

I have spent many, many hours working through TreeHouse's Rails Track.  I love TreeHouse.  I have raved about TreeHouse on this very blog since I started it around three weeks ago.  I like Seifer and enjoyed his Ruby basics course.  I waded through many hours of TreeHouse to finally be able to work with Rails and I have been looking forward to it for weeks!  I am about halfway through this course and it is really disappointing.  I was initially thinking of writing a fairly negative review of the course and opening up on it.  However, as an educator of well over 10 years myself, I understand that teaching people stuff is hard.  Therefore, I decided to spin this and make it about improving the course instead of attacking it.

Before I start, let me say that I have about 100 hours into coding and am basically new to it.  That said, I have finished the first three chapters of Hartl's work on Rails.  So, if you are a little more advanced, this course might be a better fit for you than it was for me.

(1) Slow it down!  When Seifer introduced us to Ruby, he was slow.  Something has happened between then and now.  He is now super fast.  There is very little explanation in between the commands and some of them are performed too quickly to even keep up if you are simply typing as fast as you can!  At times it feels like this tutorial is more about him making the "To Do" app rather than about teaching the students.  Again, I am an educator.  I know how grueling it can be to crawl through material you are very familiar with.  That said, this is simply too fast and if students can't follow along they are going to quit on you.

(2) Divide it Up!  In this tutorial, there is a lot going on.  It could easily have been divided up into more sections with more context.  In this course, he deals with gems such as capybara and rspec.  I have divined through watching and doing that these are gems meant to help test your app as you go.  We need more explanation about what they are!  Where did they come from?  Why are we doing this?  Leading up to this, we took entire courses on the command line and on Git.  Now new gems are thrown at us and if you are like me you don't have the faintest idea what they do or why we are utilizing them without reading between the lines in the course.

(3) Testing based development needs explanation!  Throughout the process, you will develop an app, but more time will be spent programming tests to make sure your code works.  You will probably make more tests than app before you get done.  The tests are complex and very confusing and there is scarcely an introduction to the whole process.  This is very frustrating for the newcomer.  I read in the forums that testing based development is a good practice and eventually helps to develop more efficient and error free software.

I am sure that's true, but if you are new it's really clouding the issue.  I teach college students history.  There are countless "best practices" that I have to overlook in the name of teaching them on a basic level that they can grasp and do.  Would it be nice if I could teach them the ins and outs of citations, historiography, and deep reading of primary materials starting on day 1?  Yes!  However, if I try to go into all of that in a 200 level course, nobody will get it and nobody will like history.  In the name of trying to familiarize them with best practices and save time, everyone hates it and before long they won't be interested in anything I have to say!  I think testing based development needs a lot more context here.  Seifer never explains what it is and so we are left not sure what we are doing and most likely not doing it very well.  Teach us to crawl before we walk!

At the end of the day, I still love TreeHouse and I think Seifer is a fine instructor.  I just think some decisions were made that were not consistent with the rest of this course.  In Ruby Basics, Seifer is slowly showing you how to make Ruby print text.  5 hours later, he reappears and is absolutely crushing you with fast moving Ruby on Rails lessons that are pretty demoralizing.

Sunday, August 30, 2015

Curves on the Rails

I finally finished a lot of the basic context in my TreeHouse Ruby on Rails track.  I learned about Git, Ruby Basics, the command line, and a host of other basic skills.  These skills were all explained in perfect detail and offered way more hand holding than was needed.

Then I started the Build a to do list application with Jason Seifer.  If you have read my previous review of Seifer's Ruby Basics class you know that in that one he moved slowly and spoke in clear terms.  In that course, it seemed almost to be a little bit too slow.  In this one, Seifer is racing through making this application.  There is an initial explanation of the directories that "rails new" makes and then we are off to the races.  For someone with little to no experience this is kind of silly.  While there is some loose theoretical explanation, mot of it is really brief or totally absent.  There are also a host of version problems with the tutorial which I had to battle with uninstalling the newest Ruby and working backward to what Seifer uses.  

I am wondering how this could happen.  TreeHouse, to this point, has been very clear and if you are paying attention you can learn.  This is why I was happy to plunk down $25 for it this month, it was a service that was excellently done and I have been exceedingly satisfied until this course.  This one harkens back to CodeAcademy in that you are just kind of dumped into the middle of it with very little explanation.  I am writing this blog entry now from a decisive point in the road.  I am 9 videos in and am pondering if it is worth finishing.  I am not getting much out of it outside of some practice copying code into the editor.  

That said, I think sometimes you just have to trust in the process.  I am going to finish the chapter and get it done.  Perhaps I am learning more than it appears!  Signing off.

Code Report!

Resources in Progress:
Total hours into Programming: 100 (2 since last time )
Days into Programming/Hours per day: 2.8 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 (2581 Points, 32 Badges)

Code Academy Points: (743 points, 76 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

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

Saturday, August 22, 2015

TreeHouse Ruby Basics by Jason Seifer Course Review

Ruby Basics is the second course on the TreeHouse Rails Development track.  The Rails Development track takes around 30-40 hours when all is said and done.  Rails is short for Ruby on Rails, which is a scaffolded tool for developing web applications.  From what I can tell, working in Rails resembles coding in Ruby only in passing.  Rails work involves working on the command prompt, managing directory structure, and editing the individual components of your app.  People like Rails (again, from what I can tell) because one can really quickly assemble working apps without starting from scratch.  When you know what you are doing, things fall into place really quickly.

So, it stands to reason that some level of knowledge of Ruby is helpful when working on Rails.  I have read a lot of different opinions on this.  Some folks say you need no serious Ruby knowledge but most people suggest at least a passing knowledge will be helpful as you move forward with Rails Development.

Seifer's course is as basic as it comes.  You will go through basic commands, string, numbers, and do a brief introduction to methods.  The course is a bit different from Designing a website in that it features shorter videos and more interactive coding and quizzes.  When watching TreeHouse's make a website, it is not uncommon to find a 12 minute video.  Most of Seifer's are under 4 minutes.  He teaches you a skill, and then you practice it.  It has a really nice pace and you rarely experience that deep boredom that can come from watching videos that are too lengthy.

That said, keep in mind that this is Ruby Basics and it delivers on that.  It is good review for someone like me who just started studying Ruby a month ago, but if you have some level of knowledge about Ruby or any language really much of this is going to be excruciatingly boring.  I am almost a total newb and I found this pretty boring at times.  However, at the end of the day I think it is a wonderful tool for people just starting out.  Seifer does a nice job if explaining things and I think we can all use a basic refresher from time to time.  I ended up finishing this course really quickly, though I didn't time it, I finished this in probably under 2 hours.


Total hours into Programming: 83 (5 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 (1208 Points, 15 Badges)
TreeHouse Courses Finished:  Make a Website, Ruby Basics 

Code Academy Points: 640
Code Academy Badges: 68
Code Academy Skills Finished: 2 (Make a Website, Ruby)
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 

Thursday, August 13, 2015

Entering the TreeHouse (vs CodeAcademy)

Today was a pretty busy work day, so I did not have a great deal of time to put in to my coding exploits.  That said, I have decided to try out Treehouse.  Treehouse is roughly similar to Code Academy, but features a few key differences:

(1) The worst, it runs $25 or $50 for a premium membership.  I am currently on a 14 day trial but in order to get the trial you do need to provide a credit card.  So, compared to Code Academy, this is a definite downgrade!

(2) Videos!  I always said I did not love videos because they require a measure of absolute attention which I do not often have to give (sometimes I try to sneak in lessons while my son plays with legos!).  However, the videos have so far been really helpful and explained the information much more fully than the brief text blurbs on Code Academy.

(3) Quizzes!  As a professor, I love quizzes.  These prevent you from totally zoning out during the videos and actually listening.  They also focus you more on learning and less on simply getting through the exercises.  If you missed something that was important they can also refocus you.

(4) Tracking!  When you first begin they ask you a few more questions about what you want to do with your coding training.  While, as a newcomer, I found this a bit frustrating because I don't know exactly what I want yet, the system was a a little bit more robust than CodeAcademy's.

(5) Robust Profiles!  At CodeAcademy, you get one point per lesson.  Sometimes the lesson takes 2 seconds, like ones where you read a line and click save.  Others take 20-30 minutes of struggle depending on how much willpower yo avoid cutting and pasting you have.  At any rate, getting one point becomes pretty demoralizing after a while even though this makes no real difference in how much or little you learn about coding.  Tree House has a similar points system but there are different values for different tasks and you can also get points from being a valued contributer to the forums.

At this point, I am less than 2 hours into TreeHouse and have spend well over 30 hours on CodeAcademy, so I am not really qualified to weigh in with any kind of final verdict, but those were my thoughts after just a sampling of TreeHouse.  I should also mention that I am not into the coding part yet, I am just doing the basic HTML which they sort of force you to do unless you just opt out of the tracks altogether.

Total hours into Programming: 59 (.5 yesterday, I have had faculty orientation for 2 days, its been rough)
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: 567
Code Academy Badges: 60
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 

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

Review of Chris Pine: Learn to Program

Today I did not do as much coding as in day past, but I did manage to get through Pine's book and figured I would write a review/wrap up featuring my perspectives.

Chris Pine, Learn to Program, Second Edition, Pragmatic Bookshelf, 2009.
List Price: 24.95
Realistically: $5-$15 on Amazon, mostly free online:
https://pine.fm/LearnToProgram/
*I purchased the hard copy from Amazon for $15.

First off, I am coming from only having completed the CodeAcademy Ruby course.  This means that I have very little background.  If you have more experience than me, this may not be the right review for you.  However, if you are a coder-in(self)training, at the start of your journey you may find this useful.

Points of Style
First off, the book is generally a pretty quick read, it has 14 Chapters of really dense programming knowledge as well as an epilogue of sorts featuring his solutions to the exercises in the book.  This amounts to around 120 pages of material which seems pretty slim until you get into it.  Stylistically, it is written conversationally and there are regular attempts at humor.  If you hate this type of jokey writing, you will not enjoy this book.  I personally liked it because it takes the edge off of a difficult and at times intense subject.  The example programs are also full of attempts at humor.

Best Features
Pine really has a gift for making the complex seem simple.  This is especially try in chapters 1-8 as he effortlessly guides you through some of the basics of Ruby.  Beyond that, I loved his example programs.  He features copious in program notes (using #) and really tells you what is happening here.  Even in some of the later chapters when much of it was flying over my head, the programs never lost me.  This is really fine work and helped me to understand what he was doing.

On a related note, the chapters are not too deep.  Each chapter has one goal and it goes about its business pretty quickly.  You will not find yourself having flashbacks to math class marooned in the middle of a never ending chapter.  I always felt energized when I completed a chapter even if some were only 8-10 pages.  Each chapter also features a number of clearly marked headings which are also listed at the beginning of the book.

Additionally, the book is practical and gets you started on your way with your own IDE.  This means that he helps you set up your computer so you can make your own programs without needing an artificial experience like CodeAcademy or other self-training sites.  It's not complicated or crazy he just helps you get set up in around 1-2 pages.  This was a delight for me after CodeAcademy left me confused.  Now, I have Ruby, a nice text editor, and a directory full of programs!  He also has guides here for Windows, Mac, and UNIX users.

Next, I really enjoyed Pine's answer key (which you will use a lot).  In the back he has a couple of different solutions to his devious exercises spread throughout the book.  I enjoyed that he gave the alternative solutions even if many of them were way over my head.  While I wish the programs would have been notated a little more heavily, these were still really useful.

Finally, the book challenges you.  In the era of "complete this line of code" or "add an equal sign", Pine is having none of it.  He regularly challenges you and the challenges are always write your own program.  Even if I was almost universally a failure at writing my own programs, just trying and thinking the process through make you much better much more quickly than if you stick to CodeAcademy.  Unsurprisingly, the other side of the coin is that these challenges can be brutal and bring you to the cusp of 'to hell with this'.

Room for Improvement
Some of this stuff is borderline impossible for a new person.  Many (most?) of the challenges will frustrate you to the point where you don't want to go any further.  I ended up just looking at some of the answers and continuing to read on.  If you are the type of person who will view yourself as a failure if you don't get all of the answers yourself perfectly than this is going to be a tough slog.  These challenges are hard, particularly if you are brand new,

Next, Chapters 9-14 are rough.  I read them and took notes and I did learn from them, but somewhere around chapter 10 I pondered putting the book away permanently.  Do not do this!  Continue to read, but be aware that you will probably fall off your intellectual cliff at some point in this book.  I say continue on and come back to it later.  That said, this is really, really, demoralizing and probably could have been worked out with a little more "debugging" featuring newbie Rubyists.

In Final Analysis
Would I recommend it to a new coder?
Yes, but I would caution them about the cliff that comes in the chapter 9 range.

Will I sell the book, or keep it?
The book is really nice for reference.  I have already used it and will continue to use it for many of the simple syntax forms I am always forgetting.

Score out of 10 (because we all love this!)
7.5/10


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)

Saturday, August 8, 2015

Chris Pine's Chapter 10: nope



I came to Chris Pine's Learning to Program because it was recommended on Josh Kemp's blog.  I felt since his programming background was similar to mine that this would be a good path to take.  On his most famous blog entry he suggests you take on this book in month 2.  Given that I had done everything in month 1, this seemed a good thing to start.  I read the Amazon reviews and while they were mostly promising, many people seemed to hit a wall around chapter 9-10.  In a moment of hubris, I dismissed these souls.

I should not have dismissed them.  While Pine remains his usual upbeat self after chapter 8, it feels very much like you got sick and missed a week of math class as the book ramps up to stuff that is really difficult.  Early on, Pine dwells on every detail about getting the length of a string.  Later on, he tells you to do activities which seem pretty much impossible for a person of my skill level.

While I do appreciate the challenges and looked at the answers as well as typed them in to my editor, this was just too tough.  So, I am going to finish reading the book, take from it what I can, and continue on my way.

Would I recommend this book to a total newcomer to code?  The first 8 chapters: absolutely!  After that: no way!  I do credit the book with helping me get familiar with setting up my environment and actually making me start coding in it.  However, looking at those chapter 9 and 10 challenges make me feel like a jackass so I will simply read through them instead of soaking my keyboard with salty tears as I fail to get anywhere close to any reasonable solution.

Total hours into Programming: 49 (2 so far today)
My Text game: 1 hour, 51 lines
Chris Pine's Learn to Program ("Finished with Chapter 11" of 14)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 535
Code Academy Badges: 57
Code Academy Skills Finished: 2 (Make a Website, Ruby)


Working on Many Fronts at Once

I am not totally sure this is the best course of action, but I find myself working on many different fronts at once.  Let me explain what I am doing and where I am at on each one and perhaps I can explain why I have done such a thing!

(1) Code Academy  -  I am working though Python mostly to prepare for the Computer Programming Course I am taking in the fall.  I also stubbornly refuse to give up on my daily streak which is now up to 16.  I continue to love Code Academy as an introductory tool, but feel that you will always have to go to different and varied sources to advance.

(2) Chris Pine's Learning to Program (Ruby)-  This is my priority.  I am trying to finish going through the book.  I am currently on chapter 10 (of 14) and am feeling pretty unsure about the content right now, but I will finish it up and revisit these ideas in different forms and resources when I finish the book.  I may also work through the book again when I finish at some point.

(3) My text game -  Because I have read over and over again that in order to make it stick you have to do it, I have begun work on my text game.  I am writing my own methods and creating my arrays and encountering my own problems.  The real problems you encounter when coding are so much more interesting and seem so much more practical than some of the designed exercises.  I have learned from Pine's book that sometimes you need to work out the solution "in English" before thinking in the program language and working on my game has helped me in this regard.  As I finish more of the game, I will post versions of it here, hopefully today or tomorrow!

Total hours into Programming: 47 (2 yesterday)
My Text game: 1 hour, 51 lines
Chris Pine's Learn to Program (Finished with Chapter 9 of 14)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 502
Code Academy Badges: 56
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Friday, August 7, 2015

Project One: An Ode to my Youth

When I was a young teen in 1993ish, I saved up all summer long from cutting grass and purchased a computer.  It was a 386DX (SC stands for Sucks!) with a 2400 baud modem.  From the time I got it until...well.. ever computers have been at the center of whatever I was doing.  Beyond adventure games such as King's Quest, Space Quest, and Quest for Glory I began to call up a series of local Bulletin Board Systems known then as BBSes.  On these things you could interact with other outcasts, surly teens, and general weirdos from your local area.  This would also tie up your phone line indefinitely or ring up a lot of charges if you were calling a BBS which was "long distance" which is another relic of the past.

At any rate, I played daily games on them such as Trade Wars, Legend of the Red Dragon (LORD!), and Barren Realms Elite (BRE).  In these games, one would get a limited number of turns to take each day and slowly level.  In many ways they were precursor to today's online games such as League of Legends and World of Warcraft.  The downside, outside of a few ANSI intro screens, they were mostly all text.  Primarily, this was due to the fact that unless one had a blazing fast 14,400baud (or an UNTHINKABLE 28,800baud) modem the ANSI would take forever to load.  That said, they were still really fun and were really amazing to a 14 year old me!  Playing games with other people remotely, even if only mildly interactive, was a total revelation.  I became so obsessed with the games that I started my own series of terrible, humiliating, and downright bad BBSes with an sorry collection of names I will not reveal here.

Why do I write about these?  Because I am going to make my own version of one of them as coding practice.  I read about this idea on a Ruby forum where you write your own program to help reinforce the techniques you are learning as you go and thought it would be a really great idea.  Therefore, I am trying this as both a way to relive my youth and practice code so that I will hopeful retain more of it.

Talk to you soon, I will post my code here as I get more of it done and welcome any feedback on it!

Total hours into Programming: 47 (0 so far today)
Chris Pine's Learn to Program (Finished with Chapter 8 of 14)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 495
Code Academy Badges: 54
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Battleship and Pine

Continued on today with Code Academy, well over halfway done with their Python course.  I am working now on the Battleship game they have you make.  Now that I have gotten about halfway through the tutorial, there is a lot of looking up of the problems in the forums.  I often find myself pasting the correct code next to mine and comparing to see where I went wrong or what I do not know.  There was a message posted to the local forums which expressed frustration at a similar situation.  If you always have to go to the forums in every lesson are you learning it yourself and will you realistically be able to replicate it?  I say, probably not which is why I love Code Academy as a starting point but not necessarily as an ending point.

Meanwhile, I continued on in Pine's Learn to Program with Ruby.  I have finished up to Chapter 9 and have to say that I continue to enjoy the explanations and hands on activities spread throughout this book.  I have managed to completed a couple of the challenges with no help and the rest of them I have done with some guidance from his answers in the back.  Whereas I used to totally freeze up when being asked to start writing my own code in response to a problem, Learning to Program has gotten me more comfortable writing my own code without the Code Academy scaffold.  I have also learned a great deal more about the details of the syntax because you just find yourself at the prompt running test programs all the time in this volume (which I like).

Total hours into Programming: 47 (3 yesterday)
Chris Pine's Learn to Program (Finished with Chapter 8 of 14)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 495
Code Academy Badges: 54
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Wednesday, August 5, 2015

99% right == 100% wrong: Beginning Programming

So, one of the things that is so difficult about programming is that it is pretty unforgiving.  It is a detail oriented business and each letter, piece of punctuation, symbol, or variable must be noted exactly right.  99% in many cases means that you can more than get by, you have done a wonderful job!  1% wrong on most programs and it will not function.

In Pine's Learn to Program I have decided to actually type all of the answers into the editor for practice for this very reason.  Often times I have found myself sure I more or less understand what's going on, but when I do it myself it will not function.  This is the 99% rule in action.  Maybe you missed a colon, quote, or put one equal sign instead of 2 (my personal favorite!).  These mistakes make the program fail to run and can really test your sanity.  This afternoon I stared at my program and the one listed in Pine's book for 20 minutes sure he must have written the book wrong (even though I knew this could not be possible).  Finally, I found I left out one equal sign.  Hundreds of characters right, one wrong and kaput.

This is enough to drive the beginning programmer crazy because just when you think you've got it...you don't.  If you have had this experience know that at least one other person shares it with you.

Total hours into Programming: 46 (2 so far today)
Chris Pine's Learn to Program (Finished with Chapter 7)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 473
Code Academy Badges: 52
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Pine's Learn to Program Chapters 1-5

Yesterday I got to work on Chris Pine's Learn to Program (foresaking Hartl's tutorial for now) and I really love it so far.  Best features:

(1) Helps get you set up with your own environment.
Pine helps you quickly and easily set up Ruby, Notepad++, and works you through the terminal.  I love this setup because I am actually writing programs and I have an open ended workspace on which I can practice.  This is one of the drawbacks to the infrastructure of Code Academy, you never get your own workspace and you rarely have an opportunity to practice outside of their lessons.  If you play around with the code, the lesson will always return a "right, move on!" or "wrong, try again" message which is annoying if you are trying to play with the code.

(2) Explanations!
If you have worked through any coding at all, these first chapters are going to go by really quickly unless you just decide to skip them.  However, I decided to read them closely and in doing so gained a deeper understanding of what was going on in the language.  Pine does not over explain or speak in too much jargon, but he does explain the underlying concepts which is so useful to the beginner.  Pine also has an upbeat and can do attitude throughout the book and it helps to disarm some of the anxiety of the beginning programmer.

(3) Excercises
This is the best part by far.  Pine integrates exercises into the chapters and has two answer sets at the end explaining both how you might do them based on what you know and how he might do them based on his experience and knowledge.  These exercises are real challenges and they have you writing programs throughout.  It gets you practicing in the editor and practicing running and double checking your programs as you go.  Some of these early exercises seemed simple, but presented me with a real challenge.  I feel like I have made so much more progress just in designing my own simple programs rather than being guided through more complex projects.

That said, I am only on chapter 6, and some of the reviews on Amazon speak to an issue where Pine begins to jump forward while failing to provide some of the explanation I just praised him for.  I will post a full review of the book when I finish it up, hopefully in a day or two.

Total hours into Programming: 46 (5 yesterday)
Chris Pine's Learn to Program (Finished with Chapter 5)
Progress on Hartl's Tutorial Ready to start Chapter 3! 
Code Academy Points: 461
Code Academy Badges: 51
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Sunday, August 2, 2015

Code Academy Python Course Review at 30%

While it is entirely possible that the completion of the Code Academy Ruby course made this one go down quite a bit smoother, I am really liking the Code Academy Python course.  I think it features the correct amount of guidance and practice to this point.  At times (even early) in the Ruby course, I felt like the exercises and lessons were not readily solvable with what I had been given in the lesson.  In Python I have probably completed over 100 lessons and have only had to refer to the forums a handful of times.  This is in direct contrast to my experience with Ruby wherein I was seemingly in the forums nearly during every lesson.  There were also a few times in the Ruby tutorial where I ceded that I would simply paste the code and move on without a true grasp of the content.

I have gotten everything so far in Python.  I think the major reason for this is that this tutorial features more practice (though I still wish there were more exercises!).  I have been trying to do the exercises with as little guidance as possible and so far I have made it through sections on basic syntax, types of variables, built in functions, control flow, modules, and built in Python modules and I have a really nice grasp on what is going on.  In short, I love it so far!

Note:  I am waiting until the quiet evening to restart chapter 2 of Hartl's Rails tutorial...wish me luck!

Total hours into Programming: 37 (2 today)
Progress on Hartl's Tutorial 2.0.0 (got the 2.2.1, but am starting this section this evening)
Code Academy Points: 419
Code Academy Badges: 48
Code Academy Skills Finished: 2 (Make a Website, Ruby)

Saturday, August 1, 2015

Python and Rails

Today I worked with Python in the early section of the Code Academy site.  I am finding that to be a kind of review of what I did in Ruby and it is satisfying to understand much of it without having to grip my skull in agony.  I have a solid grasp on if, or, not, else, elif, else, equal, less than, greater, than and most of the basics (sometimes called Control flow).  I am hard at work forming an app that converts words into Pig Latin which is a real challenge since Pig Latin on its own is more confusing to me than it should be.

I also completed Hartl's Chapter 1.  In the intro there is a introductory paragraph singing the tutorial's praises by some brave soul that completed this whole tutorial in 3 days.  I can't imagine anyone who really needs this training completing this in 3 days.  So far, I have completed an app that only displays one line to the world and in that process I have been introduced to a host of programs/websites that I had no clue existed before, memorized a basic directory structure for Rails apps, gotten basic training and a definition of version control, and deployed the app to Heroku (without success, see below).

Good news, everything went slow, but great.  Bad news, my stupid app does not run on Heroku like I desperately wanted it to.  Just as I was about to paste my app's test web address into an email and send it my wife (to demonstrate that I have indeed learned something!) , it failed to work.  I followed up on a few of the Heroku error messages such as putting a Ruby version in the gemfile, but my meager store of knowledge is not yet strong enough to troubleshoot deploying an app.  So, this was kind of bittersweet.  I completed the chapter and the exercises and feel really good, but I was robbed of my small moment of glory! That said, I remain undeterred and will start the "Toy App" tomorrow in chapter 2.



Total hours into Programming: 33 (3 today)
Progress on Hartl's Tutorial 2.0.0
Code Academy Points: 393
Code Academy Badges: 45
Code Academy Skills Finished: 2 (Make a Website, Ruby)