Skip to content

Instantly share code, notes, and snippets.

View sdball's full-sized avatar

Stephen Ball sdball

View GitHub Profile
@sdball
sdball / nil_what_are_you_doing_stahp.rb
Last active March 16, 2019 01:35
Sometimes Ruby is Weird
class NilWhatAreYouDoingStahp
attr_accessor :not_nil
def initialize
@not_nil = "I'm not nil! I'm a value!"
end
def wat
if not_nil.nil?
not_nil = "Ok, now I'm not nil."
@sdball
sdball / index.php
Created March 1, 2013 17:18
Snippets from an old PHP IP Database I wrote. My hand rolled framework code was kind of nice.
<?php
// page setup
require('/www/includes/ipdatabase/ipdb_page.php');
$javascript = '<script type="text/javascript" src="/ipdatabase/js/index.js"></script>';
$page = new IPDB_Page();
$page->title('Main');
$page->javascript($javascript);
@sdball
sdball / ezproxy_redirect.php
Created March 1, 2013 17:16
Some old PHP code I wrote to have PHP force EZProxy into being more secure.
<?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
sdball / javascript_learning_sources.md
Last active December 13, 2015 18:08
Want to learn JavaScript?
@sdball
sdball / hardcoded_swap.rb
Created January 25, 2013 15:02
Ruby fun: a one time method override.
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
'foo'
@sdball
sdball / deploy.rb
Created January 23, 2013 21:35
Example capistrano task to confirm deployment
# 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."
else
@sdball
sdball / recommended.md
Last active August 6, 2021 03:40
Recommended code reading from Ruby Parley
@sdball
sdball / sandi_metz_rules_for_developers.md
Created January 18, 2013 18:47
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
sdball / fiat_nil.rb
Last active December 10, 2015 15:59
Don't Do What Johnny Don't Does
class FiatNil
def method_missing(*args)
nil
end
end