Black Friendfeed Widget with Fluid
Lars Trieloff's Collaboration Weblog
| General | Thursday May 15, 2008 | By lars
My Favorite SSB application Fluid
got an update some days ago that allows you to fiddle with some window settings, namely the window opacity and the window decoration and the window placement (normal, above all windows, below all windows, above the dashboard). With the window decoration comes a black-window style with dark window borders and scroll bars that looks very cool. But using this style with Friendfeed for which I provided a custom userscript before
yielded unpleasant results as the white background of friendfeed and the dark window borders do not match.
So I modified the user CSS file that is embedded in every Fluid SSB application (Right-click the application icon in Finder, select "Show package contents", browse to Contents/Resources) called default.css to give me a black background with white text and links (and I removed all the sidebar and clutter to make it a minimal interface)
The result looks like that and gives specialized desktop applications such as Twhirl
or AlertThingy
a run for it's money.

See something cool, learn something new, win something shiny
Lars Trieloff's Collaboration Weblog
| General | Wednesday May 14, 2008 | By lars
I went to one of our customers today to demo our Digital Asset Management System (it seems to be DAM-week, see also my presentation at the Henry Stewart Show
) and one of the projects managers told me that he started playing around with Sling and how impressed he was with the power that is hidden in Sling and JCR and how easy it was to build something interesting. So, if you would like to see something cool, just as he did, download CRX Quickstart Edition
, which contains CRX (a commerial grade content repository) and Sling (a web application framework built around the concepts of JCR, REST, AJAX, OSGi and Scripting) and take a look at Michael Marth's screencast first steps with CRX Quickstart
. (This was the see something cool part)
Having seen something cool, it is time to learn something new, namely building applications using Sling and JCR and CRX Quickstart is a great way of doing to. Aside to the aforementioned screencast, there is a second one: the serverside.com in 15 minutes
and the rest of the CRX Quickstart documentation
we have assembled.
If you now want to win something shiny, namely a brand new MacBook Pro, apply your newly won knowledge and take part in the Day JCR Cup '08
, which is one of the reasons we released CRX Quickstart. We want more developers to learn something new, more developers to build something cool and thought that winning something shiny might be a good incentive to do so.
Creating Web Products: Do's and Don'ts
Lars Trieloff's Collaboration Weblog
| General | Friday May 02, 2008 | By lars
Normally I do not use my blog as a linkdump, I have http://del.icio.us/trieloff, http://twitter.com/trieloff, http://www.friendfeed.com/trieloff and Mento
for this, but today I am making an exception and the whole point of my post is read this blog post: Seven Do’s And Three Don’ts For Creating New Web Products
. These tips are some essential rules every entrepreneur and product manager should learn by heart. You have to create value and find a way of sharing the created value with your customers (making profit) if you fail either of those goals, find a better idea.
OpenSearch plugin for Apache JIRA
Alexander Klimetschek's Blog
| General | Wednesday April 30, 2008 | By alexkli
If you are an Apache user or developer and find yourself searching through the JIRA at the ASF very often, it is useful to have the search built-in right into your browser. The solution is to install an OpenSearch plugin that sends the right search query to Apache's JIRA. The following Javascript link will just do that:
Install OpenSearch plugin
For the curious, look at the OpenSearch XML file.
You can now enter your favorite search terms. The search will be the same as the "Quick Search" in the upper right of the JIRA interface. Try for example mod_proxy, "JCR persistence" (which will detect the project shortcut "JCR" and search only the respective Jackrabbit project) or JCR-123 (it will detect issue identifiers and jump right to the issue).
Fluid userscript for Friendfeed and Mento
Lars Trieloff's Collaboration Weblog
| General | Friday April 25, 2008 | By lars
Being alone this evening I had the opportunity to spend some time programming interesting stuff. As I am currently researching lifestreaming applications, in particular Friendfeed, which is an excellent implementation of this concept I wrote a plugin for Blogbridge that will automatically send "pinned" entries to Friendfeed, similar to "shared items" in Google reader. Secondly, I got an invite to Mento, a social link sharing application (not bookmarking) that is focused around finding interesting links and sending them to friends, services (like Twitter, Friendfeed or del.icio.us/trieloff) or channels, which lead to my third activity: Integrating Friendfeed and Mento.
As Friendfeed is giving me lots of input from interesting people, I would like to save some links directly from the Friendfeed interface. Additionally, I am using Fluid in order to create a site-specific browser (SSB) for Friendfeed, basically a small desktop application that does nothing but running Friendfeed. Aside from this interesting concept, which is also being implemented by Mozilla Prism for instance, Fluid is currently the best implementation of this concept. Todd, the developer is working hard to integrate it with Mac OS X and make it a seamless user experience and he is adding easy programmability as one of the core aspects to SSBs. With Fluid it is possible to run userscripts that not only change the appearance and behavior of the website, these userscripts are also able to invoke advanced desktop integration features like adding an "unread items" badge to the dock item or display Growl notifications.
The small user script you find below does two things: on the one hand it adds a "Share" button to all links posted on Friendfeed. Clicking the "Share" button will invoke the Mento bookmarklet which allows you to send the link to friends and colleagues. On the other hand, the script will track which links have been added to the feed while the Friendfeed window has been in the background. For each new, unread item, it will increase the counter in the badge and display a Growl notification.

Sharing a link on Mento

Growl showing an update notification. (In the background there is Dashcode, the IDE I have been using to write this userscript)

There is one unread item waiting for me in Friendfeed.
The user script that accomplishes this can be found here. You are free to use and modify and redistribute it of course.
// ==UserScript==
// @name Share With Mento
// @namespace http://fluidapp.com
// @description Adds a Share link to links listed on friendfeed.
// @include *
// @author Lars Trieloff http://weblogs.goshaky.com/weblogs/lars
// ==/UserScript==
(function () {
var knownclusters = {};
var unknownclusters = 0;
function updateMento() {
refreshMento(true);
}
function initMento() {
refreshMento(false);
}
function refreshMento(background) {
var infos = document.getElementsByClassName("info");
for (var i=0;i<infos.length;i++) {
var link = infos[i].previousSibling.previousSibling.firstChild;
var parent = infos[i].parentNode.parentNode.parentNode.parentNode;
var eventid = parent.getAttribute("eid");
var header =
$(parent).find(".summary").get(0).innerHTML.replace(/<(.|\n)+?>/g, "");
var description =
infos[i].previousSibling.previousSibling.innerHTML.replace(/<(.|\n)+?>/g, "");
if (eventid in knownclusters) {
} else {
unknownclusters++;
knownclusters[eventid] = "a";
if (background) {
window.fluid.showGrowlNotification({
title: header,
description: description,
priority: 1,
sticky: false,
identifier: eventid,
});
}
if (link.href) {
//alert(link.innerHTML);
infos[i].innerHTML = infos[i].innerHTML + " - <a href=\"javascript:(" +
"function(){o='location=0,width=515,height=375,resizable=1';u='http:" +
"//www.mento.info/qp/#v=bk&vn=1&';w=window;d=w.top.document;e=encode" +
"URIComponent;u+='title='+'"+encodeURIComponent(link.innerHTML)+"'+'" +
"&url='+'"+encodeURIComponent(link.href)+"'+'&via='+'"
+encodeURIComponent("http://friendfeed.com/e/"
+parent.getAttribute("eid"))+"';var%20mw=w.open(u,'_blank',o);if(mw)" +
"setTimeout(function(){mw.focus()},%20250);else{alert('A%20popup%20b" +
"locker%20got%20in%20the%20way.%20Hold%20the%20CTRL%20key%20and%20tr" +
"y%20again.');}})();\">Share";
}
}
if (background) {
if (unknownclusters==0) {
window.fluid.dockBadge = "";
} else {
window.fluid.dockBadge = unknownclusters;
}
} else {
window.fluid.dockBadge = "";
unknownclusters = 0;
}
}
}
function jquery_wait() {
if(typeof window.jQuery == 'undefined') {
window.setTimeout(jquery_wait,100);
}
else {
$ = window.jQuery; initMento();
window.setInterval(updateMento, 1000);
}
}
if (window.fluid) {
window.onfocus = initMento;
//initMento(true);
jquery_wait();
}
})();
No more daily link posting
Lars Trieloff's Collaboration Weblog
| General | Friday April 25, 2008 | By lars
I disabled the daily del.icio.us link posting, because there are better ways keeping up to date with my postings: join my del.icio.us network
or follow me at Friendfeed
.
links for 2008-04-20
Alexander Klimetschek's Blog
| General | Sunday April 20, 2008 | By alexkli
Bash history
Alexander Klimetschek's Blog
| General | Thursday April 17, 2008 | By alexkli
history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s \n",a[i],i}}'|sort -rn|head 118 svn
91 curl
63 find
42 ls
28 cd
20 mate
15 rm
10 diff
8 vim
7 tail
Sorry, I had to follow the hype
But this list changes every day anyway - the top command "svn" for example is there because I did a lot of "svn st" piping to "grep" before a large checkin.
SVN: Commit replaced directories
Alexander Klimetschek's Blog
| General | Wednesday April 16, 2008 | By alexkli
Problem
Although there is the Mindquarry Desktop Client, which stores the Subversion metadata (hence the .svn subdirectories) not inside the working directory, I still very much use the standard SVN command line client. Which sometimes brings up the following problem: if a tool replaces an entire directory - examples are Apple Keynote or Eclipse re-compiling code and replacing the classes folder (yes, I know, you shouldn't do it, but sometimes you just have to put it under version control...) - well, if it replaces the directory, the .svn subfolder is lost and you get this ugly status message:
~ subfolder
Which means subversion knows about it (the current folder contains an entry like "directory: subfolder"), but the directory itself is not a working directory (no .svn folder present in subfolder). That status is called "~ replaced"; unfortunately the description in the SVN manual is incomplete: "Item is versioned as a directory, but has been replaced by a file, or vice versa." It should better read: "Item is versioned as a directory, but has been replaced by a file with the same name, or vice versa. It could also indicate that it is versioned as a directory, but has been replaced by a directory of the same name without the important .svn folder inside."
Solution
It's normally a three step process on a standard UNIX command line:
mv subfolder subfolder-temp
svn up subfolder
cp -R subfolder-temp/* subfolder
Note that subfolder-temp is just a temporary name which must not exist yet. The important step is the copy with -R and *, which under UNIX means to copy the tree below subfolder-temp into the existing tree under subfolder. This is technically a simple forward merge. And here is the tricky part: it works for added and modified files, but not for deleted files. You will have to manually delete them. To find out which files are actually deleted, you can use the diff command in recursive and brief mode:
diff -rq subfolder subfolder-temp
For each file it says "Only in subfolder/: foobar", you can delete it:
svn del subfolder/foobar
To make sure everything is correct now, check the status:
svn st subfolder
You should probably also run your (test) code on this "rebuilt" directory or check the files with whatever program is using them. If everything is ok, you can commit it and throw away the temporary copy:
svn ci subfolder
rm -rf subfolder-temp
Quite a long workaround, but somewhat systematic. It's probably possible to write a script that does it, but when I think about it, I would probably never trust the script to not accidentally throw away the local changes ;-).
Update: Martin Probst has such a script (called svnrecover), but it works in a different fashion.
My Weblog integrates FriendFeed now
Lars Trieloff's Collaboration Weblog
| General | Sunday April 13, 2008 | By lars
I created a small mashup that combines my weblog with the Friendfeed API. The first thing I did was replacing my Planet-generated Activity feed and activity index calculation with one based on the Friendfeed JSON API. The JSON provided by Friendfeed even allowed me to add additional information, so I am highlighting every piece of activity that has been commented or liked in bold type.
Additionally, I integrated the Friendfeed comment API with the footer of every weblog post. What I am doing here is using the search API to find the post you are watching on Friendfeed and listing the number of comments and likes in the footer of the blog. Given the ability of the Friendfeed API of specifing callback functions, this was really a piece of cake to implement.
Your attention is worth USD .34 and for sale
Lars Trieloff's Collaboration Weblog
| General | Sunday April 13, 2008 | By lars
Andrew Baron, founder of Rocketboom is selling his Twitter account
on eBay
. With the current bid of 510 USD, each of his 1481 followers is worth .34 USD to the buyer. That is little more than you would pay for a click in Google Ads, which bears some interesting implications for everbody interested in monetizing Twitter attention at a large scale (e.g. Twitter). So if you would find a way of grabbing the attention of all twitter users (TwitDir
tracks almost a million twitter users), this collective attention would be worth 330435 USD, which is much less than the 21 million valuation estimated by Techcrunch
.
Turning the calculation around, and taking this 21.88 USD per user valuation, however Andrew Baron's account would be worth 32411 USD.
RescueTime for the Console
Lars Trieloff's Collaboration Weblog
| General | Sunday April 13, 2008 | By lars
In some way, RescueTime can be seen as the graphical variant of this meme.
$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s \n",a[i],i}}'|sort -rn|head
93 cd
80 sudo
71 ls
29 rm
17 ssh
16 less
14 export
11 mvn
10 ./autogen.sh
9 tar
[via Bill]
links for 2008-04-11
Alexander Klimetschek's Blog
| General | Friday April 11, 2008 | By alexkli
links for 2008-04-03
Alexander Klimetschek's Blog
| General | Thursday April 03, 2008 | By alexkli
links for 2008-04-03
Lars Trieloff's Collaboration Weblog
| General | Wednesday April 02, 2008 | By lars
-
-
-
We want to make all the world's content more accessible, interoperable and valuable. Some call it Web 2.0, Web 3.0, the semantic web or the Giant Global Graph - we call our piece of it Calais.
links for 2008-04-02
Alexander Klimetschek's Blog
| General | Wednesday April 02, 2008 | By alexkli