Black Friendfeed Widget with Fluid

posted 02:42PM May 15, 2008 with tags fluid friendfeed hud macosx ssb by Lars Trieloff

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.

http://weblogs.goshaky.com/weblogs/lars/resource/friendfeed-hud.png

| Comments[0]

See something cool, learn something new, win something shiny

posted 12:24AM May 15, 2008 with tags crx day jcr sling by Lars Trieloff

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.

| Comments[0]

Teresa's DocBook vs. DITA article

posted 08:34PM May 03, 2008 with tags day dita docbook by Lars Trieloff

Scott Hudson points to DocBook versus DITA: Will the Real Standard Please Stand Up? (slides here at dev.day.com) wriiten by my colleague Teresa Mulvihill. Scott points out that DocBook can be used for single-sourcing out of the box, thanks to support for XInclude and I would like to add that we at Day are currently in the process of translating our documentation to DocBook (not DITA) and first results are looking very promising. We are using Wilfried Springer's DocBook Maven Plugin as the driver of the processing toolchain, which is powerful, because we can integrate documentation development tightly with software development, sharing the same repository, using the same branches and tags and using the same build process.

| Comments[2]

Creating Web Products: Do's and Don'ts

posted 07:02PM May 02, 2008 with tags productmanagement tips by Lars Trieloff

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.

Fluid userscript for Friendfeed and Mento

posted 12:07AM Apr 26, 2008 with tags fluid friendfeed greasekit growl macosx mashup mento by Lars Trieloff

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
Sharing a link on Mento

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

One unread item
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</a>";
        }
      }
      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();
    }
})();

posted 11:18PM Apr 25, 2008 with tags delicious metablogging weblog by Lars Trieloff

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.

posted 02:45AM Apr 19, 2008 with tags by Lars Trieloff

posted 02:40AM Apr 17, 2008 with tags by Lars Trieloff

My Weblog integrates FriendFeed now

posted 12:42AM Apr 14, 2008 with tags friendfeed mashp weblog by Lars Trieloff

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.

http://weblogs.goshaky.com/weblogs/lars/resource/Picture%209.png

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.

http://weblogs.goshaky.com/weblogs/lars/resource/Picture%2010.png

Your attention is worth USD .34 and for sale

posted 05:41PM Apr 13, 2008 with tags attention ebay socialnetworking twitter by Lars Trieloff

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

posted 04:43PM Apr 13, 2008 with tags console meme productivity rescuetime by Lars Trieloff

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]

posted 02:40AM Apr 12, 2008 with tags by Lars Trieloff

posted 02:36AM Apr 09, 2008 with tags by Lars Trieloff

| Comments[1]

posted 02:40AM Apr 07, 2008 with tags by Lars Trieloff

posted 02:50AM Apr 03, 2008 with tags by Lars Trieloff

posted 02:49AM Apr 02, 2008 with tags by Lars Trieloff

posted 01:34AM Mar 30, 2008 with tags by Lars Trieloff

posted 01:44AM Mar 29, 2008 with tags by Lars Trieloff

posted 01:25AM Mar 21, 2008 with tags by Lars Trieloff

REST and AJAX slides are up

posted 01:34AM Mar 20, 2008 with tags ajax ajaxworld presentation rest slides by Lars Trieloff

http://weblogs.goshaky.com/weblogs/lars/resource/restajax.png

As always, I've uploaded my slides of my REST and AJAX reconciled presentation to slideshare. AJAXWorld is a well-produced conference, with around 50 people in the audience, an interesting discussion emerged.

| Comments[1]

See you tomorrow at AJAX World East in New York

posted 09:31AM Mar 17, 2008 with tags ajax conference newyork rest speaking by Lars Trieloff

Just a quick note: I will be speaking at AJAXWorld East Conference and Expo in New York. I will present techniques and frameworks for creating RESTful AJAX applications, among the frameworks discussed will be Sling, of couse. My talk is scheduled for wednesday morning, so if you are there, I would love to meet you.

| Comments[1]

posted 01:28AM Mar 15, 2008 with tags by Lars Trieloff

posted 01:28AM Mar 11, 2008 with tags by Lars Trieloff

posted 01:27AM Mar 08, 2008 with tags by Lars Trieloff

| Comments[2]

Sling Web Monday in Stockholm

posted 07:58PM Mar 02, 2008 with tags sling stockholm webmontag by Lars Trieloff

With an social activity index hitting a new all-time low, after weeks of failing to find time for blogging, I would like to give a short status update. I have been invited by Peter Svensson to speak about Apache Sling at the second Web Monday in Stockholm. As Peter is the sole organizer of Web Monday in Stockholm, he took the freedom of letting it happen tuesdays, but still it should not be confused with Web Tuesday (of Zurich). In preparation of Web Monday Stockholm I am spending every free minute with coding a Dojo+µsling integration that I want to showcase in two days, and that will eventually be a part of Peter's Bunkai project.

posted 01:33AM Feb 15, 2008 with tags by Lars Trieloff

posted 01:25AM Feb 12, 2008 with tags by Lars Trieloff

posted 01:27AM Feb 07, 2008 with tags by Lars Trieloff

posted 01:26AM Feb 01, 2008 with tags by Lars Trieloff

posted 01:41AM Jan 30, 2008 with tags by Lars Trieloff