🚨🚨 That’s a lot of YAML 🚨🚨

✨ Explore this must-read post from Hacker News πŸ“–

πŸ“‚ **Category**:

πŸ’‘ **What You’ll Learn**:





🚨🚨 That’s a lot of YAML 🚨🚨










# 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 ™ 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: $⚑
# this will be a string ~100% of the time
string_version: “$⚑”

# 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 `⚑` 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. πŸ’•


πŸ”₯ **What’s your take?**
Share your thoughts in the comments below!

#️⃣ **#lot #YAML**

πŸ•’ **Posted on**: 1787908796

🌟 **Want more?** Click here for more info! 🌟

By

Leave a Reply

Your email address will not be published. Required fields are marked *