hoodwink.d enhanced

Fri Dec 30


Dan Flavin in Marfa

Wed Dec 28

Sneak peek at Intel’s new logo

It’s always nice to see things get simpler.

The Hot Dog King

Pedantry: it’s just how things work in the Python world.

Steve Yegge

I will assert: we are right, they are wrong.

Ian Bicking


11:18 < technoweenie> a man could get old waiting for him to do something

Tue Dec 27


Liberty Bridge at Falls Park, Greenville, SC

Mon Dec 26

If you really want to increase your Ruby skills, I recommend that you spend a good part of the day listening to John Schmid sing a few Amish folk songs.

Jim Weirich

Sun Dec 25

Real Lessons for Rails Deployment

James Duncan Davidson, of Ant and Tomcat fame, shares what he’s learned from deploying Rails applications. We liked it so much we posted it twice!

Sat Dec 24

Tip Don’t call your layout picking method pick_layout

If you are using a method to pick which layout to use for a controller, don’t do layout :pick_layout as pick_layout is reserved by Rails’ layout code. choose_layout is fine.

Simple is not easy.

Eric Evans


The manor bed

Someone who has decided to write a novel, for example, will suddenly find that the house needs cleaning.

Paul Graham on procrastination

Real Lessons for Rails Deployment

James Duncan Davidson’s 10 Rails deployment lessons.

Thu Dec 22


20:21 <@tehdely> omfgasdfg
20:21 <@tehdely> oracle's validation when you try to sign up for OTN...
20:21 <@tehdely> it returns only one validation error at a time
20:21 <@tehdely> and the form comes after a POST
20:21 <@tehdely> so when you click 'back', Safari nags you about it like 2 times in a row
20:21 <@tehdely> and then you hit submit
20:21 <@tehdely> and whoop, now the second validation error shows up
20:22 <@tehdely> click back , hit ok twice, correct form, hit submit
20:22 <@tehdely> whoops, the change you made the first time disappeared
20:22 <@tehdely> ENTERPRISE AGILE

Wed Dec 21

Typing Quadrant

Read this before talking about typing—-especially dynamic typing. ’k thx.
I’ve read books where just a single paragraph jiggled my mind in just the right way. Easily worth hundreds of dollars.



21:11 <@Ulysses> "the puppet sits in the reticulum and interacts with other objects"
21:11 <@Ulysses> is this documentation, or pornography?
The age-old battle is not “Geeks vs Marketers”.

The age-old battle is “Geeks vs Markets”.

Hugh MacLeod


23:44 < Toxygene> here's a good PHP oddity for you
23:44 < Toxygene> 0.0 == "asdf"
23:44 < Toxygene> true

Tue Dec 20


21:39 <@Ulysses> projectionist is calling you...
21:39 <@Ulysses> it says "update me, update me!"

Mon Dec 19


Relativity in Lego

Sun Dec 18


14:56 < htonl> lays k.c. masterpiece bbq chips are laced with heroin

Sat Dec 17

You are what you can explain.

Chad in MJWTI


Sampatricel, the projectionist

Fri Dec 16

Despite all the mess and the broken glass I was impressed.

Andrew Bird in The Naming of Things

private message

09:30 <sam-> i posted the secret santa thing on projectionist
09:30 <noradio> i GNU/know, i GNU/saw
09:30 <sam-> but have you GNU/hurd?

Ruby Secret Santa

class Array def shuffle! replace sort_by { rand } end end class SecretSanta include Enumerable def initialize(people) @from, @to = people.dup.shuffle!, people.dup assign! end def assign! @to.shuffle! until no_two_indices_are_alike end def each(&block) @from.zip(@to).each &block end private def no_two_indices_are_alike all? { |a, b| a != b } end end s = SecretSanta.new(Person.find(:all)) # Print Secret Santa pairings pp Hash[*s.to_a.flatten.map {|person| person.name}]

Thu Dec 15

That is so not true.

Andy Hunt on the idea that all programming languages are alike


Sorry, Orlando

Wed Dec 14


9:14 PM < technoweenie> hey wasnt there supposed to be a video of that snakes and rubies thing
9:15 PM < nzkoz> it was organised by the python guys right? there are probably 3 competing videos
When the hardest problem is solved, something else becomes the hardest problem.

Kent Beck in Smalltalk Best Practice Patterns

Change a constant for the duration of a block

class Module def changing_constant(constant, value) const_set(constant, returning(remove_const(constant)) do const_set(constant, value) yield remove_const(constant) end) end end


16:41 < bitsweat> deploying on windows would be a great Friday
16:42 < enoch-> except it takes all week
Ruby gave a thousand thoughts a direction.


Tue Dec 13


3:09 PM < minam> so, here I am, all excited, and I tell my wife "hey, we released Rails 1.0!"
3:09 PM < minam> says she, "you mean it hasn't been 1.0 before?"
3:10 PM < minam> way to take the wind out of my sails


This ‘users are idiots, and are confused by functionality’ mentality of Gnome is a disease. If you think your users are idiots, only idiots will use it.

Linus Torvalds

Mon Dec 12


Ramesh the driver from MJWTI

Sun Dec 11

Reorder interpolation in format strings

"%2$s is first, %1$s is second" % ['first', 'second'] => "second is first, first is second"
They say a new blog is now created every 7 seconds in 2005, so for the next 5 or 6 seconds just relax and take in this new hotness.

Patrick, on his new Highly Def blog


Advice from the Chicago Reader

Sat Dec 10


11:38 <@noradio> so the new aquarium in Atlanta sports a real life, honest to god whale shark
11:41 <@Ulysses> looks like a whale holding a briefcase to me
11:42 <@chad> Ulysses: didn't you know that's how you can spot a whale shark?
11:42 <@chad> by its briefcase

Whale sharks at the new Georgia Aquarium


11:09 < chad> i just got a 23" cinema display monitor yesterday from my employers
11:09 < chad> so i am trying to minimize the pain of going back to the laptop :)
11:10 < nextangle> Try the pain of going from 30" to laptop ;)
11:10 < chad> nextangle: my heart bleeds for you

Fri Dec 9


Helical Worm Gear Pair (Endless Screw)

Web 2.0 means getting bought by Yahoo.


Thu Dec 8

In terms of design, Windows is to the Mac as Python frameworks are to Ruby on Rails.

Doug from Zifus

There is no real road map and there won’t be. Just people solving their problems and extracting framework components from the solutions.


Wed Dec 7

Every time we start anew, I’m terrified of being crap.

Jonathan Ive

Tue Dec 6


10:42 PM < htonl> posts about walmart, you're being assimilated rapidly
10:43 PM < nextangle> dude, I bought a car that had a gas guzzler tax on it.. I am assimilated :)
10:45 PM < htonl> before you know it you'll be 300lbs and mcdonald's customer of the year
10:47 PM < nextangle> I HAVE A BOTTLE OF EVIAN ON MY DESK! So I'll forever be young and handsome.
10:48 PM < htonl> i have a bottle of motrin on my desk

Tip Enumerable#partition

“partition” is an infrequently-used but handy method from Ruby’s Enumerable module. If you want to divide an Enumerable thing into two groups based on a set of criteria:

  ppl = %w(Sam Patrick Marcel Chad)
  short_names, long_names = ppl.partition{|p| 
    p.length <= 4

  1. [[“Sam”, “Chad”], [“Patrick”, “Marcel”]]

Those that match criteria in the block are filtered into the first element of the result, while those that don’t match are filtered into the second.

A Sisyphusian Tape Dispenser

Sat Dec 3



Fri Dec 2



Thu Dec 1

Tip Ensure an option hash value is a collection, but flatten it (without flatten)

Occasionally one sees:

  def foo(options = {})
    [options[:bar]].flatten.map do |arg|

  1. end
If options[:bar] is a single value you want it to be treated like a collection. If it’s a collection then you want to flatten it so the surrounding [] doesn’t create a collection within a collection.

Spat rather than flatten:

  def foo(options = {})
    [*options[:bar]].map do |arg|

  1. end

The example assumes that the option is always set (either by a default or otherwise).

(Thank you to Ryan Davis for making me realize that there was something wrong with my initial post)

You know what? I’m pretty happy working from a detailed functional spec.

Obie Fernandez

Elegance is not optional.

Richard O’Keefe