Archive for the 'Programming' Category

instructions, limitations

Saturday, May 3rd, 2008

Instruction set is a recently launched site that gives some instructions every month and asks for implementations in code. Think Sol Lewitt goes 2.0 (sorry I couldn’t resist). It is a beautiful simple idea and It’s stealing me lots of braincycles (see).

I’ve heard raindrops here and there about design by limitation lately. Number of chars in twitter, flickr video length, 1 photo/day in fotolog… There are a couple of limitations in instructionset which I missed at first but on a second thought I found interesting:

  • There’s no clear way to post a result(images, applets, audio…).

    You can always give a url, but it is not even suggested. I thought it might be an obvious improvement, but after trying to come up with solutions for the 2 first instructions, I’ve discovered that results could be a distraction. Instructions are about language and interpretation. I’ve found myself repeating the sentence, trying to define exactly every word, looking for a fold, or a flaw in which to introduce a deviation… Thinking how they relate to the programming language, how I relate to the programming language (specially with the first one “draw a straight line and follow it”)… I think that this relationship between everyday and programming language is a powerful one to explore.

  • There is no form of comments/discussion other than the description of you implementation.

    After seeing some of the contributions, I’ve found interesting approaches and I’d like to give feedback, but given the overwhelming noise ratio in today’s software playgrounds, I appreciate that there’s no way to do it. Paraphrasing Cage: just respond with your implementation.

Now, I don’t know if these are intended features or result of an early release, but if one could vote against new features… :)

tags:

Penner easing for c++

Monday, September 24th, 2007

As I said last week, I’m also using robert penner’s easing equations in openFrameworks, so I’ve ported them to c++.

This has been relatively straightforward, but, as with the actionscript to java conversion, I’ve run into some nuances between languages and I’ve definitely learned the hard way (read “wasting some hours of my life”) why pre and post increment operators can be evil.

Grab them here

For usage, you can have a look at the openFrameworks app provided. If you want to have a quick glance at the types of movement, see the easing applet (p5 version).

Being this a programming exercise, it will have improvable things for sure. I’m thinking of some, but if you know anything, please let me know.

tags:

penner’s easing equations processing library

Sunday, September 16th, 2007

Being an actionscript head, I’ve frequently used rober penner’s easing equations in processing*. To avoid copy/paste each time I’ve packed them as a processing library.

While I was at it, I discovered a couple of implementations (1, 2), but I was almost done, and wanted to learn how to make processing libraries anyway.

So in the hope that it is useful to somebody, here it is:
http://jesusgollonet.com/processing/pennerEasing/

*I’m also using them in openFrameworks, so I’ve begun porting them to c++ too. They’ll be here when I’m done.

tags:

actionscript 3 syntax highlighting for jEdit

Tuesday, August 28th, 2007

Still happily living on jEdit for most of my scripting. I haven’t found an actionscript 3 edit mode, so I’ve made one. It is based on the original actionscript.xml and the Flash CS3 AsColorSyntax_3.xml file so it should have everything you can see colored on the IDE.

This edit mode doesn’t have any as2 specific keywords, so if you have to work on as2 don’t delete the original. Otherwise, you can just replace your original actionscript.xml file (you’ll find it problably in “c:\program files\jEdit\modes” if you’re on win xp) with this one. Make a backup of the original, just in case.

Grab the actionscript 3 edit mode for jEdit

tags:

php and mysql in different time zones

Friday, April 13th, 2007

Just a quick code tip for working with dates in mysql and php.

I’m building a script to regularly mirror my last.fm recent tracks to a mysql database of my own. I’m interested in experimenting with daily and hourly statistics.

One problem that has taken me some head scratching has been the fact that the last.fm recentracks web service gives me the date a given track was played in a timestamp of my current timezone (+02:00 , Europe/Paris, as I’ve just learnt), but my web server is on a different timezone (-05:00, America/Los_Angeles), so when I try to insert a date in the database, even though I’m giving it a timestamp, it gets interpreted as being 7 hours less than it actually is. So a track played at let’s say 31 Mar 2007, 23:55 would be stored as having been played at 31 Mar 2007, 16:55. Not good.

Not wanting to fiddle with configurations or anything beyond my knowledge, I discovered that I could set the timezone in both php and mysql for a given script or db query.

Setting the timezone in php

If you want to know which timezone your server is in, you can guess it with


date_default_timezone_get();

Which should give you a string like “America/Los_Angeles” or any other of the supported timezones list

If it is different than your desired timezone, look for the one you want in the list and before doing any time operation, call:


// set your timezone as gmt +02:00
date_default_timezone_set("Europe/Paris");

From then on, all your php code should understand timestamps and dates in that timezone.

Then for mysql use CONVERT_TZ

Even though it is corrected in php, you’ll have to do it also when inserting information on you mysql db, because it will interpret timestamps again in its time zone. You can guess which is it by having a look at the system time zone variable.

In my case, after trying some hacky alternatives I discovered CONVERT_TZ in one of the latest comments in this post

From the mysql manual


CONVERT_TZ(dt,from_tz,to_tz)

CONVERT_TZ() converts a datetime value dt from the time zone given by from_tz to the time zone given by to_tz and returns the resulting value.

You have to pass it the timestamp, current timezone (’SYSTEM’ is the server time zone) and target timezone and it happily converts between them.

So now my query would look like this:


$query = "INSERT INTO recenttracks (artist, name, url, date, type)
	VALUES ( '$lastFmTrack->artist',
	'$lastFmTrack->name',
	'$lastFmTrack->url',
	CONVERT_TZ(FROM_UNIXTIME(’$lastFmTrack->playDate’), ‘SYSTEM’, ‘+02:00′), 
	‘$lastFmTrack->type’)”;


Basically that’s it. Hope it is useful for someone.

Mind you, I’m nothing of an expert in php or mysql, this is just a method which worked for me. Corrections are welcome.

tags:

emulating toshio iwai

Sunday, February 11th, 2007

This is an attempt at emulating a simple but beautiful piece that toshio iwai showed at the last ars electronica. Basically a video is divided into different portions and each of them is delayed by a certain amount of frames.

Thanks to the magic of openframeworks, it is realtime video.

versioning-toshio-1

versioning-toshio-2

versioning-toshio-3

More explanations, some code and a video coming soon.

tags:

Music and memory: A small (frustrated) last.fm project

Tuesday, January 30th, 2007

Antecedent:

A couple of months ago, having a look at some old stats in my last.fm profile, I realised how much I could remember a given time by just seeing the music I used to listen to (that old (unfinished?) project by marcos weskamp and didier hilhorst came to mind inmediately).

The source:

Last.fm keeps weekly data about what we listen to. We also can (could) construct a radio link based on various artists. For example:

lastfm://artist/bibio/similarartists

The application

A web page that, given some artists that I used to listen to in a given time (e.g: december 2005), constructs the url of a last.fm radio with those bands, so I can somehow “transport” myself to that time by listening to similar music…

And I’ve done it, but…

Last friday, the multiple artists station feature stopped working. In fact, I had some suspicion, but I thought that… nothing. I didn’t think of it and kept working.

So it is basically useless in its actual form, but it was finished (as a proof of concept, at least), so here it is:

Last.fm time machine (if it had worked i’d have looked for a better name).

I’m not sure if the idea can take another direction to become useful. I’ve thought of having a look at xspf to see if I can generate playlists instead of radios, but by now I don’t really know. If you have any ideas…

At the very least, it’s been useful to clean the dust over my php, use the last.fm webservices, a little bit of ajax (thanks mr.sofa naranja) and above all, to finish something.

By the way, avidos let me stay in their hosting to do some tests while mine hadn’t php5, and ignasi tudela tried to help me with the design, but apart from using Georgia and taking his colors for the different seasons, I didn’t pay him much (deserved) attention, and you can see the results. Thanks to both.

tags: