tag:blogger.com,1999:blog-186692152009-07-21T23:05:45.346-05:00Twisted RadixTales of a Programming HoboChristopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.comBlogger173125tag:blogger.com,1999:blog-18669215.post-63951680970677074892009-07-20T23:55:00.002-05:002009-07-21T00:02:37.142-05:00Launchpad is now open sourceI'm sure you've already heard this in a million places, but I'll add my blog to the din: <a href="http://blog.canonical.com/?p=192">Launchpad is now open source</a>. All of it. Including the <a href="https://dev.launchpad.net/Code">code hosting</a> stuff. And <a href="https://dev.launchpad.net/Soyuz">the part that builds Ubuntu</a>. Everything!<br /><br />I'm happy.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-6395168097067707489?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-16665309727839751912009-04-23T10:27:00.004-05:002009-04-23T10:33:32.366-05:00inform7.comSo, there's a new release of Inform 7, and a <a href="http://inform7.com/">new web site</a>.<br /><br />The entire web site has been redone, and I was responsible for the <a href="http://inform7.com/write/extensions/">new extensions section</a>. I won't say it's pretty (I'm working on it), and it still doesn't have quite all the features of the old site (the RSS feed should be available by this weekend), but there is an important new feature: you can now browse both the documentation and the source for all I7 extensions on-line. Here's <a href="http://inform7.com/extensions/Aaron%20Reed/Intelligent%20Hinting/index.html">Intelligent Hinting by Aaron Reed</a>, for example.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-1666530972783975191?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com1tag:blogger.com,1999:blog-18669215.post-62896443372792114382009-04-13T13:57:00.005-05:002009-04-13T15:07:29.621-05:00Judith<a href="http://distractionware.com/blog/?p=759">Judith is Terry Cavanagh's latest game</a>, and this time he collaborated with <a href="http://www.increpare.com/2009/04/judith/">Stephen Lavelle</a>.<br /><br />It's another one of his experimental story-telling games, which are my favorite. I played the game about ten minutes after it was released and about an hour after that I was writing up a long analysis of it.<br /><br />I was thinking of posting it here, on my blog, but instead I decided to put it on the <a href="http://www.intfiction.org/forum/viewtopic.php?f=37&t=676">intfiction.org Interactive Fiction forums</a>, because I'd rather have a conversation about the game than try to assert things about it in an exposition on my blog. Still, it's a rather wankery academic post, but my intentions are good.<br /><br />(By the way, intfiction.org is having some problems with spam lately; try to be careful and don't click on any dodgy-looking topics, since they may contain rather explicit porn spam).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-6289644337279211438?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com1tag:blogger.com,1999:blog-18669215.post-90151076255473668082009-03-30T14:20:00.011-05:002009-04-11T17:52:33.644-05:00Games with non-expository storiesAt the end of this blog post you'll find a list of games by three different developers. I think you should try them out.<br /><br /><em>Edit: Pathways does actually work on Wine if you set fullscreen=0 in the config.ini file.</em><br /><br />Vignettes? Well, that's how one of these developers describes his works. Some of them definitely aren't short (Don't Look Back took me about half an hour; Eversion took a few hours spread over a few days), but the stories they present all have in common a reflective simplicity. All of these games are more about story than gameplay: some of them have gameplay elements which try to give the player some direct, deeply effective control of the fiction (Daniel Benmergui's games), and others take tried-and-true gameplay mechanics and use them as a way to communicate story elements to the player (Don't Look Back and Eversion).<br /><br />The title of this post calls them "non-expository", and I'm not sure how accurate a phrase that is, but it's the first one that came to mind when trying to describe the way they present the story. Let's take a look:<br /><pre><blockquote> 1. The act of exposing or laying open; a setting out or<br />displaying to public view.<br />[1913 Webster]</blockquote></pre>It may be overly subtle or perhaps even punny, but I think it does make sense to refer to them as non-expository. The stories they present are not clear-cut and laid out. The author did not tell us what the story is: he showed us some scenes, depicted some characters, but didn't flesh out their details. They're much more introspective than that. When you get to the end (or one of the endings), you think to yourself: "okay, <em>maybe</em> I know what just happened. Whatever it was, it was cool."<br /><br />I can only say that I am really happy that indie game development is becoming so widespread and successful. Certainly most indie development these days is focused on improving the essential gameplay of video games, which is awesome, but I find the experiments with story much more fascinating.<br /><br />There's a more concrete property that most of these games share: there's no text or dialogue. Despite this, they instill in the player a strong sense of the narrative with subtle graphical, audial, and gameplay cues. Somewhat tangentially, there is something that I've become a bit obsessed with as I think more and more about story and games -- the way that we can communicate to the player by taking something which is commonly used as a utilitarian device of user interface (a score counter or a health meter, for example) and twisting it in some way to reinforce the impact of an event in the game's story. Eversion does this well. I'd like to write about this more, once I find a better list of examples.<br /><br />The one game in the list below which does have dialogue is Pathways, and its dialogue is very limited. Each character only says one or two very simple sentences. Even so, that dialogue really has an effect on me, and I wonder if that has something to do with the nostalgia I have for those old, badly-translated Japanese video games where most of the characters you run into simply repeat the same line over and over again. I wonder if someone who's not familiar with those types of games could have the same kind of emotional response to the simple but incisively crafted dialogue in Pathways.<br /><br />Anyway, here's the list. Most of these are Flash games and the links will take you directly to the page where you can play them, unless otherwise noted.<br /><br /><br /><span style="font-weight: bold;">Daniel Benmergui</span><br /><ul><li> <a href="http://www.kongregate.com/games/danielben/i-wish-i-were-the-moon">I wish I were the Moon</a>. Take pictures of the things you see on the screen, and then click again to move them elsewhere. See what happens.</li><li><a href="http://www.kongregate.com/games/danielben/storyteller">StoryTeller</a> is similar in that you basically have the ability to move elements of a scene around, but this time it's broken into three distinct scenes, representing three points in the lives of three characters. You can modify the elements in any of the scenes and immediately see how it affects the later ones.<br /></li></ul><br /><span style="font-weight: bold;">Terry Cavanagh</span><br /><ul><li><a href="http://www.kongregate.com/games/TerryCavanagh/dont-look-back">Don't Look Back</a>. It's a pretty simple jump-and-run game with beautiful music and a haunting turning point.</li><li><a href="http://distractionware.com/blog/?p=650">Pathways</a> (runs well on Wine if you change config.ini to say fullscreen=0). This one is really touching. It's all about making decisions, and it reinforces what seems to be a recurring theme in his works by not allowing the player's character to turn back. He can only move forward or turn onto another path.<br /></li></ul><br /><span style="font-weight: bold;">Guilherme S. Töws</span> (of Zaratustra Productions)<br /><ul><li><a href="http://zarat.us/tra/offline-games/eversion.html">Eversion</a> (another Windows-only game, works well on Wine). Another jump-and-run game which looks like a typically boring and hyper-cheery Mario-type game for the first couple of levels, but becomes gradually deeper and more bizarre. This one is the most difficult of all the games I've listed to actually complete, but you can get through the first 7 levels without having to collect all the gems. Getting them all may require the use of walkthroughs, which are readily available on Youtube.</li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-9015107625547366808?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com2tag:blogger.com,1999:blog-18669215.post-20637206825176356092009-02-11T04:19:00.003-05:002009-02-11T04:24:56.446-05:00Interactive Fiction Writing MonthI've just added the <a href="http://ifmonth.blogspot.com/">Interactive Fiction Writing Month</a> blog to <a href="http://planet-if.com/">Planet IF</a>. The project looks really cool. If you know anyone who's been thinking about trying to write some IF, point them in that direction.<br /><br />See also <a href="http://www.instamatique.com/if">the main IF Writing Month web site</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-2063720682517635609?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-56446519363741817662009-01-26T20:50:00.002-05:002009-01-26T20:51:45.148-05:00BluefulOkay, this is really cool. I think you should check it out.<br /><br /><a href="http://blueful.com/">http://blueful.com/</a><br /><br />By Aaron A. Reed.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-5644651936374181766?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-31210512147339218702008-11-24T18:11:00.014-05:002008-11-25T17:43:40.233-05:00Open-MoralityI am really getting sick of open-morality games<sup><a href="#coin">1</a></sup>.<br /><br />These games have a problem. It's not that they lack a wide enough range of moral decisions: I really do believe that my Fallout 3 character is a shining beacon of humanity's hope in the wretched landscape of the USA's post-apocalyptic capitol. And I realize that he could just as well have been an absolute bastard, even offending the sensibilities of the other horrible people in that world. So, okay: let's say that the game industry has figured out how to give the player some choice in how their character develops. The problem is that they <em>haven't</em> figured out how to construct an engaging story from those decisions. Not once have I felt any twitch of meaningful emotion or insight while playing any open-world game that focuses on allowing the player to make wide-ranging moral decisions. Okay, so <em>most</em> games don't give me any such reactions, but I think open-morality games actually destroy tiny bits of my brain that are responsible for emotion and insight. Maybe I'm being too harsh.<br /><br />I want to talk about Fable 2 today. I picked up Fable 2 a couple of weeks ago, honestly expecting to not like it very much. I'd played through most of the first Fable game, and found its story pathetic but its gameplay fairly entertaining. After playing it, I ranted to my friends that the morality of the world was shallow: The leader of the Hero's Guild, after turning me from a village boy into a full-fledged adventurer, gave a speech indicating that whether I would be good or evil was entirely my own decision. In this world, I could create suffering or ease it. Sure, that's true, it is my decision, but you know, I would expect some encouragement in the good direction at this point (later plot events notwithstanding). When major characters don't even <em>care</em> whether you're good or evil, it sure does lessen the importance of that decision. So, morality in Fable is just another part of the toy.<br /><br />Other than that, I thought the game was somewhat fun.<br /><br />I've also been antagonistic to Peter Molyneux. He has some strong opinions about how stories in games should work, and after having played Fable and seeing how weak of a story it had, I basically condemned him as an unfortunately popular eccentric.<br /><br />I've changed my mind. Fable 2 is good. I like Fable 2 a lot. And maybe I don't think Peter Molyneux is quite as crazy as I did.<br /><br />Don't get me wrong: I still think open-morality is a dead-end road for narrative in games. Frankly, I think that people like Mr. Elrod who are apparently <a href="http://blog.pjsattic.com/corvus/2008/10/fable-2-the-touch-of-evil/">deeply emotionally affected</a> by this game need to read some books and get a more robust personal philosophy. If a player can construct a unique, unauthored narrative out of the simple mechanics and quests of this or other open-world games, then he could probably do the same with a string tied to a stick. We all have our weaknesses, Mr. Elrod. I watch sappy anime. But I don't imbue it with an imaginary quality of depth, even if it sometimes makes me cry.<br /><br />So why do I like Fable 2? Let me explain. It's incomplete to call Fable 2 an open-morality game. In addition to being an open-morality game, it is a <em>parody</em> of open morality.<br /><br />I realized this as I was having my character join the Temple of Shadows -- the evil brotherhood of monks who receive benefits from an unnamed evil force by sacrificing innocent villagers. I should have realized it earlier (arguably even back when I played the first Fable game). But this is what made it clear to me that this game was <em>parodying</em> moral decisions. You see, the Dark Monk (or whatever he is) who decides whether you can join the Temple of Shadows gives you a simple task: eat five baby chicks. Including the feathers, bones, and beaks. While they're alive. He mentions that back in his day, they only had to kick a blind beggar's walking stick out from under him, but nowadays they've got more strict entry requirements. As you eat the chicks, one by one, he makes comments indicating his disgust at your actions, at one point crying "You really have no scruples, do you!?"<br /><br />This scene had me cracking up. It was well-written black humor<sup><a href="#victor">2</a></sup>, and the subject matter was so over the top that I could have no serious emotional reaction (other than amusement) to my character taking the "evil path" by joining this temple.<br /><br />Another example of this kind of thing is the Assassin's Guild. The guild will offer you jobs for killing particular (seemingly random) NPCs somewhere in the world. Each contract has the reason for the hit: reasons like the character having bad breath, or the guild needing to maintain its monthly quota.<br /><br />This is not a dramatic player-generated narrative, people.<br /><br />And I like Fable 2 more than Oblivion. Sure, when I took that first step out of the dungeon at the beginning of Oblivion I was excited to see the wide-open world awaiting my exploration. But when I actually found things in that big open world, the badly written and unengaging stories really detracted from the experience. I still go back to the game from time to time and enjoy a bit of a romp around the world, but who was really that excited about completing the main story? And what alternatives do we have? Farmer Brown wants you to go into a cave and kill a giant crab. Epic. Fable 2 has its moments of badly written story, but they make up a way smaller portion of the game. That is, less than all of it. Fable 2 has good comedy surrounding a bad story. Oblivion just has the bad story.<br /><br />I still think Peter Molyneux is probably a bit crazy, but I can respect what he's done a lot more now. I think I conflated his seriousness <em>about</em> story with seriousness <em>of</em> story. It turns out, he is just deadly bloody serious about comedy<sup><a href="#molyneux">3</a></sup>.<br /><br /><br /><br />Footnotes:<br /><br /><a name="coin">1:</a> I would say 'to coin a phrase' here, but I can't be bothered to google it up to make sure nobody else has said it yet. Anyway, it's clear that we're going to need more words than just "open-world" to explain the things happening in game development these days. Open-geography, open-morality, open-plot: these are all fairly different, and there are games to which these terms apply independently. Exercise for the reader: categorize Far Cry 2, Oblivion, Fallout 3, Grand Theft Auto, Deus Ex, and any Final Fantasy game.<br /><br /><a name="victor">2:</a> Mr. Gijsbers, <a href="http://gamingphilosopher.blogspot.com/2008/08/portal.html#c6354735210976437951">I understand that interactive dark comedy is difficult for you</a>, and so I recommend you do not play Fable 2 to avoid wildly misinterpreting it.<br /><br /><a name="molyneux">3:</a> Actually, I don't want to pretend like I'm getting at the True Intended Meaning behind this game. Mr. Molyneux might actually think that his game is a touching piece dealing head-on with hard moral problems, but if he did, he has failed. Oh, look! A stick and string!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-3121051214733921870?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com16tag:blogger.com,1999:blog-18669215.post-44557951617587324842008-11-16T20:57:00.004-05:002008-11-22T12:31:11.965-05:00Twisted 8.2.0pre2Please try out the second pre-release of Twisted 8.2.0, the first Twisted release since April.<br /><br /><a href="http://twistedmatrix.com/users/radix/8.2.0pre2/">Downloads</a><br /><br /><a href="http://twistedmatrix.com/users/radix/8.2.0pre2/NEWS.txt">Release notes</a><br /><br />Please try it out and report any bugs.<br /><br /><em>edit: Updated to pre2.</em><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-4455795161758732484?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com1tag:blogger.com,1999:blog-18669215.post-57288631377027296272008-11-14T10:45:00.006-05:002008-11-14T11:03:42.166-05:00A meme that is not a quiz, thankfullyThere's a meme about books that's going around:<br /><ul><li><a href="http://blog.daniel-watkins.co.uk/phrase-from-nearest-book">Daniel Watkins</a></li><li><a href="http://strongdynamic.blogspot.com/2008/11/phrase-from-nearest-book-meme.html">Cory Dodt</a></li><li><a href="http://holdenweb.blogspot.com/2008/11/phrase-from-nearest-book.html">Steve Holden</a></li></ul><br />What you do is grab the nearest book, turn to page 56, and post the fifth sentence to your blog.<br /><br />First, the proof: <br /><br /><a href="http://picasaweb.google.com/lh/photo/Fyi7h4UfFmpbBTiwduwWqw"><img src="http://lh5.ggpht.com/_SqddeQP7qfs/SR2dhrxB9SI/AAAAAAAAAHA/E9KFLF-dux8/s400/books-on-table.jpg" /></a><br /><br />This picture was taken after rotating about 120 degrees in my chair. The Kindle in the picture probably is a few inches closer than the rest of the books, but first, it's unclear that it's a <em>book</em>, and second, its ebooks don't have page numbers.<br /><br />So I chose the book on top of the stack (not the Nintendo DS game case that's at the very top: that's <em>The World Ends With You</em>). The line reads as follows:<br /><br /><blockquote>Events that do not command <em>our</em> attention hardly exist for <em>us</em>, even if they influence how <em>we</em> perceive, feel, or react.</blockquote><br /><br />It's from <em>Artful Sentences: Syntax as Style</em> by Virginia Tufte. This book is made up mostly of quotes, so the line is actually a quote from another work, by Gerard Roth: <em>The Quest to Find Consciousness</em>.<br /><br />(I've added the interactive-fiction tag to this post even though it has nothing to do with IF, so that my readers who only follow that tag will see it).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-5728863137702729627?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com6tag:blogger.com,1999:blog-18669215.post-10016555760042311152008-11-09T11:34:00.003-05:002008-11-09T11:38:26.414-05:00Planet IF: Now slightly less buggyI've updated the software behind <a href="http://planet-if.com/">Planet Interactive Fiction</a> to a new version/fork called <a href="http://intertwingly.net/code/venus/">Venus</a>. This should fix that bug which caused some blog post titles to be replaced by the username of the person who authored the post. I think this was affecting Wordpress users who used images, or something.<br /><br />Other than that, the templates are exactly the same, so you shouldn't notice a difference.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-1001655576004231115?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-41012544133603839182008-10-30T23:45:00.003-05:002008-10-31T00:18:35.792-05:00Just so I don't feel like a slackerI took a week off from work this month (and I'll do this once per month until the end of the year, since my vacation time doesn't roll over) and have been trying to actually use it productively. Here's a list of some interesting things that I've done so far:<br /><ul><li>Twisted stuff: there was a developer sprint on Sunday that Itamar, Glyph, Jean-Paul and I attended, and since then I've been sporadically (but much more than usual) reviewing branches to try to get a release out. Speaking of which, Twisted contributors: please review <a href="http://twistedmatrix.com/trac/ticket/3487">#3487</a>!</li><li>Did a bit of evangelism for the new <a href="http://code.google.com/p/garglk/">GarGlk project on Google Code</a>, organized a mailing list and rustled up some members, and started making an Ubuntu package for the new <a href="http://ccxvii.net/gargoyle/">Gargoyle</a>. You should see something by the end of the week.</li><li>Worked on my own interactive fiction game, which is progressing at just about the right pace to be ready for the <a href="http://groups.google.com/group/rec.arts.int-fiction/browse_thread/thread/71eed3d7edcb9d17#">GameplayComp mini-competition in September of 2009</a>.</li><li>Posted a couple of updated extensions to the <a href="http://www.inform-fiction.org/I7/Download%20-%20Extensions.html">I7 Extensions page</a>: Emily Short's <em>Ordinary Room Description</em> and Jesse McGrew's <em>Dynamic Objects</em>.</li><li>Watched <span style="font-style: italic;">Resident Evil: Extinction</span> (the third in the series), which did not have as good an ending as either of the first two.<br /></li></ul>Of course, in addition to this I've been spending way too much time playing video games (Far Cry 2! Fallout 3! Man, there is a ridiculously awesome influx of good games lately. <span style="font-style: italic;">And</span> I am looking forward to Left 4 Dead). Of course, I am never one to be satisfied with simple pleasures, so all this gaming has been inspiring me to brew up an essay in my head which I'm thinking of calling <em>The Purity of Interaction</em>, or less wankerly, <em>Consistency in Interaction</em>. We'll see. I do still have three free days before I have to get back to the salt mines.<br /><br />Oh yeah, and if you're in the mood for something spooky for Halloween (or as I like to call it, <a href="http://en.wikipedia.org/wiki/Halloween">All Hallow's Evening</a>), check out <a href="http://tenth.livejournal.com/110800.html">Dave's latest blog post</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-4101254413360383918?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-46958864187053831762008-10-19T14:41:00.003-05:002008-10-19T14:47:19.008-05:00Im in ur web site, postin ur Inform 7 extensionsHi, this is a quick note that now people who want to add extensions to the <a href="http://www.inform-fiction.org/I7/Download%20-%20Extensions.html">Inform 7 Extensions Page</a> should now contact me at i7extensions@wordeology.com; Emily Short has handed off the responsibility to me, and I've just updated Liquid Handling and Supplemental Actions by Al Golden, and Epistemology by Eric Eve.<br /><br />Hopefully at some point the email address will be replaced by a web form that streamlines this process a bit.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-4695886418705383176?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com1tag:blogger.com,1999:blog-18669215.post-48039700772903417512008-10-02T21:45:00.006-05:002008-10-03T07:50:24.035-05:00Glulxe packages for UbuntuSo I got all the IFComp 2008 games, unzipped them, and tried to play them. Then I found out I didn't have any decent interpreters for the games and couldn't find Ubuntu 64-bit binaries for them on the net. So I decided to start making packages.<br /><br /><a href="http://www.eblong.com/zarf/glulx/">Glulxe</a> (using the <a href="http://www.eblong.com/zarf/glk/index.html">glktermw</a> backend) is now packaged and available in <a href="https://launchpad.net/~ubuntu-if/+archive/+index">a Launchpad Personal Package Archive</a> that I just set up. You can get it by adding the following software source to your Ubuntu machine:<br /><br />deb http://ppa.launchpad.net/ubuntu-if/ubuntu hardy main<br /><br />And installing the 'glulxe-term' package. <br /><br /><strong>edit: Thanks to <a href="http://www.wolldingwacht.de/if/glulxe/">Peer Schaefer</a> for the original packages, on which my packages are based. Sorry I forgot to mention in the initial post!</strong><br /><br />I hope to offer 'glulxe-gtk' package soon; ideally, I'll replace both of them with a 'glulxe' package that can dynamically use any Glk backend by making use of GlkLoader, but that'll probably require some real coding.<br /><br />I'm also working on packages for <a href="http://sourceforge.net/projects/gnome-inform7">Gnome Inform 7</a>, but unfortunately they contain proprietary code so I can't publish them on the PPA. I'm hoping to be able to split that package so that I can create a 'gnome-inform7' package separate from an 'inform7' package, but that's iffy because it would make installing from .debs without a repository significantly more annoying - right now you just click the .deb link on the Inform 7 web site and then click "Install package".<br /><br />Anyway, look out for more <a href="http://launchpad.net/~ubuntu-if">Ubuntu/IF</a> work soon.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-4803970077290341751?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com6tag:blogger.com,1999:blog-18669215.post-75916059589623539582008-10-01T14:24:00.003-05:002008-10-01T14:38:09.265-05:00Interactive Fiction Competition 2008There are a <a href="http://planet-if.com/">slew of posts about it on Planet IF</a>, but given that my readership is largely outside of the IF community, I'm going to mention here that <a href="http://ifcomp.org/">IFComp '08 is now under way</a> and is accepting votes. There are <a href="http://ifcomp.org/comp08/download.html">35 games which you can get in one bundle</a>. Most of the games can be run on any computer (Linux, Mac, Windows), with a few platform-specific (Windows-only) games.<br /><br />In case you don't know what interactive fiction is, you can read <a href="http://emshort.wordpress.com/how-to-play/">Emily Short's short introduction</a>. If you're looking for the interpreters needed to run the games, you can check out the <a href="http://www.ifwiki.org/index.php/FAQ#How_can_I_download_and_play_IF.3F">relevant page on IFWiki</a>.<br /><br />This is the fourteenth year that the competition has been running (I was eleven when it started!), and it's the first in which I've decided to vote. Please join me.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-7591605958962353958?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-73873360356248798502008-08-26T09:16:00.003-05:002008-08-26T19:13:58.570-05:00This is a Rant<strong>Edit: see end of post</strong><br /><br /><a href="http://www.linux.com/feature/145341">Linux.com :: Protecting your MySQL database from SQL injection attacks with GreenSQL</a><br /><br />This is an article (written by a very clueless person) about GreenSQL which is a tool (written by a very clueless person) that acts as a proxy between an application and a MySQL database which attempts to detect malicious, likely-injected SQL statements.<br /><br />Do not interpolate strings into your SQL statements.<br /><br />Then, there are all the hilariously dreadful comments.<br /><br /><blockquote>"better yet, encode the bloody data before you shove it in there" --Anonymous</blockquote>Do not interpolate strings into your SQL statements.<br /><br /><blockquote>"Do you honestly think that anybody who doesn't know how to use simple, foolproof SQL-quoting functions is really going to be able to figure out how to correctly set up a package like this?" --Anonymous</blockquote>Do not interpolate strings into your SQL statements.<br /><br /><blockquote>"Why don't you try to actually learn to secure your code instead of being a lazy (or completely unskilled) administrator? Surely mysql_real_escape_string() isn't too hard to incorporate?" --Anonymous</blockquote>Do not interpolate strings into your SQL statements.<br /><br />Look, it's simple. Most database interfaces have a function called 'execute' or similar which takes two arguments: a string of SQL with markers like '?' in it, and then a tuple of arguments to be used as the values of those markers.<pre>execute('SELECT * FROM users WHERE name = ? AND email = ?', ("radix", "radix@twistedmatrix.com"))</pre>Do that. Don't do any of the following:<pre>execute('SELECT * FROM users WHERE name = %s and email = %s' % ("radix", "radix@twistedmatrix.com"))</pre><pre>name = "radix";<br />email = "radix@twistedmatrix.com";<br />execute('SELECT * FROM users WHERE name = $name and email = $email');</pre><br /><br />String escaping is an absolutely retarded alternative to this. Why would you bother escaping or "encoding" your strings when you can simply use the database API as it was intended, without interpolating strings?<br /><br /><strong>Edit: </strong> This concept of passing parameters has nothing at all to do with the "prepared statements" feature of popular databases. This is a much simpler feature. This is not a new feature. This feature is commonly called "bind parameters", and it has been around for decades.<br /><br />Why do so few people know about this?<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-7387336035624879850?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com7tag:blogger.com,1999:blog-18669215.post-50148444030460717002008-08-08T10:05:00.003-05:002008-08-08T10:16:14.497-05:00Gmail and HTTPSIf you use gmail, all of your email is probably going unencrypted over the Internet, allowing fairly easy snooping of all your sensitive data. You may feel good that there's an "https://" in your address bar after you type "gmail.com" into it and hit enter, but notice that after you authenticate and start reading email, it's gone back to "http://".<br /><br />It's been possible for a while to work around this and use https even for email content if you knew what to do in the address bar, but now gmail has made it easier. There's a new option in the main Settings screen called "Always use https". I strongly encourage all gmail users to turn this option on.<br /><br />It's still really lame that they haven't made it the default mode of operation. Come on, gmail, don't you care about privacy?<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-5014844403046071700?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com6tag:blogger.com,1999:blog-18669215.post-69819244843712020092008-08-07T18:00:00.003-05:002008-08-07T18:11:13.457-05:00EcruRemember how I was <a href="http://radix.twistedmatrix.com/2008/05/requirements-for-restricted-execution.html">talking about restricted execution</a>, and mentioned that thing "Monte" that doesn't actually exist? Well actually I was trying to refer to <a href="http://launchpad.net/ecru/">Ecru, a new E implementation in C</a>. After being <a href="http://www.eros-os.org/pipermail/e-lang/2008-July/012781.html">announced to positive reactions</a> on the E mailing list, Allen <a href="http://washort.twistedmatrix.com/2008/07/ecru-c-runtime-for-e.html">posted on his blog about Ecru</a> and why he started the project.<br /><br />I'm excited about this project. E is a language which is specifically designed to solve <a href="http://radix.twistedmatrix.com/2008/05/requirements-for-restricted-execution.html">the types of problems that I want to solve</a>, but Ecru has a long way to go until it gets there. I hope it gets more contributors!<br /><br />As for Lua: I do think it's feasible for some serious restricted execution work (or at least I think it might be - I haven't really proven it yet), but I'd much prefer Ecru, because E is so much more sensible a language.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-6981924484371202009?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com2tag:blogger.com,1999:blog-18669215.post-21237269252397956842008-07-29T17:34:00.003-05:002008-07-29T17:58:26.424-05:00python-committersQuote:<br /><br /><blockquote>Welcome to python-committers! This publicly-archived but invite-only mailing list is for people who have commit privileges for Python to <strong>discuss issues that do not concern the general public</strong>. Example of topics to go to this list are <strong>release dates, whether a specific patch is a release blocker</strong>, etc. Essentially anything where <strong>public input serves no purpose</strong>.</blockquote><br /><br />-- <a href="http://mail.python.org/pipermail/python-committers/2008-July/000009.html">Brett Cannon</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-2123726925239795684?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com1tag:blogger.com,1999:blog-18669215.post-68189509714150482762008-07-26T09:09:00.003-05:002008-07-26T09:27:28.235-05:00Twisted Community Code on LaunchpadWe already <a href="http://labs.twistedmatrix.com/2008/06/place-for-everyone.html">made an official announcement about it</a>, but I wanted to post again about the <a href="https://launchpad.net/tx">Twisted Community Code project</a> on Launchpad.<br /><br />After (nearly) two months, I think so far I'd call it successful. There are currently thirty-two projects registered, with a variety of technical areas covering concurrency, deployment, testing, protocol implementations, games, and more.<br /><br />I think this is turning out way better than <a href="http://twistedmatrix.com/trac/wiki/ProjectsUsingTwisted">our ProjectsUsingTwisted wiki page</a>, not only because it's easy to add your own Launchpad project, but also because it gives users a direct and easy way to get access to the source code and bug tracker for each of these projects.<br /><br />The 'tx' naming convention is also turning out to be pretty cool; I'm amazed at how many projects have adopted it in the couple of months since it was proposed. <br /><br />Anyway, if you have your own Twisted-related project, I encourage you to register it in Launchpad as a member of the <a href="https://launchpad.net/tx">tx super-project</a>. If you're just looking for libraries to help while you're writing your Twisted-based application, it's also a great place to check.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-6818950971415048276?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-83917966156116339662008-07-18T22:50:00.003-05:002008-07-18T22:54:36.327-05:00Joss Whedon Writes StuffCheck out <a href="http://drhorrible.com/">Dr. Horrible's Sing-Along Blog</a>. It's a video musical. It's by Joss Whedon, famous Hollywood <a href="http://drhorrible.com/plan.html">writer/director/terrorist</a>. It's free to watch on that web site until Sunday, July 20th, 2008. After that you'll be able to purchase it for a nominal fee.<br /><br />Here are some things which he said about this project that I think are cool.<br /><br /><blockquote>The idea was to make it on the fly, on the cheap – but to make it. To turn out a really thrilling, professionalish piece of entertainment specifically for the internet. To show how much could be done with very little. To show the world there is another way. To give the public (and in particular you guys) something for all your support and patience. And to make a lot of silly jokes. Actually, that sentence probably should have come first. </blockquote>...<blockquote>It’s time for the dissemination of the artistic process. Create more for less. You are the ones that can make that happen.</blockquote><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-8391796615611633966?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com1tag:blogger.com,1999:blog-18669215.post-20176776547771026342008-06-28T20:56:00.005-05:002008-06-28T21:12:10.519-05:00Inventory Meme.Glyph inventoried -- ahem -- <a href="http://glyph.twistedmatrix.com/2008/06/memeventory-inventomeme-uh-how-about.html">invented a new meme</a>. It's called the Inventory Meme. <a href="http://jcalderone.livejournal.com/41916.html">Jean-Paul responded</a> with a rather pathetic submission.<br /><br />Now it's time for the real deal, yo.<br /><br /><h4>Inventory, by Christopher Armstrong</h4><em>I have to get ready for a flight to London, which is taking off in, oh, two hours. Fortunately most of the packing was done last night.</em><br /><br />You can <a href="http://parchment.googlecode.com/svn/trunk/parchment.html?story=http://wordeology.com/radix/Inventory/Inventory.js">play it online with Parchment</a> or <a href="http://wordeology.com/radix/Inventory/Inventory.z5">download the z5 file</a> if you have an Interactive Fiction interpreter. Please type HELP when the game starts. I've also made the <a href="http://wordeology.com/radix/Inventory/source.html">source code</a> available.<br /><br />This "game" was written in <a href="http://www.inform-fiction.org/I7/">Inform 7</a>. Thanks to Glyph for inspiring me to finish my very first work of Interactive (Non-)Fiction and to Graham Nelson, Emily Short, Philip Chimento, and others for Inform 7.<br /><br />(Yes, I'm being ironic. I don't actually take this that seriously.)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-2017677654777102634?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com6tag:blogger.com,1999:blog-18669215.post-50437749291760544402008-05-29T17:41:00.008-05:002008-05-30T07:42:21.116-05:00Requirements for a restricted execution runtimeI don't care what the language is, just please someone give me a runtime with these properties:<br /><ol><br /><li>Namespace restriction. Encapsulation. Capabilities. Whatever: the code should only be able to do what I say it can do.<br /></li><li>CPU timeslice restriction: Either I should be able to run some code for so long, pause it, and then resume it where it left off, or I should be able to run some code asynchronously, giving it 1/Nth CPU time.</li><li>Memory allocation restrictions: this user's code should only be able to allocate up to N megabytes.</li><li>Efficient at rather high scales: I should be able to run at least 500, maybe 1000 completely isolated functions concurrently. If all they're doing is sleep()ing, then this shouldn't put the host under heavy load.<br /></li><li>Some simple way to expose new, audited functions. This is pretty easy. If it can't run in a Python process and allow Python functions to be exposed to it, then I can at least run it in a separate process with method invocations going over a trivial RPC protocol.</li><li>A decent set of secure built-in operations, but nothing really fancy. People are going to be interfacing with my API and nothing else, so they won't need a hugely rich core language API. It does need to be secure, though: large exponentiation should either be disallowed or interruptible, for example.</li><li><span style="font-weight: bold;">Secure</span>, ok? For example, don't talk to me about Python (as implemented by CPython). I have very little trust for any restricted execution system that's tacked onto an existing complex runtime.</li></ol><br />In case you need some context for these requirements to make sense, think LambdaMOO or Second Life. Any user can upload code to run with their rights; it can manipulate the world through an audited "trusted" API. The code isn't allowed to interfere with the host system or other users' code. Another possible application is a wiki which allows people to upload code to be executed when a page is viewed.<br /><br />Here's the list of things I've considered:<br /><br /><ul><li><a href="http://www.plt-scheme.org/">PLT</a> looks damned close with its <a href="http://download.plt-scheme.org/doc/372/html/mzlib/mzlib-Z-H-41.html#node_chap_41">sandbox</a> library, but its execution limitation is in terms of wall-clock seconds, not CPU seconds, <span style="font-style: italic;">and</span> it's not continuable.</li><li><a href="http://launchpad.net/monte/">Monte</a> could definitely do it some day, if its development remains steady.<br /></li><li><a href="http://www.lua.org/">Lua</a>... well, can Lua do it? I'd love it if someone would actually make a point on this.</li><li><a href="http://haskell.org/">Haskell</a> might be able to do it. Haskell can do <span style="font-style: italic;">anything</span>, it seems. (I think I saw some code once which somehow implemented continuations in Haskell, for Haskell. Without being a Haskell runtime or compiler. What? I don't know.) The problem is it's inscrutable to me. I'd love it if someone commented about this.<br /></li><li><a href="http://www.ecmascript.org/">Javascript</a>? Is there actually a usable standalone implementation of Javascript? Which of these properties does it have?</li><li>PyPy with the sandbox translation option. It's very cool, but I'm not sure it's usable at the 1000 node scale, because I can't see a way to run multiple isolated interpreters within one process. It also misses things like CPU timeslice restriction and memory allocation restriction, as far as I can tell.<br /></li></ul>I'd love to hear your comments. If you think that an existing runtime is close and know which of these properties it lacks, I want to hear about it. If you actually know of a runtime that has <span style="font-style: italic;">all</span> of these properties, I'll buy you fifty beers.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-5043774929176054440?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com32tag:blogger.com,1999:blog-18669215.post-74707522804875134692008-05-16T10:50:00.004-05:002008-05-16T10:55:36.066-05:00Search History: "R"To continue my <a href="http://radix.twistedmatrix.com/2007/01/search-history.html">series of search history starting with "S"</a>, here is "R":<br /><br /><center><img src="http://lh6.ggpht.com/radeex/SC2tcjnGInI/AAAAAAAAAC8/3CnPRv6KQbI/s800/R-searches.png" /></center><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-7470752280487513469?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-46463295189119335242008-05-11T11:13:00.004-05:002008-05-11T11:36:13.706-05:00Intelligent Hinting<a href="http://www.aaronareed.net/">Aaron A. Reed</a> recently announced an <a href="http://groups.google.com/group/rec.arts.int-fiction/browse_thread/thread/92a35d2a6fcead88#">open beta for his Intelligent Hinting extension for Inform 7</a>. This is an amazing extension that intelligently figures out how to solve puzzles in Inform 7-based games with high-level puzzle annotations in your I7 project.<br /><br />You have to define "puzzles" and "tasks" in your own game, at implementation-time, and the extension provides a >SUGGEST command which indicates the next action to be taken to solve the current puzzle. It's surprisingly smart: if you've defined that a cloak must be placed on a particular hook, it will automatically figure out how to move the player to find the cloak, pick it up, and move the player to the hook. Not only that, it even knows how to completely automatically find keys for locked doors that are between the player and either the cloak or the hook.<br /><br />Not only is this a good feature for end-users, it also offers very important benefits to implementors of IF: It makes it trivial to automatically test if your work is winnable, and it makes it similarly trivial to generate a walkthrough to publish with your game automatically.<br /><br />Inform 7 has a rich and descriptive world model, and it's great to see tools that are starting to really take advantage of it in very useful ways.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-4646329518911933524?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0tag:blogger.com,1999:blog-18669215.post-31131557517816369072008-04-30T10:08:00.003-05:002008-04-30T10:11:53.671-05:00Twisted Show 3, Raffi Krikorian of Synthesis StudiosBy the way, if you haven't listened to it yet, I recommend checking out the third episode of the Twisted Show, which is an <a href="http://thetwistedshow.blogspot.com/2008/04/interview-with-synthesis-studios.html">interview of Raffi Krikorian of Synthesis Studios</a>. I share space with Divmod in that back room :-)<br /><br />by the way, if you have trouble with noise from the audio player at archive.org, try the .mp3 or .ogg version; they sound fine.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18669215-3113155751781636907?l=radix.twistedmatrix.com'/></div>Christopher Armstronghttp://www.blogger.com/profile/11041638059246049826noreply@blogger.com0