Gaudy Night by Dorothy L Sayers

An excellent book, but one I wouldn’t have been able to finish without spoilers. It’s got a very slow start, and even 100 pages in I couldn’t tell most of the characters apart, or match character names to titles to dialogue.

I almost quit the book, but then I reread the essay in Jo Walton’s What Makes This Book So Great that got me to read it in the first place. By giving away the ending, and filling in some of the gaps in a modern readers’ knowledge — for example, in 1936, when the book was written, if a college-educated woman got married, she could no longer teach at the university, making the family-or-career choice a stark one — Walton’s essay opened the book up for me, and let me pick up on the multiple ways gender politics is woven throughout.

This is the first time spoilers for a mystery not only didn’t ruin the story, but positively enhanced it for me. If you plan on reading the book, I’d recommend reading Walton’s essay first, if only to equip you with the knowledge of the day that Sayers assumed all her readers had.

I noticed two interesting things about the way the book was written.

First, almost all the action is conveyed through dialogue. There’s a few scenes where Sayers describes what a character does — flicking on a light, for example — but most of the time, Sayers lets her characters talk about the action, or lets us guess that action is taking place by having them describe it. It makes the dialogue feel more real to me, somehow, when we don’t have to interrupt the character’s speech to say something as mundane as “he put on his hat and coat.” Instead, we can let the character’s personality shine through by having them talk about their hat and coat as they put it on, or mumble about how they need to get that elbow patched or complain about missing buttons. However, it doesn’t seem to work well when the reader isn’t familiar with the actions involved; there was a scene in Gaudy Night where the main characters were boating down the Thames, and I couldn’t picture anything that was going on.

Second, the way in which the theme of gender politics gets echoed throughout the book felt masterful to me. It comes up in multiple conversations, it lies at the heart of the mystery, and it’s the core of the problem Harriet Vane (the main and only perspective character) wrestles with throughout: whether to marry Peter Wimsey, or rejoin the scholarly world at Oxford?

I think it even shows up in the structure of the book itself: most of the characters are women, all of the suspects are women, and it’s a woman that leads the investigation for 3/4 of the entire book. It’s a Peter Wimsey Mystery without much Peter Wimsey at all, and the only men that show up most of the novel are adjuncts to the narrative, distractions from the main events, rather than principal players. It’s something that’s all-too-rarely done today, and it must have seemed radical in 1936. I think it was also done deliberately, to make the book not only contain discussions of gender politics and the roles of men and women, but be a shot fired on the side of equality.

Off to Camp

I’ve joined Camp NaNoWriMo this year.

NaNoWriMo gave me the motivation I needed to start — and then finish — my first novel last year. The target word count for the month, the daily emails from professionals about their writing process, even the simple bar chart showing my daily progress, all pushed me to see it through.

I’m hoping to get the same kind of kick in the pants from Camp NaNoWriMo. It starts July first, but there’s no set word count goal, no restrictions on what you can work on, like for regular NaNoWriMo. I’ve set a personal goal of 30,000 words for the month, enough to challenge me but not enough to feel like a mad dash toward the finish line.

They’ve also got the idea of cabins, where they group you up with other writers for the month. I think the idea is that we band together to reach our writing goals, by maybe sharing snippets of what we’re working on, or just talking about our own writing experiences. In any case, I’m looking forward to finding out who my cabin-mates will be.

As for the outline, it should be ready to go July 1st. I’ve got the flow and basic challenges set, nailed down the start and finish, and am getting the characters personalities and voices set in my mind.

I’m still nervous about starting the actual writing of it, but I tell myself that’s normal, and that I have permission to suck on the first draft. But there won’t be a second draft unless I finish the first one, and I won’t finish unless I start, so there’s no getting out of it.

Refilling the Well

Every couple of weeks, I have to do what I think of as “refilling the well.” It’s something between relaxing and recharging, pouring equal parts inspiration and motivation into the well of my brain so I can keep writing, keep creating.

My primary means of refilling the well is going to bookstores (my current personal favorites being Mysterious Galaxy and Villainous Lair). I’m as big a bibliophile as anyone else, enjoying the smell, the touch, the weight of books, even the sight of them, but it’s not just that.

I look around the store, and marvel at all the different books that got published. Books about the history of the telegraph. Books about a fictionalized War of the Roses set on a world that’s not Earth. Books about minotaurs and paladins going on quests together.

Seeing so much getting published, across so many different genres and styles, reminds me that there’s room for what I want to write. There’s room for my characters, for my worlds, for my stories. Every one of the books on the shelves started out as someone’s pencil scratch of an idea, and they found room and space to be made. If they can do it, I can too.


Pushing Characters and Buttons: Lessons from Game of Thrones’ Season 5

Warning: Spoilers ahead.

I’m not sure I’ll be back for Season 6 of Game of Thrones. I feel like this last season was the weakest one so far. I’m still processing why, but I suspect it’s because of the following things, mistakes that I’ll try to avoid in my own writing:

1) Focusing on the wrong things.

I think this season spent a lot of time lingering over details that it didn’t need to, and shouldn’t. I’d count Sansa’s wedding night sexual assault as one of them, for multiple reasons. First, I think sexual assault is one of the most terrible things that can happen to a human being, and I don’t really want to watch even fake ones any more. Second, we didn’t need to see the actual assault to know it’d taken place: the very next scene with Sansa, where Reek comes upon her laying battered and half-naked on the bed, tells us everything we need to know.

But because they did decide to show us the assault itself, they weren’t able to show us other things, like Sansa trying to work out different ways to escape, or talking to the different servants to find out which ones she could rely on. They couldn’t show us the preparations for a siege at Winterfell, with Sansa trying to take advantage of the chaos to send a raven to Littlefinger or study the walls to remind herself of the best way over them.

I think it was a similar mistake to insist on showing us the full extent of Cersei’s humiliation, including the entire walk of shame. I didn’t want to see it, I didn’t need to see it — seeing her at the next small council meeting, head shaved and face cut, shaking as she reaches for her wine, is enough — and it prevented them from showing me other things, like Kevan trying to get her back, or the whole of them dealing with the aftermath.

I’ll admit that GoT takes place in a nasty world, where nasty things happen. But I didn’t need to see Craster actually rape his daughters to know he was a nasty man and understand what was happening there. I didn’t need to see King Robert’s sexual orgies to know the humiliation his antics caused Jaime and Cersei. And I didn’t need to see Viserys force himself on his sister to know she lived in fear of him.

2) Moving characters around instead of letting them move.

A lot of the decisions characters made this season felt forced, as if they needed to move across the game board for plot requirements, and the writers found an excuse send them there.

Take Jon Snow going to Hardhome. Why was this necessary? I understand that without Jon Snow there, there’s no perspective character to show us the assault of the army of the dead. But it would have made more sense for Aliser Thorne to have gone instead of Jon: he’s First Ranger, and known to hate the Wildlings more than Jon. Wouldn’t the oath to give them safe passage have been more impressive coming from an old and known enemy?

Jaime and Bronn going to fetch Myrcella also didn’t make sense to me. I mean, I understand wanting to show a buddy knight trip between the two of them, but Jaime has little reason to go and Bronn has less, and their presence didn’t affect the outcome at all. If they hadn’t been there, the Sand Snakes would have tried to kidnap Myrcella, failed, and any messenger from Cersei asking to see her daughter would have given Doran the excuse he needed to send Myrcella away to safety.

Finally we have Jorah. His decision to sign up for gladiator combat the first time made sense, since it gave him a chance to see Daenerys again. But submitting to slavery a second time after being banished again? Only made sense as a way to place him near her during the Sons of the Harpy attack. For the character, it didn’t make sense at all.

3) Trying too hard for big moments.

So many times during this season, I felt like I was watching the “Are you not entertained?” moment from Gladiator. The music would swell, the camera would zoom in on some character’s face, and they would say a line that was supposed to carry a lot of emotional weight. But it fell flat for me, every time, no matter the character or the situation.

I think the first two mistakes, made often enough over the course of the season, robbed the emotional high points of any impact. Instead of caring that Brienne finally got to confront Stannis, I just saw a knight come upon an old wounded man in the forest, tell him her name, and deliver a killing blow. Instead of dying a little inside at seeing Jon bleeding out in the snow, I knew from the moment Olly came to fetch him that he was about to be ambushed, and the circle of knives was way too much “Et tu, Brute?” to make me do anything other than shake my head.

And Drogon saving the day . Well, of course he saved the day, then dumped Daenerys in the middle of nowhere instead of somewhere else in the city. How else were the writers to setup Daenerys being standard in the wilderness, needing her two bravest knights to come save her (groan)?

None of it worked for me, and the parts that did deliver an emotional impact — Sansa’s assault, Cersei’s humiliation — were entirely negative. For me, this season was a set of lessons in what not to do. Here’s hoping I take them to heart.

Working Forwards and Backwards

Outline’s not quite done. I keep bouncing back and forth between the plot and the characters, each change rippling out and making me re-arrange chapters and scenes.

It feels harder this time, and I can’t tell if that’s because it’s such a different book, or because I’m simply afraid of not being able to write a second novel, or because the idea’s not as good as I think it is.

The only thing I can do is keep plugging away at it, pushing the outline around until I have enough of a plot shape to start writing. I tell myself that all it takes is time, and I should be patient, but that doesn’t change the fact that my last outline took me two weeks while this one is a month and counting.

Maybe I should just dive in and start writing, outline be damned? Maybe what worked for the last book isn’t going to work for this one.

It might come to that. In any case, I’m setting a deadline for myself of July 1st. Outline or no, I’m going to start writing the first scene on or before then.

The Quest: Energy, Security, and the Remaking of the Modern World by Daniel Yergin

Incredibly long, but eye-opening. So much more of the news makes sense to me now, like I’ve been given a set of mental footnotes for each story that mentions anything related to energy.

The book could’ve used some serious editing, though. I found numerous typos, misspellings, repeated phrases, even whole paragraphs that echo each other.

In addition, the book starts out at a good pace, but begins to feel like a slog somewhere around Part 4 (where he discusses renewable energy, then spends Part 5 going into more detail about renewables). Had to push myself to finish this one.

That said, I learned an incredible amount, including:

  • In 2011, the US was 78% self sufficient in overall energy: natural gas, oil, coal, nuclear, renewables, etc
  • Cap-and-Trade as a solution to carbon pollution was pioneered by the lead permits issued to refineries in the 80s to eliminate lead from gasoline
  • In 2009, newly discovered reserves equalled the amount of oil produced over the entire lifetime of the industry

Laying Down the Path

Thanks to the good advice from L.D. Parker in the comments, I resolved last week’s plotting dilemma by deciding to interweave the narrative from the trigger character and protagonist’s point of views. I’ll start with the initial “hook” scene I have in mind for the first chapter, then do an intro chapter with the protag, then alternate back and forth throughout the book.

I tell myself that even if it doesn’t work the way I want it to, I can go back and do whatever I need to fix it (probably drop the trigger character and focus solely on the protag), so long as I make it through the first draft.

With that problem solved, I finally started writing up the outline, character sketches, etc for the new book in Scrivener. This means taking all the notes I’ve jotted down — some handwritten, some typed up in Evernote, some dictated into my phone — and bringing them together in one place, and imposing some sort of order on them.

It’s the last step before I actually start writing, and it gives me a visual indication of holes in the plot, of weak points in the story that’s developing. For example, I can already see that I’m going to need a lot more background for my protag than I have worked out so far, simply because the number of their scenes aren’t balanced against the trigger character.

With luck, I’ll have the initial plan written up and into Scrivener by the end of next week, and then I’ll be ready to plunge back into the blank page and start swimming toward the finish line.

Review: Kobo Glo HD

I’ve had two generations of Nook ereaders. I liked holding them better than the Kindles that were available, I wanted to feel good about buying ebooks after browsing at my local Barnes & Noble, and I didn’t like the way Amazon was waging war against book publishers (and, as a consequence, on authors).

But B&N hasn’t updated their Nook in almost two years. Their last Nook’s screen resolution is good, but still not as good as a printed book. It has an annoying habit of setting the margins so wide that the text forms a three-word column down the screen, and then locks me out of making any adjustments. It doesn’t sync the last page read between the ereader and my iPhone. Its illumination is noticeably uneven. The covers for it are terrible and expensive, so when I travel I put it back inside the box it came in. I have to re-adjust the fonts and margins everytime I open (or re-open) a book, because it doesn’t remember my settings.

None of which are show-stoppers, for sure, but over time they add up. The final straw was when B&N locked users out of downloading our ebooks to our computers. I used to do this on a regular basis, so I could save backups of the books to Dropbox. That changed a few months ago, when they took down the download link next to all the books in their users’ Nook online libraries.

So I went shopping for a new ereader. I worried that I might have to go with a Kindle, since they seemed to have the best screen resolution out there.

Then I heard about the Kobo Glo HD. I knew Kobo already, since they stepped into the breech left behind by Google dropping its ebook partnership with independent bookstores. I knew they produced ereaders, since I’d seen them for sale at Mysterious Galaxy (as part of their collaboration with Kobo). The reviews I found of them were generally positive, and the Glo HD – which hadn’t come out yet – promised a screen resolution as good as the Kindle, and at a cheaper price.

I couldn’t find one locally to try out, so I took the plunge and ordered it. I’m very, very glad I did; I’ve been using it for a month now, and I can honestly say this is the ereader I’ve been waiting for.

The screen resolution is sharp enough that it looks like a printed book when I set it down on a table to read. And unlike the Nook’s dark screen, the Glo HD’s is bright enough that I don’t feel the need to turn on the reading light during the day.

Syncing? My bookmarks sync between the Kobo app on my phone and the ereader no problem, easy as pie, even for books that I didn’t buy from Kobo.

Sideloading was a little more complicated than I’d like. I had to use Adobe Digital Editions to connect to the reader and transfer books over, but it moved all 142 of my backed up B&N books without a hitch, and they all showed up in my Library on the Glo just fine.

I still have to adjust the fonts sometimes between books, but I no longer care. I don’t care because the options for tweaking are incredible: I’ve got a dozen different fonts, sliders for font size, line spacing, and margins, as well as the ability to set justification to full, left, or simply off. And I’ve yet to encounter a book that locks me into reading a certain way. I’ve got full control over how the book looks, and it’s about freaking time.

Even the case they sell for it is amazing. Its the first case for any portable device — Nook, iPad — that actually makes the original device better. It doesn’t add to the Glo’s weight, closing it puts the reader to sleep and opening it wakes it up, and when its open it folds back behind the reader to make it feel even more like a book in your hand. Oh, and it kept the screen scratch-free in my backpack over four cross-country flights.

So this is one gamble that’s completely paid off. It’s the first ereader that I prefer reading on to a paper book, so much so that I have to stop myself from buying ebook versions of the hardcovers on my bookshelf just so that I can read them on the Glo HD.

Forks in the Road

Had a minor hiccup in outlining the new book while I was traveling: I decided to change the main character. Thought for a few days there I’d have to split the books off, and use the previous set of characters for the plot I had been working on while thinking up a different plot for the new protagonist.

Thankfully my split-brain didn’t last long; I realized I could rework the old plot for the new characters, and keep everything I liked about both.

So now I’m laying out the narrative for the new book. I’ve got the antagonist’s motives and moves down, and the same for what I’m thinking of as the “trigger character,” the one that starts things moving.

Having some trouble deciding when and how to bring in my protagonist though. I’ve got several different routes to take, some of which use the initial scene I want to have and some that don’t. The problem (at the moment) is that the routes that don’t use that scene make more sense than the ones that do.

So do I let go of this little darling scene of mine? Or do I brainstorm until I can find a way to keep it and have a protag intro that makes sense?

Notes from LambdaConf 2015

Haskell and Power Series Brought to Life

  • not interested in convergence
  • laziness lets you handle infinite series
  • head/tail great for describing series
  • operator overloading lets you redefine things to work on a power series (list of Nums) as well as Nums
  • multiplication complication: can’t multiply power series by a scalar, since they’re not the same type
  • could define negation as: negate = map negate
    • instead of recursively: negate(x:xs) = negate x : negate xs
  • once we define the product of two power series, we get integer powers for free, since it’s defined in terms of the product
  • by using haskell’s head-tail notation, we can clear a forest of subscripts from our proofs
  • reversion, or functional inversion, can be written as one line in haskell when you take this approach:
    • revert (0:fs) = rs where rs = 0 : 1/(fs#rs)
  • can define integral and derivative in terms of zipWith over a power series
  • once we have integrals and derivatives, we can solve differential equations
  • can use to express generating functions, which lets us do things like pascal’s triangle
  • can change the default ordering of type use for constants in haskell to get rationals out of the formulas instead of floats
    • default (Integer, Rational, Double)
  • all formulas can be found on web page: ???
    • somewhere on dartmouth’s site
  • why not make a data type? why overload lists?
    • would have needed to define Input and Ouput for the new data type
    • but: for complex numbers, algebraic extensions, would need to define your own types to keep everything straight
    • also: looks prettier this way

How to Learn Haskell in Less than 5 Years

  • Chris Allen (bitemyapp)
  • title derives from how long it took him
    • though, he says he’s not particularly smart
  • not steady progress; kept skimming off the surface like a stone
  • is this talk a waste of time?
    • not teaching haskell
    • not teaching how to teach haskell
    • not convince you to learn haskell
    • WILL talk about problems encountered as a learner
  • there is a happy ending: uses haskell in production very happily
  • eventually made it
    • mostly working through exercises and working on own projects
    • spent too much time bouncing between different resources
    • DOES NOT teach haskell like he learned it
  • been teaching haskell for two years now
    • was REALLY BAD at it
    • started teaching it because knew couldn’t bring work on board unless could train up own coworkers
  • irc channel: #haskell-beginners
  • the guide:
  • current recommendations: cis194 (spring ’13) followed by NICTA course
  • don’t start with the NICTA course; it’ll drive you to depression
  • experienced haskellers often fetishize difficult materials that they didn’t use to learn haskell
  • happy and productive user of haskell without understanding category theory
    • has no problem understanding advanced talks
    • totally not necessary to learn in order to understand haskell
    • perhaps for work on the frontiers of haskell
  • his materials are optimized around keeping people from dropping out
  • steers them away from popular materials because most of them are the worst ways to learn
  • “happy to work with any of the authors i’ve critized to help them improve their materials”
  • people need multiple examples per concept to really get it, from multiple angles, for both good and bad ways to do things
  • doesn’t think haskell is really that difficult, but coming to it from other languages means you have to throw away most of what you already know
    • best to write haskell books for non-programmers
    • if you come to haskell from js, there’s almost nothing applicable
  • i/o and monad in haskell aren’t really related, but they’re often introduced together
  • language is still evolving; lots of the materials from 90s are good but leave out a lot of new (and useful!) things
  • how to learn: can’t just read, have to work
  • writing a book with Julie (?) @argumatronic that will teach haskell to non-programmers, should work for everyone else as well; will be very, very long (longer than Real World Haskell)
  • if onboarding new employee, would pair through tutorials for 2 weeks and then cut them loose
  • quit clojure because he and 4 other clojurians couldn’t debug a 250 line ns

Production Web App in Elm

  • app: web-based doc editor with offline capabilities: DreamWriter
  • wrote original version in GIMOJ: giant imperative mess of jquery
  • knew was in trouble when he broke paste; could no longer copy/paste text in the doc
  • in the midst of going through rewrite hell, saw the simple made easy talk by rich hickey
  • “simple is an objective notion” – rich hickey
    • measure of how intermingled the parts of a system are
  • easy is subjective, by contrast: just nearer to your current skillset
  • familiarity grows over time — but complexity is forever
  • simpler code is more maintainable
  • so how do we do this?
    • stateless functions minimize interleaving
    • dependencies are clear (so long as no side effects)
    • creates chunks of simpleness throughout the program
    • easier to keep track of what’s happening in your head
  • first rewrite: functional style in an imperative language (coffeescript)
    • fewer bugs
  • then react.js and flux came out, have a lot of the same principles, was able to use that to offload a lot of his rendering code
    • react uses virtual dom that gets passed around so you no longer touch the state of the real dom
  • got him curious: how far down the rabbit-hole could he go?
    • sometimes still got bugs due to mutated state (whether accidental on his part or from some third-party lib)
  • realized: been using discipline to do functional programming, instead of relying on invariants, which would be easier
  • over 200 languages compile to js (!)
  • how to decide?
  • deal-breakers
    • slow compiled js
    • poor interop with js libs (ex: lunar.js for notes)
    • unlikely to develop a community
  • js but less painful?
    • dart, typescript, coffeescript
    • was already using coffeescript, so not compelling
  • easily talks to js
    • elm, purescript, clojurescript
    • ruled out elm almost immediately because of rendering (!)
  • cljs
    • flourishing community
    • mutation allowed
    • trivial js interop
  • purescript
    • 100% immutability + type inference
    • js interop: just add type signature
    • functions cannot have side effects* (js interop means you can lie)
  • so, decision made: rewrite in purescript!
    • but: no react or flux equivalents in purescript (sad kitten)
  • but then: a new challenger: blazing fast html in eml (blog post)
    • react + flux style but even simpler and faster (benchmarked)
  • elm js interop: ports
    • client/server relationship, they only talk with data
    • pub/sub communication system
  • so, elm, hmm…
    • 100% immutability, type inference
    • js interop preserves immutability
    • time travelling debugger!!!
    • saves user inputs, can replay back and forth, edit the code and then replay with the same inputs, see the results
  • decision: rewrite in elm!
  • intermediate step of rewriting in functional coffeescript + react and flux was actually really helpful
    • could anticipate invariants
    • then translate those invariants over to the elm world
    • made the transition to elm easier
  • open-source: rtfledman/dreamwriter and dreamwriter-coffee on github
  • code for sidebar looks like templating language, but is actually real elm (dsl)
  • elm programs are built of signals, which are just values that change over time
  • only functions that have access to a given signal have any chance of affecting it (or messing things up)
  • so how was it?
    • ridiculous performance
    • since you can depend on the function always giving you the same result for the same arguments, you can CACHE ALL THE THINGS (called lazy in Elm)
    • language usability: readable error messages from the compiler (as in, paragraphs of descriptive text)
    • refactoring is THE MOST FUN THING
    • semantic versioning is guaranteed. for every package. enforced by the compiler. yes, really.
    • diff tool for comparing public api for a lib
    • no runtime exceptions EVER
  • Elm is now his favorite language
  • Elm is also the simplest (!)