Omnigraph: City-by-city Sentiment Analysis using the Instagram API

Omnigraph is a visualization of positive and negative emotions through the USA, using the Instagram API. Ominigraph uses the Instagram API and sentiment analysis to analyze captions in Instagram photos for any city in America. It employs a recursive algorithm that queries the API and, when provided enough data, provides how many positive, negative and neutral captions it found. This is shown through an interactive map built on top of D3.js. Users can also zoom into a particular city and see the results more closely. When entering the site, users are only shown the top 30 cities in the USA, but the can search for any city and see what the results for that city are. The Craziest Portfolio Site You've Ever Seen is an experimental portfolio site I designed and developed for/with Adelle Lin, a spatial designer from Melbourne Australia.

Anything Worth Saying - Exhibition

This was MFA exhibition, held last May. The exhibition consisted of three computers. The first one shows the videos in the database in random order. The second one is interactive, meant for users to choose which videos to watch. The third one is a recording station, meant for users to record their own videos. When users record their videos, these automatically shows up in the first computer and are added to the list of videos being displayed on the second computer. In this way, users can interact with the installation and add to the project their own content to the project.

I Love Islands

A poster.

Kinetic Imaging Poster

For this piece, made for the VCU Department of Kinetic Imaging, I decided to merge the world of kinetic imaging with design, photography, and programming. Rather than designing a poster using a designer's set of the usual digital tools, I created a program/script that creates a poster layout and then sets them in motion.


'Non-Thiking repetition of mechanical forms allows one to concentrate simply on being without the distraction of having to make decisions, artistic or otherwise.' This video is a visual exploration of... repetition.

An Infinity of Worlds

An Infinity of Worlds from Jorge Silva-Jetter on Vimeo. A video exploring infinity and multiplicity. Text read from Einstein's Dreams by Alan Lightman. Music by Balún.

Monument to the Roma

Monument to the Roma from Jorge Silva-Jetter on Vimeo. For my monument, I wish to question the nature of the monument. A monument is a space designed for remembering. It is always permanent. The monument is part of the sedentary nature of human beings. Yet, what happens when we must make a monument for nomads? What happens when we must make a monument for a people that are transparent? We must build a monument that destroys itself. I intend to build a monument grand in scale made of wax. My giant piece of wax will move, just as the Roma did for thousands of years. Inscribed into my monument will be the words “A Monument to the Roma, A people in movement”. Unfortunately, merely by accident, my giant piece of was will grow a wick, turning this endearing monument into a more common object, a candle; A candle made monumental by it’s scale. More unfortunate is the possibly that this beautiful and simple monument might be mysteriously lit. This project was realized as part of my graduate workshop, in Spring 2012. The goal of the project was to study, understand and immerse yourself in a specific culture. I chose the Roma, also know as Gypsies because of my long fascination with their culture, music and way of life. One of the goals of this project was to build a monument to this culture. I created a nomadic monument, a monument that would destroy itself and through this process question the nature of the monument as a creation of cultures tied to a specific place, but possibly alien to a nomadic culture such as the Roma, spread through out the world. Through this project, I ventured the treacherous waters of the moving image, sculpture and plural participation.

A Poster is a Sytem

This gallery shows some of the many, many, many possibilities. This is a poster I recently made for the department of graphic design, here at Virginia Commonwealth University. The poster is shows the name of the lecturer (Cheyenne Rivers), the location, time and date of the event. Yet, what is most interesting about this design (at least for me) is that instead of creating a poster, I created a visual system. Basically, I created a piece of software (with Processing) that outputs a different poster every time it is asked to generate one. In a nutshell, the code goes something likes this: Create a rectangle Put the text in the top left corner and in the middle right Choose a random color After this, the software goes: Move the rectangle Rotate the rectangle Increase the Hue of the rectangle by 1 Place the text (this time, smaller) Repeat The idea is to create a system that is able to be used continually in many different settings. The poster is dynamic and can change at any moment. Also, each poster created is, in its own way, unique. This serves as a methodology in which digital design can achieve something that is basically impossible in its analog counterpart, yet retains some of that uniqueness that is so appealing about analog design. This idea of creating systems of visual design that are dynamic is what I wish to explore in my thesis. More specifically, I wish to explore the relationship between content and form in these systems. These were the final posters selected (in digital format): This gallery shows the poster out there in the world, printed in some parts of VCU:

CodeFriends: A Collaborative Real-time Coding Enviroment

Collaborative real time programming environment with git integration, video chat, and text chat. Users can create projects from scratch, from a .zip or by cloning a git repository. We build a virtual filesystem on top of MongoDB which handles file contents and project file structures. I personally wrote all the API methods for the virtual filesystem. Users can invite users through their GitHub handles and work on project together in real-time. We built text and video chat that can be used to communicated with anyone on the project at any point. Text chat uses a socket connection to communicate with the server and save messages to MongoDB and video chat uses a WebRTC connection to reduce bandwidth on the server side. Users can also run their code and display it in the browser console. For security reasons, we use compilebox to compile our in the cloud and send it back to the client. For our stack, we use a single page application built on Angular.js. It communicates with our server through http. Our server is built as a REST API that provides information like users, all users projects, and detailed project information. Once the user is authenticated, 3 socket connections are setup. Our first socket connection handles chat messages and project-wide events (a file being created, a folder being moved). With this events system built with sockets, we can keep all users in a project completely synced at all times. Our files server handles the real time reading/writing of documents and handles conflicts between these through operational transformations. This is abstracted away through the use of ShareJS. Finally, we communicate with another service to run our user's code. All this is deployed using docker containers for the different parts of our application, making replicating our server environment on our local environment relatively easy. One of the things I'm most proud of is our testing suite. Because of the importance of our RESTful API, we decided to run a full suite of integration tests for every API endpoint. We have multiple tests for every single route, totaling around 40 tests. It took a lot of work to convince my team to take these seriously, but the testing suite proved itself very useful every time we ran into bug. Running our testing suite and making it pass meant that the bug was fixed, and when we noticed there was still a bug, we wrote another test for it. We automated this to the point where the test would delete the complete testing database and re-create for the test. Oh, and you can totally use it to collaboratively send messages to someone who just moved to the left coast. Pictures and all.

Click On Jorge: An HTML5 Canvas Game With My Face

ClickOnJorge is a simple game made around the wonderful Jorge (Yes, myself!).  The user has 20 seconds to  click on the highlighted Jorge as many time as possible. If he gets a high score, he gets to be on the high-scores page.

Design Inquiry Poster

A poster I made for the Design Inquiry lecture, held as part of VCU's Object+Methods lecture.

Anything Worth Saying - Interactive

In an attempt to see one of my other project (Anything Worth Saying) in a different light, I attempt to create an interface by which to access the videos of different people talking about "Anything Worth Saying". Rather than trying to excerpt control or even 'organize' this footage, I built an interface where these videos move at will; bouncing around the screen.

N! Possible Routes: A Travelling Salesman Game

N! Possible Routes is an extension of a very basic question: “What’s the quickest way to get there?”. Using web technologies, a bit of math and a lot of computer processing N! Possible Routes takes regions of the worlds and tries to find out all the possible ways to go between several places. Then, it lets users try to find the quickest (or slowest) way around and provides duration and distance information for every single route. Instead of providing the user with the answer to this question, the project provides a way for the user to find out for himself. The question turns into a game of finding out the quickest route between several places.

Anything Worth Saying

Interested in finding stories that tell themselves, I decided to go out on the streets of Richmond and ask people "Do you have anything worth saying?". I help up a sign with this question and convinced as many people as I could to say something to the camera. These are their stories. This is what they have to say.

This is Your Script

Questioning the idea of authorship in the creation of narrative and questioning the computer human relationship (typically based on the human ordering a computer to execute certain events and the computer following these instructions), I asked many individuals to submit to me differente things that I could do on my video, ways in which it could be shot and other 'wildcards' concerning how these scenes would be executed. I then created a script that generated  my script for the film. I, as the actor, would execute the instructions the computer has given me. The actor becomes an agent in service of the algorithm. Through these executions a narrative is created, not so much from the script itself, but from the process of executing these interactions  The execution of the instructions become the narrative, rather than the script itself, but the script serves as that starting point on which the narrative of the video is based. "I don't want to spend my life being pushed around by a bunch of artists." - John Cage One of the main ideas of this video is the distance between the maker and the final result. While the whole process is initiated and ideated through the maker, the maker does not have complete control over the final piece. The final piece is intended to incorporate and show the unexpected. It is intended to be an exercise in which the make learns, rather than teaches. One of the most interesting aspect about this project is how it forced me to have these chance encounters with a lot of people around the area. I met and talked to people who were curious about what I was doing, people I had to interact with because of my instructions, or just people who wanted to get some attention from the camera. These encounters with the people out on the street provide much of the richness of this video. Since this is a generative system (of sorts) it only made sense that this video should be done more than once. For that reason I did another shooting of this video: The results are quite different. The interaction with other individuals is not as present as it was on the first instance of the project. Yet, for some reason, the permutation of events/instructions generated are slightly more embarrassing, thereby highlighting the difficulty in executing these instructions.

A Book for the Roma

Book Making from Jorge Silva-Jetter on Vimeo. Through my exploration of the Roma culture, I decided to make a container for my loose pages that resembled my earlier monument. The book, in a way, makes itself. I am only a custodian of the process, carrying it out as I see fit, but the final result has no relation to my own creations. Here are some of the pages on the book dealing with my explorations of the Roma people: