Reading The Unfolding of Language by Guy Deutscher, who describes how language might have evolved by looking at currently spoken languages and their relatively recent history.

Deutscher talks about the role of metaphor in the creation of language

“…tracing a stream of metaphors that runs right through language and flows from the concrete to the abstract.  In this contstant surge, the simplest and sturdiest of words are swepts along, one after another, and carried toward abstract meanings.  As these words drift downstream, they are bleached of their original vitality and turn into pale lifeless terms for abstract concepts — the substance from which the structure of language is formed.  And when at last the river sinks into the sea, these spent metaphrs are deposited, layer after layer, and so the structure of language grows, as a reef of dead metaphors.” (p. 118)

Even such abstract concepts, such as understanding, are rooted in metaphors of the physical world: “we talk of grasping the sense, catching the meaning, getting the point, following an explanation, cottoning on to an idea, seeing the difficulty, Are you with me?” (p. 128)  Deutscher describes how much of our language is rooted in metaphor, which only later through common use and “erosion” become words for abstract concepts in their own right.  It appears that this happens in all human languages, and the book lists examples from a wide array of modern and ancient language.

Darwin states that it is not speech, but humans’ “large power of connecting definite sounds with definite ideas” that is definition of language. Tecumseh Fitch writes a Language Log guest post on Darwin’s theories of language evolution. I had never known that Darwin’s theories did not restrict themselves to the evolution of the species. Fitsch discusses chapter two of the Descent of Man, in which Darwin considers the evolution of the human mind.

Darwin lays out his theory of the stages of evolution where an increase in intelligence is followed by the complex vocal control required for singing. In the third stage, meaning is added to song, “which was both driven by, and in turn fueled, further increases in intelligence.”

Darwin recognized that physiology is not sufficient for learning songs: “crows have a syrinx as complex as a nightingale’s but use it only in unmusical croaking.”

…birds have fully instinctive calls, and an instinct to sing. But the songs themselves are learned. He recognized the parallel between infant babbling and songbird “subsong”, and recognized the key fact that cultural transmission ensures the formation of regional dialects in both birdsong and speech.

Darwin describes the next step, which Fitch calls a “musical protolanguage” (Fitch, 2006), which would improve by sexual selection and be used in courtship, to establish territory, and to express emotions. While Fitsch also highlights that gesture plays an important role in conveying meaning, both in Darwin’s writings and other sources, I found the theories relating to song most intriguing.

I have no basis of research to speak from, but this theory resonates with my own experience. It seems logical to me that language would stem from song, where a complex serious of sounds and tones yielded complex meaning and only later would the simpler words evolve. In seeing how my own child learned language, he seemed to leap forward with whole phrases. While his first stabs at communication seemed to be the identification of simple nouns, most language echoed sounds strung together in a rhythm rather than, apparently, putting those simple nouns into a more complex grammar.

My personal experience seem to jive with theories of Otto Jespersen’s hypothesis of a “holistic protolanguage.” More recently championed by linguist Alison Wray (Wray, 1998, 2000) and neuroscientist Michael Arbib (Arbib, 2005) with supporting evidence from modern studies of adult language, child language acquisition, and cognitive neuroscience.

Fitch notes that the key remaining question is “how emotionally-expressive musical proto-language made the transition to true meaningful language.” I would think that if just one individual were to evolve (or learn?) to connect more abstract meaning to phrases then he or she would teach their offspring, which would provide all sorts of fitness benefits. Perhaps that is the essential question: how much of the change was due to physiological changes rather than learned ones, and why it happened in humans and not in nightingales.

Fitch also contrasts Darwin’s assertion that the evolution of language was driven by courtship with the more modern view of music and song in the context of childcare.

The popular notion that music evolved for courtship (Miller, 2000, 2001) stands on a surprisingly weak empirical footing compared to a less obvious, but better-documented function of music: mother-infant communication (Trainor, 1996; Trehub, 2003a, 2003b). Mothers sing to their infants all over the world, even those who claim to be unable to sing (Street, Young, Tafuri, & Ilari, 2003), and infants both prefer song to speech, and respond to song in manifestly adaptive ways (e.g. engaging with and getting excited by play songs, and being lulled to sleep by lullabies (Trehub & Trainor, 1998).

In the final stage, Darwin theorizes that language interacts with the evolution of intelligence and cognitive thought:

…language would have “reacted on the mind by enabling and encouraging it to carry on long trains of thought” which “can no more be carried on without the aid of words, whether spoken or silent, than a long calculation without the use of figures or algebra”. Thus began the interactive evolutionary spiral that led to modern humans.

Last week I attended the March SF Ruby Meetup. (Some day I hope to attend a meetup where I don’t personally double the number of women, but at least I wasn’t all alone, and the guys treated me as more of a geek than a girl, which is always a good sign.) I found the talks engaging and learned a few things.

There were three short talks (see notes below):


Rajiv Aggarwal has created a treasure hunt application Cell Guided. Rajiv generously shared details about what it took to build it and highlighted the various libraries and APIs he used for mapping and geo-coding.

Geocoding using GeoKit (requires Google API Key)

  • from street address: GeoKit::Geocoders::Muitgeocoder.geocode
  • from ip address: GeoKit::Geocoders::IpGeocoder.geocode

extends ActiveRecord

Whatever.find(:all, :origin => [37.39, -122.39], :within => 50)
Whatever.find(:all, :origin=>'100 Spear st, San Francisco, CA', :within=>10)

Maps using ym4r

Displays static or dynamic maps that you can interact with. For printing, couldn’t use the same API (since sometimes the Javascript wasn’t done by the time the print happened, sometimes the map would be blank), instead using the static map API worked.

They use a ‘QR code’ on the flyer to encode the URL of the website. Pretty cool. Aside from an audience member: McDonalds in Thailand uses it on the packaging to tell you how many calories are in that food item!

Q: How much Javascript did you have to write? “about a page”


Adam Wiggins, one of the co-founders of Heroku, demonstrated how easy it is to deploy a Ruby on Rails app to Heroku and talked about some additional neat features, as well as their (not yet final) plans for pricing the service.

  • instant Ruby deployment
  • deply integrated thru Ruby gem & git

how to:

  1. get heroku account
  2. sudo gem install heroku
  3. automatically adds a git remote

you can use your own URL if you like, but by default it will make one up for youto make it easy to experiment.  memcahce in beta right now.  ‘heroku console’ will give you access to the console.  The severs are locked down at the Unix level: filesystem is read-only now and git submodule hacks won’t work anymore.

gem support?

  • can vendor rails, but doesn’t work with binary gems
  • create a .gems manifest
  • coming from rubyforget, just add the name of the gem

What if RubyForge doesn’t have it yet?
my-gem –source

Rmagick? all installed, other gems that depend on OS binaries: email us

Q: how do you get your data in and out?  A: taps .. streaming database import/export

How to move data from your database to heroku…

heroku db:push

you can also do:
heroku db:pull

backup? EC2 – tripple re-dundant.  You should keep your own backups, of course.  They provide some tools. Also heroku bundle:capture

They have tested high traffic, easy to scale, built into the architecture.  You’ll be sharing a db on the free apps.
You would pay to have a dedicated database.  You get 1-2 mogrel/thins for free, higher for pay.  You could crank it up to 8 just for a day, easy command line control.  Can you specify limits? analogy to google ad words, set a budget… still working out the details, which is one of the reasons we aren’t publicly posting pricing.

All 2.0 series of Rails are installed.  If you want something else you can always vendor it.

Uses postgres.. not mySql


Chris Wanstrath from GitHub gave an entertaining and detailed talk about the lesser known features of github. I was one of 2-3 people in the audience (of about 60-70) who raised their hands in answer to the question “who doesn’t have a github account?” Sitting near the front Chris challenged me to tell him what I didn’t like about GitHub. I had no gripes about the site, but hadn’t seen a reason to use github and had merely set up a remote repository on a dev server when needed to collaborate. Of course later in the week I realized I did have a GitHub account, I just wasn’t using it for posting. There’s probably no way you can write Ruby on Rails code for even just a few months and not have *some* reason to have an account on GitHub. After hearing Chris’ talk, I did have second thoughts about not using GitHub for my shared git repository. GitHub seems well-worth the price of admission with cool features for collaborating on shared code. Here are some highlights:

Cool visualizations
(click on the images to link to the live graphs)

“Punch Card” graph, commit activity by day and hour:

Blocks represent “impact”. Impact is (lines added + lines deleted) for all non-merge commits during a week period.

Network Graph Viewer
The github-gem Network - GitHub

They also use rubanalytics to create a view of page traffic (based on the google analytics they were already using for githb).

Looking at source code…
shift-select – highlight a section of code and send a URL
l & h, key nav for pagination
on commits page, j & k, c for commit

on a commit… on the URL, add .patch or .diff
can wget the .patch, can apply it

Fork Queue — I guess only admins have it

They have a bug tracker in development. Lightweight, simple priority, modeled after gmail, same keyboard shortcuts.

Chris talked in detail about various implementations of a “job queue,” apiece of work that can be done in the background by a persistent worker. Nice presso, sorry no notes. Heroku doesn’t support this yet… working on it. Noted “workling” an emerging Rails plugin.

Odd langugage quote of the evening “We didn’t have to tie up the mongrel” (to a different audience this would mean something quite different!)


CodeCon – unconference, for hackers by hackers
April 17-18