Beware The Bad Crimping Job

After reorganizing my server room, I was getting really poor connectivity. Connections were dropping, dealing with 500+ms pings, etc.  Thought it might’ve been too many data cables running together (HDMI and data were running together, maybe interference between the two?). That being said, they’re all twisted-pair, which is supposed to deal with that. Determined very quickly that the cable density wasn’t the issue.

Turns out the culprit was a bad crimping job on the cable line.
The cable in question:
2013-09-29 10.23.44
Pulled the end off with two fingers:

2013-09-29 10.24.15

You can’t see it in there, but the connection between the shield and the connector was only about 1/5 connected. Replaced the bad section, and problem solved!

Paying It Forward

As an avid gamer, I often find myself perusing various subreddits and watching streams in my spare time. Among those is the Day[9] Daily, a regularly-scheduled livestream by Sean “Day[9]” Plott. Now if you’re not in tune with the Starcraft scene in the slightest, Day[9] means nothing to you. If you are, however, The Day[9] Daily is one of the most-watched live streams about being a better gamer, for the love of the game. Each show, Sean takes questions and answers them live. He’s able to do this with the infamous “Question Grabber”.

The Question Grabber, was written by Marky Ochoa, who at the time was just a loyal Day[9] fanboy, but now works as part of Day9TV. And this post is about Marky.

In August of 2012, Marky posted on the Starcraft subreddit, announcing The Question Grabber was available for public use, but also asking for help. He was having trouble paying his hosting bills, and was asking for help keeping the site going. As a fellow programmer, I pulled some of the profits out of my web hosting and sent it his way. Marky was a sir, replying back to me shortly after the donation. (Unfortunately, his server crashed and took the whole page with it — something that has happened to me before; it’s painful!)

Just minutes ago, I was shocked to find an email from Marky in my inbox. Attached to it was the donation I sent to him, and a thank-you message for the donation.

I can’t accept the money, though.

I gave him that money knowing full-well that I wouldn’t get it back. A fellow programmer and supporter of a common cause was in need, and I was happy to help. I’m also happy to know that he’s no longer in need of the extra cash. Instead of holding onto what he sent me, it makes more sense to give it to somebody else in need — something that falls under a common cause that we support.

Cue: Child’s Play Charity.

So Marky, thanks for not forgetting about the people who helped you out before. Instead of holding onto the cash though, there’s some sick kids out there that need this money more than I do. You rock, man!

marky[sir-level] => 9000


Resources For Rails Development in Vim

While most programming languages seem to take steps toward big, full-featured graphical IDEs, Rails development seems to have gone the reverse: back to the command line, command line editors, and minimalist interfaces. Today, I’d like to share with you several resources that I’ve used to streamline my development process.

TextMate (€39) — Considered the definitive text editor for OS X, TextMate is a worthwhile purchase for any developer using any language. It’s extensible, powerful, and, Rails-specifically, allows for easy navigation between your MVC layers with easy hotkeys. If you code on OS X, you owe it to yourself to buy this.

The Playbook (free/$15/$50) — If you’re looking for tips on how to start a web design firm, set up your development environment, do proper project management, and more, consider picking up a copy of The Playbook, an eBook written by the geniuses at ThoughtBot. ThoughtBot is known for several of their Ruby gems that have been released into the public domain, including high_voltage, clearance, suspenders, and more. They are also known for some of their hugely popular applications, including Airbrake and Trajectory. They offer a few free snippets, a single user license, and a group license.

Rails.vim (free) — While Vim is an amazing editor on its own, it thankfully allows for plugins to be written to extend the functionality. Written by Tim Pope (Twitter/GitHub), Rails.vim is an amazing plugin that adds a whole host of commands to the editor, allowing for more fluid Rails development. Best of all, it’s free, open source, and readily available on our favourite source control repository, GitHub.

Vim for Rails Developers ($15/$50) — Vim is considered one of the most powerful text editors out there, and it’s available on virtually every platform. That being said, it’s a dauntingly steep learning curve (although I wrote a guide on getting started with it), and every bit of help you can get is worth it. This 34 minute video gives you the rundown of using rails.vim along with your Vim install. As with The Playbook, a single user and group license is available.

RailsCasts (free/$9 per mo) — Probably the go-to for most Rails podcasts, Ryan Bates (Twitter/GitHub) has been churning out 2 podcasts about Ruby on Rails for years now. He explains topics clearly, pushes the limits of what gems can do, and always offers comparisons between similar gems. Most of his content is free, but Pro users ($9/month) get access to Pro episodes which cover more content and new gems.

First Tinkerings with Arduino

A couple months ago, I finally got around to picking up an Arduino and an ethernet shield. These little development boards are a nice way of tinkering around with ATMega chips and to try your hand at writing lightweight C++ code for embedded systems.

I’ve always wanted to try programming on an embedded system; being able to run a small (really small!) computer off of a small pack of batteries is pretty cool! I also wanted to use ATMega chips along with a whole slew of sensors as part of my home automation project as a means to collect data from various rooms in the house without having to run more than a single network cable to a room.

Because I’m a cheap son-of-a-bitch, I bought not from a reputable retailer, but from your typical Chinese knockoff website with free shipping. On one hand, I’m really happy with my purchase, since the Arduino works as expected, and it cost me quite a bit less than SparkFun. On the other hand, I accidentally purchased an ethernet shield that was incompatible with the standard Ethernet libraries, and thus had essentially purchased a small, lightweight brick. No worry; I simply ordered one that worked with the library.

The goal with these Arduinos is to set up a small HTTP server on each one and connect a bunch of sensors, such as temperature, humidity, carbon monoxide, ambient light, and possibly others. A central server will poll the Arduinos for data at set periods of time, and then that data will be collected, aggregated, and analysed for the user to view. Ideally, this would eventually be used to tie into X10 (or similar) systems to help balance the temperature in rooms, turn off lights when people aren’t in rooms, or warn of deadly gases.

Now, if I ever get my ass in gear on this project, I might actually have something to show for it!

Rails 3 Generators: Adding Migration Templates

I’ve been working on some really cool projects using Ruby on Rails recently, but I found myself duplicating code across them. Obviously, that doesn’t make sense to me, even when the code bases are different, so I decided to start extracting some of the logic into Ruby’s awesome gem format. Rails 3 has awesome gem handling, if I’ve found uses for some of these pieces of functionality across multiple projects, then others may as well.

The first gem I’m working on stems from this post from a couple years ago where I demonstrated how to do dynamically-named routes using semi-static pages. This approach was different than ThoughtBot’s high_voltage gem because it stored the page content in the database rather than as files in the database deployment. I have an issue with that implementation because I’m a firm believer that you shouldn’t have to deploy a new revision of your software just to update a bit of content; it should be controllable from the user interface as part of our regular CRUD routine.

My first struggle with the creation of the gem was writing a template for the migration. I had some trouble with these two errors coming up:

  • 1
    undefined method `migration_template' for #<Semisonic::InstallGenerator:0x000000040899c8> (NoMethodError)
  • 1
    `next_migration_number': NotImplementedError (NotImplementedError)

Maybe my Google skills have been slipping, but I had trouble finding a ‘fix’ for these. So, here’s how to fix the above errors if you ever get them:

  • If you get the first error (undefined method ‘migration_template’), you’re missing an include in your class. Add “include Rails::Generators::Migration” on the first line of your generator class, and you’re good to go!
  • If you get the second error (‘next_migration_number’ not implemented), you’ll need to implement the method ‘next_migration_number’. The following code snippet should work just fine for it:
    def self.next_migration_number(path)
      unless @prev_migration_nr
        @prev_migration_nr ="%Y%m%d%H%M%S").to_i
        @prev_migration_nr += 1

Hopefully those two fixes help somebody else out.

Updates on Life, Photography, and Such

Oh dear, Brian. It’s been forever since you’ve posted. Forever indeed. How embarrassing. Gone are the twice-a-week updates, apparently.

I have reasons for this, however, I assure you. I haven’t just gotten lazy. Okay, maybe I have. But not THAT lazy.

Let’s start with the photography updates first, since that’s what most of you come here for. I’ve been busy Busy BUSY with my photography. In particular, I picked up the latest Rebel in the Canon line, the Rebel T3i (thank you, Air Miles!). It’s a great body at a solid price point, so if you don’t have the 8600 Air Miles kickin’ around, it’s still a good price.

I also picked up…drum roll, please…the Sigma 70-200 f/2.8 OS. This $1,600 monster is such a dream to shoot with. It’s fast, crisp and is $1,200 cheaper than its Canon counterpart. The bokeh is like butter on this lens, and this particular style has been commonly labeled one of the “essential lenses” in any serious photographer’s kit.

So, here’s some galleries from the new body and lens (well, the MODS album is the 70-200 f/2.8; the other ones are on the 18-55 IS). You’ll notice these are now hosted on Flickr and not locally. I’m still undecided which one I’m going to stick with, but I’m sure Flickr will give me some better publicity. I have some shots here from a MODS game my team played in (I was out with a sore ankle), a party I went to, and a swing dance workshop.

In other news, my work term at Ceridian finished in April, but I was hired on over the summer as a part-time contractor, working when I’m not in class. It’s nice to have money again!

Finally, I have a number of projects on the go. First is a Minecraft server (yes, I caved and bought it. Yes, I’m addicted), which is play-by-donation. If you’re interested, drop me a line. I’m also working on a character Generator for Call of Cthulhu with a few friends (check out the Github here). Finally, I’m working on a heartbeat monitor for Minecraft servers to keep in-line with my current addiction. That project will be closed source, but many of my other ones will be open from now on.

On a closing note, I bought the domain, which will be used as a professional portfolio. The blog will remain here, but my main content will be on the former site. This domain name I feel simply isn’t professional, and it’s time to develop that aspect of things.

A Shameless Plug For I, Gamer

Over the past 6-8 months, I’ve been working with some friends on a podcast. In particular, the I, Gamer podcast. If you’re a gamer in any sense of the word (be it card, board, consoles, role playing, or computer games) or just like listening to humorous banter, I would highly recommend taking a look and giving it a listen. We’re improving every time, and our content is getting pretty good.

While Tyler, our main host, was on vacation two weeks ago, I got the opportunity to sit in the host’s chair and run the show with a guest. We talk about Munchkin, the Nintendo 3DS, the Steam digital distribution system, and console-to-PC ports which just don’t turn out as well as we’d like. You can check out this specific episode here.

Check out the podcast at, or (better yet) grab the feed on iTunes. Hope you enjoy!

My Commitment To The Web Design World :: A One-Month Challenge

After reading an article on Smashing Magazine (link to the article is here) that talked about the state of the web design world right now and where it’s progressed, it really got me thinking. The article mentions that the number of experts in the field has not grown proportionately to the number of developers, but the number of inexperienced people giving advice (often wrong!) has grown exponentially. There isn’t the discussion there used to be, and the sharing of knowledge seems to be lacking.

Thus, I have issued myself a one-month challenge:

The Challenge

Contribute to the web design world at least once per day for a whole month.

The Rules:

  • I need to perform 30 contributions over 30 days, not necessarily 1 per day (I have a life, or at least I like to think that I do)
  • Contributions can be:
    • writing articles on my blog
    • offering small tidbits of code that I believe would be of some use to others
    • provide meaningful comments on web design articles
    • tweeting about other well-written things that better the community
    • answer questions on sites such as StackOverflow, Quora, etc
    • review of a number of similar products

It Starts Today

My contribution today comes in the form of this blog post, and is a request from every web designer out there who reads this.

If you read the article and agree with what it says, take up your own 30-day challenge. Tweet this blog post, write about it in your blog and link me for a pingback, write me a comment, do whatever you can to get the word out. The evolution of the world’s web design community begins with every single regular developer striving to offer something to the rest of the community. I hope this blog and the above article will inspire even one or two people to do the same as I am.