More selected projects


There's no place like home

There’s no place like home, a projection-mapping installation, investigates the concept of “home” and our sense of belonging as it relates to contemporary concerns such as immigration, assimilation, and the identity politics of children of the diaspora.

produced by: Timothy Lee


“There’s no place like home,” a projection-mapping installation, investigates the concept of “home” and our sense of belonging as it relates to contemporary concerns such as immigration, assimilation, and the identity politics of children of the diaspora. I used my own history with the immigration experience, my history of frequently moving between homes, and the whitewashing of spaces I formerly called my home, as vectors for a broader conversation around the geographical, emotional, and personal attachments to the meaning of “home.” The animations are projected onto moving boxes – I specifically chose these surfaces because these objects are familiar to me; since immigrating to the United States at a very young age, our family moved houses frequently in pursuit of the “American Dream” – a lot of my childhood memories involved excitedly packing up my belongings into cardboard boxes, longing for the next step up in our lives.


Concept and background research

[CloudSource animation]

The CloudSource animation evokes my childhood memories of watching plump and wispy clouds lazily move across a blue sky. I’ve always been fascinated with looking up and seeing how the clouds organically change shapes – at times manifesting into a recognizable image before blending and dissolving into nothingness. There has always been an association between clouds and dreams; we project our hopes and desires to abstract shapes and moments of chance. I’ve always thought the symbolism of clouds and the American dream to be the same – we hope and desire, but in the end, a dream is just that – a wish, nothing more. This reality check – the emptiness of clouds – mirrors the disillusionment I had with the American Dream. It is something that appears celestial, but exists only in our imagination.

[FaceSource animation]

The FaceSource animation is a self-portrait that undulates between whiteness and “yellowness” as a way of expressing the identity crises that immigrants experience trying to assimilate into a new culture while holding onto their roots. I felt neither ‘American’ enough to evade the microaggressions of my peers, nor ‘Korean’ enough to escape the chagrin of my extended family back in Seoul – the anxiety of this uncertainty, of being pushed and pulled between cultures, is mirrored in the sinusoidal pulses of color shifts: from white to yellow, back and forth. My heavy Western tongue betrays my slanted eyes, and this animation serves as a metaphor for growing up wavering back and forth between the many societal and cultural pressures of an immigrant’s life.

[ShoesSource and SpiralSource animation]

The ShoeSource and SpiralSource animations are a nod to the scene in The Wizard of Oz, when Dorothy clicks the heels of her ruby slippers while chanting “there’s no place like home.” In addition to the symbolism of homecoming in this scene, the movie holds a particular place in my heart because it was one of the first “American” movies I owned as a child, gifted to me by my grandmother. Growing up in poverty, I would often watch movies with fantastical elements or themes as a way to detach myself from reality; I used to sing along to many of the songs in the movie and recite the dialogue as a way to improve my English. Seeing how far I’ve come in my life since the hardships of my early life as an immigrant, I reflect fondly back on these moments of childhood naivety and innocence, and click my own heels in trying to manifest a home that I can return to.



In animating the clouds to move across the sky, I adapted an animated image sprite example from Daniel Shiffman's Learning Processing and applied it to openframeworks. The most difficult aspect of this scene was varying the speed of the clouds as they move across the screen, and also making sure that if a cloud completely moves off to the right of the display, it would eventually return on the left side. Fine-tuning this animation to make it feel as natural as possible was more tedious than difficult, and required a lot of editing and patience (since the clouds moved incredibly slowly).

The codes for the pulsating faces and the spirals were fairly straightforward, and covered a broad range of functions we covered in class. For the face scene in particular, I mapped the return values of running the current frame number through cosine and sine functions (-1 to 1) to the RGB values of 0-255 to create a smooth color transition that went from normal to yellow and vice versa. I chose to use both cosine and sine functions because the return values of the two functions were slightly offset, and thus it ensured that the color transitions of the background weren't completely in sync with the transitions of the face, which made the animation feel a bit more dynamic.

The most difficult scene to code was the clicking heels animation. Initially, I took photographs of red slippers and created 6 png images of them with photoshop, rotating the heels of the shoes in each picture so that by the sixth image the two heels were touching. From these 6 images, I made duplicates of them so that in the end I had 16 png images that, collectively, showed the entire range of motions involved for a simple clicking of the heels of the shoe - much like how Dorothy does it in the Wizard of Oz. At this point, it would have been easy to compile these images into a GIF generator and upload the animation into my sceneManager; however, this would have defeated the entire purpose of this project. In order to replicate and create my own "gif" from these images through code, I had to upload all of the png images into a vector array list and use functions to call out each image successively with each frame - this created a gif-like effect that was able to result in an animation that mimiced a realistic movement. 

Future development

In developing this project further, I would be interested in creating the cloud imagery entirely through code and not relying on png files for the images of the different clouds - the greatest limitation to this animation was having the same formations repeatedly reappear and move across the screen, which reduces the sense of magic and novelty over time. This would probably involve programming a complex system of cloud objects whose shapes and formations are semi-randomnly assigned via noise()

Self evaluation

I was the most surprised (pleasantly) in how the cloud animations turned out, since I feel that I did a good job in mimicking the natural movements of the different clouds across the display. Although I initially thought that the animation would be too lethargic and boring, its simplicity became it's greatest strength - I found myself fixtated on tracking the clouds' movements across the many surfaces that I projected them onto.

In addition, I was also pleasantly surprised at how I was able to essentially create a gif through code for my ruby slippers animation via vector arrays. This process of understanding and coding this "gif" allowed to be gain a deeper insight into how array lists and vectors worked, and I am excited to use this technique for future animations and also incorporate it further into my personal artistic practice.

Because all of my projection scenes were animations of some sort, the most difficult part of of organizing my different scenes was coordinating the transitions between the different animations - particularly because a lot of them have color schemes that strongly contrasted with one another (yellow vs. red vs. blue). I would have loved to create smooth transitions between the scenes - particularly when the red spirals and the shoes came on - because the shifts seemed abrupt and cut into the serenity offered by the slow-moving clouds. Because I struggled with timing the transitions and saving each projection scene within those boundaries, I would definitely work on improving the "final view" of my projection mapping projection for a future iteration of this project. 

Overall, I'm proud of this installation and also proud of myself for applying the skills I've learned towards this project while still keeping it in line with my personal artistic practice, particularly since I come from a completely non-coding background and I felt very overwhelmed when I first began to design how this projection mapping was going to manifest. 



Daniel Shiffman, Learning Processing, Chapter 15: Images and Pixels (

Lewis Lepton's openFrameworks tutorial series:

The Coding Train tutorial series for Learning Processing and The Nature of Code: ""

Examples used in Workshop for Creative Coding I

I also want to thank my friend Andrew Baker ( who helped me work through, and resolve, issues I was having with calling out the individual images within my arraylist in a continuous loop and giving me guidance on how to use vectors properly to create a gif-effect.

Also thank you to my fellow CompArt classmates for their tips and advice in troubleshooting my codes, and to my module tutor Theo!