The present invention generally relates to the field of personal information management. More particularly, the present invention relates to methods for the calendaring of events.
Individuals in today's technological world are inundated with much information including information about many events that may be occurring throughout the day, throughout a week, and throughout a year, where potentially many of these events may present time conflicts. Personal information management tools such as calendaring systems can be helpful in managing an individual's events. Calendaring systems are provided by companies such as Google, Microsoft, and Apple.
Typical of these calendaring systems is that individual events are entered with specific dates and times. In this way, the calendaring tool can help an individual manage his events. Basically, these tools provide for entering fixed information about a particular event. Because of this, these tools do not provide much flexibility when events may be in conflict with each other or when events may be flexible or optional. For example, where events may be in conflict with each other, an individual is required to manually evaluate the events and make individual decisions for each event so as to resolve the conflict. This can be cumbersome and time-consuming and provides a high likelihood of scheduling conflicting events.
Typical calendaring systems also provide for listing long-term tasks such as To-do lists but do not provide a manner by which to integrate the long-term tasks into individually scheduled events in an individual's calendar.
Therefore, there is a need in the art for a calendaring tool that can automatically manage conflicts. There is further a need for a calendaring tool that can manage flexible or optional events and reschedule them as necessary. Moreover, there is a need for a calendaring tool that takes listings of long-term tasks and provides individually scheduled events to a user toward completing the long-term tasks.
Among other things, the present invention provides for calendaring flexible events. Flexible events can include, for example, flexible time events, events tagged with different priorities or characteristics, conditional events, multiple choice events, long-term tasks. Flexible time events are, in one embodiment, events that can be completed during predetermined times in one or more days but that do not need to be completed at any specific time. Tags for events with tagged priorities or characteristics can include, for example, priority tags that provides for automatic conflict resolution. Also, tags can include, for example, characteristics for events that may be able to be simultaneously scheduled. Conditional events are, in an embodiment, alternative events that are conditioned on certain criteria (e.g., schedule run if sunny, otherwise schedule gym workout). Multiple choice events are events that can be alternatively chosen at a later date. Long-term tasks are, for example, events that can or need to occur over several days, weeks, or months. For example, learning a foreign language is a long-term task that must be done over several weeks or months.
Described herein are methods for implementing a calendaring system for managing flexible events. For an embodiment of the present invention, a method is disclosed where an individual's currently calendared events are considered when scheduling a new flexible event. For example, given an individual's many previously scheduled events, a method of the present invention considers the flexibility of the new event to be scheduled to find its appropriate time slots. From the appropriate time slots, the flexible event is then scheduled. In this way, the flexible event need not be scheduled at only one time but can be scheduled as its specified flexible attributes allow. Moreover, as further events are entered the new or pre-existing events with flexible attributes can be re-scheduled toward resolving conflicts.
For clarity and so as to illustrate the breadth of the present invention, various particular embodiments are disclosed, none of which is intended to be limiting. For example, details are provided for handling different types of flexible events and their associated parameters. Moreover, details are provided of a particular embodiment that uses an API to interface with Google's calendaring system.
These and other embodiments can be more fully appreciated upon an understanding of the detailed description of the invention as disclosed below in conjunction with the attached figures.
The following drawings will be used to more fully describe embodiments of the present invention.
Among other things, the present invention relates to methods, techniques, and algorithms that are intended to be implemented in digital computer system 100 such as generally shown in
Computer system 100 may include at least one central processing unit 102 but may include many processors or processing cores. Computer system 100 may further include memory 104 in different forms such as RAM, ROM, hard disk, optical drives, and removable drives that may further include drive controllers and other hardware. Auxiliary storage 112 may also be include that can be similar to memory 104 but may be more remotely incorporated such as in a distributed computer system with distributed memory capabilities.
Computer system 100 may further include at least one output device 108 such as a display unit, video hardware, or other peripherals (e.g., printer). At least one input device 106 may also be included in computer system 100 that may include a pointing device (e.g., mouse), a text input device (e.g., keyboard), or touch screen.
Communications interfaces 114 also form an important aspect of computer system 100 especially where computer system 100 is deployed as a distributed computer system. Computer interfaces 114 may include LAN network adapters, WAN network adapters, wireless interfaces, Bluetooth interfaces, modems and other networking interfaces as currently available and as may be developed in the future.
Computer system 100 may further include other components 116 that may be generally available components as well as specially developed components for implementation of the present invention. Importantly, computer system 100 incorporates various data buses 116 that are intended to allow for communication of the various components of computer system 100. Data buses 116 include, for example, input/output buses and bus controllers.
Indeed, the present invention is not limited to computer system 100 as known at the time of the invention. Instead, the present invention is intended to be deployed in future computer systems with more advanced technology that can make use of all aspects of the present invention. It is expected that computer technology will continue to advance but one of ordinary skill in the art will be able to take the present disclosure and implement the described teachings on the more advanced computers or other digital devices such as mobile telephones or “smart” televisions as they become available.
Moreover, the present invention may be implemented on one or more distributed computers. Still further, the present invention may be implemented in various types of software languages including C, C++, and others. Also, one of ordinary skill in the art is familiar with compiling software source code into executable software that may be stored in various forms and in various media (e.g., magnetic, optical, solid state, etc.). One of ordinary skill in the art is familiar with the use of computers and software languages and, with an understanding of the present disclosure, will be able to implement the present teachings for use on a wide variety of computers.
The present disclosure provides a detailed explanation of the present invention with detailed explanations that allow one of ordinary skill in the art to implement the present invention into a computerized method. Certain of these and other details are not included in the present disclosure so as not to detract from the teachings presented herein but it is understood that one of ordinary skill in the art would be familiar with such details.
In an embodiment of the invention as shown in
User computing device 204 can be implemented in various forms such as desktop computer 208, laptop computer 210, smart phone 212, or tablet device 214. Other devices that may be developed and are capable of the computing actions described herein are also appropriate for use in conjunction with the present invention.
In the present disclosure, computing and other activities will be described as being conducted on either computer server 202 or user computing device 204. It should be understood, however, that many if not all of such activities may be reassigned from one to the other device while keeping within the present teachings. For example, for certain steps computations that may be described as being performed on computer server 202, a different embodiment may have such computations performed on user computing device 204.
In an embodiment of the invention, computer server 202 is implemented as a web server on which Apache HTTP web server software is run. Computer server 202 can also be implemented in other manners such as an Oracle web server (known as Oracle iPlanet Web Server). In an embodiment computer server 202 is a UNIX-based machine but can also be implemented in other forms such as a Windows-based machine. Configured as a web server, computer server 202 is configured to serve web pages over network 206 such as the internet.
In an embodiment, user computing device 204 is configured so as to run web browser software. For example, where user computing device 204 is implemented as desktop computer 208 or laptop computer 210, currently available web browser software includes Internet Explorer, Firefox, and Chrome. Other browser software is available for different applications of user computing device 204. Still other software is expected to be developed in the future that is able to execute certain steps of the present invention.
In an embodiment, user computing device 204, through the use of appropriate software, queries computer server 202. Responsive to such query, computer server 202 provides information so as to display certain graphics and text on user computing device. In an embodiment, the information provided by computer server 202 is in the form of HTML that can be interpreted by and properly displayed on user computing device 204. Computer server 202 may provide other information that can be interpreted on user computing device.
Among other things, the present invention provides for calendaring flexible events. To be described first is a general method for implementing a calendaring system for managing flexible events. In an embodiment of the present invention, a method is disclosed where an individual's currently calendared events are considered when scheduling a new flexible event. To follow are details for implementing various types of flexible events including flexible time events, events tagged with different priorities or characteristics, conditional events, multiple choice events, long-term tasks. Afterward, a particular embodiment will be described that has been implemented using an API to interface with Google's calendaring system.
Shown in
As shown in
Note, however, that the set of events of step 302 can be, for example, previously entered events in an individual's calendar, and that the method of
At step 304, an event to be calendared is received. Notable about the event to be calendared is that it includes at least one flexible event attribute. For example, whereas traditional calendaring systems have been limited to fixed start and stop times, an embodiment of the present invention allows for the input of flexible start and stop times. Other flexible event attributes include, but are not limited to, event tags, conditional events, multiple choice events, and long term events. These and other particular flexible event attributes will be discussed with regard to certain particular embodiments further below that will assist one of ordinary skill in the art to understand the breadth of the present invention.
At step 306, potential times are determined for the event to be calendared. Importantly, the times for the first calendar event are responsive to the attributes of the set of calendar events of step 302 and the at least one flexible event attribute of step 304. In a preferred situation, the determined potential times for the event to be calendared do not conflict with the set of calendar events. The present invention, however, contemplates that conflicts can arise such that certain of the potential times of step 306 for the event to be calendared of step 304 may conflict with certain of the set of events of step 302. In embodiments of the present invention conflicts between or among events and their impact is sought to be reduced. Further details regarding the manner of determining potential times for the event to be calendared will be provided with reference to certain embodiments described below.
At step 308, the event to be calendared is calendared by choosing at least one of the times determined at step 306. Where at least one time without conflicts is determined, the event to be calendared is calendared according to predetermined criteria. For example, where several times are possible without conflict, the earliest possible time is chosen. Such a criteria allows for the possibility of rescheduling this event in case a conflict arises later. Because the event of step 304 has flexible attributes, it may be possible to reschedule it according to its flexible attributes while avoiding future conflicts. Indeed, it is also possible to reschedule certain flexible events from the set of calendar events so as to find even more possibilities for the flexible event to be calendared.
In situations where the potential times determined at step 306 all have conflicts, at step 308, the event to be calendared is calendared with a conflict. In certain embodiments, however, an alert is presented to the user notifying him of the conflict. The user can then take action to resolve the conflict. It should be noted that certain embodiments of the present invention relate to concepts of hard and soft conflicts that have implications at steps 306 and 308 as described below with reference to certain embodiments.
Shown in
The method of
The flexibility in times can then be considered at step 312 as shown in
At step 308, the event to be calendared is calendared according to the determined times of step 306. For example, in an embodiment of the present invention, the flexible event is scheduled as early as possible at 3:00 PM. In another embodiment of the present invention, a cushion of time is allotted between the end of an immediately prior event. For example, in an embodiment, the flexible event is allowed a 15 minute cushion from the immediately prior event and scheduled to begin at 3:15. Many criteria can be implemented for choosing among possible times. For example, an earliest possible time may be chosen so as to allow for the management of later occurring potential conflicts. Many other criteria are possible while keeping within the teachings of the present invention as would be known to those of ordinary skill in the art. Details of a preferred embodiment for managing flexible times will be provided further below.
Shown in
The method of
In determining appropriate times for scheduling a flexible event such as at step 306 of the method of
With the determined potential times of step 306, the event to be calendared is calendared at step 308. For example, in an embodiment, where at least one no-conflict situation is determined, the earliest possible no-conflict time for the event is calendared. In another embodiment, a later time can be chosen. Where, there are no no-conflict situations, but there is at least one soft-conflict situation, the earliest possible soft-conflict time for the event is calendared. Where only hard-conflict situations are determined at step 306, the earliest possible hard-conflict time is scheduled. In an embodiment, a notification is provided to the user apprising him of the hard conflict situation while providing him an opportunity to resolve the conflict, e.g., providing a choice between or among conflicting events. Details of a preferred embodiment for managing event tags will be provided further below.
Shown in
The method of
If condition A is true
then schedule event X
otherwise schedule event Y
In an embodiment of the present invention, the events X and Y are allowed to be null events (e.g., schedule nothing). In yet another embodiment, multiple conditions can be specified with several possible resulting scheduled events.
In a more concrete example, consider scheduling events based on weather. If a day is sunny, a user may desire to schedule a jog, but if it is not sunny, a user, may instead desire to schedule a gym workout. Thus, an embodiment of the present invention, receives such conditional information as a flexible attribute at step 318. The condition is then evaluated at step 320 for use in determining potential times for the event to be calendared at step 306. Receipt of the conditional information can be provided manually such as by the user or may be obtained automatically such as through the internet. For example, on the day of the flexible event of interest, the user may input a weather condition that then sets up a potential time for the conditional event at step 306. Still in another example, information can be automatically received such as through a web-based weather service that then sets up a potential time for the conditional event at step 306.
With the determined potential times of step 306, the event to be calendared is calendared at step 308. For example, where a weather condition was determined to be sunny, a jog is scheduled at step 308. Alternatively, where it was determined to be raining, a gym workout is scheduled. Details of a preferred embodiment for implementing conditional events will be provided further below.
Shown in
The method of
A choice among the multiple choices can then be made subsequently at step 324. The choice can be made manually by a user, or can be made automatically according to a predetermined criteria. For example, on a periodic basis, the list of movies can be presented to the user for selection at step 324. Alternatively, as the start times are passed for certain of the choices, an evaluation is made not to attend such movie.
After a selection is made or evaluated at step 324 and potential times considered at step 306, an event is calendared as in step 308. In an embodiment of the present invention, machine learning algorithms can be applied to learn a user's behavior and predict a best choice for an event. Details of a preferred embodiment for implementing conditional events will be provided further below.
Whereas traditional calendaring systems may provide for identifying long-term tasks and To-Do lists, such traditional systems have not been able to schedule time for such tasks. In an embodiment, long-term tasks are addressed in two categories, those with no deadlines and those with deadlines.
Shown in
The method of
Shown in
The method of
In describing the methods of
To be described now are particular embodiments of the present invention. It should be understood, however, that the description of such particular embodiments is not intended to limit the scope of the present invention.
An embodiment of the present invention is implemented as a web-based tool that uses Google Calendar as a backend to store events. This implementation allows for making use of the database system already provided by Google. This implementation further provides ease of user adoption by allowing users to work with existing events, and provides ease in portability between or among different devices (e.g., computer, smart phone, and tablet). On the front-end side, an embodiment of the present invention has adapted the FullCalendar jQuery plugin to work with Google's Javascript API. Among other things, such an implementation provides a user-friendly experience.
It should be noted that the present invention can be implemented on many other calendaring systems including, Yahoo's, Apple's, or Microsoft's implementations. Moreover, the present invention can be implemented through APIs but can also be implemented as stand-alone software, among other implementations, as would be known to those of ordinary skill in the art.
In an embodiment called Intelligent Calendar implemented using Google Calendar, a user is required to log in to Google and further required to provide permission for a user's Google calendar to be modified by an embodiment of the present invention such as through message 400 of
After providing permission, a user is presented with interface 500 as shown in
Shown in
In order to add a new event, a user can click on button 512 as shown in
When a “Conditional event” is selected for event type 612 as shown in
An interaction for a conditional event will now be described for the flexible event, “I will go running if it is sunny, otherwise I will go to the gym.” A summary dialog box 702 is provided in
When a “FlexTime event” is selected for event type 612 selected as shown in
When a new flexible time event is created, it is scheduled at the earliest available time within its earliest available interval, for example. For the example of
When a “Multiple Choice Event” is selected for event type 612 selected as shown in
For example, suppose a user wants to go to a movie during a particular week, but cannot decide among three different movies, each with different show times. The user can enter the three movies as a multiple choice event and can leave the decision up to the calendar (see steps 306, 324, and 308 of
In an embodiment, upon creating a multiple choice event, the earliest available option provided by the user is scheduled (see steps 306, 324, and 308 of
When a “To-Do Event” is selected for event type 612 as shown in
A To-Do Event with a deadline can be, for example, homework problem sets, reports, and essays. A To-Do Event without a deadline can be, for example, long term goals. A long term goal can be something like “lose weight” or “learn a new language,” essentially tasks that have an unknown duration with no particular completion date specified.
In traditional calendaring systems, To-Do Events may be listed but there is not manner for integrating them into a user's schedule. In an embodiment of the present invention, however, reminders are periodically provided of their existence and any potential deadlines. Also, an embodiment of the present invention provides for scheduling time for To-Do Events into a user's schedule. In this way, long-term task events are broken down and scheduled into reasonable and concrete increments of scheduled time. Moreover, scheduling of task events according to an embodiment of the present invention allows a user to turn an abstract idea like “lose weight” into a tangible and scheduled events (e.g., scheduled times to run or go to the gym).
Shown in
Shown in
In an embodiment, time to work on To-Do event with a deadline can automatically be scheduled by selecting checkbox 1602 as shown in
For the various To-Do Events, a further button 1702 as shown in
Various embodiments of the present invention have been described. It should be noted that the present invention is not limited to the described embodiments. Indeed, several of the described embodiments could be combined to provide further combined functionality. Also, it should be noted that the present invention can be modified in ways known to those of ordinary skill in the art without deviating from the present invention. For example, the present invention can be implemented in stand-alone calendaring systems intended for individual users but can also be implemented in a networked environment where users can share information so as to provide others with the ability to schedule or propose events during appropriate times. Indeed methods described above can be implemented in multi-user environments where the flexible events of other users are considered.
One embodiment of the present invention may be implemented as a program product for use with a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random-access semiconductor memory) on which alterable information is stored.
As persons skilled in the art will appreciate, the implementations and examples described herein in no way limit the scope of the present invention. While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
This application claims priority to U.S. Provisional Application No. 61/527074 filed Aug. 24, 2011, which is hereby incorporated by reference in its entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
61527074 | Aug 2011 | US |