Like I said before, in YS, There's More Than One Way To Do It.
This is especially true for YS expressions.
Later on you'll learn that YS is a Lisp in disguise.
In Lisp, an expression is a list consisting of a function and its arguments
inside a set of parentheses.
Consider this Python code:
name="World"print("Hello, "+name+"!")
In a Lisp, this would be written as:
(defname"World")(println(str"Hello, "name"!"))
In YS, this could be written as:
name =:'World'say:str('Hello, ' name '!')
I say could because... TMTOWTDI!
Today I'm going to show you many of the ways to DO IT in YS.
Ever been to Manitoba?
I went there once when my flight from Seattle to Toronto diverted to Winnipeg
because the plane's toilets stopped working!
That's when I learned about the World's Largest Curling Rock.
Toronto DevOps Meetup
Speaking of Toronto, I'll be giving a talk called "The YS way to YAML"
at the Toronto DevOps Meetup on June 12th.
That's one week from today!
Probably the biggest problem people have with YAML is that everything has to be
in one file.
Things start off nice and clean, but as requirements grow, so do your files!
What if you could compose your YAML documents like you compose your code?
Lots of small, single-purpose, possibly reusable files that you can load and
compose together into the thing you need?
That's what YS is all about.
As you know, YS is a functional language, and it has quite a few ways to load
data (and code too, since Code is Data™!) from external sources.
Today we'll be looking at how to load things from disk files, including:
Other YS files
YAML files (YAML is YS)
JSON files (JSON is YAML)
You can also load things from CSV/TSV files, shell commands, databases, APIs,
environment variables, and the web, but those are topics for another day.
YAML files (aka YAML streams) can contain multiple "documents".
A YAML document is a top level mapping or sequence "node".
Most YAML files contain a single document, but YAML files can contain multiple
(or zero!) documents.
New documents are started with a line of three dashes: ---.
YS can put these documents to all kinds of good use.
When you "load" a YAML file with YS, the result is the evaluation of the final
document (by default).
But since YS is functional, it can access any of the other documents.
YAML itself isn't a functional programming language, but advanced users are
probably aware of YAML's anchors, aliases and the merge key.
The merge key is YAML's one functional thing, and it's actually not even part of
the YAML 1.2 spec.
However, people find it useful and many YAML implementations (including YS)
support it.
The merge key (<<) is a special key that allows you to merge the contents of
one mapping into another.
Today we'll explore the merge key a bit and show how variables can make it
nicer to use.
Today starts a 3 month long, daily summertime journey into the intricacies of
YAML and the wisdom of YS!
Put on your favorite pair of coding sunglasses, grab a refreshing config drink,
and let's get started!
Back in March I promised to start writing more often about all the ways that YS
can help you out day-to-day with your YAML interactions.
When I last posted here it was barely Spring and now Spring is turning into
Summer.
Seasonal turning points be damned, I think of Summer as June, July, and August.
In other words...
In my many years of creating Open Source software and talking about it at
conferences, some of the most productive development times are often those
leading up to the presentation.
The conference was amazing and the YS tutorial was a huge success.
I came away with the feeling that YAML and YS had found their community.
KubeCon felt like YAMLCon!
Well now, what happened is, uh, one of our data scientists, uh, well, he
went a little funny in the head.
You know.
Just a little funny.
And uh, he went and did a silly thing.
Well, I'll tell you what he did.
He started chatting with computers... in YAML.
It's been a while since I let you know what's been happening with YS.
I've been busy working on it every day this year and I have a lot to tell you
about!
Do you remember the first time you wrote a program in a new language?
For YS, mine was yesterday!
This is my first post of 2024.
I've been working on YS non-stop since the last YS Advent 2023 post.
Too busy to write a blog post, I guess.
Yesterday something awesome happened.
Putting out a YS release is a complicated process.
It takes me about an hour to do it.
Of course I plan to automate it fully but I just haven't had the tuits.
For the last several releases, I've had a text file that listed all the steps
so that I wouldn't forget anything.
Yesterday I automated that list...
Can you imagine Santa walking around in flip flops?
I've never been up to the North Pole, but I'm pretty sure there's no beaches.
I always pictured Santa wearing moon boots around the workshop.
I wonder if Santa has a Hemi?
Supercharged, Turbocharged?
Maybe a Nitro Burning Funny Sleigh?
Dude's got to get around the world in one night.
Godspeed, my festive friend!