hoodwink.d enhanced

Thu Nov 30

Announcement: Pecha Kucha is Dead

I can’t believe that it’s over. I didn’t even get a chance to know what it was.

Wed Nov 29

Kuler from Adobe Labs

Create new color harmonies.

Table Manners

Mon Nov 27


David H. - anyway, delayed lunch
David H. - The nutritional power of a bowl of Frosties has officially run out

Sun Nov 26

The power of static typing

294 pages on how to use Arrays.

Fri Nov 24

Extract information for a given class from RDoc

require 'rubygems' require 'rake' require 'rdoc/rdoc' module RDoc # Dives into the innards of RDoc and gives you # access to things like the docs for a given # class. class CodeInfo class << self def parse(pattern = nil) @info_for_corpus = parse_files(pattern) end def for(constant) new(constant).info end def info_for_corpus @info_for_corpus or raise RuntimeError end def files_to_parse @files_to_parse ||= Rake::FileList.new end private def parse_files(pattern) files = pattern ? Rake::FileList[pattern] : files_to_parse files << '-q' # Silence rdoc options = Options.instance options.parse(files, RDoc::GENERATORS) rdoc.send(:parse_files, options) end def rdoc TopLevel.reset rdoc = RDoc.new stats = Stats.new # We don't want any output so we'll # override the print method stats.instance_eval do def print; nil end end rdoc.instance_variable_set(:@stats, stats) rdoc end end attr_reader :info def initialize(constant) @constant = constant find end private attr_reader :constant def find parts = constant.split('::') self.class.info_for_corpus.each do |i| @info = parts.inject(i) do |result, part| (result.find_module_named(part) || result.find_class_named(part)) || break end return if info end end end end if __FILE__ == $0 RDoc::CodeInfo.parse(__FILE__) info = RDoc::CodeInfo.for('RDoc::CodeInfo') puts info.comment end % ruby code_info.rb # Dives into the innards of RDoc and gives you # access to things like the rdoc for a given # class.

Mon Nov 20

Convert a string of RDoc to HTML

require 'rdoc/markup/simple_markup' require 'rdoc/markup/simple_markup/to_html' SM::SimpleMarkup.new.convert(rdoc, SM::ToHtml.new)

Sat Nov 18

My muffin heart is breaking.

Kelly Fowler


Denver water

Fri Nov 17

Conversation about some of Bruce's Rails code at The Rails Edge conference

Marcel - That's sort of Seasideish
Bruce - Thank You

Wed Nov 15

Rails is a candy castle with a moat of undiluted vinegar.

Jamis Buck

Tue Nov 14

Avoid cluttering built in classes by using just in time convenience methods

namespace :todo do class << TODOS = IO.read('TODO') def items split("\n").grep(/^\[\s|X\]/) end def completed find_items_matching(/^\[X\]/) end def uncompleted find_items_matching(/^\[\s\]/) end def find_items_matching(regexp) items.grep(regexp).instance_eval do def display puts map do |item| "* #{item.sub(/^\[[^\]]\]\s/, '')}" end end self end end end desc 'Completed todo items' task :completed do TODOS.completed.display end desc 'Incomplete todo items' task :uncompleted do TODOS.uncompleted.display end end # % rake todo:completed # * Remote ACL tests # * ACL requesting and parsing

Mon Nov 13

Anyone want to make my day and take this further?

Avi Bryant on Ruby on Smalltalk

Thu Nov 9

Unlike the Occasional Train, CTA Merch Sales Aren’t On Fire.

Headline over at Chicagoist referring to the Blue Line fire

Wed Nov 8

Convenient way to inspect methods of an object in irb

module Kernel def m(object) ObjectMethods.new( object.public_methods(false).sort ) end class ObjectMethods < Array def inspect puts self end end end itunes = OSA.app('itunes') m(itunes).size # => 68 m(itunes).grep(/volume/) # => ["sound_volume", "sound_volume="] itunes.sound_volume = 75

Mon Nov 6

I can only hope heaven is this agile.

Marcel, interviewed at slash7

Fri Nov 3


The bow

Wed Nov 1


Avoid intense, emotional or complicated conversations.

Advice from the Illinois Rules of the Road manual for driving while on a cell phone


Hot library smut