Backend

Deep dives into server-side concepts every backend developer encounters. From unique identifier formats like UUID and ULID to data serialization standards - practical explanations with real code examples in PHP, Python, and JavaScript.

← Dev Blog

Why "Unexpected Token" Is Almost Never a Typo in Your JSON

The JSON parse errors that actually reach production: HTML error pages, BOMs, truncated bodies, Python's NaN - and how to read V8's rewritten messages.

Yesterday

What Your JSON Parser Does When the Spec Says Nothing

I ran identical payloads through PHP, Node, Python and Go. They disagree on big integers, NaN, lone surrogates and nesting depth - usually in silence.

Yesterday

UUID v4 vs v7 vs ULID: What the Public Benchmarks Actually Show

Published benchmarks range from 35% faster inserts to 3x throughput collapse. Reconciling Percona, PostgreSQL 16 and Shopify - and which number is yours.

16 July

CSV vs JSON for Data Exchange: When Each Format Wins

CSV or JSON for APIs, pipelines and exports? Structure, parsing, streaming, schema enforcement and size compared, with clear rules for choosing.

15 April

NanoID vs UUID vs ULID: Choosing the Right ID for Your Project

Size, collision probability, alphabet customisation, URL safety and database performance compared - and when each ID format makes sense.

5 April

UUID vs GUID: Same Thing, Different Ecosystem

GUID is UUID v4 in a Microsoft costume. Uppercase, braces, newsequentialid() and Guid.NewGuid() - and when the distinction actually matters.

21 March

MongoDB ObjectID Explained: Structure, Timestamp, and When to Use It

Inside the 12-byte ObjectID: timestamp extraction, sorting behaviour, security trade-offs and comparison with UUID, with PHP and Python examples.

10 March

JSON vs YAML: Which Format to Choose for Configs, APIs, and Data

Syntax, readability, strictness and performance compared - plus YAML pitfalls like the Norway problem, and when each format is the right call.

2 March

UUID Versions Explained: v1, v3, v4, v5, v6, and v7

Every UUID version explained: time-based, name-based and random, with code in PHP, Python and JavaScript and a practical guide to picking one.

28 February

Unix Timestamps: The Developer's Complete Guide

What Unix timestamps are, why 1970, timezone pitfalls, milliseconds vs seconds and the Year 2038 problem, with PHP, Python and JavaScript examples.

21 February

UUID vs ULID: Which Unique ID Should You Use?

UUID v4, ULID and UUID v7 compared: internal structure, database index performance, security trade-offs and how to pick one for your table.

21 February

Choosing an Identifier, and Living With the Choice

Most of this category circles one decision: what goes in the primary key column. It is the hardest thing to change later, which is why it gets more space here than anything else. If you are starting from scratch, read UUID versions explained first, then the head-to-head comparisons - UUID vs ULID and NanoID vs UUID vs ULID.

The claim you will meet everywhere is that random keys wreck B-tree inserts. It is true, but the published numbers disagree wildly about how much - anywhere from a 35% slowdown to a threefold collapse. The benchmark reconciliation works out which of those numbers applies to a table like yours, which is usually a different answer than the blog post you got the figure from. If you are on SQL Server or .NET, the terminology trap is covered in UUID vs GUID, and MongoDB's twelve-byte variant has its own structure worth knowing in ObjectID explained.

The other half of the category is data formats and time. Config and API payload trade-offs are in JSON vs YAML and CSV vs JSON. Timestamps look trivial until a timezone or a millisecond-versus-second mix-up costs you an afternoon - the Unix timestamp guide covers the pitfalls, including Year 2038.

Every format discussed here has a tool on the site: generate UUIDs, ULIDs, NanoIDs or ObjectIDs, convert between JSON and YAML or CSV and JSON, and decode epochs with the timestamp converter.