Mary Rose Cook's notebook

The public parts of my notebook.

My homepage.

ProseMirror

ProseMirror

ProseMirror


“Sometimes I lie awake at night, feverishly searching for new ways to load myself down with more poorly-paying responsibilities. And then it comes to me: I should start another open-source project!”


#notebook

Chuck Close self-portrait

Chuck Close self-portrait


#notebook

More Money For Better Open-Source Software

More Money For Better Open-Source Software

More Money For Better Open-Source Software


#notebook

Tangerine

Tangerine


Fun film about a day in the life of two trans women living in LA.


#notebook

Alexander Calder, Hanging Spider

Alexander Calder, Hanging Spider


Saw this today at the Whitney. It’s essential to see mobiles in person. All the magic comes from their changing configuration.


#notebook

Masters of Doom

Masters of Doom

Masters of Doom - Wikipedia


A fascinating insight into the work methods of Id Software.


#notebook

Today at the Met

Today at the Met


#notebook

Speed matters

Speed matters

Speed matters: Why working quickly is more important than it seems « the jsomers.net blog


#notebook

The Large Bathers, Cezanne

The Large Bathers, Cezanne

Cezanne's Large Bathers: Painting Raw Experience - YouTube


#notebook

Drawing on the Right Side of the Brain

Drawing on the Right Side of the Brain


#notebook

James McMurtry, Lights of Cheyenne

James McMurtry, Lights of Cheyenne

09%20Lights%20of%20Cheyenne.mp3


We listened to this, and a lot of other cowboy music, as we drove fifteen hours from Boulder, CO to Austin TX. “With one eye swollen up from the back of your hand. And the other eye fixed on the lights of Cheyenne.”


#notebook

Her Story

Her Story


An incredible game. Lauren and I played it for three hours last night. You use keywords to search a database to find videos of police interviews. You use what is said to choose new keywords to find more videos. Slowly, you piece together what happened.


#notebook

The Bachelorette is very similar to Wolf Hall: they both have a person that needs to get what they want, but also lead and care for their courtiers

The Bachelorette is very similar to Wolf Hall: they both have a person that needs to get what they want, but also lead and care for their courtiers

#notebook

Drawing on the Right Side of the Brain

Drawing on the Right Side of the Brain


#notebook

V for Vendetta (the math band) playing live

V for Vendetta (the math band) playing live

V for Vendetta (Mr. Lady Band) 2002 Houston Live Concert - YouTube


#notebook

Chris Hecker, Structure vs Style

Chris Hecker, Structure vs Style

Structure vs Style, Chris Hecker on Vimeo


So much food for thought.


#notebook

John Siracusa says such great things.

John Siracusa says such great things.

Procedural generation has a couple of things going for it…Like, No Man’s Sky. You can’t make a game like that unless you have an army of people making levels. But if you do procedural to get all these planets then you get a game with a small number of developers. But the thing that procedural generation has behind it is that reality is procedurally generated.


#notebook

Bob Dylan, Love Minus Zero/No Limit

Bob Dylan, Love Minus Zero/No Limit

DUARTINA Alcides Bonaci - YouTube


In the dime stores and bus stations

People talk of situations

Read books, repeat quotations

Draw conclusions on the wall


#notebook

Dont Look Back

Dont Look Back

I love how Dylan is mostly at a remove from the events around him. But, occasionally, like when he gets cross about the glass being throw, he is totally unironic.


It’s cool how Dylan seems to play music all the time.


I love how he dismisses the views of critics, and he prizes and also questions the admiration of the audience. "You really like that song? What do you like about it?“


I love the strange little scene when Baez is playing a song, Dylan is typing something out on the typewriter, and Grossman and the girl are just hanging around.




#notebook

Wolf Hall

Wolf Hall

The BBC adaptation is so great.




#notebook

Clint Hocking, Tone Control

Clint Hocking, Tone Control

Super interesting Tone Control interview with Clint Hocking. He talks about Splinter Cell, taking on responsibilites as both a writer/designer and a manager, and mentions some cool techniques for simulation-based game design.  The page for the podcast episode.


#notebook

Clint Hocking writes about how he worked so hard on Splinter Cell that he lost his memory

Clint Hocking writes about how he worked so hard on Splinter Cell that he lost his memory

http://www.clicknothing.typepad.com/click_nothing/2015/03/ten-years-down.html


#notebook

Joanne Robertson - Marker

Joanne Robertson - Marker

10%20Marker.mp3


Neither this song, nor the album it’s from, really go anywhere. But the mood they create is pretty amazing.


#notebook

Lauren representing !!Con

Lauren representing !!Con


#notebook

Drawing on the Right Side of the Brain

Drawing on the Right Side of the Brain


#notebook

The days are long but the decades are short

The days are long but the decades are short

The days are long but the decades are short - Sam Altman


#notebook

A message from Ramona (and Lauren)

A message from Ramona (and Lauren)


#notebook

Not deadband

Not deadband


#notebook

In Bloom

In Bloom


An incredible Georgian film about a small village. It felt real.


#notebook

Becoming Steve Jobs

Becoming Steve Jobs


#notebook

Ecole 42: a self-directed programming school in Paris

Ecole 42: a self-directed programming school in Paris

This French tech school has no teachers, no books, no tuition -- and it could change everything | VentureBeat


The two most interesting things: there are no teachers, and the students are expected to work very hard.


#notebook

U r beautiful and ur gonna do great today

U r beautiful and ur gonna do great today


#notebook

Buzz Lightyear

Buzz Lightyear


#notebook

Partying with famous people

Partying with famous people

A Conversation With David Casavant, Foremost Raf Simons Collector And Archivist | Complex


#notebook

Me and Lauren in London

Me and Lauren in London


#notebook

First and last frames

First and last frames

First and Final Frames on Vimeo


#notebook

The Tales of Hoffmann

The Tales of Hoffmann

Love and self-delusion. Passion and self-destruction. Lauren and I saw this at the Film Forum. The dancing and singing were incredible.





#notebook

Lauren gloves

Lauren gloves


#notebook

An interesting article about Alex Honnold free-soloing

An interesting article about Alex Honnold free-soloing

The Heart-Stopping Climbs of Alex Honnold - The New York Times


#notebook

Screencast showing the use of ES6 and JS modules in the browser

Screencast showing the use of ES6 and JS modules in the browser

Glen Maddern: Internet Pro


#notebook

Jonathan Ive profile in The New Yorker

Jonathan Ive profile in The New Yorker

Jonathan Ive and the Future of Apple | The New Yorker


Full of interesting information about how he designs Apple’s devices.


Jonathan%20Ive%20and%20the%20Future%20of%20Apple%20_%20The%20New%20Yorker.pdf


#notebook

HyperCard

HyperCard

HyperCard - Wikipedia


A fascinating system for non-programmers to use to write programs. The user can use the same program to view and edit stacks. They can use most of the functionality via the GUI, but can drop down to code if necessary.


#notebook

Elm architecture tutorial

Elm architecture tutorial

GitHub - evancz/elm-architecture-tutorial: How to create modular Elm code that scales nicely with your app


A super-interesting exploration of how a simple pattern can be composed to produce increasingly complex systems.


#notebook

Lauren, Mary and the marshmallow shooter

Lauren, Mary and the marshmallow shooter

Instagram


#notebook

Every Frame a Painting: Drive and the quadrant system

Every Frame a Painting: Drive and the quadrant system

Drive (2011) - The Quadrant System - YouTube


#notebook

Duckspeak Vs Smalltalk

Duckspeak Vs Smalltalk

Dorophone: Duckspeak Vs Smalltalk


An interesting essay about how computers should be programmable by everyone.


#notebook

Tough times on the road to Starcraft

Tough times on the road to Starcraft

Tough times on the road to Starcraft - Code Of Honor


Super interesting article about the development of StarCraft.


#notebook

Tommy Caldwell Climbing Pitch 15 of the Dawn Wall on Yosemite’s El Capitan

Tommy Caldwell Climbing Pitch 15 of the Dawn Wall on Yosemite’s El Capitan

Tommy Caldwell Climbing Pitch 15 | The Dawn Wall - YouTube


One of the most difficult sections of the most difficult climb in the world.


#notebook

Subtext: two-way data flow

Subtext: two-way data flow

Two-way Dataflow on Vimeo


This is a demo of the Subtext programming environment. You can modify values going into the program and the output is live-updated. You can also dig into the execution of the program to see the transformations of state at each step. Even cooler, you can modify the output of the program and all the computations get reversed to calculate the implied input. These transformations, too, are shown explicitly.


The visualisation of the transforms is cleverly done. Each operator or function seems to have its own visualisation. For example, a multiplication is exploded into the operator and the values of the arguments. More complex, a filter is exploded into its collection, its function and a view of the results of applying the fn to each element of the collection.


The flow of values from operation to operation is visualised as a downward flow of data. A value changed using the UI is visualised as a jump upwards that mutates the corresponding item of data. This change is then flowed back down through the operations.


There are some constraints to make this possible. The operations are all lazily evaluated functions. The possible jump mutations are a set of data structure modifications like “put last” on a list. These mutations can only act an data further up the program and can only see state further down the program.


#notebook

Systematic debugging

Systematic debugging

When I am debugging my code, I try to consciously go through the same process every time. I form a hypothesis about what the problem is. I run experiments to test it. If my experiments disprove it, I form a new one and run some new experiments. If my experiments support it to some nebulous level of satisfaction, I assume I have found the source of the bug.


Today, I followed a thread from an Alan Kay talk about the verbosity of programs to the Nile graphics language and started trying to learn OMeta, the language used for writing language parsers. As I began working, it occurred to me that debugging is almost indistinguishable from exploring a system. As I tried to learn how the OMeta grammar definition language works, I was really trying to learn the rules of the system. To do this, I was forming hypotheses and testing them. Which is to say: debugging is exactly the same as learning a system, except the system happens to be broken.


It occurred to me that a recapitulation of my early exploration of OMeta would be a good demonstration of the hypothesise/experiment technique.


I was reading this OMeta tutorial. It showed this example of an OMeta grammar:


ometa Integer {
  Dig =
   '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9',
  Process =
    Dig Dig*
}

Integer.matchAll('42', 'Process');


From the tutorial, I knew that the code in braces was a grammar definition. I knew the top rule in the grammar was Process. I knew the last line was JavaScript code that took the grammar and tried to parse 42 with the grammar, starting from the Process grammar rule. I knew that the parse would succeed and return 2. I stopped reading the tutorial and started exploring the system.


My first thought was that it was strange that [2] was returned. 42 is an integer. Why wasn’t the whole thing returned? My first hypothesis was that the first Dig matched the 4 and the second Dig matched 2 and the * meant return and so only the second digit was returned. I tested this by removing the *.


Process =
 Dig Dig

input: 42


2 was returned. Note that, unlike the last time, the 2 was not wrapped in brackets. This disproved my hypothesis and also introduced the brackets as a new part of the system that I hadn’t noticed before.


My second hypothesis was not so much a hypothesis as a question. What happens if I add a letter to the end of the input to make it 42a? These types of questions are a little dangerous because they can be hard to distinguish from the act of just trying something random in the hope of fixing a bug. In this case, I wasn’t trying to fix a bug, so I was safe. And I feel like a question is legitimate if it is designed to gather more experimental evidence about the behaviour of the system.


I added the * back in and changed the input to 42a.


Process =
 Dig Dig*
input: 42a


The result was [2]. This suggested the parser didn’t have to consume the whole input and would just parse until its rule was satisfied. I took this as my new hypothesis.


This hypothesis was really two hypotheses. First, the parser would need to completely satisfy its rules in order to return something, and satisfaction of Dig Dig meant matching two digits. Second, the parser was OK with only consuming part of the input. I tested the first part of the hypothesis by parsing 4.


Process =
 Dig Dig*
input: 4


It returned []. This meant the first part of my hypothesis was wrong because there was no match error. In fact, it violated another latent assumption I’d made: * meant the rest of the matching input. I abandoned my working hypothesis. I thought for a second and remembered that, in regular expressions, * means zero or more. I removed the * from the Process rule and ran the grammar on the input 4.

Process =
 Dig Dig
input: 4


A “match failed” error was shown.


I put the * back in and ran the grammar on the input 4321.


Process =
 Dig Dig*
input: 4321


[3, 2, 1] was returned, supporting my latest hypothesis.

At this point, my mental model - my hypothesis about the whole system - had become more detailed and better substantiated.


I have more questions, but, at some point, I will run out of questions and will have proved my hypothesis about the system to that nebulous level of satisfaction and will start using my knowledge to build something. And, at some point, I will discover that this hypothesis is wrong and will start the hypothesise/experiment cycle again.


#notebook

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