A Few Weeks Ago

Oops, I wrote this on the train a few weeks ago and never got around to posting it. It was about finishing as much as I’m going to do of Code School for now, and I haven’t done much learning on my own since so I guess I don’t have much to add! Here’s what I wrote:

Well, I didn’t finish every single class on Code School but I did a whole lot of them and I’m taking a break now. Take a look at my “report card.”

Screen Shot 2014-06-29 at 10.12.00 PM

I feel like those circles don’t quite do it justice! The Ruby and JavaScript circles are made up of ~11 slices for individual classes and each class has ~6 levels sometimes with multiple videos and many challenges per video. So yeah – that was a lot of work! Time well spent definitely. As I’ve said before, I’ve been continually impressed by the quality of Code School and would highly recommend it to anyone. I stopped short of doing the iOS classes (those are the empty pie) and will save those for another time, and I also still have a couple of electives left. So sometime in the future I’ll re-activate my subscription and do those classes plus do whatever new classes have been added between now and then of which there will definitely be a few. But for now, onward to other things!

Code School, cont.

Monthly update I guess. I’ve been working my way through all of the classes on Code School which has certainly been keeping me busy learning-wise. I started by just wanting to go through the Ruby and Rails courses, but I liked them so much and there aren’t so so many that it’d be crazy to try to do them all – so I decided to try to do them all. :-) At this point I’m maybe somewhere around 2/3 through. They have 5 tracks: Ruby/Rails, HTML & CSS, JavaScript, iOS, and electives. I’ve done all of the Ruby & Rails classes, all of the HTML & CSS ones, some of the JavaScript ones, and the half of the electives that have to to with Git. It’s been pretty time consuming, but I definitely feel like it’s time very well spent. The quality of the videos is really good, the jingles and themes are fun as I mentioned in my last post, and doing the challenges after the videos provides enough hands-on practice to help make sure you’re actually understanding something. There’s actually a pretty wide range in the difficulty level for me. Some of the courses cover things that felt way over my head, especially some of the advanced Ruby and Rails ones – though it’s still good to get introduced to these advanced topics. And some of them mostly covered things I already know, though it can never hurt to get a familiar topic introduced a different way, and for example even the intro to CSS course taught me a whole set of basic things that I totally didn’t know before. At first I wasn’t wanting to go beyond Rails and associated topics, and, for example, I’d been holding off on spending any time on JavaScript just because it’s a totally different path. But I figured if I can make my way throguh the Code School courses in the JavaScript and iOS tracks then at least I’ll have a good sense of what they entail and then can decide if I want to dive deeper, but at least I’ll know more what other people are talking about. For example with JavaScript, I did the class on Node.js, so at least now I know the basics of what Node can do, and by the end I’ll have gone over a bunch of other topics that fall in that same category of things I hear about all the time but only have a vague sense of what they do such as Angular, Backbone, and Ember. And iOS actually is something I think I’m really interested in, it’s just such a different thing that I’ve been holding off entirely, but I’m looking forward to getting a good introduction. I guess I’m saving that for last. In general though, I’m feeling pretty good with focusing on Ruby and Rails and feel like for now that’s a good focus for me. Maybe it’s also that it’s just what I’m comfortable with now, but coding in Ruby feels really good to me, whereas the little I’ve done with JavaScript has felt a little uncomfortable, needing all the curly braces and semicolons and parantheses to call functions and just generally different syntax. But I’m sure it’s also just a matter of familiarity.

I’ve also really been learning a lot at work, which is good to acknowledge. One of the biggest things has been learning Rspec to write tests for my code. It’s still very new to me and there are whole philosophies about how to test, how much to test, etc. But even in just this one project I’ve been doing I feel like I’m starting to sort of “get it” in terms of how to go about everything and it kind of just makes sense! Also thanks to some great help from some people I work with. Also I’ve definitely gotten much more comfortable working with Git and especially as part of a team. And even little things like I needed to use vim the other day just for something basic but so I figured it out. Things like that that I always knew I’d need to do at some point – but it takes actually *needing* to do it to take the time to figure it out – and then it turns out to be not so hard! That’s definitely a big thing that I keep realizing. So many things before I do them seem super daunting – like how am I really going to figure out Rspec and write tests for all this code or Vim is scary and can I really use it on live code without breaking something or can I really undo something in Git without totally messing something up for everyone? But in the end it just takes facing it and it never ends up as scary as it initally seemed. And it’s all about getting this experience I suppose.

It is a little crazy to take a step back and realize that just a year ago I’d never even written a line of code and now it’s like my entire life. It was around a year ago that I was starting this first Intro to Computer Science course on Coursera that ended up being frustrating to me because it was more just an overview of principles and used the professor’s own simplified version of JavaScript vs. introducing the material using a real language. But I’ve definitely come a very long way since then. :-)

Back!

I’ve been meaning to get back to blogging for awhile. Now I will finally do it – over 3 months since my last entry… So a quick update: a few weeks after Coding Dojo ended, I ended up back at the educational research company I was at before Coding Dojo, but in a split role half in my old job and half in their web development group. It worked out very nicely, and I’m so excited to actually be working as a web developer. I continue to devote a lot of my free time to learning more, and that’s where I want the focus of the blog to mostly be. My “coding road” continues…

Overall, I feel like there’s just so so so much out there. So many different topics, so many great materials available, it’s just a matter of picking what to work on and finding the time to work on it. I have an incredibly long list of things I want to do, and I’m just trying to take them one step at a time without getting too overwhelmed by all of the zillions of things I want to learn. For now my focus has largely been on Rails since that’s what my job mostly is and is what I would want to focus on anyway for now. Which is somewhat notable in and of itself. People had always asked me where specifically I wanted to focus before and during Coding Dojo, and I never had an answer because at that point I was interested in learning some about a bunch of different topics and then seeing what most drew me in. At Coding Dojo we spent so much time early on on PHP that I started building confidence there and getting used to that, and then starting Rails back then was a weird, new thing. But little by little I’ve gotten really into Rails and understanding “The Rails Way” and also the Ruby language itself, and now I kind of don’t want to touch PHP anymore (which generally is a fairly popular sentiment). :-) Though I still am very grateful to have learned PHP first because I think if I went straight to Rails, I wouldn’t understand a lot of what Rails makes happen for you.

So the first big thing I did after Coding Dojo was to go through Michael Hartl’s Ruby on Rails tutorial. Everyone had told me it was a great resource, and it definitely was. It’s pretty long, and it walks you all the way through creating a Twitter-ish web app. It was the right level for me – it may be a bit too much for someone brand new to Rails – but it solidified my knowledge in certain areas and taught me lots of new things, or at least made me familiar with new Rails topics that I didn’t know much about before. The best part for me was that it creates the entire app using test-driven-development writing tests in Rspec and goes over the general philosophy and workflow of testing first, which was new to me but is very important. And a highlight for me was that in the middle of my working my way through the tutorial, I got to see Michael Hartl speak at a Learn2Code conference, so that was pretty neat – to actually see in real life the person who I’d been listening to for hours on end.

Then the next thing I’ve been doing is working my way through some of the Ruby/Rails classes on Code School, and yet again, I’m pretty blown away by the quality. Code School is more game-like than say Udacity, and each course has around 6 levels with a video per level and then challenges after the video to test what you’ve learned. The courses have themes to them like a whole sequence of Rails for Zombies courses that are zombie themed and Ruby Bits which is old-school video game themed. And each course has a little jingle that starts off each video in the course, which is pretty fun. Again the level of the material is pretty right on for me, and some of the content in the later courses looks maybe a little advanced for me but it’s good to gain familiarity with those complex topics, even if I don’t fully understand them the first time through. I’ve been through a few courses up til now and have a whole bunch more I want to do, and I’ve learned a lot of new things or again solidified existing knowledge, and it’s been fun doing it. I’m definitely pretty impressed with Code School.

So that’s all for now. I’ll try to get back in the habit of blogging semi-frequently. Definitely not as much as when I was at Coding Dojo, but hopefully more often than every 3 months… :-)

Ninja!

stickers

I guess I am officially done with Coding Dojo…  :-)

All I was searching for was me…
Ben Howard, Keep Your Head Up

Done!

Hard to believe but I’m done with Coding Dojo.  The past 10 weeks have been a total whirlwind and it’s really flown by.  But I’ve learned so so much, it’s amazing.  Although there are definitely aspects of Coding Dojo that are not ideal or that could be improved, the most important thing is that I’m coming out of it having learned so much.  And overall one of my big takeaways is that their curriculum, as in the topics taught and the order in which they are taught, is really good.  I’m glad to have covered such a wide variety of topics, and looking back now, it all makes so much sense in that each topic builds on the topics that came before.  The experience building a project was also really valuable, and I learned a whole other set of things through that process.  In the end, I felt really good about my project for the amount of time I had, and it was fun to show it at Demo Day.  I’m sad that Coding Dojo is over, and it’ll be so different not to be going there every day and seeing everyone and continuing to learn in that intensive, immersive environment.  But I’m so excited to keep learning and keep building things.  I have a long list of things I want to do, between getting more experience learning Rails, learning other technologies that I didn’t learn at Coding Dojo, continuing to add to my Math Canvas project, and building new projects.  Overall, I’m just so excited to have found something that I love so much.  Who knows exactly what my future holds, but one way or another I know I want to continue down this “coding road.”  And we will see where it leads…  :-)

Day 44 – Project cont.

2nd to last day!  Tomorrow is Demo Day!

I still have a very long list of changes I could make to my project, and I’ll keep making changes until I run out of time (and then of course can still work on it afterwards).  But…  Here it is!:

http://mathcanvas.herokuapp.com/

mathcanvaslogo

Feel free to add some drawings.  :-)

Day 42 – Project cont.

I’m making some progress on my project – slowly but surely…  I’ve gotten stuck on a lot of different things that have each taken a long time to solve, but little by little it’s getting there.  Dealing with jQuery Mobile has been frustrating because it does some things behind the scenes that cause some strange effects.  But then the same could be said of Rails – like yesterday when my CSS style files weren’t loading the first time I loaded a page (but if I refreshed they did) and then also my back button wasn’t working right – I was pretty sure it was jQuery Mobile’s fault but it turned out that Turbolinks in Rails was the culprit.  With some help from my teacher today I did get the stamps/clip art to save to the canvas so that is a big breakthrough.  The days are going by very quickly.  I’ll just get as far as I get by Friday.

I should also mention though – that I have been struck a number of times by the fact that Rails really is pretty cool.  There has definitely been a learning curve over the past few weeks, but now that I have the basics down it all just kind of really makes sense.  It feels good to understand the framework and have everything so modular, and the set-up for Rails just makes sense and although it seems complicated in some ways, it really is all designed to make things easy!  It just takes some time.  Plus things in Rails have fun names like Sprockets.  :-)

Project

Having finished as much of the Coding Dojo coursework as I’m going to do, it’s time for me to work on my final project, and this final week (week 9) is officially “project week.”  My project is going to be a place where elementary math students can draw out solutions to math problems.  The idea highlights the importance of individuality since each student’s thinking to solve a problem may be very different, creativity in students expressing their thinking using drawing, and problem solving in that the drawing forces the students to explain their thinking (visually) with the focus being on understanding how they get to the answer vs. just the answer itself.  This might be especially good for students who aren’t as strong at expressing their ideas verbally or in writing, and this provides the opportunity to combine math with art in a sense.

So I’m building off of the drawing app that I already made during our first project week (week 6) and am working on providing the structure for the rest of it in Rails.  However, it has been a frustrating few days programming-wise!  I keep getting stuck on things that take hours to figure out.  So I’m making progress but very slowly!

I built the basic structure in Rails and integrated the drawing app that I already created, and one major challenge right away involved figuring out how to save the drawing as an image.  I got stuck for hours where I thought I was doing everything correctly but the image data was not saving.  In the end it turned out that the jQuery Mobile library I was using for the touchscreen also forces forms to submit with Ajax and that was causing a problem with saving the images – so once I disabled Ajax for the form submissions everything worked fine.  Many hours later…  :-)

Then I knew I would need to deploy the Rails app to Heroku even for Demo Day vs. just keeping it on my local server since I want it be live so it can work on the touchscreen and to be able to show that.  So I figured I should tackle that sooner rather than later to make sure everything worked correctly, so that turned out to be a major challenge unto itself.  We learned Rails with SQLite for the database which of course is not supported in Heroku so I had to figure out how to migrate to Postgres which had all sorts of challenges with installation and getting everything to work.  But I got it eventually – again many hours later…  :-)

And another major challenge that I haven’t yet figured out is my draggable clip art isn’t being saved to the image files because it’s not actually part of the canvas image.  Eventually I got it to work and save on the computer version but I haven’t gotten it to work on the touchscreen.

So I’ve made progress but it’s been slow.  I’m trying to keep it as simple as possible and aim to at least have something “finished” for Friday’s Demo Day even if it’s basic.  I’ll start with minimal features and can always add more later if I have time.  Luckily I still have a whole week and can devote myself pretty much entirely to the project, so hopefully I’ll end up with something decent for Friday!  I can’t believe I only have 1 week left of Coding Dojo.  It really has flown by!

Day 37 – Rails cont.

I guess the day count is weird – just days of actual class in the 9 weeks.  It’s been so many more days than that.  Anyway, I’m still going with Rails…  It’s definitely starting to come together.  After much struggling…  I’m currently working on building user registration and login.  Again.  I think this is the 3rd time?  First with straight PHP and for “the wall”, then again with CodeIgniter, and now with Rails.  Interesting to do the same task different ways and compare.  Each has its own methods of validation, password encryption, error messages, etc.  At this point the whole login validation thing is old hat.

  1. Check if the username (or email address) field on the login form is blank and if so display an error message saying so.
  2. Otherwise, check if the username exists in the database and if not display an error message saying so.
  3. Otherwise if the username exists in the database check if the password matches and if not display an error message saying so.
  4. Otherwise if the username and password match then all is well and log the user in!

Whee.  Wanna see what that looks like?  It occurs to me that I’ve never posted any actual code on this blog.  Here!:

login

(Look at all the pretty colors!)  :-)