anna y lin

projects
ā² professional work
ā‡± badwatercolor
ā‡± creative coding
workshop
ā‡± hacking with the browser

about this website

the last time i completely changed my website was in 2018.

websites are always a work in progress; this change has been due for a long time--when my old website no longer reflected my thoughts and aesthetic as a person who both continues to work in, and have a love-hate relationship with technology.

if the old website described me as a person, it would paint this picture: someone getting into complex javascript libraries, server-side bundling, and a bit of a code-hoarder for fear of needing it later in the future.

i hope this new website is a better reflection of how i feel about websites now--they can be plain javascript + html, and they can be fun (!) because it leaves room for more important things--like accessiblity, maintenance, and room to grow.

my old website had ~406 MB of assets; this one has ~50 MB

eeg cloud

Two kids with black EEG headsets on stand in front of 2 pairs of LEG lights suspended from the ceiling--the pair of lights on the left shine green and the two on the right shine orange.

Twins using the EEG devices and controlling different sets of the lights in the EEG cloud, based on activity levels in their brain.

Why

Communication often fails us--mispronunciation, misinterpretation, other mishaps; we wanted to explore a different way of communicating our thoughts and feelings about a situation, using our brainwaves.

How

This project was created with Daniel Wai, and with a lot of advice on EEG devices and how to read its data from Jason Snell.

The EEG cloud consists of two sets of LED lights suspended in the air. Each pair of lights is connected to one of the two Muse 2 (EEG sensing device) devices. Participants are invited in pairs to put on one of the Muse 2 devices, which will record their brain activity. The EEG data is sent to the Arduino paired with the LED lights via WiFi, and the LED lights reflect a different color based on the state of the participants' mind.

Conclusion

This was an interesting exploration of what alternate forms of communication and expression could look like. When this project was presented as part of the ITP 2023 Spring Show (for the class Intangible Interactions by Yeseul Song), we received a lot of interesting ideas from people.

For example, what if we could have EEG-controlled lighting in our homes--a pre-anticipation of mood lighting? Or what if we use this as a trauma recovery therapeutic device, to guide us in our mental state on how we feel about a certain subject before we can verbalize it by allowing us to express it in a gentler, passive way?

Read more about it here.

ai loves horror

An old tv set with a green screen surround by piles of books sitting atop a lace-covered desk.

A horror text-based adventure game made using OpenAI's GPT-3 (Davinci model) API. This project was shown during the ITP Winter Show, 2022.

Why

It's an homage to old-school text based adventure games, and an exploration of AI's ability to write an emotionally compelling story for the player.

How

The app sends a prompt to Davinci to write a text-based adventure game that will give players choices numbered 1-3. When a choice is made, it is added back to the entire story and sent as a prompt to Davinci to send more choices, until the story is finished.

The story changes every time it is run, and it is generated live during gameplay. Ony Davinci has control over the choices and when to end the game.

The pace of the text also increases the longer the player plays.

Conclusion

It's interesting how Davinci is able to create a cohesive story that follows the theme of a horror adventure game. The stories Davinci generates usually consists of one spooky figure in a strange place, and the player is given choices to confront the figure or run away.

Somehow, the story always ends in about 5 minutes or so, and Davinci almost always gives a somewhat optimistic ending.

Read more about it here.

text me smth nice

Phone receiving texts from the text-me-smth-nice app.

A messaging app that uses the Twilio SMS API to send out nice texts periodically.

Why

During the pandemic, i wanted to remind my friends and myself that there are brighter times ahead.

How

I created a Python app that runs on a scheduler to use the Twilio SMS API, sending a text to subscribed numbers during random times of throughout the day.

Conclusion

Texting seems to be a pretty non-intrusive way of reaching out to people that can be made into a positive experience.

It made me happy to hear from a friend that the random texts throughout the day did help them through a tough time.

Read more about it here.

baby killer

An assortment of small, pastel-colored silicone shapes attached to wires on a wooden slab.

Squishy Sounds (AKA baby killer as our friends called it) was a collaborative project with Efrat Levy, to make playing music a sensory experience.

Why

We wanted to reimagine what musical peripherals could be like if we experiemented with color, shape and material.

How

We created pastel-colored shapes using molded silicon and connected them to wires to use as a capacitive sensor. Then we added sounds to it via serial communication from an Arduino to p5.

Conclusion

While possible, it was difficult to control the sensitivity of the silicon as sensors. The silicon is delightful to play with but in the future i would explore different sensory materials.

Read more about it here.

spotify recently added

My top 20 recently added songs on Spotify.

Generate a playlist of your top most recently added songs in your Spotify library.

Why

Growing up using Apple Music, i enjoyed the auto-generated top 20 songs playlist--a feature that i miss since using Spotify.

How

I found out that closest i could get to creating an auto-generated top 20 songs playlist was to use the Spotify API to get a list of all my tracks, sorted in the order they were added, and send the latest 20 to the playlist creation endpoint.

It took some time figuring out the authentication, and while it was a hassle, it works pretty well once you authenticate and get redirected to the app.

Conclusion

There's not much customization you could do with generating playlists this way--for example, it would have been fun to play around with making an auto-generated playlist cover image as well.

Read more about it here.

tableware zine

portrait of family of projects
5 small, stacked wooden cups
hand pulling a tissue out of a tissue box
a round bowl holding balls of pink and orange yarn and crochet hooks
a wooden candelabra shaped like a fan and holding colorful birthday candles

reveries

DALLĀ·E art, curated in collaboration with Michelle Ma & YiChun Lan

reveries

DALLĀ·E generated watercolor-like abstract art for the line: You will know her presence in the half-light,
DALLĀ·E generated watercolor-like abstract art for the line: New flowers upon her yellow head;
DALLĀ·E generated watercolor-like abstract art for the line: Swift as the night and full with the night,
DALLĀ·E generated watercolor-like abstract art for the line: She'll put the water true.
DALLĀ·E generated watercolor-like abstract art for the line: Making all men as the sea to sea-
DALLĀ·E generated watercolor-like abstract art for the line: She, the signal to my oxygen;
DALLĀ·E generated watercolor-like abstract art for the line: High in the haze of the ecstasy,
DALLĀ·E generated watercolor-like abstract art for the line: Encircle me, and take this hour.
DALLĀ·E generated watercolor-like abstract art for the line: Succor in the dark,
DALLĀ·E generated watercolor-like abstract art for the line: be sun in the dark

filmotography

Yosemite

Waves crashing onto a lone rock on an empty beach, somewhat overcast clouds in the sky.
Evening shot of a rock in the ocean.
Evening shot of the waves receding on the beach.
The waves crashing onto a beach at sunset.
El Capitan in all its glory at dusk.

Alaska

Sunrise dawning on the Valdez mountain range.
Vertical shot of sunrise on Valdez mountain range.
Vertical shot of sunrise
Near evening shot of a snowy mountainside in Alaska.
Motion shot of a lady in hiker gear in the middle of an ice field.
Shot of partially-broken ice in a dry frozen river.
A big, baby blue shed on the side of the snowy road, with mountains in the background.
A small white shed on the side of the snowy road, with mountains in the background.

East Coast

Shot of top of cathedral against the blue sky.
Dark shot of the interior of a cathedral, the pews and the altar lit by candlelight.
Vertical shot of window cleaners on side of skyscraper.
Gloomy shot of concrete jungle skyline.
Shot of domed building reflected on side of mirror-like skyscraper.
Blue and white tiles spell out Spring Street, for the metro station.
A large copper and red-bricked building at an intersection, against an overcast grey sky.
Colorful tenement buildings side-by-side, against an overcast grey sky.
Large red-brick buildings side-by-side, against an overcast grey sky.
Blurry shot of a bright-green okra dish, a fried fish dish topped with red chili peppers, with a plate of fried rice and a basket of dumplings in the background.
Shadow of a tree on a softly-lit yellow wood-paneled building.
Blurry shot of two rapid transit passengers looking down at phone while sitting down on the train.
Art installation of iridescent geometric shapes together form a mesh wire, hung amidst the buildings.
People sitting around a lake, generously shaded by a large willow tree hanging low.
A wedding photoshoot underneath a large willow tree, the vast lake in the foreground.
Boston skyline from the Charles River, set against an overcast grey sky.