diff --git a/_includes/category_list.html b/_includes/category_list.html index 360dd40..d83a611 100644 --- a/_includes/category_list.html +++ b/_includes/category_list.html @@ -5,6 +5,7 @@

{{ post.title }}

+ {{ post.excerpt }} {% endfor %} diff --git a/_posts/media/2008-12-23-self-indulgent-musings-on-total.html b/_posts/media/2008-12-23-self-indulgent-musings-on-total.html index 59a8f50..820194c 100644 --- a/_posts/media/2008-12-23-self-indulgent-musings-on-total.html +++ b/_posts/media/2008-12-23-self-indulgent-musings-on-total.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Self-indulgent musings on total knowledge strategy games diff --git a/_posts/media/2009-10-15-vendetta-online.html b/_posts/media/2009-10-15-vendetta-online.html index 112ca03..8f326e2 100644 --- a/_posts/media/2009-10-15-vendetta-online.html +++ b/_posts/media/2009-10-15-vendetta-online.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Vendetta Online diff --git a/_posts/media/2009-11-03-vendetta-redux-eve-online-and-mmo-bug.html b/_posts/media/2009-11-03-vendetta-redux-eve-online-and-mmo-bug.html index ceac319..2bf824d 100644 --- a/_posts/media/2009-11-03-vendetta-redux-eve-online-and-mmo-bug.html +++ b/_posts/media/2009-11-03-vendetta-redux-eve-online-and-mmo-bug.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Vendetta redux, Eve Online, and the MMO bug diff --git a/_posts/media/2010-01-08-scratching-itch.html b/_posts/media/2010-01-08-scratching-itch.html index 42b9497..94b5e43 100644 --- a/_posts/media/2010-01-08-scratching-itch.html +++ b/_posts/media/2010-01-08-scratching-itch.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Scratching the itch diff --git a/_posts/media/2010-02-24-heavy-rain.html b/_posts/media/2010-02-24-heavy-rain.html index 5e97cbb..658406e 100644 --- a/_posts/media/2010-02-24-heavy-rain.html +++ b/_posts/media/2010-02-24-heavy-rain.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Heavy Rain diff --git a/_posts/media/2011-05-29-doctor-who-rebel-flesh-almost-people.html b/_posts/media/2011-05-29-doctor-who-rebel-flesh-almost-people.html index e783017..9b3025e 100644 --- a/_posts/media/2011-05-29-doctor-who-rebel-flesh-almost-people.html +++ b/_posts/media/2011-05-29-doctor-who-rebel-flesh-almost-people.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The Rebel Flesh / The Almost People' diff --git a/_posts/media/2011-05-31-rambling-review-portal-2.html b/_posts/media/2011-05-31-rambling-review-portal-2.html index 327cd9f..23e07e7 100644 --- a/_posts/media/2011-05-31-rambling-review-portal-2.html +++ b/_posts/media/2011-05-31-rambling-review-portal-2.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Rambling Review: Portal 2' diff --git a/_posts/media/2011-06-03-obligatory-river-song-speculation-thread.html b/_posts/media/2011-06-03-obligatory-river-song-speculation-thread.html index 0019890..3f44bb1 100644 --- a/_posts/media/2011-06-03-obligatory-river-song-speculation-thread.html +++ b/_posts/media/2011-06-03-obligatory-river-song-speculation-thread.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Obligatory River Song speculation thread diff --git a/_posts/media/2011-06-04-doctor-who-good-man-goes-to-war.html b/_posts/media/2011-06-04-doctor-who-good-man-goes-to-war.html index f75c935..0805d5b 100644 --- a/_posts/media/2011-06-04-doctor-who-good-man-goes-to-war.html +++ b/_posts/media/2011-06-04-doctor-who-good-man-goes-to-war.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: A Good Man Goes to War' diff --git a/_posts/media/2011-06-12-d-post-mortem-i-wanna-cast-missile.html b/_posts/media/2011-06-12-d-post-mortem-i-wanna-cast-missile.html index df4de85..ce3f4ab 100644 --- a/_posts/media/2011-06-12-d-post-mortem-i-wanna-cast-missile.html +++ b/_posts/media/2011-06-12-d-post-mortem-i-wanna-cast-missile.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'D&D Post-mortem: I wanna cast ''magic missile''!' diff --git a/_posts/media/2011-06-15-duke-nukem-forever-should-not-exist.html b/_posts/media/2011-06-15-duke-nukem-forever-should-not-exist.html index 188e8aa..60b227e 100644 --- a/_posts/media/2011-06-15-duke-nukem-forever-should-not-exist.html +++ b/_posts/media/2011-06-15-duke-nukem-forever-should-not-exist.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Duke Nukem Forever should not exist diff --git a/_posts/media/2011-06-22-rambling-review-braid.html b/_posts/media/2011-06-22-rambling-review-braid.html index addacc0..1c3e74d 100644 --- a/_posts/media/2011-06-22-rambling-review-braid.html +++ b/_posts/media/2011-06-22-rambling-review-braid.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Rambling Review: Braid' diff --git a/_posts/media/2011-06-29-i-know-what-going-to-happen-in-doctor.html b/_posts/media/2011-06-29-i-know-what-going-to-happen-in-doctor.html index 23b4e2d..98da698 100644 --- a/_posts/media/2011-06-29-i-know-what-going-to-happen-in-doctor.html +++ b/_posts/media/2011-06-29-i-know-what-going-to-happen-in-doctor.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: I know what's going to happen in Doctor Who series 6 diff --git a/_posts/media/2011-07-02-d-post-mortem-getting-creative-with.html b/_posts/media/2011-07-02-d-post-mortem-getting-creative-with.html index 49ca1e9..28e7410 100644 --- a/_posts/media/2011-07-02-d-post-mortem-getting-creative-with.html +++ b/_posts/media/2011-07-02-d-post-mortem-getting-creative-with.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'D&D Post-mortem: Getting creative with your mage hands' diff --git a/_posts/media/2011-07-22-puzzle-log-dante-shepherd-twitter-puzzle.html b/_posts/media/2011-07-22-puzzle-log-dante-shepherd-twitter-puzzle.html index 3fe8e8a..13b7c80 100644 --- a/_posts/media/2011-07-22-puzzle-log-dante-shepherd-twitter-puzzle.html +++ b/_posts/media/2011-07-22-puzzle-log-dante-shepherd-twitter-puzzle.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Puzzle Log: Dante Shepherd''s twitter puzzle' diff --git a/_posts/media/2011-08-28-doctor-who-let-kill-hitler.html b/_posts/media/2011-08-28-doctor-who-let-kill-hitler.html index 29ec822..0201818 100644 --- a/_posts/media/2011-08-28-doctor-who-let-kill-hitler.html +++ b/_posts/media/2011-08-28-doctor-who-let-kill-hitler.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: Let''s Kill Hitler' diff --git a/_posts/media/2011-09-06-doctor-who-night-terrors.html b/_posts/media/2011-09-06-doctor-who-night-terrors.html index 9957ef6..92af8da 100644 --- a/_posts/media/2011-09-06-doctor-who-night-terrors.html +++ b/_posts/media/2011-09-06-doctor-who-night-terrors.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: Night Terrors' diff --git a/_posts/media/2011-09-13-doctor-who-girl-who-waited.html b/_posts/media/2011-09-13-doctor-who-girl-who-waited.html index 4774eed..e8c56d4 100644 --- a/_posts/media/2011-09-13-doctor-who-girl-who-waited.html +++ b/_posts/media/2011-09-13-doctor-who-girl-who-waited.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The Girl Who Waited' diff --git a/_posts/media/2011-09-19-doctor-who-god-complex.html b/_posts/media/2011-09-19-doctor-who-god-complex.html index dc0d686..51fbedd 100644 --- a/_posts/media/2011-09-19-doctor-who-god-complex.html +++ b/_posts/media/2011-09-19-doctor-who-god-complex.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The God Complex' diff --git a/_posts/media/2011-09-22-puzzle-log-mgwcc-172-vision-thing.html b/_posts/media/2011-09-22-puzzle-log-mgwcc-172-vision-thing.html index 3d36203..fc9cf78 100644 --- a/_posts/media/2011-09-22-puzzle-log-mgwcc-172-vision-thing.html +++ b/_posts/media/2011-09-22-puzzle-log-mgwcc-172-vision-thing.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Puzzle Log: MGWCC #172 - The Vision Thing' diff --git a/_posts/media/2011-09-28-doctor-who-closing-time.html b/_posts/media/2011-09-28-doctor-who-closing-time.html index e3e3bd6..ab08cd9 100644 --- a/_posts/media/2011-09-28-doctor-who-closing-time.html +++ b/_posts/media/2011-09-28-doctor-who-closing-time.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: Closing Time' diff --git a/_posts/media/2011-10-05-doctor-who-wedding-of-river-song.html b/_posts/media/2011-10-05-doctor-who-wedding-of-river-song.html index 81b24c1..47f8f91 100644 --- a/_posts/media/2011-10-05-doctor-who-wedding-of-river-song.html +++ b/_posts/media/2011-10-05-doctor-who-wedding-of-river-song.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The Wedding of River Song' diff --git a/_posts/media/2011-12-05-why-i-excited-about-legend-of-korra.html b/_posts/media/2011-12-05-why-i-excited-about-legend-of-korra.html index 63fa48d..6bcd846 100644 --- a/_posts/media/2011-12-05-why-i-excited-about-legend-of-korra.html +++ b/_posts/media/2011-12-05-why-i-excited-about-legend-of-korra.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Why I'm excited about The Legend of Korra diff --git a/_posts/media/2011-12-12-wandering-son-reflections-episode-1-no.html b/_posts/media/2011-12-12-wandering-son-reflections-episode-1-no.html index 44a45c0..974a41d 100644 --- a/_posts/media/2011-12-12-wandering-son-reflections-episode-1-no.html +++ b/_posts/media/2011-12-12-wandering-son-reflections-episode-1-no.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 1 - "Onna no Kotte, Nande Dekiteru?"' diff --git a/_posts/media/2011-12-15-wandering-son-reflections-episode-2.html b/_posts/media/2011-12-15-wandering-son-reflections-episode-2.html index ff7948b..841eee5 100644 --- a/_posts/media/2011-12-15-wandering-son-reflections-episode-2.html +++ b/_posts/media/2011-12-15-wandering-son-reflections-episode-2.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 2 - "Kirai, Kirai, Daikirai"' diff --git a/_posts/media/2011-12-19-wandering-son-reflections-episode-3-to.html b/_posts/media/2011-12-19-wandering-son-reflections-episode-3-to.html index 0c00b20..a0d3d88 100644 --- a/_posts/media/2011-12-19-wandering-son-reflections-episode-3-to.html +++ b/_posts/media/2011-12-19-wandering-son-reflections-episode-3-to.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 3 - "Romio to Jurietto"' diff --git a/_posts/media/2011-12-22-wandering-son-reflections-episode-4-no.html b/_posts/media/2011-12-22-wandering-son-reflections-episode-4-no.html index e55c4bd..23dfa58 100644 --- a/_posts/media/2011-12-22-wandering-son-reflections-episode-4-no.html +++ b/_posts/media/2011-12-22-wandering-son-reflections-episode-4-no.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 4 - "Watashi no Namae o Ageru"' diff --git a/_posts/media/2011-12-29-doctor-who-doctor-widow-and-wardrobe.html b/_posts/media/2011-12-29-doctor-who-doctor-widow-and-wardrobe.html index e9a0fb2..c3a2a26 100644 --- a/_posts/media/2011-12-29-doctor-who-doctor-widow-and-wardrobe.html +++ b/_posts/media/2011-12-29-doctor-who-doctor-widow-and-wardrobe.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The Doctor, The Widow, and the Wardrobe' diff --git a/_posts/media/2012-01-01-wandering-son-reflections-episode-5-no.html b/_posts/media/2012-01-01-wandering-son-reflections-episode-5-no.html index 8c51c57..adc4e16 100644 --- a/_posts/media/2012-01-01-wandering-son-reflections-episode-5-no.html +++ b/_posts/media/2012-01-01-wandering-son-reflections-episode-5-no.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 5 - "Natsu no Owari ni"' diff --git a/_posts/media/2012-01-23-mit-mystery-hunt-2012.html b/_posts/media/2012-01-23-mit-mystery-hunt-2012.html index 76a0e97..853e4e6 100644 --- a/_posts/media/2012-01-23-mit-mystery-hunt-2012.html +++ b/_posts/media/2012-01-23-mit-mystery-hunt-2012.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: MIT Mystery Hunt 2012 diff --git a/_posts/media/2012-01-25-wandering-son-reflections-episode-6.html b/_posts/media/2012-01-25-wandering-son-reflections-episode-6.html index d52486e..0f217e5 100644 --- a/_posts/media/2012-01-25-wandering-son-reflections-episode-6.html +++ b/_posts/media/2012-01-25-wandering-son-reflections-episode-6.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 6 - "Bunkasai"' diff --git a/_posts/media/2012-01-28-wandering-son-reflections-episode-7-no.html b/_posts/media/2012-01-28-wandering-son-reflections-episode-7-no.html index c390dc2..034002b 100644 --- a/_posts/media/2012-01-28-wandering-son-reflections-episode-7-no.html +++ b/_posts/media/2012-01-28-wandering-son-reflections-episode-7-no.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Wandering Son Reflections: Episode 7 - "Barairo no Hoho"' diff --git a/_posts/media/2012-04-23-concerto-for-rainy-day-2012-carolina.html b/_posts/media/2012-04-23-concerto-for-rainy-day-2012-carolina.html index 8027474..d8c0dd9 100644 --- a/_posts/media/2012-04-23-concerto-for-rainy-day-2012-carolina.html +++ b/_posts/media/2012-04-23-concerto-for-rainy-day-2012-carolina.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Concerto for a Rainy Day - 2012 Carolina Spring Go Tournament report diff --git a/_posts/media/2012-04-26-languages-of-skyrim.html b/_posts/media/2012-04-26-languages-of-skyrim.html index 364f22d..2bc409b 100644 --- a/_posts/media/2012-04-26-languages-of-skyrim.html +++ b/_posts/media/2012-04-26-languages-of-skyrim.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: Languages of Skyrim diff --git a/_posts/media/2012-09-07-doctor-who-asylum-of-daleks.html b/_posts/media/2012-09-07-doctor-who-asylum-of-daleks.html index 9e5025c..8387e2b 100644 --- a/_posts/media/2012-09-07-doctor-who-asylum-of-daleks.html +++ b/_posts/media/2012-09-07-doctor-who-asylum-of-daleks.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: Asylum of the Daleks' diff --git a/_posts/media/2012-09-21-doctor-who-dinosaurs-on-spaceship.html b/_posts/media/2012-09-21-doctor-who-dinosaurs-on-spaceship.html index 3864be1..2926816 100644 --- a/_posts/media/2012-09-21-doctor-who-dinosaurs-on-spaceship.html +++ b/_posts/media/2012-09-21-doctor-who-dinosaurs-on-spaceship.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: Dinosaurs on a Spaceship' diff --git a/_posts/media/2012-10-03-doctor-who-town-called-mercy.html b/_posts/media/2012-10-03-doctor-who-town-called-mercy.html index a2b38bd..c0eed46 100644 --- a/_posts/media/2012-10-03-doctor-who-town-called-mercy.html +++ b/_posts/media/2012-10-03-doctor-who-town-called-mercy.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: A Town Called Mercy' diff --git a/_posts/media/2012-10-18-doctor-who-power-of-three.html b/_posts/media/2012-10-18-doctor-who-power-of-three.html index d3cdad1..b5be18a 100644 --- a/_posts/media/2012-10-18-doctor-who-power-of-three.html +++ b/_posts/media/2012-10-18-doctor-who-power-of-three.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The Power of Three' diff --git a/_posts/media/2012-10-25-an-adventure-in-transliteration.html b/_posts/media/2012-10-25-an-adventure-in-transliteration.html index a624aa1..100dcc0 100644 --- a/_posts/media/2012-10-25-an-adventure-in-transliteration.html +++ b/_posts/media/2012-10-25-an-adventure-in-transliteration.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: An adventure in transliteration diff --git a/_posts/media/2012-10-31-doctor-who-angels-take-manhattan.html b/_posts/media/2012-10-31-doctor-who-angels-take-manhattan.html index 889386e..5099013 100644 --- a/_posts/media/2012-10-31-doctor-who-angels-take-manhattan.html +++ b/_posts/media/2012-10-31-doctor-who-angels-take-manhattan.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: media layout: post title: 'Doctor Who: The Angels Take Manhattan' @@ -16,4 +17,4 @@ blogger_id: tag:blogger.com,1999:blog-4209116010564764361.post-14776317181898837 blogger_orig_url: http://www.stringofbits.net/2012/10/doctor-who-angels-take-manhattan.html --- -The Angels Take Manhattan is about endings. Not the end of the world, or the universe, or time, like past epic stories have been about. It is about regular human endings, about saying goodbye and the things in life that keep us from the people we love. It is about leaving Neverland, finding that Peter won't be coming back for you after all, even though he might want to.

The theme of endings is played with from the opening on: the Doctor tearing out the last page of his book and declaring "I hate endings" is paid off at the end of the story with Amy's line "You and me, on the last page". The dialogue throughout the episode is poignant, but this pair of lines perfectly bookends it. Rory's death is also (once again) hinted at throughout the episode. And as a counterpoint to the theme of endings, we have references to the last two and a half years scattered throughout this episode - small moments or lines of dialogue that echo Amy and Rory's story. That this is a departure story is coded deeply and obviously into this episode.

So, what force could possibly pull Wendy from Neverland? The answer is, of course, right there in the title: the Weeping Angels.

When I first watched Blink, it seemed to me that while they were a very clever idea, the Angels could only really work once, because there was only one story they were really suited for, and I had just watched it. So, I went in to The Time of Angels warily. And it turns out there was something else you could do with the Angels - collide them into a space marine action film and then suddenly change that into a story about trust. The Time of Angels also made the angels much scarier by suggesting that they were born in imagination, by thinking about them.

And coupled with this is a realization that didn't hit me until the second time I watched Blink: the Angels can move when nobody is looking at them. Yet repeatedly, in stories with the Angels, they are clearly visible as still statues when *none of the characters* are looking at them. Diegetically, then, they should be free to move, to zap their prey back in time.

So why do they stay stone-faced? The most interesting answer - and it seems consistent with Moffat's thematic tendencies and understanding of the franchise - is that the Angels have an meta-diegetic existence. They have to remain stone because *the viewer* is watching. Time of Angels also established, of course, that the Angels defense mechanism is based in part on their perceptions; they will remain stone as long as they *think* you can see them.

In other words, the Angels know you are watching them. They can see you.

And just in case you feel safe with the knowledge that it's only a television show, remember that even diegetically, they were born from imagination. They are by their nature written into existence.

But in The Angels Take Manhattan, it isn't just the Angels that have a hinted-at meta-diegetic existence. The entire episode plays heavily according to narrative logic, so much that it acquires the existence of the viewer in order to make basic sense. The first instance of this is when the Doctor explains that reading ahead - knowing your own personal future - makes it inevitable. That you can still change things as long as you don't know they are going to happen. Immediately after this declaration, though, Rory's name is shown on a tombstone. Note that this event is now inevitable - a fixed point has been created, to borrow the Doctor's phrase. But none of the *characters* have seen the tombstone, only the audience. And yet the fact that our seeing the tombstone makes Rory's death inevitable is clearly the intent of the narrative - otherwise there is no reason for it to be juxtaposed with the Doctor's speech about spoilers.

The other example is the Doctor's statement that they are allowed to read "things that are happening now, in parallel". There are two ways to read this: 'parallel' can mean 'written events that correspond with what we are doing right now'. But it also suggests that the two sets of events, in different time periods, are somehow happening at the same intrinsic 'moment'. Russel T Davies hinted at this idea in The End of Time, as well, when Rassilon says that the Doctor is "in possession of the Moment". But the 'present moment' in a story is really the moment that is receiving Narrative Focus. The "present" is the part of the story we're reading. This applies equally well to River's book and to the episode of Doctor Who.

So the diegetic rules of the narrative universe can operate on the meta-narrative level. This isn't really anything new for Doctor Who, but it has never been used this extensively before.

So the Angels have some amount of awareness of the narrative, and this gives them the power to attack the narrative. They never threaten to destroy the show completely, but they are able to write Amy and Rory out of it. And yet they exit with a dignity that few companions have ever been afforded. They die, but in a very normal, human way, after a full and normal life. They are ripped from Neverland, and that is tragic, but they still find a way to be happy.

And so Rory grows up, and adopts a son, who will eventually track down his grandfather and deliver a letter to him at a particular time and place. From his perspective, his son and daughter-in-law have barely been gone any time at all. This is a powerful parallel to the first appearance of the Angels, and a wonderful final note for Rory. It is a shame it didn't make it into the episode. I agree with the decision to cut it, though - the final notes for the episode are on Amy and the Doctor, which is correct. Rory receives the focus of the narrative for most of the episode itself, and Amy's departure hinges on her choice of Rory over the Doctor. Thematically, Brian's scene would have weakened the ending. It is better where it is, as a piece of para-textual lore, present but not interrupting the main narrative.

And so Amy grows up, not resenting a Doctor who never came back for her, but missing a friend who was separated by circumstance. It is a much kinder ending than I expected. And it comes on the heels of a story that emphasizes that leaving Fairyland is not a necessity, that it is okay to run away and stay a Fairy Child forever. So we know that this separation is cruel and unnecessary, required diegetically only by circumstance and meta-diegetically by the format of the show (which requires that companions come and go). The show has explicitly avoided allowing a reading that says we have to eventually grow up. Sometimes we do, but not because it is the only path to happiness. \ No newline at end of file +The Angels Take Manhattan is about endings. Not the end of the world, or the universe, or time, like past epic stories have been about. It is about regular human endings, about saying goodbye and the things in life that keep us from the people we love. It is about leaving Neverland, finding that Peter won't be coming back for you after all, even though he might want to.

The theme of endings is played with from the opening on: the Doctor tearing out the last page of his book and declaring "I hate endings" is paid off at the end of the story with Amy's line "You and me, on the last page". The dialogue throughout the episode is poignant, but this pair of lines perfectly bookends it. Rory's death is also (once again) hinted at throughout the episode. And as a counterpoint to the theme of endings, we have references to the last two and a half years scattered throughout this episode - small moments or lines of dialogue that echo Amy and Rory's story. That this is a departure story is coded deeply and obviously into this episode.

So, what force could possibly pull Wendy from Neverland? The answer is, of course, right there in the title: the Weeping Angels.

When I first watched Blink, it seemed to me that while they were a very clever idea, the Angels could only really work once, because there was only one story they were really suited for, and I had just watched it. So, I went in to The Time of Angels warily. And it turns out there was something else you could do with the Angels - collide them into a space marine action film and then suddenly change that into a story about trust. The Time of Angels also made the angels much scarier by suggesting that they were born in imagination, by thinking about them.

And coupled with this is a realization that didn't hit me until the second time I watched Blink: the Angels can move when nobody is looking at them. Yet repeatedly, in stories with the Angels, they are clearly visible as still statues when *none of the characters* are looking at them. Diegetically, then, they should be free to move, to zap their prey back in time.

So why do they stay stone-faced? The most interesting answer - and it seems consistent with Moffat's thematic tendencies and understanding of the franchise - is that the Angels have an meta-diegetic existence. They have to remain stone because *the viewer* is watching. Time of Angels also established, of course, that the Angels defense mechanism is based in part on their perceptions; they will remain stone as long as they *think* you can see them.

In other words, the Angels know you are watching them. They can see you.

And just in case you feel safe with the knowledge that it's only a television show, remember that even diegetically, they were born from imagination. They are by their nature written into existence.

But in The Angels Take Manhattan, it isn't just the Angels that have a hinted-at meta-diegetic existence. The entire episode plays heavily according to narrative logic, so much that it acquires the existence of the viewer in order to make basic sense. The first instance of this is when the Doctor explains that reading ahead - knowing your own personal future - makes it inevitable. That you can still change things as long as you don't know they are going to happen. Immediately after this declaration, though, Rory's name is shown on a tombstone. Note that this event is now inevitable - a fixed point has been created, to borrow the Doctor's phrase. But none of the *characters* have seen the tombstone, only the audience. And yet the fact that our seeing the tombstone makes Rory's death inevitable is clearly the intent of the narrative - otherwise there is no reason for it to be juxtaposed with the Doctor's speech about spoilers.

The other example is the Doctor's statement that they are allowed to read "things that are happening now, in parallel". There are two ways to read this: 'parallel' can mean 'written events that correspond with what we are doing right now'. But it also suggests that the two sets of events, in different time periods, are somehow happening at the same intrinsic 'moment'. Russel T Davies hinted at this idea in The End of Time, as well, when Rassilon says that the Doctor is "in possession of the Moment". But the 'present moment' in a story is really the moment that is receiving Narrative Focus. The "present" is the part of the story we're reading. This applies equally well to River's book and to the episode of Doctor Who.

So the diegetic rules of the narrative universe can operate on the meta-narrative level. This isn't really anything new for Doctor Who, but it has never been used this extensively before.

So the Angels have some amount of awareness of the narrative, and this gives them the power to attack the narrative. They never threaten to destroy the show completely, but they are able to write Amy and Rory out of it. And yet they exit with a dignity that few companions have ever been afforded. They die, but in a very normal, human way, after a full and normal life. They are ripped from Neverland, and that is tragic, but they still find a way to be happy.

And so Rory grows up, and adopts a son, who will eventually track down his grandfather and deliver a letter to him at a particular time and place. From his perspective, his son and daughter-in-law have barely been gone any time at all. This is a powerful parallel to the first appearance of the Angels, and a wonderful final note for Rory. It is a shame it didn't make it into the episode. I agree with the decision to cut it, though - the final notes for the episode are on Amy and the Doctor, which is correct. Rory receives the focus of the narrative for most of the episode itself, and Amy's departure hinges on her choice of Rory over the Doctor. Thematically, Brian's scene would have weakened the ending. It is better where it is, as a piece of para-textual lore, present but not interrupting the main narrative.

And so Amy grows up, not resenting a Doctor who never came back for her, but missing a friend who was separated by circumstance. It is a much kinder ending than I expected. And it comes on the heels of a story that emphasizes that leaving Fairyland is not a necessity, that it is okay to run away and stay a Fairy Child forever. So we know that this separation is cruel and unnecessary, required diegetically only by circumstance and meta-diegetically by the format of the show (which requires that companions come and go). The show has explicitly avoided allowing a reading that says we have to eventually grow up. Sometimes we do, but not because it is the only path to happiness. diff --git a/_posts/technology/2006-08-22-programming-theory.html b/_posts/technology/2006-08-22-programming-theory.html index 3ab2e6c..5c918fa 100644 --- a/_posts/technology/2006-08-22-programming-theory.html +++ b/_posts/technology/2006-08-22-programming-theory.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Programming: The theory' diff --git a/_posts/technology/2006-08-25-technophobia.html b/_posts/technology/2006-08-25-technophobia.html index e08ae02..a6b9ee9 100644 --- a/_posts/technology/2006-08-25-technophobia.html +++ b/_posts/technology/2006-08-25-technophobia.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Technophobia diff --git a/_posts/technology/2006-11-09-decentralizing-second-life.html b/_posts/technology/2006-11-09-decentralizing-second-life.html index 8a0f367..7fd8c84 100644 --- a/_posts/technology/2006-11-09-decentralizing-second-life.html +++ b/_posts/technology/2006-11-09-decentralizing-second-life.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Decentralizing Second Life diff --git a/_posts/technology/2007-05-01-28.html b/_posts/technology/2007-05-01-28.html index 4090895..95c592f 100644 --- a/_posts/technology/2007-05-01-28.html +++ b/_posts/technology/2007-05-01-28.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 2^8 diff --git a/_posts/technology/2007-05-13-then-they-fight-you.html b/_posts/technology/2007-05-13-then-they-fight-you.html index ede9a6d..46c3aad 100644 --- a/_posts/technology/2007-05-13-then-they-fight-you.html +++ b/_posts/technology/2007-05-13-then-they-fight-you.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Then They Fight You diff --git a/_posts/technology/2007-07-24-linux-on-desktop-partial-solution.html b/_posts/technology/2007-07-24-linux-on-desktop-partial-solution.html index 77da9f1..0b2acae 100644 --- a/_posts/technology/2007-07-24-linux-on-desktop-partial-solution.html +++ b/_posts/technology/2007-07-24-linux-on-desktop-partial-solution.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Linux on the Desktop - a partial solution diff --git a/_posts/technology/2008-11-19-nintendo-and-homebrew-arms-race.html b/_posts/technology/2008-11-19-nintendo-and-homebrew-arms-race.html index f9e53ae..9e2b131 100644 --- a/_posts/technology/2008-11-19-nintendo-and-homebrew-arms-race.html +++ b/_posts/technology/2008-11-19-nintendo-and-homebrew-arms-race.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Nintendo and the Homebrew Arms Race diff --git a/_posts/technology/2008-12-06-paranoid-security-establishing.html b/_posts/technology/2008-12-06-paranoid-security-establishing.html index 696621f..addd69e 100644 --- a/_posts/technology/2008-12-06-paranoid-security-establishing.html +++ b/_posts/technology/2008-12-06-paranoid-security-establishing.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Paranoid Security: Establishing a Connection the Hard Way' diff --git a/_posts/technology/2008-12-31-com-is-new-org.html b/_posts/technology/2008-12-31-com-is-new-org.html index ce4d4ce..372585d 100644 --- a/_posts/technology/2008-12-31-com-is-new-org.html +++ b/_posts/technology/2008-12-31-com-is-new-org.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: ".com is the new .org" diff --git a/_posts/technology/2009-01-07-an-aside-on-education.html b/_posts/technology/2009-01-07-an-aside-on-education.html index c3cfe3a..104234b 100644 --- a/_posts/technology/2009-01-07-an-aside-on-education.html +++ b/_posts/technology/2009-01-07-an-aside-on-education.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: An aside on Education diff --git a/_posts/technology/2009-01-14-5-things-i-hate-about-fedora-10.html b/_posts/technology/2009-01-14-5-things-i-hate-about-fedora-10.html index 93c5c21..0b51360 100644 --- a/_posts/technology/2009-01-14-5-things-i-hate-about-fedora-10.html +++ b/_posts/technology/2009-01-14-5-things-i-hate-about-fedora-10.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 5 things I hate about Fedora 10 diff --git a/_posts/technology/2009-01-17-it-is-pitch-black-you-are-likely-to-be.html b/_posts/technology/2009-01-17-it-is-pitch-black-you-are-likely-to-be.html index f3dc2cd..b0516fc 100644 --- a/_posts/technology/2009-01-17-it-is-pitch-black-you-are-likely-to-be.html +++ b/_posts/technology/2009-01-17-it-is-pitch-black-you-are-likely-to-be.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: It is pitch black. You are likely to be flamed by a fanboy. diff --git a/_posts/technology/2009-04-27-the-case-of-odd-networkmanager-behavior.html b/_posts/technology/2009-04-27-the-case-of-odd-networkmanager-behavior.html index 7afc75e..b7a4beb 100644 --- a/_posts/technology/2009-04-27-the-case-of-odd-networkmanager-behavior.html +++ b/_posts/technology/2009-04-27-the-case-of-odd-networkmanager-behavior.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: The Case of the Odd NetworkManager Behavior diff --git a/_posts/technology/2009-05-27-how-to-fix-pulseaudio-in-fedora-in-2.html b/_posts/technology/2009-05-27-how-to-fix-pulseaudio-in-fedora-in-2.html index 5d3a9da..94d2a13 100644 --- a/_posts/technology/2009-05-27-how-to-fix-pulseaudio-in-fedora-in-2.html +++ b/_posts/technology/2009-05-27-how-to-fix-pulseaudio-in-fedora-in-2.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: How to fix PulseAudio in Fedora in 2 easy steps! diff --git a/_posts/technology/2009-06-25-my-new-project-netjatafl.html b/_posts/technology/2009-06-25-my-new-project-netjatafl.html index 4218fc0..f7fe7e6 100644 --- a/_posts/technology/2009-06-25-my-new-project-netjatafl.html +++ b/_posts/technology/2009-06-25-my-new-project-netjatafl.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: My new project - netjatafl diff --git a/_posts/technology/2009-07-02-twitter-from-command-line.html b/_posts/technology/2009-07-02-twitter-from-command-line.html index d1def07..6a10b60 100644 --- a/_posts/technology/2009-07-02-twitter-from-command-line.html +++ b/_posts/technology/2009-07-02-twitter-from-command-line.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Twitter from the command line diff --git a/_posts/technology/2009-07-03-thoughts-on-transhuman-revolution.html b/_posts/technology/2009-07-03-thoughts-on-transhuman-revolution.html index afc9d57..0153a5b 100644 --- a/_posts/technology/2009-07-03-thoughts-on-transhuman-revolution.html +++ b/_posts/technology/2009-07-03-thoughts-on-transhuman-revolution.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Thoughts on the Transhuman revolution diff --git a/_posts/technology/2009-08-22-d20tools-03-is-here.html b/_posts/technology/2009-08-22-d20tools-03-is-here.html index 94df819..5819c70 100644 --- a/_posts/technology/2009-08-22-d20tools-03-is-here.html +++ b/_posts/technology/2009-08-22-d20tools-03-is-here.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: d20tools 0.3 is here diff --git a/_posts/technology/2009-08-24-the-decentralized-metaverse.html b/_posts/technology/2009-08-24-the-decentralized-metaverse.html index 9d55530..a966096 100644 --- a/_posts/technology/2009-08-24-the-decentralized-metaverse.html +++ b/_posts/technology/2009-08-24-the-decentralized-metaverse.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: The Decentralized Metaverse diff --git a/_posts/technology/2009-08-31-emacs-23-dbus-and-libnotify.html b/_posts/technology/2009-08-31-emacs-23-dbus-and-libnotify.html index 635ef5e..b7bc196 100644 --- a/_posts/technology/2009-08-31-emacs-23-dbus-and-libnotify.html +++ b/_posts/technology/2009-08-31-emacs-23-dbus-and-libnotify.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: emacs 23, dbus, and libnotify diff --git a/_posts/technology/2009-08-31-so-close-netflix.html b/_posts/technology/2009-08-31-so-close-netflix.html index e0ba50b..6b19acf 100644 --- a/_posts/technology/2009-08-31-so-close-netflix.html +++ b/_posts/technology/2009-08-31-so-close-netflix.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: so close, Netflix diff --git a/_posts/technology/2009-09-08-tutorial-creating-opensim-terrain-with.html b/_posts/technology/2009-09-08-tutorial-creating-opensim-terrain-with.html index 553f987..83342b4 100644 --- a/_posts/technology/2009-09-08-tutorial-creating-opensim-terrain-with.html +++ b/_posts/technology/2009-09-08-tutorial-creating-opensim-terrain-with.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Tutorial: Creating OpenSim terrain with Blender' diff --git a/_posts/technology/2010-01-08-bulding-bridges-in-metaverse.html b/_posts/technology/2010-01-08-bulding-bridges-in-metaverse.html index afad78a..85bcf64 100644 --- a/_posts/technology/2010-01-08-bulding-bridges-in-metaverse.html +++ b/_posts/technology/2010-01-08-bulding-bridges-in-metaverse.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Bulding bridges in the metaverse diff --git a/_posts/technology/2011-05-26-bittorrent-linux-way.html b/_posts/technology/2011-05-26-bittorrent-linux-way.html index d60a54a..6a8005b 100644 --- a/_posts/technology/2011-05-26-bittorrent-linux-way.html +++ b/_posts/technology/2011-05-26-bittorrent-linux-way.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: BitTorrent, the Linux way diff --git a/_posts/technology/2011-06-02-gaming-in-linux-my-adventures-with-wine.html b/_posts/technology/2011-06-02-gaming-in-linux-my-adventures-with-wine.html index 171abdb..2c46d22 100644 --- a/_posts/technology/2011-06-02-gaming-in-linux-my-adventures-with-wine.html +++ b/_posts/technology/2011-06-02-gaming-in-linux-my-adventures-with-wine.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Gaming in Linux - my adventures with wine diff --git a/_posts/technology/2011-06-08-tabletop-roleplaying-over-internet.html b/_posts/technology/2011-06-08-tabletop-roleplaying-over-internet.html index ac63d9b..1281e32 100644 --- a/_posts/technology/2011-06-08-tabletop-roleplaying-over-internet.html +++ b/_posts/technology/2011-06-08-tabletop-roleplaying-over-internet.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Tabletop Roleplaying over the Internet diff --git a/_posts/technology/2011-06-18-the-escapist-decline-of-website.html b/_posts/technology/2011-06-18-the-escapist-decline-of-website.html index 9b7875b..09e2b12 100644 --- a/_posts/technology/2011-06-18-the-escapist-decline-of-website.html +++ b/_posts/technology/2011-06-18-the-escapist-decline-of-website.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: The Escapist - decline of a website diff --git a/_posts/technology/2011-06-26-project-treewars-beginning.html b/_posts/technology/2011-06-26-project-treewars-beginning.html index 27710aa..891d847 100644 --- a/_posts/technology/2011-06-26-project-treewars-beginning.html +++ b/_posts/technology/2011-06-26-project-treewars-beginning.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Project TreeWars: The Beginning' diff --git a/_posts/technology/2011-07-06-project-treewars-how-to-write-bad-code.html b/_posts/technology/2011-07-06-project-treewars-how-to-write-bad-code.html index 0613222..9c0270a 100644 --- a/_posts/technology/2011-07-06-project-treewars-how-to-write-bad-code.html +++ b/_posts/technology/2011-07-06-project-treewars-how-to-write-bad-code.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Project TreeWars: How to write bad code' diff --git a/_posts/technology/2011-07-13-project-treewars-road-to-opengl.html b/_posts/technology/2011-07-13-project-treewars-road-to-opengl.html index 51b7077..7d0020d 100644 --- a/_posts/technology/2011-07-13-project-treewars-road-to-opengl.html +++ b/_posts/technology/2011-07-13-project-treewars-road-to-opengl.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Project TreeWars: the road to OpenGL' diff --git a/_posts/technology/2011-07-17-project-treewars-when-is-opengl-not.html b/_posts/technology/2011-07-17-project-treewars-when-is-opengl-not.html index 4128bca..b836072 100644 --- a/_posts/technology/2011-07-17-project-treewars-when-is-opengl-not.html +++ b/_posts/technology/2011-07-17-project-treewars-when-is-opengl-not.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Project TreeWars: When is an OpenGL not an OpenGL?' diff --git a/_posts/technology/2011-07-24-project-treewars-how-anna-got-her-title.html b/_posts/technology/2011-07-24-project-treewars-how-anna-got-her-title.html index 113db65..64820a9 100644 --- a/_posts/technology/2011-07-24-project-treewars-how-anna-got-her-title.html +++ b/_posts/technology/2011-07-24-project-treewars-how-anna-got-her-title.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Project TreeWars: How Anna got her Title Screen back' diff --git a/_posts/technology/2011-09-07-more-thoughts-on-escapist.html b/_posts/technology/2011-09-07-more-thoughts-on-escapist.html index 16091cc..f26b640 100644 --- a/_posts/technology/2011-09-07-more-thoughts-on-escapist.html +++ b/_posts/technology/2011-09-07-more-thoughts-on-escapist.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: More thoughts on the Escapist diff --git a/_posts/technology/2011-09-15-ea-origin-or-case-study-in-bad-consumer.html b/_posts/technology/2011-09-15-ea-origin-or-case-study-in-bad-consumer.html index 4f134ec..96c3722 100644 --- a/_posts/technology/2011-09-15-ea-origin-or-case-study-in-bad-consumer.html +++ b/_posts/technology/2011-09-15-ea-origin-or-case-study-in-bad-consumer.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'EA Origin, or: a Case Study in bad consumer experience' diff --git a/_posts/technology/2011-10-14-dmr.html b/_posts/technology/2011-10-14-dmr.html index 50c2ae1..218b95a 100644 --- a/_posts/technology/2011-10-14-dmr.html +++ b/_posts/technology/2011-10-14-dmr.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: dmr diff --git a/_posts/technology/2011-11-12-desura-what-steam-should-have-been.html b/_posts/technology/2011-11-12-desura-what-steam-should-have-been.html index 30dcc8e..c91bf0c 100644 --- a/_posts/technology/2011-11-12-desura-what-steam-should-have-been.html +++ b/_posts/technology/2011-11-12-desura-what-steam-should-have-been.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Desura - what Steam should have been diff --git a/_posts/technology/2011-12-18-project-treewars-going-in-circles.html b/_posts/technology/2011-12-18-project-treewars-going-in-circles.html index 17b0d4d..9d74e0a 100644 --- a/_posts/technology/2011-12-18-project-treewars-going-in-circles.html +++ b/_posts/technology/2011-12-18-project-treewars-going-in-circles.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'Project Treewars: Going in Circles' diff --git a/_posts/technology/2012-04-19-pygo-go-game-client.html b/_posts/technology/2012-04-19-pygo-go-game-client.html index 632a02d..073113b 100644 --- a/_posts/technology/2012-04-19-pygo-go-game-client.html +++ b/_posts/technology/2012-04-19-pygo-go-game-client.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: pygo - a go game client diff --git a/_posts/technology/2014-12-27-what-hell-is-happening-to-psn.html b/_posts/technology/2014-12-27-what-hell-is-happening-to-psn.html index f10dbd1..adecc76 100644 --- a/_posts/technology/2014-12-27-what-hell-is-happening-to-psn.html +++ b/_posts/technology/2014-12-27-what-hell-is-happening-to-psn.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: What the hell is happening to PSN? @@ -17,4 +18,4 @@ blogger_id: tag:blogger.com,1999:blog-4209116010564764361.post-31280314593617704 blogger_orig_url: http://www.stringofbits.net/2014/12/what-hell-is-happening-to-psn.html --- -All day yesterday, I watched my husband trying to log into FF XIV on the PS4. All day, the PSN sign in servers remained down. They're still listed as offline now. Xbox Live has been back up since yesterday afternoon. So what's taking Sony so long?

Keeping production servers online is a large part of what I do professionally, so... I know this problem domain pretty well. And I've seen a lot of... speculation that is deeply misinformed. Here are my thoughts on the problem.

First: the cause of the outage. All evidence points to this being a DDoS (Distributed Denial of Service) attack. This is when a whole lot of computers from a lot of different locations send as much traffic as they can at a service, in an attempt to overwhelm it and knock it offline. The most common tool used to send all this traffic is a botnet. Building and maintaining a botnet requires a large amount of technical expertise. *Using* a botnet, on the other hand, just requires money and connections. Because the people who take the time to build a botnet often want to make money from it, so they sell time on them.

Which brings us to the culprits of the DDoS; a group calling themselves Lizard Squad has taken credit for the attack. Whether they have any technical expertise is unknown, but they certainly seem to have access to one or more reasonably effective botnets. However, they claim to have stopped their attack yesterday, and PSN remains offline. Mitigating DDoS attacks is a tricky problem; there are things that work pretty well, but there's always an upper bound on how much traffic you can mitigate.

So there are a few possibilities.


  1. Lizard Squad is lying, and is still attacking PSN. If they have some vested interest in making Microsoft look more competent than Sony, this is pretty plausible. Mitigating a DDoS is a real challenge, and Sony and Microsoft both clearly can't cope with these attacks. The usual solution would be to bring up more instances of the signin server; if that isn't mitigating the issue then the network infrastructure may not be able to cope either. Which doesn't say great things about Sony or Microsoft's network infrastructure. But then, this whole scenario doesn't say great things about the infrastructures of either services.
  2. Another group is also attacking PSN. Not much to add here; if Sony is still overwhelmed with traffic there's little they can do.
  3. Sony intentionally kept PSN offline to do some sort of emergency upgrades. This seems really unlikely to me; there's simply too much demand during the holidays to justify this. Sony would surely bring the servers back up and work on patches in parallel with that.
  4. The attack exposed a software bug in Sony's signin servers. If the signin server software is crash-looping or inexplicably serving errors now, it may be down despite engineers working on a fix as hard as they can. This would suggest that they're relying pretty heavily on some sort of stateful information that has entered a bad state, possibly a cache of some kind. (which can't be invalidated for some reason) Another possibility, which would suck for everyone involved, is that some bug caused user authentication data to be corrupted when the server was overloaded. If Sony is having to restore username/password hash data from a backup, that would explain why they are still offline. It would also explain why PSN seems to be working for some users but not others right now.
Personally, I suspect #4. It fits the evidence and observed behavior of the system the best. If so, we can only hope that there's no permanent authentication data lost, because that could mean broken, unrecoverable login accounts.
\ No newline at end of file +All day yesterday, I watched my husband trying to log into FF XIV on the PS4. All day, the PSN sign in servers remained down. They're still listed as offline now. Xbox Live has been back up since yesterday afternoon. So what's taking Sony so long?

Keeping production servers online is a large part of what I do professionally, so... I know this problem domain pretty well. And I've seen a lot of... speculation that is deeply misinformed. Here are my thoughts on the problem.

First: the cause of the outage. All evidence points to this being a DDoS (Distributed Denial of Service) attack. This is when a whole lot of computers from a lot of different locations send as much traffic as they can at a service, in an attempt to overwhelm it and knock it offline. The most common tool used to send all this traffic is a botnet. Building and maintaining a botnet requires a large amount of technical expertise. *Using* a botnet, on the other hand, just requires money and connections. Because the people who take the time to build a botnet often want to make money from it, so they sell time on them.

Which brings us to the culprits of the DDoS; a group calling themselves Lizard Squad has taken credit for the attack. Whether they have any technical expertise is unknown, but they certainly seem to have access to one or more reasonably effective botnets. However, they claim to have stopped their attack yesterday, and PSN remains offline. Mitigating DDoS attacks is a tricky problem; there are things that work pretty well, but there's always an upper bound on how much traffic you can mitigate.

So there are a few possibilities.


  1. Lizard Squad is lying, and is still attacking PSN. If they have some vested interest in making Microsoft look more competent than Sony, this is pretty plausible. Mitigating a DDoS is a real challenge, and Sony and Microsoft both clearly can't cope with these attacks. The usual solution would be to bring up more instances of the signin server; if that isn't mitigating the issue then the network infrastructure may not be able to cope either. Which doesn't say great things about Sony or Microsoft's network infrastructure. But then, this whole scenario doesn't say great things about the infrastructures of either services.
  2. Another group is also attacking PSN. Not much to add here; if Sony is still overwhelmed with traffic there's little they can do.
  3. Sony intentionally kept PSN offline to do some sort of emergency upgrades. This seems really unlikely to me; there's simply too much demand during the holidays to justify this. Sony would surely bring the servers back up and work on patches in parallel with that.
  4. The attack exposed a software bug in Sony's signin servers. If the signin server software is crash-looping or inexplicably serving errors now, it may be down despite engineers working on a fix as hard as they can. This would suggest that they're relying pretty heavily on some sort of stateful information that has entered a bad state, possibly a cache of some kind. (which can't be invalidated for some reason) Another possibility, which would suck for everyone involved, is that some bug caused user authentication data to be corrupted when the server was overloaded. If Sony is having to restore username/password hash data from a backup, that would explain why they are still offline. It would also explain why PSN seems to be working for some users but not others right now.
Personally, I suspect #4. It fits the evidence and observed behavior of the system the best. If so, we can only hope that there's no permanent authentication data lost, because that could mean broken, unrecoverable login accounts.
diff --git a/_posts/technology/2015-10-30-intel-nuc-remote-controls-and-fedora-22.html b/_posts/technology/2015-10-30-intel-nuc-remote-controls-and-fedora-22.html index 120078b..ba91821 100644 --- a/_posts/technology/2015-10-30-intel-nuc-remote-controls-and-fedora-22.html +++ b/_posts/technology/2015-10-30-intel-nuc-remote-controls-and-fedora-22.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: Intel NUC, remote controls, and Fedora 22 @@ -14,4 +15,4 @@ blogger_id: tag:blogger.com,1999:blog-4209116010564764361.post-24671501109772029 blogger_orig_url: http://www.stringofbits.net/2015/10/intel-nuc-remote-controls-and-fedora-22.html --- -I've had a fun time getting kodi to work with my new remote on an Intel NUC. So, in case you're in a similar situation, here's what worked for me! These instructions are for Fedora 22 and the hardware I linked to in this paragraph, but a lot of the instructions should be applicable in slightly different situations as well.
  1. Update your Intel NUC to the latest bios. At least on the RYH line, they fixed some problems with the IR receiver in a recent update.
  2. In the NUC bios, make sure the IR port is enabled and set the IR controller type to "RC6". Kodi works much better out of the box with this protocol. Some of your buttons aren't going to work right, though. The hard part is fixing that.
  3. Do not install lirc. lirc is an unintentional trap created by well-meaning people. It will not help you here.
  4. Instead of lirc, install v4l-utils to get ir-keytable:
    dnf -y install v4l-utils
  5. Now, here's why you don't want lirc: with an RC6 receiver, the kernel is going to parse your remote's input and output keyboard events. Unfortunately, many of the keysyms it sends aren't properly handled by Xorg. So, you need to remap those keysyms to working keysyms of your choice. To do that, you need exactly one bit of the process described here. Copy the /etc/rc_keymaps/rc6_mce file provided by wstewart at that link, and then run the command they mention:
    ir-keytable -c -p RC-5,RC-6 -w /etc/rc_keymaps/rc6_mce
    You'll need to get that command to run at startup, as well. I found that all the rest of wstewart's instructions were unnecessary with a modern kernel and kodi installation.
  6. Now, fire up kodi, and bask in the glory of your remote working correctly!
If you want to remap what some of the buttons do, you can get the scancodes with ir-keytable -t, then edit /etc/rc_keymaps/rc6_mce. See the kodi keyboard shortcuts page for details on what keypress you need to send. If you can't figure out what the constant name for a key is, (most of them are obvious) refer to the kernel source's input.h. \ No newline at end of file +I've had a fun time getting kodi to work with my new remote on an Intel NUC. So, in case you're in a similar situation, here's what worked for me! These instructions are for Fedora 22 and the hardware I linked to in this paragraph, but a lot of the instructions should be applicable in slightly different situations as well.
  1. Update your Intel NUC to the latest bios. At least on the RYH line, they fixed some problems with the IR receiver in a recent update.
  2. In the NUC bios, make sure the IR port is enabled and set the IR controller type to "RC6". Kodi works much better out of the box with this protocol. Some of your buttons aren't going to work right, though. The hard part is fixing that.
  3. Do not install lirc. lirc is an unintentional trap created by well-meaning people. It will not help you here.
  4. Instead of lirc, install v4l-utils to get ir-keytable:
    dnf -y install v4l-utils
  5. Now, here's why you don't want lirc: with an RC6 receiver, the kernel is going to parse your remote's input and output keyboard events. Unfortunately, many of the keysyms it sends aren't properly handled by Xorg. So, you need to remap those keysyms to working keysyms of your choice. To do that, you need exactly one bit of the process described here. Copy the /etc/rc_keymaps/rc6_mce file provided by wstewart at that link, and then run the command they mention:
    ir-keytable -c -p RC-5,RC-6 -w /etc/rc_keymaps/rc6_mce
    You'll need to get that command to run at startup, as well. I found that all the rest of wstewart's instructions were unnecessary with a modern kernel and kodi installation.
  6. Now, fire up kodi, and bask in the glory of your remote working correctly!
If you want to remap what some of the buttons do, you can get the scancodes with ir-keytable -t, then edit /etc/rc_keymaps/rc6_mce. See the kodi keyboard shortcuts page for details on what keypress you need to send. If you can't figure out what the constant name for a key is, (most of them are obvious) refer to the kernel source's input.h. diff --git a/_posts/technology/2015-11-06-the-orange-box-custom-usb-flight.html b/_posts/technology/2015-11-06-the-orange-box-custom-usb-flight.html index 3c1f825..6390035 100644 --- a/_posts/technology/2015-11-06-the-orange-box-custom-usb-flight.html +++ b/_posts/technology/2015-11-06-the-orange-box-custom-usb-flight.html @@ -1,4 +1,5 @@ --- +excerpt_separator:
category: technology layout: post title: 'The Orange Box: A custom USB Flight Control Panel' @@ -17,4 +18,4 @@ blogger_id: tag:blogger.com,1999:blog-4209116010564764361.post-91953202969705527 blogger_orig_url: http://www.stringofbits.net/2015/11/the-orange-box-custom-usb-flight.html --- -I play a lot of Elite: Dangerous. And while I use a reasonably nice HOTAS, I've long wanted a flight panel: a bank of toggle switches with LED indicators that would act as a USB joystick. I can only find one company selling such a thing, and their solution leaves exposed wiring. (a no-no when you live with cats) Also, their website looks like it is from the 90s and just feels kind of sketchy. (Seriously, guys, if you happen to read this, your website does not inspire confidence)

And, anyway, I've been looking for an excuse to learn some basic electronics for a long time. So, I built my own! Several other people have built similar things, but I decided to jump in head-first and not follow any guides, in hopes of learning about electronics and wiring along the way.

Acquiring Gear

First up, a parts list:


And a partial list of tools I needed:

Getting Started

Ok, now that you have this big pile of stuff, what do we do? I started by emulating everything; I was a bit worried about frying my new Arduino board! So I designed a circuit using 123d.circuits.io. You can see it here. Connecting the switch turns on the LED and changes I/O pin 2 from high to low. (the pin is configured as INPUT_PULLUP, see the programming section later)

Next I replicated this with my physical tools. I started by wiring everything up, (you'll want those hybrid jumper/alligator wires to hook up the toggle switch!) then plugged my Arduino into the PC to give it power. Before throwing the switch, I uploaded this very simple sketch to it:

void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT); // this is the Arduino's on-board LED.
}

void loop() {
  int state = digitalRead(2);
  if (state == HIGH) digitalWrite(13, LOW);
  else digitalWrite(13, HIGH);
}
If this works as expected, then flipping the toggle switch should light up both the breadboard LED and the on-board LED (marked 'L' on the Arduino board). The logic is inverted (we write HIGH when we read LOW) because I'm using INPUT_PULLUP, which reverses the usual logic of the input pin. (This lets me wire the LED without worrying about how much current the input pin can sink. I'm probably being overly cautious here, actually.)

Building the thing

Now that I had a proof of concept, I moved on to building things in earnest. First, I needed a box to store it all in. I had trouble finding an appropriately-sized box (again, see "lessons learned"), so I decided to 3D Print one! I have access to a shared Ultimaker2 3D printer. So I designed and printed a box. I really don't recommend using this design. This was my first attempt ever at 3D printing. The print took about 13 hours, and the resulting box had a bunch of problems, despite my attempt to make careful measurements. I had to drill out the holes for the switches more, and had to hack up the back pretty badly to get the USB port out. I also neglected to put mounting posts in for the lid, (I printed some later, but it was a huge pain) or holes to mount the arduino board on. (The odd bumps on the inside and the plastic bar were meant to be a little physical barrier to hold the board in place, but they printed out way too low to actually do anything.)

So anyway, now I have a box. (the project quickly got nicknamed The Orange Box, naturally) Next, I created five of these, with varying LED colors:


This is just the design from the breadboard realized in a way that lets it interface with the Arduino sensor shield. The red wire is connected from 5V through the LED setup and onto one of the switch posts. The LED has a resistor in series with it; I used 1kΩ resistors for my red and yellow LEDs, and 10kΩ for blue and white. 

The other switch post has lines going to both Ground (black) and the input pin. (white) The wire splices and connections are all soldered, *except* for the 3-pin dupont casing. To make those connections, I had to learn to work with dupont pins, which is a little complicated. You have to:
  1. Strip the end of your wire.
  2. Twist the exposed wire strands together. (this is often a good idea when working with stranded wire)
  3. Lay the wire onto the 'open' part of the dupont pin, and push it in a bit. Ideally you want the bottom of the pin to be flush against your wire casing.
  4. Fold the metal flanges on the pin around the wire with needle-nosed pliers, so that it's semi-closed.
  5. Crimp those flanges down with a crimp tool. Be careful not to crimp the 'top' half of the pin, where you don't have wire. You'll need that to mate the pin with the headers on the board.
  6. Using the pliers again, squeeze the metal that was flattened by the crimp tool into a rounder shape.
  7. Insert the pin into the casing. (For this project, I hade to make sure the voltage line was in the middle, to match the pinout on the shield) There is a correct orientation but it's a bit hard to describe. The pin should click into place and not come back out easily.

It takes a little practice to get the hang of it, but not having any connections soldered directly onto the Arduino makes it a lot more reusable!

Once I had all 5 of these, I mounted them in the box and wired them onto the sensor shield (which was connected to the arduino board. It just plugs right in on top!) With the 3-pin dupont widgets, this was super easy:


Those 3 rows of pins are just a row of Ground, a row of 5V, and then a row for all the I/O pins. So the white wires are all on the bottom row (the input signals), and the black wires are on the top. Each row is labelled on the board: G, V, and S.

Programming the Thing

For me, this was the easy part. Familiar territory. Arduino's "IDE" is really just a slightly specialized C++ framework. I wanted the OS to treat my device as a joystick with as little hassle as possible, so I used this custom firmware for the Arduino's USB communication chip. (Note: you want to install that *last*, because while it's installed you can't upload new sketches to the Arduino. It's easily reversible, though, so you won't ruin anything.)

I wrote a simple library to interface with the Joystick firmware, and a sketch tailored to how I have my inputs setup and what I want them to do. The sketch interprets the toggle switches as momentary inputs; that is, it sends a short button-press event every time you toggle the switch, as opposed to "holding down" the button the entire time the switch is on. This design makes it work well with most of Elite: Dangerous' controls.

In a future iteration I hope to make this all a bit more generalized and include a lot more functionality in the Joystick library. But for now, this works really well!


The Finishing Touches

I printed some support structures to make it possible to screw the box (mostly) shut:



After putting these in place, I briefly lamented not printing counter-sunk screw holes into the box, but then I realized ABS plastic was soft enough that I didn't need them. All I had to do was tighten the screws a bit more, and:



And finally, with everything screwed in place, the finished product:



Lessons Learned

\ No newline at end of file +I play a lot of Elite: Dangerous. And while I use a reasonably nice HOTAS, I've long wanted a flight panel: a bank of toggle switches with LED indicators that would act as a USB joystick. I can only find one company selling such a thing, and their solution leaves exposed wiring. (a no-no when you live with cats) Also, their website looks like it is from the 90s and just feels kind of sketchy. (Seriously, guys, if you happen to read this, your website does not inspire confidence)

And, anyway, I've been looking for an excuse to learn some basic electronics for a long time. So, I built my own! Several other people have built similar things, but I decided to jump in head-first and not follow any guides, in hopes of learning about electronics and wiring along the way.

Acquiring Gear

First up, a parts list:


And a partial list of tools I needed:

Getting Started

Ok, now that you have this big pile of stuff, what do we do? I started by emulating everything; I was a bit worried about frying my new Arduino board! So I designed a circuit using 123d.circuits.io. You can see it here. Connecting the switch turns on the LED and changes I/O pin 2 from high to low. (the pin is configured as INPUT_PULLUP, see the programming section later)

Next I replicated this with my physical tools. I started by wiring everything up, (you'll want those hybrid jumper/alligator wires to hook up the toggle switch!) then plugged my Arduino into the PC to give it power. Before throwing the switch, I uploaded this very simple sketch to it:

void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT); // this is the Arduino's on-board LED.
}

void loop() {
  int state = digitalRead(2);
  if (state == HIGH) digitalWrite(13, LOW);
  else digitalWrite(13, HIGH);
}
If this works as expected, then flipping the toggle switch should light up both the breadboard LED and the on-board LED (marked 'L' on the Arduino board). The logic is inverted (we write HIGH when we read LOW) because I'm using INPUT_PULLUP, which reverses the usual logic of the input pin. (This lets me wire the LED without worrying about how much current the input pin can sink. I'm probably being overly cautious here, actually.)

Building the thing

Now that I had a proof of concept, I moved on to building things in earnest. First, I needed a box to store it all in. I had trouble finding an appropriately-sized box (again, see "lessons learned"), so I decided to 3D Print one! I have access to a shared Ultimaker2 3D printer. So I designed and printed a box. I really don't recommend using this design. This was my first attempt ever at 3D printing. The print took about 13 hours, and the resulting box had a bunch of problems, despite my attempt to make careful measurements. I had to drill out the holes for the switches more, and had to hack up the back pretty badly to get the USB port out. I also neglected to put mounting posts in for the lid, (I printed some later, but it was a huge pain) or holes to mount the arduino board on. (The odd bumps on the inside and the plastic bar were meant to be a little physical barrier to hold the board in place, but they printed out way too low to actually do anything.)

So anyway, now I have a box. (the project quickly got nicknamed The Orange Box, naturally) Next, I created five of these, with varying LED colors:


This is just the design from the breadboard realized in a way that lets it interface with the Arduino sensor shield. The red wire is connected from 5V through the LED setup and onto one of the switch posts. The LED has a resistor in series with it; I used 1kΩ resistors for my red and yellow LEDs, and 10kΩ for blue and white. 

The other switch post has lines going to both Ground (black) and the input pin. (white) The wire splices and connections are all soldered, *except* for the 3-pin dupont casing. To make those connections, I had to learn to work with dupont pins, which is a little complicated. You have to:
  1. Strip the end of your wire.
  2. Twist the exposed wire strands together. (this is often a good idea when working with stranded wire)
  3. Lay the wire onto the 'open' part of the dupont pin, and push it in a bit. Ideally you want the bottom of the pin to be flush against your wire casing.
  4. Fold the metal flanges on the pin around the wire with needle-nosed pliers, so that it's semi-closed.
  5. Crimp those flanges down with a crimp tool. Be careful not to crimp the 'top' half of the pin, where you don't have wire. You'll need that to mate the pin with the headers on the board.
  6. Using the pliers again, squeeze the metal that was flattened by the crimp tool into a rounder shape.
  7. Insert the pin into the casing. (For this project, I hade to make sure the voltage line was in the middle, to match the pinout on the shield) There is a correct orientation but it's a bit hard to describe. The pin should click into place and not come back out easily.

It takes a little practice to get the hang of it, but not having any connections soldered directly onto the Arduino makes it a lot more reusable!

Once I had all 5 of these, I mounted them in the box and wired them onto the sensor shield (which was connected to the arduino board. It just plugs right in on top!) With the 3-pin dupont widgets, this was super easy:


Those 3 rows of pins are just a row of Ground, a row of 5V, and then a row for all the I/O pins. So the white wires are all on the bottom row (the input signals), and the black wires are on the top. Each row is labelled on the board: G, V, and S.

Programming the Thing

For me, this was the easy part. Familiar territory. Arduino's "IDE" is really just a slightly specialized C++ framework. I wanted the OS to treat my device as a joystick with as little hassle as possible, so I used this custom firmware for the Arduino's USB communication chip. (Note: you want to install that *last*, because while it's installed you can't upload new sketches to the Arduino. It's easily reversible, though, so you won't ruin anything.)

I wrote a simple library to interface with the Joystick firmware, and a sketch tailored to how I have my inputs setup and what I want them to do. The sketch interprets the toggle switches as momentary inputs; that is, it sends a short button-press event every time you toggle the switch, as opposed to "holding down" the button the entire time the switch is on. This design makes it work well with most of Elite: Dangerous' controls.

In a future iteration I hope to make this all a bit more generalized and include a lot more functionality in the Joystick library. But for now, this works really well!


The Finishing Touches

I printed some support structures to make it possible to screw the box (mostly) shut:



After putting these in place, I briefly lamented not printing counter-sunk screw holes into the box, but then I realized ABS plastic was soft enough that I didn't need them. All I had to do was tighten the screws a bit more, and:



And finally, with everything screwed in place, the finished product:



Lessons Learned