Note to Marketwatch.com – sometime yesterday (7/15/2008), your support for Firefox went awry, now your site looks like the picture below. Please fix. Thanks.
Note to Marketwatch.com – sometime yesterday (7/15/2008), your support for Firefox went awry, now your site looks like the picture below. Please fix. Thanks.
I received an excellent piece of news from SlimDevices today – support for Last.fm scrobbling from the Squeezebox. (Doubtful that my post had anything to do with it)
It was simple to enable and is currently working like a charm as I listen to the new My Morning Jacket.
(cross-posted to the BaconMarathon blog)
Tim Kay of ActiveBuddy fame has been working on aws, which he says provides “simple access to Amazon EC2 and S3”. I ran into Tim a while ago and we chatted about aws – around the same time, I also heard about it from Mike.
As all the BaconMarathon apps are running on EC2 and using S3 for storage, I’ve been looking for an easier way to interface with S3 in particular. I finally got around to trying out aws the other day and found it be more than advertised. Finally, I had one simple command to examine buckets on S3:
aws ls
That was it. Creating buckets, puts and gets are just as simple:
aws mkdir BUCKET
aws put BUCKET/[OBJECT] [FILE]
aws get BUCKET
We’re now using aws to push our MySQL backups to S3 on a scheduled basis – a simple change to our existing backup jobs.
Mike has a post up about our latest BaconMarathon app, a widget for iTunes.
It rolled out live today with our first customer, Heidi Roizen and the folks at Skinny Songs.
(Cross-posting to the BaconMarathon blog)
One feature of BaconMarathon's Top3Clicks Facebook application allows users to construct free-form item searches. The search queries are augmented and are used as we attempt to find items that are relevant to the user. To make this work, lots of things are going on in the back-end. The UI output is a list of items displayed in the rotator.
Like any application, we need to make this process as fast as possible, while providing the user visual cues to let them know the application is working quickly to provide a result. One of the strongest pieces of feedback we have had is in this area - and something we've tried to tackle in several different ways.
Our design goals were as follows:
Yesterday, we rolled out our latest iteration (shown below), which utilizes FBJS and Ajax.
Using this post as a basis, we made a number of tweaks, most notably the ondone function of the asynchronous call (via ajax.post) handles the form submission and actual tear-down of the dialog. Implementing it was non-trivial as the FBML Test Console didn't seem to like any ajax.post calls we made. Unfortunately, the onerror function does not provide any information about the cause of failure. Firebug was a large help -- make sure to use it if you are debugging FBJS.
Our current implementation looks something like this:
FBJS
function showItemDialog() { var title = 'Add Item' var ok = 'Cancel' //create dialog var dialog = new Dialog().showMessage(title,add_dialog_fbml,ok); var ajax = new Ajax(); ajax.responseType = Ajax.FBML; ajax.requireLogin = true; //ondone function, called when post returns ajax.ondone = function(data) { frm = document.getElementById(searchForm); if (frm) { frm.submit(); } dialog.hide(); }; //onconfirm actually does nothing dialog.onconfirm = function() { }; //grab input value and use in ajax.post call var item = document.getElementById('item').getValue(); var params={'item':item}; ajax.post("http://www.yourdomain.com/index.php",params); }
FBML
<fb:js_string var="add_dialog_fbml"> <div id="add_dialog"> <div class="dialog_loading"> <img src="http://ec2_75_101_197_150.compute_1.amazonaws.com/top3clicks/images/ajax_loader.gif"/> Retrieving item info ... </div> </div></fb:js_string>
(Note this is cross-posted to the BaconMarathon blog)
If you are building an app for Facebook, good information can be hard to find. The Developer Docs do a decent job at getting you up to speed, but don't dive too deep.
A few of my favorite books at the moment are:
1. Facebook Application Development - most heavily used book in my collection. Solid examples, minimal errata.
2. Facebook Applications - Good sample app in the last third of the book that goes beyond simple implementation.
3. Facebook API Developers Guide - Great kick-starter, super quick read. Doesn't dive deep, but lays it out in a readily consumable fashion.
One overall issue - I haven't found a book that uses anything other than PHP. As we're using Java for our BaconMarathon apps, we've had to do a bit of "translation", but it hasn't slowed things down much.
Facebook announced that they have dropped support for their Java client.
To this end, we have decided to discontinue support for our official Java client library, and rely on the existing community-driven libraries to fill this gap. While we understand this may have an impact on some developers, we feel that it is most important to keep working on our list of initiatives I referred to before, instead of maintaining an additional client library of which the developer community has already built several unofficial versions.
They recommend moving to one of the project listed here.
I have to ask, was anyone actually using the Facebook Java client anyway? Six months ago, I gave it a whirl and found it pretty poor. Instead I moved to the project being hosted at Google Code, known as the “Facebook Java API Community Project”. The “Companion Utility” makes it easy to do things that the PHP library has had since the beginning, including detecting if the user has logged in and if the user has previously added the application. Getting the whole thing to run in a Tomcat container was straightforward.
I'm testing out adRoll - ignore any temporary craziness.
SDForum, the Silicon Valley Java Users Group (JUG) and several other Bay Area JUGs have combined to put on what looks to be a great evening.
On 2/28/2008, James Gosling (father of Java for those of you who didn't know) will be revisiting an article he wrote in 1997 for the IEEE magazine "Computer".
Looks to be an interesting event.
Tags: Java