deeper thoughts

Self Teaching

I’m pulling an all nighter preparing to teach an “Intro to Servers” class with Girl Develop IT – Boulder.

I thought the class would be boringly straight forward. Describe HTTP request/response cycle, setup SSH authentication, install and setup NGINX for static HTML site and simple nodejs reverse proxy. I was completely wrong.

I realized my complex objective when I had to draw simple diagrams for technical concpets I took for granted (eg, SSH handshake). It turns out SSH has 3 transport layers and the 3rd layer has 3 embedded channels. If you’re like me and started your “programming” after the rise and fall of the first internet age, I lived on top of very helpful developer tools. I was told to accept SSH and write code faster.

But here I am, pulling another post college all nighter and I’m loving it.

Don’t get me wrong. I love sleep, AND REALLY NEED IT. I’m not encouraging all nighters. I am, however, encouraging us to journey into “simple and maybe boring topics” so we can explain how stuff actually works. But not through worlds. Books help, but breaking stuff in front of people explains things that a pile of books cannot teach. Breaking things helps others digest how systems work on since they see the impact and usefulness of “theoretical” concepts.

This got me thinking about how I best digest information when someone isn’t teaching me. I think it’s worth asking yourself the same question, “How do you effectively learn new concepts?”

Here’s my answer. Maybe this helps you derive your own process, maybe not.

1) compare topic to already known concepts
2) create a visual illustration
3) create state based flow

First, I start by comparing new concepts with other ideas and hopefully make an anaology. If I can get the digestion process into an analyically comparative operation I’m 3x more effective than if I’m straight up leanring new material. Second, I take the simpler aspects of the new concept and create a visual illustation. Again, I’m 3x more effective with knowledge if I have create a visual representation. Up until now, all the knowledge and understanding I’ve process is devoid of state or order based dependencies. Third step is to introduce an order list of how the new concept can be explained by building the concept from no previous knoledge.

How to Setup Bower Within Rails

After arguing for a Bower/Rails integration in Why Rails needs Bower, I want to show how Bower can be integrated within Rails.

The objective is for all JS/CSS tooling and libraries to be managed by Bower while still holding to a standard Rails MVC. In other words, we’ll still use Rails to render the view templates rather than moving to a Rails-API/Javascript templated frontend. All we’re doing is using Bower to govern the CSS and JS dependencies.

Example Rails app on Github


Why Rails Needs Bower

Part 1 of 2.

Summary: The rails stack should use Bower to manage JS/CSS assets and stop packaging assets in Rails Engines.

Stopping and Switching

I set lofty goals in January, and like many of you, I’ve gone after some goals, and nearly forgotten about half of them. These were not the typical new year’s resolution goals. They did not include “workout”, “spend more time with friends”, etc.

Learning How to Code

An open letter to people who want to learn how to program, plus my unsolicited advice to them (create & execute solutions with or without software).