September 16, 2005
| Programming |
programming
|
From absolutely nothing to a running rails app in under two minutes: 2 mins video. [Before I linked to a video on "how to build a blog engine in 15 minutes with Ruby on Rails", You now save 13 minutes for your first jaw-dropping rails experience!
]
September 06, 2005
| Programming |
programming
|
Web 2.0 API Reference. Because the world is your programmable oyster. Have fun.
UPDATE: And there is alo WSFinder.com --- The Web Service and Open API Finder.
August 31, 2005
| Mozilla |
mozilla
|
| Programming |
programming
|
I was thinking about IdentityBurro. [IdentityBurro is a Greasemonkey script that, for example, when you are on the page of user phauly on del.icio.us, inserts into that page some links to the page of user phauly on flickr, 43things, webjay, last.fm, ...]
I was thinking that instead of simply inserting a link I could directly insert into the page some photos of the user on flickr and some things he has been doing and some songs he has been listening. So basically it would be easy enough to produce a page like the ones in which technorati aggregates a lot of information about a tag (example) by showing some photos of the user from flickr, some URLs bookmarked by the user on del.icio.us, etc.
But why inserting all this information into a, for example, already existing flickr page? Why not creating a new page at all?
So the question is: can Greasemonkey be used to create a page from scratch and not just inserting some HTML elements into an already existing page? I guess the answer is yes but are there already examples out there? And, in this case, what fires the script since there is no originating web page? Could I run it just by typing in the address bar something like greasemonkey://my_aggregator.user.js?
I guess this userscript behaviour is in the air and actually, while I was typing this, I kinda remember that was propably jesse who was pondering this possibility loudly enough for me to hear it.
August 29, 2005
| Mozilla |
mozilla
|
| Programming |
programming
|
| Social Software |
social_software
|
Identity Burro Project Page.
[Impatients can check the Flash video or the Screeshots or directly install the script (current version 0.4).]
Identity Burro is a Greasemonkey script for Firefox that gives quick access to all the public aspects of a person: photos, blog, preferred sites, preferred songs, etc.
Precisely, when you navigate on the Web page of a certain user on (for example) Flickr, it inserts into the Web page links to the page of the same user on , Del.icio.us, Technorati, CiteULike, WebJay, Last.tm/Audioscrobbler, Rojo, 43things, 43places, AllConsuming, LiveJournal, Simpy (see Screenshots). And of course it works also on the other sites, i.e. when you are on del.icio.us page of user "alice", links to the userpage of "alice" on the other sites are shown (see Screeshots).
An example? Have it. danah seems to use consistently the nick "zephoria" on social sites so you can try the extension with her Web presence (if you prefer to first watch and then try, you can see the Flash video of what will happen).
1. Just install Identity Burro script (or see install howto ).
2. Then visit (for example) zephoria page on Flickr or zephoria page on last.fm.
3. Now on the left of the flickr or last.fm danah's page, you see a box with some icons that links to the pages of danah on the other social sites (see screenshot).
4. You can also expand the box to see more descriptive text for links (see screenshot).
5. If you click, for example, on the del.ciou.us icon, you land to zephoria page on del.icio.us.
6. Can you think of another? Well, feel free to add it in the comments.
So basically when you find an interesting user on, say, del.icio.us, you can try to see (one-click-away) her photos of Flickr, and her blog, and her preferred songs on Last.fm and Webjay, and the things she wants to do on 43things, and ... Of course, sometime the user will have a different nick on different sites and in this case the script is not that useful (however see possible inprouvements) but, hey, it is only one-click-away so you can give it a try anyway, right?
Possible improvements
1. Assuming that a person has the same nickname on all the social sites is of course working on very limited cases. So what do we need? We need a parent place where an user can reasonably keep a link to all her identities (and possibly expressing them with a microformat, hIdentity?), and what better than your own blog? Possibly we could use OpenID, a decentralized identity system but I haven't thought too much about it. Do you have any suggestion?
An OpenID identity is just a URL. You can have multiple identities in the same way you can have multiple URLs. All OpenID does is provide a way to prove that you own a URL (identity). And it does this without passing around your password, your email address, or anything you don't want it to. There's no profile exchange component at all: your profiile is your identity URL, but recipients of your identity can then learn more about you from any public, semantically interesting documents linked thereunder (FOAF, RSS, Atom, vCARD, etc.).
2. From a visual point of view, the HTML element inserted in the HTML page (divs, links, etc) inherits the CSS style of the current site. For example if flickr would have a black background and links in shocking pink, the IdentityBurro box would have them as well. Since I would like to have the same box, with the same colors and spaces between lines and fonts in all the possible sites, the question is: there is a way to clear all the previous set styles for an element? a sort of resetStyle? or somewhere a list of how all the CSS properties are set by default? If you have suggestions, the comments may be a good place where to place them. [In the code there is the variable resetStyle that tries to reset all the styles and it is prepended in every your_element.setAttribute("style",resetStyle+ "your specific inline css here")].
3.Still some sites to be added such: furl, wist, blogmarks, tagsurf, upcoming, jots, podcast, bloglines, smugsmug, bookswelike, kinja.com. Any more?
4. creating an ajax method that query google or yahoo! for "<username> blog" and creates a link with the first returned result (possibly the highest in the two combined queries) with anchor text such as "guessed blog of <username>". For the ajax-power, I guess I need to steal, ... ehm, take inspiration again from the fantastic bookburro code! ![]()
5. peritus was thinking about doing something with FOAF information as well. I can't remember now precisely what.
Thanks to:
- Jesse for providing the fabolous BookBurro Greasemonkey script and releasing it under Creative Commons "Attribution-ShareAlike 2.5"
- Peritus for improuving the script in various ways.
- The mozilla community at large for providing Firefox, a web browser it is fun to play with (and hopefully, in the process, improuve it a bit).
- Otis Gospodnetic, creator of simpy.com, for sending me by email the code for adding simpy to the list of supported sites that was introduced in version 0.4.
Licence:
The script code is released under a Creative Commons "Attribution-ShareAlike 2.5" (since BookBurro code was). So feel free to play with it, improuve it, redistribute it, ...
How to install Identity Burro
1. Install the Mozilla Firefox browser;
2. Install the Greasemonkey extension;
3. Install the Identity Burro script (current version 0.3).
[If you have problems, check the Flash video]
Screenshots
Identity Burro collapsed on danah's page on del.icio.us

Identity Burro expanded on danah's page on del.icio.us

Identity Burro collapsed on danah's page on flickr

Identity Burro expanded on danah's page on flickr

Identity Burro collapsed on danah's page on technorati

Identity Burro expanded on danah's page on technorati

Identity Burro collapsed on danah's page on citeulike

Identity Burro expanded on danah's page on citeulike

Identity Burro collapsed on danah's page on last.fm

Identity Burro expanded on danah's page on last.fm

Identity Burro collapsed on danah's page on 43things

Identity Burro collapsed on danah's page on 43places

Identity Burro expanded on danah's page on 43places

Identity Burro collapsed on danah's page on allconsuming

Identity Burro expanded on danah's page on allconsuming

Code
The code is at http://moloko.itc.it/paoloblog/archives/identityburro.user.js.
Changelog
0.1 - initial release (working on flickr, del.icio.us and technorati) - July 17, 2005
0.2 - tweaked to add: citeulike, last.fm (+audioscrobbler), 43things/places/ideas/allconsuming, rojo and lj
plus modified idburro() to create a collapse button/function 0.--- Daniel Dockery, peritus@gmail.com, Aug 15, 2005
0.3 - refactored the code a bit and cleaned it up (resetStyle, images are more separated from code).
added webjay.org and audioscrobbler.com (however audioscrobbler has been incorporated into last.fm so the code is commented but maybe in future it will be useful again.
added 2 todos. added some comments in the code. --Paolo Massa, massa@itc.it, Aug 25, 2005
0.4 - added simpy.com by Paolo Massa, the code was sent to Paolo via email by Otis Gospodnetic
Technorati tags: identityburro, flickr, identity, technorati, delicious, social software, greasemonkey, firefox, webjay, last.fm, Rojo, 43things, 43places, LiveJournal, AllConsuming, danah, zephoria, CSS, OpenID, Identity
August 26, 2005
| Copyright |
copyright
|
| Free software |
free_software
|
| Programming |
programming
|
This still amazes me. I released some slides under Creative Commons licence time ago and I got some emails with a improuved version of the slides and some comments about typos, errors. I released IdentityBurro under Creative Commons (I would have preferred GPL but the original code of BookBurro was under CC as well because the a snippet of code Jesse used was under CC, I guess this is what virality of licences really means) and I received 2 emails of people using the code in different ways.
Jeremy wrote me "Because I learn by tinkering, I was able to pick through your script and adapt it to provide this functionality.". His greasemonkey script, The Flickr Tag Convergence Script, allows you to search for any tag on a Flickr photo page on either del.icio.us or Technorati with one mouse click. The script places small icons (one for del.icio.us and one for Technorati) in front of each photo tag (see the screenshot). The script is also available on UserScripts.org, another shiny creation of Jesse, BookBurro's creator.
On the other hand, Daniel was so kind to improuve the Identity Burro code by looking over the Todo list. He added some of the other sites I listed as wanting to include (Cite-u-Like, Last.fm (+audioscrobbler now that it's completely incorporated into last.fm), 43things, 43ideas@43things, 43places, 43ideas@43places, 43.allconsuming.net, Rojo and LJ). He also added the shrink/collapse button I mentioned. So I played with it again, added some more funcionalities and there will be a 0.3 version of IdentityBurro in minutes.
I just want to mention that I created Identity Burro tinkering with the code of Book Burro. I met Jesse, Book Burro's creator at AAAI, and I was amazed to meet him and I thought I had a lot to learn by looking at his code, I was right. [During his AAAI invited talk, Jay Tenenbaum showed one slide about Book Burro, and at the end of the presentation, Jesse showed up saying "you showed a slide about Book Burro, well, I created Book Burro"]. That's amazing, I want something like that happening to me as well in future! By the way, Jesse is now visiting Commerce.net and he ponders about Trust - Since userscripts operate outside of the security model, a malicious userscript could send every keystroke to the bad guys. A combination of peer review, and automated testing will be used to help secure end users.. UserScripts.org aggregates scripts but the actual code stays on the creator's site, so I think the idea is that, say, Mark Pilgrim trust/approuves a certain Greasemonkey script and I trust Mark Pilgrim, I can install the script without examining the code line by line. What if the bad guy's web server, mine for example, serves 90% of the time a "good" script and 10% of the time (or only to people using Windows that are probably not going to look at the code) serves a "malicious" script? Should Mark Pilgrim just trusts a generic URL or it is better to tie his trust action to a specific file content, for example associating an MD5SUM to the trusted file? More clearly, the trust action should be "I trust the script served at http://example.com/script.user.js" or "I trust the script served at http://example.com/script.user.js whose MD5SUM is 34GFGF94RU..."? The second provide more security but every time you release a new version, people have to restate their trust in your script by re-reading the code. So Jesse, what do you think?
August 25, 2005
| Free software |
free_software
|
| Future |
future
|
| Mozilla |
mozilla
|
| Programming |
programming
|
Many possible titles for this entry on Kottke, and all of them means "start counting microsoft's remaining days". This is nothing too new for AjaxOffice-aware people but the article is very well written. A question for you: should the code running this apps be Free Software? I think so. Moreover, Kottke reasons that the entities who can create WebOS are just Google, Yahoo!, Microsoft, Apple or Mozilla Foundation.
And why not the world community starting for example developing AjaxOffice on Sourceforge?
Oh, yes, I was going to forgot; the titles of the post were:
* GoogleOS? YahooOS? MozillaOS? WebOS?
* You're probably wondering why Yahoo bought Konfabulator
* An update on Google Browser, GooOS and Google Desktop
* A platform that everyone can stand on and why Apple, Microsoft, and, yes, even Google will have to change their ways to be a part of it
* The next killer app: desktop Web servers
* Does the Mozilla Foundation have the vision to make Firefox the most important piece of software of this decade?
* Web 3.0
* Finally, the end of Microsoft's operating system dominance
July 25, 2005
| Programming |
programming
|
After seeing at AAAI05 what Jesse is able to do with Ruby on Rails, I decided I have to learn it.
Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups.
So far so good, it has been a great-great pleasure meeting this joy-toy. My suggestion for get going:
1. See the incredible "how to build a blog engine in 15 minutes with Ruby on Rails" video. [Even if you don't want to start learning a new language/framework, trust me, check the video, you won't regret it.]
2. Read the "Four Days on Rails" step-by-step tutorial (and create the code along).
3. Read the Really Getting Started in Rails, if you still have some doubts, especially if you haven't used Ruby before (I didn't) and don't want to learn completely the language (I don't). [info: Ruby is a language, Rails is a framework for building web applications that uses Ruby]
July 18, 2005
| Programming |
programming
|
Some days ago I was wondering about Creating playable Games on Google Maps. I received an email today from Thomas Scott: he created Tripods: online, multiplayer Google Maps game.
How To Play? - Your job is to battle invading Google Maps tripod markers that are invading Manhattan!
I added it to the Games on Google Maps wiki page. Are you aware of more games? If so, would you mind add them on the wiki page?
July 17, 2005
| Free software |
free_software
|
| Mozilla |
mozilla
|
| Programming |
programming
|
| Social Software |
social_software
|
UPDATE: there is now an IdentityBurro project page
You are looking at the page of xyz on flickr and you would like to see xyz's bookmarks on del.icio.us?
Or, you are on the technorati profile page of abc and you would like to see abc's photos on flickr?
Well, if one of these desideratas has been in your mind before, you now have it!
Enter Identity Burro (or IdentityBurro), a GreaseMonkey extension that inserts, in the profile page of user xyz on flickr or del.icio.us or technorati, the link to the profile pages of user xyz on flickr and del.icio.us and technorati. Your social sites are now more social!
See the screenshots.
Still with me? Then I guess you might want to install:
Current Version: Identity Burro v0.1
At the moment there is nothing better I can do that assuming an user has the same nick on every site: I assume xyz@flickr is xyz@del.icio.us and xyz@technorati. I know this is by no means guaranteed to be true (or desirable). I hope (and ask) that one of this social sites will soon let its users to enter which are their nicks on other sites. In this way I would be able to get this information and put the correct links when xyz@flickr is called abc@del.icio.us.
And of course, as you can see by the name of the extension, inspiration for this extension came from the mighty BookBurro extension, whose creator Jesse I just met few days ago at the AAAI 2005 conference in Pittsburgh.
The code is released under a Creative Commons "Attribution-ShareAlike 2.5" licence (since Book Burro was released in this way and the shareAlike option didn't really give me a chance to change licence for a GPL).
If you like, you might want to let me know if it works in the buggy browser, I mean, Internet Explorer.
Todo:
# when expanded, part of the unexpanded interface (buttons and icons) remains in background, more transparent. understand why and fix it
# when expanded the "expand" icon should become a "shrink" icon (the arrow in the other direction).
# some CSS properties are inherited from the current site, so that for example, the extension looks a bit different in flickr and in del.icio.us. Understand which are the properties of which elements and overwrite them (surely the background of some elements is inherited).
# adding more social sites, for example, webjay, citeulike, last.fm, audioscrobbler, furl, wist, blogmarks, 43things, tagsurf, upcoming, jots, podcast, consumating, rojo, bloglines, smugsmug, bookswelike, kinja.
Leave comments to this post for communicating with me about the extension.
Del.icio.us with Identity Burro not expanded (all icons are clickable anyway):

Del.icio.us with Identity Burro expanded:

Technorati with Identity Burro not expanded (all icons are clickable anyway):

Technorati with Identity Burro expanded:

Flickr with Identity Burro not expanded (all icons are clickable anyway):

Flickr with Identity Burro expanded:

July 16, 2005
| Mozilla |
mozilla
|
| Programming |
programming
|
| Quotations |
quotations
|
After meeting BookBurro's creator and listening a great talk about microformats (and how greasemonkey extensions can assemble them to create useful services for you) past week, I'm thinking a lot about GreaseMonkey. For example, I have more than 4 extensions that modify google.com and I have no more idea if what I see is the original content sent by google or if it is modified/created by one of the 4 extensions. I see that Lucas Gonze had a similar problem: he was commenting on ReBLG icons being adopted by all the bloggers in few days but in reality it was an extension installed by him (and forgetted) doing the insertion in the HTML pages he was seeing. [Lucas is the creator of the great WebJay.org] For this reason he suggests to add a greasemonkey icon near every modification made via extensions. I'm not sure it is the best solution since I will end up easily having hundreds of GM icons in the pages, anyway it is something we need to think about.
And I just want to note, since every day it is easier for anyone to write "code", that this quotation becomes more and more true:
The moral is obvious. You cannot trust code that you did not totally create yourself.
-- Ken Thompson, Turing Award Lecture [Thompson, 1984]
July 01, 2005
| Programming |
programming
|
Wow!
I've been BoingBoinged: Google Maps, Reloaded: Animated Mozillas and Gnus attack Redmond.
In the previous Google Maps hack post I was pondering how easy it would be to create a playable game on Google Maps.
Intelligent Artifice comes to write "It's a New Genre about to be born! I predict a dedicated conference in 2006."
So I created a Games on Google Maps wiki page for collecting ideas (and implementations!). Contribute to it, if you like! And if there will be a conference "Real Games on Real Maps", I would really like to be in the committee. ![]()
| Programming |
programming
|
Some Mozillas and some Gnus are invading Microsoft office in Redmond (the blue E).
First I saw on BoingBoing that Vestadesign created Star Wars ATATs attacking Palo Alto using Google Maps API. So I thought I could add some animations. I also ended up changing the environment (Micro$oft offices) and the invaders (Mozillas and Gnus). Free software to the rescue!
Go to the page with the Javascript code that produces the animation.
Below there is the Flash animation but you should see the real page (with the code). (If you can't see them, check the static image.)
It should be very easy to create real playable games on Google Maps. Here are some ideas:
- playing Risk on the real world map (with the ability to zoom in/out to combat at different scales). Extend Jrisk or JavaRisk (code available on SourceForge).
- playing FreeCiv on real world maps. Modify FreeCiv source code.
- driving a car race on streets of the real world.
- much more I guess
Let me know if you create such a game.
UPDATE: after being BoingBoinged, I created a Games on Google Maps wiki page, for collecting ideas (and implementations!). Contribute to it, if you like.
January 20, 2005
| Mozilla |
mozilla
|
| Programming |
programming
|
Matt has created a bookmarklet for adding Technorati tags (via boingboing). And there is also a bookmarklet for searching Technorati tags. So I thought I might create a mycroft search engine plugin for Firefox and Mozilla that could search Technorati tags. However it seems that now, Mozilla only supports plugins that work with the GET method (those URLs with "?somename=somevalue&othername=othervalue" in them) and Technorati Tags page does not use this approach (see as an example the page for the tag "simple"). So I felt back to the really first aggregator of tags, Taggregator, whose pages do use the GET method: see for instance Taggregator page about tag "simple".
In the process, I discovered that creating a Mycroft plugin is incredibly simple thanks to the generator.
So if you like, you may add Taggregator search engine plugin to your Mozilla, Firefox or Netscape7 browser.
April 06, 2004
| Free software |
free_software
|
| PhD |
phd
|
| Programming |
programming
|
| Trust and Reputation |
trust_and_reputation
|
For my studies on trust metrics, I need to code trust metrics. I was looking for a Java package for modeling, analysis, and visualization of graphs (possibly weighted and directed). I tried many of them (see below) but I found a wonderful one!
Java Universal Network/Graph Framework hosted on SourceForge so open source under a BSD licence (javadoc).
JUNG — the Java Universal Network/Graph Framework--is a software library that provides a common and extendible language for the modeling, analysis, and visualization of data that can be represented as a graph or network. It is written in Java, which allows JUNG-based applications to make use of the extensive built-in capabilities of the Java API, as well as those of other existing third-party Java libraries.
The current distribution of JUNG includes implementations of a number of algorithms from graph theory, data mining, and social network analysis, such as routines for clustering, decomposition, optimization, random graph generation, statistical analysis, and calculation of network distances (Dijkstra Shortest Path), flows, and importance measures (centrality, PageRank, HITS, Random Walk, etc.).
JUNG also provides a visualization framework that makes it easy to construct tools for the interactive exploration of network data. Users can use one of the layout algorithms provided, or use the framework to create their own custom layouts. In addition, filtering mechanisms are provided which allow users to focus their attention, or their algorithms, on specific portions of the graph.
If you don't trust me, you can try the Ranking Demo or the other demos.
It is of course an evolving project, I already wrote some code to draw arrows and to label edges with weights and I'm trying to integrate it. I plan to code some of these trust metrics. JUNG is maintained by some great PhD students.
Other packages I tried and didn't fit my needs: JGraphT (visualizable with Jgraph), JGraph, jdigraph, The Data Structures Library in Java.
Other packages I quickly analyzed without downloading them and trying them and not meeting my needs either (especially because focusing only on graph visualization): Graph Foundation Classes for Java (It is by IBM but it is retired and no longer available), OpenJGraph - Java Graph and Graph Drawing Project, Touchgraph (wonderful for visual interaction with drawn graphs), Grappa (A Java GRAPh PAckage), JGraphEd, Graph Editing Framework, GVF - The Graph Visualization Framework, Graph Mapper, VGJ, Visualizing Graphs with Java
Many of these packages (and some more) can be found searching graph on java-channel.org
April 05, 2004
| Free software |
free_software
|
| Programming |
programming
|
MozDex is an open source search engine. It is based on Nutch.
You can become a developer or just have a look at the Javadoc or the tutorial. You can also download the code from the CVS.
Pretty cool!
(found via Danny)
















