RacketCon: 20 September 2014

(fourth RacketCon) was held in St. Louis on September 20th 2014.

Michael Fogus gave the keynote.

Videos of the talks are available, and linked to from the schedule.



 9:00–9:30 Registration
 9:30 Welcome
 9:30–10:30 Keynote
Michael Fogus Extracting a Goose from a Klein Bottle [slides] [video]
10:30–10:50 Break

Racketeering Essentials

Chair: Matthias Felleisen
Matthew Flatt Carry on Making that Racket [slides] [video]
Daniel Prager YouPatch: A Racket-powered startup [slides] [video]
11:50–13:40 Lunch

Games and Graphics

Chair: Robby Findler
David Vanderson Racket for a networked multiplayer game [slides] [code] [video]
Jay McCarthy Get Bonus! Infinite Functional Entertainment at 60 FPS! [slides] [code] [video]
Neil Toronto Purely Functional 3D in Typed Racket [slides] [code] [video]
14:40–15:00 Break

Actors and Musicians

Chair: Sam Tobin-Hochstadt
Brian Mastenbrook Racket in Production [slides] [video]
Tony Garnock-Jones Minimart: Organizing Squabbling Actors [slides] [code] [video]
John Clements Sound: why is it so darn imperative? [slides] [code] [video]
16:00–16:20 Break

Libraries and Tools

Chair: Claire Alvis
Matthew Butterick Like a Blind Squirrel in a Ferrari [code] [video]
Greg Hendershott Emacs à la mode DrRacket [code] [video]
Stephen Chang A Boost-Inspired Graph Library for Racket [slides] [video]
17:20 Closing Remarks



  • Michael Fogus — Extracting a Goose from a Klein Bottle

    Racket is the most amazing language that no one's ever heard of. This seemingly harsh assessment is prelude to a discussion on programming language development, innovation, marketing, open source, research, Lisp, and education. While other programming languages have dominated the public discourse, Racket's influence on said languages is undeniable. I'll touch on some of these influences during the course of the talk placing them within the context of just what a language like Racket means within the current, and future software landscapes.

    Fogus is a programming language aesthete with experience in expert systems, logic programming, and distributed simulation. He is a contributor to Clojure, ClojureScript, Datomic, and Transit. Fogus is also the co-author of The Joy of Clojure and author of Functional JavaScript and the upcoming release The Art of Chupacabra Husbandry.

  • [slides] [video]

  • Matthew Butterick — Like a Blind Squirrel in a Ferrari

    At RacketCon last year, I talked about Pollen, a web-publishing system I wrote in Racket. This year, I'll recap what I've learned since then about typesetting in Racket, by redesigning Racket's documentation, hacking Scribble, and releasing Pollen. Plus: my two great Racket ambitions.

    Matthew Butterick is a writer, designer, and lawyer in Los Angeles. He is the author of Typography for Lawyers and the creator of practicaltypography.com.

  • [code] [video]

  • Stephen Chang — A Boost-Inspired Graph Library for Racket

    The Boost Graph Library (BGL) introduces many novel abstraction patterns for graph processing. I borrowed many of the BGL's ideas in implementing a graph library for Racket. This talk will show how the library turned out to be a nice playground for many of the unique features in Racket.

    Stephen is a postdoc and recent PhD graduate at Northeastern University. In his early years, he worked as an electrical engineer before deciding that his life needed more abstraction. So he went off to study programming languages and has been hacking in Racket ever since.

  • [slides] [video]

  • John Clements — Sound: why is it so darn imperative?

    HtDP and big-bang provide an explicit-state, fully-testable framework for simple student apps and games. Adapting this framework to handle dynamically generated music is surprisingly difficult. I describe the specific challenges of shoehorning music into a stateless and testable milieu, and propose a solution, using a hybrid dataflow approach.

    John Clements is an Associate Professor at Cal Poly State University in San Luis Obispo. He is the author of DrRacket’s Stepper, and the RSound library, and this paragraph.

  • [slides] [code] [video]

  • Matthew Flatt — Carry on Making that Racket

    This talk will provide a brief introduction to Racket and Racketeers, a report on recent and current developments, and predictions for the future. Bring your questions, and I'll bring my Magic 8 Ball.

    Matthew Flatt is a professor at the University of Utah and one of the main developers of Racket. He works primarily on Racket's run-time system, compiler, macro system, build system, package system, documentation language, and graphics/GUI libraries.

  • [slides] [video]

  • Tony Garnock-Jones — Minimart: Organizing Squabbling Actors

    Actors are a great model for managing concurrency and communication within programs. The Minimart #lang adds Actors to Racket; but Actors alone are not enough. Programmers using Actors are often left to solve issues such as event broadcasting, service naming and discovery, and even crash-handling and exit signalling, on their own. Minimart makes solutions to these problems part of the language itself. I'll show how Minimart uses publish/subscribe programming and "routing events" to manage and organize whole groups of Actors at a time.

    Tony Garnock-Jones is a PhD candidate at Northeastern University's Programming Research Laboratory, working on applying lessons from distributed systems to programming language design.

  • [slides] [code] [video]

  • Greg Hendershott — Emacs à la mode DrRacket

    DrRacket is wonderful for both newcomers and Racket pros. Some people do like to use Emacs, especially when working with a wide variety of file types and languages. Racket-mode brings some of the DrRacket approach and experience to Emacs, hopefully giving you the best of both worlds. This talk includes a demonstration and a discussion of the implementation in Racket and Elisp.

    Before becoming obsessed with Racket, Greg Hendershott founded and ran the music software company Cakewalk, and has served as an advisor to technology companies such as Roland and JamHub. Soon after RacketCon he is joining the autumn batch at Hacker School.

  • [code] [video]

  • Jay McCarthy — Get Bonus! Infinite Functional Entertainment at 60 FPS!

    Hard real-time embedded systems with tight operating environments, a.k.a. console video games, are an exciting and challenging place to program functionally. The Get Bonus project is an effort to experiment in this space with Racket. This progress-report presentation will discuss some of our goals and some of the interesting implementations we've made in Racket.

    Jay McCarthy is a visiting assistant professor at Vassar College and one of the developers of Racket. He works primarily on Racket's Web server, package system, networking libraries, and special projects, like DrDr.

  • [slides] [code] [video]

  • Brian Mastenbrook — Racket in Production

    When electronic products come off the manufacturing line, they go through a multi-step program and test process to become sellable products. Wearable has been using Racket to automate this process for the portable wireless products that we design and manufacture or license to high-volume consumer electronics companies such as SanDisk. I'll talk about why we chose Racket for our most business-critical application (and why it's so critical!), what we've learned across three generations of manufacturing fixtures and why we went from a monolithic to a distributed system and back to monolithic again. I'll also talk about expressing actor-model semantics in Racket and our gradual migration from untyped to typed Racket.

    Brian Mastenbrook is CTO and cofounder of Wearable Inc, a small Chicago company that invented the wireless flash drive and develops the AirStash OS that makes it possible. In a past life he worked at Motorola on code generators in Common Lisp for five-nines telecommunication systems (among other things).

  • [slides] [video]

  • Daniel Prager — YouPatch: A Racket-powered startup

    youpatch.com began as a hack in Racket to save my wife PatchAndi 10 or so hours of effort to turn an image of Groucho Marx into the design for a patchwork quilt, and evolved into a bootstrapped startup aimed at democratising the hitherto elite art of pixel quilt making. In this talk I recount the YouPatch story so far, discuss Racket's advantages for exploratory programming, and look at the options that face a creative programmer when (s)he comes up with an original idea.

    Daniel has been programming creatively since his teenage years in the 1980s, starting with Turbo Pascal and Z80 assembly on a 64K CP/M machine, and most recently in Racket. In between he took his PhD in mathematics (specifically computational General Relativity) before crossing into software development and leadership, where he has worked in diverse areas, including: devising algorithms for staff scheduling, software for medical devices, educational software to teach critical thinking, and teaching and coaching Agile approaches to software development and business. Nowadays he divides his professional time between Agile/Lean coaching and more entrepreneurial endeavours, including YouPatch!

  • [slides] [video]

  • Neil Toronto — Purely Functional 3D in Typed Racket

    Efficient 3D engines use scene databases to quickly answer queries such as "What must be drawn if the viewer is here and looking this direction?" and "Return all non-opaque triangles in back-to-front order." Most 3D engines are written in an imperative style, even though most scene databases are structured as trees and operations on them can be done without destructive updates. In this talk, I give a sneak peak at a standalone 3D engine with a purely functional API, comprised mostly of combinators that operate on scene databases. I intend it to replace Plot's internal 3D engine, which draws on Cairo device contexts, but also be flexible and efficient enough to render simple game scenes using OpenGL.

    Neil Toronto is a recent PhD graduate from Brigham Young University, now researching programming language support for reliable mathematical computation at University of Maryland, College Park. He writes programs to draw pretty pictures in his nonexistent spare time.

  • [slides] [code] [video]

  • David Vanderson — Racket for a networked multiplayer game

    I'll talk about using Racket features like easy serialization, threads, and eventspaces to smoothly go from a toy prototype to a playable networked game.

    David Vanderson has been a professional software developer for 10 years. He stumbled onto Racket a few years back and recently was inspired by the game Artemis to make a coop game in Racket.

  • [slides] [code] [video]

RacketCon is a public meeting for everyone interested in Racket: developers, contributors, programmers, educators, and by-standers. It is an opportunity for all members of the community to come together to share plans, ideas, and enthusiasm. RacketCon will enable the entire Racket community to mingle: to update each other, to exchange ideas, to collaborate, and to help shape the future of Racket.



Matthew Butterick



Previous years: