Skip to content

The YS Blog🔗

YS Curling (up North)

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!

If you're in town I hope to see you there!

Today we'll be doing a little curling with YS.

Load and Compose your YAML Files

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.

YS YAML Documents

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.

Let's continue with yesterday's shoes example.

YAML Variables

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.

The Summer of YS

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...

It's Summer dammit!

Let's declare this Summer, The Summer of YS!

YAMLScript is YS!

Greetings! And welcome back to YAMLScript in 2025!

Or as we now say, YS in '25!.

It's been a minute since our last update, but we've been working super hard to make YS the best it can be.

Oh… What's "YS", you say?

Well, don't say "Y-S"…

Say "Wise"!


The Kubernetes Effect

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.

In the last post, I mentioned that I was going to present a 90 minute YS tutorial at KubeCon (November 15th in Salt Lake City).

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!

The Fall of YAMLScript!

(or Exciting YS News for Fall 2024!)

Greetings!

It's been over 3 months since the last blog post here.

Just to be clear, the YS/YAMLScript project is alive and fantastic!

We've just been busy as hell on 2 very big things: Exercism and KubeCon.

To be successful in both of these endeavors, YS needed to be amazing both as a programming language (Exercism) and as a data language (KubeCon).

There's so much new stuff to talk about, and I promise to write about all of it after things get back to a normal pace.

Today let's talk about Exercism, KubeCon and the positive impacts they've had on YS.

Dr. StrangeYAML or How I Learned to Stop Worrying and Love the LLM

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.

Well, let me finish, Elon.

Let me finish, Elon.

Well, listen, how do you think I feel about it?

YS Spring Update

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!

YS Activity in 2024

Let me start by telling you about some of the events that have happened in the YS world recently.

  • Seajure Talk - I gave a talk at the Seajure (Seattle Clojure) Meetup in March.
  • YS Article - The New Stack published an article about YS in March
  • YS Podcast - I was interviewed on the "The REPL" by Daniel Compton in April.

Finally I'm presenting a talk about YS at the Open Source Summit North America this Thursday, April 18th. Super excited about that!

YS Firsts

Remember Your First Time?

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...

...you guessed it...

...in YS!

Flip Flops

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.

YS on the other hand, is all about flip flops!

Godspeed

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!

Reindeer All The Way Down

Santa is in charge of Christmas. He's the one who makes sure that all the children get presents. But who is in charge of getting Santa his presents? That's where the reindeer come in. They are the ones who make sure that Santa gets his presents. But who is in charge of getting the reindeer their presents? More reindeer! But who is in charge of getting the reindeer's reindeer their presents? More reindeer! It's reindeer all the way down.

Santa's in d'buggy

With one week to go, Santa's gotta get his sleigh in top shape. Can't have any breakdowns on the big night. His sleigh might look like a simple wooden buggy, but it's more temperamental and buggy than a 2023 Tesla!

But this is Santa we're talking about. He's done this a few times, so he knows how to get the bugs out.

Rosetta Code

How does Santa read all the signs in all the languages of the world? That's a lot of languages to know on top of all the other things he has to do. Luckily he has his trusty polyglot elf, Rosetta, at his side. Bet you didn't know that!

Let Lambda Come Over

We know the names of Santa's reindeer: Dasher, Dancer, Prancer, Vixen, Comet, Cupid, Donner, Blitzen and Rudolph. And his elves: Alabaster Snowball, Bushy Evergreen, Pepper Minstix, Shinny Upatree, Sugarplum Mary, Wunorse Openslae, and the head elf, Bernard.

But we don't know the names of Santa's lambda reindeer and elves. Why would we? They are anonymous! They're also the hardest working of the bunch.

Naughty is Nice!

As the architect of a major world holiday, Santa Claus has hard design choices to make. What is Suki going to get this year? He keeps it simple with the standard Naughty-Or-Nice algorithm.

As architects of an aspiring new programming language, the YS folks have design choices to make as well!

Naughty-Or-Nice should not be discounted but what about Naughty-And-Nice? Naughty-Xor-Nice???

My personal favorite?

Naughty-Is-Nice!!

Stocking Stuffers

It's always nice to get a little something extra in your stocking whilst waiting for the big guy to show up on the big day.

Learning eveything you need to know about YS in 24 days is a tall order. I still have a quite a bit to learn about it myself! :-)

It helps to learn the small stuff first.

History Lesson

Santa is Legend. Legends have histories. The histories of Santa are many and varied, some going back to the 4th century AD.

The history of YS is much shorter, but it's still a history. Today I'd like to tell you a little bit about it.