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

Friday, August 28, 2015

Beating Coding Fatigue

Well, it finally happened.  My initial push into coding got me through around 34 days.  My enthusiasm combined with free time in the summer sustained a pretty impressive push of over a month.  This, however, is where things get difficult.  I have learned most of the easy syntax.  I have said "Hello World" and mastered much of the easy to learn stuff.  Now, I am sitting about halfway through the Rails tutorial on TreeHouse and about 1/3 of the way through Shaw's Ruby the Hard Way book.  Life is going to get a great deal more difficult, but I am determined to push through and keep working hard!

One of the major issues I have always come to in my life is what happens when you lose the initial push of momentum?  This blog entry represents my bold intention to work through a few hours of coding tonight and stay the course even though work made it impossible to code on Wednesday and Thursday.  I am rusty and tired, but tonight I code!

Thanks for reading and if you have any tips for beating fatigue please holler at me!



Code Report!

Resources in Progress:
Total hours into Programming: 98 (0 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 (2558 Points, 32 Badges)

Code Academy Points: (737 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

Thursday, August 27, 2015

TreeHouse Git Basics by Tommy Morgan Course Review

Git is confusing to new programmers.  It is "version control software" and my only introduction to it prior to this tutorial was through the early chapters of Hartl's Rails tutorial.  While "version control" sounds like a scary thing and is really confusing at first, this tutorial is so strong at helping to clear up any confusion about Git which at its core simply helps track changes and empower programs to collaborate by allowing them to work on the same code separately.

This tutorial gives you everything you need and explains things in clear and precise terms.  Morgan not only tells you how to use Git, but explains how Git helps to both track many iterations of a project over time and how it can enable collaboration and sharing through GitHub.  Going into this, I had a rough idea that Git helped to save your work and could allow you to go back in time if you messed stuff up.  However, the finer points of branches, merging, pushing, pulling and the reasoning behind the software were lost on me.

In a relatively short period of time, Morgan gets you competent with Git and explains why you need it.  The illustrations of branches, remote repositories, and the art of pushing and pulling are just perfect.  If you are confused my Git, or even feel like you are almost there but need a little more explanation, you need to do this tutorial.  Additionally, Morgan works you through an introduction to GitHub.  GitHub is going to be crucial if you are going to share your work and become part of the programming community, but it is intimidating if you are brand new.  Morgan guides you through it and even shows you how to set up your own public repositories.

I came out of the course with the ability to explain what Git does and understanding everything from basic commits (saving your program to the repository) to what happens when Git is merging different versions of the program and how the programmer resolves conflicts between versions.  The course also features numerous opportunities to practice the commands and features manageable videos.  If you read my other reviews, you know I really loathe long videos and this section tops out around 6 minutes.  What this means is it is nicely broken down into teaching and practice.  I think it achieves a nearly perfect balance in this.

As a teacher, Morgan proves that you don't have to wear a funny hat or pack your lessons with jokes to be effective.  He is pretty low key,  but pulls this off admirably.  Taking me from loosely aware of Git to confidently understanding its purpose and being able to execute most basic commands is all I could ask from this course and it delivers strongly.

Well done TreeHouse!

Code Report!

Resources in Progress:
Total hours into Programming: 98 (4 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 (2558 Points, 32 Badges)

Code Academy Points: (733 points, 74 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

Wednesday, August 26, 2015

TreeHouse Console Foundations by Jim Hoskins Course Review

I approached this tutorial with minimal Unix experience and having worked through Zed Shaw's command line crash course which can be found in Learning Ruby the Hard Way's appendix.  First off, I think we should acknowledge that Hoskins has a really hard job here.  Whereas many of the other courses have the user doing various things, the console on its own does nothing for us.

While you need working knowledge of the console (particularly for the Rails track I am on), demonstrating its use in a vacuum is at times pretty slow and tedious.  While other courses empower the student by creating with them, the console course does not really have a product.  Therefore, Hoskins is to be really commended for working through a tough tutorial and helping to show us some of the uses of the console.

Hoskins is neither deeply enthusiastically engaging nor wooden and horrible.  The deliver is fairly natural, though at times does feel more delivered than spoken.  One thing I did notice was that his work was a bit more natural.  He will make mistakes and do a few things he did not exactly intend.  I think this is pretty common and helps to humanize the experience a little bit.

In terms of the material, it is a nice companion to Shaw's quick crash course.  I finished Shaw's course in about 2 to 3 hours and I think I spent around 4 hours on this one.  Shaw will get you comfortable with basic commands and this tutorial takes you to the next level including particularly interesting lessons on installing programs, the mysteries of Unix user permissions, and even some awesome background regarding the background in Unix.

The lesson was quite easy to understand, I never found myself perplexed even as someone who touched Unix for the first time 3 weeks ago.  It has a nice Unix prompt set up in Workspaces and works really well.  If you stay patient, watch all the videos, and keep your attention focused, this lesson will not be difficult.  How well that translates to actual meaningful console usage remains to be seen, but I do feel pretty confident about it after working through both this one and Shaw's.

Through no fault of Hoskins, this just is not going to be a super fun lesson.  The videos are kind of long (some around 12+ minutes) and the quizzes in between are short and quite easy.  It felt a lot less interactive than previous lessons and at times I was really tired of watching and taking notes on videos.  As I said, mostly you are learning stuff that will come into play as you get deeper into the Rails track (or whatever other track this one is needed for).

Code Report!

Resources in Progress:
Total hours into Programming: 94 (2 since last time )
Total Weeks Programming/Hours per week: 4/23

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 (2173 Points, 27 Badges)

Code Academy Points: (729 points, 74 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 

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

Tuesday, August 25, 2015

Coding: The Best Path for Career Switchers?

As a history professor with well over 10 years of university and another 7 years of teaching on the tenure track, I know a fair bit about the world of higher ed.  Students arrive with great hopes of finding themselves, their dreams, and their calling all in one four year stay on campus.  For this training and admittedly life altering experience students pay a hefty price often accruing tens of thousands of dollars in student debt.  As a recipient of my own tens of thousands in debt, I feel perfectly fine about the exchange as I am sure most people with fulfilling careers do.  I would much rather be in debt with my current job than debt free doing something I totally loathe, even if I might be a little more wealthy in the long run.

However, if one ever wants to enter a different career path, college is pretty daunting.  Not only does one face the cultural adjustment of returning to school, a host of real life challenges such as family, but the possibility of accruing even more debt with less time to pay it off.  That said, for entry into most alternative career paths, a person will likely need to go or return to college.  For most people, this just is not realistic.

Enter: coding.  Since I first took a notion to start coding in July, I have logged in nearly 100 hours working on it.  My total expenditures on the endeavor total $41.  I have paid for Pine's Learning to Program book (which I could have gotten for free online) and $25 this month for TreeHouse which is a service I really love.  Compared to university, this is pennies.  If I keep my TreeHouse subscription all year and buy one new book a month for $20 (and honestly, most of them are actually free!) I will spend under $600 this year on coding.  This amounts to 2 credits (of a minimum load of 24 annually) at a university and if I mastered 12 books and worked TreeHouse all year I would be in a good spot to at least consider applying for jobs competitive or better than those college graduates would compete for after 4 years in college.

The magic of coding is that it is an measurable (as we say in the academic world) skill.  If one successfully navigates themselves to the point where one can code, the proof will be in the pudding.  That person can create a host or programs for local businesses, non profits, or even just to build a portfolio to prove they can code and share it with the world on GitHub.  Unlike many fields, coding can be assessed - you either can or you cannot.  This makes it much easier to break into than other degreed fields.  With skills you can demonstrate, you are employable.  While I am not discounting a computer science degree, I am sure this is actually much more well rounded and includes a lot of deep theoretical knowledge that practical self study simply can't provide, for a career switcher coding is gold.

The languages are free, the editors can be had for free (or for less than a basic into biology book if you really want a nice one), the training materials range from free to cheap, many of the best books and tutorials are free online!  Additionally, coding has a tremendous community.  In the past month, I have met so many super nice people who are encouraging and helpful - many of whom are already successful programmers!  Unless you sign up for one of the high priced bootcamps you can figure out if coding is for you primarily with an investment of time.

Finally, let me also point out what an amazing time we live in for all of this stuff to be to accessible.  When I was a teenager, coding training, languages, etc were hundreds of dollars, now they are there for the taking!   To me, making computers do new and interesting things is one of the most powerful things we could ever learn to do in 2015.  We do not have to pay dearly for this power, we only need to apply our time and efforts to learning it.  If I told you all the ways that programming a computer could help change the world you would expect it to be very expensive training with a line out the door to learn and an elitist community hellbent on protecting their interests.  Actually, it is a welcoming community which freely exchanges training materials and is seeking to recruit more people to help do this important, interesting, and potentially revolutionary work.  I am by no means a programmer yet, but right now I can't think of a better investment of my evenings.


Resources in Progress:
Total hours into Programming: 92 (2 since last time )
Total Weeks Programming/Hours per week: 4/23

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 (1939 Points, 24 Badges)

Code Academy Points: (704 points, 72 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 

Code Academy Ruby Course 8/5/2015


Code Academy Make a Website Course 7/29/2015

Monday, August 24, 2015

TreeHouse JavaScript Basics by Dave McFarland Course Review

I entered this course a little bit differently than I entered the HTML and Ruby courses and I do think this colored my experience a bit.  When starting those courses, I had completed a number of resources focusing on the material already.  This does not mean I had them mastered, but I had at least seen the syntax before.  With JavaScript this was not the case.  This was the first resource I had ever worked with to learn JavaScript.

At first, this was tough.  While McFarland is the most natural of the three teachers I have encountered on TreeHouse, he is also the fastest.  In fact, for the first time on TreeHouse there were times I totally stopped following along on their integrated Workspaces platform.  This man types like a friggin maniac and even for those who type pretty quickly you are going to need to pause it.  Combine this with some of the strange syntax embedded in JavaScript and there are going to be some moments of confusion.

That said, I think McFarland might be my favorite of the teachers in terms of his manner with the viewers.  He is very natural and conversational and you do feel like you are in a classroom with him.  Once I decided to just focus right in on what he was saying and picking my spots on Workspaces, I was able to get what he was saying pretty easily.  While some of the other teachers can hammer a simple point over and over again, McFarland doesn't do this.  He gets right to it.

I should also point out that the explanations built into the course are really nicely done.  He explains concepts such as if/else if/else statements and functions in the best way I have yet heard (and I have read a lot on these basic programming elements).  McFarland draws in real life examples and features helpful visuals to back up his points which add a lot to the course and really help you understand what the benefits of a function or the if/else tree are.

This course also features a bit of a different element: integrated challenges.  While it still has quizzes, simple code challenges, and videos a few times throughout the course he will give you a more complex challenge separated off in its own video.  In these challenges the directions are embedded in Workspaces and you are to work through the solution on your own before playing how he solved it in the next video.  I thought these were a nice touch and added another level of complexity to the course.  I also felt these were doable.  Some code challenges (Pine I'm looking at you!) are insane for the level of the person working them.  They seem to come straight from the moon.  These challenges are ones that you can actually do at your level.  There is nothing more devastating than reading a code challenge and feeling like "Ok, I'm an idiot" right after you read it.  These can actually be done by someone of the course's target's level.  

This course did, however, seem to be a little bit out of step with Ruby Basics just in terms of its coverage.  It was much more extensive and deeper than the Ruby basics course.  You get pushed through a lot of important and basic concepts, and you are expected to be a semi-functional basic programmer when you get done.  While the Ruby course really was like dipping your toes in a new language, this course throws you in a bit more.  My only other issue was that at times my Workspace did not function all that well.  I am sure this was due to my internet settings on my browser or something simple, but it did happen from time to time.

Overall, this was a nice course which felt a lot more challenging than Ruby Basics.  I spent more time pausing, taking notes, and thinking as opposed to simply waiting for the videos to end.    If McFarland would slow it down just a hare I think we would have the perfect formula here.  That said, I understand (as a teacher of sorts myself) how excruciating it can be to slowly work through simple material.  I am sure he is doing his best, but sometimes old newbs like me need it just a bit slower!


Code Report!

Resources in Progress:
Total hours into Programming: 90 (3 since last time )
Total Weeks Programming/Hours per week: 4/22

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 (1779 Points, 21 Badges)

Code Academy Points: (702points, 72 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

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

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 

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!

Thursday, August 20, 2015

New Coder? Check out Code Newbie!

Since I started this I have tried to be somewhat active on Twitter (follow me @dalrymp6!).  In doing so, I have come across a handful of people, programmers, and groups that are relevant to those of us learning to code.  One of my most recent (and best) finds is a site called CodeNewbie.  Code Newbie is a great group of people with articles and chats running the gamut from job hunting tips to a forum where you can ask anything and get answers from experienced programmers.

When I first visited I was a little hesitant, but in my brief time there I have really enjoyed reading the forums and getting some feedback on both my ideas about learning coding and on an actual simple program I have been working on.  While the forum is not the biggest one I have ever seen, between this, the chats, and the blog I have found it to be a really great resource for someone like me just starting out.

While I'm at it, here are my latest coding stats:

Total hours into Programming: 78 (2 since last time )
Total Weeks Programming/Hours per week: 3/26

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-9
CSC Class Time: 1 Hour

My Text game: 3 hours, 118 lines

TreeHouse (1117 Points, 15 Badges)
TreeHouse Courses Finished:  Make a Website, Ruby Basics 

Code Academy Points: 637
Code Academy Badges: 67
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 

Wednesday, August 19, 2015

TreeHouse Making a Website by Nick Pettit Course Review

About two weeks ago I decided to join up with TreeHouse.  I have finished their first full course as of this morning and in this space I will share my thoughts on Nick Pettit's course.  First off, when you go to TreeHouse you will be prompted to get on a "track".  The tracks are designed to mirror career paths, even though I have my doubts that just a TreeHouse education would be enough to get you a new career.  At any rate, most of the paths start you off doing Pettit's basic web design course.

The course covers basic HTML as well as its uglier meaner friend CSS.  How logical, friendly HTML ever fell in with a shady character like CSS I will never know but this is the world we live in.  The course is primarily videos (I am guessing around 2/3) with Pettit working in the workspace and talking you through it as he goes.  They are at their best when you work along with him.  This is a really cool feature of TreeHouse - you get to work with the videos in your own identical workspace.  This makes following along and learning code that much easier.  Generally speaking, Pettit speaks slowly and clearly, stays on message, and does not go on too long.  Most videos are around 7 minutes long with the longest being around 11 minutes.  I found this just about right.  Much longer than this and I think the videos become somewhat tough to bear.  If you have some basic computer literacy, you will have some moments of boredom as he explains everything (which I actually like).

The workspace is nicely done and does a much better job than Code Academy of attempting to replicate the kind of environment you might use in actual web design.  You can also export your creations outside of their environment which is a nice step toward moving your work beyond the shell world of TreeHouse.  That said, it is a shell world and the work you do in TreeHouse is not the same as working on your own in a standard environment.

Apart from videos, there are also code exercises.  For the most part they are pretty easy, though they do require you to really think.  I think on the whole they are easier than Code Academy but also more doable.  I had to ask one question to the forumites (I forgot a label, doh!) and I got a snappy and kindly worded answer.  However, for the most part everything was solvable, though some did take some thought on my part.

Finally, there are the big money quizzes!  You get big TreeHouse points for doing the quizzes and if you are watching the videos they are basically trivial.  I will say though, I love getting the points and the boost you get from dominating the quizzes!  Seriously, in this particular course the quizzes are super easy.

As a teacher, Pettit is clear and easy to follow if a little wooden at times.  I did, however, get lost later in the CSS section as he spoke on expanding your mobile web design to optimize larger screens.  I was particularly perplexed as he explained the mysterious and sinister sounding nth-child command.  There are also times when he is speaking about design choices and moving quickly through margins, padding, and floats and you really just need to stop and play with it yourself.  I am sure Pettit's quick explanations make sense when you are a pro, but as it gets deeper it feels like he moves faster (perhaps in the interest of keeping the videos length manageable).

Overall though, I loved it.  I couldn't wait to move through the lessons, accrue points, and listen to Pettit's explanations.  It is an excellently guided course and even includes a section on debugging, double checking, and putting your website on the internet.  I would definitely recommend TreeHouse to anyone looking to learn about coding or making a website.  My two week trial expires on August 24, and I will be paying for it after that so I definitely believe in the site.

Total hours into Programming: 76 (2 since last time )
Total Weeks Programming/Hours per week: 3/25

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-9
CSC Class Time: 1 Hour

My Text game: 3 hours, 118 lines

TreeHouse (727 Points, 9 Badges)
TreeHouse Courses Finished:  Make a Website 

Code Academy Points: 634
Code Academy Badges: 66
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