Interactive fiction jam

We’re doing what?

While I was researching a post I’m working on (you’ll see it soon, I’m really proud of it), I took a bit of time to look into interactive fiction. This led me to a Stack Overflow question with a lot of good answers about IF tools/systems, and I realized once again how cool Inform 7 is. I’ve also been listening to episodes of a Destructoid podcast called “Sup, Holmes?” (itunes, feed with mp3s), and in a number of episodes (episodes 15-18) he has interviewed people from the Toronto indie game community. They all spoke of things they had worked on at various game jams in Toronto, and I thought that sounded pretty cool. A game jam is just a bunch of people gathering (often physically, but sometimes digitally) and working on a game for a set period of time. At the end, you have a thing that probably sucks but gosh darn it you made it and you’re going to be proud of it!

Light bulb: why not combine the two?

So here’s what I’m proposing:

  • Date: Monday (Labour Day)
  • Time/length: From 12 pm until 4 pm, Eastern Standard Time - we all have other things to do, and we don’t all get up early. Note that I originally had allocated a lot more time for this; but I didn’t want to exclude people who have, you know, adult responsibilities. Next time we’ll do five hours. Perhaps it will be a two-part event, e.g. we all work on the same story next time.
  • Who’s invited? I’ll get a few interested folks from Ottawa in my living room, but distant participants are welcome - I’ll set up some kind of video chat through Google Hangout/Skype/TinyChat/something so we can taunt each other and discuss stuff
  • What do you make? The day of, I’ll announce the theme we’re going to write on by pulling one of several candidates from a hat - I’m open to suggestions on what our criteria are for a “finished” story, as I don’t necessarily want one person to write 10,000 words and someone else to write 300
  • Then what? Then everyone works on their story all day, in whatever way they see fit!
  • What happens when I’m done? We’ll use Inform 7’s export thing to put what we’ve made online!

This is meant to be difficult, because to the best of my knowledge I don’t know anyone who writes interactive fiction. The random theme aspect is designed to make it that much more challenging. What you produce doesn’t have to be awesome; it will probably be more fun to create than to play. At any rate, it’s just meant to be a fun event for us to hang out and do something interesting. I literally have no experience with this, and haven’t written creatively in a while, so I expect this to be really difficult. But you’re up for it, because you’re awesome!

Resources

I’m going to be continually adding resources that seem useful here, if you want to do a bit of research. Just try not to show us all up by reading everything like some kind of genius, alright?

For a practical introduction to Inform 7, check out this screencast by Aaron Reed. I’d forgotten about this video, actually; this was the first thing I ever saw about Inform 7 and it’s really quite impressive. He paints the system in a more prose-based light than some of the other more programming focused resources below. So at a bare minimum, give that a watch and then grab things below that seem useful.

One programming-language-y thing that I expect to be quite useful is rulebooks. I expect he’s right that using rulebooks as much as possible is a good idea, so do give that post a look and consider making use of them. Thinking about it a little, rulebooks are kind of like quirky interfaces - you have some behaviour that you want a bunch of things to share, so you put it in a single place and have them “consult” with the rulebook on what to do. Depending on the approach you take, this will either be incredibly useful or utterly irrelevant.

For in-depth tutorials on Inform 7, there’s a section on their site. The Recipe Book seems particularly useful.

For those of us with the background, Inform 7 for Programmers is long but informative. I actually find it to terse to a fault in some ways; it’s not very good as reference material to flip through.

If you’d like to see some source code as an example, check out the bottom half of this page which implements Cloak of Darkness, which seems to be an IF “hello, world” sort of story.

One of the StackOverflow answers recommended the section on design from the old Inform Designers Manual, Fourth Edition (DM4). So I’ve extracted that into its own PDF, which I’ve uploaded here.

Inform has an extensive library of extensions (shut up I am normally better at writing than that), which you can check out here - once you’ve got an idea of what you’re going to do, you might want to look around in there.

If you’d like to write a fight-y sort of game, you can check out an extension for Inform called ATTACK.

He also has a series of posts about designing a text-based dungeon crawler in Inform 7, if that’s your jam: pt 1, pt 2, pt 3, pt 4

If you run into anything interesting that I haven’t directly linked to, please do send it around to the rest of us. We’ll probably all be doing wildly different things, but you might inspire someone to change direction with whatever wonderful extension/blog post/whatever you’ve found.

vael:
“thegreatcrate:
“ elneno14:
“ huffpostcomedy:
“ popculturebrain:
“ DC Pierson schools a lazy student.
”
Perfect.
”
This is amazing
”
I greatly enjoyed reading this.
”
Yes and no. I like his message, even though he panders to the teenager a bit...
ZoomInfo
vael:
“thegreatcrate:
“ elneno14:
“ huffpostcomedy:
“ popculturebrain:
“ DC Pierson schools a lazy student.
”
Perfect.
”
This is amazing
”
I greatly enjoyed reading this.
”
Yes and no. I like his message, even though he panders to the teenager a bit...
ZoomInfo

vael:

thegreatcrate:

elneno14:

huffpostcomedy:

popculturebrain:

DC Pierson schools a lazy student.

Perfect.

This is amazing

I greatly enjoyed reading this.

Yes and no. I like his message, even though he panders to the teenager a bit much. What I’m contesting, though, is the “just because I wrote it doesn’t make it more valid”.

I have a great interest in the meanings of songs. I want to know what the creator thought when the lyrics were written: where did they draw inspiration from, what does that song mean to them?

I go to songmeanings.net and get various responses to the lyrics: “opinions”? As always, better word: interpretation. I’ll get interpretations and sometimes someone will link to an interview where the band member said what it’s about, even loosely.

Could other interpretations possibly be wrong? Of course. What’s right is what the author intended. You could say Winnie The Pooh is a metaphor for being high on acid, and that can be your interpretation, but that doesn’t give you any special license. We all interpret our world subjectively, and to us it can be “right” and have that meaning, but that doesn’t mean it’s objectively wrong about what the author intended.

In this case, if the author himself really doesn’t know whether it was real or not, kudos to him. That’s neat. However, I think many creators will try to add meaning to their work by creating content that’s so ambiguous it could mean anything. I do not consider that skill.

Unless an author is going out of their way to have an ambiguous ending that not even they could know, then there is a proper interpretation: the author’s intention. You can be wrong. For that, this image is admirable in its feel but falls on its sword in practice.

According to intelligent people on a podcast I listened to the other day, modern criticism focuses heavily (perhaps too heavily) on the idea of the Death of the Author. Get with the times, old man! We’ve been ignoring the author’s intentions since 1967! For a version of the same involving less French people, see also New Criticism.

That’s not to say that this school of thought on authorial intent is correct, but it’s fairly prevalent at this point. Worth understanding that’s where he’s coming from, and that it’s the sort of thing universities are teaching these days.

also in all fairness I didn’t really know anything that’s in this post up until two days ago, I just wikipedia’d “death of the author” and now I sound smart

Light Table - an IDE that goes beyond text4

I’ve been watching Chris Granger’s Light Table project for a few months now (apparently, since April) and the more I think about it, the more I like it. According to their Kickstarter, the rough estimate for release is May 2013. When it comes out, it’s supposed to support Clojure (a Lisp dialect that initially ran on the JVM but has a variety of ports), JavaScript, and Python - all dynamic languages with powerful tools for instantly providing feedback. The link in the title of this post will get you to the version 0.1 demo, which currently only supports Clojure.

        Even though I like Emacs and have no trouble using a command line tool like Leiningen (aka lein), I see a lot of things to like about Light Table. I like the fact that lein is now built-in, and you can get started with a project right away. The Instarepl is fun to play around with, and it’s something that would be difficult for a purely text based editing environment. With the addition of the Table in the latest version is, things have gotten a lot more interesting. What they’ve done is emphasize the structure of functional programming through the structure of the IDE - you work with a bunch of discrete, self-contained units and gradually combine them into a unified organism (to take some inspiration from the preface to Structure and Interpretation of Computer Programs).

        Working in a buffer of code, if you find that you need to re-arrange some units, it’s a lot of work. Light Table presents these units as being completely distinct from each other, making it easy to navigate between them and move them around. I assume the final product will make it easy to travel between the different views of your code - I’d love to shuttle a bit of code between the Table for editing and the Instarepl for testing, for example, but at the moment that doesn’t seem to be possible. The constant documentation lookup presented in the Kickstarter pitch+video is nice, as well, and I think it would prove to be more useful than having a hotkey to go looking for a bit of documentation.

        The moral of the story, though, is that these are the kind of things you put together when you look at the logical structure of code. Extending Light Table in JavaScript, as demoed by Chris, actually winds up leading to more impressive extensions than most of what you see for Emacs. Emacs has tons of awesome extensions like Org mode; but your power starts and ends with text processing. You can make nice tables in Org mode - I’ll happily concede that you could write a similar benchmarking mode that outputs an Org file. That’s pretty simple in plain text.

        What about displaying the contents of a database on the fly? It seems to me that Emacs isn’t so great at displaying constantly changing data like that (ie as you change the code in the associated buffer), but I could be wrong. But until someone completely revamps the rendering engine in Emacs (which could be a long time coming) you just can’t embed a webpage in Emacs. Full stop. No, viewing it in plain text with w3m doesn’t count. No, converting the webpage to a pdf and displaying that doesn’t count (yes, Emacs can do that). I mean honest-to-goodness embedding the webpage, such that you can interact with it and see it true to life, including its JavaScript and other stuff that probably stumps text-based browsers like w3m.

        This isn’t just an abstract problem - displaying text with heavy formatting is basically impossible in Emacs. I’ve been looking at using Emacs to write LaTeX for papers, and the workflow is pretty crappy. You write your LaTeX document, you compile it and output a pdf, then you display the pdf in Emacs or in a standard pdf viewing program (on Windows, SumatraPDF is a good choice because it won’t lock the pdf file while you’re viewing it). Compare that to Gliimpse - personally, I’d like a version with instant transitions, but that’s just me. With or without transitions, it’s the same idea. You write your markup, you take a second to see what it looks like, you switch back to the markup to make some changes. Tada!

        Contrast that with the current workflow - you write the markup, compile the new version, open the pdf, check out your changes, make some adjustments, recompile, re-open/refresh the pdf… A dual-pane environment for writing Markdown is actually available online, but I’m having a hard time finding anything similar for LaTeX. If Emacs had a rendering engine capable of displaying LaTeX documents accurately, it would provide leverage for a plethora of useful tools, stuff above and beyond the demos Chris put together.

        Until then, we have Light Table.

My Emacs config on Github4

If you don’t use Emacs, you can safely skip this post. If you’re curious, checking out my files is probably a bad place to start; I’ll make a post sometime about all the “starter kits” I’ve discovered and pilfered ideas from.

I don’t know if I have anything super awesome in my configuration (yet) that actual Emacs users would want to check out, but hey, here’s what I’ve got. You’ll notice there’s an insane amount of comments in there. By my last count, the file “old .emacs” contained 1207 lines. Without comments, it only had 239 lines of code. The main benefit is that it’s really, really easy to read through (for me, anyway). I can go a couple months without looking at the files and still understand why a certain snippet is there. I’ve linked to the source for a lot of things (80 character line limit be damned), too. I’ve got sort of a hierarchy going on with the number of semi-colons in a given comment line - five for the introduction of a section, three for the introduction of a paragraph explaining something, and one for each line thereafter.

Oh, and 80 semi-colons surrounding every conceptual section. They’re kind of hard to miss.

Something that may be new to you: I learned about electric-buffer-list yesterday, which I don’t think anyone ever uses, but it’s enough of a marginal improvement over the default buffer-list command that I mapped it to C-x C-b. And, hey, it supports the same buffer highlighting as the original buffer-menu (you only have to modify a single line). But of course, this being Emacs, you also have the option of BufferMenuPlus, if you like.

It’s not meticulously organized just yet… There’s mostly no rhyme or reason to the ordering of a given file. I’m planning a big revamp johnw’s use-package soon, and just generally getting things organized in a clear way. I haven’t actually used org-mode yet, but I’m starting to itch for hyperlinks within/between my files - I may very well take advantage of org-babel and base a new version off of it. I could even have a table of contents for a given file, which would be nice for other people who you don’t know what to search for.

Hyperlinks in a text file. Yay, Emacs!

Updating my tumblr theme

I recently added Disqus comments to my Tumblr, so that anyone can make quick comments on my posts without having to formally reblog the post. Or otherwise use Tumblr at all. This further illustrated the main problem with my tumblr: it totally sucks if you aren’t reading my posts through your dashboard. Well, the RSS feed might be good. But anyway, people visiting for the first time didn’t have a great experience. It didn’t look good, it was a pain to change things, and so on. I was always apologizing whenever I linked someone to it.

It was using a pretty lame default theme that was available when I first started this whole thing more than two years ago. When I was trying to add Disqus comments, had to futz around in the HTML in order to add the comments section, and even then, it looked weird. But the guide I had bookmarked on getting Disqus on tumblr, aside from highlighting some useful stuff like Akismet, also mentioned that “modern” themes have built-in support for Disqus.

In other words, it was time to move on.

I eventually settled on the theme Effector, which looks relatively nice and has support for a huge amount of stuff. It has a checkbox for infinite scrolling, which I had previously enabled with some JavaScript I found online. It has Disqus support, obviously. It has a nice little section where it links to various social networks. It has a floating bar thing for my title and search box and stuff. All in all, it’s a huge improvement. The one thing I don’t really like is the flat colouring used in music posts, but I think what I have now is kind of ok.

Stuff I changed:

  • I added some custom CSS, which Effector has a box for, to center headers in my posts (example)
  • Only had to edit the HTML once, to put back the awesome search box from Swiftype - it even scrolls down the page correctly! I can also see the searches people make in real-time, so I know that literally no one has used my search box except for me. But it’s really, really good at finding things - whereas the default tumblr search box is literally useless.
  • Added the silly little floating Black Coat Network icon in the bottom left that currently does nothing, as a sign of support for a good friend
  • I put my Tumblr tag cloud back and found out that it can be ordered by frequency instead of recency. I decided to limit it to my 10 most popular tags, as well, because it took up a lot of space when I had it pasted into my description box. Instead, I made a page that shows the full tag cloud in case anyone wants to see.
  • I lied about only editing the HTML once - I realized having the tag cloud in my description was dumb, and so I found out how separators were done in my theme and made one to create a section titled “popular tags” . It looks nice, I think!

I’ve got a few things I’d still like to take care of, though:

  • Adding some new icons to link to my GoodReads profile, my AnimePlanet profile, and my Pocket archive (aka Read It Later aka the name I prefer to use because it’s more recognizable) - this would make my contact page obselete
  • I might like to move the “control buttons” for each post to the top, instead of the bottom - these are the buttons for getting a direct link to a post, liking a post, etc.
  • Adding syntax highlighting for any code snippets I care to post, because why not? I’ve got an old Xah Lee post hanging around for hard-coding it into the HTML, but I’m also checking out highlight.js and sunlight.js. Highlight support more languages, and seems to support them better, as well as having more theme options (I’ve become partial to Monokai). Meanwhile, Sunlight has line numbers (but it seems an older branch of Highlight has this too) and seems to have a pretty good architecture. Realistically, they’re probably both just as good. To implement, I think I just need to get the JavaScript file and upload it to tumblr and then just run the script by putting a < script > block in my description.

Anyway, there’s a bunch of stuff you can fiddle with if you haven’t visited the actual web page in a while. Or add to your own tumblr, if you like. Or any website, I assume, if that’s how you roll. Swiftype’s indexing and searching is really quite nice, and it’s free if you’re not sucking up their bandwidth. And automatic syntax highlighting is pretty rad if you’re going to post code snippets. So yeah, if you like the sounds of that, go check them out and I’ll be happy and stuff.

edit, five minutes later: I uploaded the required JavaScript file and the Monokai theme for highlight.js, but unfortunately it looks quite ugly. Turns out none of the themes with dark backgrounds look good on my current theme. So I’ve gone with the Arta theme because it kind of fits with the rest of my current colour scheme. You can see it all in action at this unlisted page, if you’re curious. It was pretty easy to install, actually, though I have no idea if it might have averse effects on page loading…

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”]

re: vael && obiwanjacobi

vael:

… Though I have reason to believe that, in fact, voting doesn’t even matter; but that’s nothing provable and a matter aside from this.

Apparently, not so, if the politician on a recent Extra Credits episode is to be believed. For those who’d rather not watch the video, he notes that a lot of ridings in the US elections are very, very close and that a concerted effort could easily change the results.

Regarding the selfish nature. You will find as much evidence for my belief as you will to the contrary. My belief is typical with “objectivists” that understand how selfish us sentient creatures are. It’s my belief that life itself thrives: that it is hard to eradicate life completely once it exists. I believe this relates back to our internal mindset to look out for ourselves, and just as pigs do, we can be very social about it. We are social. Societies are the only reason we’re having this conversation. We crave social attention, but it is to fill our own need. I don’t believe this is erasable from the gene of life, but I believe that as a society, we should be doing more to discourage biases and to employ logic and efficiency to as many aspects of our lives as we can. I’m not hoping for Vulcans, I’m hoping for enlightened individuals who can have conversations just like you and I are having now.

I realize that I’m not anything like an expert just because the topic has come up in a few of my classes (most notably in my cognitive psychology class… go figure), but your absolute certainty pains me. You’re showing your own bias towards believing in “the selfish gene.” I can’t say whether you’re right or wrong, but I don’t feel like you speak from the position of authority that your tone implies. I’m not saying you shouldn’t make strong statements - I’m saying you shouldn’t make them without compelling evidence. With only weak evidence, or in the face of a lot of contrary evidence, you should only make a weak claim.

Aside from that, I hope you can see the trouble with writing from a biased point of view and then claiming bias should be discouraged.

The reason utopianism changed from “the world” to “yourself” is because it was jejune - childishly naive, even arrogant - to believe that we could just simply “better the world”. Well, Hitler thought he was bettering the world. We could agree that picking up trash along the highways and volunteering at soup kitchens is a good thing, but there is no way I could be attempting to posit this “belief system” as a genuine belief system and claim some ways that would objectively be better for the world. It is a subjective matter, but in the newest revision of utopianism’s article, it’s noted that one should attempt to be a positive force in all that they do. Push the world forward. A utopian villain would not be utopian, and yet again, here I am trying to define what a villain would be. Am I a villain for believing that I should ignore the world and let the virus cure itself, that I should just strive to have this “utopia” of ignorance and feel I did a good thing? I don’t know.

I’m of the opinion that being a “better person” implies making things around you better on some small scale. At a bare minimum, improving the lives of the people closest to you. When you can, do the same for random strangers (or at least don’t be a miserable jerk, even if there are no consequences). There’s much more you can do, but at least you can do that. But I suppose “improving yourself” doesn’t always mean “being a better person.” I think it’s important to do both, though. That’s my own interpretation, anyway.