Ebook of my blog archive

I love Pocket, especially now that it can read articles out loud. However, it doesn’t do so well with code samples, which are like prose but can’t be reformatted. I still put programming articles away in Pocket, but I can never read them on my phone like prose articles. I figured that my Kindle Keyboard might handle them a bit better, so I started looking for ways to pull articles out of Pocket to make a nice little ebook out of them.

        Calibre’s old Read It Later recipe doesn’t seem to do anything except pull your most recent articles, so that doesn’t allow me to choose specific ones (it may or may not allow filtering by tag in the future). As it turns out, crofflr works quite well if I’m willing to tag articles I want to send (among supporting other services)… but I’m super lazy and I really like Pocket as a dumping ground rather than a structured thing I maintain.

        Somehow, eventually, I discovered Readlists which seems more or less perfect. I realize that it takes more effort than just tagging articles, but I kind of like that I can keep the list forever and share it with others. Maybe I’ll bundle up a bunch of Emacs Lisp articles, put them in a readlist, and then share it. If the articles were automatically pulled out, there’s less control over the theme of the resulting ebook - I could get an article about OOP, another about Emacs Lisp, and another about Haskell all after each other. Anyway, if you’ve ever wanted to make a plain-text ebook out of blog articles, Readlists is perfect for the job.

        Getting to the point, I’ve put all my posts tagged with “recap” into readlists. You can download them, if you like. Rediscover things I will in retrospect decide I shouldn’t have written! Follow my journey from the last year of high school to the present! Or just get inspired to give your own blog the same treatment. It works quite well, for something that’s free and takes just a few minutes.

        A note: I’m going to write a few more posts about 2012, and I’ll add them to the Readlist when I do. I figure, it’s about 2012 the year, not about things I wrote in 2012. Spoiler: 2012 was a pretty good year.

Norms of digital communication

I have this really, terrible habit of writing incredibly long e-mails. They’re as long, if not longer, than my blog posts. This is something I’ve done since junior high, and I’ve essentially never gotten the hang of writing short e-mails. I apologize for the length, I edit to remove junk, and they still wind up being huge. To the recipients of these e-mails over the years: I’m sorry! It just happens!

        I was trying to come up with an excuse, and I had a really brilliant thought: I write e-mails the same way I write letters. I sit down, I try to fill them with everything I wanted to say, and then I send them off with the intention of taking a bit of time before the next reply. It used to be that I didn’t have notifications for new e-mails, so it was something I only checked every once in a while - so it feels like I need to have all the information there in the original message. Even now that I have notifications, and I can get updates to an e-mail thread in Gmail without even refreshing the page, I still have a hard time thinking of e-mails as a fast form of communication.

        Instant messaging feels much more free, like a slowed down version of a face-to-face conversation. I speak in sentences rather than paragraphs. I like being able to take the time to figure out what I’m going to say; I’ve never felt comfortable saying “hang on, I need to stare into space for a few minutes while I decide how to answer your question so I don’t stick my foot in my mouth”. I… really don’t think people do that, even though an internet advice article said it was okay. At any rate, I do a lot of instant messaging and I’ve always loved having quick, easy contact with my friends while I’m doing other things on my computer. For a while, I guarantee I had more IM conversations than I spoke to people in person.

On Offline Messages and Photo Albums

        What I’m getting at is, there seem to be analogues between how I treat digital communication and more primitive things. The interesting bit is how much the ability to send offline messages changes the situation. I suppose they’re like the phone call, if IM is like a conversation face-to-face, because it doesn’t require both people to be in the same place (but they do require you to be around at the same time; I can’t think of a better analogy, if only because nobody checks their voice mail anymore) Calling someone on the phone to tell them something you just thought of seems so… primitive by comparison. They have to be available at the exact same time you are, and you’re potentially disrupting something because there’s no way to know what they’re doing at the moment. Offline messages can be sent whenever you want, and read whenever the recipient wants, and they don’t carry the long-form expectations I personally have of e-mail. If nothing else, I don’t need to think of a title for the message, which is always a challenge with e-mails.

        When Facebook chat was merely IM, I didn’t see the point of it - I rarely spend more than a few minutes at a time on Facebook, and I only visit a few times per day. I’d get ambushed by people I didn’t really talk to when I logged in, and it sucked because I got tired of being a jerk and saying every time “sorry, don’t have time to talk right now”. But now that they’ve merged the chat with messages, it’s actually become my primary method for IM. To the best of my knowledge, AIM and Xfire don’t support offline messages, and those are where I have most of my other conversations. When I have a link or something IM-worthy, I can send it over Facebook and the conversation tends to stay there rather than moving somewhere there’s less surveillance. Not to mention the people who don’t feel the need for dedicated IM now that they have Facebook messaging, which is a totally valid option, just like not everyone needs to use IRC.

        The one downside to offline messages on Facebook are that they’ve hidden away little artifacts that used to land on people’s walls. The other day, a friend of mine discovered Facebook’s “view friendship” feature - with the Timeline update, you can give your friendship a cover photo, provide a picture and a story for the first time you met, and it’s like the best photo album ever. There’s all these little pieces of conversations we were having that continued after the other person had logged out, full of references to games we’ve long forgotten about playing and jokes that are still pretty funny. But it’s all old stuff, from before Facebook messages existed as an alternative. And when I look at the page for my friendships with some other people, the amount of activity just doesn’t reflect how close we are. That’s perfectly fine right now, but it’s a missed opportunity for reminiscing in a few years.

Barely-qualifies-as-one Conclusion

        Anyway, I’m not sure there’s some grand thesis for me to argue for here. I just thought it was really illuminating to think about the influences of older forms of communication, and the expectations and norms that go with them, on more modern ones. It’s a relationship that goes both ways, too, though I’m mostly happy to discard phone calls, sending letters, and physical photo albums as entirely inferior to the alternatives. But I can say for sure that I’ve started to really appreciate actually spending time with people, in a way I’m not sure I would if I expected all interaction to be face-to-face. IM isn’t exclusive, though after a certain point it’s hard to manage a lot of high-volume conversations at once. But hanging out with someone is, and that means there’s nothing they’d rather do with that time than spend it with you, and I think that’s important.

Kayt Sukel on Love

Last Friday, the Cognitive Science department at Carleton hosted a talk by Kayt Sukel, a science writer with a recently published book about the neuroscience of love, sex and relationships. While I enjoyed the talks I attended by Paul Thagard and Zenon Pylyshyn, their main job is to do research, and so their talks were fairly functional. Kayt, on the other hand, writes for a more general audience - unsurprisingly, her talk was really entertaining. There was a lot of laughter, and only a little bit of blushing. But it was super interesting, too, and I wound up buying her book afterwards. Got it signed, too, and her dedication made me smile - “to love and other indoor sports”.

At any rate, before the talk I was looking around her site and read a handful of articles. My favourites:

With all that being said, below are the notes I took from her talk. If you’re interested, find a link to buy Kayt’s book from her site!

That Crazy Little Thing Called Love

If we’re going to study love scientifically, we’ll need an operational definition for what we’re actually looking for

  • Love has been written about for hundreds of years, and we can recognize it even in old plays and paintings - so it’s something that has persisted in humans for a while
  • At the 1995 Wenner-Grom Symposium, the topic was “Is there a neurobiological basis for love?” The goal was to gather the best and brightest and figure out an operational definition for love
  • Their definition: love starts with motherhood, then we leave our mothers and search for that same kind of bond elsewhere

Love on the brain

Bartels & Zeki (2000) was the first published study on the neurobiology of love

  • They found significant deactivation in the frontal cortex when participants were looking at loved ones, by comparison to when they were looking at images of physically similar people
  • The frontal cortex handles executive control and is responsible for a lot of our inhibition - so people are less inhibited when looking at loved ones?

Fisher, Aran & Brown (2005), in a similar study, found activation in three key areas that are related to attachment, lust, and sex drive

  • They proposed that these three areas, while distinct, had overlapping functionality - they worked both together and against eachother
  • In theory, this is what allows us to transition between different relationships with the same person - from platonic attachment to lust, from lust to love, and so on

The smell of love

But, for starters, we can mostly agree that love starts with attraction in some form or another

  • Now we need to define attraction - where does it come from? Most of the time, when you ask people what attracted them to their partner, it seems like they’re just guessing
  • As it turns out, the biological basis comes from our odour-print - this is largely determined by what’s called the MHC, a gene cluster that primarily influences the immune system
  • People with optimal immune system compatibility tend to be attracted to each other, even if they say the reason was something else
  • See the “dirty t-shirt studies’ - interestingly, immune system dissimilarity was a major factor in the choices women made, but so was similarity to their father
  • The authors explained their results by saying that the women needed to find a mate whose scent they could still recognize (hence similarity to their father), but was as dissimilar as possible while still being familiar

Is love a drug?

When people claim to be madly in love with a new partner, there are changes in:

  • Dopamine (involved in reward systems)
  • Oxytocin (related to pair bonding in monogamous prairie voles)
  • Vasopressin (related to monogamous behaviours - when you block it in the aforementioned voles, they stop being monogamous)
  • Serotonin (mood regulation)
  • Neurotrophins (chemicals that aid in growth of the brain, sort of like fertilizer)
  • Sex steroids (i.e. testosterone)

In particular, here’s how these chemicals were affected:

  • Serotonin went down, dopamine went up (serotonin sometimes acts as a brake for dopamine, so these two effects may be related)
  • Oxytocin went up, reflecting the formation of a bond
  • Neurotrophins and testosterone also went up
  • However, two years later, the couples who were still together and in love were studied again - these chemicals had all returned to their baseline levels
  • Perhaps these changes early in the relationship reflect a need to solidify the bond, and after the bond is formed, things start to settle down

Love may actually be the blueprint for drug addiction, as many similar chemicals are involved

  • This explains the change in focus, lack of attention to other things, and phsyiology of both phenomena
  • Perhaps drugs actually hijack the subsystems for love?

Evolution of love and monogamy

Since we see this weird response at the initial development of a romantic relationship, maybe it’s necessary for some evolutionary benefit

  • A few ideas: having one dedicated partner provides more reliability than looking for many mates over time - they’ll always be around to protect from predators, search for food, and so on
  • If love has these evolutionary fitness benefits, then we could suppose there’s a drive to find it

Actually, a lot of studies on love and attachment are done on prairie voles

  • As it turns out, they’re a pretty good model for humans, as the relevant brain areas are very similar
  • Strangely enough, only 2-3% of mammals are monogamous, so it’s hard to find a species to study
  • In prairie voles, if you block their oxytocin receptors, they stop being monogamous and go search for other mates - even ignoring lifelong partners
  • Closely related vole species that aren’t monogamous have less vasopressin receptors in the areas of the brain related to attachment - if you modify their genes so they have more vasopressin receptors, they show more monogamous behaviour
  • Menawhile, if you surgically remove vasopressin receptors from prairie voles, they become less monogamous as well

In humans, things are a bit harder to study, but there are interesting differences between men and women:

  • In men, having a certain variant of a gene that relates to vasopressin receptors correlates with more dissatisfaction in marriage
  • For women, a gene related to oxytocin receptors leads to the same correlation

Is monogamy "natural” in humans? This is probably the wrong question to ask

  • These kinds of genetic factors are just probabilistic, not deterministic - correlation with dissatisfaction in marriage doesn’t mean a gene will cause people to be unfaithful

Love and parenthood

Motherhood changes the volume of a few areas of the brain

  • This is easy to explain, since women have to be host to a growing parasite for nine months - physiological changes could easily lead to brain changes as well
  • Maternal love seems to overlap with romantic love in neuroimaging studies, and involve similar chemical changes

Dads actually have neural changes as well, with an increase in oxytocin

  • Why does this happen to men, who don’t become pregnant?
  • Oxytocin levels seem to correspond to the type of interaction parents are having with their children - for mothers, it relates to nurturing behaviours like cuddling their child, while for fathers it’s more physical, explatory play like gently tossing the child into the air
  • Perhaps it’s beneficial for the child to have these two different types of interactions from two different parents

Conclusion and questions

Some people have asked whether studying the neurobiology of love will ruin the mystery and excitiment of love

  • Samir Zeki disagrees: “Learning about DNA allowed us to replace the mystery of heredity with awe towards its mechanics”

Oxytocin was first discovered in relation to labour/child delivery

  • Delivering a child associates a lot of oxytocin with them - this is like a shotcut to attachment
  • However, with adopted children, this isn’t the only way to get the same attachment
  • This is similar to how sex is a shortcut to attachment and bond formation - plenty of people form romantic relationships in other ways

Do the chemical changes in parents stay over time, such as after children move out?

  • No real studies on this yet
  • Anecdotally, many parents find it hard when their children have all moved out

The chemicals involved in love are similar to those involved in long-term stress responses - perhaps they just signify important things in our lives

Psycho-social approaches have advanced understanding of a lot of things like heart problems in medical fields - perhaps they would help in the study of love, too

  • However, it’s very hard to get funding in the US for anything that is even remotely related to sex and love, much less to start investigating psychological and social factors

What about relationships that form solely online, where the influence of odour-prints would be removed?

  • Think of people who have met up in person, after dating online, only to find that there was no real connection
  • This makes it seem like online dating is good for making introductions to a lot of people relatively quickly, but it’s best to meet face-to-face early on in order to see if there’s real compatibility
  • What people say they want doesn’t always match what they actually want, which is a notorious problem for online dating sites

Perhaps, in the t-shirt studies, women have inherited preferences from their mother - which is why they go looking for someone similar to their father

  • Or maybe they are unconsciously looking for a mate who is equally good as their father was to their mother

I turned 20

…and forgot to tell the internet about it

              So yeah, I turned 20 more than two weeks ago. Wasn’t a huge spectacle, though an old friend from PEI happened to be visiting his aunt so we brought him along to dinner. We went to a new burger place near Dad’s, which was decent. I didn’t really want to throw a party or anything, but I still didn’t have time to sit down and write. I realize nobody was on the edge of their seats waiting for me to bore them with personal junk, but in case you were, that’s my excuse.

              I feel like I should write about what happened during my 19th year, if only for posterity. Trouble is, there hasn’t been a whole lot of spectacle in my life lately. If anything, I’ve achieved a stratospheric level of mellow-ness. Still, a quick scroll down my archive has brought up a few interesting things to talk about. On an unrelated note, this is my four hundredth post. Holy crap.

              Easy cop-out solution to recapping the last year: referencing previous recaps! The last five posts of my 2011 recap happened after my birthday, so that counts. I assume 2011 in review gives a good idea of what the 2011 part of being 19 was like. I distinctly remember being very morose on New Year’s Eve, though, so that played a part in the tone of the review post. Not the recap post, mind you. Sorry about that, it’s confusing in retrospect.


              Anyway, onto more substantial discussion. I wrote during winter break about some goals for 2012, but had a hard time coming up with anything significant. I said I’d like to be consistently happy, but lamented my choice of solitary hobbies. I also said (hang on, have to re-read the sentence five times…) that “I might be miserable because I don’t have any close friends in Ottawa”, or something along those lines. “Might also be good if I were to talk to people, or spend time with them”. Hilariously enough, I resolved all those things… without… really… meaning to. Now, this might be obvious to you, but hanging out with people who share your hobbies turns out to be a two birds, one stone sort of deal. Watching anime, playing games, and reading may be primarily silent activities I do on my own - but it’s just as nice to be alone together, i.e. doing so with someone else engaged in their own game/book. Having hobbies in common also netted me a friend who is close physically as well as emotionally, and it’s nice to have that again.

              I’m also getting pretty good at gathering a group of people and hosting a relatively low-key nerdfest event at home. This allows me to safely avoid individual invitations while still gradually getting to know people. Next step should probably be expanding on the set of people I can comfortably invite to hang out individually. Which isn’t to say that I prefer quantity over quality, but generally you deal with a quantity of quality larger than one. One person is significantly better than an empty set, but it just seems like I’d benefit if I wasn’t so damn scared to say “hey we should hang out and bond over *insert shared hobby*”.

              Related to that is my post about decreasing my misery quotient, which still seems like it’s going to be a valid strategy. But aside from that, I am much more consistently pleased with life than I used to be. As it turns out, computers and video games provide a lot less emotional support (active and passive) than real, live humans. Hooray for nice people!

              I posted near the end of the school year about some goals I had for 2012 and where I was at in life. That was pretty good, and I think it’s still pretty relevant to where I am now. Regarding my second goal, I’ve been reading (thus, learning) voraciously - I cleared out almost all of my list on Read It Later (now Pocket, but the new name doesn’t give you any idea of what the service is about). And then I filled it up again. At any rate, I’m starting to put stars on things I really like and delete things that were lame, so there should be a higher signal/noise ratio in my archive. As for books, you can see what I’ve read over on GoodReads, which I like more and more as time goes on. It’s funny when I recognize names of reviewers on programming books from StackOverflow and parts of the Emacs community. All in all, I think I’ve learned a lot of good stuff over the summer.

              Something I never wrote about was that my roommate is no longer staying with us. Or speaking to me, for that matter. It’s unfortunate, but life goes on. I wish her the best, truly. Don’t be concerned by how little I’m talking about this seemingly significant event; it’s not really fit for public consumption. I’m older (lol 20 isn’t old) and wiser and have a better idea of what I should/shouldn’t post publicly. This is one of the things I shouldn’t write about.

              There’s one small benefit of the above, though - I’ve got my own bedroom back at mom’s. Which is kind of nice, because living in the basement sucked in subtle ways. Meanwhile, I’m getting an awesome place in the basement at my dad’s. It’s still under construction, but I expect it will be nice to have when it’s done.


              Anyway, things are winding down for my work at HotSoft. My project didn’t yield a lot of fruit this summer, but we’re on hold for a week or two to await some information about some of the software we depend on. If the information doesn’t show up, we may plot a fairly different course from here. We’re having a picnic tomorrow and I’m bringing delicious cake. So that will be nice!

              Classes start a week from today, so between now and then I’ve got a couple hundred bucks to drop on textbooks and some time to spend on my own stuff. Not sure yet what I’ll focus on, but I’ve been getting Emacs set up for Python programming lately. Spent hours looking into it and I’m still not done, because there’s literally three solutions to every problem. Sigh.

              Oh, right, I ordered a new laptop! I’ll post more details when it arrives, which should be soon. It’ll be a good opportunity for me to sit down and get digitally organized. This post is mostly about life, though, so I’ll save the tech for another post.

Meaning through Game Mechanics

image courtesy of the Winter Voices site[image courtesy of the Winter Voices site]

A few years ago, I came across a game on Steam called Winter Voices. It was an episodic RPG for PC by a small French developer, but they only released Episodes 0-4 (with 5 and 6 unreleased) before going bankrupt late last year. Because the company dissolved, the game has been removed from Steam and most honest digital distribution platforms. I don’t know what the game’s sales were like, but it didn’t get very much press and most people couldn’t recommend the game wholeheartedly. The rough state of the game at launch and bittersweet press response probably hurt the game a lot. But for the people who played it, Winter Voices provided a unique experience that truly deserved more exposure than it received.

        The game stars a young woman whose father has just died. She has returned to the small northern village where she grew up in order to attend his funeral, with the implication that she had gone off to make the most of her life elsewhere. Winter Voices begins when she arrives - correction: when you arrive - at the village a few hours before the funeral. [correction: I e-mailed this post to the game’s author, and the heroine did *not* leave the village - that was a miscommunication with the people who made the game’s intro video] You choose a variety of stats relating to your character’s personality, like humour and memory, and set off to talk to people and wander around the village.

        Whenever you run into nostalgic or otherwise emotional situations, you enter grid-based battle arenas where you struggle against shadows representing grief, painful memories, and other psychological trauma. However, there’s no “combat” as such - you can’t defeat grief by brute force. All you can do is try to withstand it. Most battles have goals like “get to the other side of the map” or “survive for 5 turns”. It’s a great metaphor, and Winter Voices may be the only game to imbue these common battle mechanics with actual meaning.

        It gets even more interesting when you see the game’s skill tree. Here’s an image of your initial skill choices, courtesy of Rock, Paper, Shotgun:

image courtesy of Rock, Paper, Shotgun

        The skill in the very center is Repulsion, which lets you push enemies a very short distance away. Generally, they can move much farther than you can push them, so it’s a fairly ineffectual defense - but initially it’s all your character is capable of mustering. As you gain experience from dealing with your emotions and talking to others, you can gain new skills that are connected to the ones you’ve already learned (in the above image, the highlighted circles are skills that player is able to pick). To quote the description from RPS:

You start at the centre, and each direction represents a different way of dealing with grief. See the yellow-looking skills towards the bottom right? They relate to regressing into your own imagination. The orange skills above those are all to do with being sociable, and the power of friends. An example of a skill that lies between both of those areas is Imaginary Friend, which summons an ally that will hold enemies back.

        The skill tree is another beautiful metaphor, and I think it makes for an awesomely individual experience for each player. Instinctively, you might think that everyone will experience the same “story” when playing Winter Voices - the one the game’s writers came up with, focused a woman dealing with the death of her father. However, the important story in Winter Voices - what I think of as its “narrative” - is the one enabled by the gameplay mechanics. Everything that you do in a game contributes to its narrative, and most designers and writers ignore this at their peril. Almost every game in the strategy/RPG genre relies on generic player statistics like strength, agility, etc. and skills that focus on faster or more exciting ways to kill things. This makes it very difficult for them to have a narrative that doesn’t involve faster and more exciting ways of killing stuff, because that’s the main form of conflict resolution. Then the writers are forced to craft a story with a lot of combat opportunities, stifling a huge swath of meaningful stories and narratives.

image courtesy of the Winter Voices site[image courtesy of the Winter Voices site]

        Rather than following the combat-focused trend, Winter Voices makes a metaphorical narrative out of your choice of which skills and stats to invest in. Every player builds their own, personal narrative about who the main character is and how she learns to cope with (and hopefully overcome) her emotional anguish. It’s possible to play Winter Voices without thinking about the story behind your gameplay choices - your narrative - but I expect that few players would. It’s just more fun to construct a story to make sense of the choices the game has provided for you, and that’s what makes Winter Voices so amazing. The sheer size of the game’s skill tree (you can only see a fraction of it above) also contributes to this phenomenon, because there are a lot of valid ways to play the game. Since they’re all equally efficient, the player will probably wind up making some personal choice in how they decide to play. Metaphorically speaking, each potential set of choices represents a different coping strategy.

        This sort of narrative complexity, which is generated by a mechanical system, fits poorly in other mediums. There are twelve mechanically (what they do for you) and narratively (what they say about your character) distinct skills you can choose when you gain your first skill point, and the number of possible paths only expands from there. That level of choice enables a wide variety of narratives, and it would be difficult to provide all of them in a single traditional novel or film. Moreover, the systems in Winter Voices provide an environment in which to make interesting choices. The skill tree in particular provides a handful of meaningful choices, each time you level up, about how your character deals with her emotional problems.

        On the other hand, it also provides constraints that make each choice more meaningful. If you could have every skill in the game at once, your choice of skills doesn’t really matter in the long run to the narrative. If you could have ten arbitrary skills from the entire set, the choice would have less narrative meaning - there would be less logical progression in the way that your character solves her problems. The end result is that your character builds on basic, foundational skills to learn more advanced and more effective abilities, which have a logical grounding in what she chose to learn in the past. The choices and constraints in Winter Voices enable a wide variety of possible narratives, and that’s what makes it so fascinating. To me, that’s the essence of video games.

        Having played Winter Voices when it was on Steam, I think it provides a valuable experience. If you spend an hour or two playing Winter Voices, you’ll experience a powerful argument for video games being art. The sort of argument you just can’t convey by letting people look at (but not touch!) games in a museum. It’s not a game for everyone, but you can get the game’s prologue for a few dollars, and I guarantee it’s worth at least that much money and a few hours of your time.


        There’s roughly three reasons why I wrote this post: one, the game is set to be re-released soon with a plethora of improvements from when Rock, Paper, Shotgun played the game. Two, I was disappointed by the Smithsonian exhibit linked above and I wanted to provide a compelling argument for why games are art. And finally, Extra Credits just released a compelling two-part series about game mechanics as metaphors.

        Regarding the first point: Some members of the original development team reformed under a new name, bought the IP back from the French government, and are currently running a beta test of a huuuuuuuuuuugely improved version of the game through Steam. If you’d like to try it out after reading this post, you can send them an e-mail at betatest@innerseas.com with the subject “Winter Voices EP5 - Beta Test”, with at least your Steam user name in it (maybe with some info about your computer’s hardware and such, too).

        It sounds like they’re looking for people to test the game from start to finish right now because of a big engine update a few days ago, so they’d probably be happy to have your help. Otherwise, they’re hoping to have the game back on Steam in a couple of weeks. So even if you don’t get into the beta test, please do give the game a shot - with the improvements they’ve listed in the Steam forums, I expect I’ll be able to recommend the game without any reservations now.

[Thanks to Vael Victus, M-. and Sarah for reviewing and helping me edit. Also, if your viewing experience sucked, you’re probably using the Tumblr dashboard - blame their elimination of a lot of basic HTML stuff.]

The Lisp Curse and the Dark Age of Emacs4

Over the last few months, I’ve been learning a lot about a text editor called Emacs. I haven’t started using it full-time, yet, but I’ve already spent dozens of hours researching it. The reason that so much information even exists is that Emacs can be easily extended to do things far outside the domain of a simple “text editor”. This is done using a programming language called Emacs Lisp (one of many dialects of Lisp). The essay I’ve linked above, The Lisp Curse, proposes the following hypothesis: “Lisp is so powerful that problems which are technical issues in other programming languages are social issues in Lisp.” Since Emacs is written in a dialect of Lisp, naturally it seems like it would fall prey to this problem.

The Past

        I can’t really evaluate the essay as to how it treats Lisp historically. But what strikes me about it, as someone who (currently) isn’t fluent in Lisp, is how much it reflects what I’ve seen in Emacs. The EmacsWiki is nothing if not a historical archive of many years of Emacs development. If you go to the page for some high-level problem, like session management, you’ll usually have at least three competing solutions. The trouble is that many of these solutions haven’t been touched for years, and may even be broken in modern Emacs. A different solution (which may not be perfect) may have been added to the standard distribution in a recent version, making extra code unnecessary (electric-pairs comes to mind for auto-inserting pairs of characters like [] and ()). This has been the case for the history of Emacs pre-2011 or so - let’s call this the “Dark Age of Emacs”. It seems to me that projects from the Dark Age of Emacs suffer from The Lisp Curse. From the essay:

“Programs written by individual hackers tend to follow the scratch-an-itch model. These programs will solve the problem that the hacker, himself, is having without necessarily handling related parts of the problem which would make the program more useful to others. Furthermore, the program is sure to work on that lone hacker’s own setup, but may not be portable to other Scheme implementations or to the same Scheme implementation on other platforms. Documentation may be lacking. Being essentially a project done in the hacker’s copious free time, the program is liable to suffer should real-life responsibilities intrude on the hacker. As Olin Shivers noted, this means that these one-man-band projects tend to solve eighty-percent of the problem.”

        I ran into this problem pretty early into my Emacs career. Session management was one of the first things I wanted to figure out when I started with Emacs. My goal was to keep a small text file open on the side at all times, containing a list of shortcuts and tricks I should remember. Imagine my frustration when none of the solutions I tried actually worked! Or at least, none were simple to set up for a complete beginner. Right now I use revive.el, which functions for the most part, but I’m not entirely happy with it. I could probably get it working if I understood it better, but at the moment its particular 80% solution works for me.

        Code from the Dark Age of Emacs is kept in blog posts, hosted on EmacsWiki, stuck in some obscure directory on university domains, lost to the ether that is personal websites with expired hosting… Tracking down updated versions is nigh impossible, because they’re often created by new authors taking care of an abandoned project. Small projects get “forked” or maintained by someone new without the benefits of the trail of crumbs left by forking on GitHub. I once ran into a project that was three times removed from its original author, with every successive version being hosted on a different personal website. The only reason I found the “newest” version of the project was a few stray comments on a long EmacsWiki page, full of hacks and monkey-patching that stopped being relevant years ago. See the EmacsWiki page on smooth scrolling for an example of this - odds are that none of those fixes will work for you. I’m surprised even two comments on that page have version numbers to serve as a lame time stamp…

The Present

        It’s been a long time coming, but the Enlightenment of Emacs has begun in earnest, thanks to the power of the internet and proper tools. GitHub makes it incredibly easy for developers to collaborate on large projects, or for users to report bugs and have them fixed quickly. The Emacs Lisp Package Archive, and especially the inclusion of package.el in Emacs 24, have made installing and distributing extensions as easy as it should be. The MELPA repository combines the power of the two by supporting packages stored on GitHub, without requiring the author to upload their package to a special repository or give ownership their code to someone else. Unlike, say, downloading revive.el, trying a new package doesn’t mean downloading some files off of a Japanese server. While bad documentation mostly plagues code actually hosted on EmacsWiki, GitHub encourages everyone to have a bare minimum of non-technical documentation (do this to start using it, here are some things you might want to tweak). Collaboration on a single perfect solution is easier than ever before, and life is pretty good for both developers and users.

        Here’s a somewhat abstract problem, solved with flying colours by collaboration: when programming, you often want to select some chunk of code and do something with it. Usually, this is a “semantic” chunk - in prose, imagine selecting a word vs a sentence vs a paragraph. You can see a video of this in action here, and see for yourself how awesome this actually is. I can’t track them down any more, but I saw at least one “80%” solution to the same problem by Xah Lee, and another somewhere else. This is the Dark Age of Emacs at work - nobody knew what anyone else had developed.

        Magnar Sveen’s expand-region.el is, as far as I can tell, a nearly perfect implementation of selecting semantic units. Better yet, it’s not limited by his imagination. If you scroll down, you’ll see that there are at least eight other contributors to expand-region. If you scroll up, you’ll see there are many specialized X-mode-expansions.el files. If your language of choice isn’t supported, contribute! And now there’s a definitive solution to this problem.

The Future?

        I don’t know, first-hand, how things stand for Lisps other than Emacs Lisp. Or whether this is going to be true for new dialects of Lisp going forward, thanks to new tools. From reading people’s reactions to the essay on HackerNews (in two different threads!) and Reddit, it seems like the problem is real… depending on who you ask. The fact that it’s so easy to solve problems, everyone does it their own way had at least one piece of anecdotal evidence in its favour. Lots of people disagreed, obviously.

        Points in favour of thinking this may not be true going forward: a lot of people threw in a vote for Clojure, a newer Lisp dialect that runs on the JVM (which has definite overlap with the Emacs community). I’ve seen some pretty cool tools (lieningen, Light Table - no surprise that the two work together) and libraries (Noir for web development, Overtone for making music) for Clojure, and they’re all hosted on GitHub. Perhaps programmers finally have the social tools we need to avoid not invented here syndrome and the other composite parts of the Lisp Curse!

Symposium On Usable Privacy and Security 20124

It might sound kind of strange, but part of my job at Hotsoft is actually just to get used to academic culture. As part of my ongoing education about what being a graduate student will be like, I went to my first conference two weeks ago in Washington, DC. The conference was the eight annual Symposium On Usable Privacy and Security, and you can read the notes I took at the link I’ve posted! It’s a notebook I put together with Microsoft OneNote and have shared publicly through SkyDrive - in theory, it should look pretty nice. But if you prefer, I’ve put a .pdf version up on UniNotes.

        My thoughts on the conference itself: it was what they call “single track,” meaning there’s only ever one thing going on at a time. That was really nice, because it meant I didn’t have to plan what I wanted to attend in advance or run around like a crazy person trying to see everything interesting. I didn’t realize the conference would take pretty much the entire day, each day - I figured I’d have time to check and write e-mail, or do other productive things. Never really found the time, unfortunately. One of the lab’s PhD students told me that’s basically the norm at conferences, so that’s a lesson learned.

        One thing that surprised me is the diversity of interests that were brought together under the umbrella of “usable privacy and security.” There were people who are immersed in the world of location-sharing services or looking at ways to use location data. Others were focused on studying Android app stores. And if it weren’t for meeting up at conferences like SOUPS, they probably wouldn’t ever interact a whole lot. As someone who doesn’t have a vested research interest in the area right now, I was actually pretty out of the loop on some of these things - for example, I know nothing about location sharing/tracking. So when I was talking for a while with someone who works in that area, I was a bit at a loss on what to talk about. On the other hand, when I was discussing issues that affect me as an Android user, I had lots to talk about.

        I hope I made decent conversation, even when I was completely outclassed. I’ll have to work on getting people to talk about themselves more, so that I can just nod and smile. Practice asking clarification questions, so I can get up to speed without sounding like an idiot.

        On Friday, when the conference was done, a group of us went to see the Art of Video Games exhibit at the Smithsonian. It was pretty unimpressive, to be honest, because it was primarily a “look, don’t touch” exhibit. Which really defeats the entire purpose of video games. There wasn’t much historical information about the development of different games, so they didn’t have that to fall back on either. The games they picked generated good discussion among our group, but I don’t know if non-gamers would get a whole lot out of the exhibit.

        Overall thoughts on the trip: I got to know members of the lab when we went to dinner and chatted over drinks (water for me, because I can’t drink across the border yet). I met some new people, as well, from Carleton and from other universities. I learned what to expect from conferences, and got a bit of a feel for the HCI/privacy+security area. Altogether, I think it was a pretty valuable experience!

Tales from the RSI crypt

It’s kind of strange to think about it, but I’ve probably been at a PC nearly every day for the last 12 years. I’ve never chosen my own computer setup, though - I’ve always made the best of whatever furniture my parents picked up. That changed a few months ago when I dropped more than $300 - three hundred bucks plus tax and shipping - on a Kinesis Contoured keyboard. First, a few words on my ordering experience with ErgoCanada - if you’re in Canada and you want some crazy thing like a $300 keyboard or $100 vertical mouse, do yourself a favour and order from them.

        As a child of the internet age, I thought it was kind of… quaint… to have to confirm my order over the phone. When you’re used to Amazon, where you click three times and receive your item two days later, it seems sort of old fashioned. But that assumes you know exactly what you want to order, and you know better than anyone else what you want. This wasn’t one of those situations. I was thinking of paying extra for the Linear Force model of the Kinesis Contoured - a version that basically doesn’t have a “click” when you activate the key. When I spoke to the lovely folks at ErgoCanada, they spent a good half hour asking about how I work and what my needs were before recommending I go with the normal model instead. They were completely right, so I’m really quite happy with the service I received.

        Back to the question you’re all asking yourselves - why in the world did I do this? I swear it has nothing to do with tech lust (ok, mostly nothing, it’s a really cool keyboard). I actually did it because earlier this spring my years of extensive (and unhealthy) computer use finally caught up with me. There was no gradual build up of pain, I just crossed some threshold and suddenly everything hurt. The triggering event for my right hand seemed to be buying a new mouse - but my left hand started to hurt at the same time, which doesn’t make any real sense. For the first few weeks, if I used the mouse any longer than an hour, I wound up in serious pain. This sort of explains my extreme prejudice against the mouse. Either way, this got to the point where I had to stop typing my notes in class and give up on doing the last programming assignment for my C++ course before the deadline. The minor split in the Microsoft Natural Keyboard 4000 just wasn’t cutting it, and after reading more or less rave reviews for the Kinesis Contoured, I took the plunge.

        I don’t want to complain too much, but in all seriousness, this absolutely sucks. I spent a few weeks when I started work in May just using a regular mouse and keyboard, and it was terrible. With a regular default Dell mouse, I was still getting about an hour of painless mousing. Typing wasn’t so immediately painful, but after a few weeks I realized it was starting to hurt. To solve the mouse problem, I picked up a Logitech Wireless Trackpad, and it’s pretty comfortable to use. For both the mouse and the keyboard, I bring them with me to work every day (though if I work late during the week, I may not bother bringing the keyboard home). If you haven’t heard me complain about how it hurts for hours after I type on a bad keyboard, you may think that’s ridiculous. But I don’t know if I could survive doing anything else. It’s certainly not annoying enough to validate buying a new keyboard, anyway.

        I’ve mentioned Workrave before, and if you spend any significant amount of time at a computer, I highly recommend using it. It’s configurable to whatever frequency and length of break you prefer, and it’s smart enough not to prompt you to take a break when you haven’t been doing anything. It’s also portable, so you can run it off a flash drive at your work computer. I care about your health, dear reader, and there is absolutely nothing to be lost by using it. The reality is that it’s terribly unhealthy to use a computer for hours without taking a break. Yes, you have important things to do. So do I. But I still take a 25 second “microbreak” every two and a half minutes, and I use the time to take a drink of water or stretch. It definitely helps. The microbreak can be taken passively, though - if you spend 25 seconds thinking without typing (which you probably will), you won’t be prompted. Over the course of an hour, assuming I was typing constantly, it would only enforce about 8 minutes of thinking time.

        For my real break, I take ten minutes away from the computer every 30 minutes of working (this could take more than half an hour of real-world time). These breaks are longer, and more frequent, than what I started with - but I’ve found that I needed them. You can take five minutes out of every hour for your break, and not take microbreaks at all. Or do 15 seconds microbreak every ten minutes. Again, in all seriousness, do yourself a favour by ignoring your innate feeling of invincibility, and taking some breaks now and then. Three cheers for preventative care!

        Things still aren’t perfect, though. My random mishmash of furniture at my homes really doesn’t provide a perfectly ergonomic office space (chair’s too short, desk’s too short, chair arm rests are too wide, etc.). But the trouble is that desks and office chairs can’t travel from my mom’s to my dad’s every two weeks, so I need to buy two of everything. That’s a pretty strong disincentive. Plus, you know, I don’t really have the cash to get the perfect chair and desk. I’m thinking of starting with a good keyboard tray, because they’re <$200 and that would resolve my desk problem. Aside from that, I’m looking into physio (I got a recommendation from the family doctor) or a chiropractor (my mom and my brother already visit one, so I could just go with them). Should make a decision on that before the end of the month.

        I’ll come back with a further update when I’ve found the perfect setup. Until then, please do ask for more detail if you need to be disabused of the notion that you’re immune to all of this! ErgoCanada has a really nice page about creating a good work setup. If you’re not working towards this, and at the very least using something like Workrave, I will be quite happy to argue with you.

Photo by Marika Washchyshyn. Taken 10/19/2011. Cropped and badly compressed by yours truly.
One of the great things about the Cognitive Science department at Carleton is its size. It’s large enough that you don’t lose anything by majoring in...

Photo by Marika Washchyshyn. Taken 10/19/2011. Cropped  and badly compressed by yours truly.


        One of the great things about the Cognitive Science department at Carleton is its size. It’s large enough that you don’t lose anything by majoring in cognitive science and specializing in your area of interest, but small enough to host events for the entire department. When I was starting my first year in 2010, the department organized an event for professors to introduce their research to undergraduates (and I believe this is an annual event). Basically, professors sat at various tables (in person and via Skype) as groups of students went from table to table, getting the elevator pitch and asking questions. By the end of the day, I’d decided to contact Professor Masako Hirotani of the Language and Brain Lab, and set up a meeting with Professor Jim Davies of the Science of Imagination Lab.

        Initially it was all volunteering, because I didn’t have a whole lot to offer as a first year undergrad except enthusiasm. Getting involved with research so early paid off, though, when I received the I-CUREUS award to fund a part-time research position at the Language and Brain Lab (LBL) for the fall of my second year in 2011. I continued my work with the lab through the winter term, and now for the summer I’m applying the same skills in my work with Carleton’s Hotsoft lab.

        The moral of the story is this: investigate the research being done in your department, whatever it may be. Send an e-mail to one of the administrators and ask about what kind of work is being done. Gather your courage and send an e-mail to the people who are doing things you’d like to be a part of. Offer to work for free in your spare time, and you’ll find a lot of doors will open.

        You literally have nothing to lose by sending some e-mails, because there’s essentially two outcomes:

  1. the professor is happy to have your help in working on one of their million research ideas
  2. they forget about you five minutes after deleting your e-mail/sending a kind rejection, and go back to working on one of their million research ideas

        You don’t need to obsess over finding the perfect place to work. Just do something that sounds cool! You can start out by attending lab meetings, if there are any, to test the waters. You can move on if it turns out you don’t like it as much as you thought you would. Just get out there, get some experience, and connect with your professors and the faculty in your department.

——————————————————————–

I’ve learned a number of things from being part of the LBL so far, including:

  • how to create highly controlled research experiments using Neurobehavioral Systems’ Presentation software (initially just with their “Scenario Description Language,” now working with the more advanced “Presentation Control Language”)
  • the basics of EEG research within neurolinguistics
  • programming with Python for processing and organizing data
  • how to run experimental participants (mostly as an assistant, but being the lead experimenter is similar)

        I’m certainly not an expert in any of these things, but it’s all valuable experience for an undergrad to have. Pretty much any experience is valuable as an undergrad, truth be told. Also, working with Python is way more fun than doing assignments in Java/C/C++ ever was.

        Oh, and I also have the first two things to put on my CV, because I’m listed as the third author on an upcoming paper! We received the award for best paper at the Institute of Cognitive Science Spring Conference in April. Second, the paper was presented  at the annual meeting of the Canadian Society for Brain, Behaviour and Cognitive Science. though I wasn’t present for the conference. While I was thinking “journal article” when I said I wanted a publication in 2012, that was before I really understood that there are a lot of intermediate steps along the way. Technically, presenting a talk or a poster is also a “publication.” That’s not to say that I’m going to stop being involved, though! It’s hard to give time estimates, but I’d really like to get first authorship on something. So that’s the next (or is it current?) step - taking a lead role on a project of my own. Exciting stuff.

[those of you with particularly good memories may remember not one, but two minor remarks I made promising this post would come “soon”]

In which I socialize, go to PAX East, and host a pot luck

Hello, Internet. Long time no see. I’ve been doing things, lately, which is keeping me busy. With what? Well, shockingly, I’ve actually made new friends over the last two months. People I speak to outside of class/whatever location I met them, even! And, like, hang out with. I haven’t done that very often since moving to Ottawa. Mostly, these new friends are all cog sci majors, so we have lots of classes together. But we bonded over PAX East, and that’s the first topic of today’s long-overdue post!

——————————————————————–

        A while ago, Vael mentioned that he was going to PAX East with a friend. The timing worked out for me, so I decided to go. I was only able to find one person from Ottawa to come with me, though, and it wasn’t someone I knew very well (my fault). That problem resolved itself when a certain outgoing individual in CGSC 2002 piped up at the end of class to suggest a road trip to the Smithsonian in Washington, DC to see an exhibit they’re having about video games (still in the works). “While we’re on that topic, anyone want to go to PAX East?” said I. And lo, our merry band formed on the spot.

        So off we went around midnight on the last day of class for Carleton, April 5th. My dad and I taking turns driving, everyone else sleeping. Most of us arrived at PAX before noon on Friday - those of us who had bought our tickets in advance… It was good. We saw things. I literally had nothing I knew I wanted to see on the show floor. Though I did want to see if Cryptozoic had anything new on the Penny Arcade card game (which is great), and in fact, they did! They had a new expansion, and it is greater. Anyway, yeah, Friday was a day. That’s not to say I wasn’t excited; I don’t feel like boring you with the details anymore. This is a rare instance of restraint - enjoy it while it lasts!

        Saturday tickets were sold out by the time we got ours, so those of us who didn’t receive a free ticket from a random dude simply hung around Boston. In the evening, though, we went to a gathering for Extra Credits fans, plus James himself, and that was fun. I would have liked to socialize more, but anyway. Doesn’t help that I uh… gave my PSN ID to the few people I spoke to and told them it was my Steam ID. Oops! Those of us without tickets to the show hung out with some guy for a few hours after the event ended. An air traffic controller, he was. Forgot to provide contact info to him AT ALL.

        i am good at people ok why does no one ever believe me when I say this

        Sunday was the most interesting day for me, because that’s the day that Vael was going with Eve Victus! We played a bit of the Penny Arcade expansion, wandered the show floor, went to an OC ReMix panel, met a dude from Ottawa, lost a member of our party for a while, and went out to dinner together. All in all, it was nice to have a short break from work and I think we were all quite inspired by the things we saw and the people we spoke to.

——————————————————————–

        Personally, it was a lesson in how much more effective I am at making friends when I, uh, actually spend time with them. Strangely enough, I had no trouble at all being around everyone. We had plenty of things to talk about, and it’s easy to find things to do together - playing games (digital and analog) is an easy option, but we’ve all got some shared interests in film, anime, books, and so on. After the end of exams, I was even so bold as to invite everyone I knew in Ottawa over for a pot luck/games night. And it was good! And we barely played any games because we just ate dinner/chatted for hours. I’m thinking I’ll have another before the end of the summer, but I don’t want to burn everyone out on having to cook.

        In the mean time, I’m spending more time with various folks, and chatting over IM/text when I’m at home (and my hands don’t hurt too badly). Feels good, man. Feels like being back to normal, in fact. Like coming home after spending a while as a cave hermit. It’s funny, really, because it seems like every few months I go through some slight change and declare myself “happy” and feel like I’ve come closer to being the person that I want to be. An anonymous reader noticed this, and sent me a very kind e-mail a few months ago. They weren’t too sure I was as happy as I claimed to be, but they assured me that socializing would get easier as time went on. It was something of a self-fulfilling prophecy: I think this stranger’s kind words helped push me to talk a little bit more and worry a little bit less about what other people might think (because they probably don’t think the worst of me).

——————————————————————–

        Events like that are exactly why I have my e-mail address listed on my tumblr page. It’s part of why the internet is so awesome! People I’ve never met, who I don’t actually know are reading what I write, can reach out and share a bit of themselves if they like what I’ve shared of myself. It was a little bit strange when a friend of my father's told him what I’ve been writing about. But it’s kind of cool, too. This is me, and I’m happy that there are people who enjoy it.

        I guess what I’m getting at is, if you read this stuff, I would be happy to talk to you. And I will try to be normal and not monologue at you. I learned my lesson, I promise! Shoot me an e-mail, or better yet, IM me in a way that makes it easy to tell you’re not a spambot. If you go for an e-mail and I don’t answer, send it again, because it may have wound up in my spam folder and I don’t wade through that cesspool very often!