Month: May 2016

What a week! I went full steam ahead into my first project, Bloccitoff (which I have changed to ToBoom for fun). Roughly 15 hours into it I have completed 5 of the 9 checkpoints! Now, there are a few caveats to this, like the first checkpoint basically introducing the project and I’m sure the stories will get more complicated as I go, but so far I am very happy with my progress.

Right out of the gate this project introduces a new gem, Devise. It seems to be an industry standard for sign in credentials, so I’m happy to be working with it, but at the same time it’s throwing a lot of curve balls at me. Initially I would really struggle when obvious tests were failing or actions were not completing as they should, but as Ive gone along I’ve come to realize when that’s happening it probably something to do with Devise, and after a bit of reading (and Googling, and Slacking) I tend to find the problem. All in all its great to have one gem take care of so many things, and I’m sure that the more I use it the more comfortable I will be with it and its intricacies.

Picked up a few nuggets this week, with the first being the Mailcatcher gem. I read so many ‘how to get Devise up and running’ online tutorials that I can remember exactly where I picked it up from, but it’s great. One feature of Devise is its email confirmation function, and where mailcatcher comes in is that you can set the parameters of the Devise to send to a particular SMTP, start the mailcatcher server via the terminal, and then point a browser window to http://localhost:1080 and watch the confirmation emails come pouring in.

I also was told of some great testing strategies this week while Slacking out a few problems. The first came about when I was testing what should have been a simple user verification test, but it just wasn’t working. I could see in the error that it was looking for a certain parameter, but no matter where I included it, the test wasn’t picking it up. I ended up running this command:

bundle exec rake db:test:prepare

which reset the db and, like a magic wand, the test passed on the next attempt. I ran into another issue just last night where I was getting a simple failure, but had no idea what part of the test was failing. This seems to happen often enough that I needed to find a solution, so I started digging, and posted the question on a few Slack channels. A fellow Bloc classmate introduced me to the command:

tail -f log/test.log

this gives a detailed output of what is happening at the db level and ultimately what is causing the failure. What I struggled with for hours before I was able to more accurately troubleshoot and we found the solution in a matter of minutes.

AND! The last nugget I came away with this past week was confirming that at some point getting up and stepping away from the problem can be an excellent strategy. I have a hard time doing this, as I always feel that I’m so close, a mere syntax correction away from the ever elusive ‘Aha moment.’ But earlier in the week, after digging myself into a pretty deep hole, I decided that I needed to step away and get some fresh air. After about an hour I returned with a fresh attitude and -kid you not, the first new Google search I performed showed what I thought could be the answer. Thinking it too good to be true I plugged it into the code, and BAM It worked! I just shook my head in amazement and continued plugging along.

It’s been a good great week. It’s a great feeling to see a problem and at the very least know what pieces need to come together to solve it. I’m not saying I did it all from memory, but I definitely gave it a solid effort, then would fall back on my previous project or the coursework to fill in the gaps. Very excited to continue pushing forward with this project.

Still a little behind on the posts… Week 10 was pretty standard, no excuse for not getting a post up. I thought that I would have finished the foundations section by the end of week 10, but I saw pretty early on into the weekend (when I get 70% of my work done) that I was going to have a checkpoint or two left. I got hung up on something, which at this point I cant remember what it was, and I figured that it would be most efficient to hold off until my mentor meeting on Monday to resolve it. Once I got that dealt with I only had two more serious checkpoints left, both dealing with API’s, so I just accepted I’d have a light week this week. I’m still ahead of pace (that status bar is a blessing and a curse, haha!) and had some non-school code things I wanted to work on.

It turns out that the very last checkpoint in the foundation block is basically something that should be done with my mentor. Luckily my mentor and I spoke about which project would be best to start with during my last meeting, so I started digging into that. He suggested I work on Bloccitoff, which is a self-destructing to-do app. My gut reaction to the thought of doing another to-do app was not great, but I trust his judgement, and I know I can make this one better than others that I have already done.

Although I was able to setup the base structure of the app on my own, it appears that Bloc wants our mentor meetings from now on to consist mostly of pair programming via screenshare. I don’t want to get too deep into this first project before I discuss it with my mentor first. I have been reading some things about pair programming and am intrigued at the concept. I’ve also talked to some people about it, with mixed but passionate, opinions. The 30 minute meetings go by so fast as it is, I’m curious as to how much we will really be able to accomplish pair programming, but I’m game to try.

Along with setting up the base structure of my app I also started incorporating Waffle.io, an open source project management software. It’s probably not necessary to utilize a project management software when working primarily by myself, but the more familiar I am with it when I start the job hunt the better off I will be. Waffle takes a second to get used to, but with minimal setup, understanding how it incorporates with Github, and how formatting git branches can streamline the process, its pretty slick.

Oh! Hey! I’m done with foundations! Thats probably supposed to be a pretty big deal, technically it probably deserves a blog post all of its own. But I’m not big on celebrating, and I still have quite a bit of work ahead of me. I will say this, I have been very happy with the program so far. It hasnt been perfect, but any time I felt something was not quite as great as it could be, I always reached out to Bloc in one way or another and they welcomed the feedback. The coursework seems to have the right amount of depth, I can converse among my peers when Im at meetups other events. They still make you dig for certain things, which I appreciate and definitely feel has made me a better programmer. So, yeah, pretty happy so far. Oh, and I signed up for a hackathon APIs and IPAs for June. I was a little hesitant considering my small knowledge base, but the event organizer I was speaking with seemed pretty confident that I would benefit a lot from it, so I figured why not?

Oh what a few weeks it’s been! My mentor took a vacation, which meant that my program was frozen for a week. I could have just taken the week off, I think I could have easily made the argument that I had ‘earned’ a week of just doing nothing and catching up on Netflix. But, I don’t sit around well, and the finish line for the foundation section is within sight, so instead of chilling for a week I decided to keep up the momentum and crank through some checkpoints.

There seems to be a rhythm starting. With just about every new checkpoint there needs to be either an entirely new table or a column added to an existing table. New models, new controllers, partials, polymorphic relations, it’s been pretty wild. I’m starting to feel confident in performing these repeating actions on my own. I’ll see what the coursework is heading towards and I’m able to work a few steps from memory, then confirm my actions by scrolling down the coursework webpage. Whereas at the beginning of the Rails work it felt like I was typing voodoo magic, now the connections make sense to me, I understand the logic behind the coursework code and the assignments are becoming a bit less stressful. I’ve heard many times that programming is about muscle memory and repetition. Its tough to trust that, especially at the beginning when everything is so new, but it seems to be working out that way.

If you’ve been reading the blog you know that I have a husband and wife power-programming team (Corey and Emily Davis) isin my corner and they are eager to talk about my progress every time we get together. We’ve met up a few times over the past two weeks and it is so incredibly helpful to be able to talk to them about what I’m doing. They’ve given me some great input when I’m stuck on something small, but even when I’m not stuck on anything, to be able to just have a programming conversation is invaluable. It’s a bit of a confidence boost to be at a point where I can simply talk shop with other people. This also leads to discussions about different approaches to problems and challenges. Every school has a slightly different approach to teach programming, and having the input from other industry professionals -including my mentor- is making me a bether programmer than if I just had my blinders on and was cranking though the classwork.

The end of the the foundation block of checkpoints is in sight. I only have 5 checkpoints left, which in theory means that I could be finished by the end of the weekend. I’m definitely going to give it my best effort, but I’d be pleasantly surprised if I actually get it all done. I’m excited to get into the projects, this Reddit clone project had been a great learning experience, and Im sure I’ll be referencing it quite a bit during the projects. I haven’t really dug into any of them to see what I want to do first. I’m trying to keep my eye on the prize and keep my focus on this foundation block. I’d like to get some experience with APIs, as I’m interested in being able to take advantage of user-ready data. My mentor mentioned a path that he felt utilized Bloc’s project curriculum in the best way, so I’m also curious to hear his input on it.All in all things are going very well and I’m eager to see what the projects will be like.