IP Library Patent Application 13267818
Patent Application
App. No. 13/267,818

Method and Apparatus for Calendaring Reminders

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
13/267,818
Abstract

An electronic calendar includes such features as recurring reminders, dividing unpredictable work loads into equal pieces, template free parsing, a reminders scheduling algorithm to reduce spikes, dynamic delivery and recovery algorithms, methods for splitting the work load between controllers and workers and for monitoring progress, all within the context of a calendar architecture for a large enterprise.

Claims (55)

1 . A method for dividing an unpredictable workload into equal pieces, comprising the steps of:

dividing up actions that must be taken during a given time frame into groups of substantially equal size;

assigning each group to at least one device, wherein a number of actions to be taken by said at least one device are no greater than said device can take within such time frame;

attaching a label to a description of each action, in addition to any details specified by a client and independent therefrom, at a time when a request for action is received from said client, such that all possible labels appear with substantially equal frequency; and grouping actions to be taken in a given time frame according to said labels attached to them into groups of substantially equal size.

2 . A method for delivering messages that are composed of standard reminder content and event-specific content, comprising the steps of:

storing all standard content for reminders in a set of template files;

specifying in each template file all standard content for a specific reminder; and

including in each template a set of directives that indicate where a substitution of event-specific content should occur.

3 . The method of claim 2 , further comprising the steps of:

at runtime, loading a template file into a cache when it is first needed; and pre-parsing said template file when said template is first loaded into said cache by dissecting said template into an array of hard coded string constants and variable names.

4 . The method of claim 3 , further comprising the steps of:

assembling final reminder content by walking said array of hard coded string constants and variable names;

appending string constants to final message content; and using template variable names as a lookup into a dictionary of key-value pairs for a particular reminder.

5 . A method for splitting a large workload, for executing said workload at a specific time, and for finishing said execution within a small period of time, comprising the steps of:

providing a controller for starting a-job as a worker on a different worker machine to distribute said workload evenly across a plurality of worker machines; depending upon said worker machines' capacity, and current usage; and

said controller dividing a large job into smaller jobs by grouping records within said large job by a distribution 10 that is randomly assigned to each record upon its creation, and by assigning a range of distribution IDs to a job.

6 . The method of claim 5 , further comprising the step of:

removing a worker machine on the fly should said worker machine fail or need to be taken down;

wherein said controller does not start any new work on said worker machine.

7 . The method of claim 5 , further comprising the step of:

said worker starts executing a job that is sorted by a distribution; and

said worker updating said controller at a regular interval with its progress, measured in terms of said distribution.

8 . The method of claim 5 , wherein if a worker fails to complete a job, then said controller identifying said failure and restarting a new job that only does work that was not completed by a previous worker, thereby reducing redundant work.

9 . The method of claim 5 , further comprising the step of:

running of a backup controller which keeps an eye on a primary controller and takes charge when said primary controller is not able to do its job to safeguard against any single point of failure.

10 . The method of claim 5 , further comprising the steps of:

adding a new worker machine on the fly; and

said controller assigning new work on said new machine.

11 . A system for delivering messages that are composed of standard reminder content and event-specific content, comprising:

at least one user computer comprising a processor, memory, an input device for receiving one or more reminders, and a plurality of processing modules including at least;

a storage module configured for storing all standard content for reminders in a set of template files;

a specification module configured for specifying in each template file all standard content for a specific reminder; and

a substitution module configured for including in each template a set of directives that indicate where a substitution of event-specific content should occur.

12 . The system of claim 11 , further comprising:

a caching module configured for loading, at runtime, a template file into a cache when it is first needed; and

a parser configured for pre-parsing said template file when said template is first loaded into said cache by dissecting said template into an array of hard coded string constants and variable names.

13 . The system of claim 12 , further comprising:

an assembly module configured for assembling final reminder content by walking said array of hard coded string constants and variable names;

an appendix module configured for appending string constants to final message content; and

a lookup module configured for using template variable names as a lookup into a dictionary of key-value pairs for a particular reminder.

14 . A system comprising:

at least one user computer comprising a processor, memory, an input device for receiving one or more reminders, wherein said processor is configured for splitting a large workload, for executing said workload at a specific time, and for finishing said execution within a small period of time; and

a plurality of processing modules including at least;

a controller for starting a-job as a worker on a different worker machine to distribute said workload evenly across a plurality of worker machines; depending upon said worker machines' capacity, and current usage; and

wherein said controller is further configured for dividing a large job into smaller jobs by grouping records within said large job by a distribution that is randomly assigned to each record upon its creation, and by assigning a range of distribution IDs to a job.

15 . The system of claim 14 , further comprising:

a removal module configured for removing a worker machine on the fly should said worker machine fail or need to be taken down;

wherein said controller does not start any new work on said worker machine.

16 . The system of claim 14 , further comprising:

said worker starts executing a job that is sorted by a distribution; and

said worker updating said controller at a regular interval with its progress, measured in terms of said distribution.

17 . The system of claim 14 , wherein the controller is further configured for that, if a worker fails to complete a job, identifying said failure and restarting a new job that only does work that was not completed by a previous worker, thereby reducing redundant work.

18 . The system of claim 14 , wherein the controller is further configured for running of a backup controller which keeps an eye on a primary controller and takes charge when said primary controller is not able to do its job to safeguard against any single point of failure.

19 . The system of claim 14 , further configured for adding a new worker machine on the fly, and wherein said controller is configured for assigning new work on said new machine.

20 . A computer readable medium containing executable code that, when executed by a processing device, performs the method of claim 2 .

Assignments (5)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058961/0436 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2012
From: AOL INC.
To: FACEBOOK, INC.
Reel/Frame 028463/0125 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2012
From: AOL LLC
To: AOL INC.
Reel/Frame 027571/0573 →
CONVERSION TO LIMITED LIABILITY COMPANY Recorded Jan 19, 2012
From: AMERICA ONLINE, INC.
To: AOL LLC
Reel/Frame 027560/0989 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2012
From: CHHATRAPATI, RUPESH; TREITEL, RICHARD J.; CHESTER, JON; SOBOTKA, DAVID; LAO, LOUIS; ZAESKE, ANDREW; VENGADASUBBU, MEERA
To: AMERICA ONLINE, INC.
Reel/Frame 027538/0669 →