Archive for the 'web' Category

Friday, October 16th, 2015

They say “build and share virtual reality for everyone”: relies on webgl and threejs to deliver a browser based tool that lets users create simple virtual reality pieces that can be explored using google cardboard. I tried and it took me no time to make a simple scene. As far as I know, the barrier of entry for VR can’t get lower than this, both in terms of creating and sharing. It is pretty fun to use and delivers interesting results in five minutes. I still don’t know if I’ll ever actually use it but I seriously recommend you to check it out. As VR becomes more relevant to the regular digital user, more of these tools will emerge offering simple ways to make and share VR, and I believe a lot of interesting stuff will emerge from this space.

PS: here is my profile page in case I ever do something worth publishing with this toolkit. For now I can already say it’s a useful prototyping tool for VR experience development and I have successfully used it a couple of times.



Delicious, 4397 bookmarks later

Sunday, March 8th, 2015

I posted my first bookmark to delicious on 7/13/06, back when it was called In spite of having changed owner a couple of times, and survived a couple of not very fortunate redesigns, delicious might be the online service that I have most consistently used to aggregate annotated content from the web. Gone are the days when I interacted with it socially; most of the users in my network haven’t used it in a very long time, but I still find pleasure using it to collect interesting links and track my browsing preferences by exploring my data. Unlike other services from that era, delicious has kept available a simple API without forcing any horrendous authentication protocols on their users. This has allowed me to keep my delicious tags page alive —a simple sketch where I render all my tags using size and color to visualize frequency of usage. At this point, it’s pretty clear what my favorite webpages and websites are about.


I wonder if any knowledge can be inferred from the tag diversity expressed by an active user in a given amount of time. Does it reflect something about the user’s vocabulary as well as the diversity of their interests? Is there something in common about a group of users that grow their collections of tags and bookmarks at similar rates even if the bookmarks and tags have nothing in common? Can this behavior be evidence of a personal and/or philosophical disposition from users towards knowledge? In section 2.2.2 of Mr. Palomar (The cheese museum), Italo Calvino conjectures that a proclivity towards or against sample diversity will influence —and even shape— the nature of the knowledge acquired from a given experience, in his case, the quest for truth in the appreciation of a particular cheese.

If you have been a delicious user, you can visit my delicious tags page and pass along your username as a parameter. My page will return a nicely crafted version of your delicious data, perhaps helping you learn something you didn’t know about yourself. Here are some examples:,,,,,,,,,,

PaperJS vs TwoJS

Thursday, August 14th, 2014

Inspired by a morning discussion with Tom White aka dribnet about javascript and 2D vector graphics, I came home tonight determined to find out how far could I get in ten minutes using PaperJS on the one hand, and TwoJS on the other hand, with the sole constraint that somewhere along the way I had to make use of SVG.

For those who don’t know, PaperJS is the web-based heir of Scriptographer, a Javascript plugin for Adobe Illustrator that lived up until CS5. As far as I know, PaperJS is far more powerful than it’s predecesor, and has been designed keeping in mind the interactive, object-oriented nature of the contemporary web browser.

Similarly, TwoJS is a relatively new web-based 2D drawing library inspired by the WebGL javascript library Threejs.

After ten minutes of PaperJS I produced a simple particle raster script that uses an image to draw a collection of SVG shapes over a grid, and I added some color manipulation and particle scattering functionality to produce images like the ones featured below, using pixel data from grayscale photographs of Brigitte Bardot and William Burroughs.

TwoJS took me in a completely different direction. All I did was write a script that pulled SVG code from the loaded page source, and created animations from it. Here are two examples: I<3VR and rolling W.



Wemolab GIF commissions

Tuesday, August 12th, 2014

I have been using tumblr and twitter connect with gif artists in the web and commission them with making small animated loops inspired by the Wemolab logo. Here are some of my favorite results. Beautiful.

By zolloc:


By Dave Whyte:



By Maxwell Ingham:


IML400 Spring 2014

Monday, May 12th, 2014

I just finished teaching IML400 in USC for the third time. Over the winter break I had a chance to review my Syllabus and improve it, based on a few new insights I developed at the time. The course title itself is “Creative Coding for the Web”. When I was invited to teach it I was given freedom to propose my own curriculum, so I started by deconstructing its name. The result couldn’t hit closer to home. To me, creativity, programming, and the web are three of the most important things a human of our time should care about, comic books and ice-cream being the other two. They connect rational thinking with human imagination and communication in ways that have changed our world beyond our wildest dreams. My core goals have remained the same (to encourage a design-first culture supported by programming as a new kind of literacy, and the web as the mother of all media), but my approach to introduce them as a source of inspiration to students has become more focused. Here is some of what I’ve learned:

  • Design is a lens with variable focal length. Learn design first, and you will learn to see.
  • When it comes to programming, sink or swim is the way to go.
  • When it comes to sink or swim, don’t forget to make it fun.
  • Fun is good short-term, but it burns-out fast. Long term requires a deeper kind of value.
  • Let yourself sink if you want to go deep.
  • Too much freedom is confusing. Too much direction is frustrating.
  • To be creative you need to create something. Ideas are nothing without a good execution.
  • The web is your key to the world. Own it. It will never stop changing, so you should never stop learning.
  • Has this happened to you?

    Wednesday, August 21st, 2013

    I recently rediscovered a video recording iPhone app called 8mm. Evidently, it makes your mobile video look like an old movie filmed with an eight millimeter camera.

    Every time I go for a walk I take my phone out to record locations, landscapes, moments, or anything else that calls my attention. Last Wednesday I was walking back to the office when I saw these two guys asking the mailman to take a picture of them using a picturesque Venice wall as a background. I walked right in the middle of their interaction and recorded them as I walked by. The mailman took off in my direction and the other two guys just walked away into Rose Ave.

    Then yesterday while browsing through my Tumblr dashboard I stumble upon the picture taken by the mailman in some Hip Hop blog I follow. The original post is here. The blog I follow and the original item were separated by a long list of intermediaries (more than 20).

    This is the first time I find myself experiencing a moment where the following three conditions are satisfied:

    1. This moment is of absolute no consequence.
    2. This moment is recorded by me and by at least one stranger.
    3. The stranger’s recording of this moment finds it’s way to me through an online social network.

    This might already happen to a lot of people, and I am expecting it to happen a lot more frequently in the future. For now, I am just going to upload my movie somewhere and somehow connect it to that picture.


    Learning AngularJS

    Thursday, June 20th, 2013

    We just got a contract job at WemoLab to develop a mobile web app for a sports betting startup called Joust, and after a week or so of deliberations we decided to build the whole thing using an AngularJSNodeJSMongoDB combo, pure javascript from end to end.

    I have to say AngularJS hasn’t been exactly easy, but there have been several times where I have been surprised finding extremely simple ways to set up certain things, especially when binding event triggered method chains across completely separate scopes. It’s kind of great, even though all those directives are driving me crazy and the learning curve has been steep as hell.

    Programming languages are used to create functional worlds. In these worlds, new languages are created to create new worlds within the older ones. They are like stories within stories within stories, except in the case of software all these stories have a life of their own. It is natural to fantasize about a esperanto of programming, or a universal language that could be used to program anything. Today, this language is a dream, but at least in the web, javascript is as close as it gets to being the language of god, and AngularJS, together with NodeJS and a document/json based database solution like MongoDB, are a good reason why.