Racketfest 2021 Amateur Night logo


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.

Time & Place

The 2021 Amateur Night edition of Racketfest will be spread over two days, in two 4-hour blocks:

Night One
Friday, March 26, 2021 from to Central European Time.
Night Two
Saturday, March 27, 2021, again from to Central European Time.

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 organizers@racketfest.com.

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 organizers@racketfest.com


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.

Night One: March 26, 2021

Doors open
  • Stephen de Gabrielle: A #lang for bibliographies?
  • Mike Sperber: 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.

  • Jens Axel Søgaard: New work with metapict
  • Ryan Culpepper: 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.

  • Oliver Caldwell: 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!

  • Daniel Brunner: title TBA
  • Alex Harsányi: ActivityLog2: A Racket-powered fitness app
  • Lîm (Danny) Tsú-thuàn: Macro as type

    We build our own environment for a type system, but reusing macro environment is possible. In this talk, I present how to convert programs to do so, and show possibilities, limitations, and future works.

Night Two: March 27, 2021

Doors open
  • Tjitze Rienstra, Ranked programming with Racket
  • Suzanne Soy: 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:

    1. adding/reading bindings to/from the environment (let, define-struct, anaphoric, match, …)
    2. changing the order of execution (if, match, for/list, …)
    3. syntactic sugar (infix operators, anything written using syntax-parse’s ~datum or ~literal, identifier prefix/postfix annotations, …)
    4. optimisations, i.e. semantics-preserving compile-time transformations of the program
    5. tracking and propagating annotations on the code (types, source locations, tooltips, …)

    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:

    1. first-class environments (an extra env parameter threaded through all functions)
    2. lazy by default, continuations, effects
    3. #%app, extensible parser, polysemic bindings (in both as a (let x = v in body) keyword and a (for x in list do body) keyword), first-class sub-expressions
    4. markers around values that should be computed at compile-time, and a perfectly hygienic rewriting metalanguage that is closer to Coq’s tactics than to macros.
    5. same: markers to track what should be done at compile-time

    This talk will give an overview of how making some concepts first-class allows most macros to be rewritten as functions.

  • Jesse Alama: 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.)

  • Sorawee Porncharoenwase: 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.

  • Matthijs de Jonge: 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.

  • Joel Dueck: Beeswax: An Early-Stage Templating Language

    Many Racket templating facilities involve using read/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.

  • Eric Eide: Recent work on Xsmith
Round Four


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.

Diversity Ticket

To apply for a diversity ticket, please write to the organizer (Jesse Alama) at organizers@racketfest.com.


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.

Sponsor Racketfest 2021 Amateur Night

Professionalism Policy

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 just joking, 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.)