Author: nworden

Well, apparently Im doing something right, because I’m currently two weeks into an internship! It’s with an independent contractor, working on two client-side Rails apps. I’m working with him 4-5 hours a week, so it’s not too taxing on the already tight school/work/life schedule. It’s a completely different beast to work with an existing code base, especially when the other person built it, and knows it forwards and back. As I’m sure is common with a good portion of web development jobs, a lot of what I’m doing is dependent on my abilities to even find the necessary file that needs to be refactored. I think its actually a legitimate ‘test’ for someone in my position, something that evaluates my problem solving skills right out of the gate. When looking at a locally-run web app, how can I identify the problem and find the necessary file in a codebase with 1000+ files. Oh, and did I mention that the entire app itself is being refactored, admittedly by mentor in a very ad-hoc way, so one quarter of the existing files are non-functioning. Im getting skilled at mining for files.

Once I’ve actually found the file, with him literally over my shoulder, knowing exactly where it is in the first place, now I have to identify the code to be refactored. This has two factors that make it interesting, the first is that I have no idea how this file was written. It. Is. Full. Of. Partials. As it should be, I suppose. The idea of DRY programming is that if theres a way to not repeat yourself you utilize it. Digging into a file and its partials just ‘spices up’ the whole process on my end, which, ultimately, I appreciate. The second factor is that the entire app has been refactored from .erb to .haml. Ultimately, it’s not that much different, it’s doing essentially the same thing, but its just something that I’ve never worked with before now, and it’s a bit daunting to take it all in, especially with the other elements that are being introduced to my workflow.

AND! Those new elements are vim and tmux! I’ve known of vim for a while, but the idea of moving that direction was a bit spooky to me. Then, in the course of one week, I was told by two different people that I should give vim a try. I started digging into it and quickly found that vim has a built in tutorial (next time you’re in the terminal type ‘vimtutor’), so thats pretty awesome. The tutorial took me about 45 minutes to work through, and once I was finished I was pretty confident that I could start editing files with vim without causing too much damage. It’s still not part of my everyday workflow, I’m just quicker with a text editor, like Atom. What I did was set vim as my default editor for my commit messages and terminal aliases. This way I have to use it a little bit every day (I’ve been making a lot of terminal aliases lately) and after a while I’m sure I’ll start using it on everyday file editing.

Tmux is also a super handy tool that seems to be widely used. In a nutshell, tmux subdivides your one terminal window into as many different independent terminal windows as you need. Before tmux I was doing a similar thing, only with tabs. I had my first tab as the standard terminal (file navigation, git commands, etc), the second as the server, and the third as the console. The same setup on every project. Now I can have all that in one window. My workflow was pretty good before the introduction of vim and tmux, but now its getting even better (faster). What I’m learning is that its all about your fingers never leaving the keyboard, and when you get really serious about it, your fingers never leaving the home row of keys.

All of this and I haven’t even touched on school yet. School is school, only now its frontend instead of backend. The first round of HTML/CSS curriculum went super smoothly, and now I’m working through Javascript. It seems to be coming to me pretty ‘easily’. I’m sure that I will get tripped up by something, but I feel like having spent so much time troubleshooting languages and frameworks as complex as Ruby and then Rails, the concepts of Javascript aren’t all that much different. And I’ve become pretty good at searching the interwebs for answers to questions. I’ve probably been spending more time on the internship and networking than I have on school. But I’m ahead of the school’s pace at the moment, so I’m more than ok with my current time distribution.

Speaking of networking, I attended Rocky Mountain Ruby last week and it was a pretty great experience. That was definitely the first time I was in a room with so many other Rubyists ( I think thats a term…). I’m also pretty certain that I was one of probably less than a dozen non-working professionals in attendance. I’m sometimes surprised at how few students I come across at events like that, or even meetups. This industry seems to be all about the people you know, and theres no better way to meet people than to go to events where everyone has something like web development in common. Almost my entire web dev network has come from events and meetups, and I’m talking to those people about one thing or another almost daily. I’m sure this is something that is obtained with less effort when attending a brick and mortar code school, but when attending an online program like Bloc I have to go above and beyond to make it happen.

I feel like I’m on a good trajectory with everything so far. Finished the first half of school with time to spare, landed a solid internship, have an ever-growing network of fellow developers, and starting the second half of school with a bang. I’m looking forward to the next few months.

Project parkfinder has turned into AdventureSearch, and by the looks of available domain names, I have a hunch that it will change again. But, luckily, it’s just a name. More importantly, its complete!(ish) When I say complete in this case that doesn’t mean that I will never have to touch it again, but instead that I have accomplished the cards I have assigned to the project and it is in MVP (Minimal Viable Product) stage. It works almost exactly like I had envisioned it, with the user merely clicking a button and the three closes National Parks are then shown. Its rough, but entirely functional. I have ideas on how to improve upon it (include more recreation areas, add more user functions to the park’s individual pages, etc) but I’m going to let it be and see what I can apply to it from my work in the frontend portion of the program that I will be starting next week. Take a look and find the closest three National Parks to you!

My other project over the last two weeks has been to clean up the code of my four main projects I have on GitHub repository. This is definitely one of those scenarios where it would have just been easier to do it right the first time (which is usually my style), but when I’m debugging things I have a tendency to get it working and jump to the next card. I’ve come to realize that in this debugging process I have pretty clean code, but my indentations are terrible. I’ve gotten comments on my ‘proper’ formatting when getting help from people, so it seems that people are looking for it, or that it stands out like a sore thumb if it’s not done properly. With this in mind, and because of a comment from my mentor, I decided that it would be well worth the time to make sure all my code looked as clean as possible, not just functional. I have the links to all my projects github repositories on my resume, so if someone is curious they will dig, and it will be one of their first impressions of my programming abilities. Im positive that I’m not the most efficient programmer, but I can at least be a formatting-conscious one and show my attention to detail.

That leads me to the other work I’ve been doing, networking. Networking my ass off. Its been quite some time since I’ve talked this much about myself. I’m a pretty modest person, so this exercise is something that I have to refamiliarize myself with. It’s been nice though, Ive had 3 or 4 very informal conversations about my intentions and goals of being an intern, and those have been followed quite conveniently later in the week by slightly more formal conversations. If things go well, the formal conversations will turn into the most formal conversations in the way of interviews. Time will tell, and in that time I will keep making moves to help ensure that I get to those most formal of conversations.

I have the next week ‘off’ as I am between programs at the moment, but I don’t intend to just sit around. I’ve got some companies to research as well as some pre-coursework to complete before the frontend program begins. No rest for the weary!

The end is near. As gloomy as they may sound, in this case it’s a good thing. I have two more weeks of school, then a week ‘off’, then I start the frontend course. Not knowing exactly what to do with my remaining time, I consulted my mentor, I mean, he knows best, right? I expressed to him that doing code challenges for the sake of code challenges wasn’t really something I was all that interested in. I can’t remember if he necessarily agreed with me, be we ultimately came to the conclusion that I should start working on another project.

I had plenty of options, there are like 6 projects I could choose from in the curriculum, I had the group project that I could continue to contribute to, and I also had/have a few ideas floating around for a capstone personal project. He quickly recognized the enthusiasm I have for the personal project, and after helping me flesh out the idea and the stages of development, we decided that was the path I should pursue.

rails new parkfinder -T

And just like that, I’m off. A new project is in the works. It’s going to do a few things for me, mainly keeping me fresh on ruby/rails, especially when I start the frontend program and begin learning another new language. Its also going to be a much different structure from the Bloc.io projects, so it will keep me on my toes and have me asking new questions. There is also a lot of room for growth, so I can keep expanding it as my skills increase. I’ve been thinking about this project for some time and I’m pretty excited to get working on it.

Well, that was a slippery slope! Five weeks without a post, not sure how that happened, but it did. Let’s see, what’s new? I have a new mentor until roughly the end of the backend program, I’m still fine tuning the projects that are up on Heroku, I have a snazzy new resume, and I’m actively looking for an internship/apprenticeship position. I think those are the highlights, I’m sure Im forgetting something…

Firstly, the projects. Im coming to realize that it’s really hard to call something ‘done’. Although I was technically done with the projects weeks ago, and pushed them up to Heroku, they were still needed some polishing before they were ready to present. I spent probably about 3 hours on each of the projects getting the frontend styling decent enough to be presentable. There’s not a lot of uniqueness to them, but their databases work -for the most part- and that’s what counts. I hesitate to say that the databases completely work because I’m still finding bugs, mostly in the push from local host to Heroku. One particular glitch I have yet to tackle is getting the Stripe keys onto Heroku site. I cant imagine its that hard, just haven’t gotten to it yet.

I now have a different mentor. The mentor I’d been working with for this course is having a baby and is taking paternity leave, so I’ve been assigned to another programming expert. Initially I was a bit disappointed with the change, only because I am so close (2 weeks as of this post) to finishing the program. But I do think that paternity and maternity leave is super important so I just rolled with it and I am super pleased with my interim mentor.

One area I have been working a lot on recently is my LinkedIn profile and resume. I went to a meetup a few weeks ago and was told by the hiring staff of a Denver startup that he doesn’t even look at a resume if it doesn’t have some kind of graphic design element to it. It makes sense, but I hadn’t really given it much thought up until hearing that. I also figure that making my resume look interesting can only help, whereas if I were just to leave it as a plain text document it could definitely make me seem less desirable. Luckily I did spend 4 years at an art school, so I have some design experience. It definitely took some time, but I am super proud of how it turned out and am eager to show it to anyone who inquires.

That leads into my last highlight from the last few weeks, I’m looking for work! I was happy with my work on the Bloc projects, and felt really good about my ability to complete assigned stories with the group project. I feel that I have strong enough skills to be useful to a consultancy or startup as long as they are willing to provide some kind of mentorship capabilities. I mean, it can’t hurt, worst case scenario I get turned away because I don’t have enough experience, but that won’t be the case for long, and I’ll just get in touch with them again. At the very least I’ll be able to start honing my interview skills, and that in itself is reason enough to put the effort into contacting companies.

I don’t intend to let this much time lapse between posts again. It’s kind of a weird spot to be in, with all the the coursework technically completed weeks ago, and nothing really pressing that needs to get done. Like I said, I’ve been fine tuning the projects and making sure my resume and online presence is legit, but that’s not super intense work. I also realized that I needed to brush up on my pure Ruby skills, so I’ve been doing that with codewars and exercim.io. But, again, that only takes so much time, and I do get a little burned out doing challenges for the sake of doing challenges. I am looking forward to starting the frontend program and having established checkpoints to accomplish.

I missed another week, but it’s 19 weeks in and the blog is pretty up to date, so I’m not sweating it. Still pushing along at a steady pace, with two projects in the works simultaneously. Talk about time management… Not only am I trying to make noticeable progress between mentor meetings (twice a week now), but I’m also trying to make headway with the non-school project that I’ve been invited into.

Besides not having enough time in the day, things are going pretty well. The Blocipedia project is complete! It was by no means a cakewalk, but I felt pretty good about the code I was producing. The one major hangup I encountered was with a collaborator model. Even as I write this I’m still not sure why I wasn’t able to wrap my head around it on my own. There was just something about a model that existed for the sole purpose of connecting other models that just threw me. I will say that I was definitely over complicating the process, and my mentor did a great job of correcting that with me.

But it’s done! Which means that my two curriculum-required projects have been completed! And, with ~10 weeks left in this part of the program, I’ve still got some time to dig even deeper. Let me say that when I refer to my projects as ‘completed’ I mean that all the data and views function properly. As far as the front-end design goes, its, um… rough. But, my focus is the backend at this point, and I do have time to show the front end some love, when the timing is appropriate. Also, as of last weekend, both projects are up on Heroku, functioning live, with legitimate user-emailing functionality.

I wasn’t necessarily looking forward to the Heroku push or the email changeover, but it actually went pretty smooth. I used Sendgridto handle the emailing. After some trial and error (which is a pretty tedious process when working locally, committing, merging, and pushing master to Heroku) I found that setting up a Sendgrid Add-onwas the most efficient way to go. I used thisSendgrid article to help with the process. I also used this blog post to help fill in the gaps a bit. The one caveat is that the ‘sent from’ email is a random string, so it doesn’t look super professional if trying to show off a functioning site. I’m confident I could change that when I find the time to do so (it’s pretty low on the list at the moment).

So that was school, now the other half of my workload, the collab project. To be honest I find myself thinking about this project most of the time. I don’t know if its because I’m basically done with the school work and the fine tuning minutia of it doesn’t seem as appealing as a whole new project, or if I’m just more excited to work on a team project. I will say that creating code that I know someone is going to go over with a fine tooth comb makes me code better. I’m sure I’ve mentioned this before, but it’s also forcing me to not only write tests, but write solid tests. Some of the spec code is borrowed from the coursework Blocitoff project, but tests are tests, and I don’t see any reason to try and reinvent the wheel.

I’m learning a lot about the industry standards for programmers. I’m almost certain that there is not one ‘holy grail’ of programming standards. It makes sense that there are slight differences in practices based on regions or other factors. I’ve already come across a few things with this collab project in terms of standards that are different than what I’ve learned with Bloc. That’s not to say that one is right and the other wrong, but I appreciate that I’m now aware of both ways and because of that I am a better programmer overall.

Things are really picking up! Not only am I on the cusp of finishing my second Bloc project, I have officially started a collaborative project with my friend (and unofficial mentor) Corey. Its not that I didn’t think school was enough of a challenge, but Corey approached me with an idea and offered to use it as a learning experience for me, which is something I couldn’t turn down. I’m always actively seeking out opportunities to work with other people in any way. Its a point that I keep coming back to, and its not something unique to Bloc, but I think an inherent dilemma with online schooling in that there isn’t a whole lot of collaboration outside of you and your mentor. Don’t get me wrong, working with my mentor has been an awesome experience, but theres also something to be said about collaborating with your peers on a project.

I’ve only been working on this project with Corey for a week and theres so many valuable nuggets that I’ve picked up. On the workflow end, I had never dealt with working on someone else’s Github repo. Theres a bit of pressure when setting up your local repo to communicate properly with another persons Gitub repo, the entire time I felt like I was one wrong keystroke from wiping it all off the map. After I got that all setup correctly Corey set me up with parameters for commit messages. Im a stickler for detail and continuity, so the idea of having a template for commit messages was something I was fully onboard with. It creates uniformity across commits, allowing anyone who looks at the commit history to easily see what was changed or added. Changing the default commit message template is relatively easy, and this article helped me a lot.

Arguably the most valuable aspect of this collaborative project (I keep calling it collaborative, but in actuality almost all projects involve more than one person, so I should probably just be calling this a ‘project’) is that I will have my code reviewed by another experienced programmer. Once again, I have nothing but great things to say about my mentor, but with just about any learning process its not a bad idea to get the views and opinions of more than one professional. I am definitely paying closer attention to the details of my code, making sure its as close to perfect as I can write. And testing, oh man, the testing. One goal of my current Bloc project was to keep my testing current with my code, and I admittedly fell behind pretty quickly. With this project I am being forced to write tests before my pull requests will be merged, so I have no choice but to write TDD code by the books.Less than a week in Im already feeling a bit more pressured now that I have two irons in the fire, but I’m ok with that, its a good pressure, and to me it means I’m heading in the right direction. During my mentor meeting we decided to move me from the 72 week timeline to the 36 week to finish out the Ruby course more quickly. This means that I will finish this half of the schooling almost two months earlier, and in the meantime will have two mentor meetings per week instead of the one. I wasn’t as concerned with moving up the finish date, As I knew I was on track to finish early regardless. But I was finding myself getting hung up a few days after my mentor meeting and then basically grinding my wheels for three to four days until I could speak to him again. My school work schedule didn’t help this scenario, in that most of my work has been getting done between Friday PM and Monday AM, and (rightfully so) my mentor tends to take the weekends off. But now I have two opportunities to speak to him, so hopefully my multi-day grinding sessions have come to an end.

Well, if anyone besides me is actually looking at the numbers, I haven’t had a 15+ hour week in at least a month. The irony is that I’m getting a lot done, regardless of the low hour count. As I type this I am on Checkpoint #8 of the Blocipedia project, and 89% of the way through the Rails curriculum. When the numbers are in my favor, it’s hard to not break out and head up to the mountains when the weather is beautiful, especially since I spent the better part of the spring (and end of winter) in my office programming until my brain was mush. I’m not sure the point of all this, probably me trying to justify the fact that I’ve been slacking a bit. Well, enough of that, what about what I’ve learned this week?

There’s a gem for that! That’s probably my biggest take away from the last week of work. Blocipedia requires user roles, and Bloc suggested using the Pundit gem to take care of the heavy lifting for that. The irony is that in my foundations curriculum we hand coded the user role function, so I had not used Pundit yet, and in the descriptor for the checkpoint Bloc was wording it in such a way that I should remember that time I used Pundit in the Bloccit app. Out of absolute dumb luck I happened to be in the same room as another Bloc student who was on the cusp of graduation from the program (more on that later on). He was a little surprised by my initial confusion regarding Pundit, but after a quick discussion we realized that Bloc had changed the curriculum since he took the Rails course. He still had all the documentation from his foundations curriculum and he happily passed it along to me. Once I read it over I was able to make quick work of Pundit and establishing user roles for my Blocipedia.

Although I didn’t code it out in the correct order, I was determined to establish tests for the user roles. Since I used Pundit instead of hand coding the roles as per my foundations curriculum I wasn’t exactly sure how to setup the Rspec testing, so I headed to Google. To my delight one of the first search results lead to a gem called Pundit-Matchers that makes quick work of the Rspec testing for user roles. Its super clean and intuitive to write, I highly recommend it.

Something else worth mentioning from last week, I have officially co-founded a code meetup! I’ve been attending the Boulder Ruby Meetup since November last year, and although it’s a great meetup, most of the content is over my head. The ratio of what I can grasp has obviously improved since I’ve started Bloc, but I’m still blindly following along during presentations quite a bit. Knowing that I could not be the only person attending that was having this experience, I decided that I would try to put together a meetup of my peers. I made the announcement during a meetup a few months ago and was approached by Sean Collins. Sean proceeded to tell me that he had been thinking about started a similar themed meetup, so we agreed to merge our ideas and team up to put a new meetup together.

We worked with the organizers of Boulder Ruby Meetup and started Monthly Coding Night, the goal of which was to get people of varying experience levels together and code on whatever projects we like. Its pretty informal, after some beer and pizza and mingling we get everyone together, introduce ourselves and what we’ll be working on that evening. There’s a big variety in projects, and some don’t have anything in particular to work on, so they just bounce around the room helping anyone that would like a little guidance. I think this first meetup was a success, as everyone seemed very enthusiastic about having met new people and making some code progress.

It may seem a tad daunting to start your own meetup, but I can almost guarantee that there are other like-minded people in your community that would like to get together, it just takes that one person to get the ball rolling. In my case there were two of us, so that definitely helped, but it could most definitely be done with one person and I bet a second person could be picked up in that first meeting to help organize future meetings. I think it’s worth the effort, you never know who you’ll meet. Case in point, at last week’s meetup I met Justin, who is a fellow Bloc student! I probably would have never known that there was another Bloc student in my area had I not made the initial push to get this meetup going in the first place. Crazy things happen when you put yourself out there, that’s all I’m sayin’…

This week I started my next Bloc project, Blocipedia, which is a type of Wikipedia clone. I feel the need to keep things spicy, so I renamed the project Wikster. It has similar elements to the Bloccitoff app that I made, with user logins, user-assigned elements -wikis in this case-, and with this one there is a pro options that includes a payment option, so that will be interesting to work on.

You might think that once you’ve gone through the steps of setting up the Devise gem every other setup after that will be a breeze, but that couldn’t be further from the truth. I definitely found myself going back through my browsing history, repeating Google searches, and digging through files in my last project to get this current project’s Devise properties setup correctly. One of the core principles of programming is the DRY concept (Don’t Repeat Yourself) and although it is meant to apply to written code, the idea of performing the same Google searches a mere two weeks apart seemed incredibly inefficient.

Including the project that I worked on during the foundations coursework, this is my third app I will have built, and I’m seeing a very obvious pattern forming in regards to the base elements needed to have a functioning app. Im sure at some point I’ll be able to set these core elements up in a few hours, but for the time being I think I’ll be starting some kind of whitepaper-style documentation of what exactly it takes to get a user login-based app up and running. At the moment I’m not sure that my next project, which I intend on being my personal project, will have a need for user login, but I may start a non-functioning app just for the sake of successfully setting up a user model with Devise and documenting the process.That’s the big learnin’ nugget that I took away from last week’s work. I’m still building up the CRUD elements of the wiki model, which I’m trying to do properly, TDD style. Im hoping to make some good headway in the project the rest of this week and into the weekend. I get so much more done when I’m fresh and can sit down for 3 or 4 consecutive hours.

Yep, I fell behind again. Whats a guy to do? I’ve been making some killer progress (regardless of the low hour count for the two weeks). By the end of week 13 I had completed the Bloccitoff project, as well as the extra user stories that my mentor assigned to it because of my quick progress. At the moment it’s not much to look at, but it functions, and once I get some more front end developing under my belt I’m sure I can class it up in no time.

I completed most of my work over the weekend and after my mentor approved the checkpoint was pleasantly surprised to see the my ‘work completed’ progress bar on my Bloc homepage had moved tremendously! Basically, since the parameters of the curriculum are that I complete two projects, after the first project is completed I am two thirds of the way through the course (with the foundation coursework being the first third). For me, being able to get through the first project that efficiently confirms that I actually have a solid understanding of what I’m doing.

With this project taking me under two weeks, I cant imagine the next one taking me any more than a month. There are things I can improve upon, which will slow me down a bit, but I am pretty confident that even with that I will be done in 4 weeks or less. I didn’t test as much as I should have with the Bloccitoff project. I was so eager complete the user stories and move past the big problems that the testing fell by the wayside. I am going to be adamant about testing for this next project. Bloccitoff was proof to myself that I have a pretty solid grasp on the concepts, so now it’s time to start the good habits.

With my timing as it is I now have to get serious about a personal project. I knew going into the course that it would be ideal for me to have a personal project, and now it looks like I’ll have the time to potentially complete one with the guidance of my mentor. Again, I’ve been thinking about this since I started, but have had a hard time coming up with something that is a) unique and b) potentially useful to the general public. After this weekend I’ve got and idea that fits both of those criteria and has a pretty simple user interface, which is also something I felt was important. Its also going to deal with automatically geolocating the user and measuring long/lat distances. Im pretty excited to get working on it, and I miiiiiight start it before Im finished with the next school project.

Last week most all my time was dedicated to the IPAs and APIs Hackathon put on by Avery Brewing and Mondo Robot. This was my first hackathon, and I was initially tentative about joining because I didn’t feel my programming experience was comprehensive enough. Luckily the lead coordinator of the hackathon convinced me to join and I had a great time. I entered as an individual, so I was assigned to a team. The team consisted of me, a UX designer, and a Java programmer. Basically, the Java programmer was the only one who had enough coding experience to get anything done, and since I don’t know a lick of Java, I wasn’t much help in that department. Luckily the UX designer had solid mock-up tools so we were at least able to show what we wanted the front end of the program to look like. Gaining experience working as part of a group was my main goal entering this competition, and I was very happy with how the three of us worked as a team. Our energy was always high and we communicated very well. At the end of the hackathon we were all proud of what we had accomplished. I would highly recommend everyone participating in a hackathon, regardless of where they are in their programming experience.

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.