1. A method for providing a scored list of applications for use in recommending applications to a user, the method comprising: storing an application signature for each user of a cloud computing service, wherein the application signature of a first user stores a usage total for the first user for each application in a set of available applications provided by the cloud computing service, wherein the usage total is a total number of times the first user has used a respective application to open a file in a set of files on the cloud computing service; storing a user similarity matrix across all users of the cloud computing service, wherein a first similarity value in the user similarity matrix measures the similarity between the first user's application signature and a second user's application signature, and wherein the cloud computing service periodically updates the application signature for each user based on user activity on the cloud computing service; receiving at the cloud computing service a request to provide a scored list of applications for the first user; constructing the scored list of applications from the set of available applications, wherein a score of each application is a function of the usage totals for the application in the application signatures for each user and each user's similarity value to the first user; outputting the scored list of applications; periodically updating the user similarity matrix, wherein the user similarity matrix is indexed by a user ID of each user in a row dimension and in a column dimension of the user similarity matrix and the user similarity matrix includes a triangular matrix; and updating, in response to user activity of the first user, a row or a column of the triangular matrix corresponding to the user ID of the first user.