160418 – 160424 — Total classroom hours: 15
This last week was as close as I’ve come to just smashing my forehead against the keyboard and calling the week good. That sounds a little dramatic, and it is, but the bright side is that I’m seven weeks into the program and its the first time I’ve been this frustrated, so I take that as a good sign. What caused this frustration? RSpec, seeds.rb, and before_action filters. Each were their own beast, and because I was trying to push past (around) the errors to continue making progress on the coursework, it was all a bit of a mess by the time I had my mentor meeting.
The RSpec and seed.rb errors were tied to each other. I could see from the test failure readouts that the tests were failing because of a validation error. I tried to just bypass the error by commenting out the failing test, but the next step in the coursework was to re-seed the database and that action was failing for a similar reason. It appeared this would have to be addressed. I assumed that there was a typo somewhere so I started working backward through the coursework. After digging back 6-7 checkpoints and not finding the error it dawned on me that it would probably be more efficient to work back through my git commits until the I could run a db:seed command and not have an error thrown. That was a much better use of my time, the kicker being that by the time I had found the general timeframe of the error I had to pick up shop and leave for work.
Once I got done with work (and thinking about this error for most of the day) I still had a tough time identifying what I had done incorrectly. At this point -for the sake of finding the error- I had commented out my own work and copy/pasted most of the coursework into my text editor. And still the error persisted. It was at this point that I decided to reach out to my mentor. We went back and forth with several messages. Me trying to accurately describe the error and the steps I had taken to resolve it, him trying his best to diagnose a problem of which he only has my error diagnostics to go on. We went back and forth for a few messages, and we came to realize that in my attempt at error diagnostics and commenting out lines I was commenting myself in circles and had actually ‘solved’ the problem very early on in the process. I guess the lesson is that at some point its probably not a bad idea to stop, keep any obvious errors that may have been found (typos, syntax, etc), un-comment everything and start those tests from scratch. That technique would saved me a lot of time. Now I know.
The other big hiccup for this last week were the before_action filters used to identify the role of particular users signed into the app. All I’m going to say is that these filters are kind of a beast. Most of the ‘unofficial’ documentation that Google concerned itself more with the strong opinions of people who have used it than the actual techniques to use it effectively. I get the sense that people are either all about these particular filters, or absolutely despise them. Being that Im pretty green I don’t have a strong opinion either way, but let’s just say I hope to not see another one anytime soon.
That’s a pretty thorough synopsis of last week. It was definitely an exercise in patience and error diagnostics. I was happy with how farI was able to get on my own in regards to error solving, so I feel like that’s solid progress. Here’s to a new week and fresh start!
160411 – 160417 — Total classroom hours: 16.25
More Rails! Who would have guessed?! At least I’m starting to get comfortable with the process. That’s not to say I’m cranking through it now, but there’s a little less head-scratching. This week started off with associating the Posts and Topics. It was a long checkpoint, and the entire time I was thinking to myself “if the checkpoint is this long I can only imagine how long the assignment is”. The assignment wasn’t really that bad, it was long, but I basically followed the same process as the checkpoint and after a few hours I came out on top with ‘Sponsored Posts’ being associated with Topics. I must say, it felt like quite the accomplishment to make that all happen. It’s all about the small victories.
Next up was Validations, which was pretty logical coding and went relatively quickly. It was nice to knock another checkpoint out and move into something I was particularly interested in, User Models and Sign In capabilities. How do you know that I’m on the right track in the pursuit of a career in programing? I get excited about something called User Models, something I couldn’t have explained to anyone 3 months ago.
I’m excited about User Models because every website that you go to has a sign in, and I’ve always been curious as to what’s on the backend of that process. Its also something that has intrigued me about the digital environment we are all immersed in. We all have countless username/password credentials floating around the internet. I think it would be interesting to have a capability to scrub the entirety of the internet and accumulate all of one individual’s log-ins. I bet we have more personal information out there than we think.
Well, that was a nice sidetrack, but to get back to school, User Models and their respective authentications have gone relatively smoothly and I’m happy with the progress I’ve made so far. I’m still bypassing that last ‘Programming Reinforcement’ for now, hoping to find some time this coming week to chip away at some level 7 and 8 katas and chip away at that last set of challenges.
160404 – 160410 — Total classroom hours: 17.75
Rails. Hours and hours and of rails. I don’t know why, but for some reason I thought that there would be a ‘break’ from the rails portion of the Bloccit project and I would have time to review it. That’s definitely not the case, I mean it’s all Rails until the end of the foundations block. But, what Bloc is doing with its curriculum is pretty helpful in that the rhythm is to work on a new section of Rails, then as the assignment you repeat those steps you had just worked on to implement another feature. I appreciate the teaching strategy, it allows me to do as much as I can from memory, and then when I get stuck I can review the checkpoint material. During the checkpoint material there are definitely moments where it feels like I’m not doing much more than transcribing into my text editor (I use Sublime with a bunch of add-ons that my good friend Corey helped me set up) what is in the Bloc browser. But, I’ve found that even doing something as simple as changing the letter used as the variable forces me to be conscious of what I’m typing and what the code is doing.
One thing I have had a little trouble with this week is the Codewar-based ‘Programming Reinforcement Checkpoint’. I spend 4 hours on only one challenge on Saturday and I still have some work to do on it before it’s even close to being done. After that I still have the other two challenges to complete. I don’t have a problem challenging myself, and I know that even the process of finding the resolution is making me a better programmer, but at some point there is a concern about how much time I am spending on each problem. I mean, 4 hours, that’s nearly one quarter of the entire time I have for the week, spent on one third of one checkpoint. Thats a lot of fractions in one sentence, but basically I feel like it’s taking me too much of my time.
Because the actual coursework is focussing on Rails, these three (Level 6) katas are the first time I’ve worked with Ruby since the last (level 7) katas a few weeks ago. I guess I have a hard time understanding the thought process as to how solving three katas at level 7 qualifies me for anything at level 6? Whatever reasoning Bloc has, its not working for me. The way I see it, there are several ways to approach a problem like this. I could just punt through the level 6 katas, probably having to run every step of the process by my mentor. I could just complain about it, how it’s not fair, too hard of a challenge, etcetera. Or, I could grab the problem by the horns and figure out how to resolve it. I’ll be doing the later. I plan on taking the next few weeks and working on more level 8 & 7 katas, on my own time, outside of class, until I have worked up the knowledge of Ruby to more efficiently solve the level 6 katas that Bloc has assigned.
No educational structure works perfectly for every student. I feel that curriculum is an outline of what needs to happen in order to accomplish a larger goal. Its up to the student to make that curriculum work within their own style of learning. So far I am very happy with what Bloc has had me do, and I will happily work a few extra hours a week on my own to fill some gaps. At the end of the day the goal is to get a job as a programmer, any and all experience I can obtain along the way will only help me achieve that goal.
160328 – 160403 — Total classroom hours: 18.25
I was excited to start this week’s work with rails. I feel like I have a relatively good handle on Ruby (emphasis on ‘relatively’) and Im curious to see what this infamous Rails beast is all about. It started out, as most lessons into new territory do, with a few checkpoints of setup. What I find most interesting in this new endeavor is how even the most simple tasks can throw me for a loop. One aspect of the workspace was to set up an account and push the project to Heroku. It probably took me an hour to get a successful push to Heroku. When it was all said and done, and after abandoning the initial setup to start from scratch, I realized that I had not properly setup the git process (I added only the single README.md file, instead of add all) and that was preventing it from pushing properly to Heroku. So much of this whole programming ecosystem is about precision. Miss a comma, add an accidental spacebar stroke, give the monitor a weird look, and you’ll get an error. But what I love about it is that in almost all errors lies the solution to the error, you just have to know where to look.
Ok, so now everything is pushing to Github and Heroku properly, time to get rolling. Theres a lot of infrastructure to setup: controllers, routing, models, proper paths. To be completely honest, Im not confident that its all sinking in as much as Id like. There were definitely some points where I was typing what I saw in the browser into iTerm and crossing my fingers when it came to testing. About half the time the tests would fail when they were supposed to pass. But, as Ive come to learn, a failed test is a learning experience. When a test fails it forces me to ‘wake up’ from the copy/paste trance that I was in and find/resolve the problem. As Im digging through the last 5 minutes worth of code Im revisiting the exercise -usually multiple times- and its sinking in that much deeper.
I had some trouble with models (which are new to me) and git (which is not) this week, which was probably the biggest hurdle I overcame. The assignment for Checkpoint 28 was to take what I had learned in the lesson and create two new models that would reference each other. Sounds simple enough, after all, I had literally just spent the last hour and a half doing exactly that. I had some trouble, I tried to edit an existing table, I tried to remove a table, I tried to go back in git and start from scratch, but every attempt was failing. I was not surprised to be struggling with the models, but I really thought I had a handle on git and it was not responding the way I thought it would. The problem with the models was merely a matter of knowing how they can be manipulated, particularly the order of events that has to occur for edits to take place. And what I learned about git was that if you leave the changes you have made in the current branch uncommitted they will follow you around no matter how far back you go in the git history. Both resolutions came from my mentor
Don’t let the previous text fool you. As many problems as I have solved this last week I feel like my handle on Rails up to this point is weak at best. Once I complete the Rails checkpoints I plan on going back and reviewing the entire section again.