Thursday, November 28, 2013

"I Am Thankful For…" from a Web Dev

The Thanksgiving holiday is a time to reflect and appreciate the gifts in our lives. Of course, I'm thankful for friends and family, but I'd like to take some time to share some of the "geeky" stuff I really appreciate. As a Ruby on Rails developer, I use many third-party tools and techniques to aid in my daily workflow and side projects. Since I've started using them, they've become absolutely essential! So, here are some of the developer-related gifts I'm thankful for this year.


Back in college, I stored all of my side projects on an external hard drive and carried it around in my bag. If I made a change to the code and broke something, there was no way to revert back to a working state other than hitting undo several times in each file. With an online version control service like Github, I have the ability to revert back to any previous state. I also have a log of who made any changes, why they did, and when. Since Github offers free online repositories, I use it as remote backup for my projects, in case my computer craps out. I couldn't imagine my life without a service like Github, and I'm never going back to storing projects on a hard drive to carry in my bag!


The learning curve can be pretty steep, but after taking some time to learn it, Vim is one of the most productive text editors out there. Since adopting Vim, I find myself longing for the key-bindings in any application where I have to edit text! Rather than clicking around or reaching for the arrow keys, I can easily reposition the cursor by switching to command/visual mode. All without leaving the comfort of home row! Vim commands also force me to plan out my actions prior to manipulating any text. I quickly brainstorm what needs to be done, type the proper command, and execute. This makes the act of editing text feel a little more like programming, which keeps my mind in a problem-solving state while writing code.


Tmux is a terminal multiplexer. In short, it lets users manage several terminal sessions within a single terminal window. It supports cool things like window splitting and tabbing, which lets developers customize their own layouts. While those features are awesome, I really appreciate the ability to attach and detach from individual Tmux sessions. If I'm in the middle of working on a Rails feature, and I'm suddenly interrupted, I can detach from my current session and create a new one. Once I'm done tending to the interruption, I can reattach to my previous session and continue where I left off. My terminal layout and running processes are preserved!

Chrome Dev Tools

At my first job, I was completely new to web development. I was familiar with HTML and CSS, but I had very little experience with HTTP and Javascript. My web development knowledge began to grow as I spent more time exploring websites with the Chrome Developer Tools. The ability to inspect HTML elements and styles as they exist in the DOM is extremely helpful. The Javascript debugger is very essential, especially since the web is becoming more dynamic. I can set breakpoints and use the console to evaluate Javascript at any point in the execution. There are other great features available, but these have been the most influential in improving my understanding of the web.


I started working with Ruby on Rails and test-driven development a couple of years ago without any prior experience with either. Two years later, I am convinced that a well-written test suite is essential to any project. TDD is a process that relies on developers writing automated tests prior to any production code. By following this paradigm, I'm forced to think about the design of my objects before I implement the code. Later down the road, when I inevitably refactor those objects, my tests help ensure that my code changes don't break the original contract. That is, the objects' original behavior and interface remain the same. TDD and testing provide a nice safety net for any project, why be without it?


HN is my go-to resource for anything and everything related to software and tech. The concept is simple: users share links to articles about anything from hot new web frameworks to clever programming techniques. In the comments, participants can share their experiences and insights. They also often have fiery debates, giving readers several different perspectives on any number of issues affecting the software community. Overall, HN gives me the content and community I need to make myself better at what I love to do.

So, with all that said, I want to give a big thank you to the creators and maintainers of the aforementioned tools and techniques! You've made my job and hobby easier and more enjoyable!

What are you thankful for this year? Let me know in the comments!

1 comment: