We started the morning with team introductions, mission and culture, and code of conduct. Seemed like all the normal bootstrap sort of things.
Briefly reviewed stuff from the Finder lesson over the weekend, and then we jumped into using the Terminal. mkdir, cd, open…. Easy. Some other helpful command line tools.
The PB&J group activity was next. In groups of 5, we practiced giving instructions to a “computer” to make a PB&J sandwich. Basically, the idea here is to realize that in order to program a computer, you need to establish a common language, be precise in your instructions, experiment and fail, and celebrate the small victories. For us, we celebrated with the jelly dropping directly from the jar into the center of the bread.
For someone with little experience dealing with computers, this activity provided a good concrete example of what kinds of problems are going to come up once we start dealing with code. It was a good shared experience to have that can be easily referenced later.
The last hour of the morning was going over a basic Git workflow: init, add, commit, push, and pull. The basic idea was presented of creating a new branch, fixing whatever needed to be fixed, merging back into master, then pushing back to GitHub. That’s a pretty standard workflow.
As an interesting side note, after making the edits on our new local branch, we pushed the new branch to GitHub, checked out master on our local machine, then git pull origin <branchname>. What that does is merge in the changes from the new branch into master using a fast-forward.
Now our local repo is in good shape, but the remote is still behind. The remote hasn’t seen the merge yet. To finish, we run git push origin master.
I think it would have been cleaner just to do the merge locally. Since we created the local branch, we could switch to master, check to see if there had been changes on the remote by running git fetch origin master. Then we do the merge locally running git merge <fixbranch>. Finish by pushing.
Another interesting note, we created a local repo and a github repo separately and initialized the github repo with a README file. As a consequence of that, the two repos have no common ancestor, and so when we try to merge them together, we are required to use the
After lunch, we got the first daily in-class project. Create a repo, make a couple commits, push up to GitHub, submit the URL to finish the assignment. Easy.
I also ended up helping a few people with their project.
For the rest of the afternoon, the group worked on either the project or starting on tonight’s homework — basic HTML stuff.
It was a good first day.