Skip to main content

Posts

Featured

System Design: Encoding and Evolution

Modern applications are always being updated and as such, the data being stored is also changing. Therefore, there is the need for both backwards and forwards compatibility. Ensuring newer and older code can coexist without service downtime. Image source; Google Gemini In encoding data, there are two main formats that are used, data stored memory are stored as objects, hash tables, lists arrays, structs, trees and so on whereas data written to a file or sent via a network is typically encoded as a self-contained sequence of bytes, most commonly JSON. Translating from in-memory representation to byte sequence is typically referred to as encoding, serialisation or marshalling and the reverse is decoding, deserialisations or unmarshalling.  There are language specific formats for encoding as well, Java has java.io.Serializable, Ruby has Marshal, Python has pickle and so on. These allow in-memory objects to be saved and restored with minimal additional code however, they also constrain...

Latest Posts

System Design: Storage and Retrieval

System Design: Query Languages for Data

System design: Data Models

System Design: Reliable, Scalable, and Maintainable Applications

Webstack monitoring

Configuring a static website on Amazon S3

Postmortem