Mary Rose Cook's notebook

The public parts of my notebook.

My homepage.

Western

Western


#notebook

Spelunky: verbs and traits

Spelunky: verbs and traits

In order to learn more about emergence, I analysed the verbs and object traits in Spelunky.


Verbs

I think this gets most of them. All the verbs in the fiction (throw, jump, hit etc) are domain-specific versions of these.



Traits


#notebook

Apple ads

Apple ads


1976


1976



1977


1981


#notebook

Apple: ten different approaches

Apple: ten different approaches

Apple designers come up with 10 entirely different mock ups of any new feature. Not, Lopp said, “seven in order to make three look good”, which seems to be a fairly standard practice elsewhere. They’ll take ten, and give themselves room to design without restriction. Later they whittle that number to three, spend more months on those three and then finally end up with one strong decision.


Pixel Perfect Mockups. This, Lopp admitted, causes a huge amount of work and takes an enormous amount of time. But, he added, “it removes all ambiguity.” That might add time up front, but it removes the need to correct mistakes later on.


— Helen Walters


#notebook

Splatoon 2

Splatoon 2



#notebook

Alan Kay on high quality research funding

Alan Kay on high quality research funding

http://worrydream.com/2017-12-30-alan/


#notebook

Bret Victor podcast interview

Bret Victor podcast interview


Bret%20Victor%20podcast%201.mp3


#notebook

Be proud of your death count. The more you die, the more you're learning.

Be proud of your death count. The more you die, the more you're learning.


#notebook

Steve Yegge on Jeff Bezos

Steve Yegge on Jeff Bezos

Amazon War Story #1


#notebook

The slides for Kay's talk about using your less healthy desires to drive you to get better at programming

The slides for Kay's talk about using your less healthy desires to drive you to get better at programming


#notebook

L'incoronazione di Poppea, Monteverdi

L'incoronazione di Poppea, Monteverdi


#notebook

How people use their Nintendo Switches

How people use their Nintendo Switches


#notebook

Simple React patterns, Lucas Reis

Simple React patterns, Lucas Reis


Loading data cleanliness


Solo render function pattern

const PlanetView = ({ name, climate, terrain }) => (
  <div>
    <h2>{name}</h2>
    <div>Climate: {climate}</div>
    <div>Terrain: {terrain}</div>
  </div>
);



Patterns for when the model code doesn't need to be reused

Mixed component pattern



export default class Dagobah extends React.Component {
  state = { loading: true };

  componentDidMount() {
    fetch("https://swapi.co/api/planets/5")
      .then(res => res.json())
      .then(
        planet => this.setState({ loading: false, planet }),
        error => this.setState({ loading: false, error })
      );
  }

  renderLoading() {
    return <div>Loading...</div>;
  }

  renderError() {
    return <div>I'm sorry! Please try again.</div>;
  }

  renderPlanet() {
    const { name, climate, terrain } = this.state.planet;
    return (
      <div>
        <h2>{name}</h2>
        <div>Climate: {climate}</div>
        <div>Terrain: {terrain}</div>
      </div>
    );
  }

  render() {
    if (this.state.loading) {
      return this.renderLoading();
    } else if (this.state.planet) {
      return this.renderPlanet();
    } else {
      return this.renderError();
    }
  }
}



Container/view pattern


class PlanetView extends React.Component {
  renderLoading() {
    return <div>Loading...</div>;
  }

  renderError() {
    return <div>I'm sorry! Please try again.</div>;
  }

  renderPlanet() {
    const { name, climate, terrain } = this.props.planet;
    return (
      <div>
        <h2>{name}</h2>
        <div>Climate: {climate}</div>
        <div>Terrain: {terrain}</div>
      </div>
    );
  }

  render() {
    if (this.props.loading) {
      return this.renderLoading();
    } else if (this.props.planet) {
      return this.renderPlanet();
    } else {
      return this.renderError();
    }
  }
}

class DagobahContainer extends React.Component {
  state = { loading: true };

  componentDidMount() {
    fetch("https://swapi.co/api/planets/5")
      .then(res => res.json())
      .then(
        planet => this.setState({ loading: false, planet }),
        error => this.setState({ loading: false, error })
      );
  }

  render() {
    return <PlanetView {...this.state} />;
  }
}

export default DagobahContainer;



Container/branch/view pattern


const LoadingView = () => <div>Loading...</div>;

const ErrorView = () => <div>Please try again.</div>;

const PlanetView = ({ name, climate, terrain }) => (
  <div>
    <h2>{name}</h2>
    <div>Climate: {climate}</div>
    <div>Terrain: {terrain}</div>
  </div>
);

const PlanetBranch = ({ loading, planet }) => {
  if (loading) {
    return <LoadingView />;
  } else if (planet) {
    return <PlanetView {...planet} />;
  } else {
    return <ErrorView />;
  }
};

class DagobahContainer extends React.Component {
  state = { loading: true };

  componentDidMount() {
    fetch("https://swapi.co/api/planets/5")
      .then(res => res.json())
      .then(
        planet => this.setState({ loading: false, planet }),
        error => this.setState({ loading: false, error })
      );
  }

  render() {
    return <PlanetBranch {...this.state} />;
  }
}

export default DagobahContainer;



Patterns for when the view needs to be decoupled from the model


Higher order component pattern


const withDagobah = PlanetViewComponent =>
  class extends React.Component {
    state = { loading: true };

    componentDidMount() {
      fetch("https://swapi.co/api/planets/5")
        .then(res => res.json())
        .then(
          planet => this.setState({ loading: false, planet }),
          error => this.setState({ loading: false, error })
        );
    }

    render() {
      return <PlanetViewComponent {...this.state} />;
    }
  };

export default withDagobah(PlanetBranch);




const hoc = withPlanet('tatooine')(PlanetView);

Render props pattern (AKA Children as function pattern)

class Dagobah extends React.Component {
  state = { loading: true };

  componentDidMount() {
    fetch("https://swapi.co/api/planets/5")
      .then(res => res.json())
      .then(
        planet => this.setState({ loading: false, planet }),
        error => this.setState({ loading: false, error })
      );
  }

  render() {
    return this.props.render(this.state);
  }
}

export default () => (
  <Dagobah
    render={({ loading, error, planet }) => {
      if (loading) {
        return <LoadingView />;
      } else if (planet) {
        return <PlanetView {...planet} />;
      } else {
        return <ErrorView />;
      }
    }}
  />
);



Context


Provider pattern

import React from "react";
import PropTypes from "prop-types";

const contextTypes = {
  dagobah: PropTypes.shape({
    loading: PropTypes.bool,
    error: PropTypes.object,
    planet: PropTypes.shape({
      name: PropTypes.string,
      climate: PropTypes.string,
      terrain: PropTypes.string
    })
  })
};

// provider

export class DagobahProvider extends React.Component {
  state = { loading: true };

  componentDidMount() {
    fetch("https://swapi.co/api/planets/5")
      .then(res => res.json())
      .then(
        planet => this.setState({ loading: false, planet }),
        error => this.setState({ loading: false, error })
      );
  }

  static childContextTypes = contextTypes;

  getChildContext() {
    return { dagobah: this.state };
  }

  render() {
    return this.props.children;
  }
}

// higher order component

const withDagobah = PlanetViewComponent =>
  class extends React.Component {
    static contextTypes = contextTypes;

    render() {
      const { props, context } = this;
      return <PlanetViewComponent {...props} {...context.dagobah} />;
    }
  };

const DagobahPlanet = withDagobah(PlanetView);



#medianotes #notebook

The Knick, Steven Soderbergh

The Knick, Steven Soderbergh


#notebook

Why project-based learning fails, James Koppel

Why project-based learning fails, James Koppel

  1. Write the networking component of a larger system.
  2. Write test cases for a small existing program that tempts you to make classic testing mistakes.
  3. Coordinate with coach to build something, committing pseudocode. The coach deliberately misunderstands your instructions and sees if you pick them up on it.
  4. Write small project in a team where tasks are divided up extremely small. Each person writes tests for another's code. (Integrates skills of 2 and 3.)

#notebook #medianotes

Chris Hecker interview

Chris Hecker interview

DN36_Chris_Hecker%201.mp3


DN37_Chris_Hecker%201.mp3


#notebook

Peak, Anders Ericsson and Robert Pool

Peak, Anders Ericsson and Robert Pool

Review

Some excellent techniques for deliberate practice. Includes plenty of supporting for skill being born of practice, not talent. A good accompaniment to Mindset.


Naive practice


Purposeful practice


Deliberate practice


#notebook #medianotes

Principles, Ray Dalio

Principles, Ray Dalio

#notebook

The Benjamin Franklin Method of Reading Programming Books

The Benjamin Franklin Method of Reading Programming Books


About this time I met with an odd volume of the Spectator. It was the third. I had never before seen any of them. I bought it, read it over and over, and was much delighted with it. I thought the writing excellent, and wished, if possible, to imitate it. With this view I took some of the papers, and, making short hints of the sentiment in each sentence, laid them by a few days, and then, without looking at the book, try'd to compleat the papers again, by expressing each hinted sentiment at length, and as fully as it had been expressed before, in any suitable words that should come to hand. Then I compared my Spectator with the original, discovered some of my faults, and corrected them.


— Benjamin Franklin, Autobiography



#notebook

Jonathan Pie, why Trump won

Jonathan Pie, why Trump won

President Trump: How & Why... - YouTube


#notebook

Calvin and Hobbes, somehow it's always right now until it's later

Calvin and Hobbes, somehow it's always right now until it's later


#notebook

Balenciaga dress

Balenciaga dress


A dress made out of just two pieces of fabric.


#notebook

A Lesson on Elementary, Worldly Wisdom As It Relates To Investment Management & Business, Charles Munger

A Lesson on Elementary, Worldly Wisdom As It Relates To Investment Management & Business, Charles Munger

k3mgi-xcs23%201.pdf


Use mental models


Models

Advantages of scale



Markets that have healthy profits and markets that don't have healthy profits



Work within your circle of competence



To whom does the money saved by technology go?



Infrequent betting



The long-term view



GEICO formula



Sector rotation



Value to a private owner



Mr Market



Better businesses



Find good businesses young



The psychology of misjudgement


Overall: people have conscious motives and unconscious drivers.


Pick fights you can win



Outcome varies



Why



Elementary probability



Permutations and combinations


Compound interest


Simple algebra


Decision tree theory



Critical mass


Breakpoints (engineering)


Backup system


Cost-benefit analysis


Feedback


Munger's biases


Vocab


#notebook

Paperclips

Paperclips

#spoliers




Micro-enonomics


Indirection


You manage what you measure


Risk


Automation


#notebook

Paperclips

Paperclips

#spoliers




Micro-enonomics


Indirection


You manage what you measure


Risk


Automation


#notebook

Playfair and Michelangelo

Playfair and Michelangelo


#notebook

Thoughts on Dynamicland

Thoughts on Dynamicland

Layers of abstraction


In Dynamicland, there seem to be three layers of abstraction.


They use the phrase “operating system” to refer to the software that runs the cameras, projectors, dynamic pages and so on. Despite being a low level, this layer seems manipulable. It is still within the system.


Above that layer is the set of programs that run on pages. These seem to be written in Lua.


Above that layer are the dynamic objects that can be manipulated using “real-world” tools: arms, hands, pens, glue and so on.


It seems likely that the higher layers will be changed more often than the lower layers.


It seems likely that, as you go up the layers, the tools become increasingly accessible to non-programmers.


The name


Is the name, Dynamicland, an oblique reference to DisneyLand?


Pretend worlds vs the real world


Ordinary creative programs like Photoshop generate a pretend world inside the computer. The user interacts with the world using only a few of their faculties: sight, hearing and limited movements.


VR also creates a pretend world inside the computer. But the user can interact with the world using a wider range of movements.


AR puts some of the real world into a pretend world.


Dynamicland is the real world. But it projects virtual worlds into the real world.


It feels like the approach of Dynamicland is to start by picking a different set of assumptions. Instead of assuming that the power of a cohesive simulation is too great to let go of, Dynamicland seems to assume that the power of our bodies in the real world is too great to let go of. Starting from that assumption, it seems to try to bring back as many simulated elements as possible.


#notebook

Books I read in 2017

Books I read in 2017

The Effective Engineer, Edmond Lau


Make sure you’re building the right thing. Prioritise your day. Reflect.


Universal Principles of Design, William Lidwell


Useful one-page primers on various design techniques.


The Secret of Childhood, Maria Montessori


The most interesting thing I got out of this was that children have a completely different frame of reference to the one you have.


Shoe Dog, Phil Knight


The autobiography of the founder of Nike. Though it had information in it, and a narrative, and I enjoyed reading it, the book left no real impression on me.


The Humane Interface, Jef Raskin


Treatise on some aspects of user interface design. The stuff on modes is fascinating. And the exploration of the Canon Cat is a wonderful view into a computing metaphor that is brilliantly designed, and mostly alien.


Understanding the Four Rules of Simple Design, Corey Haines


An exploration of design decisions made when implementing a small domain.


Smart & Gets Things Done, Joel Spolsky


Useful advice on hiring programmers.


The Lazy Teacher’s Handbook, Jim Smith


Constructivism says that learners have to actively make meaning. This book contains lots of activities and techniques that a teacher can use to push the work of learning back onto the learners.


The Perfect Thing, Steven Levy


Some interesting information about the process of designing the iPod. But mostly boring reflections on the iPod’s cultural effects.


Thinking in Systems, Donella H. Meadows


A useful primer on what systems theory is. I wanted more practical advice on thinking systemically.


Never Let Me Go, Kazuo Ishiguro


A waste of time.


99 Bottles of OOP, Katrina Owen and Sandi Metz


A fastidious and rigorous exploration of techniques for producing high-quality object-oriented code. I found it extremely useful.


A Life in Secrets, Sarah Helm


A history of some of the women spies dropped into France during WWII. I found the details of the operations much more interesting than finding out what happened to the agents.


Zero to One, Peter Thiel


Peter Thiel’s advice for startups. The stuff about avoiding monopoly markets was very interesting.


How to Read a Book, Mortimer J. Adler and Charles Van Doren


The material on inspectional reading, analytical reading and synoptical reading was useful. The other three-hundred pages of words were not.


Mindset, Carol S. Dweck


I got a lot out of this. I’d read about the growth mindset and the fixed minset before, and had taken some steps to working on my own mindset. But reading lot of examples helped me go much deeper on changing my ways of thinking.


The Stand, Stephen King


A fun story, but I didn’t find it meaningful.


Troublemakers, Leslie Berlin


A history of Silicon Valley. The central thesis, that Silicon Valley is a network that relies on previous generations of entrepreneurs helping the next, is somewhat interesting, but the book is mostly a lot of what, and not much why.


Self-knowledge, author unknown


A short book about examining your life. It has several super-useful reflective techniques.


#notebook

Rachel Whiteread, (Paperbacks)

Rachel Whiteread, (Paperbacks)


My Dad and I saw the Whiteread retrospective. I don’t think I like her art very much, but we did talk a lot about it. Which means it’s probably better than I think it is.


#notebook

SF

SF




#notebook

SF

SF




#notebook

Computer history

Computer history

It was magical to see some of my favourite computers.


The PDP-1, the machine that started hacker culture.



XEROX Alto, the computer that preceded the Macintosh.



The original Macintosh.




The NeXT Computer, the computer that ran the operating system that preceded OS X.



The Apple campus.



Bandley Drive, where the original Macintosh was designed.



The Google campus.



Palo Alto.



#notebook

On the road

On the road

LA to SF.












#notebook

LA

LA



The Norton Simon Museum



The insane array of juices at Ehrwone. I had the beetroot, grapefruit and orange one and it was incredible.



Driving around Bel Air



Venice Beach



#notebook

LA

LA



The Norton Simon Museum



The insane array of juices at Ehrwone. I had the beetroot, grapefruit and orange one and it was incredible.



Driving around Bel Air



Venice Beach



#notebook

My dad and I went to the location of the shootout after the bank robbery in Heat

My dad and I went to the location of the shootout after the bank robbery in Heat

The steps outside the bank.




The trees that Vincent Hanna runs past when he arrives late to the robbery.




The bridge that the robbers work their way towards.




Past the bridge.




#notebook

Playboy interview with Larry Page and Sergey Brin

Playboy interview with Larry Page and Sergey Brin

Playboy Interview: Google Guys


#notebook

A documentary about the making of Heat

A documentary about the making of Heat

(Gone from YouTube.)


#notebook

Playboy Interview: Steve Jobs

Playboy Interview: Steve Jobs

Playboy Interview: Steve Jobs


#notebook

Eden

Eden


A reality programme about twenty trying to live in the wilderness for a year. It’s interesting to see some of the mechanics of subsistence.


#notebook

Eden

Eden


A reality programme about twenty trying to live in the wilderness for a year. It’s interesting to see some of the mechanics of subsistence.


#notebook

Greg Fox

Greg Fox

Greg Fox – Boiler Room In Stereo - YouTube


Lauren and I saw him play at Cafe Oto yesterday.


#notebook

Chinatown

Chinatown


Lauren and I saw this at the cinema last weekend. The big screen meant that, in this scene, I noticed Faye Dunaway’s face reflected in the car window.


#notebook

Chinatown

Chinatown


Lauren and I saw this at the cinema last weekend. The big screen meant that, in this scene, I noticed Faye Dunaway’s face reflected in the car window.


#notebook

Alan Kay, Doing with Images Makes Symbols

Alan Kay, Doing with Images Makes Symbols

Alan Kay: Doing with Images Makes Symbols (Full Version) - YouTube


Tons of good stuff on the intellectual origins of powerful user interfaces.


#notebook

Mindset, Carol S. Dweck

Mindset, Carol S. Dweck

I got a lot out of this. I’d read about growth and fixed mindsets before, and had taken some steps to working on my own mindset. But reading lot of examples helped me go much deeper.


Also, I think that reading a book lets you learn a lot more than a long article, even if they have the same content. Reading a book means you live with its subject. Your life is immersed in it for a while. There’s more chance for regularly-occuring thoughts or events to come up that you can tie into the material.


#notebook

The Big Sick

The Big Sick


#notebook

An interesting documentary about the making of The Last of Us

An interesting documentary about the making of The Last of Us

https://www.youtube.com/watch?v=R0l7LzC_h8I


#notebook

An oblique account of a visit to Bret Victor's lab

An oblique account of a visit to Bret Victor's lab

Utopian Hacks | Limn


#notebook

In Barcelona

In Barcelona


#notebook

Index pages: home, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12