Ron Toland
About Canada Writing Updates Recently Read Photos Also on Micro.blog
  • The Secret History of Wonder Woman by Jill Lepore

    Amazing. I had no idea Wonder Woman was so directly connected to the history of American feminism. Lepore’s account shows how Wonder Woman joins the feminism and suffragist movements of 1910-1920 to the second wave of the 1970s.

    Weaves together family histories, feminist politics, and all the messy complications of love without pulling punches or demonizing any of the participants. An incredible book.

    Three things I learned:

    • Feminists (word arises around 1910) distinguished themselves from 19th century reformers by saying women and men were equal in all ways, that neither sex was superior to the other in any way, and that women therefore deserved equal rights.
    • Not only did the Harvard of 1910s not admit women, they weren't even allowed to speak on campus. When the Harvard Men's League for Woman Suffrage invited British suffragist Emmeline Pankhurst to speak, they had to book Brattle Hall, in nearby Cambridge, because she was not allowed on campus.
    • Margaret Sanger and Ethyl Byrne (sisters), both trained nurses, opened a birth control clinic in New York in 1916. Women lined up for blocks to get in, till the two were arrested: it was illegal to even talk about contraception in New York (!)
    → 2:00 PM, Dec 19
  • Outline as Compass

    Novel’s at 39,412 words.

    Decided to brainstorm my way out of being lost. I took the climax I’m working toward, and mapped out short, medium, and long ways to get there.

    They all had scenes in common, but only the long path gave me the chance to wrap up all of the plotlines I’ve got going.

    So I’m taking the long path.

    It’s still likely to end up a short novel. I’m definitely in the final third of the book, so I know I need to pile on the pressure to build things toward my climax.

    With luck (and a lot of work), I’ll be finished somewhere around the first of the year.

    Then I can turn back to editing my second novel, and maybe doing another pass on my first novel, and another edit on this short story I wrote in September…

    sighs Maybe best to ignore that for now. One story at a time.

    → 2:00 PM, Dec 16
  • The Invisible Bridge by Rick Perlstein

    Riveting. Perlstein’s book is long, but moves at a fast clip; I stayed up late three nights in a row to finish the last half of the book.

    He doesn’t explicitly draw any analogies with our last few elections, but the parallels are there: disillusioned voters; party elites that ignored insurgencies until it was too late to stop them; division of the world into good people and bad people, with any tactics that stopped the bad people allowed.

    Not exactly comforting, but it did make me feel better to know that these problems are not new, and they can be overcome.

    Three of the many, many things I learned:

    • Republican Party of 1976 was much more liberal: party platform that year supported the Equal Rights Amendment, like it had every year since 1940.
    • The idea that there are still hundreds of POWs in Vietnam is based on a lie: Nixon inflated the number of POWs from 587 to 1,600 so North Vietnam looked worse. Once the real POWs came home, he didn't reveal the truth.
    • New York City almost declared bankruptcy in 1975. When the city asked President Ford's government to bail them out, Ford (and Reagan, and Rumsfeld, and Cheney) not only said no, they were glad to see the great city brought low.
    → 2:00 PM, Dec 12
  • Where Am I?

    Novel’s at 33,986 words.

    I’m at a point where I’m not sure how much story is left to tell.

    I could be two-thirds of the way through, and so on my way to the end. If so, I should be quickening the pace in each scene, pushing the narrative forward faster and faster to reach the climax.

    Or I could just be halfway through. In which case, I should be steadily building toward the next major turning point in the story, pacing things so that the reader’s not exhausted by the end of the book.

    I feel like this is something I should know.

    I’ve got the rest of the book outlined (even if it’s in my head). I know the scene for the story’s climax. I know the characters that are there, and what happens afterward. But damned if I don’t know how they got there, or how much time there is between the scene I’m currently writing and the last one.

    It mystifies me that the only way to find out is for me to write it. As if I weren’t writing a story, but reporting on events. And until those events happen, I’ve got nothing to report.

    → 2:00 PM, Dec 9
  • From Sprint to Marathon

    NaNoWriMo’s over. Final word count: 30,836.

    So, I didn’t make it to 50,000 this year. But I don’t want to dwell on that.

    Here’s what I did do:

    • I started a new novel, which is still not easy for me.
    • I proved I could still write 4,000 words in a single day, like I did last Saturday.
    • I learned that starting with a short story set in the world does help when it comes time to write the novel. I've written more each day, and more easily, for this novel than the previous one.
    But the novel's not done, and neither am I. To keep me on track, I'm setting a new goal: to reach 50,000 words by the end of the year.

    More modest than NaNoWriMo, true, but I think it’ll keep me focused, keep me pushing forward on the book. I’d like to have this first draft done in three months instead of twelve, so I can spend more time revising it.

    Wish me luck.

    → 2:00 PM, Dec 2
  • Story by Robert McKee

    Life changing.

    It’s changed the way I watch movies. As I watch I’m now looking for the beats within each scene, paying attention to the rise and fall of emotional charge throughout the film.

    It’s altered the way I’m approaching the novel I’m currently writing, helping me to think more clearly about each scene and its purpose in the book.

    It’s even got me thinking about going back to outlining everything before starting.

    If you’re a writer, I think this book is essential. It’s forever altered the way I approach my writing, and somehow made me more confident in what I’m doing, even as it’s shown me what I’m doing wrong.

    Three of the many things I learned:

    • Archetypal stories uncover a universal human experience and wrap it in a singular cultural expression. Stereotypical stories do the opposite: dress a singular experience in generalities.
    • An honest story is at home in one, and only one, place and time.
    • California scenes: two characters that hardly know each other share deep secrets about their past. It happens, but only in California. Nowhere else.
    → 2:00 PM, Nov 30
  • How to Fix: Fantastic Beasts and Where to Find Them

    What Went Wrong

    Man, this movie tried to pack it all in. Dark wizards, magical creatures, conflict between governments and the individual, romance, the tension between preserving wild beasts and keeping people safe. It feels like they didn't think they had enough material for a single movie, so they stuffed it with extras to try to fill it out.

    Unfortunately, they had enough material for at least three movies. Stuffing them all into the same film just squeezed them all so they couldn’t breathe.

    But we can fix that.

    How to Fix It

    Break it up into three different movies.

    There’s at least three plots I can see that could carry their own films. First, there’s Scamander and the gang searching for the fantastic beasts that escaped from his bag. Second (the least-fleshed-out plot), there’s Langdon Shaw (son of the newspaper man) and his attempts to impress his father with a big scoop. Finally, there’s Graves and his hunt for the obscurus' host.

    Each one of these could easily be their own movie. It would give us more time with all the characters, allow their relationships to deepen, and give more time to setup Graves as a friend that betrays Scamander and the gang, instead of leaning on “oh that’s Colin Farrell, he’s definitely the bad guy.”

    So how would we fill out each of these plots, to make them a full movie?

    The first plot doesn’t really need anything. Having Scamander come to New York and meet the other main characters while trying to re-capture his fantastic beasts is enough. This time, though, we make Graves a friend of the group, someone who understands them and argues with the President (who is the antagonist for this first film) for leniency.

    Of course, Graves is only doing it because: a) he wants to use Scamander’s knowledge for his own ends, and b) the beasts in question are illegal, and anyone willing to break laws is a potential ally of his.

    Also this way, we don’t have to have Kowalski lose all knowledge of Queenie. We can give them a proper happy ending, with them starting a secret romance.

    The second plot needs the most filling out. We already have a hook to get it started, though: Scamander comes back to New York to hand-deliver his book to Tina. While there, they go to see a circus, where there just happens to be a magical creature that’s been captured. It’s on display as something other than it is, and everyone thinks it’s fake.

    But: Shaw’s son suspects it might be real, and starts investigating. Meanwhile, Scamander and Tina are arguing because he wants to rescue the magical beast, while Tina (and her bosses) want to keep it under wraps, for fear of revealing magic to society at large.

    Eventually, the creature escapes, forcing all four of the gang to join forces again to track it down and trap it before it causes so much damage that Shaw’s son gets his scoop. After they succeed, we get to see Scamander’s mass obliviate trick (just not the whole city, that’s ridiculous). Shaw’s son, frustrated and angry at being embarrassed in front of his father, stumbles upon the Second Salem group, who tell him what he’s come to suspect: witches live among us.

    The third movie is the hunt for the obscurus. Scamander is again visiting Tina – maybe to ask her to marry him? – when Creedance’s powers start to spin out of control. This time, when Senator Shaw is murdered, we’ve got a lot more invested in the newspaper family, and Langdon’s step forward with the “solution” for his father will carry a lot more emotional weight.

    We get the same climax, the same reveal of Graves as the villain, etc. But now we’ve spent three movies with all these characters, and everything that happens means more.

    → 2:00 PM, Nov 28
  • Wanted: More Time

    Novel’s at 19,170 words.

    Limped along with 500 words a day through the week, then managed to crank out 2,000 words yesterday. Hoping to do the same today, and tomorrow, and Sunday.

    I need to be writing about 5,000 words a day, to make the NaNoWriMo deadline. That’s…probably not going to happen.

    I have to try, though. Even if I don’t get to 50,000 words this month, I’m still going to finish the novel. So every word still counts.

    → 2:00 PM, Nov 25
  • The Problem with Programmer Interviews

    You’re a nurse. You go in to interview for a new job at a hospital. You’re nervous, but confident you’ll get the job: you’ve got ten years of experience, and a glowing recommendation from your last hospital.

    You get to the interview room. There must be a mistake, though. The room number they gave you is an operating room.

    You go in anyway. The interviewer greets you, clipboard in hand. He tells you to scrub up, join the operation in progress.

    “But I don’t know anything about this patient,” you say. “Or this hospital.”

    They wave away your worries. “You’re a nurse, aren’t you? Get in there and prove it.”

    ….

    You’re a therapist. You’ve spent years counseling couples, helping them come to grips with the flaws in their relationship.

    You arrive for your interview with a new practice. They shake your hand, then take you into a room where two men are screaming at each other. Without introducing you, the interviewer pushes you forward.

    “Fix them,” he whispers.

    …

    You’re a pilot, trying to get a better job at a rival airline. When you arrive at your interview, they whisk you onto a transatlantic flight and sit you in the captain’s chair.

    “Fly us there,” they say.

    …

    You’re a software engineer. You’ve been doing it for ten years. You’ve seen tech fads come and go. You’ve worked for tiny startups, big companies, and everything in-between. Your last gig got acquired, which is why you’re looking for a new challenge.

    The interviewers – there’s three of them, which makes you nervous – smile and shake your hand. After introducing themselves, they wave at the whiteboard behind you.

    “Code for us.”

     

    → 2:00 PM, Nov 23
  • No Crisis

    I refuse to believe that Trump’s election is a moment of ‘crisis’ for liberalism.

    We’ve always been under siege. We’ve always been fighting uphill.

    We were fighting uphill when we were abolitionists. We were fighting uphill when we worked to win the right to vote for the women of this country.

    We were even fighting uphill when we wanted to stand with Britain in World War II. Not many people know this, but many in this country wanted to stay out, to let the Nazis and the Soviets divide up Europe between them, and let Japan have Asia. It took liberals like FDR to stand up and say, “That’s not the world we want to live in.”

    Every time, we have been in the right. It has just taken a while for the rest of the country to see it.

    I am reminded of MLK’s phrase, “the arc of history is long, but it bends towards justice.” I remember the victories of the recent past, when we expanded the right to marry to same-sex couples. When we finally decriminalized a drug less harmful than alcohol. When we made health insurance affordable for 20 million more Americans.

    This is not a crisis for liberalism. It isn’t the last gasp of conservatism, either, a desperate attempt by the powerful to stave off change.

    They are always fighting us. And we are always winning.

    This time will be no different.

    → 2:00 PM, Nov 21
  • Behind

    Novel’s at 12,104 words.

    I’m seriously behind. About 18,000 words behind, to be more specific.

    Trying to tell myself that every word written is a victory, and it’s enough to just have the novel started. That works. Sometimes.

    And sometimes I just want to take the day off work, so I can write.

    Because I’m also looking at the short story I’m supposed to revise, the previous novel I should be editing, and the one before that that I should be sending round to more agents.

    I put all that on hold so I “focus” on NaNoWriMo. But if I’m already slipping behind on this month’s writing, maybe I shouldn’t have?

    How far behind am I going to get on those projects, while I struggle through this one?

    → 2:00 PM, Nov 18
  • SPQR by Mary Beard

    Fascinating. Covers the first Roman millennium, from ~750 BCE to 212 CE, but with the specific goal of highlighting where our common conceptions of ancient Rome are wrong, and how many of our current political and cultural debates go back to the days of the Republic.

    This means the chapters aren’t strictly chronological, and sometimes double-back on the same period to illuminate a different side of it. Each is written well, though, and offers interesting facts of its own.

    Three of the many things I learned:

    • Many of the things that make us squeamish about the Romans (gladiator fights, Caesar's brutality during the wars in Gaul) were criticized at the time by the Romans themselves
    • Unlike most ancient empires, Rome was welcoming to immigrants and former slaves (in fact, their system of manumission was the first of its kind)
    • Ancient Romans were clean-shaven, going back as far as 300 BCE
    → 2:00 PM, Nov 14
  • Getting Back to Work

    Haven’t been able to write since Tuesday. I’ve been too hurt, too confused, too angry to spin up my imagination and write about what’s happening in that other world.

    It doesn’t help that it’s supposed to be a light book, full of whimsy and humor.

    I don’t feel very funny anymore.

    But I’ve got to get back to it.

    Maybe the book will turn out a little darker than I’d intended, now. Or maybe I’ll find a way to recapture the fun spirit I started with, and use the book to remind myself of the good things that are still out there: the wife that loves me, the friends that support me, the peers that understand what’s happening, and forgive.

    But most of all I need to finish it because this book has suddenly become more explicitly political than I intended.

    My main character is a lesbian, which when I started out was just the way the character came into my head. Now it feels like writing her is an act of defiance, a way of pushing back against Trump and his ilk.

    No one else may ever read this book, and it may never be good enough to be published. But damned if I won’t finish it, and make it as good as I can make it.

    Because the importance of minority representation in fiction has just hit home to me, and I want to do my part.

    → 2:00 PM, Nov 11
  • Heartbroken

    How can I write, when my heart is broken?

    How can I work, knowing my country doesn’t want me, or my wife, or my friends, to live how we want to live, or believe what we want to believe?

    How can I stay, when staying means accepting?

    How can I speak, when every word marks me out as different?

    Tomorrow may be better.

    But today, today my heart is broken.

    → 2:00 PM, Nov 9
  • There's More, Thank Goodness

    Went back to finish the short story, as prep for converting it into a novel for NaNoWriMo…and found I couldn’t finish it, because there was too much more to tell.

    Which is a relief, actually, because it means I don’t have to throw the short story away and start over, or worry about having enough depth in the setting and the characters for a novel. The short story is the intro to the novel, the opening scene(s), setting the stage for everything that follows.

    This has never happened to me before. But then, it’s only my third novel, so what do I know?

    Now I’m working up the outline of the book, discovering plots and subplots I didn’t know were waiting inside the short story.

    It’s a process that’s both fun and terrifying, like doing improv sketches in front of a video camera instead of an audience: you have to hope the jokes land, because you won’t know until long after you’re done performing.

    → 1:00 PM, Nov 4
  • Geronimo!

    It’s 50,000 words to win NaNoWriMo. I’ve got a head full of ideas, a half-finished short-story, no outline, and no plot.

    Hit it!

    → 1:00 PM, Nov 1
  • Three Fronts

    Made good progress on three different projects this week.

    First, the finished fantasy novel. I’ve pushed my first query letter out to my first choice of agent!

    I don’t know how hitting Send on an email could make me so tense, but it felt like I was walking on stage in front of a crowd of thousands. But now it’s done, and I can use the synopsis from that letter to build other queries for other agents.

    Second, I started workshopping a short story for the first time.

    A fellow writer recommended LitReactor to me last year; this week I finally worked up the courage to join and post something for review. It’s a story I wrote on the plane home from New York last month. I’ve already gotten some good feedback on it, and will probably post a second story there soon.

    Which brings to me to the third project: NaNoWriMo prep. I finished the short story (!) that I wanted to use to test out the concept. I think there’s definitely more to tell, there, though I’m not sure if I have enough for a full novel. Maybe just a series of stories.

    Guess there’s only one way to find out, and that’s to dive in and see how far I can get.

    → 1:00 PM, Oct 21
  • NaNoWriMo is Coming

    I really want to do NaNoWriMo again this year. Last time, it helped me finally dig in and start a novel, pushing me to get 50,000 words in before the end of November, and then finish it over the following months.

    That same novel is now edited and ready for querying. I’ve spent this week drafting a query letter, one I’ll be editing this next week before starting to send out.

    At the same time, I need to prep for NaNoWriMo, so I’ve also begun writing a new short story. It’s from an idea that’s been kicking around in my head for a few years. I think there may be a novel’s worth of story in there, but I don’t want to dive in to one without some prep work.

    So I’m writing a short story set in that world first, to see if it has legs. It’s something I did (without knowing it) for my first novel, and skipped – because I didn’t know it was something you could deliberately do – for the second.

    Since I found the first novel much easier to write, and I’ve heard other writers mention using the short story as a way to explore a novel idea, I’m going to try it out.

    If it works, I’ll have something solid to work with as I build my outline for NaNoWriMo. If it doesn’t, then at least I’ve only invested a week or two (instead of months).

    → 1:00 PM, Oct 14
  • Seven More Languages in Seven Weeks: Factor

    Continuing on to the next language in the book: Factor.

    Factor is…strange, and often frustrating. Where Lua felt simple and easy, Factor feels simple but hard.

    Its concatenative syntax looks clean, just a list of words written out in order, but reading it requires you to keep a mental stack in your head at all times, so you can predict what the code does.

    Here’s what I learned:

    Day One

    • not functions, words
    • pull and push onto the stack
    • no operator precedence, the math words are applied in order like everything else
    • whitespace is significant
    • not anonymous functions: quotations
    • `if` needs quotations as the true and false branches
    • data pushed onto stack can become "out of reach" when more data gets pushed onto it (ex: store a string, and then a number, the number is all you can reach)
    • the `.` word becomes critical, then, for seeing the result of operations without pushing new values on the stack
    • also have shuffle words for just this purpose (manipulating the stack)
    • help documentation crashes; no listing online for how to get word docs in listener (plenty for vocab help, but that doesn't help me)
    • factor is really hard to google for

    Day Two

    • word definitions must list how many values they take from the stack and how many they put back
    • names in those definitions are not args, since they are arbitrary (not used in the word code itself)
    • named global vars: symbols (have get and set; aka getters and setters)
    • standalone code imports NOTHING, have to pull in all needed vocabularies by hand
    • really, really hate the factor documentation
    • for example, claims strings implement the sequence protocol, but that's not exactly true...can't use "suffix" on a string, for example

    Day Three

    • not maps, TUPLES
    • auto-magically created getters and setters for all
    • often just use f for an empty value
    • is nice to be able to just write out lists of functions and not have to worry about explicit names for their arguments all over the place
    • floats can be an issue in tests without explicit casting (no types for functions, just values from the stack)
    • lots of example projects (games, etc) in the extra/ folder of the factor install
    → 1:00 PM, Oct 12
  • Becoming Steve Jobs by Brent Schlender and Rick Tetzeli

    Revelatory. Deliberately covers all of Jobs' flaws from his early days at Apple, to show how he learned and grew during his years away to become the kind of leader that could save the company.

    Along the way, builds a strong case for the importance of mentors, and for the very capable hands Jobs left the company in when he died.

    Three things I learned:

    • NeXT once had a deal with IBM to license their operating system to Big Blue, but it fell through because Steve couldn’t handle playing second fiddle
    • All of the original five “Apple Renegades” that founded NeXT with Steve quit
    • Toy Story spent four years in development before its premiere. Went through at least twelve different versions, including a “last minute” rewrite that delayed its release by a year.
    → 1:00 PM, Oct 10
  • Query Time

    Opened the novel this week to continue my edits. Flipped open my notes, looked for the next thing that needed to be fixed.

    There wasn’t one.

    Which means: the edits are done, hooray!

    But also means: it’s time to query agents. And suddenly I have the urge to hold onto the manuscript just a bit longer, to do just one more editing pass, before letting anyone in the publishing world see it.

    That won’t do. So I’ve been researching agents open to submissions in my genre, compiling a list of five to start with. I’ll find more once I’ve heard back from these five.

    I’m already steeling myself for the rejections, but there’s really no choice here: it’s either face rejection, or never have a chance of it getting picked up by a publishing house.

    → 1:00 PM, Oct 7
  • Confessions of a Shopaholic by Sophie Kinsella

    Surprisingly deep and engrossing. Reads like total fluff, but wrestles with real issues: debt, addiction, and substituting daydreams for working toward a goal.

    Three things I learned about writing:

    • Tension can come from a character's inner dialog, instead of from events. With the right narration, a night of watching tv can become high drama.
    • Obstacles don't have to come from outside the main character; it's just as satisfying to watch them overcome situations they've created for themselves.
    • Don't always need to hear both sides of a conversation. Sometimes it's more fun to imagine the other side for ourselves.
    → 1:00 PM, Oct 5
  • Last Cull

    Working through the last chapter that needs to be trimmed down. So far, I’ve cut about 12,000 words off the novel, close to my target of 14,000 (10% of the original length).

    So this weekend I’ll be able to start fixing the multitude of other errors I’ve found in the cutting.

    Thankfully my previous fixes – the patching over of the plot hole, making certain things explicit earlier in the book – have held up on this second read-through. In fact, I think trimming off the fat of the book has made the fixes better, bringing the stitched parts of the narrative closer together, in a way, so they reinforce each other.

    Strange to think that deleting words not only improves the pacing, but makes the other parts stronger.

    → 1:00 PM, Sep 23
  • Seven More Languages in Seven Weeks: Lua

    Realized I haven’t learned any new programming languages in a while, so I picked up a copy of Seven More Languages in Seven Weeks.

    Each chapter covers a different language. They’re broken up into ‘Days’, with each day’s exercises digging deeper into the language.

    Here’s what I learned about the first language in the book, Lua:

    Day One

    Just a dip into basic syntax.
    • table based
    • embeddable
    • whitespace doesn't matter
    • no integers, only floating-point (!)
    • comparison operators will not coerce their arguments, so you can't do =42 < '43'
    • functions are first class
    • has tail-call-optimization (!)
    • extra args are ignored
    • omitted args just get nil
    • variables are global by default (!)
    • can use anything as key in table, including functions
    • array indexes start at 1 (!)

    Day Two

    Multithreading and OOP.
    • no multithreading, no threads at all
    • coroutines will only ever run on one core, so have to handle blocking and unblocking them manually
    • explicit over implicit, i guess?
    • since can use functions as values in tables, can build entire OO system from scratch using (self) passed in as first value to those functions
    • coroutines can also get you memoization, since yielding means the state of the fn is saved and resumed later
    • modules: can choose what gets exported, via another table at the bottom

    Day Three

    A very cool project -- build a midi player in Lua with C++ interop -- that was incredibly frustrating to get working. Nothing in the chapter was helpful. Learned more about C++ and Mac OS X audio than Lua.
    • had to add Homebrew's Lua include directory (/usr/local/Cellar/lua/5.2.4_3/include) into include_directories command in CMakeLists.txt file
    • when compiling play.cpp, linker couldn't find lua libs, so had to invoke the command by hand (after reading ld manual) with brew lua lib directory added to its search path via -L
    • basically, add this to CMakeFiles/play.dir/link.txt: -L /usr/local/Cellar/lua/5.2.4_3/lib -L /usr/local/Cellar/rtmidi/2.1.1/lib
    • adding those -L declarations will ensure make will find the right lib directories when doing its ld invocation (linking)
    • also had to go into the Audio Midi Setup utility and set the IAC Driver to device is online in order for any open ports to show up
    • AND then needed to be sure was running the Simplesynth application with the input set to the IAC Driver, to be able to hear the notes
    → 1:00 PM, Sep 21
  • Seven Bad Ideas by Jeff Madrick

    Comprehensive. Explains 7 of the biggest ideas underlying the dominant economic model of the world, then demolishes them. One by one, each is shown to be based on false assumptions and a complete lack of evidence.

    Ties everything together by showing how policy shaped by these ideas has damaged the world economy.

    Three of the many things I learned:

    • The modern concept of using defense contracts to spur industrial innovation was invented in the US, in the 1800s.
    • For Adam Smith, prosperity came from increased productivity (usually from a better division of labor), not from the Invisible Hand, which was a guide to where to invest, not the engine of growth itself.
    • Multiple Acts of Congress (notably the Humphrey-Hawkins Act of 1978) direct the Federal Reserve system to pursue policies of full employment and low inflation. For the past thirty years, the employment mandate has been ignored.
    → 1:01 PM, Sep 19
← Newer Posts Page 19 of 33 Older Posts →
  • RSS
  • JSON Feed