I'm Jason, a web applications developer in the Denver, Colorado area.

  1. Jumpstart Guide to Ansible


    This guide will help you get started on using Ansible, an open-source tool you can use to automate and maintain the software and configurations of your Linux systems, as well as handle custom software deployments.

    Ansible is programmed in Python, however you do not need to know Python to use it. You may need to gain an understanding of YAML, Jinja templates, and/or read the Ansible Project Documentation.

    In this guide we use Ansible to maintain the state of your local development environment. After you are done you’ll be able to apply what you’ve learned beyond your local Linux environment.

  2. Sidekiq with Cloud66

    I had to configure a Rails application using Sidekiq as the background job processor with Cloud66 recently.

    We’re currently only using Cloud66 with our staging server. The following configuration in a Procfile in the root of our repository with the following configuration worked fine.

    worker: bundle exec sidekiq -e $RAILS_ENV -C config/sidekiq.yml -i {{UNIQUE_INT}}

  3. SSH issues with Mac OS X High Sierra

    A coworker of mine was reporting an issue with SSH after updating to Mac OS X High Sierra.

    $ ssh server-alias-hostname
    Unable to negotiate with port 22: no matching cipher found. Their offer: blowfish-cbc,aes256-cbc

    You can view a list of supported ciphers by running ssh -Q cipher.

  4. Markdown Links and 80 Character Line Length

    I’ve long been a fan of using Markdown for documentation in projects hosted on Github. In October of 2014 I decided to migrate from a Wordpress blog to Github Pages, which is powered by limited Jekyll functionality on the Github server side.

    With this migration I converted all my articles from HTML to Github Flavored Markdown (GFM), which resulted in much better support for formatting my code examples, tables, strikethrough text formatting, and emojii.

  5. Fitter Happier

    say -v fred "Fitter"
    say -v fred "happier"
    say -v fred "More productive"
    say -v fred "Comfortable"
    say -v fred "Not drinking too much"
    say -v fred "Regular exercise at the gym"
    say -v fred "three days a week"
    say -v fred "Getting on better with your associate employee contemporaries"
    say -v fred "At ease"
    say -v fred "Eating well"
    say -v fred "no more microwave dinners and saturated fats"
    say -v fred "A patient, better driver"
    say -v fred "A safer car"
    say -v fred "baby smiling in back seat"
    say -v fred "Sleeping well, no bad dreams"
    say -v fred "No paranoia"
    say -v fred "Careful to all animals, never washing spiders down the plughole"
    say -v fred "Keep in contact with old friends, enjoy a drink now and then"
    say -v fred "Will frequently check credit at moral bank, hole in wall"
    say -v fred "favours for favours"
    say -v fred "fond but not in love"
    say -v fred "Charity standing orders"
    say -v fred "on sundays ring-road supermarket"
    say -v fred "No killing moths or putting boiling water on the ants"
    say -v fred "Car wash, also on sundays"
    say -v fred "No longer afraid of the dark or midday shadows"
    say -v fred "nothing so ridiculously teenage and desperate"
    say -v fred "Nothing so childish"
    say -v fred "At a better pace"
    say -v fred "slower and more calculated"
    say -v fred "No chance of escape"
    say -v fred "Now self-employed"
    say -v fred "Concerned, but powerless"
    say -v fred "An empowered and informed member of society, pragmatism not idealism"
    say -v fred "Will not cry in public"
    say -v fred "Less chance of illness"
    say -v fred "Tires that grip in the wet, shot of baby strapped in backseat"
    say -v fred "A good memory"
    say -v fred "Still cries at a good film"
    say -v fred "Still kisses with saliva"
    say -v fred "No longer empty and frantic"
    say -v fred "Like a cat"
    say -v fred "Tied to a stick"
    say -v fred "That's driven into"
    say -v fred "Frozen winter shit, the ability to laugh at weakness"
    say -v fred "Calm"
    say -v fred "fitter"
    say -v fred "healthier"
    say -v fred "and more productive"
    say -v fred "A pig"
    say -v fred "in a cage, on antibiotics"

  6. FileMerge (also known as opendiff)

    Recently a developer colleague of mine was asking about diff tools. We let him know that he can use Homebrew to install a ported version of the ‘diff’ tool provided by GNU utils.

    An expensive alternative is Kaleidoscope app, which looks great but might be overkill for our purposes.

    The good news is that XCode provides a GUI tool called FileMerge, which is also known as opendiff from the command line. You do have to agree to the Xcode/iOS license, which requires local admin privileges, to use this tool.

  7. Running a Bitcoin Core Full Node

    There has been a lot of hype concerning crypto currencies like Bitcoin and Ethereum recently. I even had some of my own minor gains through an account I have with

    I haven’t been much into the zeitgeist of Bitcoin investment, or even the possibilities of blockchain methods used for real-world applications other than currency, until now.

    You will need a server that has at least 150 GB available, and as the size of the blockchain increases this will rise. I configured my node to use the auto-pruning feature, but it still is using 128 GB currently.

    $ du -sh .bitcoin/
    128G  .bitcoin/

  8. Configuring a New Ubuntu Server with Sudo

    Here are my notes for configuring a new Ubuntu server with a single user with sudo rights, with the ‘root’ user login disabled in the SSHd configuration.

    This guide assumes that you have just created a server from the web interface of a service like Linode or Digital Ocean, and you know the root password.

  9. Detecting if WebMock is enabled for Net::HTTP

    I ran into an issue where we were mocking HTTP responses 400+ in our Rspec tests, which resulted in our application logging an error and a stack trace. When we expect errors because we’re using WebMock to emulate an HTTP 500 response, logging the stack trace involved can be too verbose.

    Sometimes we might need the stack trace, such as when a developer is debugging code involving the handling of error responses. I discussed this with other developers they expressed that they don’t want to introduce a global configuration flag to turn the stack trace logging on or off.

    The ideal solution was to simply not log the stack trace when WebMock is being used in the ‘test’ environment.

  10. Static Hosting with Neocities

    I’ve been using a Wordpress site for my blog for years, but that has become cumbersome, especially when you have to deal with your website being exploited due to holes in one of the many plugins that your site is relying on.

    I used to focus on LAMP stack development, and so running my own cPanel/WHM server was a no brainer. I more recently migrated my tech blog, Ruby Colored Glasses, from Wordpress to Github Pages. This is nice because the site is hosted for free by Github, however that’s limited to one site per each account.

    So I’ve decided to try to find another cheap low-cost static website solution that works with Jekyll.