After a lunch break of pizza, salad and soda (and introductions with fellow students), Avi went through class logistics (class is from 9 am to 6 pm, school will be open on weekends for people to work, etc.) and gave us a pep talk about the joys of programming and words of wisdom for the upcoming semester. He explained that we would be progressing through increasing levels of abstraction - starting with the environment, SQL, front-end code, then progressing to Ruby and finally to Ruby on Rails. We likely won’t get to RoR until a month or so in, as Avi wants us to understand all the individual components of RoR so that we could build the framework ourselves. Personally, I like this approach - I think I learn best when I understand the component pieces of an abstracted framework. Using a framework is fantastic, but its even more powerful when understanding how its constructed so that customization can be performed (even if unnecessary). Overall, it was great to hear his passion for coding come through in his talk - in my brief experience as a (aspiring) developer, I’ve felt that its easy to get frustrated and irritated when working deep in the weeds with lines of code, but that its a much more enjoyable experience if you take a step back and appreciate the joy of creating a product.
After that talk, we continued working on our student profiles, then later in the afternoon, we all gathered back together to work on merging all of our forked branches into the master branch. Avi acted as a train conductor and went through the branches of each of the groups, slowly diff-ing, rebase-ing and remote-ing through each group’s work until we came out with a master branch that contained our student profiles. It seemed like arduous work - especially if there are a lot of merge conflicts - but it was also pretty amazing to see the vast functionality of git, and how its able to take an incredibly complex process - people making changes to various components of a given project at various times - and structure it in such a way that is (relatively) easy to understand. Also, Avi showed us a program called Gitx that converts git project data into a multi-color map that isn’t too different from a live traffic stream. Pretty awesome stuff.
For me, the early part of the day was a little intimidating, although I gather that that was the intention from the get-go. In looking around and browsing other people’s work, I sensed that the level of skill and understanding varied considerably between people. Some of my fellow students dived straight into the project - adding jQuery functionality, restructuring the base CSS - while others struggled with setting up their environment. I counted myself in this latter group - I couldn’t get Sublime Text working early on, and nearly nuked my computer after adding some bash code to my .bash_profile, which removed the ability to use basic commands (e.g., “cd”, “ls”, “rm”, etc.) in my bash shell. Thankfully, after some artful troubleshooting by Avi, I was able to revive my shell and get back to work (thanks, Avi!).
I was able to style some links in my student profile, add a few pictures and create a basic layout for the content I wanted to include - mostly resume-related stuff, like my experience, skill set, etc. (boring, I know, compared to what some other people were putting together). Although I’ve worked with front-end code some before, I still have difficulty fully understanding how to implement a design idea I have, especially with an extensive pre-built stylesheet. I think I need to spend more time systematically understanding how styles are applied and what best practices are with respect to structuring an HTML document. I tend to have too many <div> containers, and still haven’t fully gotten used to using the new HTML5 element tags. Avi assured us, though, that we would get to all the stuff we’ll need to know. All in good time!