Skip to content

Instantly share code, notes, and snippets.

@ryansmith3136
ryansmith3136 / pq-array.go
Created January 4, 2013 03:41
Simple postgres array parsing in Go.
package main
import (
"database/sql"
"fmt"
_ "github.com/bmizerany/pq"
"strconv"
"strings"
)
@ryansmith3136
ryansmith3136 / l2met-client.go
Created January 16, 2013 01:46
l2met Go client
package main
import (
"encoding/json"
"fmt"
"net/http"
"strconv"
"sync"
"time"
"io/ioutil"
@ryansmith3136
ryansmith3136 / agg.sql
Created January 23, 2013 05:19
Postgres array concatenation aggregate function.
CREATE AGGREGATE array_accum (anyarray)
(
sfunc = array_cat,
stype = anyarray,
initcond = '{}'
);
@ryansmith3136
ryansmith3136 / komrade-api.md
Last active December 11, 2015 18:28
Komrade's HTTP API

Komrade

Komrade is a message queue for your workers. Komrade will help you manage background jobs for web applications.

HTTP based queueing service.

  • PUT Job
  • POST Job's Heartbeat
  • PUT Job Failure
  • GET Jobs
@ryansmith3136
ryansmith3136 / hack-reactor.md
Last active November 24, 2022 07:01
Hack Reactor Talk

Tales From a Heroku User

Here are some things I have learned along the way.

Last Updated: 2013-02-08

Original Audience: Hack Reactor

About

@ryansmith3136
ryansmith3136 / predictable-failure.md
Last active December 14, 2015 06:39
Predictable Failure - Waza 2013

Predictable Failure

Building systems that fail in predictable ways promote safety and sanity.

Original Audience: Heroku Waza 2013

About

@ryansmith3136
ryansmith3136 / timer.rb
Last active December 15, 2015 00:19
Time rack requests and print heroku request id
class RackTimer
def initialize(app)
@app = app
end
def call(env)
start_request = Time.now
status, headers, body = @app.call(env)
elapsed = (Time.now - start_request) * 1000
$stdout.puts("request-id=#{env['HTTP_HEROKU_REQUEST_ID']} measure.rack-request=#{elapsed.round}ms")
@ryansmith3136
ryansmith3136 / log.rb
Last active December 15, 2015 23:49
A simple ruby logger that emits l2met conventional data
def log(data)
result = nil
if data.key?(:measure)
name = data.delete(:measure).insert(0, ENV["APP_NAME"] + ".")
end
if block_given?
start = Time.now
result = yield
elapsed = (Time.now.to_f - start.to_f) * 1000
data.merge!("measure.#{name}" => elapsed.round)
@ryansmith3136
ryansmith3136 / fernet-lite.rb
Last active December 16, 2015 00:39
fernet-lite
#encoding UTF-8
require 'openssl'
require 'base64'
module FernetLite
MAX_CLOCK_SKEW = 60
VERSION = 0x80
def self.split_key(k)
dec = Base64.urlsafe_decode64(k)
@ryansmith3136
ryansmith3136 / render.rb
Created April 30, 2013 23:47
E.g. Rendering a rails view outside of the controller.
def render_html
dir = Rails.root.join("app", "views", "users")
view = ActionView::Base.new(dir, :user => @user)
view.extend(ApplicationHelper)
view.render(file: 'show', layout: '../layouts/application.html.erb')
end