Skip to content

The YS Blog🔗

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.

Future Proof

Santa has very little margin for error. He has to get everything just right all in one night.

YS is a work in progress, and will be for a long time. I'm trying to get it right, but I'm no Santa! In fact I'm quite sure I'll get some things wrong. That's just the nature of the beast when you're a programmer.

Also, have you ever wondered why the magic YS starter tag has that /v0 at the end?

Welcome to Day 12 of the YS Advent Calendar!

Today we'll discuss how YS is designed to be future proof.

I've been programming for quite a long time now. I've learned that no matter how good I think an idea it today, I'll almost certainly think of a better way to do it in the future.

This means I'll almost certainly want to make big changes to YS long after it's in use in the real world.

I also believe that it is really important for things like APIs and progamming languages to be stable and backwards compatible, basically forever.

If I could always have the freedom to make big changes to YS, but never break backwards compatibility, then I could have my cake and eat it too. And I think I can!

The YS API Version

I call v0 the YS API version. YS v0 isn't done yet, but it should be in the next couple months. At that point I'll release it as a stable version of the API version 0.

So you've seen that to make a .ys file executable, you need to add a special starter tag to the top of the file:

--- !YS-v0
say: "Hello!"

Or you can write it with the shebang line:

#!/usr/bin/env ys-0
say: "Hello!"

Leaving off that 0 here will make things not work as you intended.

You might also have noticed that when you install the ys binary CLI is is a symlink to ys-0.1.26. And there is another symlink called ys-0 that points to ys-0.1.26.

This is all by design.

The leading 0 in !YS-v0 and in bin/ys-0 and also in 0.1.26 is the YS API version.

When YS v0 is declared stable, there will never be changes that break backwards compatibility with the v0 API version.

That means you can write YS programs today, and they will continue to work forever, even if you upgrade to a new version of YS.

New Versions of YS

At some point after YS v0 is released as stable, I'll start working on YS v1.

I can make any changes I want in YS v1, even ones that break backwards compatibility with YS v0. That's because I set up the rules such that you need to declare the version when you write a YS program.

Conclusion

This doesn't mean that I don't think extremely carefully about every change I make to YS. But it does mean that I don't have to worry about everything being perfect before I release stable v0.

That's exciting as I strive to make YS a great language today and a better language in the future.

I hope that also encorages you write more YS today, knowing that it will continue to work in the future.

That wraps up Day 12. And that also means we're half way through the Advent Calendar. I hope you're enjoying it as much as I am, and I hope the best is yet to come!

Tune in tomorrow for Day 13 of the YS Advent Calendar.

The YeS Express

Santa's got a lot of ground to cover in a short amount of time. He doesn't have time to deal with confusing maps and directions.

Lisp has other-worldly powers of abstraction, but when it comes to reading syntax, most people prefer the familiarity of this world.

YS fully embraces all that Clojure has to offer, but syntax-wise it also offers a more familiar face.

States and Ladders

Santa is a busy guy. He has a lot of work to do. He has to make a list and check it twice. He has to find out who's naughty and nice. He has the monumental task of transforming wishes into happiness.

YS only needs to transform YS code into Clojure code. But it's a bit more involved than you might think.

To make things easier the YS compiler breaks the transformation into eight distinct States and seven distinct ~~Ladders~~ transformations.

Coding with Style

What's the best thing about Rudolph's nose? Is it that lights the way for Santa's sleigh? I'm calling BS on that. I'd say it's the main thing that gives the whole Sanata Story some Serious Style!

Good programmers do more than just get their solutions right. They do the whole thing with style. That makes the program easier to read, understand and maintain. It also gives the code a certain je ne sais quoi.

Going to the Library

Programming in YS is as easy as reading a book. The only thing you really need is some good books! For that let's go to the library.

By books of course I mean YS functions. And by library I mean the YS Standard Library! There you'll find all-time best sellers like map, filter, reduce and say.

And Standard isn't the only Library in town...