I am continually seeking to up my game as a programmer and maximize my work hours so that I can get more done in less time but also produce better quality and more thoughtful output. Time is precious and yet so easy to waste when you are in front of a computer all day.

I’d like to share five tips that have really helped me to be more productive and get the most out of my work day. None of these are new or revolutionary but they have made a real difference in how I get things done.

Here are the bullet points:

  1. Eliminate distractions
  2. Invest in your tools
  3. Set aside time to learn
  4. Practice mindful coding
  5. Make time for exercise

I’d like to dive deeper into each of these and share some examples of how I’ve put them into practice. This list has worked for me but it is fairly personal and so I don’t expect it to fit your life exactly. Rather, I hope it can give you a few ideas of things to try as you go ahead with your work day.

Let me know if you other strategies and tips and let’s learn from each other.

Two of the tools I most use in my software development are Tmux and Vim. I love these tools, they are an essential part of my workflow and all their keybindings have been fused into my brain and now primarily work from muscle memory.

Making Tmux and Vim work well together is something that is critical for my workflow. One of my goals is to keep my fingers on the homerow as much as possible and as part of that I wanted to use two conflicting mapping.

I wanted to map the ESC key to CAPS LOCK in vim so that I just had to hit CAPS LOCK instead of ESC all the time.

Then I also wanted to map the CTRL key to CAPS LOCK so that in Tmux I can use CAPSLOCK as part of the Tmux prefix.

These are two potentially conflicting key mapping as I want to use the CAPSLOCK key for two different operations.

Here is how I did this on OS X Sierra.

First open up your system keyboard preferences and open the “Modifier Keys” pane. Set kki

I love books. For as long as I can remember I’ve always had at least one book on the go, and more often than not I find myself working through several at a time. This results in getting through a lot of books each month which really adds up over the course of a year.

When you read a lot of books I have found it’s important to have a practice of underlining and note taking while reading in order to really have the important ideas in the book stick. Then in addition, I have found it’s helpful to go back and review my notes a couple weeks after the book to aid in retention and help me to apply what I’ve learned.

I thought it might be fun and helpful for me to take a look back at the books that I read in 2016 and make a list of the top 5 that I really enjoyed or that had the biggest impact on me.

I’m not sure when I first started using social media but it was probably around the year 2004 or so with MySpace, Friendster and some of the other early platforms. By 2006 when Facebook opened up it’s registration to anyone with an email address I was pretty hooked up into the whole world of online persona. Twitter followed shortly thereafter, along with Reddit, Instagram and so on.

I didn’t really think about why I was using social media or the potential drawbacks of doing so. I pretty much just embraced it and in some ways got a bit addicted to it.

It’s hard to believe another 365 days have come and gone, the past year feeling like a blur and quickly becoming no more than a series of fading memories.

While I find value in keeping the shortness of life in perspective, I also try to not dwell on the passing moments but to focus on what I can do in the time that I have ahead of me. As such, one thing that I do appreciate about a new year is that it always gives a chance to reflect on the past year lived and plan ahead for the coming one.

One thing that these reflections can lead to are new years resolutions.

Did you make any this year?

If you did, how are you doing with them as the year comes to a close?

A common task that I encounter regularly in my Rails apps is needing to setup a background job that runs on a regular schedule. Essentially what we want is a cron job but the last thing I want to be doing is fiddling around with a crontab on the server. It would be much better if I could configure the scheduling within my Rails app itself and then I can keep the schedule configuration under source control. This makes makes it easy to update the schedule and have updates deployed automatically along with my app.

Thankfully we don’t have to build this functionality from scratch as there is a great Ruby gem called Whenever that allows us to set up cron jobs from within our Rails apps using Ruby code. In this blog post I’ll cover how you can schedule your background jobs in Rails using Whenever to set up your schedule, along with Sidekiq to run the actual background jobs.

A couple weeks ago I had the wonderful opportunity of teaching some basic coding to a class of Grade 5 and 6 students at a local elementary school. This was my first time doing anything like this and so preparing was difficult as I really had no idea what to expect. I had to come to the class with a fairly broad set of expectations and a flexible plan that could adapt to both the abilities and interests of the kids. I was preparing for the worst.

Thankfully all my concerns were unfounded and it ended up being much easier that I could have imagined. The kids were all excited to learn coding and they latched on to the material quickly. What was clear to me is that they loved it and they wanted more. What was also obvious is that coding is something that is currently missing from their elementary school curriculum. While I was glad to for the opportunity to share with the kids, it seemed unfortunate that they weren’t already getting taught these skills.

Coming away from this experience, not only was it obvious that the kids wanted more, but I also wanted more. It was a learning experience for me and a very rewarding one at that. If you are a developer, I would encourage you to look for opportunities in your local community where you can share your knowledge and expertise with kids.

One of the difficult parts in teaching kids how to code is figuring out exactly what to teach and how to teach it. When I was first learned how to program there were generally two programming languages that were used: Basic and Pascal. I learned both of those in my high school computer science classes and looking back I don’t think either of those options were really very good. Thankfully there has been a lot of research and development done in this area and today there are much better options.

Let’s take a look at some of the options that are available today.