The Standard Pace is for Chumps…

brain

I got a late start tonight 🙁 so I didn’t spend as much time as I would’ve liked. However, I did learn that my wife did not know that it was not a good idea to try and peel a cantaloupe with a chef’s knife. Yeah, so after helping her wrap a sliced finger in a paper towel cantaloupe slicing duty fell on me. Then I spilled my tea all over my desk because one of my children (I’m guessing the 2-year-old) had wedged my chair under my desk. When I pulled it out it shook the desk and *splash* everything went. My scroll wheel on my mouse is just now starting to work properly again.

I’m working through Sinatra now and nothing has been too confusing. It all seems pretty straightforward so far. Obviously, the more complex a web app gets the more confusing things will be. I’m interested to see if we’ll be building anything that integrates a database or not. I’ll find out in time. I’m going to attempt to build out a table with the notes I took on the Model View Controller (MVC) architecture a lot of apps are built on.

Model View Controller
Logic Front-End Middleman
Brains HTML
CSS
Forms
ERB*
Chef Guest Waiter

*ERB stands for Embedded Ruby

I think the thing that helped my grasping of the MVC the most was the restaurant analogy. The user interacts with the View which in turn interacts with the Controller which talks to the Model and returns back to the View with what the Model sends. So the Guest orders something and the Waiter takes that info to the Chef who then makes the food and sends the waiter back to the Guest with ti.

Two random things to mention:
1. Check out Informed Delivery from the USPS. I thought it was super cool then I realized you couldn’t tell the USPS to not deliver junk so the service seems literally useless.
2. Read There’s no speed limit. (The lessons that changed my life.) by Derek Sivers. If you have time listen to him on The Tim Ferriss Show as well.

The line “the standard pace is for chumps” (from the Sivers article) has always resonated. While I don’t think I’ve always worked hard enough to prove that true I know I’ve seen it. I think about my expectations going into this boot camp and how long I want it to take. Oh, 800+ hours you say? It’ll take months you say? Gimme 16 weeks from the first day to hired. You obviously don’t know me or that I’ve already completed a Masters degree 100% online or that I have a near-genius IQ or that I have a bunch of biohacks I’m using to crush it.

I’m going to be very interested to see how many hours I’ve put in when I complete Rails as that is approximately 75% of the way through the curriculum. Accordingly, it should be about 600 hours of work done at that point.

Time spent today: 2:01
Time spent total: 150:37
Lessons completed today: 10
Lessons completed total: 365

Day 35

networks

Progress progress progress. I’m moving along. I watched the last ActiveRecord video then finished up the Rack section. Learning the lowest level of how Rails runs a web server. There is a granular procedure that’s happening and it was explained. First, we learn basic Rack, then Sinatra abstracts a little bit more, then Rails abstracts even more. So when things do break, because they will, there is an understanding of what’s actually going on to fix it. This is the exact thing that I hear a lot of people complain about. They buy courses on Udemy or wherever and at the end of the course they have a working app that they can show off, BUT, they can’t explain why or how it works. I’ve fallen into that category in the past. It makes a lot of sense too. If you want to market something you have your students make fast progress and put the impetuous on them to do deeper learning. Like, do people really want to know how rack works? No. They just want it to work and use Rails because that’s easier. I guess that’s what separates those who end up being successful and those who fall to the side self-teaching.

I started this post before finishing my learning for the day. I think this sums it up well:

WHY SINATRA BEFORE RAILS

We’ve all heard of “Ruby on Rails” and how powerful it is. You can build impressive web applications in mere hours! How amazing. Most people, when they learn Rails for the first time, literally say “It’s like magic!”. But we’re developers, and we know that magic isn’t real and that other smart developers just built an impressive framework.

That means it’s important to understand the basic concepts of Rails before diving into Rails itself. Enter Sinatra.

Sinatra is considered a light weight framework where the responsibility of app structure and communication falls solely on the developer. Sinatra doesn’t give you a lot to get started with. There is no way to auto-generate files and directories, no way for the app to make assumptions about routes, or “Sinatra magic”.

Because of this, working with Sinatra allows you to dive in deep with the major concepts of MVC, a system for building web applications that govern 90% of the worlds’ apps. You are required to manually set up routes and connect them to other pieces of your application. Without this manual setup, your application does not automatically know how to communicate with your database or what HTML files to load in the browser. And even more importantly, without a manual setup, you lose connection to the major components of a web application, and in particular, all the moving pieces of MVC.

So introduce yourself to Sinatra. Get to know it, and know it well. The better your foundation, the more you’ll be able to know (and like) Rails.

A few other things that I picked up today. First, is that there are a bunch of other lorem ipsum word blocks out there and they’re typically pretty funny. There are some good ones in this SitePoint article. The one that Avi used is called Hipster Ipsum and made the people watching the lecture at the time ask about it.

Avi went on a tangent about how he thinks about how his life actually impacts others. How the web is this amazing thing that connects people and not just computers. How the time we’re in right now is crazy exciting because we are now as humans more connected and thus are able to do greater things as a species. I honestly don’t remember word for word but that’s the gist of it. A quote that stuck out to me:

The Web does not connect machines, it connects people.
- Tim Berners-Lee

It’s so true when we think about the impact that web apps have on real people. While my code might ultimately be interpreted by machines we don’t build things for machines to use. We are building things to connect and solve real problems for people. When I built the Meetup CLI Gem that has the potential to solve someone’s problem and connect them to other people at a meetup group. It may seem like technology on the surface but in the end, it’s all about people.

Even doing minimal work today (time wise) due to a much-needed haircut and the wedding shower I went to with my wife at Arrington Vineyards, I’m right on track with my pace and have finished 48 lessons/labs since last week. 🙂

Time spent today: 3:33
Time spent total: 148:36
Lessons completed today: 16
Lessons completed total: 355

Day 34

taking notes

It was a good day in the coding world of Seth. I started out completing a decent size lab in the ActiveRecord section. Then headed off to the Free Code Camp Nashville meetup. It was a great meetup where Jason Gresalfi presented on how he had created a Chrome extension. The repo for his extension can be found here and you can find it in the Chrome web store here. It’s amazing how “simple” chrome extensions can be. They’re just HTML, CSS, and JavaScript. Of course, you can build a backend to persist data in a database but you don’t have to. I think I’ll start looking for an itch I can scratch in that world so I have another project in the pipeline down the road. I think our group and meetup is starting to take more shape and we can make it something special in the Nashville community. Hopefully, we can organize and get some things we’re thinking about in motion here soon.

I almost finished ORMs and ActiveRecord tonight but I have one more video lecture to watch. There were 4 tonight which totaled over 4 hours so even on 2.0x it took a lot of time. I’m deciding to be in bed before midnight rather than finish the review. Maybe I’ll just fall asleep to the sound of Avi’s voice playing the video cast to my TV…? Actually, nope, not doing that.

I’m still struggling with understanding databases and how they relate without seeing a visual. However, ActiveRecord is making it A LOT easier to piece together. It’s bringing the database back into Ruby. From my notes tonight:

The model that has_many is considered the parent. The model that belongs_to is considered the child. If you tell the child that it belongs to the parent, the parent won’t know about that relationship. If you tell the parent that a certain child object has been added to its collection, both the parent and the child will know about the association.

This is just good to know. It’s pretty self-explanatory I think. A really cool thing that Avi utilized in one of his lectures is Rails Erd. It takes the database tables and graphically shows how they are connected in a Rails app. I couldn’t get it to work as I’m not using Rails yet and I didn’t want to spend too much time messing with it but I’m definitely going to use it. If you’re interested it’s a pretty quick install and usage process:

brew install graphviz

Add gem "rails-erd" to your Gemfile.

bundle install
rake erd
open erd.pdf

An example pulled directly from the repo:
example entity-relationship diagram

According to my dashboard, I’m at 53 lessons for the week so I hit my goal of 49 with a day to spare! I’m super happy about this (although, sometimes I don’t trust the numbers on my dashboard…) and don’t plan on stopping now. We have an engagement (marriage, wedding, I can’t remember) part tomorrow at a winery so hopefully, I can still get a decent amount of coding in. Although, my shaggy mop is going to get a trim in the morning before we go so I might lose most of the day/afternoon/evening. I guess a social event a couple times a month helps to keep the sanity.

Time spent today: 7:08
Time spent total: 145:03
Lessons completed today: 9
Lessons completed total: 339

Day 33

magic comes from work

I started Active Record tonight and I’m stoked. Mostly because a lot of the work has already been done and now I can just use the magic that is provided to me. I think I have always had the basic understanding that there are libraries that will be doing a lot of the things I have been learning for me. That is why when I get stuck on things but can still complete projects and labs I just push through. I definitely save bookmarks to go back to if need be but ultimately I want to see how granularly I really need to know some of these concepts before I spend hours learning them deeper. While I know having the deeper understanding is a good thing I also have a timeline I’m working with and can dive deeper into topics once I’ve graduated or have landed a job.

Database migrations are a nice thing to have.

I got stuck for a while tonight because my environment was throwing an error in relation to the JSON gem. Specifically, version 1.8.3 which was in the Gemfile.lock of a few of the labs I’ve worked on tonight. I learned with the help of a Learn Expert (someone who’s around to help out students) that the Gemfile.lock is pretty much a set of dependencies that were used when the files were written and are statically set to keep things consistent. So we deleted that file and ran bundle again and everything worked fine. Luckily I asked why we did what we did so I would know enough to repeat the process tonight. Every time I run into this problem I do raise an issue on GitHub so hopefully, it’ll be taken care of for those following behind me.

I feel like I’m behind on the target I set for myself and I have the Free Code Camp Nashville meetup to go to tomorrow. Plus a wedding shower on Sunday. I still plan to be done with Rack this weekend. That’s 22 lessons/labs. I also am considering adding an extra full day into next week by having my nanny come and watch my girls on Friday. So instead of 3 hours next Friday night, I can hit it hard all day and have a 10 hour day. We’ll see how I feel after Monday’s progress.

Something I did to save some time is now when I generate my static blog files they automatically are put into my proper local file location to be uploaded to the separate repo. That’s a complicated sentence to say, I keep my content in one folder and repo, and my public facing files in another folder and repo. I had been generating the public file then copying and pasting in my file manager. Now the files are generated directly into the proper folder saving me a few steps and speeding up my publishing time.

Time spent today: 2:43
Time spent total: 137:55
Lessons completed today: 5
Lessons completed total: 330

My Learning Hacks

rocks working out

So I wanted to share the hacks that I’m using to upgrade my life some and increase my mental aptitude to crushing this curriculum. There is a certain amount of mental stamina that has to be maintained on a day to day basis to keep up this pace. So… here’s my brain upgrades/biohacks/etc… that keep my moving tip top while doing this bootcamp full time and taking care of kids full time. All with links to the best place to buy them.

First thing is my coffee. I start my day off with my take on, Bulletproof Coffee. I currently use Central American Single Origin Organic whole bean coffee from Aldi. The most important thing for me is my coffee being light to medium roast. Nothing dark. I also like whole bean because coffee really does taste way better if it’s fresh ground. I add to that 1 tbsp of Thrive Market Ghee and 1 tbsp of whatever I have around to up ketones. I prefer Brain Octane Oil because it definitely is nicer on the insides but also use Now Foods MCT Oil or just Coconut Oil if I have neither of the aforementioned. I blend this all up together. This gets me going and curbs hunger for hours. I also pop a couple BioScience Brain Boost and wash them down with my coffee.

I then hopefully do my Gymnastic Bodies Daily Limber routine to get the blood flowing some. I follow that up with some meditation utilizing Calm. I try (but usually fail) to write my daily journal entry utilizing this template I built in Evernote. I very rarely get all of these things done. However, I try to.

When I’m on long coding sessions I supplement in the middle of the day with Four Sigmatic Lion’s Mane which I’ve found can really get me going. I have to ensure I’m stimulated enough mentally or I start getting distracted trying to keep my brain working hard enough. I also diffuse essential oils in my workspace. Specifically Lemon, Rosemary, and Eucalyptus. All three of those are supposed to help with concentration and mental performance. I find the scents definitely keep me alert if not anything else. Something that I recently ran across is Nootrobox Sprint and I’m interested to try it out. I might just order the mini bottle for $15.

That should be it if I remember correctly. If I realize I missed something I’ll update this post.

UPDATE 3/31/17
I completely forgot about how I listen to Brain.fm whenever I’m doing work. It really zones me in more than anything I’ve ever listened to. I used to use Spotify playlists but now this is the ONLY thing I’ll listen to when I need to concentrate.

Day 32

Almost 3 hours of review vidoes watched tonight. On thing that I think can be very useful to all. A double bang !! converts an object to it’s truthy value. For example:

seth@seth-u:~$ irb
2.4.0 :001 > 1
 => 1
2.4.0 :002 > !1
 => false
2.4.0 :003 > !!1
 => true

So the return value of 1 is 1 we know 1 has a boolean value of true. So !1 is false and thus !!1 is true. This can be useful for obvious reasons.

Time spent today: 2:41
Time spent total: 135:13
Lessons completed today: 3
Lessons completed total: 325

Day 31

Tonight I had my CLI Gem Project review with one of the instructors. It was pretty cool. I talked through my project from start to almost finish (I realized after we finished we never went over the last method that takes user input to either start over or end). We added another class and refactored some code to make my gen more extensible and flexible in the future. While they’re not official tasks I set a couple new features I want to add to the gem.

  1. Allow users to pick the date that they want meetups for instead of only returning current day meetups.
  2. If a person sees a meetup they want more info on they can enter its number and open the page for that event in their default browser.

I think these are two useful and good additions. I’m not sure when I’ll find the time to get them done but I’ll get them done. Cernan who did my review also informed me that he has seen students get hired just from having a solid CLI Gem so I definitely want to make this portfolio project stronger than it currently is. I think adding those two features I will be able to call it v1.0.0 and release it into the wild.

I finished up ORM except for some review videos which I’ll watch tomorrow. I could have finished the first video but my wife took our eldest daughter to get ice cream and my infant decided she didn’t want to be happy unless she was being held. However, there are worse things than not being able to code because your daughter wants to be held. Eventually, she’ll be too big to fit in my arms so I’ll enjoy it now. Hopefully, I can put an extra hour in tomorrow and catch back up to where I want to be this week.

Time spent today: 2:10
Time spent total: 132:32
Lessons completed today: 4
Lessons completed total: 322