The following is a collection of free international standards, registries and references that I collected throughout the years while developing websites and web services. These references, while very precise and technical by their nature, are extremely useful in order to ensure that a specific implementation is actually correct, and to mitigate unexpected interoperability between systems on the Internet.
As it's not always clear how a technology is used based on its name or acronym, I included the primary use case for each reference along with its name and/or acronym.
Also, many of these standards are built over each other, and as such I tried to list them in that order as much as possible while maintaining clarity.
The following explains how plain text is handled by a computer.
- Character ID list (Unicode)
- Character encoding list for general use
- Character encoding list for web pages
- Binary data encoded as plain text (Base64)
Note that the most popular character encoding is UTF-8, a superset of ASCII.
Real world stuff
The following provides IDs and critical information about worldwide social, political and cultural concepts often referenced.
- Country code ISO database (ISO 3166 codes)
- Country code United Nations list (M49)
- Currency code list (ISO 4217 codes)
- Language code list (ISO 639 codes)
- Language tags
- Matching language tags
- Language subtag list
- Language tag extension list
- Phone numbering (E.164)
- Phone numbers notation (E.123)
- Time zone database
The following explains how computers can identify and talk to each other on the Internet.
The following explains how to find information about a particular domain on the Internet, including the IP adresses of its services.
Note that host names are domain names on which a website can be hosted.
- Host name original definition
- Host name extended definition (section 2.1)
- Domain names (DNS) part 1
- Domain names (DNS) part 2
- Wildcards in domain names
- Domain name resource record types (RR TYPEs) list
- International domain names 2003 version (IDNA2003) part 1
- International domain names 2003 version (IDNA2003) part 2
- International domain names 2003 version (IDNA2003) part 3
- International domain names 2003 version (IDNA2003) part 4
- International domain names 2008 version (IDNA2008) part 1
- International domain names 2008 version (IDNA2008) part 2
- International domain names 2008 version (IDNA2008) part 3
- International domain names 2008 version (IDNA2008) part 4
- International domain names 2008 version (IDNA2008) contextual rules list
- Reading international domain names during transition (UTS #46)
- Special domain name list
- Domain name root zone list
- Domain name public suffix list
The following explains how emails work.
Note that Pluralsight subscribers can watch my course Configuring and Managing SPF, DKIM, and DMARC, which cover some of these topics.
- Email base definition
- Required email adresses
- Emails with multiple senders
- Email extensions part 1
- Email extensions part 2
- Email extensions part 3
- International emails
- Email message header list
- Domain-based email sources authorization (SPF)
- Updating email source during forwarding (SRS)
- Cryptographic signatures on emails (DKIM)
- Cryptographic signatures on emails (DKIM) parameter list
- Domain-based email authentication policy (DMARC)
- Email authentication for international emails
- End-to-end encryption of messages
- End-to-end encryption of messages parameter lists
- Transmission of emails (SMTP)
The following explains how to use XML, a data format that forms the base of all web pages.
Note that newer versions of XML and XPath exist, but are seldom used.
- XML 1.0
- Navigating XML documents (XPath 1.0)
- Defining XML schemas (XSD) part 1
- Defining XML schemas (XSD) part 2
Note that I am not including SOAP and WSDL as these technologies are obsolete and most API providers that do use them generally offer better alternatives alongside them.
The following explains how to use JSON, a common data format commonly used by websites.
Note that I am not including JSON Schema for the time being as it is not a standard yet.
The following explains how to interpret URLs.
The following explains how web clients interact with websites.
- HTTP method list
- HTTP status code list
- HTTP header list
- APIs using HTTP (REST)
Note that I am not including OpenAPI for the time being as it uses JSON Schema, which as I mentioned earlier is not a standard yet.
The following explains how to write a web page.
- Media type list
- Web document representation (DOM)
- Fetching web resources (Fetch)
- Hypertext (HTML)
- Mathematical formulas (MathML)
- Plain text to hypertext original definition (Markdown)
- Plain text to hypertext standardized definition (CommonMark)
- Styling (CSS)
- API to communicate from web client to server (XMLHttpRequest)
- API to communicate between web clients (WebRTC)
- News feeds (Atom) (often mislabeled RSS)
- Restricting unauthorized content (CSP)
- Test automation (WebDriver)
The following describes non-standard HTML meta tags found on the Internet. Note that standard ones are documented in the HTML specifications.
- Meta tags understood by Facebook (Open Graph)
- Meta tags understood by Twitter
- Publicly-known non-standard meta tag list
Data access management
The following explains how websites should manage secure data, including cases where authentication is done by a third-party.
- Usernames and passwords containing international characters
- HTTP authentication scheme list
- One-time passwords (OTP)
- Time-based one-time passwords (TOTP)
- XML-based single sign-on (SAML)
- JSON-based authorization (OAuth 2.0)
- JSON-based authorization (OAuth 2.0) bearer tokens
- JSON-based authorization (OAuth 2.0) parameter list
- JSON-based identity validation (OpenID Connect)
The following explains how to write web pages to be accessible for people with disabilities.
- Accessibility guidelines for web pages (WCAG)
- Adding accessibility information to web pages (ARIA)
- Recommendations on adding accessibility information to web pages
- Implicit accessibility information in HTML
Other common data formats
The following defines a few other common data formats that can be found on the web.
- Version numbering: An optional but common convension for defining versions of applications.
- YAML: A superset of JSON designed to be generally more easily readable by humans compared to JSON, with the drawback of being extremely complex.
- ZIP: Archives several files together with optional compression.
I crafted a tool-assisted speedrun (TAS) of the Super NES action-adventure game Illusion of Gaia (also known as Illusion of Time in Europe) which beats the game as fast as possible on the American version. The final time is 16:48 when using TAS timing (from initial power on to the last input) and…
The following is a Python script developed by yours truly to generate a sector according to the core rulebook of the Mongoose Traveller 2nd Edition tabletop RPG, exactly as described in the Universe and World Creation chapter. It is designed to describe worlds in human-readable format as much as…
As I am continuing my personal journey into deep learning research and development, I wanted to try out PyTorch, a machine learning framework with GPU acceleration primarily designed for the Python programming language. However, I couldn't find any good introductory resource online for it. So I read…
For about 2 years, I was not able to install any new software on my PlayStation Vita, for seemingly no reason. I could make new purchases from the PlayStation Store, but the download would always fail, and only on my Vita. No issues whatsoever with my PlayStation 3 nor my PlayStation 4, but for some…
"Everything must be done now. Let's re-use existing proven solutions and build over them so we don't waste time." And thus, people will look at the top 2 or 3 most popular solutions they already know about or can easily find on the Internet, compare them, pick the best one, and maybe add or change…
See all of my articles