Devise Is A Beast

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

OAuth Just Makes Sense, Now

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

Let’s Keep It Safe With Authentication

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

Rails is Moving Along

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

freeCodeCamp Nashville May Meetup Recap

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.

Rubocop Saves The Day

I missed writing yesterday. However, I chose to skip the writing while I enjoyed a very productive study group. Not really. We chatted about everything except code mostly because nobody really showed up at the proper time for it. After 3 hours of talking it was late and I decided to not write a blog post.

I also went to a Ruby meetup last night. It was underwhelming this month with only 3 of us in attendance. However, I got to meet a dev here in town and a guy who’s building his own PaaS (I think that’s the right acronym). The biggest takeaway was enabling Rubocop in Atom. I already had the gem installed but hadn’t started utilizing it. We got to this point by me telling how I spent almost 3 hours trying to find where my code was breaking a test to realize it was a f. missing. Charles told me Rubocop would’ve caught that.

No abstraction is better than the wrong abstraction.

- Sandi Metz

Time spent today: 2:48
Time spent total: 254:11
Lessons completed today: 4
Lessons completed total: 482

Render Partial New Mouse, What?

Cut it short tonight. Needed to. Learned some more about rendering partials tonight. Main takeaway code example <%= render partial: 'songs/song_details', collection: @genre.songs, as: :song %> will iterate through @genre.songs and passes those objects to the partial as song.

My wife bought me a trackball mouse 🙂

Prepped some of my possible presentation on REST for Saturday.

That’s all I got.

Time spent today: 1:34
Time spent total: 248:16
Lessons completed today: 4
Lessons completed total: 478