Travis Ingram     About     Archive     Feed
Beginner => Competent => Proficient

CodeUnion - The Beginning

Preface

I’ve been learning about different aspects of software development, learning how to code, for a couple of years now. It’s been challenging to say the least. This is the first in a series of posts that will detail and document my experiences. Some, like the one below, were written a while ago and not necessarily meant for public consumption. But I’ve come to feel that it’s important to acknowledge and share challenging experiences. So I’ll be doing just that.

Most of these posts were written over the past couple months, since the beginning of June, 2014, since I started participating in the workshops offered by CodeUnion.

20140602 - CodeUnion, Day 01

CodeUnion is an online developer bootcamp founded by Jesse Farmer and John Davison. They offer a few different workshops that cover the various skill sets needed to work as a software developer. Each of the three main courses last eight weeks and are conducted remotely, via Google Hangouts.

Their goal is to provide a learning environment for people who have an interest in development but are unable to uproot their lives and move across the country to pursue it. The first cohort began yesterday, June 2nd. I’m one of the six students selected for the inaugural class. This is my experience.

Beginnings

I stumbled upon CodeUnion while browsing Quora.

I sent off an email asking for more information. They responded and we set up a time to meet. Our first conversation lasted almost two hours. It was pretty intense, at least from my perspective. I’d not talked to anyone else about development related topics for, well, ever. At least not to that degree or depth.

It was great.

After our conversation they sent off some example exercises to give me a feel for the type of material that they would be covering. A few days later they got in touch and offered me a spot in their first workshop.

It wasn’t an easy decision. I had some concerns, most of which centered on my own abilities, on my capability to learn the material. I gave it some thought, though, and ultimately decided to accept.

Class stated less than a week later.

Structure

The class meets as a group twice a week, in two, two hour sessions. In addition, Jesse and John will be pushing out projects, via GitHub, as well as numerous coding exercises, katas, for folks to work on.

The goal is to develop a routine where the class is forking the repositories, working through the problems, and then pushing the exercise files back up to GitHub for review. J & J believe that writing code and getting feedback is key to the learning process. They want to provide students with as much feedback as possible. They recommended that everyone set aside a block of time, thirty to sixty minutes, and work through a given exercise, making as much progress as possible. Once the limit is reached, the file is pushed back up to GitHub, regardless of its current state, for review.

Since we haven’t met yet I don’t know exactly how the classes will be structured or what’s going to happen. The goal, I believe, is to give a high level overview of the projects that we’re working on and talk through any questions that have come up during the week. I’ll find out for sure soon enough.

Challenges

My biggest concern or challenge is whether I’ll be able to overcome my hesitancy to ask questions or speak up when I get stuck. It’s really hard for me to do so but that’s pretty much the key to learning. Being able to recognize when you’re stuck, when you need help, and asking for it. I worry about being perceived as stupid or lazy or incapable of learning the material. I also don’t want to slow the others down or hold them back.

My first day wasn’t as productive as I had hoped. I spent some time testing out my environment and making sure things still worked. I’d been more than a year since I set up Homebrew and Ruby and RVM and Sublime Text and the rest. Since I don’t have a real firm grasp on how they all interact, the setup always makes me a bit nervous. Typing random things into the Terminal app and hoping everything goes smoothly isn’t my idea of a good time. I prefer to understand what’s happening but finding information on such things is challenging. I often times don’t even know how to even start looking for information. So I type and then cross my fingers and hope for the best.

Thankfully, I survived. As did my Mac Pro. There was an error or two with Homebrew, but nothing major. I didn’t want to spend too much time on it because I’ll be getting a new machine soon. Once it arrives I’ll have to go back through and set everything up again. Which isn’t a huge deal and will actually be nice. I know my current machine hasn’t been cleaned up in ages so this is a great opportunity to start fresh.

So that’s where I’m at. I don’t really know what I want to say in these posts or how to say it. I’d like to have a place to talk about what I’m doing, learning, struggling with, understanding and so on. I’ll keep working on the format, though, and try to develop some consistency around what and when I post. I think doing so will be handy, a way to document and also review what I’ve done and serve as a reminder of what’s possible if I stick with a given project.

That’s the goal, anyway, we’ll see what happens.

Sublime Text - Editing Preferences

Sublime Text Preferences

Sublime Text, while quite powerful, extensible, and customizable, isn’t very user friendly. At least for those folks more accustomed to consumer focused applications. The most obvious example is the lack of a preference pane. To make changes to the look and feel of Sublime Text, users must manually edit the preference files.

And yes, that’s files, plural.

Sublime Text separates out the preferences into three main categories.

  • Settings - Default
  • Settings - User
  • Syntax Specific - User

These settings files are essentially one big JSON object and must be formatted as such. Sublime Text is expecting something that looks like this;

{
  "preference_name": "string",
  "preference_name": 15,

  // Comments are also allowed, even though not supported in JSON
  "preference_name": true,
}

===

User Settings

The Preferences.sublime-settings - Default file is best left alone. It’s actually overwritten every time the application is updated which, given its beta status, might happen now and again. So to avoid the chance of loosing your changes, it’s best to simply add the settings you’d like to modify to the appropriate file. And just in case you forget, there’s a friendly reminder at the top of the default file that states all user specific preferences should be placed in Preferences.sublime-settings - User.

The first time you launch this file, it’s empty. There are numerous individual settings you could add but, unfortunately, the Sublime Text documentation leaves much to be desired. So much so that they provide a link to the Unofficial Documentation.

I’ve included a few basic settings below. They are pretty self explanatory. If you find that you’re missing something specific, chances are a quick Google search will bring up the relevant setting. Which you can then add, restart, and be good to go.


{
  "bold_folder_labels": true,
  "font_face": "Monaco",
  "font_size": 12,
  "highlight_line": true,
  "highlight_modified_tabs": true,
  "ignored_packages": ["Vintage"],
  "indent_to_bracket": true,

  // Columns in which to display vertical rulers
  "rulers": [80],

  // The number of spaces a tab is considered equal to
  "tab_size": 2,

  // Set to true to insert spaces when tab is pressed
  "translate_tabs_to_spaces": true,

  // Set to true to ensure the last line of the file ends in a newline
  // character when saving
  "ensure_newline_at_eof_on_save": true,

  // Set to true to removing trailing white space on save
  "trim_trailing_white_space_on_save": true,

  "word_wrap": false
}

===

Syntax-Specific Settings

Sublime Text allows you to maintain settings on a language by language basis. This allows you to ensure that your Python files have 4 spaces of indention and your Ruby or YAML files, only 2.

In order to modify the syntax specific settings, either create and save a new file with the appropriate extension, .rb for example, or open an existing one.

With the file open and active, select the following option:

ST Pref Selection

Sublime Text => Preferences => Settings-More => Syntax Specific-User

Sublime Text will open a new, blank document. As before, you’ll need to type out or paste in the settings you’d like to have. I typically add;

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true
}

If you want to add additional settings later on, simply repeat the process, remembering to save the file once you’re done.

===

There’s much more that can be done but this should at least get you started. Feel free to ping me if you have any questions. I’ll do my best to answer them.

Dev Tools - Git, GitHub, Sublime Text

20140802 - Original Post

Here are some links that you might find helpful. They are meant to serve as additional resources to get you up and running. Don’t feel like you need to read them all or follow every piece of advice.

I’ve tried to highlight the potentially relevant bits but there’s a lot of information in some of them that could be useful later on. For example, I just recently moved away from the Terminal app built into OS X and started using iTerm. I didn’t need to but it offered a feature or two that I found handy and helpful.

Once you’ve worked with the tools that comprise your environment for a while, you’ll undoubtedly discover and develop preferences and habits around your own workflow.


Git and GitHub

As you progress in this course and as a developer, Git and GitHub will become more and more important. There are numerous resources available online. I’ve included a few that have helped me gain a better understanding of the basics, below.


Try Git, an interactive tutorial

Git allows groups of people to work on the same documents (often code) at the same time, and without stepping on each other’s toes. It’s a distributed version control system.

Try Git is a quick interactive tutorial that provides a great introduction to the concept of Git and an overview of the basic commands. It only takes about fifteen minutes to run through.


GitHub for Beginners: A Two Part Series

Lauren Orsini:

Git is version control software, which means it manages changes to a project without overwriting any part of that project.

This series covers the basics of Git as well as some additional information on navigating the command line. It doesn’t make many assumptions and is quite easy to follow. You can find the second part here.


Git Commands and Visualizations

Understanding how Git works, what the various commands and concepts mean, is challenging. At least it is for me. In addition to providing a nice overview, the Atlassian site also has some handy visualizations that might help clarify or provide a mental model of how Git is working.


Git Pro - Free, on the Git-SCM Homepage

Scott Chacon:

If you can read only one chapter to get going with Git, this is it. This chapter covers every basic command you need to do the vast majority of the things you’ll eventually spend your time doing with Git.

Once you’ve got a pretty decent grasp of the basics, it might be time to visit the Git homepage. In addition to housing all the documentation, they have a number of learning resources. Including the full version of Pro Git, which covers most every aspects of git. The Git Basics section linked above might prove helpful after you’ve spent some time using Git first hand.


Sublime Text

Sublime Text is a great editor. It’s a very powerful, extensible, and customizable application. But being a developer tool means it’s not very friendly, at least for new users. The links below should provide you with enough information to set up and modify Sublime Text to your liking.

I’ll add, though, that while the links provided are indeed handy, no one article provides a succinct overview of using Sublime Text. The biggest omission is the process by which you edit or modify the application preferences.

I wrote up a brief tutorial on how to make some basic changes, including the steps required to set up syntax specific preferences. Which, once changed, will ensure Ruby will always indent by 2 spaces. It can be found at the link below.

Modifying Sublime Text Preferences

As many of the articles below advise, you should consider installing Package Manager. It will enable you to extend the core functionality of Sublime Text and also add interesting themes and styles.

It’s also worth noting that even though most of these post reference Sublime Text 2, the information, almost universally, is applicable to Sublime Text 3. Which, while for download and use, is technically still in beta.


Perfect Workflow in Sublime Text 2

Jeffrey Way:

Hi, there! I am a confessed code editor addict. I’ve tried them all. I was an early adopter of Coda; I became a Vim faithful; and then, I found Sublime: far and away the best code editor I’ve ever used.

In this course, I’d like to show you every spec of information that I’ve learned from this amazing editor.

This free course provides 2.5 hours of video instruction on Sublime Text. It’s a great resource. The individual lessons are broken up into bite sized pieces, which makes finding the time to view them much easier. Most are less than five minutes in length.


Sublime Text (2)

Drew Barontini:

The usefulness of this setup guide will vary based on your personal preferences for how your text editor should function, but it should help with the initial setup of Sublime Text.

Drew opens his post with an appropriate caveat. While the information he provides should help you get started, some additional digging might well be required to get things set up just so. Each section should at least point you in the right direction. That’s the beauty of an application like Sublime Text, once you understand how to make modifications, you can quickly and easily change things around and experiment with your setup.


Setting up Sublime Text 2

Alex MacCaw:

After a few weeks of using Sublime Text, I can safely say that it’s the best editor I’ve used. It’s fast, extensible and hasn’t ever crashed on me. That said, no editor is perfect and Sublime Text does require a fair bit of initial configuration.

Alex walks through installing Package Manager and briefly covers themes, tabs & spaces, and changing the icon associated with Sublime Text.



Terminal / The Shell

Mac OS X provides an application to interact with the command line interface called Terminal. One of the best resources for quickly getting up to speed working via the command line is the Command Line Crash Course by Zed Shaw. It might take a day or two to get through but it’s a great way to get started.

Onno Schwanen created a concise list of commands that augment Zed’s course quite well.


By default, the Terminal app isn’t much to look at. Thankfully there are many ways to make changes to its appearance. Some are available through the built in preferences, (⌘ + ,) while others can be modified by editing the file(s) referenced by the application when it launches, namely .bash_profile.

This is also the file where you would add aliases, which are a handy way to reduce the number of keystrokes for commonly typed commands.

I’m working on a separate post that goes into more detail about setting up and modifying your shell. It’s a pretty intimidating process but one that I think can be understood. That’s my goal, anyway, to demystify it a little bit.


Documentation

Dash is an offline API Documentation Browser

Dash is an API Documentation Browser and Code Snippet Manager. Dash stores snippets of code and instantly searches offline documentation sets for 150+ APIs. You can even generate your own docsets or request docsets to be included.

I recently installed Dash and have been very impressed. As someone who is occasionally without access to the internet, having offline, language specific documentation comes in quite handy. There are numerous plugins that extend the core functionality. You can, for example, install the Sublime Text package to enable searching from within the editor.

Dash is available as a free download through the Mac App store, provided you don’t mind waiting for doc sets to load or the occasional reminder to purchase.