So last night I chose not to write a post. I attended a study group that walked through the lab I’ll be doing tomorrow on Pundit and watched a lecture. Since I didn’t do any actual writing of code I skipped the blog. However, I know how to solve the Pundit lab quickly now ;-).

I started tonight off helping out my man Mike (we did the Music Library CLI project together) set up his associations for this Sinatra portfolio project (see above). That was fun and I realized I knew how to explain to somebody else associations.

The rest of tonight was all about CanCanCan and Devise Roles. CanCanCan was a pain in the ass, to say the least. The Devise Roles labs had very little coding related to roles and the tests were more about the controllers and views. I have an intuition of sorts and know when to “phone it in” sometimes. Tonight I did that on CanCanCan. I didn’t really understand it and just kept going anyway. I chose not to dive deep into it. Later on tonight in a lecture video Avi stated that he doesn’t use CanCanCan. I guess it’s supposed to be like the SQL before Active Record. I just have a hard time wrapping my head around getting taught a gem that isn’t recommended. Either way, I’m past it now.

I’m leading my first study group in the morning. Wish me luck!

Time spent today: 4:40
Time spent total: 281:27
Lessons completed today: 5
Lessons completed total: 514

I spent a lot of time yesterday and today psyching myself out about this Devise lab. Turns out it was very straightforward. All the extra “research” I was doing was actually taking away from me getting it done. When I reset myself and approached the lab like all the others I got through it quickly.

  1. Follow ReadMe.
  2. Run tests.
  3. Look at the spec for the first test.
  4. Get the first test to pass.
  5. Repeat 2-4 until all tests pass.

That’s what I should have done from the beginning but I had the nagging little voice from my SG last week and this week that I was being hung out to learn the hard way on this one. Now, I’m working on a CanCanCan lab which doesn’t seem to be too difficult but after that is a Devise Roles lab. Maybe that’s the one everybody has been telling me about. Or maybe this stuff really does click in my head. I dunno. Either way, I’m feeling good making progress again today. I wish I hadn’t spent so much time on other stuff though because I’d probably be passed this CanCanCan lab already.

Time spent today: 1:53
Time spent total: 273:42
Lessons completed today: 2
Lessons completed total: 509

Today I started my Devise learning. I was feeling pretty good until I realized the teaching had stopped and I still had 10 failing tests with no way to solve them. I figured out how to pass one of the tests. I even had it passing. However, I decided to rollback my code as I had literally just been copying and pasting stuff in and I’m sure my code was all over the place. I do have two solid resources which will hopefully provide a good amount of info (outside of the Devise ReadME). The first is a Go Rails video suggested by another student and the other is a Launch School walk through that the curriculum points to. I hope between these three resources I don’t have to do too much searching to find any answers I need.

Now that I also know there are a bunch of tests I’ll work my way through the tests rather than have a bunch of random ones passing. This should help me with my workflow. I was thrown off tonight when I realized that I needed to get into learning it myself mode. I’ll be better prepared mentally tomorrow night.

Time spent today: 2:10
Time spent total: 271:49
Lessons completed today: 2
Lessons completed total: 507

I’m progressing through Rails Authentication and am happy that I completed the Omniauth section today. It was my goal and I hit it. Tomorrow I start tackling Devise. Something about OAuth that makes a lot more sense to me now is letting someone else worry about the user and their data (to an extent). I can locally store a password or I can let someone else worry about the security and I can just use that third party to verify a person is who they say they are. It would be cost prohibitive for a small app to create all the security features someone like Google or Facebook has now implemented. I mean, Google with throw Captchas at me if I log in from a different browser or even log me out if I log in from a new device in a different geographic area (I’ve done it). Also, the 2-factor authentication that many people now use. So I just send a person to one of these services and have them confirm their info for me.

Now I’m only at the start of this rabbit hole but this makes sense. How to properly implement this with multiple OAuth providers will be fun to learn about. I’m sure someone smarter than me has already solved this problem though.

I was able to participate in another Stand Up this morning and stated that I felt like I could be working on my Rails projects by this weekend and have my Rails Portfolio Project submitted by the 21st. I was told that sounded like a doable timeline so that made me very happy. I can hopefully have that assessment done before the end of the month and be into JS going into June.

Time spent today: 2:33
Time spent total: 269:39
Lessons completed today: 3
Lessons completed total: 505

It was a strong day and I moved into Authentication. Authentication is going to be a beast I can tell. However, it looks like because it’s such an important topic there are a lot of best practices and good documentation out there. I still haven’t wrapped my head around the Sessions Controller 100% but knowing that it was almost identical in 3 separate labs tells me it’s a relatively static and consistent concept for what I’ll be doing.

Sundays seem to be quiet across there were probably <10 messages across all the channels I’m a part of on the NashDev Slack and only a few people chatting in the Learn (I use Learn and Flatiron interchangeably) Slack. I wrote my code for most of the day using RubyMine. It feels slow compared to Atom but I know that’s because it’s ridiculously powerful. It’s like using Notepad versus Word. I think I’ll be able to appreciate it more when I build out my Rails projects. Things, where there are more freedom and chance to mess up, might show off the power of the IDE better. When I’m literally inside a test suite box the IDE doesn’t have much to offer that text editors don’t have. Please correct me if I’m wrong.

I’m searching for things to write about sometimes (it seems obvious to me), however, I’m not going to stop writing.

I’m ready to start tackling the first Rails project. I’ve seen a few people looking to pair and the instructor stating that people who were well into Authentication could jump in on the first project. I’ll be looking for someone to take on that task with and hopefully be on my Rails portfolio project before next weekend. If I can start it before Saturday I think there’s a strong probability it’ll be done before the 22nd as that’ll give me 2 weekends of full days bookending a week of shorter days.

I’m working on some other projects now outside of Flatiron. Trying to get the bones around a continuous group project that we can work on for freeCodeCamp Nashville. I think it’ll be good. Trying not to get too distracted but it’s a nice thing to mix in. Example, learning how to deploy Ghost to a DigitalOcean droplet, which actually wasn’t hard. Even better, upgrading that install via command line. I really want to deploy Discourse but I can’t think of anything I’m involved with that it would be useful for right now. O well, in time.

Time spent today: 7:55
Time spent total: 267:06
Lessons completed today: 13
Lessons completed total: 502

Not as much time spent on my curriculum as a typical Saturday but that’s alright. It’s because of the freeCodeCamp meetup that I Co-Organize (see the previous post from earlier today). I still feel accomplished. I’m at a point in the Rails section where I have 4 videos then I’m on the last section before the projects. Tomorrow will be telling as to if I’ll hit my goal of starting my Rails projects on the 10th or not. My wife has been asking if I’ll be done with Rails by the end of the month and I hope it to be before that. I guess it depends on how complex an app I decide to build. After I submit my Rails project I’ll spend a day refactoring my Sinatra project. The UX is still weak and navigation is clunky.

I’m feeling good about things in the program. I’m also now looking forward to cracking open one of my 2009 Silver Oak Napa Valley Cabs when I’m officially done with the program/land a job.

Time spent today: 5:00
Time spent total: 259:11
Lessons completed today: 7
Lessons completed total: 489

man in tie presenting

So today Dave Harned and I hosted the monthly freeCodeCamp Nashville Meetup. There were 8 of us there and it was good to see new and “old” faces. I think we’re starting to build more of a core group that will consistently attend the meetup. With that, we’ve started exploring some other options for larger meetup locations. The library is nice but the wifi is awfully slow and that’s a pretty big downside considering what we’re meeting for.

Dave and I presented on RESTful APIs and general REST info. You can view the slides here and to get a feel for what it was like, the image above is what Dave looked like presenting. So after that, we chatted for a bit about many things.

IDE’s were brought up. Specifically, WebStorm (which you can get for free with a .edu email address), Brackets, and Visual Studio Code were discussed. As were the limitations of CodePen and using Cloud9 instead and some of a Cloud9 setup.

In the discussion of local dev environments, Dave brought up MAMP and how he was dabbling in some WordPress when he was using it.

Other resources that were mentioned were: Eli the Computer Guy and The Coding Train on YouTube. An algorithms course on Coursera was mentioned but not the specific one. We were talking about Stanford though so I think this is the right one.

We also worked through the freeCodeCamp Truncate a string challenge together. I didn’t think to save it at the time but we used Dave’s computer so hopefully, he has the solution locally on his machine still. If so I’ll update with it.

UPDATE here’s the code:

function truncateString(str, num) {
  if (str.length <= num) {
    return str;
  } else if (num <=3) {
    return str.slice(0, num) + "...";
  } else {
    return str.slice(0, num - 3) + "...";

truncateString("A-tisket a-tasket A green and yellow basket", 11);

We had a good time and there were a few extended conversations after we officially ended which I liked. I’m not a Sr. Dev and can’t mentor people too much, yet. However, I really do enjoy seeing people connect with each other and the community we’re slowly building around the central theme of people new to coding utilizing freeCodeCamp to learn.