Skip to content

Instantly share code, notes, and snippets.


Stephen Ball sdball

View GitHub Profile
sdball / nil_what_are_you_doing_stahp.rb
Last active Mar 16, 2019
Sometimes Ruby is Weird
View nil_what_are_you_doing_stahp.rb
class NilWhatAreYouDoingStahp
attr_accessor :not_nil
def initialize
@not_nil = "I'm not nil! I'm a value!"
def wat
if not_nil.nil?
not_nil = "Ok, now I'm not nil."
sdball / index.php
Created Mar 1, 2013
Snippets from an old PHP IP Database I wrote. My hand rolled framework code was kind of nice.
View index.php
// page setup
$javascript = '<script type="text/javascript" src="/ipdatabase/js/index.js"></script>';
$page = new IPDB_Page();
sdball / ezproxy_redirect.php
Created Mar 1, 2013
Some old PHP code I wrote to have PHP force EZProxy into being more secure.
View ezproxy_redirect.php
* ezproxy_redirect
* EZProxy requires that the username and password be passed via GET.
* This is just about as insecure as possible.
* So, we trick ezproxy into security by opening a socket connection
* to the server; acting as a browser to initiate the connection; then
* writing out its response to the actual browser.
sdball /
Last active Dec 13, 2015
Want to learn JavaScript?
sdball / hardcoded_swap.rb
Created Jan 25, 2013
Ruby fun: a one time method override.
View hardcoded_swap.rb
require 'minitest/spec'
require 'minitest/autorun'
class String
def one_time_override(method, &override)
self.instance_eval do
def to_s
self.instance_eval do
def to_s
sdball / deploy.rb
Created Jan 23, 2013
Example capistrano task to confirm deployment
View deploy.rb
# drop this task in the environment(s) you want to confirm deployment for
before :deploy, "deploy:confirm"
namespace :deploy do
desc "Should we really deploy?"
task :confirm do
if Capistrano::CLI.ui.ask("Are you sure?") == "yes"
puts "You got it buddy. Imma deploy now."
sdball /
Created Jan 18, 2013
Rules for good development from Sandi Metz

Sandi Metz’ rules for developers

  1. Your class can be no longer than a hundred lines of code.
  2. Your methods can be no longer than five lines of code
  3. You can pass no more than four parameters and you can't just make it one big hash.
  4. In your controller, you can only instantiate one object, to do whatever it is that needs to be done.
  5. Your view can only know about one instance variable.
  6. Your Rails view should only send messages to that object i.e., no Demeter violations.[ "thunder dome principal". Translated: one model in, one model out! ]
  7. Rules are meant to be broken if by breaking them you produce better code. [ ...where "better code" is validated by explaining why you want to break the rule to someone else. ]
sdball / fiat_nil.rb
Last active Dec 10, 2015
Don't Do What Johnny Don't Does
View fiat_nil.rb
class FiatNil
def method_missing(*args)