Ron Toland
About Canada Writing Updates Recently Read Photos Also on Micro.blog
  • Strangely Beautiful, Vol 1 by Leanna Renee Hieber

    “Gothic” in the overwrought, melodramatic sense.

    There’s some fantastic ideas in here, but it was tough one for me to finish.

    Three things I learned about writing:

    • People falling love notice everything about their beloved. If writing from the POV of a character falling in love, their thoughts will dwell on even insignificant details about their beloved.
    • Constant repetition of unexplained magical elements makes them annoying and boring. Conserve the magic, to make it interesting.
    • Use a deep dive into a character's thoughts during conversation sparingly. Dialog should speed the story along, interrupting the flow with paragraphs of thought undercuts momentum and frustrates readers.
    → 1:00 PM, Apr 10
  • Cranking Through

    Managed to whittle the list of editing passes from twelve to twenty and now back to thirteen.

    Which means I didn’t finish them by the end of March, like I wanted.

    I did finish the biggest of the changes, though: giving each chapter to either the male or the female protagonist, swapping evenly between the two, and filling out her narrative arc so that her storyline has equal weight.

    The changes I have left are much smaller: revising character appearances, adding touches to scene descriptions, and making sure everything is consistent.

    Still, I’m setting weekly goals, aiming for three editing passes done each week. At that rate, I’ll be finished with the edits in early May :/

    Much later than I’d like, but I tell myself that’s better than not doing them, or worse yet, continuing to tweak and edit for a year or more.

    → 2:11 PM, Apr 7
  • Seven More Languages in Seven Weeks: Julia

    Julia feels…rough.

    There are parts I absolutely love, like the strong typing, the baked-in matrix operations, and the support for multi-type dispatch.

    Then there’s the pieces that seem incomplete. Like the documentation, which is very extensive, but proved useless when trying to find out the proper way to build dictionaries in the latest version. Or the package system, which will install things right into a running repl (cool!) but does it without getting your permission for all its dependencies (boo).

    All in all, I’d like to build something more extensive in Julia. Preferably something ML-related, that I might normally build in Python.

    Day One

    • can install with brew
    • book written for 0.3, newest version is 0.5
    • has a repl built in :)
    • typeof for types
    • "" for strings, '' only for single-chars
    • // when you want to divide and leave it divided (no float, keep the fraction)
    • has symbols
    • arrays are typed, but can contain more than one type (will switch from char to any, for example)
    • commas are required for lists, arrays, etc (boo)
    • tuples: fixed sized bags of values, typed according to what they hold
    • arrays carry around their dimensionality (will be important for matrix-type ops later on)
    • has dictionaries as well
    • hmm: typeof({:foo => 5}) -> vector syntax is discontinued
    • Dicts have to be explicitly built now: Dict(:foo => 5) is the equivalent
    • XOR operator with $
    • bits to see the binary of a value
    • can assign to multiple variables at once with commas (like python)
    • trying to access an undefined key in a dict throws an error
    • in can check membership of arrays or iterators, but not dictionaries
    • but: can check for key and value in dict using in + pair of key, value: in(:a => 1, explicit)
    • book's syntax of using tuple for the search is incorrect
    • julia docs are really...not helpful :/
    • book's syntax for set construction is also wrong
    • nothing in the online docs to correct it
    • (of course, nothing in the online docs to correct my Dict construction syntax, either)
    • can construct Set with: Set([1, 2, 3])
    • arrays are typed (Any for multiple types)
    • array indexes start at 1, not 0 (!) [follows math here]
    • array slices include the ending index
    • can mutate index by assigning to existing index, but assigning to non-existing index doesn't append to the array, throws error
    • array notation is row, column
    • * will do matrix multiplication (means # of rows of first has to match # of columns of second)
    • regular element-wise multiplication needs .*
    • need a transpose? just add '
    • very much like linear algebra; baked-in
    • dictionaries are typed, will throw error if you try to add key/value to them that doesn't match the types it was created with
    • BUT: can merge a dict with a dict with different types, creates a new dict with Any to hold the differing types (keys or values)

    Day Two

    • if..elseif...end
    • if check has to be a boolean; won't coerce strings, non-boolean values to booleans (nice)
    • reference vars inside of strings with $ prefix: println("$a")
    • has user-defined types
    • can add type constraints to user-defined type fields
    • automatically gets constructor fn with the same name as the type and arguments, one per field
    • subtype only one level
    • abstract types are just ways to group other types
    • no more super(), use supertype() -> suggested by compiler error message, which is nice
    • functions return value of last expression
    • ... to get a collection of args
    • +(1, 2) -> yields 3, operators can be used as prefix functions
    • ... will expand collection into arguments for a function
    • will dispatch function calls based on the types of all the arguments
    • type on pg 208: int() doesn't exist, it's Int()
    • WARNING: Base.ASCIIString is deprecated, use String instead.
    • no need to extend protocols or objects, classes, etc to add new functions for dispatching on core types: can just define the new functions, wherever you like, julia will dispatch appropriately
    • avoids problem with clojure defmulti's, where you have to bring in the parent lib all the time
    • julia has erlang-like processes and message-passing to handle concurrency
    • WARNING: remotecall(id::Integer,f::Function,args...) is deprecated, use remotecall(f,id::Integer,args...) instead.
    • (remotecall arg order has changed)
    • randbool -> NOPE, try rand(Bool)
    • looks like there's some overhead in using processes for the first time; pflip_coins times are double the non-parallel version at first, then are reliably twice as fast
    • julia founders answered the interview questions as one voice, with no distinction between them
    • whole section in the julia manual for parallel computing

    Day Three

    • macros are based off of lisp's (!)
    • quote with :
    • names fn no longer exists (for the Expr type, just fine for the Module type)
    • use fieldnames instead
    • unquote -> $
    • invoke macro with @ followed by the args
    • Pkg.add() will fetch directly into a running repl
    • hmm...installs homebrew without checking if it's on your system already, or if you have it somewhere else
    • also doesn't *ask* if it's ok to install homebrew
    • not cool, julia, not cool
    • even then, not all dependencies installed at the time...still needed QuartzIO to display an image
    • view not defined
    • ImageView.view -> deprecated
    • imgshow does nothing
    • docs don't help
    • hmm...restarting repl seems to have fixed it...window is hidden behind others
    • img no longer has data attribute, is just the pixels now
    • rounding errors means pixels != pixels2
    • ifloor -> floor(Int64, val) now
    • works!
    → 1:00 PM, Apr 5
  • I Am Providence by Nick Mamatas

    Disturbing. Most of the characters are completely unlikable, especially the men: the worst are outright misogynists and racists, even the best act like superior assholes to everyone else.

    Mamatas doesn’t pull any punches in exposing the sexism and harassment that happens at fan conventions. It makes for tough reading, both because the female protagonist is constantly experiencing it and because the male narrator, whose death she’s investigating, is one of the superior assholes it’s hard to sympathize with.

    Worth reading, though, if nothing else than as a “Do I act like this?” check.

    Three things it taught me about writing:

    • - Can get away with very skimpy descriptions -- or none at all -- if you choose the proper perspective to tell the story from (in this case, a corpse's).
    • Protagonist's motivation for pursuing the mystery can be thin, if the reader's interest is piqued enough for them to want to see it solved
    • Characters will always rationalize their behavior. Even when dead.
    → 1:00 PM, Apr 3
  • Emperor of the Eight Islands by Lian Hearn

    Beautiful. Simple, tight prose, telling a deeply moving story.

    Can’t wait to read the next one.

    Three things I learned about writing:

    • What a society condemns is just as important to making it feel lived-in as what it praises.
    • Characters don't always have to be imposing their will on the world. They can show their inner character by the opportunities they take advantage of, as well.
    • In a world of bad choices and flawed people, heroes can be cruel and cowardly, and villains can show mercy.
    → 2:00 PM, Mar 29
  • On the Eyeball Floor and Other Stories by Tina Connolly

    A strong collection of stories. Connolly moves from near-future sci-fi to alternate world fantasy to present-day witches, populating each story with strong, unique characters.

    Will definitely be picking up her novel, Seriously Wicked, which takes place in the same world as one my favorite stories from this collection.

    Three things it taught me about writing:

    • The thinner the story, the shorter the work should be. Don't make the reader wade through lots of background or context just to get to the heart of events.
    • Writing in the present-day relieves you of a lot of world-building duties, lets you focus on creating great characters.
    • Even stories told via journal entries (or texts, or emails) can have a proper buildup to a climax.
    → 1:00 PM, Mar 27
  • Headstrong by Rachel Swaby

    A cornucopia of female scientists and engineers that got left out of the history I learned in school.

    It’s amazing how much these women accomplished considering how much was stacked against them. Time after time, in these biographies, I read how a brilliant scientist would be forced to work for free, because the university didn’t hire women. Often, they’d find employment in a German university, only to be kicked out once the Nazis took power and started firing Jewish scientists.

    That kind of treatment would make me rebellious, want to stop my work completely and find something less important to do.

    But these women persisted.

    Three of the many things I learned:

    • Grace Hopper was the first woman to graduate with a PhD in math from Yale. She invented the compiler, set the foundations for COBOL, and was considered so valuable to the Navy that she was called back from retirement to work another 19 years (!)
    • When Einstein needed tutoring in the higher math he needed to pursue his theory of General Relativity, he turned to Emmy Noether, the inventor of abstract algebra. Through the course of teaching Einstein, she invented the equations needed to set General Relativity on a solid mathematical footing.
    • Marie Tharp mapped 70% of the ocean floor, and discovered the Mid-Atlantic Ridge. She insisted that it was confirmation of continental drift for years (and was fired for it!) before theory became accepted.
    → 1:00 PM, Mar 20
  • White Horse by Alex Adams

    Frustrating and disappointing. Adams' writing is stuffed with metaphors, giving everything a dreamy quality that makes it hard to take anything seriously.

    Didn’t help that I just came off reading Octavia Butler’s Earthseed books, which do a much better job of narrating a woman’s journey through a post-apocalyptic world.

    Three things it taught me about writing:

    • If readers already know the narrator survives a scene in a flashback, don't try to wring tension out of their survival.
    • Readers need to know not only what your characters are doing, but why, if they're going to care.
    • When writing a character from a different country, do several editing passes to be certain their dialog, analogies, and expressions all match where they're supposed to be from.
    → 1:00 PM, Mar 13
  • Everyone Gets a Pass

    My original plan for editing the first novel turned out to be…rather naive.

    I thought it would be enough to fix the female protagonist’s plotline, then make a few description tweaks, and be done.

    Instead, I’m looking at making a dozen or more editing passes over the novel, each one picking out a thing to fix and make consistent through the book.

    I’ve had to change character appearances, character names, city names, backstory, world history…nearly every element needs to be tweaked one way or another to line up better with what I think the novel should be.

    So I’m keeping a running list of things to fix as I go, jotting them down as I find them. That way I can focus on just one editing task at a time, getting one thing right all the way through the book before going back to the beginning and starting on the next fix.

    My goal was to have these edits done by the end of the month (for a total of three months of editing), so I could spend the next three months editing my second novel. But we’re a third of the way through March, and, well…my list keeps growing.

    Still, I’ll push on. I’m finding I still like this novel, still like the characters. I want to do them justice, give them the best book I can. So I’ll keep working through the list, till the list is done.

    → 4:00 PM, Mar 10
  • Parable of the Talents by Octavia E. Butler

    Prescient, gripping, and intimidatingly good. Definitely going to read more of Butler’s books.

    I’m rather sad that she wasn’t able to complete a new Earthseed series, like she planned, before her death.

    Three more things she taught me about writing:

    • Perfectly acceptable to have the sequel start out as more "and then this happened".
    • First act turn is a great place to upend what the characters have built previously, have the outside world come in with the force of a storm.
    • Editors and compilers of biographies can have agendas just like other characters, and become more interesting when they reveal them
    → 2:00 PM, Mar 6
  • Seven More Languages in Seven Weeks: Elixir

    So frustrating. I had high hopes going in that Elixir might be my next server-side language of choice. It’s built on the Erlang VM, after all, so concurrency should be a breeze. Ditto distributed applications and fault-tolerance. All supposedly wrapped in a more digestible syntax than Erlang provides.

    Boy, was I misled.

    The syntax seems to be heavily Ruby-influenced, in a bad way. There’s magic methods, black box behavior, and OOP-style features built in everywhere.

    The examples in this chapter go deeply into this Ruby-flavored world, and skip entirely over what I thought were the benefits to the language. If Elixir makes writing concurrent, distributed applications easier, I have no idea, because this book doesn’t bother working examples that highlight it.

    Instead, the impression I get is that this is a way to write Ruby in Erlang, an attempt to push OOP concepts into the functional programming world, resulting in a hideous language that I wouldn’t touch with a ten-foot-pole.

    I miss Elm.

    Day One

    • biggest influences: lisp, erlang, ruby
    • need to install erlang *and* elixir
    • both available via brew
    • syntax changing quickly, it's a young language
    • if do:
    • IO.puts for println
    • expressions in the repl always have a return value, even if it's just :ok
    • looks like it has symbols, too (but they're called atoms)
    • tuples: collections of fixed size
    • can use pattern matching to destructure tuples via assignment operator
    • doesn't allow mutable state, but can look like it, because compiler will rename vars and shuffle things around for you if you assign something to price (say) multiple times
    • weird: "pipes" |> for threading macros
    • dots and parens only needed for anonymous functions (which can still be assigned to a variable)
    • prints out a warning if you redefine a module, but lets you do it
    • pattern matching for multiple functions definition in a single module (will run the version of the function that matches the inputs)
    • can define one module's functions in terms of another's
    • can use when conditions in function def as guards to regulate under what inputs the function will get run
    • scripting via .exs files, can run with iex
    • put_in returns an updated copy of the map, it doesn't update the map in place
    • elixir's lists are linked lists, not arrays!
    • char lists are not strings: dear god
    • so: is_list "string" -> false, but is_list 'string' -> true (!)
    • wat
    • pipe to append to the head
    • when destructuring a list, the number of items on each side have to match (unless you use the magic pipe)
    • can use _ for matching arbitrary item
    • Enum for processing lists (running arbitrary functions on them in different ways, like mapping and reducing, filtering, etc)
    • for comprehensions: a lot like python's list comprehensions; takes a generator (basically ways to pull values from a list), an optional filter (filter which values from the list get used), and a function to run on the pulled values
    • elixir source is on github

    Day Two

    • mix is built in to elixir, installing the language installs the build tool (nice)
    • basic project template includes a gitignore, a readme, and test files
    • source files go in lib, not src
    • struct: map with fixed set of fields, that you can add behavior to via functions...sounds like an object to me :/
    • iex -S mix to start iex with modules from your project
    • will throw compiler errors for unknown keys, which is nice, i guess?
    • since built on the erlang vm, but not erlang, we can use macros, which get expanded at compile time (presumably, to erlang code)
    • should is...well...kind of a silly macro
    • __using__ just to avoid a fully-qualified call seems...gross...and too implicit
    • and we've got to define new macros to override compile-time behavior? i...i can't watch
    • module attributes -> compile-time variables -> object attributes by another name?
    • use, __using__, @before_compile -> magic, magic everywhere, so gross
    • state machine's "beautiful syntax" seems more like obscure indirection to me
    • can elixir make me hate macros?
    • whole thing seems like...a bad example. as if the person writing it is trying to duplicate OOP-style inheritance inside a functional language.
    • elixir-pipes example from the endnotes (github project) is much better at showing the motivation and usage of real macros

    Day Three

    • creator's main language was Ruby...and it shows :/
    • spawn returns the process id of the underlying erlang process
    • pattern matching applies to what to do with the messages a process receives via its inbox
    • can write the code handling the inbox messages *after* the messages are sent (!)
    • task -> like future in clojure, can send work off to be done in another process, then later wait for the return value
    • use of Erlang's OTP built into Elixir's library
    • construct the thing with start_link, but send it messages via GenServer...more indirection
    • hmm...claims it's a "fully distributed server", but all i see are functions getting called that return values, no client-server relationship here?
    • final example: cast works fine, but call is broken (says process not alive; same message regardless of what command sent in (:rent, :return, etc)
    • oddly enough, it works *until* we make the changes to have the supervisor run everything for us behind the scenes ("like magic!")
    • endnotes say we learned about protocols, but they were mentioned only once, in day two, as something we should look up on our own :/
    • would have been nicer to actually *use* the concurrency features of language, to, idk, maybe use all the cores on your laptop to run a map/reduce job?
    → 2:00 PM, Mar 1
  • The Man Who Knew Too Much by G K Chesterton

    A series of confusing, racist, Anti-Semitic stories. None of the characters are admirable. The mysteries are mostly atmosphere followed by “as you know” mansplaining. The only memorable characters are the ones he gives over to racist caricature.

    Taught me several things not to do:

    • Don't lean on description over plot. A thin mystery is a boring mystery, no matter how you dress it up in thick descriptions.
    • Don't hold your characters in contempt. If you don't like writing about them, why would anyone want to read about them?
    • Don't assume that insisting two characters are friends is enough for the audience. If they're friends, readers should be able to tell without being told. If no one can tell, then, maybe they're not friends after all?
    → 2:00 PM, Feb 27
  • Sleeping Giants by Sylvain Neuvel

    Oddly compelling. Told any other way, it’d be just one more story about giant robots and the people piloting them. But by telling it through interviews, to make it feel like you’re reading a classified dossier, makes it feel fresh and compelling.

    Three things I learned about writing:

    • Even old ideas can feel new again when told in a different way.
    • Interviews can let you do first-person narration without having to actually narrate. No need for detailed descriptions, etc. Can take a lot of shortcuts and still feel real.
    • Don't forget the interviewer! They have their own agenda, and that should come through in their questions and reactions.
    → 2:00 PM, Feb 22
  • Doctor Who Psychology edited by Travis Langley

    Disappointing. Most of the essays are too short to be rewarding, stopping just when they might be getting to something interesting. Several of them repeat the same answers to the same questions (what is the Doctor’s personality?).

    However, a few of the essays stand out as offering interesting takes on the Doctor and his world:

    • The Doctor is a combination of id (easily bored, cravings for fish fingers and custard) and superego (this world is defended). No discernible ego, though: his companions fill that role for him (!)
    • The Doctor and the Cybermen represent opposed views of masculinity. The Cybermen are an emotionally stunted (but all too common) masculinity: closed off, suppressing emotion, stoic and expressionless. The Doctor is a healthier alternative: still paternal, still protective, but emotionally open and compassionate.
    • Weeping Angels are terrifying because they turn what should be a Great Mother archetype into the Shadow. From nurturers they become deepest evil; and worse, we cannot run and hide from this evil, we must look at it, must confront it, even though we don't want to.
    → 2:00 PM, Feb 20
  • The Parable of the Sower by Octavia E. Butler

    Eerily prescient. Takes place in a California where water is scarce, most government has been privatized, and the President uses racial politics to push through reforms that weaken protections for workers and the poor.

    Felt all too familiar. And she predicted all this over twenty years ago.

    I usually don’t like post-apocalyptic books, especially ones that go in for the “slow apocalypse” where everything just collapses over time as people stop taking care of the things that keep civilization going. It’s depressing reading, but Butler’s writing is so compelling, I had to see it through.

    Three things I learned about writing:

    • Scarcities in society will be reflected in the social order. If food is scarce, being fat is a sign of wealth. If water is scarce, being clean (taking baths) will be seen luxurious. In both cases, being poor and engaging in "rich" behavior will be seen as uppity.
    • There's life in the hero's journey yet, if explored from different angles. Here the young protagonist grows up in a small town, yet feels called to greatness, then compelled to become a leader when driven out of their home.
    • Adopting a diary structure can let you skip past boring parts of the story will zooming in on the important ones. A well-written diary will do that, and still give you a chance to convey the rhythms of life, since it's the story the person is telling themselves, as they live it.
    → 2:00 PM, Feb 15
  • Making Comics by Scott McCloud

    Insightful, like all of Scott McCloud’s books on comics. Not enough on its own for me to go out and start writing my own comics, but helped me to see connections between storytelling techniques in comics, films, and novels.

    Three things I learned about comics and storytelling:

    • Comics adds additional choices to the way you tell a story. It's not just the events themselves, but which moments from those events you choose to show, as well as how you frame the "shots" for those moments, and how you render the images within those frames.
    • Manga often uses aspect transitions between panels to build a scene. Instead of a single wide establishing shot, will focus in on different "aspects" of a scene (e.g., rain falling from the sky, puddles forming in concrete, raindrops battering steel and glass buildings, etc) forcing the reader to assemble the scene in their own mind.
    • Giving your characters different philosophies of life can both enrich their inner lives and make the world you're building feel more real to the reader.
    → 2:00 PM, Feb 13
  • Seven More Languages in Seven Weeks: Elm

    Between the move and the election and the holidays, took me a long time to finish this chapter.

    But I’m glad I did, because Elm is – dare I say – fun?

    The error messages are fantastic. The syntax feels like Haskell without being as obtuse.  Even the package management system just feels nice.

    A sign of how much I liked working in Elm: the examples for Day Two and Three of the book were written for Elm 0.14, using a concept called signals. Unfortunately, signals were completely removed in Elm 0.17 (!). So to get the book examples working in Elm 0.18, I had to basically rebuild them. Which meant spending a lot of time with the (admittedly great) Elm tutorial and trial-and-erroring things until they worked again.

    None of which I minded because, well, Elm is a great language to work in.

    Here’s the results of my efforts:

    • Day Two
    • Day Three
    And here's what I learned:

    Day One

    • haskell-inspired
    • elm-installer: damn, that was easy
    • it's got a repl!
    • emacs mode also
    • types come back with all the values (expression results)
    • holy sh*t: "Maybe you forgot some parentheses? Or a comma?"
    • omg: "Hint: All elements should be the same type of value so that we can iterate through the list without running into unexpected values."
    • type inferred: don't have to explicitly declare the type of every variable
    • polymorphism via type classes
    • single-assignment, but the repl is a little looser
    • pipe syntax for if statement in book is gone in elm 0.17
    • case statement allows pattern matching
    • case statement needs the newlines, even in the repl (use `\`)
    • can build own complex data types (but not type classes)
    • case also needs indentation to work (especially if using result for assignment in the repl)
    • records: abstract types for people without beards
    • changing records: use `=` instead of `<-`: { blackQueen | color = White }
    • records look like they're immutable now, when they weren't before? code altering them in day one doesn't work
    • parens around function calls are optional
    • infers types of function parameters
    • both left and right (!) function composition <| and |>
    • got map and filter based off the List type (?)
    • no special syntax for defining a function versus a regular variable, just set a name equal to the function body (with the function args before the equal sign)
    • head::tail pattern matching in function definition no longer works; elm is now stricter about requiring you to define all the possible inputs, including the empty list
    • elm is a curried language (!)
    • no reduce: foldr or foldl
    • have to paren the infix functions to use in foldr: List.foldr (*) 1 list
    • hard exercise seems to depend on elm being looser than it is; afaict, it won't let you pass in a list of records with differing fields (type volation), nor will it let you try to access a field that isn't there (another type violation)

    Day Two

    • section is built around signals, which were removed in Elm 0.17 (!)
    • elm has actually deliberately moved away from FRP as a paradigm
    • looks like will need to completely rewrite the sample code for each one as we go...thankfully, there's good examples in the elm docs (whew!)
    • [check gists for rewritten code]
    • module elm-lang/keyboard isn't imported in the elm online editor by default anymore

    Day Three

    • can fix the errors from loading Collage and Element into main by using toHtml method of the Collage object
    • elm-reactor will give you a hot-updated project listening on port 8000 (so, refresh web page of localhost:8000 and get updated view of what your project looks like)
    • error messages are very descriptive, can work through upgrading a project just by following along (and refreshing alot)
    • critical to getting game working: https://ohanhi.github.io/base-for-game-elm-017.html (multiple subscriptions)
    → 2:00 PM, Jan 30
  • The Just City by Jo Walton

    Inspiring. I could not imagine daring to try to write dialog for Greek gods and long-dead philosophers, but she did, and does it brilliantly.

    Made me miss my days as a philosophy major, and that’s a good thing.

    Three things I learned about writing:

    • Long explanations of things are ok, but only after the reader has come to know the characters, and care about them.
    • Switching first-person narrators is fine, so long as you keep the number of them down and clearly label each chapter so we know which character is speaking.
    • Sense of place can come through not just by food and clothing, but architecture and leisure activities as well.
    → 2:00 PM, Jan 25
  • Average

    There’s a video making the rounds on Facebook that claims to show how the “average American” views the Trump inauguration.

    It’s shows a lone white male, surrounded by flag art, talking about how we liberals should suck it up, and that real Americans, like him, are happy Trump won.

    This video pisses me off for several reasons.

    First, the guy being interviewed isn’t one of the “real Americans” he claims to represent. He’s an artist, not a coal miner. He profits off of the people he wants to speak for, but he’s not one of them.

    Second, the whole idea that “average Americans” are just like this guy, and all happy about Trump, is a lie. It’s code, code that only white, uneducated males are real Americans, and everyone else should sit down and shut up.

    What would a video wanting to accurately show an average American be like?

    Most Americans are female. So we have to swap the dude for a woman.

    Most Americans live in liberal, coastal areas. So now we have to move the woman speaking out of the implied RustBelt setting and to one of the coasts. Maybe New York, maybe California.

    Most Americans do think of themselves as white, so she can be white and still be “average.”

    But uneducated? Not this woman. She’s got her high school diploma, and taken some college classes. She probably has an associate’s degree, which she’s used to get a better job.

    So we have a white, working-class but educated, woman living on the coasts.

    She’s probably Democratic. She probably voted for Hilary. She’s likely in favor of the ACA, and the protections it provides for her access to women’s health care.

    It’s the exact opposite of what the video portrays, which is why it ticks me off so much.

    But more than that, I hate the implication that other people, who aren’t white, or male, or uneducated, are somehow lesser citizens.

    I hate the smug superiority the video reinforces. It’s the refuge of bullies and cowards, of people looking to blame someone else for their situation.

    I understand that it’s hard to make a living without a college degree. I understand it’s difficult to change careers when the factory you depended on shuts down. I understand you don’t want to move to a strange town to chase a new job.

    But if I could offer some advice to them: suck it up.

    Because you had their chance. You made fun of guys like me all through school. You ditched classes and slacked off on your studies. You didn’t go to college, didn’t think it was something “real men” did.

    You rule out taking on all kinds of jobs, from nursing to teaching to customer service, as “women’s work”. So your wife or your girlfriend has to support you, while you wait for the Industrial Age to roll back through town.

    It’s not happening. No one is coming to save you: not Trump, not Pence, not Paul Ryan. They want your votes, but they aren’t going to help you one bit.

    You’re going to have to do it on your own.

    And it’s your own fault. You voted to cut the ladder of economic advancement out from under yourself and everyone else.

    I sympathize with you, but I don’t feel sorry for you.

    You’re a crybaby, whining about the good times that have passed you by.

    You’re lazy, unwilling to do the work to make something better of yourself.

    And you’re a coward, afraid to join the ranks of those who have their own business, who have to justify their existence through service to others in the marketplace.

    You’re an un-American burden on the country, and I can only hope the next four years open your eyes to how your pride and the Republican party have deceived you.

    → 3:21 PM, Jan 23
  • Editing as Worldbuilding

    We’re here! Made it into San Diego last week, despite freezing rain (Flagstaff), gusty winds (most of New Mexico), and fog (Cuyamaca Mountains).

    No, we’re not unpacked yet. Yes, I unpacked the books first :)

    So, back to work. And also back to writing.

    I’ve decided to do another editing pass on the first novel. I feel like I’ve learned a lot about writing in just the last few months, and I’d like to apply what I’ve learned to it, see if it makes it better.

    I’d also like to go back and fill in a lot of the worldbuilding details I left vague in the first two drafts. Flesh out character backgrounds, city histories, etc. I don’t want to add a huge info-dump to the book, but I do want to make sure everything holds together better, the various pieces of book matching up to make a more powerful whole.

    And after thinking through the plot more, I’m really not satisfied with the way I’ve handled the female protagonist. That’s part of why I need to flesh out the character backgrounds, specifically hers. I realized her character arc is muted, a victim of me being unsure who I wanted to be the protagonist in the first draft.

    She deserves better, so I’m going to pull out her conflicts and struggles into its own storyline, an independent path to follow while she also contributes to the central plot. I think it’ll make the book stronger, and the ending more compelling.

    Some of these changes will be dialog or description tweaks. Some of this will probably end up being major surgery. But I’ve got to try.

    Wish me luck.

    → 3:16 PM, Jan 20
  • Ancillary Justice by Ann Leckie

    Easily worthy of the awards it won. Fantastic ideas, presented through conflicts with interesting characters, and writing that describes just enough and no more.

    And I almost stopped halfway through.

    There’s a point where the protagonist does something so amazingly dumb, that I wanted to put the book down in frustration. But I kept going, and I’m glad I did. Because it only got better from there.

    Three things I learned about writing:

    • Beware delaying explanations for too long. A character that says "I don't know why I did X" too often, before their inability to explain is outlined to the reader, can lead to frustration.
    • Don't have to wait for the character to say "and then I told them my story" to tell that story to the reader. Can layer it in, piece by piece, via flashback chapters.
    • Small touches, like bare hands being considered vulgar, when followed-through, can do a lot of work to make a culture feel real.
    → 2:00 PM, Jan 11
  • The Creation of Anne Boleyn by Susan Bordo

    Fascinating. Examines both what we know about Anne Boleyn (very little), and the stories that have been told about her (very much).

    Turns out most of what I thought was accepted history is in fact based on gossip spread by her enemies.

    Three things I learned:

    • Execution of Anne was the first time a queen had been executed in English history
    • Anne spent a good deal of her childhood on the continent, under the tutelage of Marguerite de Navarre (sister of Francis I of France) who ran the most philosophically glittering salon in Europe
    • The intelligent, pro-reform Anne of the second season of The Tudors is due mainly to Natalie Dormer, who wanted to portray an Anne closer to the historical one than had been done before
    → 2:00 PM, Jan 9
  • Idle Hands

    No writing this week. The novel’s done (for now), so I’ve been focused on the upcoming move, getting everything boxed and labeled and loaded. 

    It’s like having our lives flash frozen, to be thawed on arrival in California.

    Not having a writing project to work on is, as ever, weird. It’s as if school exams have been canceled, but just for me: I feel like I should be studying, but I’m not. Because I don’t have to.

    Not that my brain has noticed. Woke up in the middle of the night with an idea for another story. I think it’s a flash fiction piece, but there might be more there. Have to write it and find out.

    It’ll have to wait its turn, though. Behind the move, and the novel edits, and the short story edits, and querying agents, and the…ye gods, I’ve got a lot of work to do.

    Excuse me, I need to go write.

    → 2:56 PM, Jan 6
  • There are No Sides. Just the Truth.

    Dear U.S. Media: Please stop reporting both sides.

    I know you want to appear impartial. I know you want to be trusted.

    But here’s the thing: by reporting ‘sides’ instead of facts, you reinforce the idea that having sides is legitimate. Instead of pushing both sides to acknowledge the truth, you let their opinions stand.

    The result? Neither side trusts you. Because you’re no longer digging for the truth, you’re just a parrot, repeating what you’ve been told.

    This idea that you need to repeat both sides is itself a political one. It goes back to the days of President Nixon, when his staff used the threat of the loss of FCC licenses to get tv news organizations to spend more time giving the President’s “side” of things. Instead of just sticking to facts.

    I know, I know. You think the “truth is in the middle.”

    But that’s false.

    There was no middle ground between Saddam Hussein having nukes or not.

    There’s no middle ground about where President Obama was born.

    And there will be no middle ground about the lies a President Trump will tell.

    So please, stop pretending to be impartial.

    The facts aren’t impartial. The facts always support one side over another.

    It’s time you started supporting them.

    → 2:20 PM, Jan 4
  • Going Home

    Thank the gods 2016 is over.

    I think it’s been a rough year for many people. My rough 2016 actually stretches all the way back to fall 2015, when my wife and I upped stakes and moved back to the mid-south to take care of her mother.

    The stress of that time – her mother’s health, the terrible condition of the house we bought, the shock of discovering that all traces of the friendly South we’d once known were gone – almost undid us. We felt abandoned, hated by our neighbors and resented by her family.

    Things improved when we were able to tread water enough to reconnect with our friends, plug back into the community of accepting nerds and geeks we’d missed.

    But the presidential campaign, culminating in the election of a liar, a swindler, and a bigot, convinced us that nothing could make up for the fact that we don’t belong here. And never will.

    So we’re moving back to California.

    Back to a state that takes life seriously, and so passed the most restrictive gun control laws in the country.

    A state that takes liberty seriously enough to want to offer it to refugees from a horrible civil war.

    A state that knows the pursuit of happiness means respecting the many diverse ways that its citizens go about it.

    I can’t wait to be back home.

    → 3:17 PM, Jan 2
← Newer Posts Page 18 of 33 Older Posts →
  • RSS
  • JSON Feed