Warning: Cannot modify header information - headers already sent by (output started at /home/content/j/j/a/jjacobs19/html/heroworship/wp-content/themes/heroworship/single-work.php:10) in /home/content/j/j/a/jjacobs19/html/heroworship/wp-content/themes/heroworship/header.php on line 13
Codeable Objects « Hero Worship
Hero Worship

Shadow Puppet

The shadow puppet is a mechanically actuated wooden puppet that relies on a set of stepper motors, controlled through a graphic user interface. The project was inspired by an earlier proposal I generated for a set of modular mechanical shadow puppets. My final project lacked the modular features of the original proposal, but traded them for increased fine motor control. The puppet currently features 5 points of articulation, and can eventually accommodate 7 points in total. The puppet is in the form of a dancer, and merges an organic form with a mechanical movement, resulting in an interesting juxtaposition between traditional puppetry and simple robotics. To create the puppet, I designed and built a set of stepper motor controllers and created a basic attachment system for the puppet parts. The puppet is controlled through a graphic user interface that sends serial commands to the microcontroller to turn the steppers.

The puppet features an auto-calibration system that is achieved through the use of hall-effect sensors placed on the puppets limbs. The calibration phase is handled completely on the microcontroller to avoid the latency in motor movement caused by reading from sensors and sending commands via serial. The puppet automatically calibrates itself when it is started based on a set of recursive commands, which allow it to align magnets on the limbs with the appropriate sensors.

work main

Argot

Argot is a search engine and visualization designed to demonstrate it’s decision making process to the user. Argot asks the user a set of abstract questions and returns photos based on the users answers. The system is designed to encourage natural language responses from the user rather than yes/no or one-word responses. Argot uses natural language processing to parse the user’s responses and return relevant photos based on an indexed database of user-generated metadata from Flickr. The visualization component of Argot is a simplified double helix structure that shifts in correspondence to the user’s photo selections. Through the course of using Argot, each person produces their own unique helix according to their responses and selections. The user may also interact with the visualization by selecting individual nodes to see a depiction of the photos and words that resulted in that structure.

Functionality
To evaluate the text of a user’s question, the system uses a fairly standard form of natural language processing. Foremost, the text is split into a list of each individual word. All stop words are then stripped from this list. Each word is then indexed through the semantic structure of WordNet, generating a set of cognitive synonyms (synsets) to which the system “believes” matches exist. The synsets are ordered in terms of their relevancy, prioritizing the most relevant terms first. Each synset contains a collection of synonymous words or lemmas. The more ambiguous the original term, the larger number of lemmas a word will contain. For matching purposes, the system selects the primary lemma of the primary synset for each word and returns it as a key. Each key is then stemmed, or reduced to its root form. The goal of this entire process is to translate the text of the user into its most condensed state so to provide a more robust base from which to generate matches to online texts. The system queries an indexed repository of Flickr metadata to retrieve images that are relevant to a user’s response. The system prioritizes metadata that contains collocations (matches with more than one term). It recognizes and further prioritizes ordered collocations (collections of lemmas that both match and have the same order as the original user’s text.) Based first on collocations, and then one-to-one matches, the system returns a set of ordered images that it believes to reflect the content of the text submitted by the user.

Argot was a part of my masters thesis at Hunter College. You can read the full thesis here

work main

Computational Clothing Design

Art and design are two domains that offer exciting possibilities when combined with programming and digital fabrication. By finding ways to connect programing to the production of personally relevant physical objects, it is possible to engage novice practitioners in creative programming. The combination of digital fabrication technologies with computational design serves as one such connection.

In June 2012, I conducted a computational fashion design workshop with a group of young people at the NuVu Innovation Center for Young Minds. Over the course of two weeks students used a modified version of the Codeable Objects library to programmatically design garments and then used a combination of digital fabrication and traditional crafting methods to realize their designs.

How it works

The software library contains a set of methods that allows users to draw shapes and patterns and then translate those shapes and patterns into physical objects using digital fabrication. To use the library, a user imports it into the Processing environment and then writes and compiles code using the Processing editor. Codeable Objects enables users to define and manipulate basic geometric primitives such as Points, Lines, Curves and Polygons. These primitives can then be collected within Pattern and Shape objects—structures designed to capture surface decoration and 3D structure respectively—to form increasingly complex designs.

Codeable Objects is formulated on an Object Oriented Programming (OOP) paradigm, which lets users create and manipulate collections of geometric primitives—Patterns and Shapes. This structure differs from Processing’s drawing API, which works through a functional programing approach. The structure of Codeable Objects enables users to simultaneously apply transformations to all of the elements in a collection that make up a complex pattern or shape.

The software includes a graphical user interface (GUI) that allows users to preview their designs once they have compiled their code.  Users can also import scalar vector graphics files (SVGs) to incorporate pre-drawn elements into their shapes and patterns.  Codeable Objects supports a variety of digital fabrication output devices by allowing users to save designs to vector portable document format (PDF) files. PDFs can be used by different production tools, including ink-jet printers, vinyl cutters, laser cutters, and computationally controlled embroidery machines; output from Codeable Objects can be fabricated on essentially any x-y axis tool. Three-dimensional structures can be generated by assembling fabricated pieces.

The software also contains a collection of pre-defined algorithmic patterns that can be initialized, including Voronoi diagrams, Koch curves, and L-Systems, and an extensive set of example programs that users can modify and combine to produce individual results. Finally, the software contains some domain-constrained examples that directly support the generation of decorated three-dimensional objects from flat surfaces.

work main

Codeable Objects

Codeable Objects is a library for Processing that enables novice coders, designers and artists to rapidly design, customize and construct artifacts using geometric computation and digital fabrication. The programming methods provided by the library allow the user to program a variety of structures and designs with simple code and geometry. When the user compiles their code, the software outputs tool paths based on their specifications, which can be used in conjunction with digital fabrication tools to build their object.

The first case study for the Codeable Objects library was conducted with a set of methods that facilitated the creation of a laser cut lamp. To test the library, I held a workshop at the MIT Media Lab. Over the course of a day, participants used the library to design, and construct lamps of their own.  All of the lamps displayed in the images were created by people in the workshop.

Download the library here

Get the source on Github: github.com/pixelmaid/Codeable_Objects

View the tutorial: Make Projects

How it Works:
To begin the process, the user writes code using a programing library that contains multiple pre-defined functions for describing the shape of the lamp.

When the code is compiled, the Processing sketch shows a 3d wireframe model of the object body (in this case a lamp). A parabola defines the lamp curve, calculated using the 3 widths set by the user. These widths define 3 intersection points of the parabola.

While defining the shape of the lamp, the user can switch to a different screen that allows them to preview the 2D paths that will be used to cut the lamp on the laser cutter. The library automatically defines which components of the parts will have to be cut first and colors them accordingly.

The user can also switch to a 3rd view where they can preview the decorative patterns they create for the lamp shade. These patterns are generated using Voronoi diagrams. Using Processing and the Codeable Objects library, the user can generate points that will be used to define the pattern. Different orderings of points will produce different diagram patterns. All patterns are automatically fitted to the shape of the shade by the library

A few simple pattern options generated by  code for circle, spiral, sine wave, and  polar rose point coordinates:

Once the user is satisfied with their design, they can press a key to save out their files to vectors in a pdf, which is then cut on the laser cutter.

Finally, using simple crafting techniques, the user can assemble their finished piece.

Note: This project is still under development. Please feel free to use and experiment with the library, and report any issues you encounter.

Creative Commons License

Codeable Objects was developed at the MIT Media Lab in the High Low Tech research group under the advisory of Dr. Leah Buechley

Codeable Objects by Jennifer Jacobs is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at hero-worship.com/portfolio/codeable-objects.

work main

Hacking together a thesis: part 1

As I’ve been working on my current animation-web-photo-what have you thesis project, I’ve spent more time than usual researching tech solutions. This has been something of a luxury as I’ve had the opportunity to experiment with a number of languages and frameworks that I normally don’t get the opportunity to use. On the other hand, it’s also been a struggle for me to choose the tool best suited for the job, because as anyone who codes knows, it’s the worst feeling in the world to be knee deep in one platform and come up against a major structural incompatibility with a core aspect of your project.

When I began this project I knew I wanted to build an interactive animation that changed based on an automated analysis of online user-generated text. Based on my previous animation experiments, I wanted the animation itself to be combination of traditional 2-d frame animation and composited photographs. I knew a little about developing web apps and natural language processing, but hoped the details of the project would develop as I learned more about the technology.

Because of the text analysis functionality, I decided that python was a good choice for a core language. Python also has a number of libraries that allow it to interface pretty easily with the Flickr api and Flickr  was where I had decided to pull images and text from.

I first experimented with Google App engine’s SDK for python, mainly because it was free. I was pleased with it at first, but soon became frustrated because I kept having to modify all of my python libraries to run correctly with the weird version of Python that app engine utilizes. I gave up and decided to build the back end of my site as a stand-alone install of Django on Apache with a PostgreSQL database. So far I’ve been really pleased with this choice. Aside from a bit of a hang-up in I encountered in efficiently serving static media, Django has really impressed me with its well-designed, easy to use data structure and accessible learning curve. (I know I’m late to the game in this regard, but I’ve already decided to run it as the back end for a number of my other projects after this one is wrapped up.)

In terms of hosting, for a while I was messing with Amazon’s EC2, but have since switched over to Webfaction. I think it was the right choice, as EC2 was a bit too barebones for someone with no experience in server administration. (I now know why sysadmins are so justifiably grumpy all of the time; their job is very, very difficult and they deserve far more appreciation than they receive.) I’m still using EC2 instances to run some topic modeling scripts real-quick-like, but all real-time processing functionality has been transferred to Webfaction. Once I was on Webfaction, it was a snap to install all of the natural language processing python libraries I needed (NLTK and Gensim) and their dependencies and get back to work.

Coming next, Part 2: Building an online animation engine wherein I sacrifice all developer cred and choose flash.

work main

Web Periodization

The Web Periodization Project is a research initiative by the Web Ecology Group about Internet trends and phenomena. It examines the interplay between web culture and the worlds of popular culture and mainstream media, and seeks to understand the significance and generative possibilities of individual ideas and practices transmitted through repetition on the web. Although not a perfect distinction, the project differentiates between web and mainstream cultures based on an object’s origin. Mainstream culture primarily originates through long-established distribution infrastructure established generally to generate profit, including television, radio, music, newspapers, and movies. Contrastingly, web culture finds its audience through placement and sharing on the Internet where new platforms and widespread social practices are most useful in explaining large shifts in production of content.

To complement the research, we have developed an interactive timeline of web events associated with our research. The timeline allows any registered user to add or edit items through the web. Any viewer can organize items based on category or date. When a user clicks on an item the timeline pulls up a complete description of the item, a link to a relevant web address, and a navigation system connecting to precursors or descendants of the item. The goal is to provide an accessible and responsive visualization that demonstrates the patterns and connections between recent events in web culture.
View the current timeline here

work main

play_Space

play_Space is a game-development course created for children aged 7-12 at the Education Department, Long Island University, Brooklyn, New York. The goal of the course is to instruct students in the basics of digital games. Groups of students generate and present a game concept. Leading up to this, they play games that illustrate specific elements of the game-development process. They regularly play a card game designed specifically for the class that promotes and tests the understanding of game elements. They also receive instruction in character design and development. Students develop skills in game development and gain experience with the wider process of structuring and enhancing ideas and then presenting them to a larger group.  Each group uses a binder to organize the materials they generate for their game. Activity sheets and visual aids are provided each class session to supplement the students’ learning.  The class has been taught once in 2009. Another segment of the course is being developed to address applied programming. Download the course materials here

work main

Narrative Atlas

Narrative Atlas is a developing application for computational processing of literary texts through user input. The application compares cultural and personal associations that emerge as different people read text. It generates a system that takes into account how any individual’s unique experiences shape interpretation of text, especially the words that lead to differences in interpretation. The underlying thesis is that understanding of language is both a reflection of our cognitive process and a constant director of our streams of consciousness, our feelings, and our understanding of the world. The project has the potential to reveal specific words and phrases that act as points of distinction between individuals.  The project is conducted in collaboration with Leslie Synn, a PhD. candidate at the Graduate Center of the City University of New York. A description of Narrative Atlas was presented at the 2010 Communicating Forms Conference at the University of Chicago.

How it works: Get Adobe Flash player

Narrative Atlas is written in python and utilizes the Natural Language Tool Kit to function. The current functionality allows for direct comparison between different texts to determine how the same terms function differently in different contexts. The examples on display compare two literary passages that share a set of visual objects. For example, we have processed two excerpts through Modes I, II, and III—a description of Wordsworth’s experience on Mt. Snowdon in his Prelude and Edgar Allan Poe’s ending to his short story “The Fall of the House of Usher.”

Future Expansions:
Currently, Narrative Atlas exists as a graphic user interface that allows for base-level Natural Language Processing of a user-selected text within user-defined categories. Our goal is to extend each instance of user categorization of a text into a cumulative process. The program itself is structured to facilitate connections to local or remote databases. This functionality allows choices of a user to be catalogued over the course of the program’s use, providing a dataset that reflects to a degree their unique readership. For example, the categorization of the verbs of a specific text as they relate to the defined actors in will potentially vary from reader to reader. These points of distinction are what Narrative Atlas seeks to aggregate.

work main

Communicating Forms

My collaborator Leslie and I just returned from the Communicating Forms conference at the University of Chicago where we presented our current project Narrative Atlas. Communicating Forms was my first experience at an art history and literature conference so I wasn’t sure what the reaction to our project would be, as it relied extensively on natural language processing to assist in readership of traditional literary texts. We received an amazing response from the rest of the conference however. It was great to see that people were open to the idea and interested in participating in later versions of the project. The fact that our project was referenced in multiple panels and lectures following our presentation was evidence to me of how much people were engaged with it. The multidisciplinary perspective of the conference was pretty eye-opening for me in terms of the feedback we received. Because we weren’t engaging in discussions with other programmers, I got a much better sense of the types of usability that the literary community was interested in for the project. Our discussions made it clear that we needed to focus on developing the online interface for the program as soon as possible. Now that we’re back, I’m ready to get into reworking the alpha of the program into something that we can release to a group of test users in the near future. More updates to come!

work main

Video from Pixelerations Opening

Here’s a video of some of the interactions with my piece during the opening night of the First Works festival. It’s always an adventure trying to install computer vision piece in a new location, but this time it went smoothly, with the exception of one small camera mishap. People seemed to enjoy the work, and it was such a pleasure to have my art included in a show with so many other talented individuals. Looking forward to next year.

work main