Cached at:
08/28/26, 09:47 AM
# π¨π¨ That's a lot of YAML π¨π¨
Source: [https://noyaml.com/](https://noyaml.com/)
\# Made with π by https://ghuntley\.com after one too many CustomResourceDefinitions \# Improvements welcome, mash the βοΈ Octocat βοΈ and share how YAML makes your life better\. No: Body: Wants: To: Write: \- YAML \# π€ Why YAML is the right devops technology for you π€ \# \# \- 100% test coverage, always compiles just fine with no errors or warnings, always shippable \# \- no enforced error handling during development because runtime "panic at the disco" in production is dope \# \- "something broke" is way better than stack traces with line numbers \# \- you need to burn hours as part of setting up a new CI pipeline \# \- safe choice with unquestionable industry adoption, "used by kubernetes" \# \- is marginally better than windows\.ini \# \- unlike json \[1\]\[2\], YAML supports comments \# \- no official documentation \(other than a specification for implementers\) is totally fine \# \- you need a super safe way to "execute this code" \# πΏ wait a sec, did you say "executable yaml"?? πΏ \# \- https://ruby\-doc\.org/stdlib\-2\.4\.0/libdoc/yaml/rdoc/YAML\.html\#module\-YAML\-label\-Security \# \- https://www\.php\.net/manual/en/function\.yaml\-parse\.php\#refsect1\-function\.yaml\-parse\-notes \# \- https://securitylab\.github\.com/research/swagger\-yaml\-parser\-vulnerability/ \# \- https://github\.com/yaml/pyyaml/wiki/PyYAML\-yaml\.load\(input\)\-Deprecation \# π¨ Anyone who uses YAML long enough will eventually get burned when attempting to abbreviate Norway π¨ \# \`NO\` is parsed as a boolean type, which with the YAML 1\.1 spec, there are 22 options to write "true" or "false\." \# You have to wrap "NO" in quotes to get the expected result\. NI: Nicaragua NL: Netherlands NO: Norway \# π£\! \# π¨ Anyone wondering why their first seven Kubernetes clusters deploy just fine, and the eighth fails? π¨ \- 07 \- 08 \# Results in \[ 7, "08" \] \# YAML knows that, when you have something that looks like the time of day, \# what you \_really\_ wanted is the time of seconds since midnight timeOfDay: whatYouWrote: 04:30 \# And when you parse this file and serialize it again, you may get before YAML 1\.2 \.\.\. whatYouSurelyMeant: 16200 \# Have fun debugging this one\! whatYouShouldHaveWritten: \!\!str 04:30 \# YAML is the super best way to encode Octal \(tm\) and learning the hard way that Kubernetes uses YAML 1\.1 \# is a DevOps rite of passage\. Below YAML 1\.2 a large integer is automatically converted to octal\.\[3\] \- YAML 1\.1 uses \`0666\` notation\. \- YAML 1\.2 uses \`0o666\` notation \# YAML is great for specifying package versions, as long as you like versions being parsed as floating point\. versions: foo: 1\.7 \# These two packages have the same version\. bar: 1\.70 \# These two packages have the same version\. fizz: 1\.7\.0 \# But these two packages have different versions\. buzz: 1\.70\.0 \# But these two packages have different versions\. \# π€’ I have recently been learning GitHub Actions \# \# I just made 8 commits/pushes in one hour, and the last commit message, in its entirety, was: \# \# "I don't really like yml" \- https://twitter\.com/eric\_sink/status/1430954572848287744 \# π If SQL were built on YAML π SELECT: \- num \- name FROM: \- customers WHERE EXISTS: SELECT: \- name FROM: \- orders WHERE: AND: \- EQUALS: \- customers\.num \- orders\.customer\_num \- LT: \- price \- 50 \# Speaking of CI, did you know that 8\-character SHAs could be all numbers? \# If the system that parses \`my\.flaky\_version\` is typed, it will happily explode 2% of the time\. my: \# this will be a string ~98% of the time flaky\_version: $\{GIT\_SHORT\_SHA\} \# this will be a string ~100% of the time string\_version: "$\{GIT\_SHORT\_SHA\}" \# him: "Look, I bought a box of DevOps" \# her: "You can't just buy a box of DevOps" \# π€£ https://twitter\.com/mike\_kaufmann/status/1454712996933025794 \# "Don't forget the extra line break otherwise all shit goes to hell" \# π https://github\.com/IronScheme/IronScheme/commit/2f847793946935bd9143cdfb064f9006f763df68 \# π€‘ Doing the same thing with different CI providers π€‘ \# Azure devops jobs: \- job: job1 steps: \- script: chmod \+x \./script\.sh \- script: \./script\.sh \# CircleCI jobs: job1: steps: \- checkout \- run: "execute\-script\-for\-job1" \# Some future CI system, probably jobs: \- steps: job1 \- step1: \- script: chmod \+x \./script\.sh \- step2: \- run: "execute\-script\-for\-job1\-inside\-step2" \# If you're building a YAML file for Cloudformation for a DashboardBody for Cloudwatch \# and theres a SEARCH function? you need to escape the already\-escaped and close the \# whole JSON with double\-quotes: "\{ \\"search\(' var=\\\\\\"blue\\\\\\" \. \# π» Overheard in a pub \- The problem with YAML they did one thing well\. Shitty boiler plate\. Then everyone thought it was a good idea\. \# π Mega twitter thread of pain \# π https://twitter\.com/brunoborges/status/1098472238469111808 π \# π’ Mandatory reading π’ \# \# "Today weβre going to look at some general problems with the YAML format" \# π https://arp242\.net/yaml\-config\.html π \# \# "We replaced 1,000 lines of YAML with 10 structs and people started contributing again" \# π https://tinyurl\.com/lessons\-in\-over\-engineering π \# \# "What if you used the same language and tools you use to define your app to define your infrastructure?" \# π https://twitter\.com/ellism/status/1008728148131733504 π \# \# "A YAML file is almost always still 'valid' even if it is trunca" \# π https://twitter\.com/colmmacc/status/1057316977457324032 π \# \# "the bug was that the YAML parser ignored the negative signs \.\.\. so negative GPS coordinates became positive ones" \# π https://twitter\.com/colmmacc/status/1063470541464461312 π \# \# "Every YAML parser is a custom YAML parser" \# π https://matrix\.yaml\.info/valid\.html π \# \# "There are 63 different ways to write multi\-line strings in YAML" \# π https://stackoverflow\.com/a/21699210/1094085 π \# \# "Toolchain version 1\.70 is parsed as 1\.7" \# π https://github\.com/dtolnay/rust\-toolchain/issues/112 π \# \# "StrictYAML Design Justifications" \# π https://hitchdev\.com/strictyaml/why/ π \# π Alternative options and approaches to DevOps \(cough yamlops cough\) π \# \- https://media\.ccc\.de/v/36c3\-11172\-leaving\_legacy\_behind \# \- https://nickel\-lang\.org/ \# \- https://dhall\-lang\.org/ \# \- https://cuelang\.org/ \# \- https://jsonnet\.org/ \# \- https://www\.youtube\.com/watch?v=tl9I\-R83lKo \# \- https://github\.com/xtruder/kubenix/tree/kubenix\-2\.0/examples/nginx\-deployment \# \- https://github\.com/nin\-jin/tree\.d \# π If you are vendor of developer tooling that is configurable via YAML, please do this π \# \- https://twitter\.com/kzu/status/1163864030911578112 \# \- https://twitter\.com/timeyoutakeit/status/1431052862138769408 \# π Footnotes π \# \[1\] You can do comments in json by \`\{"//": "A way to use comments in json"\}\` but it's icky\. \# \[2\] "Does ansible have a json schema? Yaml aint so bad with a schema\."? \# \[3\] Also see \`python2 \-c 'print 011' && echo $\(\(011 \+ 1\)\)\` \# and finally, here's some βοΈβοΈβοΈβοΈβοΈ feedback from reddit\.com: \- I need to burn the very motherboard this site runs from\. Itβs that awful\. \- This is the worst website I've ever seen \- I agree with the author in principle but that website is inexcusable\. I'm going to add YAML config to my projects on Monday just to spite that horrific "website"\. \- Wtf is this website and why does it repeatedly pop up my phone's keyboard \- This Website is a giant editable textfield \- Why?\!? \- Because itβs a good idea to demonstrate good standards while standing on oneβs soapbox \- The author of THAT website wants to tell the rest of us how to program\. \- While I agree with the spirit of the website \(fuck yaml\), the design decisions of the author are questionable to say the least\. \- The good news \(I realised\) was that you can select all the text of the site, and then delete it\. Problem solved\. \- Fuck this website\. Maybe if this person stopped bitching about yaml their website wouldn't blow\. \- Yeah, Iβm not going to take advice on best practices from a guy whose website is a giant editable text field with unclickable hyperlinks\. \# ps\. By design, this website is as usable as YAML\. π
[https://github.com/ghuntley/noyaml](https://github.com/ghuntley/noyaml)