
Besides being a software engineer, Marianne Bellotti is also a kind of technological anthropologist. Back in 2016 at the Systems We Love conference, Bellotti began her talk by saying she appreciated the systems most engineers hate โโmessy, archaic, duct-tape-and-chewing-gum.โ Then she added, โFortunately, I work for the federal government.โ
At the time, Bellotti was working for the U.S. Digital Service, where talented technology workers are matched to federal systems in need of some consultation. (While there, sheโd encountered a web application drawing its JSON-formatted data from a half-century-old IBM 7074 mainframe.)
The rich experiences led her to write a book with the irresistible title โKill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones).โ Its official web page at Random House promises it offers โa far more forgiving modernization frameworkโ with โilluminating case studies and jaw-dropping anecdotes from her work in the field,โ including โCritical considerations every organization should weigh before moving data to the cloud.โ

Bellotti is now working on products for defense and national security agencies as the principal engineer for system safety at Rebellion Defense (handling identity and access control).
But her latest project is a podcast chronicling what sheโs learned while trying to write her own programming language.
โMarianne Writes a Programming Languageโ captures a kind of expedition of the mind, showing how the hunger to know can keep leading a software engineer down ever-more-fascinating rabbit holes. But itโs also an inspiring example of the do-it-yourself spirit, and a fresh new perspective on the parsers, lexers and evaluators that make our code run.
In short, itโs a deeply informative deconstruction of where a programmerโs tools really come from.
Going Deep
In one blog post, Bellotti invited listeners to โstart this strange journey with me through parsers, grammars, data structures and the like.โ
And it is a journey, filled with hope and ambition โ and a lot of unexpected twists and turns. โAlong the way, Iโll interview researchers and engineers who are active in this space and go deep on areas of programming not typically discussed,โ the podcast host promised. โAll in all, Iโm hoping to start a conversation around program language design thatโs less intimidating and more accessible to beginners.โ
But the โMarianne Writes a Programming Languageโ podcast also comes with a healthy dose of self-deprecation. โLetโs get one question out of the way,โ her first episode began. โDoes the world really need another programming language? Probably not, no.โ But she described it as a passion project, driven by good old-fashioned curiosity. โI have always wanted to write a programming language. I figured I would learn so much from the challenge.โ
โIn an industry filled with opinions, where people will fight to the death over tabs -vs.- spaces, there isnโt much guidance for would-be program language designers.โ
โMarianne Bellotti, software engineer and podcast host
Fifteen years into a sparkling technology career, โI feel like there are all these weird holes in my knowledge,โ Bellotti told her audience. And even with the things she does know โ like bytecode and logic gates โ โI donโt have a clear sense of how all those things work together.โ
In the podcastโs third episode, Bellotti pointed out that, โfor me at least, the hardest part of learning something is figuring out how to learn it in the first place.โ She discovered a surprising lack of best-practices documents, she wrote in an essay in Medium. โIn an industry filled with opinions, where people will fight to the death over tabs -vs.- spaces, there isnโt much guidance for would-be program language designers.โ
Still, her podcastโs first episode showed the arrival of those first glimmers of insight. โEven knowing very little upfront, I had a sense that in order for a programming language to work, there had to be some sense of cohesion in its design.โ
Where to Begin?
Her Medium post cited a 2012 article titled โProgramming Paradigms for Dummies: What Every Programmer Should Know,โ which offers a taxonomy of language types based on how exactly theyโre providing their abstractions. That article apparently got her thinking about how exactly a programming language helps communicate the connections that exist between its various data structures โ which led to more insights. (In a later podcast, Bellotti even says โtechnology suggests to its user how it should be used.โ)
โEventually I came to my own conclusions,โ she wrote in her Medium article. To be successful at creating her own language, she realized that she needed to think of programming paradigms like object-oriented or functional programming โas logical groupings of abstractions and be as intentional about what is included and what isnโt.โ
Bellotti is also trying to design a language that will work for her specific needs: to know how likely certain types of problems are in a given system, to achieve model resilience. But on her first podcast episode, Bellotti acknowledged that she still had to begin by typing, โHow do you design a programming languageโ into Google โand was surprised by how little came up. (Although she did discover โthereโs a whole world of obscure experimental languages that appear in research papers, rack up a host of citations, and never touch an actual computer other than their inventorโs.โ)
โI feel like Iโve been struggling to hang pictures around my home and one day someone knocks on my door and introduces me to the hammer,โ
โMarianne Bellotti, software engineer and podcast host
So where to begin? Avoiding the standard dry collegiate textbooks like โCompilers: Principles, Techniques, and Tools,โ she instead found her way to the book Writing an Interpreter in Go, a book which by necessity also created its own programming language (a modified version of Scheme called Monkey) for its interpreter.
That bookโs author, Thorsten Ball, became her podcastโs first guest, explaining that his language was not so much designed as experimented into existence. (Later, other people suggested something similar โ that Bellotti โpick something you like in another language and copy the implementation to start, because figuring out all the edge cases from scratch is really hard.โ)
In that first podcast episode, Bellotti explained her concern that โtiny little design decisions I donโt even realize Iโm making could have dramatic impactsโฆ it does seem to be the case that programmers create languages without being able to fully anticipate exactly how they will be used or how technology will change around them.โ
Things Get Complicated
There are moments where it all sounds so simple. (โWhat youโre doing when you write a programming language is actually writing a series of applications that take string input and translate it into something the machine can execute.โ)
But things get complicated pretty quickly, and by episode three Bellotti started to see a pattern: โConfronting what feels like a tidal wave of information is becoming an all too familiar feeling on this project.โ Yet, while considering a need for her languageโs source code-interpreting parser, she realized that parsers can be auto-generated โ as long as she can supply that tool with the necessary grammar rules.
โI feel like Iโve been struggling to hang pictures around my home and one day someone knocks on my door and introduces me to the hammer,โ she told her podcast audience.
She ends up talking to a linguist who studied under Noam Chomsky, who refers her to another linguistics professor, who begins by discussing whether language can be learned through the brute-force assimilation of machine learning, and ends up explaining why Chomskyโs โcontext-free grammarโ ultimately became the basis for programming languages and compilers.
But there are resources to discover. Along the way, Bellotti found a Reddit forum about programming language design. (โThis subreddit is full of great stories and people will give detailed explanations and encouragement, which is rare on the internet these days.โ) Sheโs also found a forum for people building Domain Specific Languages.
By December, sheโd received a comment from a grateful listener who was also writing their own programming language, and was glad to find a relevant podcast. And Bellotti acknowledged in a response that her whole journey โhas been so much fun so far.โ

Progress is clearly being made. By episode 12, Bellotti considered how hard it would be to add modules to her language. (โFrom my vantage point, being able to split a system specification into smaller parts means you get to reuse those parts and build progressively more complex systems that are in easily digestible chunks.โ) And thereโs also already an empty repository on GitHub thatโs waiting expectantly for the code to arrive.
Then, in mid-April Bellotti announced that episode 12 would be the last one โfor a while. Iโve made some design decisions that I feel really good about, but itโs clear that the only way to validate them is to write code and try things out.โ
Sheโs also spending some time researching how to optimize her compiler, โBut really, I just need to just be heads-down, hands-on-a-keyboard for a while on this.โ
And so, the podcast has entered a productive hiatus, leaving listeners with this tantalizing promise.
โIโll be back in a couple of months to let you know how that went.โ




You must be logged in to post a comment.