IP Library Granted Patent US 10,782,983
Granted Patent B2
US 10,782,983 · App. 16/133,431 · Granted Sep 22, 2020

Transforming instructions for collaborative updates

Inventors: Andrew Moreland (Stanford, CA); John Carrino (Redwood City, CA)
Assignee: Palantir Technologies Inc.
G06F9/451G06F3/0481G06F3/0482G06F16/2365G06F40/169G06F40/194G06Q10/101G06F8/65
View Patent ↗
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 10,782,983
App. No.
16/133,431
Granted
Sep 22, 2020
Kind
B2
Abstract

In various example embodiments, a system and method for transforming instructions for collaborative updates are described herein. A group of instructions for an update of an element depicted in a client device version of a user interface are generated. The group of instructions is executed and the group or a subset of instructions are transmitted to a server. The server accepts or rejects the instructions. The server may execute the instructions to update a server version of the element. The server sends accepted instructions to the other or all client devices.

Claims (70)

1. A method comprising:

receiving, by a client device, an input to perform a first update to an element of a user interface presented on the client device, the input received from a user of the client device, wherein the user interface is accessible for modification by a second client device;

in response to receiving the input:

generating a first group of instructions to execute the first update to the element depicted in the user interface,

executing the first group of instructions locally on the client device, and

transmitting the generated group of instructions to a server;

receiving, from the server, a second group of instructions to execute a second update of the element, the second group of instructions having been received by the server from the second client device prior to the first group of instructions; and

in response to determining that the second group of instructions conflicts with the first group of instructions:

transforming, by the client device, the first group of instructions based on the second group of instructions, yielding a transformed first group of instructions,

executing the transformed first group of instructions locally on the client device, and

transmitting the transformed first group of instructions to the server, wherein the server transmits the transformed first group of instructions to the second client device and causes the second client device to execute the transformed first group of instructions.

2. The method of claim 1 , wherein the second group of instructions are generated based off a state of the element presented on a user interface of the second client device prior to the client device performing the first update.

3. The method of claim 1 , wherein the second group of instructions are generated by the second client device and transmitted to the server.

4. The method of claim 1 , further comprising:

generating a third group of instructions for an update to a second element of the user interface, the third group of instructions including at least one front-end only instruction;

executing the third group of instructions locally on the client device, including the at least one front-end instruction;

generating a filtered group of instructions based on the third group of instructions, wherein the filtered group excludes front-end only instructions; and

transmitting the filtered group of instructions to the server.

5. The method of claim 1 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area; or

a word processing document.

6. The method of claim 1 , wherein the first update includes moving the element from a first position to a second position.

7. A system comprising:

one or more computer processors; and

one or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the system to perform operations comprising:

receiving, by a client device, an input to perform a first update to an element of a user interface presented on the client device, the input received from a user of the client device, wherein the user interface is accessible for modification by a second client device;

in response to receiving the input:

generating a first group of instructions to execute the first update to the element depicted in the user interface,

executing the first group of instructions locally on the client device, and

transmitting the generated group of instructions to a server;

receiving, from the server, a second group of instructions to execute a second update of the element, the second group of instructions having been received by the server from the second client device prior to the first group of instructions; and

in response to determining that the second group of instructions conflicts with the first group of instructions:

transforming, by the client device, the first group of instructions based on the second group of instructions, yielding a transformed first group of instructions,

executing the transformed first group of instructions locally on the client device, and

transmitting the transformed first group of instructions to the server, wherein the server transmits the transformed first group of instructions to the second client device and causes the second client device to execute the transformed first group of instructions.

8. The system of claim 7 , wherein the second group of instructions are generated based off a state of the element presented on a user interface of the second client device prior to the client device performing the first update.

9. The system of claim 7 , wherein the second group of instructions are generated by the second device and transmitted to the server.

10. The system of claim 7 , the operations further comprising:

generating a third group of instructions for an update to a second element of the user interface, the third group of instructions including at least one front-end only instruction;

executing the third group of instructions locally on the client device, including the at least one front-end instruction;

generating a filtered group of instructions based on the third group of instructions, wherein the filtered group excludes front-end only instructions; and

transmitting the filtered group of instructions to the server.

11. The system of claim 7 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area; or

a word processing document.

12. The system of claim 7 , wherein the first update includes moving the element from a first position to a second position.

13. A non-transitory computer-readable medium storing instructions that, when executed by one or more computer processors of a computing system, cause the computing system to perform operations comprising:

receiving, by a client device, an input to perform a first update to an element of a user interface presented on the client device, the input received from a user of the client device, wherein the user interface is accessible for modification by a second client device;

in response to receiving the input:

generating a first group of instructions to execute the first update to the element depicted in the user interface,

executing the first group of instructions locally on the client device, and

transmitting the generated group of instructions to a server;

receiving, from the server, a second group of instructions to execute a second update of the element, the second group of instructions having been received by the server from the second client device prior to the first group of instructions; and

in response to determining that the second group of instructions conflicts with the first group of instructions:

transforming, by the client device, the first group of instructions based on the second group of instructions, yielding a transformed first group of instructions,

executing the transformed first group of instructions locally on the client device, and

transmitting the transformed first group of instructions to the server, wherein the server transmits the transformed first group of instructions to the second client device and causes the second client device to execute the transformed first group of instructions.

14. The non-transitory computer-readable medium of claim 13 , wherein the second group of instructions are generated based off a state of the element presented on a user interface of the second client device prior to the client device performing the first update.

15. The non-transitory computer-readable medium of claim 13 , wherein the second group of instructions are generated by the second device and transmitted to the server.

16. The non-transitory computer-readable medium of claim 13 , the operations further comprising:

generating a third group of instructions for an update to a second element of the user interface, the third group of instructions including at least one front-end only instruction;

executing the third group of instructions locally on the client device, including the at least one front-end instruction;

generating a filtered group of instructions based on the third group of instructions, wherein the filtered group excludes front-end only instructions; and

transmitting the filtered group of instructions to the server.

17. The non-transitory computer-readable medium of claim 13 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area; or

a word processing document.

Assignments (8)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2018
From: MORELAND, ANDREW; CARRINO, JOHN
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 046892/0676 →
Cited By (1)
US 12,321,760