Racketfest is a time to learn & share what’s great about the Racket programming language and its philosophy of language-oriented programming. The next edition will be held on two evenings (or mornings, or afternoons, depending on where you are): Friday and Saturday, March 26 and 27, 2021, in Gather.
The 2021 Amateur Night edition of Racketfest will be spread over two days, in two 4-hour blocks:
Racketfest is traditionally
euro-centric, but this year, thanks to doing the event online, we are able to expand the offering. The should make it possible (or, at least, not wholly unreasonable) for those in the Americas, East Asia, and Australia/New Zealand to participate as well.
Racketfest 2021 Amateur Night will feature primarily short talks. If you want to give a talk, please let the organizers know by March 15, 2021. Just send a brief email to
The idea behind an
amateur night is to step up and show something you can do in Racket. If you do it in Racket, it counts! Don’t be shy! Just send a note to the organizers with a title and, if relevant, a time preference. Record a video, screencast, audio, or a Slideshow presentation. Be ready to come to the meeting and get some feedback from your fellow Racketeers.
If you just want to spontaneously show up and show something, that’s OK, too. Get feedback on that Racket project you’ve been working on, sound off on what you’d like to do with Racket, ask for help (and get live feedback from top Racket talent!). The sky is the limit.
We will have a standing art gallery for those who have made some art in Racket. To submit your piece, send email to
Make sure to register! The event is online in Gather, but you need to have a ticket to attend. The exact Gather URL to join will be made available here, and by email to registered participants, shortly before the event.
All times are Central European Time (CET).
Refresh this page! As plans develop, this list will be fleshed out.
Teaching Language Infrastructure—Work to Do!
The HtDP and DeinProgramm languages are wonderful tools for teaching—they support the pedagogy of systematic design, give excellent feedback, and DrRacket is an uncluttered environment appropriate for beginners.
Yet, the user experience has fallen somewhat behind: The test-results window is clunky, Check Syntax isn’t concurrent with editing, links to documentation don’t quite work. This is all despite the fact that DrRacket in principle can do these things well.
Remedying these problems means digging deep into historically grown code that is hard to change: I’ll talk about what the issues with the code are, what I’ve done recently both to improve the general infrastructure and to make the teaching languages use it, and what might be in store.
New work with
The database library, the FFI, and Racket CS
One problem the Racket database (db) library has faced is that an FFI call blocks all Racket threads from running, so a long-running query on a sqlite3 or ODBC connection can make an entire Racket application or server unresponsive. The old fix was to run queries in a separate place, but this has high overhead. Racket CS supports an alternative: running (restricted) Racket code in OS threads with shared memory. I’ve recently added support for this alternative to the db library; it requires some changes to the code, but it seems to have much lower overhead.
Conjuring up a Racket in Neovim with a hint of Fennel
Come with me on a journey into unfamiliar territory for Lispers, we’re going to interact with a Racket REPL from Neovim! Then we’ll take a peek behind the curtain at the other Lisp that drives the whole experience (no Vim Script here!) and the other Lisps we can talk to. I hope you enjoy this Lisp polyglot buffet!
Ranked programming with Racket
Why do we need macros? First-class environments as an alternative.
Macros are used to abstract over patterns in the code, from the elimination of repetitive boilerplate to the automatic generation of complex code.
This is exactly the job of functions: packaging a frequently-used idiom into a reusable library function. We use macros to write abstractions that cannot be written as functions:
~literal, identifier prefix/postfix annotations, …)
These concepts can only be manipulated by macros because they are second-class citizens that cannot be assigned to variables, passed around by functions, and manipulated at run-time. The following features would allow these concepts to be within the reach of functions:
envparameter threaded through all functions)
#%app, extensible parser, polysemic bindings (
inboth as a (
let x = v in body) keyword and a (
for x in list do body) keyword), first-class sub-expressions
This talk will give an overview of how making some concepts first-class allows most macros to be rewritten as functions.
A macro for avoiding TODO code in production
In the heat of development, sometimes you can’t be bothered to flesh out the definition of an annoying helper function.
I’ll get to that later. So you plug in a wildly incomplete dummy value and move on to to more important things. How can you be sure that you return to that stub, and do the work that needs to be done? Mark it as a TODO item! Here’s are some simple macros that will help you to identify these items and make sure that they don’t go out into production. (Or, if they do, you’ll be notified.)
(Not to be confused with David Thrane Christiansen’s todo-list package.)
What’s new in Rosette 4.0
We are working on Rosette 4.0! This version has a new technical core, which is faster and supports new features, including a more powerful synthesis library. In this talk, I will give a quick tour of the upcoming version.
Live coding with rs—MIDI sequencing in Racket
rs is a live coding tool that lets you sequence MIDI instruments using Racket. This talk will show you can use it, how it works and what some of the benefits are of using the programming language we all know and love for making music.
Beeswax: An Early-Stage Templating Language
Many Racket templating facilities involve using
eval on text files loaded at runtime. Beeswax is a Pollen-friendly DSL that turns document templates into normal Racket modules and functions. I’ll talk about why this might be great, how I made it, and things I still haven’t figured out.
Recent work on Xsmith
Use the following link to register now:
A ticket costs 20 USD (applicable taxes, depending on where you buy the ticket, may make the final price more than this).
We have only 100 seats! If you’d like to come, consider getting a ticket earlier rather than later.
To apply for a diversity ticket, please write to the organizer (Jesse Alama) at
The following people are generously supporting Racketfest:
Racketfest needs your help! Even though this year’s Racketfest is online and has significantly lower costs compared to a real-world event, Gather is not free. Any help would be appreciated.
In the past, Racketfest has also given out a number of diversity tickets to make it possible for traditionally underrepresented groups to get into the Racket community. Sponsoring a diversity ticket is a great way to make a difference.
Racketfest borrows from the spirit of Racket, whose community aims to improve the world through programming. Racket started with the goal of introducing everyone to the wonderful world of program design, with a spirit of full inclusion and no emphasis on any specific group. Over time it has grown into a full-fledged professional community with a well-known reputation for helpfulness and openness on its on-line communication channels. We want that openness and friendliness to extend to Racketfest.
For this to happen, Racketfest needs to be a space that where everyone can participate without fear of personal harassment. Harassment is understood here as unwelcome or hostile behavior, which, in turn, we understand as behavior that focuses on people instead of ideas. The ACM’s anti-harassment policy lists some unacceptable behaviors. Responses such as
only teasing, or being
playful, are unacceptable.
In short, be professional and kind. We’re all here to learn and share.
Anyone witnessing or subject to unacceptable behavior should notify the Racketfest organizer (Jesse Alama).
If a Racketfest participant engages in harassing behavior, the Racketfest organizer may take any action they deem appropriate, ranging from a verbal warning to expulsion (without refund) from the conference.
(The wording of this policy is derived, with permission & thanks, from that of RacketCon, which in turn was derived from the SNAPL conference.)