Portfolio

First Light

Envelopes, Paper, Website
Python, HTML, CSS, and JavaScript
2025

First Light is a gift-based project that gives people the opportunity to be the first person in the world to see a specific star. At the current scale of astronomical knowledge (1.8 billion+ celestial objects), most newly-discovered stars are found by computerized telescopes, processed for their quantifiable characteristics, and stored in huge databases to be later fed into models by researchers. Because these tens of thousands of new stars discovered every day are (a) barely incremental (b) uninteresting individually and (c) visually boring, the vast majority of them will never actually be seen, only calculated with. The story of modern starlight is one where photons originate trillions and trillions of miles away, spend countless millennia getting to our solar system, and end up as numbers in a row of data instead rather than a glint in someone's eye.

I use a series of scripts to scrape astronomy research databases, find the newest unremarkable and academically ignorable stars, and cross-reference them with literature archives to ensure that they have never been covered in any research. With the resulting dataset, I print out large stacks of the original pictures of these stars upside down and - without looking at them - fold them up and seal them. The result is First Light, a collection of envelopes that let the opener be the first witness to the star, and through the act of looking at it fasten it as real against the cosmos.

Links

First Light Website


Traffic Cam Photobooth

Website
HTML, CSS, and JavaScript
2024

Description

Traffic Cam Photobooth is a website that allows anybody to locate their nearest publicly available traffic camera and use it to take pictures of themselves. While these cameras are ostensibly intended for traffic, they also serve to acclimate us to the idea that constant monitoring is an everyday part life. No matter the target of this surveillance, it's clear from looking at the map that most New Yorkers (and since its launch, now people in many other locations) get unconsentingly captured by the lens of at least one camera - if not several - every day. TCP offers visitors an engaging and lighthearted way to engage with this very serious topic by drawing attention to these easily ignored cameras. People can use their feeds, which their tax dollars help fund, to take pictures of themselves, spreading the knowledge of this sprawling surveillance apparatus through fun self-portraits designed to be sharable online.

Links

Traffic Cam Photobooth, Cease and Desist, Webby Nomination

Press

Fast Company, PC Mag, NBC, New York 1, ABC, Fox 5 NY, PIX 11, NBC NY, NY Post, 1010 WINS, Petapixel, Jalopnik


Mr. Beast Saying Increasingly Large Amounts of Money

Film
Mr. Beast Videos and Python
2024

Mr. Beast Saying Increasingly Large Amounts of Money is a critique-through-reduction of Mr. Beast, the world's most popular YouTuber. Discourse around Mr. Beast is often mired in an irreconcilable conflict between the grandiosity of his consumption, the scale of his philanthropic projects, and the uneasy voyeurism of charity done for a view count. Oftentimes, he will justify the extreme opulence and wastefulness of some of his videos by pointing out that they allow him to finance the acts of generosity in other ones. The debates inevitably reduce to bean counting, and so this video does that quite literally.

I downloaded hundreds of Mr. Beast videos and then wrote a script to scrape their transcripts for all mentions of dollar amounts, create clips of each amount, and then stitch them together in increasing order. The result is an off-putting video that puts the cult of scale present in Mr. Beast's content in a stark but hypnotic light. Watch for yourself and see, or check out my talk on the making of the video.

Press

Reboot, 48 Hills, Numlock

Links

Mr. Beast Saying Increasingly Large Amounts of Money Talk on the making of the video


Sol LeWitt QR Code Generator

Paper, Website
HTML, CSS, and JavaScript
2024

The Sol LeWitt QR Code Generator provides human-readable instructions for drawing your own QR code. QR codes - and scannable codes in general - are interesting in that they are part of a narrow genre of image which are made by computers, for computers, but which require a human in the middle. We neither make the codes nor read them, we just move them from one machine to another. As actors completely outside the processes of production or reception, QR codes reduce our function to one of pure transmission. We, suddenly, are their media.

In The Hitchhiker's Guide To The Galaxy, one of the main characters notes that the most aggressive thing you can do to a computer is count upwards, thereby asserting that you can do their most basic function without them. Inspired by this reinforcement of agency, this project offers humans a similar means of re-asserting their power. In an homage to LeWitt's instruction-based Wall Drawings series, the generator gives people the opportunity to participate in a practice of image-making that normally exludes them.


Bad Apple But It's My Finder Window

Video
Python and AppleScript
2024

The ability to render the Bad Apple music video is a long-running and tongue-in-cheek benchmark of whether or not something can, with enough effort, be considered a display. It has been put into Minecraft, graphing calculators, literal apples, and more. This was my contribution to that canon.

I proved the viability of the MacOS finder window as a display by using it to play Bad Apple. To do this I converted every frame of the video into a 2D array of ASCII art, took each row of that array as a string and saved that string as a file name in a folder I made to hold that specific frame. After processing every frame, I had ~6500 folders with almost half a million files. I then animated the frames by using AppleScript to implement a frame buffer out of stacked programmatically controlled finder windows, recorded the entire run, and then edited the output for speed and music syncing.

Links

Blog post


Nubmoan

Application
C
2024

Nubmoan is a silly project about the erotics of technology. The ThinkPad TrackPoint has for decades been referred to sexually as the "nipple" or "clit mouse." Taking this literally, I wrote a program that plays clips of moans when the TrackPoint is used. The intensity of the clips changes with the intensity of the press.

Links

GitHub Repo


Desktop Clock, 2024

Website
Python and AppleScript
2024

Desktop Clock is a work-in-progress that installs a working analog clock on a user's desktop in the form of a .PNG file of two clock hands that gets overwritten every minute, thereby updating the image preview of the icon. The download also comes with 12 screenshotted numbers to make up the time surrounding the clock, or users can also provide their own.


Guess We Doin Games Now

Website
P5.js
2024

I took the Triangle Factory meme and made it into a game where you could draw the shapes coming out of the machine. I also made it include a very backwards means of drawing illustrations, and a lot of people had fun with it.

Links

Play the game


Twice As Many Stars, after Laura Giplin

Website, Poem
HTML, CSS, and JavaScript
2023

Twice As Many Stars is a microsite made for Laura Giplin's poem "Two-Headed Calf." Press the button and see what happens.

Links

Webpage, GitHub Repo


Are You The Asshole

Website
Python, HTML, CSS, and JavaScript
2022

Description

Are You The Asshole? (AYTA for short) is an interactive experience of dataset training bias in artificial intelligence models. It is a website that uses 3 real AI models to educate users on the effect of biased data in the decision-making abilities of artificial intelligence. It is inspired by Reddit's popular community r/AmITheAsshole, where users post their moral quandaries and ask the commenters whether they were in the wrong—whether they were "the asshole."

Are You The Asshole creates commenters from three AI text-generation models. These are custom text-generation systems trained on three different sets of data: one that has only ever read r/AmITheAsshole comments that call the poster the asshole, one that only read comments absolving the poster, and one that was privy to a mix. These three models illustrate the wildly different lines of reasoning artificial intelligence can follow when trained on biased information.

When reading the results of a judgement, note the way in which the AI constructs ideas from snippets of human reasoning. Sometimes the AI can produce stunning results, but it is fundamentally attempting to mimic the ways that humans put together arguments. The "judgements" that the different models render do not come from reasoned ideas—they come from recognizing the patterns in human speech. Keep an eye out for the seams.

Links

Are You The Asshole Website, r/YouTheAsshole

Press

The Verge, Vice, Morning Brew, GQ France, Garbage Day


TikTok Clock

Digital Clock
Python, Rasbperry Pi
2022

The TikTok Clock tracks the difference between my lifespan and the cumulative amount of time people have spent watching my videos on TikTok. It is an investigation into creativity, time, and attention on the web. It hit 0 when people had finally spent more time watching me than I'd been spending watching the world.

Every day, a Raspberry Pi microcomputer scrapes the analytics data from each of my several hundred videos, adds up all the view time, compares it to how long I have been alive, and moves as fast as it to over the course of the next 24 hours to make up the difference, displaying this change on a digital countdown clock spanning LED screens. When it started running in late 2022, it showed red numbers and normally counted down, signifying that my view time was still less than my lifespan. Half a year later, at 5:56am on June 23rd, it blew past 0, turned green, and started counting up, putting my output "in the green" compared to my life.

Importantly, this achievement is at risk: the clock can go backwards. It tracks the difference between two lengths of time, but one length (lifespan) is always growing while the other (view time) is dependent on my productivity and the eyes of other people. I must keep prouducing content and banking time, lest I go back in the red. The same is true in the other direction: the consolation prize for dying is that lifespan becomes a fixed amount, but the attention of others can always increase.


Super Fungible Token, 2022

Website
HTML, CSS, and JavaScript
2022

The Super Fungible Token was a critique of NFTs. It a low-carbon NFT minted with a URI pointing to superfungibletoken.com/sft.jpg. Instead of being an image file, though, /sft.jpg was actually a redirect route. This meant that (a) anyone trying to find the image associated with the NFT would get redirected to a different image and (b) we could allow anybody to change that route at will as long as they submitted a valid image link. Over the course of its lifespan, the Super Fungible Token was funged over 1 million times.

Links

Super Fungible Token, GitHub Repo


Deface Your Data

Chrome Extension
JavaScript, HTML, CSS
2021

Replaces tracking parameters embedded in URLs you visit with your own message for people scraping your data.

Have you ever clicked on a simple link for some website, for example "clothing.com/shop," and noticed that while the page you were brought to looks normal, the URL looks wayyyy longer than the one you clicked on? If so, you're familiar with URL parameters. This extension messes with them.

URL parameters fulfill a number of functions for web admins and advertisers, but some of the most common ones are used to track who you are, where you came from, and what you've been doing online before visiting. Sometimes these are long randomized strings for advertising algorithms to process, but certain types of parameters are embedded and tracked by and for real employees in marketing and surveillance to read and analyze.

When you open the Deface Your Data Anti-Advertiser Tool, you will be prompted to enter a message to these data snoopers. Whenever you go to a new page, the extension will search for a number of popular parameters, and instantaneously replace their information with your message if it finds them. Not only does this protect you from one form of online tracking, but it also gives you a direct line of communication to the actual people behind the curtain of advertising. Use it wisely :)

Links

Install the extension


The Little Tok of Horrors

Film
The Little Shop of Horrors and HexEdit
2021

The Little Tok of Horrors (TLTOH) is the first feature-length movie ever uploaded to TikTok. It consists of a single TikTok, usually limited to a maximum of 10 minutes, and starts with a brief introduction explaining the project before showing the entirety of Roger Corman's The Little Shop of Horrors (1960). The full runtime is just under 72 minutes. It was hosted by the platform for 5 days.

The production process and life cycle of TLTOH serves to illustrate the case that TikTok and other major video platforms don't actually watch the videos they host, they merely process them. TikTok's upload length restriction is enforced by a metadata check, not a frame count, play-through, or anything deeper. By making a specific export codec setup and then editing the raw hex values of the metadata of the resuling video, I was able to meet all of TikTok's other requirements (resolution, size, etc) while spoofing the duration field, thus allowing the full movie to be uploaded.

TLTOH got taken down twice, both incidents proving its larger point. The first time, it had its audio muted, having been flagged by TikTok for containing clips of licensed songs. Not only were these songs actually sampling the original movie, which is in the public domain, but the clips in question occurred more than 10 minutes into the video, which should logically - but nonetheless did not in the eyes of the platform - imply that it was longer than allowed. After re-uploading with the audio edited to avoid flags, it was taken down once more. This time, it was struck for violating community guidelines after being live for days without issue. This incident happened directly after a reporter covering the piece reached out to TikTok's press office for comment, meaning a human member of their staff intervened for what a computer could not do. In both cases, machines were inadequate to catch the errant nature of the video, even though TLTOH's transgression was as basic as the actual length of the video itself.

Press

Vice, Cracked

Links

The Little Tok of Horrors, Blog Post


DoesMyIPAddressHave69InIt.com

Website
PHP
2021

My first website ever. Does what you think it does.

Links

Find out