Hero Worship

Codeable Objects

April 17th, 2012

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

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.

Hacking together a thesis: part 1

March 23rd, 2011

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.

Communicating Forms

October 25th, 2010

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!

Video from Pixelerations Opening

October 20th, 2010

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.

Manikin

October 18th, 2010

Manikin reveals its internal structure through the user interaction. Manikin takes the form of a multi-user game that is set in a fictional city surrounded by a dome. In the city, players have the ability to interact with and manipulate the city’s inhabitants in two different modes, vector mode or developer mode. Each mode gives players a different perspective of the game and provides them with different options for interacting with the citizens of the city. The game play is organized around the same principles and rules that loosely define object-oriented programming. While experimenting with different strategies, players discover these rules and manipulate them in ways that allow shifts from centralized to decentralized systems. Players receive feedback in the form of game response.

Developer View
developer-view

Vector View
player-view

Hardware Setup
hardware_setup

Glasshouse showing at Pixilerations!

September 20th, 2010

Glasshouse will be featured in Pixilerations as a part of the FirstWorks festival in affiliation with the Rhode Island School of Design, September 30 through October 10, 2010. If you’re in Providence, check it out.

TOSAT

August 28th, 2010

Man oh man, it’s been a while. Really looking forward to beginning the school year, starting to teach a new class, and wrapping up my thesis. There are a lot of exciting things planned for the next couple of months. In the meantime, here’s a quick piece I did for the Toronto Street Art Takeover. The event was set up once again by our illustrious friends over at Public Ad Campaign(click the images for large versions).

The first and second are the final piece and its installation in a public bus shelter. The third is the initial sketch I painted it from. The piece itself is 67 x 47 inches and was done in acrylics. I need to paint more. You can see all the other amazing work from the project here: http://www.publicadcampaign.com/tosat/

Summer Research

July 11th, 2010

Currently I’m doing a summer workshop with several different groups of high school students on new media literacy- specifically I’m spending a great deal of time having them analyze a variety of online tools and platforms that they personally rely on. This process has brought to my attention some specifics regarding the issue of online youth empowerment.

Within the groups I’m working with at the moment, an interesting dichotomy has emerged between the platforms they accept and those they reject. For the platforms or tools that they reject, they either exhibit extreme skepticism of their utility and a fear of privacy issues. These hesitations do not come from the direct experience with the platforms themselves, but rather through a general sense of wider privacy debates taking place in the media, and a youth cultural stigma against online interaction.

For the platforms that they do choose to accept, they tend to have a sense of the practical utility. They however have a diminished, if not completely non-existent sense of the larger functionality of the platform, particularly on issues of automated personalization and data ownership.

I’m continuing my work with these students and additional groups throughout the summer and into the fall. Currently they are working on analytical projects, but gradually we will be moving in to more practical projects based work. My goal through these workshops is to continue evaluating this dichotomy of acceptance and rejection, and also conduct research to address a number of questions that have emerged.

First, what criteria determine which platforms are accepted and which are rejected? For example, students are often dependent on facebook but reject twitter completely. There are clearly some obvious reasons for this, but interestingly, I’ve found so far that their largest criticism of Twitter is that it is a network for “stalkers”, however they don’t apply this same criticism to facebook, which shares many similar features. Often students seem to feel more comfortable using networks in which the parameters for use are clearly and strictly defined. Platforms with a more open-ended approach are generally disregarded. This pattern coincides with a greater educational trend that my colleagues and I have been encountering, where students are increasingly uncomfortable receiving assignments that do not have explicitly defined objectives and guidelines.

Second, both as educators and media makers, how do we foster a more sophisticated understanding of online functionality in youth users who both rely heavily on these systems, but are unable to leverage them in ways that maximize their personal, professional and social footing?

How do we allow them to simultaneously be aware of some of the potential risks and disadvantages of these platforms, while still enabling them to take advantage of the opportunities and benefits they offer?  Overall, how do we simultaneously create technical platforms and educational systems that create a sense of personal agency?

Ada Lovelace Day Tribute

March 24th, 2010

For my Ada Lovelace Day Tribute this year, I would like to recognize Gabriella Coleman. Gabriella is a professor Department of Media, Culture, and Communication at NYU with a background in anthropology. She studies the unique cultures of hacking, programming and free software politics. I first had the pleasure of meeting Gabriella at the Open Video Conference in 2009, where she gave a remarkable lecture on the relationship between computer code and poetry. Since then, I have continued to follow her work eagerly. Her current research into the parallels between trolling culture and trickster mythology has been very influential in my own study of Internet communities. In my experience with digitally oriented academic study, Gabriella’s work by far represents some of the most interesting, critical and insightful work I have encountered.  Her perspective provides a critical counterpoint in a field often dominated by more qualitative analysis. She is also an all around awesome person. Her work and advice have been incredibly helpful to my personal work as  a digital artist.

P1060392

If you are not familiar with her work, check it out. It is well worth your time.

Ada Lovelace Day is an annual global celebration of women in technology and science. It is named after Ada Lovelace, who was arguably the world’s first computer programmer.  If you know of a woman working in this field  who you believe deserves recognition, (and I’m sure you do) write a blog post about her today!

First 50 Frames

March 15th, 2010

albeit a bit rough. Still need to do the tweens

Browser Keyframe Roughs from jennifer jacobs on Vimeo.