= De.linque.nt: An irresponsible metaweb posting tool. === The Future is Here and it's Right Behind You!(tm) Here's the premise: Del.icio.us, the social bookmarking site, lets you create posts that assign a set of tags to a URL. The post also provides a description field as well as an area for extended information. Usually, Del.icio.us posts refer to some other Web resource, but the act of creating a Del.icio.us post also creates a new Web resource: the Del.icio.us URL for the new post. Since this Del.icio.us post is a Web resource it can itself be the target of a Del.icio.us post. In fact, one can create posts for Del.icio.us resources that do not exist *until* the post is created, i.e., the post URL you bookmark is the one that will refer to the bookmark you are creating. And that is what De.linque.nt does. When you install the De.linque.nt gem, it creates a helper app to generate a posting script named 'delinquentry'. You need to provide a Del.icio.us user name and password, and optionally define the base tag for your De.linque.nt posts. You can then call delinquentry, passing in the text for the post description and extended info fields. The De.linque.nt class will create an as-yet nonexistent URL based off the main Del.icious URL, your base tag, and a time stamp. This URL is then becomes a Del.icio.us post, which is tagged with both this unique tag and the plain base tag. You can read any specific De.linque.nt post by referring to its unique tag, or see all the posts by indexing on the base tag. Requirements: * Rubilicious, a Ruby library for the Del.icio.us API * A Del.icio.us account * Too much free time == Some Possible Usage === Low-rent Blogging: It's like having a blog without bothering with the blog part. Define some base tag (e.g. MyDelinquentBlog). Add Del.icio.us posts expressing your profound, worldly insights. Be succinct: The description field and extended text field only allow 256 characters each. Presto! Instablog! Since Del.icio.us offers RSS feeds based on users and tags, you can create a simple message feed using Del.icio.us metaposts. Tell all your hip friends to subscribe to the RSS feed for your base tag and revel in your Web 2.0 hiptitude. === Cheesy IM: OMG! This is /so/ 1337! Create a Del.icio.us account and share it with your friends. Have them all install De.linque.nt using the same Del.icio.us account and base tag. Make sure everyone subscribes to the RSS feed for the base tag. Now you and your De.linque.nt pals can exchange messages by posting through Del.icio.us! === Doo Dah Lists Be antisocial and *don't* tell anyone about your sweet De.linque.nt postings. Just use it to post random notes from the command line. All De.linque.nt posts are given two tags by default: the base tag (either the default 'De.linque.nt' or the tag you've chosen when installing the posting script ), plus a GUID tag formed by glomming a time-stamp onto the base tag. But you can add more tags to your post by including text inside of square brackets, like this: % deliquentry.rb This is my title. This is the body [each word in here is a tag] (So be careful when adding text: all words inside of square brackets are assumed to be tags.) Using your own tags, you can create a set of categorized posts to act as your super-bad Doo Dah list! You'll be Getting Real and Getting Things Done in no time! Zippity Doo Dah, Zippity F***in' A! === Get Creative. Or Something. It's a Greasemonkey World!* De.linque.nt also includes two Greasemonkey scripts designed to work with Del.icio.us and Bloglines. Each looks for feeds that contain your base tag in the URL. So, for example, if you have the base tag "SquibbleNod", your De.linque.nt posts will have URLs similar to http://del.icio.us/username/SquibbleNod2005661232. The Greasemonkey scripts find De.linque.nt items and pass the title and content through "reform" methods. By default, these don't do anything, but there is simple code in place to do some trivial rot13 decoding to demo the madness. The De.linque.nt distro also includes simple Ruby code for rot13 encoding. When De.linque.nt makes a post, it first calls deform_title and deform_content before sending the text off to Del.icio.us. The class has stub methods in place for this. There are two ways (at least) to make these useful. One is to create a file named 'deform.rb' and place it in the same directory as the auto-generated delinquentry.rb script. In the file you need to redefine those two Delinquent methods, as in this example: class Delinquent # rot13 encoding. Very DMCA! def deform_title( t ) t.tr "A-Za-z", "N-ZA-Mn-za-m"; end def deform_content( c ) c.tr "A-Za-z", "N-ZA-Mn-za-m"; end end You can also just add this code directly to delinquentry.rb, after the call to "require 'delinquent'" So, with this example, all posts will have the title (i.e., the description text) and content (i.e., extended text) encoded. To read the posts once it is on Delicio.us, then, you'll need to reverse the process (or work it out in your head). That's where Greasemonkey comes in. After locating a De.linque.nt post, each Greasemonkey script rewrites the title and content by calling reform_title and reform_content. By default these methods do nothing, but if you look at the code you'll see some code commented out to do the decryption. In Real Life(tm), though, you might want to use something a bit more secure. There is a JavaScript block TEA (Tine Encryption Algorithm) library available at http://www.movable-type.co.uk/scripts/TEAblock.html Of course, you'll need to encrypt the source using the same algorithm, and you'll need to use the same password and such at both ends. And share this with you bestest friends if you want to pass messages around. Oh, and such encryption methods tend to increase the size of the transmitted message; make sure the results still fit into the alloted 256 character. But after that you're golden. Have fun! James Britt jamesgb AT neurogami DOT com ==== Credits: Thanks to Paul Duncan for Rubilicious[http://www.pablotron.org/software/rubilicious/] Thanks to joshua and crew for Del.icio.us[http://del.icio.us/] Special thanks to K. Gödel and D. Hofstadter