IP Library Granted Patent US 10,133,588
Granted Patent B1
US 10,133,588 · App. 15/298,473 · Granted Nov 20, 2018

Transforming instructions for collaborative updates

Inventors: Andrew Moreland (Stanford, CA); John Carrino (Redwood City, CA)
Assignee: Palantir Technologies Inc.
G06F9/451G06F3/0481G06F3/0482G06F17/2211G06F17/241G06F17/30371G06Q10/101
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,133,588
App. No.
15/298,473
Granted
Nov 20, 2018
Kind
B1
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:

generating, by a client device, a first group of instructions for causing a first modification of an element depicted in a user interface, the user interface being accessible for modification by at least a second client device;

executing a front-end update based on the first group of instructions, the front-end update causing the first modification on a local version of the user interface associated with the client device;

transmitting the first group of instructions to a server that maintains a listing of modifications to the user interface that are received from at least the client device and the second client device;

receiving, from the server, a system-wide update including a second group of instructions for causing a second modification of the element in the user interface, the second modification being different than the first modification, the second group of instructions having been generated based on a state of the element prior to the first modification and having been received by the server from the second client device prior to the server having received the first group of instructions;

determining, using one or more processors of the client device, that the first group of instructions conflict with the second group of instructions;

in response to determining that the first group of instructions conflicts with the second group of instructions, transforming the first group of instructions based on the second group of instructions, yielding a transformed first group of instructions;

executing a front-end update based on the transformed first group of instructions; and

transmitting, to the server, the transformed first group of instructions, the server sending a second system-wide update to at least the second client device, the second system-wide update including the transformed first group of instructions.

2. The method of claim 1 , wherein the second group of instructions are received after the execution of the front-end update based on the first group of instruction.

3. The method of claim 1 , wherein the second group of instructions are generated by the second device and transmitted to the server by the second client device after the second client device executed a front-end update based on the second group of instructions causing the second modification on a local version of the user interface associated with the second client device.

4. The method of claim 1 , further comprising:

revoking execution of the front-end update based on the first group of instructions; and

executing a front-end update based on the second group of instructions.

5. The method of claim 1 , further comprising:

generating a third group of instructions for causing a modification of a second element depicted in the user interface, wherein the third group of instructions comprise one or more front-end only instructions;

executing a front-end only update based on the third group of instructions;

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

transmitting the filtered group of instructions to the server, the server sending a third system-wide update to at least the second client device, the third system-wide update including the filtered group of instructions.

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

a spreadsheet;

a geographical area;

or a word processing document.

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

8. A client device 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 client device to perform operations comprising:

generating a first group of instructions for causing a first modification of an element depicted in a user interface, the user interface being accessible for modification by at least a second client device;

executing a front-end update based on the first group of instructions, the front-end update causing the first modification on a local version of the user interface associated with the client device;

transmitting the first group of instructions to a server that maintains a listing of modifications to the user interface that are received from at least the client device and the second client device;

receiving, from the server, a system-wide update including a second group of instructions for causing a second modification of the element in the user interface, the second modification being different than the first modification, the second group of instructions having been generated based on a state of the element prior to the first modification and having been received by the server from the second client device prior to the server having received the first group of instructions;

determining that the first group of instructions conflict with the second group of instructions;

in response to determining that the first group of instructions conflicts with the second group of instructions, transforming the first group of instructions based on the second group of instructions, yielding a transformed first group of instructions;

executing a front-end update based on the transformed first group of instructions; and

transmitting, to the server, the transformed first group of instructions, the server sending a second system-wide update to at least the second client device, the second system-wide update including the transformed first group of instructions.

9. The client device of claim 8 , wherein the second group of instructions are received after the execution of the front-end update based on the first group of instruction.

10. The client device of claim 8 , wherein the second group of instructions are generated by the second device and transmitted to the server by the second client device after the second client device executed a front-end update based on the second group of instructions causing the second modification on a local version of the user interface associated with the second client device.

11. The client device of claim 8 , the operations further comprising:

revoking execution of the front-end update based on the first group of instructions; and

executing a front-end update based on the second group of instructions.

12. The client device of claim 8 , the operations further comprising:

generating a third group of instructions for causing a modification of a second element depicted in the user interface, wherein the third group of instructions comprise one or more front-end only instructions;

executing a front-end only update based on the third group of instructions;

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

transmitting the filtered group of instructions to the server, the server sending a third system-wide update to at least the second client device, the third system-wide update including the filtered group of instructions.

13. The client device of claim 8 , wherein the user interface displays at least one of:

a spreadsheet;

a geographical area;

or a word processing document.

14. The client device of claim 8 , wherein the first modification includes moving the element from a first position to a second position.

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

generating a first group of instructions for causing a first modification of an element depicted in a user interface, the user interface being accessible for modification by at least a second client device;

executing a front-end update based on the first group of instructions, the front-end update causing the first modification on a local version of the user interface associated with the client device;

transmitting the first group of instructions to a server that maintains a listing of modifications to the user interface that are received from at least the client device and the second client device;

receiving, from the server, a system-wide update including a second group of instructions for causing a second modification of the element in the user interface, the second modification being different than the first modification, the second group of instructions having been generated based on a state of the element prior to the first modification and having been received by the server from the second client device prior to the server having received the first group of instructions;

determining that the first group of instructions conflict with the second group of instructions;

in response to determining that the first group of instructions conflicts with the second group of instructions, transforming the first group of instructions based on the second group of instructions, yielding a transformed first group of instructions;

executing a front-end update based on the transformed first group of instructions; and

transmitting, to the server, the transformed first group of instructions, the server sending a second system-wide update to at least the second client device, the second system-wide update including the transformed first group of instructions.

16. The non-transitory computer-readable medium of claim 15 , wherein the second group of instructions are received after the execution of the front-end update based on the first group of instruction.

17. The non-transitory computer-readable medium of claim 15 , wherein the second group of instructions are generated by the second device and transmitted to the server by the second client device after the second client device executed a front-end update based on the second group of instructions causing the second modification on a local version of the user interface associated with the second client device.

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

revoking execution of the front-end update based on the first group of instructions; and

executing a front-end update based on the second group of instructions.

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

generating a third group of instructions for causing a modification of a second element depicted in the user interface, wherein the third group of instructions comprise one or more front-end only instructions;

executing a front-end only update based on the third group of instructions;

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

transmitting the filtered group of instructions to the server, the server sending a third system-wide update to at least the second client device, the third system-wide update including the filtered group of instructions.

20. The non-transitory computer-readable medium of claim 15 , wherein the first modification includes moving the element from a first position to a second position.

Assignments (8)
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 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
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 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2018
From: MORELAND, ANDREW; CARRINO, JOHN
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 046295/0297 →