Image 01

Transneptune

beyond the Kuiper Belt, over the sea

Defense against the Dark Arts

May 18th, 2017 by Kit

I’ve just been reading Carole Cadwalladr’s excellent journalism on the subject of Robert Mercer, Cambridge Analytica, and the Brexit and Trump votes. You can see the articles here and here. They’re chilling, and upsetting, and important.

At some level, what Cambridge Analytica is doing is something familiar: propaganda. It’s different in two respects, though: one, it’s targeted at the people most vulnerable to it, and two, it’s crafted especially to trigger their vulnerabilities. So instead of trying to find a message that you can spread all over the airwaves to convince everyone of your message, you find the voters at the margin, who are undecided, find the segment of them that you can sway, and then you find just what emotional buttons to push to sway them. Because you can automate so much of this, it becomes much more cost effective. It also has the added advantage of never showing your message to people who might get polarized away from your goal by it.

Another important factor here is that people can be targeted because of the amount of data we’re just casually throwing off in our day-to-day lives now. Every time you use the internet (and remember, “using the internet” now includes things like buying something with a card, or with a loyalty program), go by a security camera, or more, you leave a footprint that contributes to a shockingly holistic image of your behavior. We have techniques these days to turn that image into a predictive model, and guess with good accuracy whether you are someone who can be swayed.

But this is something we can combat. Education is always the first and best bulwark against propaganda. Critical thinking is like a memetic immune system, allow you to expose yourself to ideas without uncritically absorbing them, and being colonized by them.

That’s all well and good, but what’s scary about Cambridge Analytica, and its ilk, is that they can target the weakest. It’s a basic principle of security that you are only as secure as your weakest point. You can lock the doors as much as you want, but at a certain point, an intruder will come in through the windows.

So what do we do?

I don’t really know, but I know that whatever we do has to have two dimensions: in the social space, there’s educating the public, to bring up the most vulnerable; and in the technical space, there’s starving the propagandists of data. Helping more people, and especially the most vulnerable, be digital ghosts is a vital task.

(And at least CV Dazzle will give us all a great cyberpunk aesthetic for this brave new world we’re entering into. John Waters can rest easy.)

Great American Institutions

January 5th, 2017 by Kit

This country likes to talk at length about how much it values democracy, as a core concept. For a long time, I’ve said that this strikes me as strange, when two out of three of our major cultural institutions are (mostly) based around (substantial) autocracy.

That is, while we pursue democratic government, we maintain autocratic military (in service to a democratic government at least, which, I think, makes sense) and autocratic businesses (which we know we have alternatives to, but rarely pursue).

This is why I have always been opposed to the rhetoric of “running the country more like a business”. To me, that sounds like “run the country autocratically”.

The End of the Third Age

December 18th, 2016 by Kit

I’m going to talk about the Lord of the Rings. Or maybe America, at this juncture in time. Tolkien, famously, hated allegory and rejected allegorical interpretations of his work. And yet, time and time again, people have found an allegorical reading of his Lord of the Rings inevitable and tempting. There are plenty of reads mapping the various stocks (hobbits, elves, dwarves, orcs, men, and more) to various nationalities or ethnicities. But I want to talk about an angle Max Gladstone mentioned recently.

Gladstone suggests that the One Ring can be read as representing the ideological and practical foundations of a militarized fascist state. The meeting point of Walter Benjamin’s aestheticization of politics with the military-industrial complex. I think this is an important read, but not just for what it says about the One Ring. If the One Ring is fascist ideology, what, then, does that mean for the rest of the pieces of the Lord of the Rings?

At the time of the Lord of the Rings, Middle-Earth is at an inflection point. The age of the elves is drawing to a close, and the lands of the elves are proving increasingly untenable. Three holdouts of peace, beauty, and wisdom remain: Rivendell, under the rule of Elrond, Lothlórien, under the rule of Galadriel, and Lindon, under the rule of Círdan. Each of these rulers had one of the Three, three great rings of power that enabled them to hold their realms together despite the changing of the world. But these rings, as all of the other rings of power, were subordinate to the One Ring. They derived their power, ultimately, from the One Ring, and could not survive its destruction.

Where does that leave us? The realms of elves, these havens of beauty and justice, were built on a foundation that was intimately entangled with the roots of what we will read as fascism. With the one, came the other. And, in pursuit of true justice and peace, the elves knew that their realms must cease to be.

I live in Boulder, Colorado. It is growing quickly and particularly attracting those with advanced degrees and technical knowledge. Its history as a hippie enclave and the general political preferences of the well-educated mean that this is a very left-leaning town: including the more conservative suburbs, registered voters are 41% Democratic and 20% Republican. In the aftermath of the election, many people here have been looking around and wondering what the rest of the country is like. We knew we lived in a bubble, but we didn’t think it was that bad. We are, perhaps, in our own Lothlórien. To dismantle the power of the One Ring, we must sacrifice our Lothlórien. In this case, that will require actively pursuing political, economic, and racial diversity that we lack here. In other cases, it will require other sorts of changes.

Ta-Nehisi Coates talks, in his book Between the World and Me, about what he calls “the dream”. I think that I refer to, in some degree, the same thing he does. The Dream is about something more than comfort, it’s about what we call making it, not just living a life that by the standards of most of human history is unimaginably safe, comfortable, and healthy, but doing better than those around you. No one would frame it that way, either explicitly or to themselves, but that is part of the power of the One Ring that we build our havens on: the off-loading of risk, pain, and bodily harm onto other people, in other places.1 Put another way is Gibson’s famous saying: “The future is already here—it’s just not very evenly distributed.”

In the Lord of the Rings, the connection between destroying the One Ring and the loss of the elves’ power to sustain their realms is mystical, powered by magic and allowing action at a distance. In our material world, I think it is quite the opposite: I think that the work of destroying fascism intrinsically requires us to set aside our Lothlóriens, to recognize that however peaceful and plentiful they may seem, that peace is built on the bodies of others and on the same golden-age lies that breed fascism, white supremacy, and death. We must understand that a simple passive desire for harmony perpetuates segregation, and that we must therefore work proactively, struggle proactively, to make our communities more accessible and just and integrated. (What about those (white) liberals living in the most diverse cities in the USA? Yes, even your cities have this work to do. Segregation writ small is everywhere, and economic opportunities are very unevenly spread.) And this will not leave our world as it has been, and while there will be costs in comfort and familiarity, this is good, because this age has been, as all ages are, built on injustice.


  1. More generally, this is something capitalism excels at: accounting fraud. I don’t mean that in a legal sense, but rather in a holistic one. Everything we do in this world has costs, and the more we can put those costs on someone else’s books, the more we can lower our personal tally. There is no way out of this but pursuit of an ethos of holistic accounting, where nothing is dismissed as an “externality”, but rather accounted for. 

South Pacific

December 8th, 2016 by Kit

I grew up listening to a lot of Rodgers and Hammerstein; it was some of my mother’s favorite music, and so there was a lot of it in the house. More than any other musical of theirs, I listened to South Pacific.

Now, there are problems, of course, with that show. It’s a product of its time, and the original cast recording captures in amber some choices we might not make today. But for all that, the writing of the show, the message of it, is pointedly anti-racist. The two main plotlines each deal with different facets of specifically white, American racism, and different answers to it.

I’m listening to it again now, for a whole confluence of reasons, and really appreciating the message of it. Talking with Allie about it, she asked an interesting question: how were the negative responses to the anti-racism of it framed at the time? Where now people might likely say things like “PC gone too far!”, what did people say at the time to try to frame themselves as the “good guys” while opposing a message of anti-racism?

I ended up doing a little reading and research on this. It seems that the two pillars American white supremacy relied on at that time for its public defense were “decency” and “anti-communism”. When South Pacific was on tour, the Georgia legislature apparently introduced a bill outlawing entertainment containing “an underlying philosophy inspired by Moscow.”

How did people at the time undermine that? I don’t know. But I do know that Rodgers and Hammerstein stuck to their guns. They would not change one bit of the show to play better in the South. They turned out to be right not just morally, but artistically and economically: it ended up being one of their longest-running shows and eventually one of the canon of classic musicals, and “You’ve Got to be Carefully Taught” (the most explicitly anti-racist number) is one of the most remembered songs from the show.

There are many fronts we are fighting on today. We’re not just fighting racism and a renewed Jim Crow, but the rise of an authoritarian kleptocracy. But on the cultural battlefront, we can and must make our art unapologetic, as good as we can, and, well, convincing.

Craft and writing prose

March 28th, 2016 by Kit

Prose is important; even if you’re writing for no one else, you’re writing for yourself in the future. The best developers I know write a lot of prose, both documentation and commit messages and comments. The value is not immediately visible, it won’t make your tests pass, but it actually is part of keeping technical debt low; some tech debt comes from not knowing in detail what a piece of code does. Good docs and comments and commit messages let you know at least what it’s supposed to do.

So, prose is a part of the craft of software development, but not just any prose: particularly technical prose, explanatory, lucid prose. And it’s not something we, as developers, are usually taught.

We’re, generally speaking, a group that’s pretty good at self-education, though. We pick up new languages, frameworks, protocols, and principles. So not only must we do this, but we can do this. It’s hard, because it’s big and fuzzy (there are no tests that can tell you if your prose is correct), but still, we can do it.

This post is just an exhortation, not a guide, though. The subject is too large to cover with a simple trick or a general principle. So, how do you begin to write better? First, write more and read more. Second, get your stuff edited.

Thanks to Ryan and Owen.

Programmers aren’t special

March 21st, 2016 by Kit

Listen to craftspeople of all sorts. Learn from outside the bubble. We are not magical. What we do is not magical. It has some cool properties, so do other things. Learn.

(Yes, this means learn about how writers write. Yes, this means learn about how carpenters carpent. How psychologists psychologize. How baristas bar. How sailors sail. All of it.)

Embellish later

March 14th, 2016 by Kit

So, @wholemilk said something I liked:

Yeah. But sometimes that’s hard. Why?

I am a big believer in the value of considering the emotional landscape of any labor, but in my day to day, that means mostly programming.

When you have something that’s working but still incomplete, it can be a big emotional effort to break it so you can start to move it towards the next stable point, the next point at which it’s working(-but-incomplete).

It’s like editing a document: partway through applying edits, you have broken sentences lying around, half-formed ideas not fully explicated, and the thing’s a mess. Sometimes that even shows through, if you fail to clean up after a change to the first half of a sentence leaves the last half incoherent.

It is similar with code.

Fundamentally, this is why source control matters. It is a tool to help with the emotional labor of breaking your work. If you know you can always go back to a stable point, swinging out into the void for a bit becomes exploratory, not all-or-nothing.

Teamwork and Crosswords

March 7th, 2016 by Kit

Allie and I have been doing a lot of crosswords lately. While half the fun is yelling at Will Shortz when a clue is weak, the other half is in working together to solve a problem. And in the process, I’ve noticed something I find interesting. Teamwork can be about unlocking each others’ potential.

In this particular case, we had just done a Thursday crossword in record time, and I congratulated Allie on a job well done together. She countered that I had done three-quarters of the puzzle, and that she didn’t feel like she’d contributed her fair share. I however, felt that she had been crucial, and I realized it was because if she hadn’t been there doing this crossword with me, I would have been stuck at one-fifth and never completed it.

It was a very clear illustration to me of how teamwork, particularly in a complex creative task, is not about everyone doing the same amount of a generic and commoditized work, but rather about doing the right thing at the right time to help the team as a whole achieve more than the individuals would.

I’ve also been reading some pieces lately about Google’s Project Aristotle. It seems to come to a similar lesson, but in more concrete terms: a group’s effectiveness and intelligence is determined by the degree to which the members of the group can all contribute.

I think it’s worth remembering that effort and labor don’t just fill up a meter, and ding when it’s done. The complex web of human relations can make it hard to attribute success to any one piece of the system.

Code Folding

December 7th, 2015 by Kit

Nick made a comment about code folding, and I promised him an essay. Here it is. It’s not very long.

I like code folding. When I know a mature project well, and the modules are kinda big, I want to open a file and not be distracted by seeing things I’m not working on.

I dislike code folding. When I don’t know a project well, I want to be able to see everything without having to drill down into it. When I do know it well, I want the modules to be small enough that there’s just one topic in each file, and so opening a file does the thing that opening a code fold is supposed to do.

So, the second case is ideal, but also idealistic—and we don’t live in an ideal world. Sometimes there are other pressures against breaking a project into a billionty well-named modules, too, and you have to live with the fact that a given module might have some variety of content.

Code folding, like window focus, should ideally follow my unknown innermost desires—the computer should always know just what I want without my having to tell it. Alas.

The Historiography of Git, or How I learned to stop caring and love writing history

November 30th, 2015 by Kit

This post was occasioned by hearing about the experience of pairing with Nvie, and then talking with Owen about how he does similar things.

Git is notorious for allowing you to rewrite history, which rubs some people the wrong way, but which I and some others think is actually pretty neat and useful, if you don’t abuse it. From what I hear, when Nvie is busy coding, his commit messages are just about “foo” or “wip” or whatever, and it’s only after he reaches a good stopping point that he goes back, rewrites history to say something meaningful, and commits. As Owen said to me when we were talking about this, he does something similar, but has had a hard time explaining what utility he gets from it to others. So I promised I would try to explain it.

I don’t think the utility of this became clear to me until I started working on Hexes (which is dormant until I figure out a good way to write a testing framework for it—ideas welcome!). Every time I would take it out to work on it, I would bring it to a stable point, then commit. When I wanted to work on a new feature, I would necessarily break things that were working, for a while, and having good version control practices let me move forward with confidence, knowing I could roll back if I had to. (At some level, obviously, this is the or a purpose of version control, but the realization hit me deeply on that project.)

But the next step was to be able to roll back not to just the last stable version before I started work on this feature, but to the quasi-stable points between the last and the next fully stable points, where I had expressed an idea but not worked out all the kinks in it. And so, clearly, that’s what other commits are for. So why not make them “real” commits?

Because real commits take too much time and energy. They pull you out of the thought process you are not yet done with and demand you shift from “writer” mode to “editor” mode. You just need a quick hand-hold to let yourself move forward, not a full belay anchor. (NB: I do not rock climb and have no idea what I’m talking about there.) You should be keeping your attention on the code and the architecture, and not the individual anchor points. On the flow.

But why do you then go back through and clean up your commits? Isn’t that a lot of work? Yes! But it also has a lot of value. It’s a communication tool, and even if you’re on a team of one, you will eventually be communicating with yourself in the future. If you don’t ever review your git history, and don’t think you ever will, well, I hope you’re wrong. And if you’re not on a team of one, know that anyone who looks at your PRs will probably step through each commit and try to see what you intended to do there. Leaving your commit history as a series of WIPs is like a craftsperson who keeps their bench an utter mess—it shows that you haven’t yet learned how to work on a team, and that you probably don’t understand the cost you incur yourself that way because you’ve become accustomed to it.

This is actually writing history, not rewriting it. History is not a series of events, but the interpretation you impose on it after the fact. Imagine what a disaster it would be if “history” books were just enormous piles of primary sources with no analysis, synthesis, cross-referencing, or organization. To put it another way, when you rewrite your commit history, you are doing the job of a historian, making sense of and imposing structure on the events that happened in a given period.

Of course, before you do any of this, get real comfortable with git. Worrying about losing work is not worth the value this gives, but if you’re worrying about losing work with git, you are, and I say this with love, still using it at a novice level. You should never have a tool as central to your work as a version control tool make you worry about loss. Understand it more, that’s your next task.

Maybe this’ll at least make you pause and think for a moment about the value this approach can offer. I’m not at all sure it’s convincing, but I tried.

Thanks to Ben Warren and Owen Jacobson for input on this post, and Jonathan Chu for the initial inspiration. Ben says, of arguments about git:

I don’t understand most people when it comes to git. It is a time-travel system, the end. Quibbling over the rightness of time travel when you are using a time machine seems like missing the point.