# Serialization

Published articles for Serialization.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Dragonfly 2.0 adds Redis and Valkey compatibility and reduces processing overhead

DevFeed: [Dragonfly 2.0 adds Redis and Valkey compatibility and reduces processing overhead](<https://devfeed.tech/articles/dragonfly-2-0-delivers-more-performance-for-this-modern-replacement-to-redis-memcached-41399.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/Dragonfly-2.0-Released>)

Author: Michael Larabel

Published: 2026-09-17T10:02:19Z

Content type: release

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [in-memory database](<https://devfeed.tech/topics/in-memory-database.md>), [Memcached](<https://devfeed.tech/topics/memcached.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [compatibility](<https://devfeed.tech/tags/compatibility.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [memcached](<https://devfeed.tech/tags/memcached.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [redis](<https://devfeed.tech/tags/redis.md>), [release](<https://devfeed.tech/tags/release.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>), [valkey](<https://devfeed.tech/tags/valkey.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Dragonfly 2.0 is a new release of the in-memory database that expands Redis and Valkey compatibility, adds Valkey 9 RDB loading support, and reduces connection processing and memory accounting overhead.

### Source excerpt

Released on Wednesday was a new version of the Dragonfly database that continues to promote itself as "the world's most efficient in-memory data store" and a modern replacement to the likes of Redis and Memcached while being fully compatible with their APIs...

## v1 Transactions and the ALT Trade-off

DevFeed: [v1 Transactions and the ALT Trade-off](<https://devfeed.tech/articles/v1-transactions-and-the-alt-trade-off-17255.md>)

Original publisher: [Read original article](<https://solana.com/news/transaction-v1-and-the-alt-trade-off>)

Author: Umberto Natale

Published: 2026-08-17T00:00:00Z

Content type: article

Language: en

Sources: [Solana News Feed](<https://devfeed.tech/sources/solana-news-feed.md>)

Topics: [Solana](<https://devfeed.tech/topics/solana.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [blockchain](<https://devfeed.tech/tags/blockchain.md>), [blockchain-technology](<https://devfeed.tech/tags/blockchain-technology.md>), [crypto-news](<https://devfeed.tech/tags/crypto-news.md>), [cryptocurrency](<https://devfeed.tech/tags/cryptocurrency.md>), [defi](<https://devfeed.tech/tags/defi.md>), [nfts](<https://devfeed.tech/tags/nfts.md>), [podcasts](<https://devfeed.tech/tags/podcasts.md>), [reference](<https://devfeed.tech/tags/reference.md>), [reports](<https://devfeed.tech/tags/reports.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [solana](<https://devfeed.tech/tags/solana.md>), [solana-ecosystem](<https://devfeed.tech/tags/solana-ecosystem.md>), [transactions](<https://devfeed.tech/tags/transactions.md>), [upgrades](<https://devfeed.tech/tags/upgrades.md>), [web3](<https://devfeed.tech/tags/web3.md>)

### AI overview

Solana is introducing the v1 transaction format with a maximum serialized size of 4,096 bytes, replacing Account Lookup Table resolution with larger inline transaction capacity. The analysis finds that current workloads are broadly compatible with the new envelope, while the unchanged 64-account limit may remain a constraint for some applications.

### Source excerpt

Solana is introducing a new transaction format (v1) alongside an increase of the maximum transaction size from 1232 bytes to 4096 bytes. The v1 format aims to unlock new possibilities on-chain. This is done trading-off Account Lookup Tables (ALT) usage. In this research we explore in details the current usage of ALTs, alongside implications of removing them.

## Zero-flicker Firestore SSR with React

DevFeed: [Zero-flicker Firestore SSR with React](<https://devfeed.tech/articles/zero-flicker-firestore-ssr-with-react-16670.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2026/06/firestore-serialization-react>)

Author: Jeff Huleatt

Published: 2026-06-24T00:00:00Z

Content type: tutorial

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firestore](<https://devfeed.tech/topics/firestore.md>), [Server-side rendering](<https://devfeed.tech/topics/server-side-rendering.md>), [React](<https://devfeed.tech/topics/react.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [firebase](<https://devfeed.tech/tags/firebase.md>), [firestore](<https://devfeed.tech/tags/firestore.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [react](<https://devfeed.tech/tags/react.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [server-side-rendering](<https://devfeed.tech/tags/server-side-rendering.md>), [ssr](<https://devfeed.tech/tags/ssr.md>), [web](<https://devfeed.tech/tags/web.md>), [web-app](<https://devfeed.tech/tags/web-app.md>)

### AI overview

This tutorial explains how to use Firebase JS SDK SSR-specific APIs to serialize Firestore query results on the server, resume them on the client, and support realtime updates in a Next.js and React application. It also discusses payload size and when serialization is unnecessary.

### Source excerpt

News, tutorials, and updates from the Firebase team.

## Cloud Topics: the Metastore

DevFeed: [Cloud Topics: the Metastore](<https://devfeed.tech/articles/cloud-topics-the-metastore-12687.md>)

Original publisher: [Read original article](<https://www.redpanda.com/blog/cloud-topics-metastore>)

Author: Andrew Wong

Published: 2026-06-11T00:00:00Z

Content type: article

Language: en

Sources: [Redpanda](<https://devfeed.tech/sources/redpanda.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [rocksdb](<https://devfeed.tech/topics/rocksdb.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [consumer](<https://devfeed.tech/tags/consumer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [learn](<https://devfeed.tech/tags/learn.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [memory](<https://devfeed.tech/tags/memory.md>), [object-storage](<https://devfeed.tech/tags/object-storage.md>), [retention](<https://devfeed.tech/tags/retention.md>), [rocksdb](<https://devfeed.tech/tags/rocksdb.md>), [scale](<https://devfeed.tech/tags/scale.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

This article explains Redpanda's metastore for Cloud Topics. The metastore maps Apache Kafka offsets to byte ranges in L1 objects stored in object storage, while tracking metadata such as leader-term boundaries and compaction state. Redpanda built a general-purpose key-value store, inspired by LevelDB and RocksDB and implemented as an LSM tree, to scale metadata independently of memory, local disk, and metadata formats.

### Source excerpt

Learn how Redpanda's metastore powers Cloud Topics, from offset lookups and whole cluster restore to cross-region read replicas, and why it's built to be a foundational primitive for the future.

## Custom Class Serialization in Workflow SDK

DevFeed: [Custom Class Serialization in Workflow SDK](<https://devfeed.tech/articles/custom-class-serialization-in-workflow-sdk-1200.md>)

Original publisher: [Read original article](<https://vercel.com/changelog/workflow-custom-class-serialization>)

Author: John Lindquist

Published: 2026-04-02T23:23:00Z

Content type: release

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [SDKs](<https://devfeed.tech/topics/sdks.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Vercel](<https://devfeed.tech/topics/vercel.md>)

Tags: [documentation](<https://devfeed.tech/tags/documentation.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

Workflow SDK now supports custom class serialization, allowing developers to pass class instances between workflow and step functions. The @workflow/serde package enables custom serialization and deserialization through static methods, with automatic handling for arguments and return values.

### Source excerpt

Workflow SDK now supports custom class serialization, letting you pass your own class instances between workflow and step functions. Workflow SDK serializes standard JavaScript types like primitives, objects, arrays, Date, Map, Set, and more. Custom class instances were previously not supported because the serialization system didn't know how to reconstruct them. With the new @workflow/serde package, you can define how your classes are serialized and deserialized by implementing two static methods using WORKFLOW_SERIALIZE and WORKFLOW_DESERIALIZE. Here's an example of how we used custom serialization in @vercel/sandbox to greatly improve DX: Once implemented, instances of your class can be passed as arguments and return values between workflow and step functions, with the serialization system handling conversion automatically. See the full example application utilizing @vercel/sandbox and Workflow SDK. Read the serialization documentation to learn more. Read more

## The maturity gap in ML pipeline infrastructure

DevFeed: [The maturity gap in ML pipeline infrastructure](<https://devfeed.tech/articles/the-maturity-gap-in-ml-pipeline-infrastructure-13263.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/the-maturity-gap-in-ml-pipeline-infrastructure>)

Published: 2026-01-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [PyTorch](<https://devfeed.tech/topics/pytorch.md>)

Tags: [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [attacks](<https://devfeed.tech/tags/attacks.md>), [chainguard-pytorch-image](<https://devfeed.tech/tags/chainguard-pytorch-image.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [machine-learning-pipelines](<https://devfeed.tech/tags/machine-learning-pipelines.md>), [ml](<https://devfeed.tech/tags/ml.md>), [ml-ops](<https://devfeed.tech/tags/ml-ops.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [python](<https://devfeed.tech/tags/python.md>), [pytorch](<https://devfeed.tech/tags/pytorch.md>), [secure-by-default](<https://devfeed.tech/tags/secure-by-default.md>), [security](<https://devfeed.tech/tags/security.md>), [security-best-practices](<https://devfeed.tech/tags/security-best-practices.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-format](<https://devfeed.tech/tags/serialization-format.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

This article argues that ML pipeline infrastructure in 2026 has a security maturity gap: common tooling does not yet provide the secure-by-default protections expected in software engineering. It examines risks including data poisoning, model laundering, and insecure model serialization, and discusses short-term mitigations and longer-term industry improvements.

### Source excerpt

ML pipelines in 2026 still lack secure-by-default tooling. Learn the key security gaps in ML Ops and how teams can reduce risk today.

## Embedded records - extracting data from classes

DevFeed: [Embedded records - extracting data from classes](<https://devfeed.tech/articles/embedded-records-extracting-data-from-classes-22014.md>)

Original publisher: [Read original article](<http://blog.joda.org/2025/11/embedded-records.html>)

Author: Stephen Colebourne (noreply@blogger.com)

Published: 2025-11-05T06:30:00Z

Content type: article

Language: en

Sources: [Stephen Colebourne](<https://devfeed.tech/sources/stephen-colebourne.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [data](<https://devfeed.tech/tags/data.md>), [java](<https://devfeed.tech/tags/java.md>), [javaideas](<https://devfeed.tech/tags/javaideas.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

The article discusses embedded records, a proposal to extend the benefits of Java records to classes that represent data. It addresses the gap between records and classes and mentions possible relevance to Serialization 2.0.

### Source excerpt

At Devoxx Belgium 2025 I discussed the idea of embedded records with a few people. The idea is to take what is great about records, and extend that to classes that represent data. This responds to a pain point in Java, where there is a bit of a cliff-edge between records and classes. While millions of classes could and should be converted to records, millions more cannot. Yet they still represent data, and it would be a Good Thing to be able to capture that. Especially with Serialization 2.0 on the horizon. Please see the proposal document for more details.

## Making complex JSON 58x faster, use 3,300x less memory, in ClickHouse

DevFeed: [Making complex JSON 58x faster, use 3,300x less memory, in ClickHouse](<https://devfeed.tech/articles/making-complex-json-58x-faster-use-3-300x-less-memory-in-clickhouse-5359.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/json-data-type-gets-even-better>)

Author: Pavel Kruglov

Published: 2025-10-09T00:00:00Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [JSON](<https://devfeed.tech/topics/json.md>), [data](<https://devfeed.tech/topics/data.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>)

Tags: [analytics](<https://devfeed.tech/tags/analytics.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [data](<https://devfeed.tech/tags/data.md>), [json](<https://devfeed.tech/tags/json.md>), [memory](<https://devfeed.tech/tags/memory.md>), [performance](<https://devfeed.tech/tags/performance.md>), [s3](<https://devfeed.tech/tags/s3.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [storage](<https://devfeed.tech/tags/storage.md>)

### AI overview

The article explains how ClickHouse v25.8 improves performance for workloads containing thousands or tens of thousands of unique JSON paths. New shared-data serializations, including bucketed shared data, allow ClickHouse to read only the relevant data instead of scanning an entire shared column, reducing data scanned and memory usage while avoiding excessive file-system overhead.

### Source excerpt

The latest changes to the JSON data type in v25.8 make ClickHouse the leader in analytics over JSON data.

## Supporting faster file load times with memory optimizations in Rust

DevFeed: [Supporting faster file load times with memory optimizations in Rust](<https://devfeed.tech/articles/supporting-faster-file-load-times-with-memory-optimizations-in-rust-10079.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/supporting-faster-file-load-times-with-memory-optimizations-in-rust/>)

Author: Raghav Anand

Published: 2025-06-18T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [figma](<https://devfeed.tech/tags/figma.md>), [memory](<https://devfeed.tech/tags/memory.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [rust](<https://devfeed.tech/tags/rust.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [vector](<https://devfeed.tech/tags/vector.md>)

### AI overview

Figma describes how it reduced memory usage and improved file load performance by replacing a default Rust map with a flat, sorted vector. The optimization was based on profiling Figma file property maps, which contained relatively few keys within a constrained keyspace.

### Source excerpt

Memory efficiency is essential for a great user experience. To keep files fast and performant, the Figma team is always hunting for optimizations--here are a few.

## JSON - The Fine Print: Part 3 - Zero vs Missing Values

DevFeed: [JSON - The Fine Print: Part 3 - Zero vs Missing Values](<https://devfeed.tech/articles/json-the-fine-print-part-3-zero-vs-missing-values-22281.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2025/05/json-the-fine-print-part-3.html>)

Published: 2025-05-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [api-layers](<https://devfeed.tech/tags/api-layers.md>), [code](<https://devfeed.tech/tags/code.md>), [common-serialization-errors](<https://devfeed.tech/tags/common-serialization-errors.md>), [data-serialization](<https://devfeed.tech/tags/data-serialization.md>), [data-structure-separation](<https://devfeed.tech/tags/data-structure-separation.md>), [data-transmission](<https://devfeed.tech/tags/data-transmission.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [encoding-json](<https://devfeed.tech/tags/encoding-json.md>), [go](<https://devfeed.tech/tags/go.md>), [go-json-types](<https://devfeed.tech/tags/go-json-types.md>), [go-language-serialization](<https://devfeed.tech/tags/go-language-serialization.md>), [go-language-validation](<https://devfeed.tech/tags/go-language-validation.md>), [go-type-mapping](<https://devfeed.tech/tags/go-type-mapping.md>), [json](<https://devfeed.tech/tags/json.md>), [json-best-practices](<https://devfeed.tech/tags/json-best-practices.md>), [json-go-mapping](<https://devfeed.tech/tags/json-go-mapping.md>), [json-marshaling](<https://devfeed.tech/tags/json-marshaling.md>), [json-unmarshaling](<https://devfeed.tech/tags/json-unmarshaling.md>), [json-validation](<https://devfeed.tech/tags/json-validation.md>), [passing-serialized-data](<https://devfeed.tech/tags/passing-serialized-data.md>), [rest-apis](<https://devfeed.tech/tags/rest-apis.md>), [schema-less-data-format](<https://devfeed.tech/tags/schema-less-data-format.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-mistakes](<https://devfeed.tech/tags/serialization-mistakes.md>), [serialization-protocols](<https://devfeed.tech/tags/serialization-protocols.md>), [unmarshalling](<https://devfeed.tech/tags/unmarshalling.md>)

### AI overview

This tutorial examines how to distinguish zero values from missing or NULL fields when consuming JSON in Go. It explains basic unmarshalling into structs, notes that absent fields do not cause errors, and introduces DisallowUnknownFields for validating exact JSON input.

### Source excerpt

Introduction In part 1 we took a higher level view on serialization in general and JSON in specific. In part 2 we looked at emitting JSON. In part 3, we'll look at an issue you might encounter when consuming JSON, Zero vs NULL field values. To clarify the definition of NULL, this means the absence of value. So here is the question: Given a field in a Go struct set to its zero value, how do you know that zero value was set by the user or it's zero because it was never provided?

## Election 2029: Storage

DevFeed: [Election 2029: Storage](<https://devfeed.tech/articles/election-2029-storage-30699.md>)

Original publisher: [Read original article](<https://codeblog.jonskeet.uk/2025/03/27/election-2029-storage/>)

Author: jonskeet

Published: 2025-03-27T11:46:31Z

Content type: tutorial

Language: en

Sources: [Jon Skeet](<https://devfeed.tech/sources/jon-skeet.md>)

Topics: [Firestore](<https://devfeed.tech/topics/firestore.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Code](<https://devfeed.tech/topics/code.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [development](<https://devfeed.tech/tags/development.md>), [election-2029](<https://devfeed.tech/tags/election-2029.md>), [firestore](<https://devfeed.tech/tags/firestore.md>), [json](<https://devfeed.tech/tags/json.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

The article describes storage for the Election 2029 project, using separate Firestore databases for test, staging, and production alongside JSON files for local development. It introduces an abstraction interface and discusses patterns for serializing data models to JSON or XML, with particular attention to the Firestore implementation.

### Source excerpt

Storage Since my last post about the data models, I've simplified things very slightly - basically the improvements that I thought about while writing the post have now been implemented. I won't go into the details of the changes, as they're not really important, but that's just to explain why some examples might look like ... Continue reading Election 2029: Storage ->

## JSON - The Fine Print: Part 2 - Emitting JSON

DevFeed: [JSON - The Fine Print: Part 2 - Emitting JSON](<https://devfeed.tech/articles/json-the-fine-print-part-2-emitting-json-22267.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/10/json-the-fine-print-part-2.html>)

Published: 2025-02-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-layers](<https://devfeed.tech/tags/api-layers.md>), [code](<https://devfeed.tech/tags/code.md>), [common-serialization-errors](<https://devfeed.tech/tags/common-serialization-errors.md>), [data](<https://devfeed.tech/tags/data.md>), [data-serialization](<https://devfeed.tech/tags/data-serialization.md>), [data-structure-separation](<https://devfeed.tech/tags/data-structure-separation.md>), [data-transmission](<https://devfeed.tech/tags/data-transmission.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [encoding-json](<https://devfeed.tech/tags/encoding-json.md>), [function](<https://devfeed.tech/tags/function.md>), [go-json-types](<https://devfeed.tech/tags/go-json-types.md>), [go-language-serialization](<https://devfeed.tech/tags/go-language-serialization.md>), [go-language-validation](<https://devfeed.tech/tags/go-language-validation.md>), [go-type-mapping](<https://devfeed.tech/tags/go-type-mapping.md>), [http](<https://devfeed.tech/tags/http.md>), [io](<https://devfeed.tech/tags/io.md>), [io-writer](<https://devfeed.tech/tags/io-writer.md>), [json](<https://devfeed.tech/tags/json.md>), [json-best-practices](<https://devfeed.tech/tags/json-best-practices.md>), [json-go-mapping](<https://devfeed.tech/tags/json-go-mapping.md>), [json-marshaling](<https://devfeed.tech/tags/json-marshaling.md>), [json-unmarshaling](<https://devfeed.tech/tags/json-unmarshaling.md>), [json-validation](<https://devfeed.tech/tags/json-validation.md>), [map](<https://devfeed.tech/tags/map.md>), [passing-serialized-data](<https://devfeed.tech/tags/passing-serialized-data.md>), [properties](<https://devfeed.tech/tags/properties.md>), [rest-apis](<https://devfeed.tech/tags/rest-apis.md>), [schema](<https://devfeed.tech/tags/schema.md>), [schema-less-data-format](<https://devfeed.tech/tags/schema-less-data-format.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-mistakes](<https://devfeed.tech/tags/serialization-mistakes.md>), [serialization-protocols](<https://devfeed.tech/tags/serialization-protocols.md>), [standard](<https://devfeed.tech/tags/standard.md>), [structure](<https://devfeed.tech/tags/structure.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

This tutorial explains how to emit JSON in Go using the encoding/json package. It compares json.Marshal, which returns bytes, with json.Encoder, which writes to an io.Writer, and discusses error handling in HTTP handlers. It also demonstrates marshaling maps and structs and using field tags to control JSON property names.

### Source excerpt

Introduction In part 1 we took a high-level view on serialization and JSON. In this part, we'll roll our sleeves and start working with JSON, focused on emitting JSON. You might think this is a basic topic, but there is much more to it than just calling json.Marshal. json.Marshal vs json.Encoder The encoding/json package has two main APIs: Marshal and NewEncoder. The Marshal function returns a []byte while the NewEncoder function will write to an io.Writer. The question is: When should you use one API over the other?

## Learning Path: Important Standard Library Modules

DevFeed: [Learning Path: Important Standard Library Modules](<https://devfeed.tech/articles/learning-path-important-standard-library-modules-4384.md>)

Original publisher: [Read original article](<https://realpython.com/learning-paths/standard-library-modules-you-should-know/>)

Author: Real Python

Published: 2024-11-14T12:00:00Z

Content type: tutorial

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [CSV](<https://devfeed.tech/topics/csv.md>), [JSON](<https://devfeed.tech/topics/json.md>), [math](<https://devfeed.tech/topics/math.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [json](<https://devfeed.tech/tags/json.md>), [learning](<https://devfeed.tech/tags/learning.md>), [math](<https://devfeed.tech/tags/math.md>), [python](<https://devfeed.tech/tags/python.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

A Python learning path covering essential standard library modules for mathematics, dates and times, random data, serialization, JSON, CSV, XML, regular expressions, and system tools.

### Source excerpt

Explore Python standard library modules including math, datetime, JSON, CSV, regex, subprocess, and argparse through hands-on tutorials and courses.

## JSON Handling and Type Management with Large Datasets in Go - Ep.4

DevFeed: [JSON Handling and Type Management with Large Datasets in Go - Ep.4](<https://devfeed.tech/articles/json-handling-and-type-management-with-large-datasets-in-go-ep-4-22262.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/10/json-handling-and-type-management-with-large-datasets-in-go.html>)

Published: 2024-11-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Code](<https://devfeed.tech/topics/code.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [advanced-json-management-go](<https://devfeed.tech/tags/advanced-json-management-go.md>), [code](<https://devfeed.tech/tags/code.md>), [custom-go-struct-json-serialization](<https://devfeed.tech/tags/custom-go-struct-json-serialization.md>), [custom-json-serialization-go](<https://devfeed.tech/tags/custom-json-serialization-go.md>), [decoding](<https://devfeed.tech/tags/decoding.md>), [efficient-json-processing-in-go](<https://devfeed.tech/tags/efficient-json-processing-in-go.md>), [encoding-json](<https://devfeed.tech/tags/encoding-json.md>), [examples](<https://devfeed.tech/tags/examples.md>), [go](<https://devfeed.tech/tags/go.md>), [go-encoding-json-package](<https://devfeed.tech/tags/go-encoding-json-package.md>), [go-json-handling-tutorial](<https://devfeed.tech/tags/go-json-handling-tutorial.md>), [go-selective-decoding](<https://devfeed.tech/tags/go-selective-decoding.md>), [go-type-management-json](<https://devfeed.tech/tags/go-type-management-json.md>), [handling-mixed-type-arrays-json-go](<https://devfeed.tech/tags/handling-mixed-type-arrays-json-go.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [json](<https://devfeed.tech/tags/json.md>), [json-anonymous-structures-go](<https://devfeed.tech/tags/json-anonymous-structures-go.md>), [json-best-practices](<https://devfeed.tech/tags/json-best-practices.md>), [json-data-optimization-techniques](<https://devfeed.tech/tags/json-data-optimization-techniques.md>), [json-for-engineers](<https://devfeed.tech/tags/json-for-engineers.md>), [json-handling-techniques-for-engineers](<https://devfeed.tech/tags/json-handling-techniques-for-engineers.md>), [json-marshaler-and-unmarshaler-interfaces-in-go](<https://devfeed.tech/tags/json-marshaler-and-unmarshaler-interfaces-in-go.md>), [json-nested-fields-go](<https://devfeed.tech/tags/json-nested-fields-go.md>), [json-strategies-large-datasets](<https://devfeed.tech/tags/json-strategies-large-datasets.md>), [json-type-pollution-avoidance](<https://devfeed.tech/tags/json-type-pollution-avoidance.md>), [managing-large-json-datasets-in-go](<https://devfeed.tech/tags/managing-large-json-datasets-in-go.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [reducing-type-declarations-go](<https://devfeed.tech/tags/reducing-type-declarations-go.md>), [serialization](<https://devfeed.tech/tags/serialization.md>)

### AI overview

Episode 4 of the JSON for Engineers series explains how to process large JSON datasets in Go. It covers selective decoding with anonymous structures, custom JSON serialization through Marshaler and Unmarshaler interfaces, and handling mixed-type arrays.

### Source excerpt

Introduction: Welcome to Episode 4 of the JSON for Engineers series! In this episode, we tackle the complexities of working with JSON data, especially when dealing with extensive datasets and optimizing type management. Here, Miki introduces key strategies for managing large JSON documents, avoiding unnecessary type definitions, and using Go's encoding/json package to handle custom serialization needs effectively. Type Pollution Avoidance: Minimizing type declarations by using selective decoding and anonymous structures. Custom JSON Serialization: Implementing Go's Marshaler and Unmarshaler interfaces for precise JSON formatting. Working with Mixed-Type Arrays: Handling JSON arrays containing diverse types in Go Miki begins by addressing the challenge of "type pollution" when working with large JSON responses. When dealing with massive JSON datasets, like data from social trading platforms, defining a separate type for every possible field can quickly lead to an unwieldy codebase. To streamline this, Miki demonstrates how to leverage anonymous structures and selective decoding in Go. By defining only the relevant fields within a function, we can avoid creating additional struct types, making the code more compact and efficient. This technique is especially useful when working with JSON data containing nested fields that may not all be necessary for your application. Through this approach, Go's encoding/json package will simply ignore any unreferenced fields, allowing you to handle only the data that matters to your project.

## JSON - The Fine Print: Part 1

DevFeed: [JSON - The Fine Print: Part 1](<https://devfeed.tech/articles/json-the-fine-print-part-1-22266.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/10/json-the-fine-print-part-1.html>)

Published: 2024-10-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api-layers](<https://devfeed.tech/tags/api-layers.md>), [apis](<https://devfeed.tech/tags/apis.md>), [common-serialization-errors](<https://devfeed.tech/tags/common-serialization-errors.md>), [data-serialization](<https://devfeed.tech/tags/data-serialization.md>), [data-structure-separation](<https://devfeed.tech/tags/data-structure-separation.md>), [data-transmission](<https://devfeed.tech/tags/data-transmission.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [database](<https://devfeed.tech/tags/database.md>), [elasticsearch](<https://devfeed.tech/tags/elasticsearch.md>), [encoding-json](<https://devfeed.tech/tags/encoding-json.md>), [go-json-types](<https://devfeed.tech/tags/go-json-types.md>), [go-language-serialization](<https://devfeed.tech/tags/go-language-serialization.md>), [go-language-validation](<https://devfeed.tech/tags/go-language-validation.md>), [go-type-mapping](<https://devfeed.tech/tags/go-type-mapping.md>), [json](<https://devfeed.tech/tags/json.md>), [json-best-practices](<https://devfeed.tech/tags/json-best-practices.md>), [json-go-mapping](<https://devfeed.tech/tags/json-go-mapping.md>), [json-marshaling](<https://devfeed.tech/tags/json-marshaling.md>), [json-unmarshaling](<https://devfeed.tech/tags/json-unmarshaling.md>), [json-validation](<https://devfeed.tech/tags/json-validation.md>), [passing-serialized-data](<https://devfeed.tech/tags/passing-serialized-data.md>), [rest-apis](<https://devfeed.tech/tags/rest-apis.md>), [schema-less-data-format](<https://devfeed.tech/tags/schema-less-data-format.md>), [sensitive-data](<https://devfeed.tech/tags/sensitive-data.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-mistakes](<https://devfeed.tech/tags/serialization-mistakes.md>), [serialization-protocols](<https://devfeed.tech/tags/serialization-protocols.md>)

### AI overview

This article explains JSON and serialization fundamentals, then examines common mistakes. It recommends serializing data at program boundaries and using separate data structures for API, business, and storage layers to avoid inefficiency, coupling, and accidental exposure of sensitive data.

### Source excerpt

Introduction Everybody knows JSON, it's a simple serialization format and the default format for REST APIs. Like many other topics, there are fine points you should know in order to work with JSON more effectively and avoid common mistakes. In this article we'll explore some big picture aspects and some low level details of using JSON. Serialization Before diving into JSON, I'd like to take a look at serialization in general and discuss common mistakes I've seen my customers make.

## Data Integrity with JSON Serialization - Ep.1

DevFeed: [Data Integrity with JSON Serialization - Ep.1](<https://devfeed.tech/articles/data-integrity-with-json-serialization-ep-1-22263.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/10/json-the-fine-print-ep-1-data-integrity-with-json-serialization.html>)

Published: 2024-10-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [software-architecture](<https://devfeed.tech/topics/software-architecture.md>)

Tags: [common-serialization-mistakes](<https://devfeed.tech/tags/common-serialization-mistakes.md>), [custom-json-validation](<https://devfeed.tech/tags/custom-json-validation.md>), [data-integrity-in-software-engineering](<https://devfeed.tech/tags/data-integrity-in-software-engineering.md>), [data-serialization-in-api-design](<https://devfeed.tech/tags/data-serialization-in-api-design.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [efficient-data-serialization](<https://devfeed.tech/tags/efficient-data-serialization.md>), [how-to-validate-json-data](<https://devfeed.tech/tags/how-to-validate-json-data.md>), [introduction-to-json-for-engineers](<https://devfeed.tech/tags/introduction-to-json-for-engineers.md>), [json](<https://devfeed.tech/tags/json.md>), [json-best-practices](<https://devfeed.tech/tags/json-best-practices.md>), [json-best-practices-for-api](<https://devfeed.tech/tags/json-best-practices-for-api.md>), [json-data-validation-techniques](<https://devfeed.tech/tags/json-data-validation-techniques.md>), [json-for-engineers](<https://devfeed.tech/tags/json-for-engineers.md>), [json-in-software-development](<https://devfeed.tech/tags/json-in-software-development.md>), [json-optimization-for-storage](<https://devfeed.tech/tags/json-optimization-for-storage.md>), [json-serialization-tutorial](<https://devfeed.tech/tags/json-serialization-tutorial.md>), [miki-tebeka-json-guide](<https://devfeed.tech/tags/miki-tebeka-json-guide.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-in-software-architecture](<https://devfeed.tech/tags/serialization-in-software-architecture.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-layer-separation-and-data-handling](<https://devfeed.tech/tags/software-layer-separation-and-data-handling.md>)

### AI overview

Episode 1 of JSON for Engineers explains serialization fundamentals and how JSON converts data structures to byte sequences. It recommends serializing at system boundaries such as APIs and storage, keeping native types internally, separating models across layers, and validating data beyond JSON syntax.

### Source excerpt

Introduction: Welcome to Episode 1 of JSON for Engineers! In this first episode, Miki Tebeka dives into the fundamentals of serialization, with a special focus on JSON, one of the most widely-used data formats in software engineering. Miki draws from his extensive development experience to explain how JSON fits into the bigger picture of data interchange and serialization, laying the groundwork for engineers to use it effectively in real-world applications.

## Swift deserialization security primer

DevFeed: [Swift deserialization security primer](<https://devfeed.tech/articles/swift-deserialization-security-primer-8198.md>)

Original publisher: [Read original article](<https://snyk.io/blog/swift-deserialization-security-primer/>)

Author: Sam Sanoop

Published: 2023-07-18T16:00:00Z

Content type: article

Language: en

Sources: [Blog RSS Feed | Snyk](<https://devfeed.tech/sources/blog-rss-feed-snyk.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Security](<https://devfeed.tech/topics/security.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Code](<https://devfeed.tech/topics/code.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [attacks](<https://devfeed.tech/tags/attacks.md>), [awareness](<https://devfeed.tech/tags/awareness.md>), [blog](<https://devfeed.tech/tags/blog.md>), [code](<https://devfeed.tech/tags/code.md>), [code-security](<https://devfeed.tech/tags/code-security.md>), [developer](<https://devfeed.tech/tags/developer.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [exploit](<https://devfeed.tech/tags/exploit.md>), [remote-code-execution](<https://devfeed.tech/tags/remote-code-execution.md>), [security](<https://devfeed.tech/tags/security.md>), [security-vulnerabilities](<https://devfeed.tech/tags/security-vulnerabilities.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [swift](<https://devfeed.tech/tags/swift.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

This Swift security primer explains how deserialization vulnerabilities can arise when using NSCoding and NSSecureCoding. It describes object substitution attacks, potential remote code execution, command injection, and stricter protections provided by NSSecureCoding.

### Source excerpt

This blog will detail deserialization vulnerabilities in Swift that can occur when using the popular APIs, NScoding and NSSecureCoding, and how to prevent it properly.

## Data replication across backend services with Kafka and Protobuf

DevFeed: [Data replication across backend services with Kafka and Protobuf](<https://devfeed.tech/articles/data-replication-across-backend-services-with-kafka-and-protobuf-20096.md>)

Original publisher: [Read original article](<https://medium.com/jobteaser-dev-team/data-replication-across-backend-services-with-kafka-and-protobuf-cad1d9fd9f90?source=rss----bd77d16a0035---4>)

Author: Emmanuel Joubaud

Published: 2023-04-14T10:01:57Z

Content type: tutorial

Language: en

Sources: [JobTeaser](<https://devfeed.tech/sources/jobteaser.md>)

Topics: [Back end](<https://devfeed.tech/topics/backend.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [data-architecture](<https://devfeed.tech/topics/data-architecture.md>), [API](<https://devfeed.tech/topics/api.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [data](<https://devfeed.tech/tags/data.md>), [data-replication](<https://devfeed.tech/tags/data-replication.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [microservices](<https://devfeed.tech/tags/microservices.md>), [replication](<https://devfeed.tech/tags/replication.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-format](<https://devfeed.tech/tags/serialization-format.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>)

### AI overview

This tutorial explains Jobteaser's Silos architecture for replicating data across backend services. It describes using Kafka topics and Google Protobuf messages so consumer services can maintain local database copies while avoiding synchronous service-to-service API calls.

### Source excerpt

The Jobteaser application contains a lot of different relatively independent modules to help universities provide career guidance to students: a job board, a career event management system, a career advice appointment management system... When we decided to migrate our application's backend from a monolith to a service-oriented architecture, we strived to keep each module as isolated as possible from the others in the event of an incident. If the career appointment system was down, students should still be able to browse and apply to job ads. That isolation is achieved through what we've called our Silos architecture. The gist is we avoid synchronous API calls between backend services, and prefer asynchronous data integration between services. There are a lot of different ways to implement asynchronous communication between services, and few companies share the details of theirs so we had to figure out a lot of stuff on our own. Now that we've refined our system, we thought we'd share the details of our approach, based on simple data replication using Kafka and Protobuf. How it worksWhen a write operation happens, data is changed first on the Source of Truth service, who then publishes it to a Kafka topic that consumers can subscribe to, in order to replicate their own local copy in their databaseSource of Truth and consumers Every table in our data model has an owner service, also called the Source of Truth (SoT) for that data, or the producer. For instance, the job board service may be the SoT for the job ad data. The owner service has 3 main responsibilities: it receives and validates all write requests for the data it owns (Create, Update, Delete) it stores the data to its own database, i.e. the Source of Truth, the authoritative state of the data if it's data that other services might want to access, it publishes its latest state as a message into a Kafka topic Consumer services that are interested in accessing a given table can then subscribe to the Kafka topic

## Caching Without Marshal Part 2: The Path to MessagePack

DevFeed: [Caching Without Marshal Part 2: The Path to MessagePack](<https://devfeed.tech/articles/caching-without-marshal-part-2-the-path-to-messagepack-1338.md>)

Original publisher: [Read original article](<https://shopify.engineering/caching-without-marshal-part-two-messagepack>)

Author: Chris Salzberg

Published: 2022-11-15T15:00:00Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Caching](<https://devfeed.tech/topics/caching.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [cache](<https://devfeed.tech/tags/cache.md>), [caching](<https://devfeed.tech/tags/caching.md>), [code](<https://devfeed.tech/tags/code.md>), [rails](<https://devfeed.tech/tags/rails.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [serialization-format](<https://devfeed.tech/tags/serialization-format.md>)

### AI overview

Shopify's second article on replacing Ruby's Marshal cache format explains how MessagePack provides a more robust binary serialization format for Rails caching. Unlike Marshal, MessagePack is language-independent and avoids encoding Ruby-specific types that can make cached data fail after code changes.

### Source excerpt

Shopify wanted a cache format that would not blow up when we shipped code changes. Part two of Caching Without Marshal describes the MessagePack format, and how we migrated to MessagePack.

## Kotlin JSON Benchmark on Android (2022): Moshi vs Kotlin Serialization

DevFeed: [Kotlin JSON Benchmark on Android (2022): Moshi vs Kotlin Serialization](<https://devfeed.tech/articles/kotlin-json-benchmark-on-android-2022-moshi-vs-kotlin-serialization-25881.md>)

Original publisher: [Read original article](<https://bladecoder.medium.com/kotlin-json-benchmark-on-android-2022-moshi-vs-kotlin-serialization-18436c0596c3?source=rss-54910f05af37------2>)

Author: Christophe Beyls

Published: 2022-10-14T17:31:03Z

Content type: comparison

Language: en

Sources: [Stories by Christophe Beyls on Medium](<https://devfeed.tech/sources/stories-by-christophe-beyls-on-medium.md>)

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Gson](<https://devfeed.tech/topics/gson.md>), [build times](<https://devfeed.tech/topics/build-times.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [annotation-processor](<https://devfeed.tech/tags/annotation-processor.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [gson](<https://devfeed.tech/tags/gson.md>), [json](<https://devfeed.tech/tags/json.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-serialization](<https://devfeed.tech/tags/kotlin-serialization.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [moshi](<https://devfeed.tech/tags/moshi.md>), [performance](<https://devfeed.tech/tags/performance.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [vs](<https://devfeed.tech/tags/vs.md>)

### AI overview

This article sets up a 2022 Android benchmark comparing Moshi and Kotlin Serialization for JSON serialization and deserialization of Kotlin classes. It discusses Kotlin metadata compatibility, generated adapters, reflection, streaming support, Okio integration, runtime dependencies, and build-time tradeoffs. The supplied text does not include the benchmark results or identify which library is fastest.

### Source excerpt

When it comes to automatic serialization and deserialization of Kotlin classes using the JSON format, the two main libraries compatible with Kotlin metadata are currently Moshi and Kotlin Serialization. This compatibility is especially important for non-null types and default values during deserialization, where lack of proper Kotlin support could result in unexpected values occurring at runtime, such as null values in non-null fields. If you're still using legacy libraries like Gson to parse Kotlin classes, it's time to reconsider. Moshi has been supporting Kotlin classes since version 1.5.0, released in 2017. One year later, the next major release 1.6.0 added an annotation processor to generate adapters for Kotlin classes at compile time. I was quite interested in the performance gains allowed by this solution and wrote an article detailing what the generated code does. JetBrains released version 1.0.0 of Kotlin Serialization in 2020 with built-in support for JSON. This library generates adapters at compile time similarly to Moshi's annotation processor while being compatible with more platforms and formats. The lack of initial support for streaming was disappointing, so I didn't even consider using it in production until streaming support was eventually added in version 1.3.0 in 2021. The JSON engine had also been rewritten in the meantime in order to improve performance. Recently, version 1.4.0 added integration with the Okio library, the same library used by Moshi under the hood. Now that Kotlin Serialization looks full-featured and well-optimized, I thought it would be a good time to compare its performance against Moshi on Android devices with some benchmarks. Which one is the fastest? Take your bets. The contendersMoshi-Kotlin Reflection The runtime Kotlin plugin of the Moshi library. The JSON adapters are generated at runtime using reflection. The main downside of this library is that it adds a runtime dependency to the big kotlin-reflect library (currently

## KStore: A Kotlin Multiplatform Library for Saving and Restoring Objects to Disk

DevFeed: [KStore: A Kotlin Multiplatform Library for Saving and Restoring Objects to Disk](<https://devfeed.tech/articles/kstore-25913.md>)

Original publisher: [Read original article](<https://medium.com/@xxfast/kstore-1be37dd7bc22?source=rss-43bae76e8f81------2>)

Author: Isuru Rajapakse

Published: 2022-10-02T16:01:17Z

Content type: tutorial

Language: en

Sources: [Stories by Isuru Rajapakse on Medium](<https://devfeed.tech/sources/stories-by-isuru-rajapakse-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Library](<https://devfeed.tech/topics/library.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Filesystems](<https://devfeed.tech/topics/filesystems.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [test-coverage](<https://devfeed.tech/topics/test-coverage.md>)

Tags: [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [code-coverage](<https://devfeed.tech/tags/code-coverage.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [library](<https://devfeed.tech/tags/library.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

KStore is a small Kotlin Multiplatform library for saving and restoring serialized objects to disk. The article describes its coroutine-based API, storage operations, mutex-protected updates, and project tooling for testing, CI/CD, code coverage, and binary compatibility validation.

### Source excerpt

A tiny Kotlin multiplatform library to save and restore objects to and from the disk So I put out a new library, my first Multiplatform library. KStore is a tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk using kotlinx.coroutines, kotlinx.serializationand okio Why? A newer version of kotlinx.serialization was released and one thing caught my eye Integration with Okio's BufferedSource and BufferedSink Release 1.4.0-RC - Kotlin/kotlinx.serialization However, there was little to no documentation on how to use it. I scanned through the repository looking for tests but couldn't find any. I asked on slack Got nothing.. But I pulled it down and tried it out anyways. dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-okio:1.4.0") } Tried out the most obvious way and wrote up a test case Json.encodeToBufferedSink(value, FILE_SYSTEM.sink(path).buffer()) No luck. Asked around on slack once again Not a minute went by, and our lord and saviour himself descended from heaven to help me out After using use, it worked 🙌. His divinely presence inspired me to write out a bunch more test cases and put this out there in under ~48hrs GitHub - xxfast/KStore: A tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk using kotlinx.coroutines, kotlinx.serialisation and okio API KStore is inspired by RxStore, and it provides a simple API. Most of these interface methods are suspended, and can only be invoked from a suspended context. SuspendedCreate a storeval store: KStore<Pet> = storeOf("path/to/file")Get valueval mylo: Pet? = store.get() Or observe for changes val pets: Flow<Pet?> = store.updatesSet valuestore.set(mylo)Update a valuestore.update { pet: Pet? -> pet?.copy(age = pet.age + 1) } Note: this maintains a single mutex lock transaction, unlike get() and a subsequent set() Delete/Reset valuestore.delete() You can also reset a value back to its default. store.reset()Sel

## Making Open Source Safer for Everyone with Shopify's Bug Bounty Program

DevFeed: [Making Open Source Safer for Everyone with Shopify's Bug Bounty Program](<https://devfeed.tech/articles/making-open-source-safer-for-everyone-with-shopify-s-bug-bounty-program-1599.md>)

Original publisher: [Read original article](<https://shopify.engineering/shopify-making-open-source-safer>)

Author: Zack Deveau

Published: 2022-06-15T18:00:02Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Shopify](<https://devfeed.tech/topics/shopify.md>), [Application Security](<https://devfeed.tech/topics/application-security.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [vulnerability](<https://devfeed.tech/topics/vulnerability.md>), [Bug Bounty](<https://devfeed.tech/topics/bugbounty.md>), [Security](<https://devfeed.tech/topics/security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [application-security](<https://devfeed.tech/tags/application-security.md>), [bug-bounty](<https://devfeed.tech/tags/bug-bounty.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rails](<https://devfeed.tech/tags/rails.md>), [remote-code-execution](<https://devfeed.tech/tags/remote-code-execution.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [vulnerability](<https://devfeed.tech/tags/vulnerability.md>)

### AI overview

Shopify describes how a bug bounty report led to contributions that improve the security of the Rails library. The report identified a deserialization vulnerability in ActiveSupport's MessageEncryptor, where leaked development secrets could enable seemingly trusted data and potentially remote code execution. Shopify addressed the issue in its system, helped Rails adopt safer default serializers, and developed tools to help Ruby application developers identify similar risks.

### Source excerpt

Zack Deveau, Senior Application Security Engineer at Shopify, shares the details behind a recent contribution to the Rails library, inspired by a bug bounty report we received. He'll go over the report and its root cause, how we fixed it in our system, and how we took it a step further to make Rails more secure by updating the default serializer for a few classes to use safe defaults.

## AttributedString's Codable format and what it has to do with Unicode

DevFeed: [AttributedString's Codable format and what it has to do with Unicode](<https://devfeed.tech/articles/attributedstring-s-codable-format-and-what-it-has-to-do-with-unicode-21710.md>)

Original publisher: [Read original article](<https://oleb.net/2022/attributedstring-codable/>)

Author: Ole Begemann

Published: 2022-04-27T13:28:03Z

Content type: article

Language: en

Sources: [Ole Begemann](<https://devfeed.tech/sources/ole-begemann.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [json](<https://devfeed.tech/tags/json.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

The article examines how to encode Swift AttributedString values and explains why character-based or UTF-8 byte-based formatting ranges can become invalid across Unicode versions, Swift versions, operating systems, or normalization changes. It discusses storing UTF-8 bytes as a safer alternative.

### Source excerpt

Here's a simple AttributedString with some formatting: import Foundation let str = try! AttributedString( markdown: "Café **Sol**", options: .init(interpretedSyntax: .inlineOnly) ) AttributedString is Codable. If your task was to design the encoding format for an attributed string, what would you come up with? Something like this seems reasonable (in JSON with comments): { "text": "Café Sol", "runs": [ { // start..<end in Character offsets "range": [5, 8], "attrs": { "strong": true } } ] } This stores the text alongside an array of runs of formatting attributes. Each run consists of a character range and an attribute dictionary. Unicode is complicated But this format is bad and can break in various ways. The problem is that the character offsets that define the runs aren't guaranteed to be stable. The definition of what constitutes a Character, i.e. a user-perceived character, or a Unicode grapheme cluster, can and does change in new Unicode versions. If we decoded an attributed string that had been serialized on a different OS version (before Swift 5.6, Swift used the OS's Unicode library for determining character boundaries), or by code compiled with a different Swift version (since Swift 5.6, Swift uses its own grapheme breaking algorithm that will be updated alongside the Unicode standard)1, the character ranges might no longer represent the original intent, or even become invalid. Update April 11, 2024: See this Swift forum post I wrote for an example where the Unicode rules for grapheme cluster segmentation changed for flag emoji. This change caused a corresponding change in how Swift counts the Characters in a string containing consecutive flags, such as "🇦🇷🇯🇵". Normalization forms So let's use UTF-8 byte offsets for the ranges, I hear you say. This avoids the first issue but still isn't safe, because some characters, such as the é in the example string, have more than one representation in Unicode: it can be either the standalone character é (Latin small let

## Integrating Confluent Schema Registry with Apache Spark applications

DevFeed: [Integrating Confluent Schema Registry with Apache Spark applications](<https://devfeed.tech/articles/integrating-confluent-schema-registry-with-apache-spark-applications-24745.md>)

Original publisher: [Read original article](<https://medium.com/yazio-engineering/integrating-confluent-schema-registry-with-apache-spark-applications-d3426e33bc51?source=rss----65bd178b00af---4>)

Author: Dominik Liebler

Published: 2022-01-24T08:04:19Z

Content type: tutorial

Language: en

Sources: [YAZIO Engineering - Medium](<https://devfeed.tech/sources/yazio-engineering-medium.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [data lake](<https://devfeed.tech/topics/data-lake.md>), [parquet](<https://devfeed.tech/topics/parquet.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [ceph](<https://devfeed.tech/topics/ceph.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>)

Tags: [apache-spark](<https://devfeed.tech/tags/apache-spark.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [ceph](<https://devfeed.tech/tags/ceph.md>), [confluent](<https://devfeed.tech/tags/confluent.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-lake](<https://devfeed.tech/tags/data-lake.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [json](<https://devfeed.tech/tags/json.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [payload](<https://devfeed.tech/tags/payload.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [schema](<https://devfeed.tech/tags/schema.md>), [schemaregistry](<https://devfeed.tech/tags/schemaregistry.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [spark](<https://devfeed.tech/tags/spark.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This engineering article explains YAZIO's data pipeline from mobile and web applications through Kafka and Spark Structured Streaming into a Ceph-based data lake. It discusses why schemas matter and describes replacing JSON with Apache Avro and Confluent Schema Registry to reduce message size while keeping schema information externally stored and cached.

### Source excerpt

At YAZIO, we believe in making decisions backed by data to help people live healthier lives through better nutrition. For each new and existing feature we want to evaluate how well it performs and how our users interact with it. In order to do so, we need a lot of data and we need to handle backpressure in our systems. To cope with that we use a Kafka cluster managed by Strimzi operators running in Kubernetes. The data itself is being ingested from our mobile and web apps via HTTP or TCP endpoints serialized into JSON and stored in Kafka by a small application written in Kotlin/JVM. Overview of our data pipeline architecture At the other end of the pipeline, different Spark Structured Streaming applications (also written in Kotlin) dump this information into our data lake residing in a Ceph bucket. They read data from Kafka, deserialize it, transform some of the fields and write Parquet files into the data lake using a new schema. Why schemas? Schemas play an important role in data pipelines because they give meaning and context to data. In a world without schemas we would still do random interpretations about the context and meaning of data every now and then when using it. As you might have guessed already this would lead to a lot of bugs and misunderstandings. Photo by EJ Strat https://unsplash.com/photos/VjWi56AWQ9k Similar to a legal contract that binds you to certain limits, a schema binds the data to certain limits and meaning which narrow down the need of interpretation. Choice of serialization formats At the time of writing, Confluent Schema Registry supports these three serialization formats: Apache Avro Protocol Buffers (protobuf) JSON Schema From those choices, only two really provide more than just validation of the data that is ingested and transmitted through our data pipelines. Avro and Protobuf also allow us to shrink the sizes of our topics because only the payload is contained in a message, while the repeating schema will not be stored. In the cas

[Next page](<https://devfeed.tech/tags/serialization.md?cursor=WyIyMDIyLTAxLTI0VDA4OjA0OjE5KzAwOjAwIiwgImI3MDk3NDYyLWI2NDUtNDNjNy04NzAwLTQxYzJiNDViMjU3NCJd>)