Skip to main content

Strange Loop 2015 Highlights

I've returned from Strange Loop in St. Louis, a tech conference whose talks commonly include themes like PL, web dev, distributed systems, functional programming, and tech education. I was giving an invited talk at the Future Programming Workshop (FPW), part of the Strange Loop preconference.

This year, I had to leave early, missing half of Strange Loop proper, but fortunately there are recordings of all the talks up on YouTube! Unfortunately, the hallway track can't be recorded for delayed consumption, and I'm still bummed to've missed out on talking to a bunch of people I either failed to meet or only had one passing conversation with.

That said, even two days was enough time to come away with plenty to write and think about, and I'd like to share some of my personal highlights of the conference with you.

"I See What You Mean" by Peter Alvaro was the first keynote talk, kicking off Strange Loop. In it he tells the story of Dedalus, a temporal logic programming language inspired by Datalog, for declarative distributed programming. While the technical aspects of this talk are very close to my heart, Peter also does a fantastic job of storytelling and pontificating about the pleasures and perils of designing nice languages for messy domains.

"Unconventional Programming with Chemical Computing" by Carin Meier was the next talk I saw after Peter's, and it was rife with connections to declarative distributed computing. Chemical computing is a very linear-logic-like (in fact, multiset-rewriting) abstraction, where programs are sets of "reaction" rules that have molecules consumed and molecules produced. The main interesting difference in the simulator Carin built is that the multisets are visualized as a bunch of molecules bouncing around in 2D space, and rules fire whenever molecules "collide," which may be constrained by some geometric aspects of the simulation (although those features are not included in the semantics of the program, technically). In the video, Carin gives examples that include a (simplified) Dining Philosophers simulation and an email server network simulation.

"Strange Loops: Capturing Knots with Powerful Notations" by Kay Ye was a really delightful romp through knot theory and mathematical philosophy, with equally delightful hand-drawn slides. It tells the story of (primarily) two disparate notations for knots, one of which is significantly more "clever" and elegant, but obtains its expressive power by optimizing for certain knots (rational knots) that happen to be suited for it, yet don't seem to faithfully map onto the concerns of practicing, knot theorists. I thought this talk made an interesting bridge between the kinds of ideas in Peter Alvaro's talk (abstraction boundaries can hinder users) and the ideas in Phil Wadler's talk (which pushed for a preference of "discovered" theories and languages over "invented" ones) -- knots are a domain which seem, like distributed systems, somewhat resistant to the nice discovered interfaces that PL designers crave, and all the challenge lies in negotiating the gulf between the elegant and the useful.

"From Protesting to Programming: Becoming a Tech Activist" by Idalin Bobé was the keynote that solidified to me that Strange Loop is a conference I want to continue attending and endorsing. Idalin tells her personal story of overcoming the obstacles in her life path toward creating lifechanging tech, and even more importantly, she discusses racist police brutality and the events of Ferguson that created critical mass around public awareness of these issues as well as her own will to get involved. My favorite part of this talk was when she stated point-blank that most of the tech coming out of startups is creating bigger gaps of inequality rather than closing those gaps, and how nearly all of the tech thought to enable disempowered activists can be systematically taken away and turned against them.

"A History of Programming Languages for Two Voices" by David Nolen and Michael Bernstein is a "mixtape" of PL history paired with music history. Although I didn't catch this talk in person, I watched it as soon as it popped up online, because I knew this one would be too good to miss. The main thing I love about this talk is the "now start yr own band" attitude of it, the encouragement to the audience to make our own mixtapes celebrating the interdisciplinary connections that excite us. (I know I, for one, want to do a version of this that includes ML and riot grrl.) Also, this talk strongly reminded me of Leigh Alexander's keynote at Different Games 2013 that did a similar mixtape-style history of video games. [I can't find a video, but this article seems to be a close match to the content.]

Finally, here's the video for my FPW talk, which is about Ceptre as a proposal for prototyping language for games:

Here are the slides, too.


  1. In computer programming, a loop is a sequence of instruction s that is continually repeated until a certain condition is reached. Typically, a certain process is done, such as getting an item of data and changing it, and then some condition is checked such as whether a counter has reached a prescribed number. Refer essay reviews to get reviews of various online writers.


Post a Comment

Popular posts from this blog

Using Twine for Games Research (Part II)

This preliminary discussion introduced my thoughts on using Twine as a tool for creating prototypes for games research. I'll start with documenting my first case study: a hack-and-slash RPG-like setting where the player character has a record of attributes ("stats") that evolve through actions that turn certain resources (money, health, items) into others. I've selected this hack-and-slash example because it falls outside the canonical "branching story" domain thought to be Twine's primary use case, but it is not too much trickier to implement. It relies crucially on the management of state in ways that simple branching stories would not, but it does so in a fairly straightforward way.

If all goes well, this post may also serve as a tutorial on the "basics" of Twine (links + variables + expressions). In particular, I'll be using Twine 2/Harlowe, and I haven't seen many tutorials for this new version published yet.

To me, the main "…

Using Twine for Games Research (Part III)

Where we last left off, I described Twine's basic capabilities and illustrated how to use them in Twine 2 by way of a tiny hack-and-slash RPG mechanic. You can play the result, and you should also be able to download that HTML file and use Twine 2's "import file" mechanism to load the editable source code/passage layout.

Notice that, in terms of game design, it's not much more sophisticated than a slot machine: the only interesting decision we've incorporated is for the player to determine when to stop pushing her luck with repeated adventures and go home with the current spoils.

What makes this type of RPG strategy more interesting to me is the sorts of decisions that can have longer-term effects, the ones where you spend an accumulation of resources on one of several things that might have a substantial payoff down the road. In a more character-based setting, this could be something like increasing skill levels or adding personality traits.

Often, the game-…

Why I don't like the term "AI"

Content note: I replicate some ableist language in this post for the sake of calling it out as ableist.

In games research, some people take pains to distinguish artificial intelligence from computational intelligence (Wikipedia summary), with the primary issue being that AI cares more about replicating human behavior, while CI is "human-behavior-inspired" approaches to solving concrete problems. I don't strongly identify with one of these sub-areas more than the other; the extent to which I hold an opinion is mainly that I find the distinction a bit silly, given that the practical effects seem mainly to be that there are two conferences (CIG and AIIDE) that attract the same people, and a journal (TCIAIG - Transactions on Computational Intelligence and Artificial Intelligence in Games) that seems to resolve the problem by replacing instances of "AI" with "CI/AI."

I have a vague, un-citeable memory of hearing another argument from people who dislike the…