Friday, November 5th
Friday, 2:00PM EDT
Virtual Biergarten
Saturday, November 6th
Saturday, 10:00AM EDT
Stephen R. Foster, PhD &
Lindsey D. Handley, PhD
Racket + React + Unreal = CodeSpells
This talk is a tale of three ecosystems. Racket is finely tuned for creating novel programming languages. Likewise, React is tuned for creating novel user interfaces, and Unreal is tuned for creating novel 3D worlds and games. CodeSpells is a platform built atop all three, allowing for seamless communication between each of these three runtimes. Why? We’ll demonstrate through visually compelling examples how we are using CodeSpells to create educational technologies, novel programming interfaces, and immersive 3D games. We hope that you’ll leave this talk knowing how you too can benefit from our open-source tools and examples. slides (7z)
Bio: Dr. Stephen R. Foster is a researcher, author, and co-founder of multiple social enterprises with a mission to teach teachers how to teach coding. A fierce advocate for the power of coding to bring about worldwide change, he has himself coded to generate peer- reviewed scientific results, coded to build educational technology solutions for teachers and students, and coded to bootstrap educational startups and non-profit organizations out of thin air. All in all, these countless lines of code have all been in service of a single vision: to establish coding education as a basic human right across the globe. In short, he codes to teach coding.
Dr. Lindsey D. Handley is a researcher, entrepreneur, teacher, and author. For the last 10 years, the National Science Foundation has funded the research, design work, and the social enterprises that she operates. As a skilled coder, data scientist, and biochemist, she envisions a world in which we no longer suffer from a worldwide shortage of scientific fluency. To this end, she fights for the unification of science and education on two fronts: the use of science to improve education; and the improved teaching of science worldwide. In short, she applies science to design better ways of teaching science. Together, they are the co-founders and leaders of ThoughtSTEM and -- two social enterprises that have touched the lives of hundreds of thousands of beginning coders worldwide. They are also the co-authors of Don’t Teach Coding: Until You Read This Book, a book that uses Racket to illustrate their language-oriented educational philosophy.
Saturday, 11:00AM EDT
Saturday, 12:30PM EDT
Hazel Levine
Slicing Tabular Data with Sawzall
dplyr, a data manipulation library for the R programming language created by Hadley Wickham, is a popular way of managing tabular data for data analysis purposes. By speaking the consistent language of tidy data, dplyr is able to achieve high levels of ergonomics, and manage complex data analysis tasks in a compositional, functional style.
We present a new Racket library, Sawzall, inspired heavily by dplyr and the relational algebra. Sawzall builds on top of Alex Harsanyi’s data-frame package, but provides a set of operations that are designed to compose and avoid mutating the original data-set, leading to a natural style of data manipulation following the idea of "do this, then that". We demonstrate the approach, implementation, and results, with a wide range of example data science tasks.
Bio: Hazel Levine (they/them) is a second-year undergraduate at Indiana University, studying computer science (with a specialization in programming languages) and theoretical mathematics. They are particularly interested in language design and ergonomics, aiming to create tools bridging the gap between concepts typically left in academia and the everyday programmer.
Saturday, 1:00PM EDT
Sid Kasivajhula
Qi: A Functional, Flow-Oriented DSL
One way to think about a function is as a disjointed logical sequence, which we can depict as a flowchart. This is the usual model we employ when writing functions in a typical programming language (or even an atypical one like Racket), where the absence of constraints gives us a lot of flexibility but also the ability to shoot ourselves in the foot by doing something silly.
Another way of thinking about a function is as a flow of energy, more like an electrical circuit. This model, enabled by the Qi DSL, allows us to phrase computations in terms of flows which are simply functional building blocks with an arbitrary number of inputs and outputs that can be composed in series and in parallel to yield other flows. With such flows, we can express many common patterns more economically and more clearly than in the usual ways, eliminating repetition and boilerplate, and deriving all of the power of the functional paradigm.
Bio: As the shadowy lurker in the ramparts of, Sid is indeed, as many have suspected, none other than the whispered-about-in-hushed-tones "Count Vajhula," vampirous author of Racket and Emacs packages. When not writing code, Sid spends his time working on fundamental solutions to social and existential problems, all of which he believes can be addressed by transitioning from an economic system based on supply and demand, to an economic system based on attribution, which would preserve and nurture our humanity, rather than feed off of and seep it as capitalism does. Struggling to bring attention to these ideas, Sid came to Racket hoping to write tangible prototypes to demonstrate the promise of these proposals. He’s authored a few packages along the way, including the cli language for writing command line interfaces and the relation package for type-generic relations and operators.
Saturday, 1:30PM EDT
Saturday, 2:30PM EDT
Bogdan Popa
Declarative GUIs
Racket has an extensive standard library that even includes support for creating cross-platform graphical user interfaces. Its GUI library is flexible but imperative and verbose, thanks to its reliance on the class system. In this talk, I will present a new library, built atop racket/gui, for creating GUI applications in a declarative style. I will review its advantages and disadvantages compared to racket/gui and demo building a small UI with it. slides (github)
Bio: Bogdan is a software developer based in Cluj-Napoca, Romania. He is the author of several Racket libraries, and he runs an e-commerce business built on top of Racket.
Saturday, 3:00PM EDT
Ryan Culpepper
Implementing HTTP/2 with Events, Objects, and Ports
In this talk I’ll introduce http123, a new HTTP client library that supports HTTP/2, and give a high-level overview of some of the interesting parts of its implementation. These include the use of synchronizable events for multiplexing streams and communication with user threads; the use of objects and basic OO design, for example to implement the application-level state machine; and the use of custom ports to propagate error information to users.
Saturday, 3:30PM EDT
Saturday, 4:30PM EDT
Sage Lennon Gerard
On Integrating Racket with GNU Mes
GNU Mes helps one reproduce an exact operating system in terms of auditable binaries. Mes integrates with Guile such that GNU Guix may leverage these benefits. By integrating Mes with Racket, we can boot directly to a Rash shell on a fresh installation. In this system, the full power of a trusted Racket installation is omnipresent and available immediately after login. Sage explains what he has done to reach this goal, and shows what remains to be done.
Bio: Sage is a computer scientist by hobby and trade. His contributions to Racket include aiding its relicensing effort, publishing twenty-one packages released under generous licenses, and researching alternative programming practices. His Vulkan integration won "Best Package" in the 2019 Racket Game Jam, and he maintains a home lab. He is currently researching how to create a Racket-centric operating system using his dependency manager, Xiden.
Saturday, 5:00PM EDT
Ben Greenman
Fun and Games 2
Last summer was a excellent season for fun, games, and macros in Racket. Ben will tell us all about the recent Syntax Parse Bee and present a showcase of contributed macros.
Bio: Ben is a postdoc at Brown University and a fan of the 2019 Standard Fish competition. He is seeking ideas for a summer 2022 community event.
Saturday, 5:30PM EDT
Sunday, November 7th
Sunday, 12:30PM EST
Sam Tobin-Hochstadt
The State of Racket
Sunday, 1:00PM EST
Racket Management
Racket Town Hall
Please come with your big questions and discussion topics.
Sunday, 1:30PM EST
Sunday, 2:30PM EST
Jay McCarthy
C-exprs and L-exprs, oh my!
S-expressions impose a uniform grouping discipline on syntax that makes them easy to parse and manipulate. They are also flexible for adding new syntactic forms to a language. Languages, like C, JavaScript, Haskell, and Python, have a variety of different rules for grouping and parsing syntax. These rules can produce beautiful and information dense syntax. They can also be hard to comprehend and internalize, as well as rigid and difficult to customize for particular programs. C-expressions are an attempt to get the beauty and information density of C-like languages, without sacrificing comprehension and flexibilty. L-expressions have the same goal, but try to follow the model of Python & Haskell.
Bio: Jay is a perfectionist misanthrope that wants everything to be perfect.
Sunday, 3:00PM EST
Matthew Flatt
Shrubbery Notation
Shrubbery notation is similar to S-expression notation, but instead of generating fully formed trees, it is intended to partially group input for further enforestation by another parser (e.g., as in Honu). The notation is line- and indentation-sensitive, and the parsed form of a shrubbery imposes grouping to ensure that further parsing is consistent with the shrubbery’s lines and indentation.
Bio: Matthew Flatt is a professor at the University of Utah and one of the main developers of Racket. He has worked primarily on Racket’s macro system, run-time system, and compiler.
Sunday, 3:30PM EST
Sunday, 4:30PM EST
Matthew Flatt
A Shrubbery-Flavored Rhombus Experiment
This talk will describe a #lang rhombus experiment that combines shrubbery notation for its reader-level syntax with Honu-style enforestation in its macro-expansion rules. The prototype demonstrates how shrubbery notation is meant to work, and it serves as a further proof-of-concept for macro expansion with operators and infix notation. It also incorporates various ideas from the Rhombus brainstorming wish list, where the intent is to show how notation interacts with possible improvements.
Bio: Matthew Flatt is a professor at the University of Utah and one of the main developers of Racket. He has worked primarily on Racket’s macro system, run-time system, and compiler.
Sunday, 5:00PM EST
Rhombus Discussion
We will have a jam session about Rhombus.
Sunday, 5:30PM EST
Previous RacketCons