Computers are used by many people who are not technically skilled at diagnosing and correcting problems that may arise with a computer. Furthermore, many computer users are not even comfortable installing or upgrading applications like anti-virus software, or adjusting security settings like firewall settings. Many of these types of users rely on more knowledgeable friends or family members to assist them with these types of tasks.
It can be very valuable for individuals providing technical assistance to have access to data such as a software installation history, performance history, device installation/removal history, current computer problems, and so on. Unfortunately, there is no central place to get the overall history of a computer and the activities performed on it. Furthermore, if the individual providing technical assistance is trying to help the computer user over the phone, it can be very difficult to walk the computer user through the necessary steps to retrieve some of this helpful information.
The Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Automated device blog creation is described. Data associated with a computing device (e.g., performance data, configuration data, health data, or reliability data) is automatically gathered and uploaded. User entered data, such as problem descriptions may also be gathered and uploaded. The gathered data associated with the computing device is automatically formatted as a web log (“blog”), which can then be accessed and easily read by a user of the computing device. A user of the computing device may also grant other users permission to view the device blog, for example, to assist in troubleshooting a problem that the user is having with the computing device.
Automated device blog creation as described below provides a mechanism by which history data associated with a computing device is automatically gathered and automatically formatted for presentation to a user. A blog is typically thought of as a web-based journal or diary of sorts, where a user (the blog owner) writes entries. The entries are then typically displayed in chronological order. An automatically created device blog, as described herein, provides various types of data associated with a computing device in an easy-to-read format. While portions of the data may be presented in a chronological order, some portions of the blog may also include non-chronological data. Various types of history data associated with a computing device may be gathered for presentation via a blog. Such history data may include, but is not limited to, performance data, health data, reliability data, configuration data, and user-submitted data.
The following discussion is directed to automated device blog creation. While features of automated device blog creation can be implemented in any number of different computing environments, they are described in the context of the following exemplary implementations.
Web server 106, although illustrated as a single web server, may also be implemented as a combination of one or more servers. For example, device history data 104 may first be uploaded to a server (not necessarily a web server), which is configured to maintain and format the data as a blog. The blog may then be transmitted to a second server (implemented as a web server), which is configured to receive blog request 112, and in response, serve the blog. Accordingly, throughout this document, references to a web server are intended to imply any server or combination of servers that may be configured to provide the described functionality.
In an exemplary implementation, a single user of computing device 102 is initially established as the owner of the computing device 102. The owner of the computing device 102 is given default access to the blog, and can specify any number of other users who may also be given access (either permanent or temporary) to the blog.
Web server 106 may be implemented to deliver blog update notification 302 in any number of ways. For example, blog update notification 302 may be delivered as an email message, as an instant message, or via a subscription service such as really simple syndication (RSS).
Also, as illustrated in
Referring back to menu area 504, selecting the problems link may cause another web page to be displayed that presents a list of user-submitted problems. Similarly, selecting the system summary link may cause another web page to be displayed that lists the most currently gathered status data associated with the computing device. Such status data may include, for example, the current status of any installed firewall, antivirus, or antispyware software. Selecting the lists link may cause yet another web page to be displayed that includes any number of data lists, which may include, but are not limited to, a list of the last five crashes/hangs, a list of user-reported problems, a list of system boot times, a list of software installed on the machine, and/or a list of software configured for automatic startup. Device blog 500 may also include update now button 514. When selected, update now button 514 causes the web server to request that the computing device associated with the blog perform a data upload, even if the computing device is not currently scheduled to upload data. In this way, the blog can be updated with the most current data available. This may be useful when a user is trying to modify settings or correct a problem, in that the user could make changes to the computing device, and then update the blog to determine how the changes have affected the status of the computing device.
Exemplary device history data collection application 610 includes user interface module 614, automatic data collection module 616, device history data cache 618, and user settings data store 620. User interface module 614 enables user interaction with device history data collection application 610. For example, a user may, through user interface module 614, specify various user settings, which are maintained in user settings data store 620. The user settings may, for example, specify types of data to be collected, data collection frequencies, and data upload frequencies.
Automatic data collection module 616 automatically gathers various types of data associated with computing device 600, typically (but not necessarily) running as a background process. For example, when computing device 600 is powered on, device history data collection application 610 may be launched to run as a background process. The data to be gathered may be pre-set or may be specified by data in user settings data store 620. The data that is gathered is written to device history data cache 618. Examples of data that may be gathered (either by default or based on user settings) may include, but is not limited to, startup performance data (i.e., how long it takes for the computer to boot), computer health ratings (e.g., antivirus status, firewall status, antivirus signatures status, antispyware status, data backup status, disk defragmentation needed, etc.), computer reliability data (e.g., how many times has the machine rebooted during a particular time period, why the machine has been rebooted, how many times the machine has crashed during a particular time period, what has caused system crashes, etc.), software patches available, performance measurements (e.g., memory speed, disk speed, processor speed, video card speed, etc.), configuration data (e.g., brand/model of different hardware components such as the motherboard, central processing unit, mouse, keyboard, video card, etc.), software installation history data (e.g., which apps are installed on the computing device, when applications were added and/or removed from the computing device), and startup group data (e.g., a listing of applications that are started automatically each time a user logs on). User reported problems may be gathered as text entries typed in by the user via a user interface associated with the device history data collection application. User reported problems may include entries such as, “my machine is slow”, “Outlook isn't getting mail from my ISP”, “how do I use pivot tables in Excel?”, and so on. Data stored in device history data cache 618 is uploaded to a web server periodically (e.g., hourly, daily, weekly, or by request).
A user may also specify one or more other users who are to be granted permission to view and/or interact with a blog associated with computing device 600. Such user permissions are typically maintained by a web server that manages access to the blog. In an exemplary implementation, a user may access and modify the permissions associated with a blog through an interface with the web server. Alternatively, device history data collection application 610 may also include device blog user permissions data store 622. In such an implementation, device blog user permissions data store 622 maintains a copy of the user permissions that are maintained by the web server. A user may modify the permissions as maintained by device blog user permissions data store 622, and those modifications may then be uploaded to the web server along with data from device history data cache 618.
Device history data collection service 710 receives history data and user permissions data uploaded from one or more computing devices. Device history data collection service 710 writes the received history data to device history data store 714 and updates blog user permission data store 716 with the received user permissions data. Blog service 712 uses the data stored in device history data store 714 to create or update the device blog 718 associated with a computing device from which history data has been received. Blog service 712 also receives blog requests from users. When a particular blog is requested, blog service 712 accesses blog user permission data store 716 to verify that the requesting user has permission to access the requested blog. Due to the sensitive nature of the data that may be stored in a device blog, this security measure is very important. For example, if no control was exercised over who was granted access to device blogs, a hacker could access the device blogs to easily identify, for example, computing devices with no firewall protection or outdated antivirus signatures.
In an exemplary implementation, blog service 712 may also be configured to automatically generate and deliver a notification when a particular device blog is updated. For example, as described above with reference to
Methods for implementing automated device blog creation may be described in the general context of computer executable instructions. Generally, computer executable instructions include routines, programs, objects, components, data structures, procedures, and the like that perform particular functions or implement particular abstract data types. The methods may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
At block 804, device history data is automatically gathered. For example, automatic data collection module 616 gathers various types of data associated with computing device 600 and records the gathered data in device history data cache 618.
At block 806, it is determined whether or not user-submitted device history data or user-submitted user permissions data has been received. For example, device history data collection application 610 determines whether or not a user has submitted a problem report via user interface module 614 or whether or not a user has updated data stored in device blog user permissions data store 622.
If no user-submitted device history or user permissions data has been received (the “No” branch from block 806), then processing continues as described below with reference to block 810. On the other hand, if user-submitted device history data or user permissions data has been received (the “Yes” branch from block 806), then at block 808, the user-submitted data is gathered. For example, any user-submitted device history data received through user interface module 614 is written to device history data cache 618, and any user-submitted user permissions data is used to update device user permissions data store 622.
At block 810, it is determined whether or not a request to gather specific data has been received. For example, a user may submit a request through user interface module 614 for specific data to be gathered and uploaded immediately. Similarly, an individual viewing the device blog may submit a request for updated data through an interactive portion of the blog, causing a request for data to be sent from the web server to the computing device.
If a request to gather specific data has been received (the “Yes” branch from block 810), then at block 812, the requested data is gathered. For example, the requested data is automatically gathered and added to device history data cache 618.
At block 814, history data and user permissions data is uploaded. For example, computing device 600 transmits data from device history data cache 618 and device blog user permissions data store 622 over the Internet to a web server.
On the other hand, if it is determined that no requests to gather specific data have been received (the “No” branch from block 810), then at block 816, it is determined whether or not it is time to upload the device history data. For example, device history data collection application 610 may be preset to automatically upload data at specified intervals. Alternatively, device history data collection application 610 may receive instructions indicating a request that any data currently in the device history data cache 618 be uploaded.
If it is determined that it is not yet time to upload the device history data (the “No” branch from block 816), then processing continues as described above with reference to block 804. On the other hand, if it is determined that it is time to upload the device history data (the “Yes” branch from block 810), then at block 814, history data and user permissions data is uploaded. For example, computing device 600 transmits data from device history data cache 618 and device blog user permissions data store 622 over the Internet to a web server.
At block 904, it is determined whether or not the received data includes device history data. For example, device history data collection service 710 determines whether or not the received data includes history data associated with the device from which the data was received.
If it is determined that the received data does not include device history data (the “No” branch from block 904), then processing continues as described below with reference to block 914. If it is determined that the received data does include device history data (the “Yes” branch from block 904), then at block 906, the received device history data is maintained. For example, device history data collection service 710 writes the received device history data to device history data store 714.
At block 908, the received device history data is formatted as a blog. For example, blog service 712 accesses the data stored in device history data store 714, and creates or updates a device blog 718 associated with the device.
At block 910, it is determined whether or not a blog update notification has been requested. For example, blog service 712 examines data in blog user permission data store 716 to determine whether or not any users with permission to access the device blog have requested to be notified when the blog is updated.
If it is determined that no blog update notifications have been requested (the “No” branch from block 910), then processing continues as described below with reference to block 914. On the other hand, if it is determined that a blog update notification has been requested (the “Yes” branch from block 910), then at block 912, a blog update notification is generated and delivered. For example, blog service 712 generates a notification and transmits it to any users who have requested such notification. The notification may be delivered, for example, via email, as an instant message, or as an RSS notification.
At block 914, it is determined whether or not the received data includes user permissions data. If the received data does not include user permissions data (the “No” branch from block 914), then processing continues as described above with reference to block 902.
If it is determined that the received data does include user permissions data (the “Yes” branch from block 914), then at block 916, blog user permissions data is updated. For example, device history data collection service 710 updates blog user permission data store 716 using the received user permission data. It is recognized that in an alternate implementation, blog user permissions data may be updated by a user through a web page interface rather than via the uploaded data, as described here. Processing then continues as described above with reference to block 902.
At block 1004, it is determined whether or not the user requesting access to the device blog has permission to access the blog. For example, blog service 712 compares a user identifier associated with the request with data stored in blog user permission data store 716 to determine if the requesting user has permission to access the requested device blog.
If the requesting user does not have permission to access the requested device blog (the “No” branch from block 1004), then at block 1006, an error message is returned. On the other hand, if the requesting user does have permission to access the requested device blog (the “Yes” branch from block 1004), then at block 1008, the requested device blog is returned.
Although embodiments of automated device blog creation have been described in language specific to structural features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as, exemplary implementations of automated device blog creation.