Changes

Posted on February 23, 2014 in #life

I've been putting off writing this post for a few days but figured now is as good as any time. Last week was my last at AOL. After a year and five months my heart was no longer in the work. While I was working on iOS software it was all on the back end in regards to advertising and metrics. Obviously that is not the most glamorous portion of iOS development but I enjoyed it for some time. My biggest qualm was that AOL is simply a marketing company and not a software company.

Continue Reading →

Flirc

Posted on August 04, 2013 in #reviews

Controlling devices is one of the most important aspects of a home theater setup. After finally building my own HTPC I decided it was time to finally buy a universal remote. In short, I went with the Logitech Harmony Smart Control which is fantastic. I was able to control all my devices except for XBMC on my HTPC. Enter the Flirc. Flirc is a very inexpensive USB dongle with an IR receiver that ships with cross-platform drivers.

Continue Reading →

Setting Up and Configuring HAProxy with HTTPS on Ubuntu

Posted on July 07, 2013 in #web development

After one of my web applications received a huge spike in traffic and requests this weekend I decided it was finally time to setup a proper load balancer and add another application server into the mix. HAProxy is an open-source load balancer that is extremely fast and very efficient. According to Mark Imbriaco of 37signals, their instance is handling around 700 requests per second and using less than 5% CPU and only around 40MB of RAM on the Xen instance that it’s running on. Installing and configuring HAProxy is quite simple on a standard Debian / Ubuntu machine.

First, ensure that your sources are up to date and install the necessary requirements for HAProxy.

Continue Reading →

Uploading Files with Paperclip via a Grape API

Posted on June 09, 2013 in #rails / #software development / #web development

Grape is an awesome gem to easily create a REST API for Rack applications while Paperclip is a great gem to attach files to models. It only makes sense that one would want to use the two gems in conjunction. At first it seems like simply assigning data that was POSTed to the endpoint would be sufficient but there's a terrible 'gotcha' with Grape. Whenever Grape handles files, it converts the file...

Continue Reading →

Greetings From DigitalOcean and Unicorn!

Posted on June 02, 2013 in #rails / #software development / #web development

In an ongoing attempt to cut back costs, I’ve been looking for alternative VPS providers to switch to. I’ve been using Rackspace for about the past year and it’s no surprise that their prices are pretty high. Since DigitalOcean has been making its rounds recently I figured I’d give them a try. I decided to use my blog (this site) as a test before moving some of my larger websites and applications. DigitalOcean offers very cheap VPS but the real kicker is that they have SSDs so disk speeds are ...

Continue Reading →

Preventing Chrome on Android and Safari on iOS From Allowing Zoom

Posted on April 29, 2013 in #software development / #web development

One of the most common themes with mobile web applications is disabling zoom in the browser. Using viewport meta tags can get tricky pretty quickly when a lot are in use. Some conflict with others and can cause confusion. After searching around online it was evident that others were having trouble disabling zoome across iOS and Android, too. The following CSS will effectively disable zoom on both Safari on iOS and Chrome on Android.

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

Catching Swiftype When It Falls

Posted on April 07, 2013 in #rails / #software development / #web development

I've been a huge fan of Swiftype for a while now and have been using it since its beta days. Recently, however, it seems that the availability of its API has decreased causing the Rails gem to throw exceptions. The API will return various HTTP 500 status codes throughout the day. I have been getting multiple emails every day from Rollbar notifying me that the Swiftype gem was throwing exceptions. I can only assume that the folks over at Swiftype are deploying broken code at the most inopportune times of the day. It's gotten so bad, in fact, that I've had to add backup searching capabilities to one of my websites. While searching using a simple SQL LIKE query won't be as good as the results Swiftype gives, I can at least ensure that it's going to be up as long as my website is up. One can only hope that Swiftype will mature and become much more reliable in the future.

For those interested, I'm just catching the exceptions thrown by the Swiftype gem and then searching manually.

client = Swiftype::Easy.new
@results = client.search(ENV['SWIFTYPE_ENGINE_SLUG'], params[:q], {:per_page => '10', :page => params[:page] || 1})
@book_results = @results['book']

if (@book_results.empty? == false)
  @books = Array.new

  # Build an array of AR models for the view.
  @book_results.each do |ar|
    @books << Book.find(ar.external_id)
  end
end

rescue Exception
  # Swiftype API failed. Manually search on a book's title and its author's display name.
  query = params[:q].downcase
  @books = Book.joins("LEFT JOIN users ON books.user_id = users.id").where("lower(users.displayname) LIKE ? OR lower(books.name) LIKE ?", "%#{query}%", "%#{query}%")
end

Forms Refusing to Submit in Internet Explorer

Posted on March 30, 2013 in #software development / #web development

After launching a recent website I had a few users report that the website was "freezing" while submitting a form. The only users to report this happened to be Internet Explorer. After poking around I found some very peculiar behavior with file upload input elements. The file upload tags were actually causing the forms not to submit!

Since most browsers have their own file upload style, I wanted something more consistent. Luckily someone released a pretty straight forward file upload that looks great with Bootstrap called Pretty File. Pretty File works by hiding the underlying input element and using its own text field and button. When a file is selected the underlying input value is changed. This works fine in IE however, the form refused to submit. It was then clear that even if the file upload's value is changed, IE absolutely requires the user to click the file upload and select a file and the value cannot be changed later.

The ultimate solution in my case was to only use the Pretty File implementation if the user is accessing my website in anything but IE.

Year in Review: 2012

Posted on December 31, 2012 in #life

Today marks the last day of the year and also my 21st birthday. Simply put, this past year has been awesome. I was able to accomplish things that I never knew I would be able to do at such a young age. So many great things have changed this year and I couldn't be happier with how it all turned out. In addition to all of my accomplishments this year, 2012 has been an amazing year for my beloved Atlanta Falcons! Take a look at the timeline below to see some of my personal favorite accomplishments from this past year.

Here's to an amazing 2013!

  • JAN
  • FEB
  • MAR
  • APR
  • MAY
  • JUN
  • JUL
  • AUG
  • SEP
  • OCT
  • NOV
  • DEC

My Word - Jet Life

Posted on November 27, 2012 in #music

Easily my favorite track off of the new album Jet World Order 2 by Trademark and Young Roddy.