Aidan Kelly on Truth
Published November 27, 2009
Knowing that all truths are meerly metaphors is perhaps the greatest advantage you can have at this point in history. Thinking that you know the "Whole Truth" keeps you from learning anything more; hence you stagnate; hence you die. But knowing that every thruth is merely a metaphor, merely a tool, leaves you free to learn and grow, by setting aside old metaphors as you learn or evolve better ones.
Aidan Kelly, quoted in Margot Adler's Drawing Down the Moon
Bushwick Book Club in The New Yorker
Published November 26, 2009
There's a nice Bushwick Book Club mention in the New Yorker. It's coming up Tuesday December 1st at Goodbye Blue Monday.
Here's what the New Yorker said:
Books inspire many things: movies, plays, religions, and even political platforms. Less frequently, they inspire songs (Kate Bush's "Wuthering Heights" Jefferson Airplane's "White Rabbit"). For the past year, the Bushwick Book Club, which meets monthly, has addressed that deficiency by choosing a bill of songwriters to compose songs prompted by a chosen book, ranging from "The Unbearable Lightness of Being" to "The Origin of Species". In celebration of its one-year anniversary, the Book Club offers a best-of performance highlighting the year's most inspired tunes. Songwriters include Dan Costello, Dibson T. Hoffweiler, Phoebe Kreutz, Ben Krieger, Corn Mo, and the club's founder, Susan Hwang. (Goodbye Blue Monday, 1087 Broadway, Brooklyn. 718-453-6343. Dec. 1 at 8.)
Sierpinski's Carpet Animation
Published November 19, 2009
A few weeks ago I wrote a little script (code below the fold) to generate the frames of the following animation. It's an animation of different iterations of Sierpinski's Carpet.
To generate the carpet, take a square. Divide it into nine squares (3x3) and remove the center one. Then, for each of the remaining 8 squares, repeat ad infinitum.
If you get bored doing it an infinite number of times, take a break and eat Sierpinski's Cookie.
The Code - SierpinskisCarpenter.py
Sorry for the crappy box this is in. Copy and paste for reading.
#!/usr/bin/python
#
# SierpinskisCarpenter.py
#
# Author: Dibson T Hoffweiler
# WWW: http://www.dibson.net/
#
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# Version 2, December 2004
#
# Everyone is permitted to copy and distribute verbatim or modified
# copies of this license document, and changing it is allowed as long
# as the name is changed.
#
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
# 0. You just DO WHAT THE FUCK YOU WANT TO.
#
import Image
class SierpinskisCarpenter:
def __init__(self):
""" Prepare the Carpenter """
self.color = (0, 0, 255)
def getCounter(self):
""" Return current counter value, increment it. """
c = self.counter
self.counter += 1
return c
def getFrameFilename(self):
""" Return filename for next frame. """
return "carpet-frame-%02d-%06d.gif" % (self.itr_start, self.getCounter())
def getCarpetImage(self, itr, size, init=True):
""" Return an image object of Sierpinski's Carpet
itr - int - how many iterations deep to go
size - int - width of carpet in pixels
init - bool - if True, clear counters - must set False when recursing! (default True)
"""
if (init):
# Prepare to lay the carpet out
self.counter = 0
if (0 == itr):
# No need to iterate, return the part
part = Image.new("RGB", (size, size), self.color)
return part
else:
# Get smaller carpet, and paste it in 8 times
third = size / 3
partSmall = self.getCarpetImage(itr - 1, third, False)
im = Image.new("RGB", (size, size), (255, 255, 255))
# top left
tl_start = (0, 0)
im.paste(partSmall, tl_start)
# top center
tc_start = (third, 0)
im.paste(partSmall, tc_start)
# top right
tr_start = (2 * third, 0)
im.paste(partSmall, tr_start)
# middle right
mr_start = (2 * third, third)
im.paste(partSmall, mr_start)
# bottom right
br_start = (2 * third, 2 * third)
im.paste(partSmall, br_start)
# bottom center
bc_start = (third, 2 * third)
im.paste(partSmall, bc_start)
# bottom left
bl_start = (0, 2 * third)
im.paste(partSmall, bl_start)
# middle left
ml_start = (0, third)
im.paste(partSmall, ml_start)
return im
def animateCarpet(self, itr, size, start=None):
""" A recursive function to generate an animation of drawing Sierpinski's Carpet.
- itr - int - how many iterations to do
- size - int - image size will be a square with lengths this many pixels
- start - 2dim tuple - top left corner of carpet to draw
Example:
sc = SierpinskisCarpenter()
itr = 3
size = (3 ** itr, 3 ** itr)
im = sc.animateCarpet(itr, size)
im.show()
"""
if (None == start):
# Init the animation
start = (0,0)
self.counter = 0
self.im = Image.new("RGB", (size, size), (255, 255, 255))
self.itr_start = itr
self.im.save(self.getFrameFilename())
# tab for clean debug output
tab = "\t" * itr
#print tab + "MAKE CARPET ITR %s" % (itr)
#print "%sStart %s" % (tab, start)
if (0 == itr):
# LAST ITERATION - PAINT IT!
#print "%sPAINTING: Start %s" % (tab, start)
self.im.paste(self.color, (start[0], start[1], start[0] + size, start[1] + size))
self.im.save(self.getFrameFilename())
else:
# NEED TO ITERATE, DO ALL 8 SQUARES
third = size / 3
# top left
tl_start = (start[0], start[1])
self.im = self.animateCarpet(itr-1, size/3, tl_start)
# top center
tc_start = (start[0] + third, start[1])
self.im = self.animateCarpet(itr-1, size/3, tc_start)
# top right
tr_start = (start[0] + 2 * third, start[1])
self.im = self.animateCarpet(itr-1, size/3, tr_start)
# middle right
mr_start = (start[0] + 2 * third, start[1] + third)
self.im = self.animateCarpet(itr-1, size/3, mr_start)
# bottom right
br_start = (start[0] + 2 * third, start[1] + 2 * third)
self.im = self.animateCarpet(itr-1, size/3, br_start)
# bottom center
bc_start = (start[0] + third, start[1] + 2 * third)
self.im = self.animateCarpet(itr-1, size/3, bc_start)
# bottom left
bl_start = (start[0], start[1] + 2 * third)
self.im = self.animateCarpet(itr-1, size/3, bl_start)
# middle left
ml_start = (start[0], start[1] + third)
self.im = self.animateCarpet(itr-1, size/3, ml_start)
return self.im
cm = SierpinskisCarpenter()
# EXAMPLE: saves 6 iterations of Sierpinski's Carpet
#topItr = 6
#size = 3 ** topItr
#for itr in range(topItr+1):
# im = cm.getCarpetImage(itr, size)
# im.save("carpet-%spx-%s.gif" % (size, itr))
# EXAMPLE: dumps out frames for drawing out carpet
#cm.animateCarpet(3, 27)
The Mock Turtle's Regular Course
Published October 1, 2009
"Reeling and Writhing, of course, to begin with," the Mock Turtle replied; "and then the different branches of Arithmetic: Ambition, Distraction, Uglification, and Derision."
The Mock Turtle, from Alice's Adventures in Wonderland. Did you know that all of Lewis Carroll's works are in the public domain?
Dan showed me this video a few weeks ago. It's not in the public domain, but it stars Ringo Starr as the Mock Turtle. I really like this video because it's easy to hear Carroll's wordplay. I skip to the above quotation:
(video missing)
James Yorke on Disorder
Published September 30, 2009
"The first message is that there is disorder. Physicists and mathematicians want to discover regularities. People say, what use is disorder. But people have to know about disorder if they are going to deal with it. The automechanic who doesn't know about sludge in valves is not a good mechanic."
James Yorke, quoted in Chaos: Making a New Science by James Gleick
Distraction, Extinction
Published September 30, 2009
A few weeks ago, Elen told me that one of the reasons why humans are so easily distracted is because we've been trained over generations to feel rewarded when we notice changes around us. This sense of reward makes us want to notice small changes in our environment - very useful when there's a big hungry cat down the road, less useful when sitting in front of a screen all day repeatedly pressing a "check mail" button until a new message ([insert spam excerpt here]) shows on the screen.
I think of this while doing my best thinking. In front of where I do my best thinking, there's a copy of Wired Magazine. While paging through it, I feel silly for being distracted from my distracted thoughts. But not too silly. The magazine is constructed to be completely distracting. Half of the pages are advertisements; half of the other half are articles. The other half of the other half are clumps of text dipped and fried in glittery graphics.
While doing my best thinking, if there are magazines in front of me, I'm drawn to the byte-sized data rather than the potentially informative articles. I worry that these habits train me to crave only short-term satisfaction.
Once done with my best thinking, I flush. Then I envision a world where the human race splits into two, HG-Wells's-The-Time-Machine-style. One half short-term thinkers: clamoring for anything in front of them; the other long-term: committing to depth over breadth. Both species end up down the evolutionary drain because both have become too specialized.
If our race is destined to split and die out because I read magazines, I'm not too worried. It won't affect me short- or long-term.
Cherchez La Boum - West Coast Tour
Published July 24, 2009
Monday I depart for California. Kevin and Sara from Cheese On Bread are getting married, and after the wedding I'll be hopping in a minivan with Daoud, Deenah, and Sibsi to do some shows!
Art by Deenah
We'll be in the following places!
- Aug 2 - Chico, CA
- Aug 3 - Petrolia, CA
- Aug 4 - San Francisco, CA
- Aug 6 - Santa Cruz, CA
Twitter Weekly Updates for 2009-05-15
Published May 15, 2009
- ♫ new band with Heiko and Jen: Space Rainbows - see our myspace: http://www.myspace.com/spacerainbows ♫ #
- Headed to the Open Mic LJ Fox to play with the Space Rainbows. #
- @thelisps Congrats on the show! Which biographer was it that came to the show? #
- Spinning it back six hours. Consider my Time machine tickled. #
Twitter Weekly Updates for 2009-05-08
Published May 8, 2009
- Had a great end-of-show tour at Schokoladen last night with Phoebe. I <3 Berlin. Having a chillout before going to kreuzberg for mayday #
- ♫ http://www.myspace.com/orchestreminiatureinthepark gave me a new love for pop music ♫ #
- CATS IN BAG/BAGS IN RIVER http://bit.ly/VxrDY #
- @Brookpridemore The realization that what you are wearing is smellier than what you've already declared 'dirty' is always a shock. #
- Play him off, keboard cat! http://bit.ly/eFlPa #
- Working on http://www.ojalday.com/ in Heiko's kitchen. It's pretty alright. #
- @andyprice If twitter allows newlines, twyt should too. I don't know why one would use newlines, but might as well let them if they want to #
- @andyprice does twyt strip nl when displaying? Maybe just do that - when I think of an option to strip nl in tweets, I think YAGNI #
Twitter Weekly Updates for 2009-05-01
Published May 1, 2009
- In cologne, Germany. We missed our show at the squat, which was a bummer, but had a great tourist tour today. #
- @dangerfishback You're on it! I sort of can't believe how much I've been liking twitter. It makes me want to reconsider all my morals. #
- @brookpridemore Hey Buddy! We are missing you on hugga tour. Have a great trip. love the cheese! #
- We're off to Bremen, Germany. #
- ♫ Happy Birthday to Neil, Happy Birthday to Neil, la la la la la, la la la la la ♫ #
- @kottkedotorg Re http://tinyurl.com/c24kot Church of the Subgenius also got "Bob" to win http://tinyurl.com/dhhnba http://tinyurl.com/ddtbfa #
- @danfishback With Mario in Hannover. Totally nice guy, he's wearing his I (loaf) CoB t-shirt. #
- Hamburg is a dirty city. We had a great & quiet show at http://www.hasenschaukel.de/ #