Wednesday, July 4, 2007

Capistrano 2.0 Preview 4

I am such a chicken. I very much wanted the next release of Capistrano to be the official “Capistrano 2.0” release. But as I watched the changelog grow, I started to get cold feet.

Thus, tonight I announce the fourth (and final, hopefully!) preview release of Capistrano 2.0. As before, you can grab it from the Rails beta gems server:


gem install -s http://gems.rubyonrails.com capistrano

The following items are just some of the changes new in preview #4:

  • The deploy:symlink task works correctly now when run by itself.
  • Synchronously instantiate the gateway to prevent it being instantiated multiple times.
  • Use “which” instead of “test -p to test whether a command exists on the path.
  • The :hosts and :roles keys can now accept lambdas, to lazily select which hosts or roles a task uses.
  • Versions of Net::SSH prior to 1.1.0 work with Capistrano again.
  • Variable accesses are now thread safe.
  • The deployment code is now locale-independent, so that the revision is parsed correctly even if your computer is using a non-English locale.
  • You can now pass :on_error => :continue when defining a task, so that any connection or command errors that occur during the task’s execution will be ignored, allowing the task (and subsequent tasks) to continue.

You can see the entire list of changes in the CHANGELOG.

So, give it a go. Try it out. Post your feedback to the Capistrano mailing list. I’d love to release cap2 final next week!

P.S. If you are on a Windows machine, and you get Zlib errors trying to install the Capistrano gem, try this. Find the rubygems/package.rb file (wherever it happens to be in your Ruby installation), open it up, and find the zipped_stream method. Then, replace it, wholesale, with the following:

1
2
3
4
5
6
7
def zipped_stream(entry)
entry.read(10) # skip the gzip header
zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
is = StringIO.new(zis.inflate(entry.read))
ensure
zis.finish if zis
end

That seems to do the trick for me; let me know if it doesn’t work for you.

Source

Tuesday, July 3, 2007

jQuery 1.1.3: 800%+ Faster, still 20KB

I’m pleased to announce the release of jQuery 1.1.3. After many months of testing, developing, and more testing, we have a very solid release available for download. It comes with roughly 80+ fixed bugs and a handful of enhancements for good measure. Highlights include:

  1. Improved speeds, with DOM traversal over 800% faster than in 1.1.2.
  2. A re-written event system, with more graceful handling of keyboard events.
  3. A re-written effects system (with an accompanying fx test suite), featuring faster execution and better cross-platform support.

Download:

As always, if you find any bugs with this release, please post them to the jQuery Bug Tracker.

1.1.3 Features

Massive Selector Speed Improvements

Due to popular demand, we dug deep and made some major changes to jQuery’s selector engine. Here’s a breakdown of the speed improvements that were made to jQuery itself. All numbers are based on the SlickSpeed test suite.

Browser jQuery 1.1.2 jQuery 1.1.3 % Improvement
IE 6 4890ms 661ms 740%
Firefox 2 5629ms 567ms 993%
Safari 2 3575ms 475ms 753%
Opera 9.1 3196ms 326ms 980%
Average improvement: 867%

Additionally, we tested the improved code base against some of the other popular selector libraries, again with the SlickSpeed test suite.

Browser Prototype jQuery Mootools Ext Dojo
IE 6 1476ms 661ms 1238ms 672ms 738ms
Firefox 2 219ms 567ms 220ms 951ms 440ms
Safari 2 1568ms 475ms 909ms 417ms 527ms
Opera 9.1 220ms 326ms 217ms 296ms 220ms

A couple things to notice when looking at the speed suite results are that:

  • We’re over 800% faster than we were in jQuery 1.1.2.
  • We’re the fastest framework in the most popular browser, Internet Explorer 6.
  • We’re the only framework that doesn’t give incorrect results.
  • And all of this comes at no expense to you — jQuery is still the same 20KB that you’ve come to expect and enjoy.

New Selectors

Unicode Selectors: This is a huge addition for those of you who want to use Unicode attribute values, IDs, class names, or tag names. You can now use them directly in jQuery selectors:

$("div.台北")
$("div#台北")
$("foo_bar台北")
$("div[@id=台北]")

Escape Selectors: A frequently requested feature you can now select elements by ID (or other selector) that uses a special character, for example this will find the div that has the ID of “foo.bar”:

$("div#foo\\.bar")

Inequality Selector: While this selector isn’t part of the CSS specification, it’s frequently used and included in other selector libraries, so we decided to add it in:

$("div[@id!=test]")

:nth-child() improvements: This selector allows you to locate specific child elements. We’ve supported selectors like :nth-child(1) and :nth-child(odd) since the beginning of jQuery, now we’ve added advanced :nth-child selectors, such as:

$("div:nth-child(2n)")
$("div:nth-child(2n+1)")
$("div:nth-child(n)")

Space-separated attributes: After being removed in jQuery 1.0, this selector has now been brought back by popular demand. It allows you to locate individual items in a space-separated attribute (such as a class or rel attribute).

$("a[@rel~=test]")

Animation Improvements

Speed: Animations are now significantly faster and smoother. Additionally, you can run more simultaneous animations without incurring any speed hits.

Testing: We now have a dedicated test suite for animations — which has allowed us to fix a number of pressing animation bugs that weren’t previously locatable.

DOM Event Listeners

Internally, the jQuery Event system has been overhauled to use the DOM Event system, rather than the classical “onclick” style of binding event handlers. This improvement allows you to be more unobtrusive in your use of the library (not affecting the flow of other libraries around it). Additionally, it helped to resolve some of the outstanding issues that existed with binding event listeners to IFrames.

Event Normalization

Some great steps have been taken to normalize keyboard and mouse events. You can now access the event.which property to get most details about the specific key or button that was pressed.

Multiple .is()

The .is() method can now take multiple selectors, separated by a comma. This allows you to test your jQuery set against multiple selectors.

$("div").is(":visible, :first")

Browser Version

A commonly requested feature, by plugin authors, was a way to determine what browser version their users were using. We now expose an extra property through which this information can be accessed.

jQuery.browser.version

More Bug Fixes

Please see the ticket listing for the full list of all issues resolved in this release.

The Future of jQuery

We’ve been very concerned with the direction and progress being made towards furthering the jQuery project. We’re focusing on a number of different aspects now, but the primary concern is still the advancement of the core jQuery library. We’ve spec’d out the next two releases, which you can read more about below:

jQuery 1.1.4

This will be the last release of the jQuery 1.1 branch - another bug fix release with some minor improvements. This release will also mark a number of methods as deprecated, in accordance with the upcoming jQuery 1.2 release.

We’re currently planning on having this release take place at the end of July.

jQuery 1.2

This will be the next major release of jQuery, containing a significant number of new features. The full details of this release can be found in the jQuery 1.2 Roadmap.

Your comments and feedback on this release are greatly appreciated. It’s still in planning, so nothing is completely final. We’re currently planning on releasing jQuery 1.2 by the end of August.

jQuery Books

We’re now up to 4 jQuery books being written and, just as importantly, they’re all being written by members of the jQuery team (so you’ll know that you’re getting good information).

The books and their authors are as follows:

  • Learning jQuery by Karl Swedberg and Jonathan Chaffer - due out early July 2007 (Packt Publishing).
  • jQuery Reference Guide by Karl Swedberg and Jonathan Chaffer - due out Summer 2007 (Packt Publishing).
  • jQuery Quickly by Yehuda Katz and Bear Bibeault (Manning Publishing).
  • Designing with jQuery by Glen Lipka (Manning Publishing).

This is really fantastic news. I’ve been able to read some of the pre-release chapters and I think you’re going to be in for a real treat with these books.

jQuery Talks and Conference

I’d like to announce some talks being given about jQuery in the upcoming months. Specifically, there will be a number of talks given about jQuery at both of the Ajax Experience conferences.

At the San Francisco Ajax Experience, John Resig will be giving an introductory overview to jQuery followed by an advanced jQuery talk. Glen Lipka will be giving a talk on designing with jQuery.

At the Boston Ajax Experience, John and Glen will be presenting again, and will be joined by Paul Bakaus to give a talk on developing intense applications and games with jQuery.

Since there’s going to be quite a few members of the jQuery team at the Boston Ajax Experience, we’d like to announce that we’re planning on doing a small, one day, jQuery Conference the next day after the Ajax Experience. This will be the perfect opportunity for you to meet the jQuery team and ask any nagging questions that you have. We’ll also be giving a number of talks about specific aspects of jQuery. We’ll have more details about this soon.

jQuery UI

Today, we’re also pleased to announce a secret project that we’ve been working on: jQuery UI. This project, being written by Paul Bakaus, is a whole new Drag & Drop library being developed from the ground up with speed and extensibility taken into consideration. Additionally, great care is being taken to have the code be fully documented and tested — allowing many other developers to use and help extend it.

This library will contain full code for Draggables, Droppables, Sortables, Resizables, and a Slider.

You can take a look at some of Paul’s early work in the SVN repository.


Source: jQuery

Technorati Loses Three MOre

The news is just coming out that Technorati have lost two more employees. Tantek Celik has left after serving as 3 years as head of technology at Technorati and Adam Hertz has also left, after also serving for 3 years as the VP of Engineering. Both Tantek and Adam have played important roles in developing the technology at Technorati, with Tantek additionally being a spokesperson and evangelist of Microformats and other open standards.

From the blog post it appears that they have both left the company to pursuit other opportunities. It is unknown if they are working on the same opportunity together, as they have left at the same time and worked closely together at Technorati. Having their two most important technology people leave is a big blow to Technorati. Tantek brought a lot of technical credibility to Technorati, which was especially needed as they have struggled with downtime and performance issues. Tantek was also responsible for a large part of the developer community that formed around the company and its services, and also played an important part in Technorati’s support for tags and microformats. Today you can find Technorati built into almost every blogging platform and their API being used in many different sites to display latest results, reputation and more. Technorati have had solid adoption amongst third-parties because of the level of developer evangelism and support that Tantek, along with others (such as Kevin Marks - who left for Google earlier this year) brought to the company.

It is yet to be seen what effect this will have on Technorati, as many third-party developers were loyal to the key developers at Technorati, most of who have now left the company. There were also many initiatives at Technorati, such as Microformats, that were being lead by the same key people who are no longer there. It also remains to be seen as to what will happen to those, and most importantly, if Technorati will be able to maintain their somewhat-lagging credibility with developers.

Update: It turns out that Technorati product manager Liz Dunn has also left the company, although there was no mention of it in Dave Sifry’s post. Liz has left Technorati to join Will Farrell’s Sequoia-back comedy video site FunnyOrDie as the Director of Product. Liz had been at Technorai for 18 months and was responsible for the new site they launched.

More to come on this story.

Respectance: Social Networking With A Deadly Twist

It must be niche social networking week. Following my review yesterday of Bakespace, a social networking site for people who like cooking, another interesting site hit my inbox: Respectance.

Respectance is a social networking site for online tributes, or as the email sent to me so nicely put it: “MySpace for dead people”. Respectance provides a space for family and friends to honor their dead loved ones by creating online tributes. Whilst similar tribute profiles do appear on MySpace or Facebook, Respectance differs by being dedicated entirely to the dead.

Respectance’s creators wanted to develop a dedicated and appropriate outlet for individuals to heal and share memories of their loved ones, while finding others with similar experiences. The site has also attracted fans that have created tribute sites for dead celebrities; Kurt Cobain and Ernest Hemingway are two examples.

The site (respectfully) does not run advertising; instead the business model focuses on charging for premium services.

Respectance was founded by Tom Wilkinson and Kazaa co-founder Richard Derks. The company has offices in San Francisco and Krakow, Poland and took funding of $250,000 from Dutch VC firm Solid Ventures in June.

respectance1.jpg

Monday, July 2, 2007

iPhone has a $250 - $300 Million Opening Weekend

iphonemoney.jpg

Piper Jaffray’s Gene Munster is estimating Apple sold half a million iPhones from 6 p.m. Friday through the close of business on Sunday. With the devices going for $500 to $600, that’s around $250 to $300 million in cash changing hands, depending on the mix of 4GB and 8GB units sold.

With margins on the device in the 20-50% range (probably closer to the lower end), that leaves an estimated $50 to $150 million in profit.

Not a bad weekend for Apple.

Sunday, July 1, 2007

AOL takes page from blogs in news site relaunch

Time Warner plans to launch a test of its overhauled news portal on Tuesday, drawing influences from the uncluttered design of popular Internet blogs.

The online division of the world's largest media company said it aimed to keep readers returning and to introduce a new generation of media consumers to the site by offering more interactive features such as polls and voting features and user-created news on one page.

"I truly believe that when you go to most news sites, it's a Web 1.0 world," Lewis D'Vorkin, senior vice president of AOL News and Sports, said, referring to the first generation of Internet sites. "They have rearranged the furniture. We have built new furniture."

AOL's sports site will also relaunch later this week following a similar design model.

D'Vorkin's work has included introducing a blog-like format about a year ago to celebrity gossip Web site TMZ.com, now one of the most closely read sites in Hollywood. TMZ is a joint venture of AOL and Warner Bros.

Like some, but not all, of its mainstream media rivals, AOL News faces a decline in visitors in the past month, according to comScore Media Metrix figures for May.

Even as top news site Yahoo News' traffic rose 8 percent to 33.7 million unique visitors in May, AOL News traffic fell 12 percent to 19.1 million. The New York Times brand site also fell 9 percent to 8.3 million visitors in May.

AOL overhauled its business model last summer, when it decided to give away most of its services away for free to boost online advertising by focusing on its free portal.

The new design divides the page into three vertical columns, with the heart of the programming at the center column. There, AOL's editors and producers update and select top news stories, videos and photos in one place.

Much like a blog, new stories push older ones lower as they are posted.

The right column is occupied by wire feeds from major news sources from the Associated Press, ABC News, CBS News and others. AOL News bloggers entries will also appear on the right column.

The left side of the page will feature user-submitted news and top stories voted on or commented on by viewers.

D'Vorkin said the ability to personalize the news page will come in the next two to three months, using technology the company acquired from Relegence, a financial news services company.

How To Write a Google Gadget

I’ve written some notes on the Google Gadget API and how to write a gadget, targeted at developers who already know Ajax.

What’s a Gadget?

  • The gadget is an XML file sitting on your server. In my case, http://ajaxify.com/run/widgets/google/diggroundup.xml. It will get cached, so effectively it must be a static file.
  • The user adds your gadget to their igoogle portal, or codes it into their own website, by specifying this URL (it may be done indirectly - via the gadget registry. You’ll appear in the registry if you’ve submitted your gadget to igoogle.)
  • The gadget is rendered as an iframe, so you have all the usual security constraints which stop you borking the portal and other gadgets. This also means you can’t communicate with other Gadgets other than via than remote calls to a common third-party server (or has anyone tried hooking them together using the iframe-fragment identifier hack? ).

It’s based on a Digg Roundup tool, where the gadget show Digg stories according to user preferences such as topic and whether to go for popular or upcoming stories.

Kevin v. Evan

So I’ve had a week now to play around with Pownce, Kevin Rose’s (the founder of Digg, pictured left) newly launched Twitter killer.

Twitter, which launched a year ago, was obviously used as the initial inspiration for the Pownce. They both allow users to sign up, add friends, and broadcast quick notes to people. The main differences: Twitter is mobile-ready, allowing users to receive friend requests and new messages via text message. And Pownce gives users more flexibility in communicating by allowing messages just to friends. Pownce also allows different kinds of messages - file transfers, events, links and plain text messages (Twitter allows text and links only). There’s no reason, though, that users will use both. They’ll go with one or the other, or neither.

So is Pownce good enough to beat Twitter?

The early adopter crowd is going to be torn on this one. (Just about) everyone loves Kevin Rose, and anything he launches is going to get serious attention - on Digg, tech blogs and mainstream press. But a lot of people like Twitter, too, and that application has already reached the “network effect” stage of its business cycle. It continues to grow fast. And Evan Williams, the co-founder of Twitter (and Odeo and Blogger), is also well liked in Silicon Valley.

A breakdown of the basic features is in the chart to the right. Pownce also provides a few other bells and whistles not included in the chart. For example, it lets you forward a message to others (and also allows you to exclude those that have already received it). And they also give basic stats on messages, like how many people have received it. Pownce has an AIR desktop application, although there are similar apps for Twitter, too. Another thing to consider that’s not on the chart - Twitter has had, and continues to have, massive performance issues. It is slow or down way too often.

Services like Twitter and Pownce (and there are others, too - Jaiku, Kyte and many more) are highly viral and benefit from the network effect. People want to join the service that all of their friends already use, and so each new user adds value to the network as a whole. By that measure, Twitter is far ahead of Pownce.

Frankly, unless you really like the mobile aspect of Twitter, there isn’t a whole lot of difference between the two services. I expect Twitter will add most of the Pownce features in the short term anyway. And many of the unique features of Pownce - like file sharing, group messaging, etc., are handled pretty well already by…email. Gmail, for example, lets users send files of up to 20 MB. Pownce lets you send up to 10 MB files, unless you pay for a pro account (then the limit is 100 MB). And email is certainly very useful for private and group messaging.

People use Twitter to quickly tell the world (or at least the people who care) what they are up to and what they are looking at on the web. Like blogging, it’s a one-to-many application that works very well. Twitter does that perfectly, and does little else. Pownce does it, too, but all the other features are really just distractions.

Pownce also does something that I find highly annoying. By default, you receive an email message every time you get a new friend or receive any sort of message. My inbox quickly filled up with dozens of emails telling me I had a message. But to read the message I have to click on a link and go to the service. The only reason for that is to generate page views

Nicely Done


Whatever company this is, they should use this as one of their primary recruiting tools. Well done. As soon as you get to about 0:53, you know it’s going to be good.

MyThings Tracks Your Things

MyThings is a service that allows users to create an online portfolio of valued belongings.

We reviewed iTaggit earlier this week; MyThings operates in the same space. Both provide personal asset management although MyThings is the more extensive offering of the two; MyThings took $8million from Carmel Ventures and Accel Partners in May 2006 and the funding shows.

MyThings offers a integrated one stop shop for collectibles. Items can be included in the database, with tags and pictures. Once listed users are able to obtain a valuation for the item, buy (or extend) the items warranty, purchase insurance, sell the item on eBay and even donate am item to a worthy cause. MyThings also includes an extensive database of items reported lost and stolen from the world of art, antiques and collectibles; MyThings users are able to add stolen items to the database at any time and likewise the service is able to screen new submissions for items that may have been stolen.

The company has offices in Menlo Park, London and Tel Aviv, delivering a global product with a lot of appeal. Perhaps my earlier assessment of the space (in the iTaggit review) as being niche was unwarranted; the extensive user collections listed on MyThings would indicate that listing collections online may actually be a hot vertical.

mythingsshot.png

Saturday, June 30, 2007

Phone Safari Notes and Quirks

Now we can get our hands on an iPhone, developers are testing out Safari to see what is actually available. How is the DOM? What events get fired? How does the keyboard send onkey* events? How is scrolling handled? How is the JavaScript support?

Abe Fettig has been jotting down his notes, which include:

  • Poking around the DOM, I don’t see any special objects, with the possible exception of window.offscreenBuffering (set to true).
  • Bookmarklets work, although you have to go through the bookmarks menu to get to them.
  • Safari crashes are handled gracefully - the main screen fades back in, and you can jump right back into Safari. It will then load page you were visiting when it crashed.
  • Drag and drop, and other behaviors based on picking up mousemove events, don’t work. CSS-based element drag and drop doesn’t work either. Dragging one finger around the iPhone’s version of Safari causes the window to scroll, and that’s it. I assume that scroll events do work. I’m sure somebody is already working on a version of drag and drop based on window scrolling.
  • For documents with no width set, the iPhone uses a default width of 980px.

Joe Hewitt isn’t too happy with his experiments:

My first task has been exploring the DOM events that you can handle. You do not get “mousedown” when you touch the screen. You get “mousedown” and “mouseup” at the same time when you release your finger. The “mousemove” event does not seem to fire at all. There is no way to handle double-clicking because that is the action for zooming, and calling event.preventDefault() doesn’t seem to override that.

If Safari is the current SDK, we need help as developers to build, and debug, applications.

MySpace Likely To Open Platform To 3rd Party Developers

MySpace founder Chris DeWolfe has indicated that MySpace will likely open its platform to 3rd party developers, according to a report at FT.com

The move will see MySpace following in the footsteps of Facebook; Facebook’s wildly popular F8 release has seen in excess of 1000 additional applications made available to Facebook users and has driven enormous growth.

MySpace still maintains leadership in the social networking space based on user numbers and traffic, and has continued to grow; however there is little doubt today that the hearts and minds of the people who count have abandoned MySpace for Facebook. The moves to an open platform also comes after reports earlier this week claiming that DeWolfe was asking for a $12.5 million annual salary to stay on at MySpace. If DeWolfe can successfully play catch-up with Facebook he may end up being worth it.

Google Maps Now Does Interactive Re-Routing

An anonymous reader writes
"Remember how cool it was the first time you used MapQuest or Google Maps or Google Earth? You'll feel like it's the first time again, when you use interactive dragging of routes on Google Maps. Some of the folks from the development team have even whipped up a handy video to explain the concept."

Everyone’s Gunning For YouTube

The focus and experimentation on IPTV is switching away from watching short clips on YouTube to watching full length shows on downloadable TV applications like Joost, Babelgum, Veoh TV , Netflix (which now has a Silverlight application) and others. YouTube continues to grow, but people are not looking to find full length TV shows there.

That isn’t stopping the competitors from trying to get a piece of the action, though.

YouTube has a slew of direct competitors, but the network effect kicked in long ago for YouTube and its unlikely that loose copyright policies or higher quality videos are going to make any kind of dent in their market share. But the networks are still goggling that $1.65 billion price tag for YouTube, and they want their pound of flesh.

Competitors Running In Circles

Hitwise published some statistics earlier this week showing that YouTube has 60% market share of the U.S. video sharing sites - they have more visitors than all of their competitors combined. They continue to grow at a fast clip even after the networks started massive litigation against them.

Comscore worldwide data is nearly identical, showing YouTube with a 66% market share. See the chart to the left for the side-by-side numbers.

It’s clear that the market is probably big enough for a few competitors to be successful, but no one is knocking YouTube off the thrown any time soon.

Friday, June 29, 2007

A Report on Push versus Pull

Engin Bozdag, Ali Mesbah, and Arie van Deursen of the Delft University of Technology have compiled a technical report on various push versus pull techniques of building Ajax applications based on an example application that they built.

They concluded that:

In this paper we have compared pull and push solutions for achieving web-based real time event notification. The contributions of this paper include the experimental design, a reusable implementation of a sample application in push and pull style as well as a measurement framework, and the experimental results.

Our experiment shows that if we want high data coherence and high network performance, we should choose the push approach. However, push brings some scalability issues; the server application CPU usage is 7 times higher as in pull. According to our results, the server starts to saturate at 350-500 users. For larger number of users, load balancing and server clustering techniques are unavoidable.

Push Pull
http://swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/TUD-SERG-2007-016.pdf

htsh: http shell

Adeel Khan has created another HTTP shell called htsh using PHP on the backend and jQuery for the front end. It currently supports most common commands, like cd, chmod, cp, edit, exit, ls, mkdir, mv, rm, rmdir, touch, unzip, and zip. It is also very easy to add your own commands. It even supports tab-completion.

There is a demo to play with that doesn’t have all of the commands enabled for security reasons.

HTSH