Leandro Facchinetti
Bespoke domain-specific languages isolate software projects into single-maintainer silos, while intellectual cruelty among Racket leaders drove contributor Leandro Facchinetti to quit academia entirely.
AI-assisted summary of Racket: Why I Think It’s a Great Language, and Why I’m Not Using It Anymore — original source. Check the original for full context.
Source published:
Key ideas
- Leandro Facchinetti discontinued his extensive use of Racket despite considering it perhaps the best-designed programming language he has ever encountered. (0:00)
- Facchinetti argues that language-oriented programming isolates software projects by creating niche domain-specific languages rather than leveraging familiar host ecosystems like JavaScript, Ruby, or Lua. (4:26)
- Toxic behaviors and interpersonal friction among senior academic leaders in the Racket ecosystem directly influenced Facchinetti's decision to drop out of his PhD program and leave the community. (6:26)
Detailed notes
## Background Published on YouTube by Leandro Facchinetti on January 3, 2021, this video reflects on his years of deep involvement with the Racket programming language. The description provides timestamps alongside links to related technical talks, his open-source Racket packages, academic projects, and relevant community literature.
## TL;DR Former PhD student Leandro Facchinetti explains why he stopped using Racket despite considering it the best-designed programming language he has ever encountered. While he deeply praises its S-expression syntax, unmatched macro system, robust documentation, and creative versatility, he ultimately rejected its core philosophy of language-oriented programming, arguing that bespoke domain-specific languages isolate collaborators and undermine human-to-human communication. Furthermore, alienating and toxic behavior from senior leadership figures in the Racket and academic communities soured his involvement and contributed to his decision to leave academia altogether. Though he no longer uses it for real-world projects, he still endorses Racket as an intellectually enriching exercise for programmers.
## Atmosphere & style The presentation is candid, measured, and conversational, adopting an informal vlog-style format that stands apart from standard technical walkthroughs. Leandro speaks with thoughtful introspection, balancing genuine reverence for the language's intellectual elegance with an undercurrent of sobering disillusionment. The emotional arc moves from nostalgic technical appreciation to uncomfortable vulnerability as he recounts abrasive encounters with academic leaders, giving the video a bittersweet, reflective weight.
## Bulletin - [00:00](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=0s) Leandro Facchinetti discontinued his extensive use of Racket despite considering it perhaps the best-designed programming language he has ever encountered. - [04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) Facchinetti argues that language-oriented programming isolates software projects by creating niche domain-specific languages rather than leveraging familiar host ecosystems like JavaScript, Ruby, or Lua. - [06:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=386s) Toxic behaviors and interpersonal friction among senior academic leaders in the Racket ecosystem directly influenced Facchinetti's decision to drop out of his PhD program and leave the community.
## Key takeaways - [00:00](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=0s) Racket offers unmatched precision, compactness, and clarity for expressing computational ideas, underpinned by unambiguous S-expression syntax. - [00:56](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=56s) Facchinetti built significant tools in Racket, including pollen-component, css-expr, a cryptographic DSL, and foundational program analysis research. - [02:33](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=153s) Racket features a world-class compile-time macro system, exceptional documentation, and strong performance boosted by modern virtual machines like Chez Scheme. - [02:33](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=153s) Typed Racket served as an influential research precursor to modern gradual typing systems in mainstream languages, such as TypeScript. - [04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) Source code exists primarily to communicate computational intent to other humans, making hyper-customized domain languages a communication barrier. - [04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) For non-programmers, graphical interfaces and spreadsheets serve domain specialists far better than custom text-based domain-specific languages. - [04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) Embedded DSLs in mainstream languages benefit from established developer mindshare, debugging tools, and linters, whereas Racket DSLs remain isolated. - [04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) Creating bespoke languages in Racket frequently leads to projects maintained by a single person due to high barrier to entry. - [06:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=386s) Abrasive and condescending behavior from senior Racket creators and lab leaders alienated collaborators and instilled anxiety in graduate students. - [06:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=386s) Experiencing the toxic academic environment led Facchinetti to abandon his PhD and seek success outside of academia. - [06:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=386s) Despite leaving the ecosystem, Facchinetti still recommends Racket as an intellectual exercise to expand a developer's understanding of programming paradigms.
## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=0s) Introduction and High-Level Thesis
Leandro Facchinetti introduces his perspective on Racket, opening with an upfront summary to temper what he admits is a clickbait title. For several years, he used Racket almost exclusively, coming away with immense admiration for its architecture. As Leandro puts it, “I used to use Racket almost exclusively for a couple of years a few years ago and I think it’s a great language, probably the best designed language I have ever seen.” In his view, Racket gives developers the rare ability to articulate computational thoughts with unmatched precision, compactness, and clarity.
Despite that technical excellence, Leandro stopped using the language entirely. The shift stems from two fundamental issues: he has fallen out of love with the core philosophy of "language-oriented programming," and he encountered deeply disheartening interpersonal behavior among those in leadership positions. He feels the language diverges so drastically from mainstream software engineering norms that it isolates its users from other programmers, creating barriers rather than bridges. Furthermore, negative encounters with senior figures who shape both the language and the academic community surrounding it soured his desire to stay involved.
---
[00:56](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=56s) Leandro’s Backstory with Racket and What He Built
Leandro discovered Racket during his time as a PhD student. At the time, he harbored a keen interest in typography, prompting a fellow PhD colleague to recommend Matthew Butterick’s online book *Practical Typography*. Leandro fell in love with the book not just for its subject matter and prose, but for the engineering underlying it: Butterick built the book using Pollen, a publishing-oriented programming system created in Racket. This discovery sparked years of deep technical immersion, during which Leandro created and maintained multiple tools within the ecosystem:
```mermaid flowchart TD accTitle: Leandro Facchinetti's Racket Projects accDescr: Evolution of projects Leandro developed in Racket from web tools to PhD research.
subgraph Publishing ["Web & Publishing Ecosystem"] Pollen["Pollen System"] --> Comp["pollen-component<br/>(React-style components)"] Pollen --> CSS["css-expr<br/>(S-expression CSS preprocessor)"] end
subgraph Academic ["Academic & Core Contributions"] SDL["SDL<br/>(DSL for Cryptography)"] Yocto["yocto-cfa<br/>(Program Analysis)"] Core["Contributions to Racket Core & Packages"] end ```
His work stretched across web publishing and deep academic computer science. He authored `pollen-component`, which ported component-driven UI architecture reminiscent of React into the Pollen document ecosystem, as well as `css-expr`, an S-expression-based CSS preprocessor akin to Sass or Less. For his PhD qualifying project, Leandro built a domain-specific language tailored for cryptographers to mathematically formalize cryptographic schemes. Beyond creating packages and submitting upstream contributions to Racket and Pollen, he authored the preliminary work for what would have become his doctoral dissertation—a program analysis tool entrenched in advanced programming language theory—right before making the decision to leave graduate school.
---
[02:33](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=153s) Why Racket Is a Great Language
Leandro highlights Racket’s technical elegance, starting with its reliance on S-expressions. While acknowledging that Lisp-style syntax is divisive and frequently criticized, Leandro argues that it offers an unambiguous, clean substrate that becomes remarkably natural and rapid to read once mastered. Paired with this syntax is Racket’s world-class macro system, which lets developers rewrite programs during compilation steps with unparalleled expressive power. The ecosystem itself is robust: the runtime is consistently fast—accelerating further through efforts to re-base the core engine onto modern virtual machines such as Chez Scheme—and the documentation sets a gold standard for clarity, having been written and maintained by professional writers and educators.
```mermaid flowchart LR accTitle: Strengths of the Racket Platform accDescr: The key technical pillars that make Racket a compelling language.
subgraph SyntaxCore ["Language Design"] SExpr["S-Expressions<br/>(Unambiguous syntax)"] Macros["Macro System<br/>(Compile-time rewrites)"] end
subgraph ToolingEcosystem ["Support & Research"] Docs["High-Quality Docs<br/>& Beautiful Racket"] Typed["Typed Racket<br/>(Inspiration for TypeScript)"] Chez["Modern Backend Updates<br/>(Chez Scheme VM)"] end
SyntaxCore --> LOP["Language-Oriented Programming"] ToolingEcosystem --> LOP ```
As a programming languages student, Leandro was captivated by the research innovations incubated within Racket. Most notably, Typed Racket demonstrated how gradual typing could work in practice, ultimately serving as an inspiration for mainstream projects like TypeScript. Racket also supports unexpected creative applications, spanning GUI building, web backends, typesetting, generative art, and programmatic video editing. Tying all these strengths together is the grand ambition of language-oriented programming: instead of shoehorning problems into a general-purpose language, developers build custom languages tailored to specific problem domains to communicate directly with domain experts.
- **Foundational Literature:** Leandro considers Matthew Butterick's *Beautiful Racket* to be one of his favorite programming books of all time. - **Community Channels:** The official Racket mailing list provided rapid, exceptionally high-quality support from experienced language implementers. - **Expressive Macros:** Leandro cautions that while macros provide immense power, “they allow you to rewrite the program in the compilation steps which is super powerful, but at the same time can lead to code that no one else can read or maintain.”
---
[04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) The Limits of Language-Oriented Programming
Leandro’s departure from Racket began with a conceptual rejection of language-oriented programming. He roots his critique in the core ethos of software development: source code must communicate intent to other humans first, and to the computer second. Framing code as an art piece meant to be hung on a wall misses the point of software engineering; code exists so that peers can read, maintain, and expand it. When an engineer invents an entirely bespoke programming language for a problem domain, they inadvertently sever that communication line by requiring users to learn a whole new syntax and mental model.
```mermaid flowchart TD accTitle: Language-Oriented Programming vs Pragmatic Communication accDescr: Comparing the Racket isolated DSL approach to mainstream embedded alternatives.
subgraph RacketApproach ["Language-Oriented Programming in Racket"] RacketCore["Racket Host"] --> CustomDSL["Bespoke DSL"] CustomDSL --> SmallAudience["Tiny, Isolated Userbase<br/>Single Maintainer"] end
subgraph MainstreamApproach ["Pragmatic Embedded Alternatives"] HostLang["Mainstream Host<br/>(JS, Lua, Ruby)"] --> EDSL["Embedded DSL"] EDSL --> FamiliarTools["Pre-existing Tooling<br/>Broader Community Adoption"] end ```
If the objective is to communicate with non-programmer domain specialists—such as mathematicians or cryptographers—Leandro argues that GUIs, spreadsheets, and visual interfaces are far more effective than custom text-based languages. If code is strictly necessary, an embedded domain-specific language (EDSL) hosted inside an established language like JavaScript, Lua, or Ruby is vastly superior. In those environments, programmers already understand the base syntax, know the standard library conventions, and have mature linters and debuggers. Creating a DSL inside Racket carves a microscopic bubble inside an already small niche, demanding that collaborators accept a massive, alien ecosystem. As Leandro points out, this explains why so many Racket open-source projects end up maintained by only a single person.
- **Primary Role of Code:** “Let us all agree that programs should communicate ideas about what the computer should do to other people first, and the machine second.” - **The Pitfall of Isolation:** By deploying a DSL in Racket, developers force potential contributors to fully buy into an obscure platform rather than leveraging languages where thousands of contributors are readily accessible.
---
[06:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=386s) Cultural Friction and Toxicity at the Top
Beyond theoretical disagreements, Leandro experienced abrasive behavior from people in the upper echelons of the Racket hierarchy—the individuals who build the language, direct research labs, and define the culture. He describes leaders who were undeniably brilliant, yet compelled to display their intellectual superiority at others' expense. At a Racket conference dinner, one of the language’s creators used a conversation about higher education being a scam in the United States as an excuse to cross-examine their waiter with uncomfortable, cringe-inducing questions, putting the entire table on edge while the waiter politely endured it.
On another occasion, a language co-creator insulted Leandro's academic circle directly, dismissing an esteemed collaborator as a "doofus" and referring to educators at Leandro’s institution, Johns Hopkins University, as "a bunch of donkeys." Leandro noticed that graduate students working under these leaders lived in persistent anxiety and fear of their own advisors. Witnessing this toxic environment convinced Leandro to leave academia and abandon his PhD altogether. While he encountered deeply generous and kind contributors like Matthew Butterick and Jay McCarthy, the negative behavior at the top ultimately drove him away:
> “Spending time with these people is one of the reasons why I decided to drop out of the PhD and leave academia altogether, because if that's how it looks like to be successful in these communities, I think I prefer to try to be successful somewhere else.”
Despite choosing not to use Racket moving forward, Leandro still recommends the language as an intellectual exercise for anyone wishing to expand their understanding of programming paradigms. He encourages viewers interested in the human side of the ecosystem to read *Language-Oriented Programming in Racket: A Cultural Anthropology*, an interview-based book that explores the community's history and includes interviews with several community figures, including Leandro himself.
[08:27](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=507s) Conclusion and Wrap-Up
Wrapping up the discussion, Leandro points viewers to the video description for links to the referenced material, articles, and projects. He reflects that stepping in front of the camera for a personal, informal video essay is a bit out of the ordinary for his channel, but he felt it was important to talk through his journey with the language. As he puts it: “This is atypical for me doing this kind of vlog thing, but I wanted to share this experience because I think Racket is an interesting language, and I had some good and bad experiences that I wanted to share.” After sharing his balanced perspective on both the strengths that initially drew him to Racket and the friction points that ultimately led him away, he thanks the audience for watching and signs off until the next video.
## Notable quotes > [04:26](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=266s) Let us all agree that programs should communicate ideas about what the computer should do to other people first, and the machine second. — Leandro Facchinetti
> [00:00](https://www.youtube.com/watch?v=_wY7FBtr7_c&t=0s) I used to use Racket almost exclusively for a couple of years a few years ago and I think it’s a great language, probably the best designed language I have ever seen. — Leandro Facchinetti
## Mentioned Beautiful Racket, Chez Scheme, Jay McCarthy, Johns Hopkins University, Language-Oriented Programming in Racket: A Cultural Anthropology, Leandro Facchinetti, Matthew Butterick, PLT Redex, Pollen, Practical Typography, Racket, React, TypeScript, Typed Racket, css-expr, pollen-component, yocto-cfa
## Video description Related videos: Playing the Game with PLT Redex: https://youtu.be/NszLQNROdw0 Understanding the Type of call/cc: https://youtu.be/7Zkt_IJaYOY
———
References: https://practicaltypography.com https://github.com/leafac/leafac.com/tree/pollen-component https://github.com/leafac/pollen-component https://github.com/leafac/css-expr https://leafac.com/curriculum-vitae/sdl--a-dsl-for-cryptographic-schemes.pdf https://github.com/leafac/yocto-cfa/tree/2019/old https://beautifulracket.com https://lisp.sh/lop-anthropology-now-available/
———
00:00 - Introduction 00:56 - Backstory 02:33 - Why I think it’s a great language 04:26 - Why I’m not using it anymore 08:00 - Conclusion
[Source](https://www.youtube.com/watch?v=_wY7FBtr7_c)