May 05, 2003
Sing, bard!
This is cool. Rob Malda, the founder of Slashdot.org, got bored and created an automatic poetry generator. Go to his engine here, type in an URL, and it'll scrape bits of text from the page and use it to generate a little poem. I shoved Collision Detection into it and got the following opus:
collision Detection. Nor do I was a local paper, looking
into
a Japanese camp in
stalls. urination
has an audience that not all
Haidas. how
we expect
them to hear
your stream of their movies would automatically
add and
imprisoned for the
wits at Google News, is precisely
the female, American
prisoner of bonkers crap about
spam to
do the best by the
Gemini look dashing
and the
result? Active
accounts ones his wife, almost thinking about 20
per second.
The fish to
tell you,
go Go! in the road and
not 3D environments per second.
(Thanks to Boing Boing for finding this one!)
Posted by Clive Thompson at May 05, 2003 11:38 PM
| TrackBack
Heh.
Two things; first, I am currently collecting urls of random-generators as a passive hobby, so this is a sweet find. If you have any others, let me know.
Second, I ran this url:
http://www.elsewhere.org/cgi-bin/postmodern/
through the Poem Generator and got the result below (after a few tries and some editing--I believe in being cybernetic). It is a random postmodern essay generator. So, you have a random postmodern essay made into an algorhythmic [sic] poem. Enjoy.
The works of capitalist
theory suggests the presemioticist
paradigm of deconstructions concerning nationalism in
the
subject is
contextualised into a choice:
either accept Marxist socialism
and nationalism.
holds, we have to choose
between sexual
identity. it is
responsible for generating random text
Affair, where NYU Physics Professor
Alan brilliantly
meaningless and read society.
Nationalism, is intrinsically
responsible for her.
Had to revisit this: I am thinking that after a while--of either further searching on the internet or further advancement/proliferation of random generators of this kind--I will be able to have my browser 'create' an extended work of this kind. Most likely, it will be poetry.
The funny thing about it is that my computer won't actually do the work, the Internet will.
Now In terms of "artificial" and "intelligent", I wouldn't know how to interpret this process. It is like a creative process, an attempt to reorganize thought (which some would argue is heavily textual) in a new way. Many thoughts and phrases are already established, just like the phrases regurgitated by the Postmodern Essay Generator. These ideas need to be jumbled as in a human brain...?
Well a good postmodernist would argue that the 'purpose' and 'connection' of ideas in a mind are aleatory at best and would do well to be challenged by a computer.
This is from a website that generates random kung-fu moves. I edited heavily.
http://www.ruf.rice.edu/~pound/kungfu.html
"I bow to write these moves"
Verbal generator Amazing ram flip
wicked immortal
throw imperial ancestor
fairy bite splendid
paradise seizure
mystic terror onslaught
secret seizure
pious sage scratch strange fairy
bite splendid Shaolin killer wheel
insane lightning scratch sign
of the bamboo nerve pinch
strange zodiac golden snake power
savage
wolf
pounce thundering hummingbird
scratch abominable lightning
pinch pious sage justice
bow to write these moves up shadow seizure dancing rat knee unfathomable protection sign
of the
spider hands shaolin Master, Skyfox
Carl Cramr , has
organized a silly game Whatever!
Enjoy. Update: Splendid Shaolin
fairy bite splendid Shaolin Master, Skyfox Carl Cramr ,
has organized a game Whatever!
Enjoy.
Update: Splendid secret antagonism valorous
flash spin fang of the star thrust
fang of the
monkey monkey strike strange cricket
spin venerable crane spin
accurate monkey spirit dipping river lunge resplendent monk
seven animal spin fang of Feng
Shui, I must bow to write these moves.
Then I did a "find" search to locate every line about monkeys (I was born in the year of the monkey)
"Monkey King's adventures"
super butterfly monkey crane jab golden goldfish
-- monkey, monkey, strike strange cricket.
accurate monkey spirit dipping river lunge resplendent monk
innocent bamboo claw, smash monkey!
monkey scare fiendish jade
smash, monkey, immortal wheel
-- insane hammer
barbaric turtle?
dancing monkey acupuncture!
monkey,
bamboo leap .
iron buddha frenzy.
Then I went to the verbal kung-fu generator and did a search -- find using the word "monkey." I then took that line and the next two to make a free verse stanza
"Death of the Monkey King"
Monkey king's terror essence:
innocent acupuncture defiance --
iron foo-dog justice
Iron monkey, slash
abominable dream defense
(impressive killer vengeance).
10,000 monkey breath
burning tiger advance --
Sound of the willow? Throw
monkey king's eagle frenzy
drunken rabbit punch.
Dancing sage slash
monkey king's wind hammer --
Judicious wolf thrust!
Spinning snake advance!
Vulgar! Monkey, knife!
Peaceful cat, shield
spinning acupuncture spirit!
Sound of the monkey crush.
Abominable sage energy!
Dirty death slap.
Fucking hell!!! That rocks beyond description.
Actually, the fact that you edited 'em is not necessarily a bad thing at all. As Alfred was intimating earlier up, you'd arguably get better literature by collaborating with a machine writer than by letting the machine go off on its own. It's similar to how electronic music works a lot of the time, too. There are plenty of "randomizer" elements built into the tools. For example, when I'm doing music, I use Reason 2.0's drum machine -- which can generate semi-random drum-hit patterns to give you fresh ideas when you're stuck in a rut. Or Electrix's superb "Filter Factory" -- a way of molding and shaping guitar or synth tones -- has a randomizer built into it to, which produces gorgeously cool random sequences. In both cases, the point of the machine is to provide elements that the human shapes to create art.
The problem of digitized sound predates the complex A.I. and editing software now at work in the recording industry.
Mid-80's synthesizers retained robotic sine-wave patterns when emulating natural instruments. Clever designers softened the robotic hardness by introducing pseudo-random white-noise into their patches. The complex factors going into the production of a particular violin tone -- the wood, the wax on the bow, the sweat on the players' hands, the humidity in the concert room that day, the wax build-up in your ears, etc -- are nearly impossible to digitize. Why not simulate that fuzz with a little randomness.
And you are right, the edited ones work better. But sometimes I just click onto the fu-generator and laugh at the list of words.
Easily amused, I guess.
Makes an essay on ANYTHING, different every time!
Where can I find more information about this ?
[In] mourning, it is better to err on the side of grief than on the side of formality.
Seth Roby graduated in May of 2003 with a double major in English and Computer Science, the Macintosh part of a three-person Macintosh, Linux, and Windows graduating triumvirate.
Note first that favoriteNumbers type changed. Instead of our familiar int, we're now using int*. The asterisk here is an operator, which is often called the "star operator". You will remember that we also use an asterisk as a sign for multiplication. The positioning of the asterisk changes its meaning. This operator effectively means "this is a pointer". Here it says that favoriteNumber will be not an int but a pointer to an int. And instead of simply going on to say what we're putting in that int, we have to take an extra step and create the space, which is what does. This function takes an argument that specifies how much space you need and then returns a pointer to that space. We've passed it the result of another function, , which we pass int, a type. In reality, is a macro, but for now we don't have to care: all we need to know is that it tells us the size of whatever we gave it, in this case an int. So when is done, it gives us an address in the heap where we can put an integer. It is important to remember that the data is stored in the heap, while the address of that data is stored in a pointer on the stack.
For this program, it was a bit of overkill. It's a lot of overkill, actually. There's usually no need to store integers in the Heap, unless you're making a whole lot of them. But even in this simpler form, it gives us a little bit more flexibility than we had before, in that we can create and destroy variables as we need, without having to worry about the Stack. It also demonstrates a new variable type, the pointer, which you will use extensively throughout your programming. And it is a pattern that is ubiquitous in Cocoa, so it is a pattern you will need to understand, even though Cocoa makes it much more transparent than it is here.
When compared to the Stack, the Heap is a simple thing to understand. All the memory that's left over is "in the Heap" (excepting some special cases and some reserve). There is little structure, but in return for this freedom of movement you must create and destroy any boundaries you need. And it is always possible that the heap might simply not have enough space for you.
Seth Roby graduated in May of 2003 with a double major in English and Computer Science, the Macintosh part of a three-person Macintosh, Linux, and Windows graduating triumvirate.
Our next line looks familiar, except it starts with an asterisk. Again, we're using the star operator, and noting that this variable we're working with is a pointer. If we didn't, the computer would try to put the results of the right hand side of this statement (which evaluates to 6) into the pointer, overriding the value we need in the pointer, which is an address. This way, the computer knows to put the data not in the pointer, but into the place the pointer points to, which is in the Heap. So after this line, our int is living happily in the Heap, storing a value of 6, and our pointer tells us where that data is living.
Since the Heap has no definite rules as to where it will create space for you, there must be some way of figuring out where your new space is. And the answer is, simply enough, addressing. When you create new space in the heap to hold your data, you get back an address that tells you where your new space is, so your bits can move in. This address is called a Pointer, and it's really just a hexadecimal number that points to a location in the heap. Since it's really just a number, it can be stored quite nicely into a variable.
But variables get one benefit people do not
Seth Roby graduated in May of 2003 with a double major in English and Computer Science, the Macintosh part of a three-person Macintosh, Linux, and Windows graduating triumvirate.
To address this issue, we turn to the second place to put variables, which is called the Heap. If you think of the Stack as a high-rise apartment building somewhere, variables as tenets and each level building atop the one before it, then the Heap is the suburban sprawl, every citizen finding a space for herself, each lot a different size and locations that can't be readily predictable. For all the simplicity offered by the Stack, the Heap seems positively chaotic, but the reality is that each just obeys its own rules.
Thanks for this comment. Made me thinking about the future.
Si vis amari, ama - If you wish to be loved, love. (Seneca)
nice site i really like it