As a Practitioner-in-Residence, most of my work involves building things. The following is a mix of small passion projects alongside a few larger endeavors. They are divided into three main sections: (1) work; (2) play; and (3) the dearly departed.
Work
From large and complicated to simple and straightforward, here's a collection of projects I've really enjoyed working on.
Law RPG Turning legal cases in to tabletop role-playing games
Faced with the challenge of teaching a class on AI and the Law, I had to find a way to help students engage with open questions of law. Eventually, I settled on the idea of running simulations for potentially precedential cases. This would let students play with issues "ripped straight from the headlines." That is, I'd pick ongoing cases that might one day live in the pages of a casebook next to the moniker "AI." We'd play each case to resolution. Using game mechanics from table-top role playing games (TTRPGs) to build a factual record where one doesn't yet exist. You may know the caselaw method; this is the Law RPG method.
Law RPG turns legal cases into simple table-top RPGs by wrapping some rules around legal fact patterns. It's a supplement to the standard law school case method. In role-playing games (RPGs) players assume the roles of characters in a simulated world. Not just anything goes, however. Outcomes are shaped by structure & rules, the result of a player's actions interacting with an imagined reality.
Two or four students are assigned to be the attorneys with the remainder of students acting as fractional judges or juries (their votes shaping gameplay). As a class we take the cases from motions through trial and eventually argue issues on appeal. All the rules can't fit here, but you can find more details in the video above, on the Law RPG website, and in the handbook linked below.
As many internet users of a certain age will tell you, Google Reader was peak internet. I wanted to bring back some of that magic but with a 21st century spin. The Finite Scroll is an open source client-side algorithmically-driven RSS reader. It is built at the Suffolk LIT Lab and allows users to customize their algorithm and timeline behavior while keeping all that training data on their computer. The reader uses insights from TF-IDF and machine learning to determine what articles users like, comparing the text from the cards they vote up or down with everything they have seen. Users can manage their feeds, hide/group similar articles, set ratings cutoffs, and use regular expressions to promote or mute articles among many other features.
By default, users see legal tech content, but a few minutes of voting will quickly customize a timeline.
With one foot in law and the other in tech, I really want the open web to thrive. Consequently, I'm a big fan of social media built on open protocols. So, when Twitter fell and a number of open platforms emerged, I started creating bots to help showcase legal content. If you know one thing about sites like Bluesky and Mastodon, it's probably that "they don't have algorithms." This is rough shorthand for the fact that the default timeline isn't shaped by engagement. Though this is often pitched as a way for folks to see what they want on their timeline, it presents its own problems, problems algos are really good at solving.
It turns out that algorithmic feeds, do two discovery tasks really well. They help you find interesting stuff: (1) when you don't know where to look (e.g., when first joining a community); & (2) when there's too much content to sift through. They're like a news editor choosing what to put in the paper. The trick is valuing their contribution while not mistaking them for the whole conversation. Anyhow, my bots are attempts at filling this role for law folks. The Bluesky bot is more dynamic and boost only those posts that read as law-related, but both bots try to focus on boosting diverse content the law community is engaging with.
Of course, to run these bots I need to have a good understanding of what folks are talking about. So, I've leveraged this information to create a website that provides a daily digest of community posts. That means folks (like you) can use it to follow the discourse without having to use the platforms hosting these discussions, either by visiting ICYMI Law or by subscribing to one of the feeds below.
Daily Digest/webpage | Bluesky Bot | Mastodon Bot
News-like Link Feed, Blog-like Feed, AI & The Law Link Feed, Law Review-like Link Feed, and AI Paper-like Link Feed
Where ICYMI Law takes a wisdom of crowds approach to content discovery, my Law + Tech News bots are focused in collecting "all the news" in one place. They do this by subscribing to a number of news sites and sharing out any posts that mention something related to law and technology. The Bluesky bot descriptions sums it up pretty well. "I'm just a bot standing here posting links to law + tech news. Seriously, I'm a bot—an RSS feed wrapped in an LLM, pushing text to social media with Python & a CRON job. Don't expect convos." For historical reasons, the Mastodon posts are made by the LIT Lab's account but include the #autosum tag.
Some of you might be wondering, "Can I get the RSS feed without the LLM summary?" The answer is, yes. See the legal tech feed below.
Bluesky Bot | The LIT Lab's Mastodon Account
Legal Tech Feed
The Library of Unwritten Books
The Library creates "novel novellas" on-demand. Unlike text-adventure games with fixed texts, these stories are an open-ended exercise in collaborative storytelling. You are a reader-author. Large language models (LLMs) mediate your collaboration, re-shaping and reflecting your words and those of authors past. I'm reminded of these words from Carl Sagan.
What an astonishing thing a book is. It's a flat object made from a tree with flexible parts on which are imprinted lots of funny dark squiggles. But one glance at it and you're inside the mind of another person, maybe somebody dead for thousands of years. Across the millennia, an author is speaking clearly and silently inside your head, directly to you. Writing is perhaps the greatest of human inventions, binding together people who never knew each other, citizens of distant epochs. Books break the shackles of time. A book is proof that humans are capable of working magic.
This Library is a different sort of magic, for instead of transporting its readers into the mind of a single author it places us somewhere in the zeitgeist. LLMs, as we know, are machines for completing sentences. They work by predicting the next plausible string of words. As Ted Chiang observed, they are blurry JPEGs of the Web. We harness this fact to produce something novel based on the input of our reader-authors, the "compressed" writings used to train the LLM, and random chance.
The Library of Unwritten Books | Explainer (with code) | GitHub
What would we need to take the practice of prompt engineering seriously? An appropriate workspace, one where we could really iterate and build on past work? What would that look like? This browser extension is a partial attempt at answering these questions. Functionally, it acts as a kind of an "everything extension," letting you create your own AI-driven actions: summarize & query a webpage, extract data from a page, translate text, shorten text, build sims... In truth, however, it's an LLM-agnostic AI playground for the coding curious, a place where non-coders can actually build with prompts. If you're really looking to dig in, I suggest you check out my series 50 Days of LIT Prompts.
If you've ever wanted to "run a study" on some aspect of your personal life, this site is for you. It lets you "science the heck" out of your pet hypotheses—building simple predictive models (regressions) around your data. All the number crunching runs in your browser. So your data stays on your device (unless you activly download and share it, which I tried to make easy). I made this tool to help my students get a feel for narrow AI (machine learning) by building their own. As Richard Feynman observed, “that which I cannot create, I do not understand.” That being said, I don’t expect my students to become statisticians or data scientists. Rather, I want them to learn enough to understand the realm of the possible and to call BS when needed. To that end, this site lets you create your own toy models, intentional simplifications that help folks explore the dynamics of a situation. That being said, keep in mind that the tools provided here are that dangerous mix of power and ease of use.
This is the little machine learning project that could. Trained on over a million labels, it has been in continuous operation since 2019, and it has served over 780,000 API requests. But, what IS Spot? Spot is an issue spotter. Give Spot a non-lawyer's description of a situation, and it returns a list of likely issues from the Legal Issue Taxonomy, LIST (formerly National Subject Matter Index, Version 2). LIST provides the legal aid community with a standard nomenclature for talking about client needs. It includes issues like eviction, foreclosure, bankruptcy, and child support. Spot is provided as a service over an API. Mostly, this means it's built for use by computer programs, not people. Coders can build things (like websites) on top of the API. The hope is that by automating part of issue identification, developers will use Spot to help people in need of legal assistance better access available resources.
Additionally, Spot improves over time by training on user inputs. There's a legal "innovation" hiding in here as well, that of our AI click-trust. It makes developers trustees with a duty to their users. From the project page:
Spot is an AI-powered issue spotter built to promote access to justice. We aim to turn the use of Spot into a virtuous cycle, having it learn from the people it is helping so it may better help those facing similar issues in the future. Such continuous improvement relies on the creators of tools built on Spot and their end-user sharing data with us. Their willingness to share depends on them trusting Spot with their data. To help earn and maintain that trust, we are using trust law to make sure that the creators of tools based on Spot owe their users a legally enforceable duty. A limitation of traditional software licensing is that it creates duties only between parties to the license (e.g., the software author and those using it to deliver some service). By placing the fruits of Spot in trust, making those who build tools around them trustees, and defining end-users as beneficiaries, we can ensure that users are owed a duty and given a true say in how Spot is used.
Machine learning tools such as Spot derive much of their value from broad community involvement while impacting these same communities through their use. We have chosen a trust structure in part because of its ability to create enforceable responsibilities to this broader community. The Spot Click-Trust is an attempt to maximize access to, and so the reach of, Spot while including constraints necessary to obtain buy-in from data contributors that Spot depends on for continued improvement.
You can learn more about the click-trust on Spot's project page under Building Trust(s) which includes an FAQ.
Spot wouldn't have been possible without the data from Learned Hands, a site we set up in partnership with the Legal Design Lab to crowdsource the labeling of legal fact patterns. We used to go to legal conferences and put up the leader board for folks to compete. This LawSite article sums it up pretty well: Stanford and Suffolk Create Game to Help Drive Access to Justice.
Here's the user-facing description on the website, "What is Learned Hands? Learned Hands is a game in which you spot possible legal issues in real people’s stories about their problems. You read the stories, and then say whether you see a certain legal issue — family law issues, consumer law issues, criminal law issues, etc. The game is also a research project. Each time you play, you are training a machine learning model to be able to spot people’s legal issues. This model will be used to develop access to justice technologies that connect people with public legal help resources. It will help us to make a Rosetta Stone for legal help — linking the legal help guides that courts and legal aid groups offer to the people who are searching for help."
A LegalTech Adventure for folks with or without prior coding experience, Coding the Law is a class I used to teach, and thanks to the pandemic, I ended up putting pretty much everything up on the web. Learn how to think about technologies in the law by building your own. In this project-based course, open to non-programmers and coders alike, we explore the technical, legal, and ethical dimensions behind the use of computer algorithms by legal practitioners and the justice system. Projects range from the creation of simple document review and automation tools to the construction of expert systems and narrow AIs.
QnA is a markup language for people with little or no programming experience. It was designed with attorneys in mind and transforms blocks of text into interactive question and answer sessions (QnAs). These QnAs can be used as stand-alone expert systems or in the aid of rule-based document construction. Plus, they can be fun, and the entire project is open source.
Sometimes in class I need to create random groups or "volunteer" someone for a task. Sure, there are a bunch of free random selection apps online, but I wanted something I could project on the screen during class without acting as a billboard full of internet advertising. So, I built this simple no-frills tool. It can pick someone from a group, create n groups, or make a set of groups with the smallest possible group size. It remembers your list of choices from visit to visit (saving your data on your computer with localStorage). It excludes folks you've already picked and even assigns "cute" group names (based on characters from Greek mythology).
Play
Here's a selection of some "work" I chose to do in my free time. ;)
This site is a digital portfolio, focusing primarily on my visual works. Mostly, it's a collection of watercolors & photos, with a dash of videos and video games. Most of the watercolors are painted on a small pocket-sized sketchbook, meaning if you're on something other than a phone, you may actually be viewing them larger than life. The same can be said for my tiny-wildlife photography.
This hand-held form factor let's me have fun with my framing. For example, I have a lot of fun placing my art in the frame with the subject by taking a picture of my art on top of the scene that inspired it. Sometimes this is realistic and other times fantastic.
One Christmas after having moved out of my parents' home, my mother remarked that I had entered the stage of life in which power tools became appropriate gifts. I'll never forget coming down the stairs to that compound miter saw (featured in the video). I'll stop short of calling it the best gift I ever received, but it's certainly a contender.
I've always enjoyed working with my hands, and as a child, I'd help my father with odd jobs around the house. However, I didn't really catch the woodworking bug until I got my own place and found myself in need of furniture. Luckily, my father was more than happy to lend me the use of his shop, not to mention his wise tutelage. Over the years, I returned to that shop and put together my own. I've built a number of projects I'm proud of, including my stand-up desk, tables, books shelves, and the Jeffersonian Bookstand in the adjacent video. If you'd like to build one yourself, the video is a How To, and you can download the plans here.
My first original video game was a collaboration with my son (then 6yo). We both enjoy making things in the block-based programing language Scratch, and we wanted to experiment with the video detection feature. So we thought about how we could use it to make a game. We ended up being really happy with the outcome. It makes for some really great gameplay. Allow access to your camera, and swat as many flies as you can, but watch out for the bees. They sting!
- Swat a fly to earn 1 point
- Hit a bee and lose 10
- Finish it all before the music (Flight of the Bumblebee) ends
I adore Emily Dickinson. One day, I was switching between reading an e-book of her work from Project Gutenburg and scrolling through my timeline, and it hit me. "I can combine these two activities!" So, I built the Emily Dickinson Daily. It posts a random Emily Dickinson poem every morning. The first post, however, was an exception. It's one of my favorites.
The poems are drawn from this poetry dataset which parsed the work of folks at Project Gutenburg. I filtered the dataset on author (Dickinson) & manually removed text that clearly wasn't a poem (e.g., bits of the preface). I then removed leading roman numerals & parsed individual stanzas based on line breaks. I included any titles (i.e., leading single lines) with the first stanza. I removed any poems with "stanzas" over 300 characters to make sure they'd fit in a single post. The bot looks over this cleaned collection an picks a random poem to post every morning. If the poem has more than one stanza, it is posted as a thread with each post corresponding to a single stanza.
I know the Todd & Higginson versions found in the Gutenberg texts aren't the only ones. Heck, they aren't even my favorite version, but they were how I, and the world, were first exposed to these poems. Plus, they were easily accessible for what started out as a spontaneous couple-hour bot build. Now it's a cherished part of my morning routine. :)
In 2015 the oral arguments for King v. Burwell, Donald Verrilli produced a good laugh from the audience in response to a hypothetical posed by Justice Scalia. See page 54, line 9 of the transcript. A lot of folks noticed this, and I got to thinking, “There should be a Twitter bot that reads oral arguments and links to laugh lines.” So, fast forward a few days, and @LOLSCOTUS was born. The idea was that getting folks to read oral arguments through laugh lines was a good way to help them engage with cases before the Court. The bot was reasonably popular, over 1.5K followers by my recollection. It was even named one of The Best Twitter Bots for Keeping Tabs on the Government.
Of course, Twitter stopped being Twitter, and I closed down the account in 2022 when I left. However, the bot lives on. I ported it, first to Mastodon, and eventually to Bluesky, and now you can find it on both platforms, linking to laugh lines in oral arguments. As Sarah Jeong noted in the piece above, "It’s [a] convenient and digestible way to find out how many times SCOTUS laughed during oral argument[s] over a death penalty case. (Answer: way more than you’d care to know, tbh.)"
Call grandparents during dinner & let them roam around the table. It's amazing how much kids love this extra level of interactivity. This project was birthed by the pandemic. It's an inexpensive telepresence bot (mBot + LEGO + phone). Workflow:
- video call someone on your phone;
- put phone in cradle;
- pair bot to your computer so you can control it from computer;
- share remote access to computer with the folks you called so they can pilot the bot.
The bot is an mBot (~$80). The lever used to move the camera makes use of the servo pack (~$30). I hand-crafted the rounded end of the lever from the top of a spice bottle. The nuts & bolts holding it come with the servo pack. Here's the code we use to control the bot. Of course, you also need a phone and some LEGO (snaps right on). As for remoting into your computer, Google Chrome Remote Desktop works pretty well. Enjoy!
Dearly Departed
I can't maintain every project forever, but the following work holds a special place in my heart.
What would happen if political candidates looking to engage with a community were pushed to engage with questions crowd-sourced from that community. And what if they knew the same community would hold them accountable for their answers, later voting on whether or not they actually engaged with the questions? 10Questions was a collaboration that aimed to answer this. It grew out of my early work with the YouTube community. It had two US iterations, one during the 2008 presidential primaries and another during the 2010 midterm elections. I was the primary developer behind the site along with two sister sites, 10Perguntas in Portuguese and 10Preguntas in Spanish, which accompanied elections in Brazil and Mexico, respectively. I'm afraid the sites no longer exist, but you can read this announcement from the New York Times Editorial Board, which was one of our original partners.
When I was teaching high school physics, I created a short-lived video series presenting answers to science questions, brief lessons, and ideas for teachers & students. The videos have been viewed over 6 million times. It makes me sad to place this project here under dearly departed, but eventually life got in the way. I stopped in the middle of a set of videos on general relativity, and the last entry was made in 2007. I have the script for the next video, but at this point, I'd have to start from scratch with my animation assets as the software I used to create them is no longer supported. Maybe one day. 🤞
The video embedded here actually won an award, you'll note the text indicating its entry at the open. There is, however, an error if you look carefully. When showing the changing altitude of the noon-day sun over the year, the exact dates of the solstice and equinox are a bit off, but it goes by quick. So, I think we're okay.





