Udemy Courses for Learning

Been busy with the holidays so I haven’t been able to post lately. I’ve also got another project in the works, so more on that to come.

I just wanted to get a quick plug in here. I’m no way affiliated with Udemy, but I’ve found some great material there. It’s basically a user-generated course website, having everything from public speaking to how to program. I strongly encourage you all to check it out. They ran some great deals during the Thanksgiving week (I bought a $199 course for $11!) and now they’re having some great Holiday deals (last I checked, the course I purchased was at $19). I purchased a Learn-Web-Development type of course, covering everything from HTML to Javascript to PHP. I haven’t had the chance to go through it yet, but the real reason I bought it was for the Javascript/jQuery lectures.

Give Udemy a try. I’d sign up for the email lists and wait for great deals. I’m not sure if there are any deals throughout the year, but if you’re able to get a highly rated course for $10, I think that’s a steal.

More on my other project soon!

Alright…I need to learn JavaScript

Seems like JavaScript has really taken a turn. With all the new frameworks like Node, Ember, Angular, Coffee, D3…JavaScript has really become a core language to know. It seems like it’s almost becoming synonymous to web development, much like HTML/CSS are. Having been primarily focused on learning Ruby/Rails, I’ve been able to sidestep JavaScript for some time now. But with the new technologies and the live-action magic it provides, it looks like I’m going to have to start learning it, at least to a point where I’m functional.

I’m thinking jQuery is the place to start. It has just about everything you’ll want/need to do with a web app. Everyone I’ve spoke to and all the posts I’ve read, they say to stick to one language. After all, you don’t want to be the “jack of all trades, master of none.” But I’m starting to think some things just can’t be avoided. Learning JavaScript is one of them. From what I understand, it’s being used everywhere: in the web, for mobile apps, even some Java applications. Possibly some scripting too now.

I’d hate to stray away from my learning path, especially because I’m not at a point yet where I’m comfortable with Ruby/Rails. But, I’ll tack on another language. Maybe I’ll start with CoffeeScript or Angular as those seems to be a little better of a learning curve. We’ll see. Hopefully I’ll still have hair left when I take the dive.

Nitrous.io – Cloud Environment

One of the great things about Ruby on Rails development is that it doesn’t necessarily require a state-of-the-art machine. I have a mid-2009 MacBook that I bought for $300 in January this year and it’s held up fairly well. Any slowness I attribute to OSX, not to the space or memory of Rails. However, there definitely are some drawbacks by not having a fast Mac.

For one, multitasking is painfully slow. I’ve done a lot of pair programming online and it slows my machine to the point where it’s no longer useful to screen share. In my case, it doubled the time for everything: starting rails server, running any sort of “rake” command, and bundling gems. I’ve also tried to screen record with audio so I can further explain to someone what I’m trying to do. I felt like my machine was going to blow up because the fans were running at above 80%.

I wanted a way to use my gaming PC that is relatively fast (built it 4 years ago). It has a duo core i5 processor with 16gb memory and a decent graphics card. Surely, if it can handle video games at mediocre graphics, it can handle a little Ruby on Rails development. In comes Nitrous.io.

I heard about Nitrous way back when I initially started to learn Rails. It’s essentially an online environment, mimicking a Mac. I never paid it much attention because I had a Mac that didn’t have any performance issues (at the time, all I was doing was coding). But now that I’ve gotten to a point where I am screen sharing with mentors and wanting to record my process, I needed a stronger machine. I’m not quite ready yet to blow $1,500 on a new Mac, so that’s when I had the idea of using Nitrous and recording in HD on my PC. I haven’t had the opportunity to test it out yet, but it seems like an ingenious solution at first glance. I’ll be trying it later this evening and will return with my results.

New Project: Classifieds Website

I finished up my first project and have decided I should get right back into the trenches by starting another one. I was contemplating whether or not I wanted to go through all the headache and frustration after it’s just ended, but the feeling of starting from scratch and completing a project has given me an awkward euphoria. As I gain more knowledge, coding becomes more enjoyable. Pushing through the initial phases of learning to code was, at times, unbearable and left me feeling helpless. But as I came face to face with obstacles and learned proper syntax to do the things I wanted to do, it’s becoming a lot of fun.

So instead of procrastinating, my hope is to continue this momentum and run into more challenges to build even more knowledge. As I tackle problems, I learn more about Ruby and what to do to overcome them. I want to build a portfolio of projects, not only as a means to showcase what I’ve done, but to be able to reference something I’ve already found a solution to. As I’ve stated before, the smart programmers are the ones who don’t try to reinvent the wheel. If a solution has already been thought out and exists, why not copy it?

All that being said, my next project is building a Craigslist-like app. At first thought, it actually seems easier than what I’ve just gotten done building. But, that could just be my idiotic first glance. I’m hoping this one goes a lot faster than my first one, particularly because not only  have I learned more but now I have code I can reference.

Finishing Up Project!

I’m excited to say that I’m almost done with my project, at least to the point that I wanted to get it to. It’s funny because it seems like I’ve been stuck on a few issues for so many weeks/months. Once I was able to get past those hurdles, finishing up the project was fairly quick. The main things that were stopping me in my tracks were full text searches and geolocation. After I figured those out, everything else started to come together (and I think I also started to grasp a little more of Rails in general).

Now, I don’t have a production ready application. There are a still a few things I need to do in order to have a fully functional website. Sending out emails isn’t set up, I’m not using real data (lorem ipsum is all over the place), I have a few pages that are redirected to the root path, a lot of my code can probably use some refactoring (making it DRY). But, I’m content with what I have and am considering my project near finished. It’s a rewarding feeling and looking back at how long it’s taken me, I’m a little surprised. Looking at my code, it doesn’t seem like I needed to do much. That’s the power of Rails, but it’s also a testament that being self taught, you learn at a much slower pace. All it took was someone to help push me through those obstacles. If I had that person on Day 1, this project would’ve been done in a few weeks versus a few months.

Since I’m considering my project to be near done, I’ve admittedly been holding back on starting another one. I’m more than likely going to build another clone because I think the familiarity will help guide me on what I should do next. Maybe it’ll be a slightly more in depth application, that way with each project, I’m learning more and challenging myself to learn more complex concepts. We’ll see.

Got My Ruby on Rails Question Answered for $5

So after a week of trying to implement a feature for my Yelp clone project, I finally caved and decided that I needed some extra help. I contacted a few folks on Reddit and Codementor, but ultimately didn’t receive any responses. Elance would’ve been a little much since I had a simple question. The next local Meetup is 2 weeks away and I didn’t want to wait any longer. So, in desperation, I resorted to trying to find someone on Fiverr again.

My experience with finding someone on Fiverr hasn’t been negative, but it wasn’t exactly positive either. If I had to rate it out of 10, I’d say it was a 4. But, I was desperate and decided I’d try it again. I search for “ruby on rails” and was brought to the “High Rating” gigs. I decided I’d try something else. I wanted new blood because I’ve already contacted a few of the folks before and they either tried the bait-n-switch (posting a $5 gig but saying it’ll take 10 gigs) or I used them before and they weren’t much help. This time, it was definitely a success.

Now maybe it’s because what I wanted to do was very simple and I just needed to know the syntax, but the new person I found responded within minutes and even had the solution within an hour. I basically wanted to be able to capture a visitor’s location and show them a model within X amount of miles. Instead of throwing some syntax for me to try, they actually pulled my repo and made a pull request, comments and all. It wasn’t exactly what I wanted, but I could take what they did and apply it. For $5, I couldn’t have asked for more. Also, they said they’re more than willing to help me if I have anymore questions in the future and to just email them.

Learning Rails on a budget is definitely a slower pace, but I think I’m getting the most bang for my buck. One reader contacted me and gave me their experience with Bloc.io. I’m glad they did, because I contemplated using their services but couldn’t justify the $5k price tag. And from what they were saying, it might not be worth it. But maybe I’ll save that for a later post. Happy Halloween!

Thoughtbot’s Upcase Review

So after a week of going through Thoughtbot’s Upcase program, I’ve decided that it wasn’t for me. There was definitely a lot of useful information, but it seems like the service would be a much better fit for someone who already knows Ruby/Rails and is looking to get a deeper insight to the intricacies. Personally, I think an intermediate level developer would benefit most from Upcase, not folks like me who need their hands held every step of the way.

Tutorials
There are two Ruby on Rails tutorials. The intro tutorial goes through a simple card type app where you can build a deck of cards and the intermediate one builds a Twitter clone app with TDD. While both tutorials were in-depth and covered the basics, I didn’t feel like there was a lot of value. The deck app was simple enough where you could probably figure out how to put together yourself if you scoured Google and the Twitter clone was a duplicate of Michael Hartl’s tutorial. To their credit, these are great tutorials with great explanations, but probably not ones I’d pay for.

Trails
They have various “Trails” that are essentially paths to help you better understand a specific skill at hand. So they have a Ruby trail, Vim trail, Rails trail, etc. These trails may have one or two Thoughtbot video tutorials, but for the most part, it points you to an outside reference. For example, the SQL trail doesn’t have any Thoughtbot created content. All their references are pointed to an outside resource. While this does save you the time of going out and finding the sources yourselves, I don’t think it’s worth paying for. It’s great they laid out a plan to help folks get an understanding of what they might need in order to land a job as a developer, but what you could have found everything you’ve been given if you just ran a search on Google.

Weekly Iteration
The weekly videos they release every Friday are definitely interesting to watch. They go through various Ruby related concepts and discuss technology in general (Law of Demeter, Sandi Metz’ Law, dependencies). Again, this is where I believe an intermediate Ruby/Rails developer would benefit from most. As a beginner, these concepts and talks go over my head. When they start getting into extracting classes and refactoring code, although I know what they’re talking about, I can’t value the discussion as much as I should because I have no real context. There are definitely some videos that anyone can benefit from, like how to land a Rails job, but from a beginner perspective, I can’t fully appreciate what they’re talking about.

Exercises
Another section where I believe an intermediate developer would benefit from most. There are great exercises that they release on a weekly basis, however, as a beginner, I really have no idea what I’m doing. When asked to write a test for a particular method, I’m not quite sure where to start. How does this differ from the other, free exercises like exercism.io or Ruby Koans? I think the approach would’ve been great if they gave an exercise, then walk you through finding the answer. I get that they’re trying to push subscribers to use critical thinking, but it just becomes frustrating when you have no idea what you’re doing (which is why you’re there to begin with).

Repositories
They have three repositories that you have visibility in to: the Upcase application itself, the application they’ve built for their exercises, and Payload (which I’m not quite clear what this is). They are all full, heavily tested applications. It’s a great insight into how a production level application is structured. Being able to go through all the files and code, it really opens your eyes and sets the precedence of what to expect if you land a job as a Rails developer. If only I knew how to read the code so I can understand what’s going on. Again, this is where I think someone who has a strong grasp of Ruby/Rails will benefit from most. As a beginner, it’s just scattered letters and symbols.

 

It may sound like I’m being highly critical of their service, but it’s my personal opinion. After a week of playing around and going through most of their material, I didn’t find myself constantly coming back to Upcase. I strongly believe this is the best monthly subscription service out there. And if I feel like I’m not getting a lot of value here, I can only imagine what the hundreds of other services are like.

I find it hard to believe that there isn’t a better learning program. As I’ve said before, maybe you get what you pay for? After going through a program created by highly regarded Rails developers and feeling like I’m not getting a lot of value, do I really want to make the jump to a Bloc.io or CodeSchool. What I want is simple: walk me through building a semi-complex app from scratch. Start from “rails new <name>” and show me the entire process, including TDD. Hartl’s tutorial is a great starting point, but I want more functionality. Show me a Facebook/Quora/Yelp/Groupon clone that includes full text searching, geolocation, and administration management.

My quest to learning Rails continues. As always, I will report back on my progress and will review any resources I’ve tried.

Upcase by Thoughtbot

I finally caved and decided to subscribe to a learn-Ruby-on-Rails service. However, I strongly believe that I chose the right subscription. There aren’t many reviews, I think partly because they don’t advertise it nearly as much as others, but Upcase is Thoughtbot’s service to help beginners learn Ruby/Rails. I’ve mentioned them before, but if you don’t know who Thoughtbot is, they’re basically a highly regarded Rails/web development shop. They’re known for their apprentice program and have many gems that you’ve probably used before.

They recently got rid of their $99/mo tier and brought it down to $29/mo. I think that’s a steal because now you’ll have access to all their video tutorials, the repository for the entire Upcase application, and the various coding exercises that are meant to help keep your brain fresh with user-submitted methods. I’ve just subscribed, so I’m currently on their first Rails trail. I’ve been following along with the videos, so when the instructor is coding, I am too. The greatest part is that this is a subscription, so you can cancel at any time. With these types of services, I always recommend going through as much and as fast as you can to maximize the learning at a lower cost.

As far as I can tell, it looks promising. I’m excited for the weekend because I’ll have the time to run through the different trails and hopefully learn a lot along the way. I’ll report back and do a review of their service once I’ve gone through most of it.

Learn Ruby on Rails Book

I’ve been given a copy of “Learn Ruby on Rails”, created by Daniel Kehoe, and am excited that I’ll be going through it in the next few days. I haven’t had much time to take a deep dive, but from my initial glance, it seems like the book itself is geared towards complete beginners. In the first initial chapters he states that the book is meant to give a high level overview of Rails and will skip over all the other intricacies that would normally cloud and confuse beginners (TDD, IDEs, etc.). And as I’ve mentioned in previous posts, that’s definitely the path I recommend.

I’m impressed with what I’ve seen so far and will be going through it in its entirety, book as well as the various tutorials. There only seems to be 3 tutorials outside of the book itself, but we’ll see what application we actually build in the book. I’m a big fan of building real world applications, which is why I favor tutorials.

Review of the book and the entire RailsApps Project coming soon!

Thoughts on Vim for Rails Development

Most new Rails developers (including myself) follow a very systematic process: install RVM, install Ruby/Rails via RVM, download SublimeText as your editor, and start following Hartl’s tutorial. That’s not a bad process to get started, especially if you’re completely new to development. I stayed on that path for a while because my first and foremost goals was to learn Ruby/Rails. But after you’ve gone through enough tutorials, start working on your own project, and start scoping out potential employers, that probably won’t cut it. After my continuous digging of resources, I stumbled on Thoughtbot’s blog and their Upcase subscription service. For those of you who don’t know who Thoughtbot is, they are a highly regarded Rails/Web/Mobile development shop. They have many different gems out that most of you have probably used (Paperclip and Factory_Girl come to mind). After browsing their material and what they’re all about, one thing comes up more often than others: Vim.

Vim, in the context of what I’m going to talk about today, is essentially a text editor (like Sublime, TextMate, Notepad++). It’s what the hardcore developers use as their editor. Some of the reasons:

  • Higher efficiency: the entire goal is to keep your hands on the keyboard, along the home row. So instead of using your mouse to scroll around to navigate files, it’s all within your reach with different keystrokes.
  • Configuration: Vim comes with a plethora of configuration options via .vimrc. This is where I got lost. There is a sea of plugins that you can use, so no two Vim editors will be the same (almost). You have different color options, window pane views, and I think there’s even an auto correction plugin.
  • Hardcore status: this is my own subjective opinion. It seems to me that Vim is used by the more seasoned developers, thus giving (at least me) the implication that a Vim user probably knows their sh*t.

All that being said, I’ve decided to start using it as my editor of choice. It initially started with me wondering what all the buzz is about. I’m still playing around with it and just got it up and running. I’ll put it bluntly: it is freakin’ hard to setup. It took me 2-3 days to research and get it working with my Rails project. In hindsight, it was pretty straightforward. But I couldn’t find a single resource that started from Point A to Point Z. There were little snippets and tutorials of how to use Vim, but nothing that was concise. Most of the time it was people going over their configuration versus showing you how to actually configure it from the ground up and get it working. I just want to know how to go from not having Vim to getting it looking like <insert developer’s Vim screen>, colors and all!

Why did I make the switch? Well, “When in Rome…” I strongly believe that if you want to become a great developer, you need to follow in their footsteps. So emulating someone’s thought process/habits/etc. will help you become a better developer. Maybe that’s just my own naivety.

All that being said, I’m strongly considering creating a video tutorial. Maybe I’ll call it “Setting Up Vim for Rails from Scratch.” We’ll see. Hopefully it’ll save others the few days it took me to get it setup. Maybe that’s why people stick with the more straightforward text editors? In all honesty, I almost quit Vim after an hour trying to get it set up. But now that it is, I’m excited to really learn and use it. This put a halt to my Rails learning for a few days, so I’m glad to be getting back to that.