A non-transitory computer-readable storage medium storing computer-readable instructions, comprising:
- instructions for receiving, at a computing device and from a first user of a first pair of users, an input of a first message to be transmitted to a second user of the first pair of users;
- instructions for identifying, at the computing device, a first message portion in the first message that match with any of multiple reference message portions stored in a code dictionary at the computing device, wherein the code dictionary is obtained from a server computing device that facilitates exchanging of the first message between the first user and the second user, wherein the code dictionary has multiple versions, wherein a specified version of the multiple versions is to be used by the first pair of users to encode and/or decode a set of messages to be exchanged based on version information associated with the set of messages;
- instructions for encoding, at the computing device, the first message portion in the first message to a specified code from the code dictionary to generate an encoded message, the specified code corresponding to a specified message portion of the message portions stored in the code dictionary that matches with the first message portion, wherein the instructions for encoding include:
- instructions for determining that the first message portion has occurred a specified number of times,
- instructions for determining, due to the occurrence of the first message portion, that a second message portion is likely to occur with a specified probability in the future, and
- instructions for generating the specified code for the first message portion and a second code for the second message portion, wherein generating the specified code includes generating a set of codes for multiple variations of the first message portion, wherein a first variation of the multiple variations of the first message portion includes the first message portion and an additional message portion;
- instructions for transmitting the encoded message to the server computing device;
- instructions for retrieving, from the server computing device, a specified set of messages sent or received by the first user, wherein the specified set of messages includes a first subset of messages exchanged in a first period and a second subset of messages exchanged in a second period after the first period, wherein the first subset of messages are encoded using a first version of the multiple versions and the second subset of messages are encoded using a second version of the multiple versions;
- and
- instructions for decoding the first subset of messages using the first version and decode the second subset of messages using the second version prior to presenting the set of messages to the first user, wherein both the first version and the second version of the code dictionary are stored at the computing device.