Primary links

SIGN UP

Search

Woodside, CA
Koko — the gorilla known for her extraordinary mastery of sign language, and as the primary ambassador for her endangered species — passed away on the morning of June 19, 2018 in her sleep at the age of 46. Koko touched the lives of millions as an ambassador for all gorillas and an icon for interspecies communication and empathy. She was beloved and will be deeply missed.
Koko, a western lowland gorilla, was born Hanabi-ko (Japanese for “Fireworks Child”) on July 4, 1971 at the San Francisco Zoo. Dr. Francine “Penny” Patterson began working with Koko the next year, famously teaching her sign language. Dr. Patterson and Dr. Ronald Cohn moved Koko and the project to Stanford in 1974 and went on to establish The Gorilla Foundation. While at Stanford the project expanded to include a second western lowland gorilla, Michael. In 1979 Koko and The Gorilla Foundation moved to the Santa Cruz Mountains where Ndume joined them as a fellow ambassador for their species.
Koko’s capacity for language and empathy has opened the minds and hearts of millions. She has been featured in multiple documentaries and appeared on the cover of National Geographic twice. The first cover, in October of 1978, featured a photograph Koko had taken of herself in a mirror. The second issue, in January of 1985, included the story of Koko and her kitten, All Ball. Following the article, the book Koko’s Kitten was published and continues to be used in elementary schools worldwide. Her impact has been profound and what she has taught us about the emotional capacity of gorillas and their cognitive abilities will continue to shape the world. The foundation will continue to honor Koko’s legacy and advance our mission with ongoing projects including conservation efforts in Africa, the great ape sanctuary on Maui, and a sign language application featuring Koko for the benefit of both gorillas and children.
For
press inquiries
or to make a tax-deductible donation to the Koko Fund, please contact
Joy Chesbrough,
The
Gorilla Foundation’s Chief Philanthropy Officer, at:
1-800-ME-GO-APE ext 14.

In many situations imperative code is fine. When we write business logic we usually have to write mostly imperative code, as there will not exist a more generic abstraction over our business domain.

But if we take the time to learn (or build!) declarative abstractions we can take dramatic and powerful shortcuts when we write code. Firstly, we can usually write less of it, which is a quick win. But we also get to think and operate at a higher level, up in the clouds of
what
we want to happen, and not down in the dirty of
how
it should happen.

You may not realise it, but one place where you have already used declarative abstractions effectively is in SQL.

You can think of SQL as a declarative query language for working with sets of data. Would you write an entire application in SQL? Probably not. But for working with sets of related data it is incredibly powerful.

Take a query like:

Imagine trying to write the logic for this yourself imperatively:

Yuck! Now, I’m not saying that SQL is always easy to understand, or necessarily obvious when you first see it, but it’s a lot clearer than that mess.

But it’s not just shorter and easier to read, SQL gives us plenty of other benefits. Because we have abstracted over the
how
we can focus on the
what
and let the database optimise the
how
for us.

If we were to use it, our imperative example would be slow because we would have to iterate over the full list of owners for every dog in the list.

But in the SQL example we can let the database deal with
how
to get the correct results. If it makes sense to use an index (providing we’ve set one up) the database can do so, resulting in a large performance gain. If it’s just done the same query a second ago it might serve it from a cache almost instantly. By letting go of
how
we can get a whole host of benefits by letting computers do the hardwork, with little cognitive overhead.

Another place where declarative approaches are really powerful is in user interfaces, graphics and animations.

Coding user interfaces is hard work. Because we have user interaction and we want to make nice dynamic user interactions, we typically end up with a lot of state management, and generic
how
code that could be abstracted away, but frequently isn’t.

A great example of a declarative abstraction is
Viking Unisex Adults PwmXfFH
. D3 is a library that helps you build interactive and animated visualisations of data using JavaScript and (typically) SVG.

The first time (and fifth time, and possibly even the tenth time) you see or try and write d3 code your head will hurt. Like SQL, d3 is an incredibly powerful abstraction over visualising data that deals with almost all of the
how
for you, and lets you just say what you want to happen.

Here’s an example (I recommend
viewing the demo
for some context). This is a d3 visualization that draws a circles for each object in the
data
array. To demonstrate what’s going on we add a circle every second.

If you’d like to create your own custom download of revenue data you should use the table
above
to make your selections.

Copy and Paste:
Here is the dataset you have selected. If you’d like the data for analysis, just copy the tab-delimited text in the textbox below (click cursor in text box, then press ctrl-A then press ctrl-C) and paste it into your spreadsheet.

• Develop annotating and highlighting/underlining skills • Construct a set of notes based on reading, listening or viewing • Reinforce understanding and memory of information • Plan effectively • Prioritize information and tasks successfully • Sort and organize notes and papers • Use appropriate study modes and methods • Complete homework in a timely manner and to instructor’s expectations • Arrive at class prepared and ready to work

• Consistent classroom management • Provide immediate feedback about behavior • Follow a predictable schedule [visual schedule, rules, consequences] • Write daily lesson objectives on the board [check off as completed] • Use written directions to keep students focused • Discuss expectations for classwork and homework and require expectations are met • Individualize handouts • Model material and written organization • Have individual students repeat or rephrase directions back to you • Have students explain their reasoning and describe thinking process in writing • Set aside time at the end of each period for students to organize themselves • Regularly evaluate student performance and re-model to remediate • Give direct instruction on understanding the link between effort and outcome • Provide a daily review of all topics • Breakdown all assignments into manageable portions and scaffold realistic time management plans • Communicate expectations to students with frequent teacher feedback • Model the type of assignment the instructor desires