Non posso più restare qui. Momento per momento vado avanti. È il flusso del tempo che non si può fermare, non posso farci niente. Io vado.

Una carovana si ferma e un’altra riparte. Ci sono persone che potrò incontrare ancora, altre ancora che non rivedrò più. Persone che passano senza che io me ne accorga, persone che incrocio appena. Man mano che li saluto, ho la sensazione di diventare più [puro]. Devo vivere guardando il fiume che scorre.

Prego con tutto il cuore che solo l’immagine [di colui] che ero resti per sempre al [vostro] fianco.

Grazie di avermi salutato agitando la mano. Grazie di avermi salutato agitando la mano molte, molte volte.

— Banana Yoshimoto, Moonlight Shadow

FancyText – or emulating text-rendering:geometricPrecision in Firefox 4

I just wrote FancyText, a tiny addon for Firefox 4 that emulates the text-rendering:geometricPrecision CSS directive.

It’s a bit of an hack because it does its thing by asking Firefox to rotate all pages by a fraction of degree. This rotation is not really visible but it’s enough to make Firefox stop using the hinting of the font, therefore yielding antialiased text with no hinting (i.e. geometricPrecision).

It’s worth noting that this method can be used also in normal webpages, because all it takes is adding -moz-transform:rotate(0.000575deg); where you would normally apply text-rendering:geometricPrecision;

If you’re on Firefox 4 on windows, you can see the effect of this method (and of FancyText) in this example. In each pair of lines, the top one is the normal Firefox rendering whereas the bottom one is as it appears with FancyText.

The quick brown fox jumps over the lazy dog 0123456789

The quick brown fox jumps over the lazy dog 0123456789

The quick brown fox jumps over the lazy dog 0123456789

The quick brown fox jumps over the lazy dog 0123456789

The quick brown fox jumps over the lazy dog 0123456789

The quick brown fox jumps over the lazy dog 0123456789

Bear in mind that this likely increase the CPU and GPU loads and that I tested it only on computers running Windows 7 with hardware acceleration enabled.

FancyText is available on AMO.

Preliminary support for videos in ImageTweak

Today I finally had a couple of hours available to work on ImageTweak and I decided to start by adding some new feature (way more interesting than fixing bugs!). The result is that now ImageTweak can work its magic (this word is severely abused lately) on videos as well. Mind you, only for native video (i.e. those supported by the HTML5 <video> element) and not for plugin videos (flash-based as well).

ImageTweak preliminary support for video

ImageTweak preliminary support for video

Right now it’s nowhere near an usable state because the user controls where thought for images and obviously video has different needs. I’ll need to try to figure this out well before pushing a beta. The good news is that most of the functionalities work out of the box just by adding a couple of abstractions. For example, zooming and rotations work already, and so does resizing.

Preliminary support for videos in ImageTweak

Zoom and rotation work already

Now a new problem arises… since it won’t work on just images anymore, should I change the name ImageTweak? If yes, how should I call it?

Page suggestions via user tracking

For a site I’ve been working on I’m developing a PHP module that allows to display page suggestions based not on the page content but rather on which pages past visitors requested.

The rationale for this is – intuitively – that the pages visited by the majority of  past visitors probably are the pages that the majority of future visitors could be interested in. It actually may sound more complicated than it really is: what it means is that when a user requests a certain page, the module extracts from the server log which other pages have been visited the most by past visitors of the current page.

Starting from this simple idea I’ve been adding a bunch of refinements, such as filtering out pages already linked by the current page, that try to improve the quality of the suggestions. As a bonus, I implemented a (rather basic) visualization of the scores as computed by the module. This can be a quite handy way to spot immediately if there are pages that are not performing really well. Visualization of the pairwise "relatedness"This is an early screenshot of this visualization (the column on the left contains the name of all the pages on the site and the column on the right contains the corresponding number of page views) that already highlights some problems, namely that the two top visited pages are poorly linked to the rest of the site (the corresponding row is completely red almost everywhere).

Obviously this approach is far from perfect, but I think is an interesting concept nonetheless. I already have some ideas about how to further improve this method – for example by taking into account not only the current page that the user is viewing but rather all pages the user has visited up to now. Also, since the website has (for now) very low traffic, scalability is not (yet) a problem but obviously for this to be really useful it should be made as scalable as possible.

Social networks 3.0?

Hello everybody, this is my first post on this blog. Actually I think it’s my first serious post on a blog.

During the last months I had to do with context-aware applications, social networks, user experience and this kind of stuff for my master thesis in Media engineering. I still haven’t choose any project to work on but I came out with some considerations on the actual social networks.

At the moment Facebook seems to be the best network for number of users, features and API. Google Friend has much less users but gives useful informations about the friends geolocation. Is this so revolutionary? Is this all we could ever have?

For sure I’m able to find my old schoolmates, to keep in contact with some friends living far away, to write my short notes on Twitter and to recall the face of the girl I met last night. But I think we could have much more!

Imagine a service that could manage the relations between people. A service that let the user control his personal data and choose who have the permit to see these data. I’m not thinking about an ethical Facebook but an innovative platform that could be used as the base layer to build applications like Facebook, a pervasive game, a restaurant app that consider my friends preferences to give better suggestions, a tool for keeping my contact list always updated and much more.

Imagine a social network open, free and distributed.

I’d like to know what you think about this idea.