Nobody Listens Anyway

Life is an optimization issue

Heroku Database Limits

I've been using Heroku for years and it is a great service with great support. Our company, AtomicJolt uses it for all new projects since we an quickly bring up a new site on a free account and show it to our customers.

One problem we frequently run into is the database row limit when using the development plan. Once you hit 10,000 rows your database write permissions are turned off and you will start to see this error:

PG::Error: ERROR: permission denied for relation [table name here]

At that point you have a couple of options:

  1. Upgrade your database to a paid plan (which can get expensive fast).
  2. Reduce your rows to under 10k by deleting records. Then email [email protected] and as them to give you back permissions. They are really nice about it and fast to respond.
  3. Try out a different host. It's a bit more work but we're also loving Digital Ocean. They support Docker which makes deployment really simple.

Using The AvantLink API To Streamline Your Affiliate Efforts

Justin Ball

Lamborghini

It Would Be Really Cool If...

Open All The Things!

Open All The Things

  • Open Source
  • APIs
  • Open Content

Open Source

Canvas LTI screenshot

  • Moved from installs to services
  • Developers read the code. Create better integrations
  • Result is a healthy community of applications

Open Content

  • Kahn Academy
  • MIT Open Courseware
  • Creative Commons

Users win with cool remixes

Organizations (and professors) win with brand recognition

APIs

Symbiotic Relationship

Developers imagine new features for your platform.

Platform wins new functionality and profits.

Developer wins large audience and profits.

<Begging>

Please implement OAuth

Everyone else is doing it

and standards make things easy

</Begging>

Cool Story Bro

The AvantLink API

AvantLink API documentation screenshot

...

Crossed 4000 miles for the year tonight

Tonight riding with the Logan Race Club up Blacksmith Fork Canyon I crossed 4000 miles so far for the year. Thanks to Shawn Collins and Affiliate Summit that's $4000 towards breast cancer research.

I love to ride, but each time I ride there's the added motivation that every mile is another dollar towards a cure.

We are amazing. Riding the MS150

When I was a kid I saved up and purchased a Specialized Rockhopper. For a 14 year old the $450 spent was all the money in the world. It bought Shimano Exage components and a rigid fork and frame. This was the early days of mainstream mountain biking. I immediately became a fan of Specialized sponsored Ned Overend. He was awesome then and none of the awesome has worn off.Everytime I find myself staring at another cyclists butt in a paceline I remember an article he wrote. In particular he stated that a really fit human body can output about 1/4 horsepower for a sustained period of time. I think about that when I ride.

Yesterday I rode 105 miles in the MS150. I finished it in 4 hours and 36 minutes which means that my average speed was 22.7mph. ...

Biking and Raising Money

I woke up at 5:51 this morning and rode hundred miles. I didn't mean to. I stayed up way to late. I didn't eat right. I'm filled with excuses.

Not meaning to ride sounds odd and it is. The act of riding is intentional and the number of miles ridden can't be an accident. Riding is a deliberate act requiring the unending rotation of one's legs.

It can hurt.

My intention was to ride 65 or 70 miles. My preparation matched that intention and my experience reflected my preparation. I ended up riding with another cyclist, Tony, who I have a great deal of respect for and who is much stronger than I am. He intended on putting in 100 miles. I can't resist miles on a bike and so I tagged along.

After riding around the Wellsville mountains and up through Sardine Canyon we made our way up Blacksmith Fork Canyon. It's a beautiful and very ...

Secure ElasticSearch behind Nginx using Docker on Digital Ocean

I've been a big fan of Elastic Search for a very long time. It's a great piece of software that can be used as an object database as well as a search index. I realize that's not the intention of the software but it works so I'm happy. Elastic Search doesn't have security built in so if you want to lock down your index (which is a good idea) then you'll need to run it behind a proxy. I briefly considered writing something in Go. There's a node.js proxy for Elastic Search but it hasn't been maintained in quite some time.

I want fewer moving pieces. Nginx provides basic authentication. I'm happy with that.

Digital Ocean is a new(ish) hosting company. They run on SSDs. They are pretty cheap and you can have a server running Docker in 55 seconds. I'm happy with that.

Mix all the above and you get a nice bit of software that you can be happy with after you figure out the mixing part. It goes something like this:

Start

Setup an account on Digital Ocean and laun...

I put on a little fat. It's kinda sexy

Salsa Beargrease

Salsa Beargrease

The Salsa Beargrease is what happens when a Ferrari and an Abrams Tank have a one night stand. The bastard child of the cycling industry, fat bikes are finding their place in the mainstream of mountain biking. While most sales guys will tell you these odd balls with ginormous tires find purpose in gliding over snow or floating over sand I disagree. These monstrosities have one purpose - to make grown men giggle like 3 year olds on a merry go round.

I've lusted over various instantiations of the fat bike for a few years, but each time I've overcome temptation. Each time I've walked away a less debt ridden man. Today satan led me right down that path we love to trod and I gave in. Of course, it didn't help that Wayne at Joyride bikes gave me a killer deal. I dunno no, maybe Wayne is satan. If he is, he's a really nice evil guy.

The River Trail in Logan Canyon is a gentle introduction to mountain biking no matter what you ride. It serves as ground zero for all my cyclocross training. On my very light and very nimble Bianchi Cavaria the ground demands constant attention or your face will get the chance to decorate one of the log pole pines that line the trail. I love the experience but it’s like a carefully choreographed ballet on two wheels as you tip toe...

Ember Conf 2014 Summary and Resources

This is a mainly a list of links to notes that others took and a few of my own notes from Ember Conf.

Some Great Write Ups:

Keynote by Yehuda Katz and Tom Dale

Yehuda Katz and Tom Dale keynote

Slides from the EmberConf keynote

Notes from Allison Sheren

  • "Having the right thing be default is not a small tweak. It's the difference between being productive and not being productive." -- Yehuda Katz (@wycats)
  • "The fact is that the flexibiltiy we think...

Ember Conf 2014 Wrap Up

Ember.js' strength as a framework is second only to its power as a community. Over the past two days at Ember Conf I've had a chance to interact with some of the top minds in the Javascript world who are shaping the future of the web. Brian Cardarella did an excellent job summarizing the mood of the conference - "Ember.js picks up where Rails left off." Years ago I remember attending my very first Mountain West Ruby conference and leaving with a similar impression. That same year we attended Rails Conf 2007 in Portland and via a serendipitious conversation with David Heinemeier Hansson I came to understand the counter-culture, rockstar, ninja facade was a carefully engineered marketing play by 37 Signals. That effort worked out very well for them. The press asked for rebels and DHH and company happily complied. I still have the image of DHH's leather jacket embroidered with a dragon emblazed on my memory. Rails was very much 37 Signals and their energy and popularity raised an army of brilliant contributors w...

ActiveRecord has_many through multiple models

More than a few times now I've run into a situation where I really need to be able to relate one object to another through multiple tables - basically use 'has_many' twice.

Here's an example set of objects where a user can have many products but to get to the products you have to first go through associations and then through companies. 'user.companies' is straight forward ActiveRecord but 'user.companies.products' won't give you what you need.

class User < ActiveRecord::Base
  has_many :associations
  has_many :companies, :through => :associations
end

class Association < ActiveRecord::Base
  belongs_to :user
  belongs_to :company
end

class Company < ActiveRecord::Base
  has_many :associations
  has_many :users, :through => :associations
  has_many :products
end

class Product < ActiveRecord::Base
  belongs_to :company
end

What I really want to do is setup an efficient query that bypasses the companies table. The associations table and the products table both have a 'compan...