Seventh
Seventh
Seventh
Seventh
RacketCon
RacketCon
RacketCon
RacketCon
Seattle 2017
Seattle 2017
Seattle 2017
Seattle 2017
(seventh RacketCon) is the meeting for everyone interested in Racket—a general-purpose programming language that’s also the world’s first ecosystem for developing and deploying new languages.
RacketCon is for developers, contributors, programmers, educators, and bystanders. It’s an opportunity for all of us to share plans, ideas, and enthusiasm, and help shape the future of Racket.
Live Stream
Morning Live Stream Archive
Afternoon Live Stream Archive
Individual talk videos coming soon!
Keynote
Keynote
Keynote
Keynote
Dan Friedman
Dan Friedman
Dan Friedman
Dan Friedman
& Will Byrd
& Will Byrd
& Will Byrd
& Will Byrd
The Reasoned Racketeers
As Racketeers we are familiar with functional programming: each pure function we write produces one output value when given zero or more input values. What if we erase this distinction between inputs and outputs, and only think about the relationships between these values? We end up with relational programming, which lets us run our programs backwards: we can infer the “input” values that produce a desired “output” value. We can also reorder our code arbitrarily, without changing the meaning of our programs. By writing an interpreter for a subset of Racket using this approach, the interpreter inherits the ability to synthesize Racket programs from example inputs and outputs, among other interesting abilities.
We will demonstrate all of these features using miniKanren, a domain-specific language for constraint logic programming that is itself embedded in Racket.
Daniel P. Friedman is Professor of Computer Science at Indiana University. He is co-author of The Little Schemer, 4th ed., The Seasoned Schemer, The Reasoned Schemer, 2nd ed., The Little Prover, Scheme and the Art of Programming, and Essentials of Programming Languages, 3rd ed., all published by MIT press.
William E. Byrd is a Research Assistant Professor in the School of Computing at the University of Utah. He is co-author of The Reasoned Schemer, 2nd ed., and runs weekly online hangouts on miniKanren and relational programming. Will is also interested in the intersection of programming languages and biology. Ask him about the scanning tunneling microscope (STM) he is building.
Venue
For the first time this year, RacketCon happens in Seattle. We’ll be at Mary Gates Hall on the University of Washington campus. We thank Emina Torlak and the UW School of Computer Science & Engineering for hosting us.
Register
Early bird $75 individual · $45 student (until September 16)
Standard $100 individual · $60 student (after September 16)
Buy your ticket at Eventbrite.
RacketCon attendees also get a fantastic group rate at the beautiful & convenient Hotel Deca.
Speakers
Slides
Racket is more than a programming language. It is a programming language for making new languages. In fact, it is a programming language for making languages for making movies. Video is a language made from the sweat and parenthesis provided by the Racket ecosystem. It integrates into Racket from concept to final rendering. Come for the video demos, stay for the language tower.
Leif Andersen is a PhD student at Northeastern University and a core Racket developer. She is interested in compilers, low-level performance tools, creative and unusual DSLs, and the interactions between programming languages and their ecosystems. Mix these in a pot and Video pops out.
The universe library of Dr Racket is interesting in its use of state and the contracts of the functions of the main loop (big-bang) are particularily apropos in the field of robotics. In this talk we will present a layered approach for teaching high school students about Kalman filtering using the universe teachpack. The approach develops the functions for one-dimensional movement both for exact motion and inexact motion. One-dimensional particle systems are introduced and then the model is extended for the full Kalman filtering algorithms using matrices. In the process, students learn how to develop physical models for their objects using standard trignometric and algebraic ideas. Models are extended to include two-dimensional models.
Dan Anderson teaches Middle School and Upper School computer science courses at Viewpoint School. Mr. Anderson received his B.S. in Physics from U.C.L.A. and his M.S. in Building Systems (Civil Engineering) from Colorado University at Boulder. Before he started teaching he was a photovoltaic manufacturing engineer for Solec International.
His teaching methodology uses programming languages to communicate increasingly abstract concepts to children from 7th grade through 12th grade. His courses are designed to substantially augment a student’s comprehension of topics in mathematics and science. He uses the HTDP curriculum for his first year of instruction and he has added material to teach Virtual Reality and Artificial Intelligence courses for students on top of that foundation.
Anthony Pineci is a high school student in the 12th grade at Viewpoint School. He has been a student of Dan Anderson since 7th grade. He has experience in machine learning, writing the code for a neural network and using it to predict the outcome of the March Madness basketball bracket. He also has gained knowledge about kalman filtering and particle filters in implementing algorithms for self-driving cars, and gained experience teaching when helping other students write the same code.
You can use the functional programming techniques that you’re familiar with from Racket to write mathematical proofs. An upcoming book in the spirit of “The Little Schemer” will demonstrate how to do this, and tell you how to write your own proof system in Racket. This talk is a little taste of #lang pie, where programming and proving meet.
David Christiansen is a postdoc at Indiana University. In the past, he wrote most of the metaprogramming features and much of the interactive environment for Idris, a language with dependent types. Together with Dan Friedman, he is a co-author of an upcoming book on dependent types in the tradition of The Little Schemer.
With the rise in adoption and decrease in price of single-board computers, high-level languages like Racket can find good use in embedded scenarios which are not real-time. Features of the language support all stages of development with few downsides.
Deren Dohoda is the Engineering Manager at Pion Inc and has worked at all phases of product development, deployment, and support for 17 years.
Slides
What can we gain by looking at deep learning through the lens of functional programming? This question has gained attention over the last few years as increasingly complex neural network architectures are developed. I recently started developing a framework for specifying and training neural networks in Racket. In this talk, I’ll give a report on the project and invite discussion on future work.
Charles Earl has enjoyed programming in Lisp since the ‘80s. He now works as a data scientist at Automattic–the parent company of WordPress–building systems that use machine learning and natural language processing.
Slides
Testing in Racket can be downright joyful. Submodules and RackUnit make simple unit tests easy and quick to write, even in an unfamiliar codebase. But Racket’s testing story has more than a few holes when it comes to more complex tests. This talk discusses the current state of Racket’s testing ecosystem and presents a toolkit of packages to improve it. The toolkit packages add support for unit testing side effects with mocks, integration testing with fixtures, and abstracting over tests with composable first-class assertions. The packages are for the most part independent but designed to work together, and are built on top of a few general purpose libraries that can be used for non-testing purposes. There’s far more work to be done however, and this talk highlights what other forms of testing aspiring Racketeers ought to write packages for so I don’t have to.
Jack Firth is a software engineer at Google, primarily working on Google’s continuous integration and testing infrastructure and platforms. His interests include domain specific languages, distributed systems, and figuring out how to stop software from breaking all the time. He also likes punching things.
Slides Source
Slideshow is a programming language for producing presentations. It’s extremely powerful, and has great tooling, but it’s anything but simple, even for experienced Racketeers. I present “slideshow/simple”, a language inspired by markdown and a tool called “sent” that simplifies the creation of DWIM presentations, for when you just need to put something on screen without a lot of fuss.
Andrew Gwozdziewycz is an engineer at Heroku focused on metrics and operations for customers. Since his coworkers think Racket “has too many parentheses”, or is “too complicated”, or just flat out say, “huh?”, he’s forced to use much lesser languages–mostly Go–which he’s definitely not a fan of.
Slides
Do you enjoy automating with shell scripts, but find you need to toss out your Bash implementation in favor of using a “real” programming language as your script grows? Do you find yourself writing in Racket wishing you could throw down a quick pipeline of five processes without several lines of port and process juggling? Do you wish your interactive Bash shell were more like a Racket repl, or that your Racket repl were more like Bash? In this talk I describe my solution to these problems and more: Rash, the shell language for Racket.
William Hatch is a PhD student at the University of Utah, with interests in language extensibility, DSLs, and education. He loves Unix shells, and does most of his computing in a terminal emulator. In his spare time he enjoys music, yo-yoing, orange juice, and relaxing at home with his wife.
Slides
Racket, as a language, excels at and encourages a style of linguistic abstraction using metaprogramming. One of the most potentially useful tools to a metaprogrammer is intimate knowledge of expressions’ types, but existing general purpose, statically typed languages do not make that information easily accessible to the macro writer. This talk presents an early, experimental version of Hackett, an embedding of a Haskell-style type system in Racket’s macro system. Hackett attempts to provide a robust typechecker with friendly, powerful type inference for general-purpose programs that simultaneously exposes that information to Racket’s ordinary macro-writing facilities.
Alexis King is a software engineer at CJ Affiliate, primarily writing Haskell and generally encouraging functional programming. In her free time, she spends time thinking about types, macros, programming languages, and making friendly software.
Slides
In my computer architecture course, we study the full stack of CPU design from basic components (like adders) through microarchitecture, microcode, IO & interrupt systems, and through assembly using the MIC-1 by Tanenbaum. Students use tools for simulating the CPU, compiling the microcode, and assembling the macrocode. In previous years, I used a C-based suite (3779 LOC) which was very painful to use and maintain. For my most recent offering, I rewrote all of the tools in Racket (with 55% less code, including an extensive test-suite and more features!) In order to do this well, I wrote a general purpose hardware description DSL in Racket with three different backends, including compilers to C and LLVM IR. In this talk, I’ll discuss how to design compilers and DSLs like this in Racket and give a brief explanation of some fun microarchitecture points.
Jay McCarthy can’t fathom not using one of his favorite languages (C, Coq, and Racket—in reverse order of favor) in his classes. Since he already taught this course using a C simulator, he was forced to write an HDL in Racket. Next year, I guess he’ll be doing Coq-based verification of circuits. *shudder* When he’s not writing Racket programs, he is a core Racket developer, associate professor at UMass Lowell, and a very happy father.
Slides
In massive programming courses, automated hint generation offers the promise of zero-cost, zero-latency assistance for students who are struggling to make progress on solving a program.
In this talk, I will describe a robust hint generation system for Racket programming assignments that extends the hint coverage of the mutation-based approach using two complementary techniques. A syntax checker detects common syntax misconception errors in individual subexpressions to guide students to partial solutions that can be evaluated for the semantic correctness. A mutation-based approach is then used to generate hints for almost-correct programs. If the mutation-based approach fails, a case analyzer detects missing program branches to guide students to partial solutions with reasonable structures. Our system itself is implemented in Racket. We utilize Rosette, a solver-aided language embedded in Racket, as a constraint solver to prove program equivalence.
After analyzing over 75,000 program submissions and 8,789 hint requests from UC Berkeley’s introductory computer science course, we found that using all three techniques together could offer hints for any program, no matter how far it was from a correct solution. Furthermore, our analysis shows that hints contributed to students’ progress while still encouraging the students to solve problems by themselves.
Phitchaya Mangpo Phothilimthana is a PhD student from UC Berkeley working with Professor Ras Bodik. Her PhD thesis focuses on designing programming models and using program synthesis to build smart compilers for unconventional hardwares (from an ultra-low-power spatial architecture to programmable network cards). She is also interested in applying program synthesis to other domains, including educational tools.
Slides
Three things that don’t normally go together are intuitionistic type theory, Racket as a teaching language, and a required sophomore course in logic and computation. I’ll describe how I’ve been teaching the course by having students code a small proof assistant (Proust) in Racket and using it to do their homework. Its construction proceeds in stages through propositional and predicate logic, going as far as recursive functions on natural numbers before a lateral transition to Coq.
Prabhakar Ragde has been a professor of Computer Science at the University of Waterloo since 1988. He first encountered Racket fifteen years ago when looking for a way to introduce his young daughters to CS. Now more than two thousand students a year take Waterloo courses that use Racket to introduce them to CS, and he can’t go a day without using a lambda.
Slides
Racket is the official language at Biomantica Inc, the biotech startup I co-founded. I had a little experience with it in advance and my cofounder learned it from scratch as we worked. In this talk we’ll go over why we chose it, the pros and cons we’ve found, the process of learning Racket on the job, and thoughts on how it worked out in practice.
David Storrs started programming professionally when Netscape and IE were duking it out for market share. He’s done a lot of web+devops work, and at least a little of most other types of programming–financial software, medical software, video games, etc. He’s co-founder of Biomantica Inc, a biotech software company whose initial product focuses on big data transport between scientific or corporate collaborators who may be continents apart.
Slides
Want to embrace the power of Racket in the ugly JavaScript world? RacketScript can compile Racket (ok! not all of it) to JavaScript. I’ll will demonstrate how the RacketScript compiler works, currently implemented features of Racket, and how it differs from Racket and other Racket to JavaScript compilers.
Vishesh Yadav is a Software Engineer at Nutanix where he works on distributed storage systems. He started hacking in Racket while pursuing M.S. in Computer Science from Northeastern University, where he also got interested in programming languages.
Saturday Oct 7
8:30–9:30 Breakfast & Registration
9:30 Welcome
9:30–10:30 Keynote: Dan Friedman & Will Byrd: The Reasoned Racketeers
10:30–11:00 Break
11:00–12:00 Deren Dohoda: Prototype to Production: A Racket Experience Report
Leif Andersen: Movies as Programs: The Story of a Racket
Jack Firth: A RackUnit Toolkit: Growing Racket’s Testing Ecosystem
12:00–14:00 Lunch
14:00–15:00 Jay McCarthy: Teaching and Designing Microarchitecture in Racket
Mangpo Phitchaya Phothilimthana: High-Coverage Hint Generation for Racket Programming Assignments
Prabhakar Ragde: Proust: A Nano Proof Assistant
15:00–15:15 Break
15:15–16:30 David Christiansen: A Little Bit of Dependent Types
Vishesh Yadav: RacketScript
David Storrs: Racket and Business
Alexis King: Hackett, a Haskell for Racketeers
16:30–16:45 Break
16:45–18:00 Charles Earl: Deep Learning with Racket: An Experience Report
Dan Anderson and Anthony Pineci: A Methodology for Teaching Kalman Filtering to High School students
William G Hatch: Rash: Reckless Shell Programming in Racket
Andrew Gwozdziewycz: Simplifying Slideshow for DWIM Presentations that Stick, Quick
Saturday evening
19:00–23:00 Food & drink at local brewpub Elysian Fields
Sunday Oct 8
New for (seventh RacketCon)—Racketeer Office Hours!
The day begins with an open discussion about the state of Racket, happenings in the last year, and plans for the future. The floor is open to any questions and comments you may have.
Following this discussion are office hours proper. Bring your projects to get assistance from experienced members of the community, start new ones inspired by what you saw on Saturday, or pick from a list of suggested tasks to help us improve Racket!
9:00–10:00 Breakfast
10:00–11:00 Town Hall Meeting
11:00–11:45 Racket Development Mini-Tutorials
Ben Greenman: Contributing to the Racket codebase
Stephen Chang: Packaging Racket projects
Spencer Florence and Jesse Tov: Scribbling documentation
11:45–12:00 Project Introductions
12:00–13:00 Lunch
13:00–open Office Hours / Hackathon
Task Ideas
Sponsors
Friendly Environment Policy
The Racket community aims to improve the world through programming. It 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. The organizers want to encourage an equally open exchange of ideas at RacketCon, the community’s in-person meet-up.
This spirit requires an environment that enables all to participate without fear of personal harassment. We define harassment as unwelcome or hostile behavior, that is, behavior that focuses on people instead of ideas. The ACM’s anti-harassment policy lists a variety of specific unacceptable factors and behaviors. The organizers consider responses such as “just joking,” or “teasing,” or being “playful” as unacceptable.
Anyone witnessing or subject to unacceptable behavior should notify one of the RacketCon organizers (Matthew Flatt, Vincent St-Amour).
If a participant engages in harassing behavior, the conference organizers may take any action they deem appropriate, from a warning of the offender to an expulsion from the conference [without refund].
[The wording of this policy is directly derived from that of the SNAPL conference, with thanks.]
Previous RacketCons
“Everyone has a universe of beautiful things in their head. Maintaining a nurturing environment for conflicting interests is important. And Racket has it. So if you worry that you do weird and insignificant stuff, I tell you that the world has taught you wrong and Racket is your refugee shelter. Please do not hesitate.”
—Satisfied Customer, RacketCon 2016