Assumed Audience: Hackers and anyone interested in Advent of Code and programming languages.

Epistemic Status: Not confident at all, but at least I’ll learn a lot.

I love the Christmas season.

First of all, I love Jesus Christ. I am hard-core Christian.

I also love the music. I love the feeling, the way people act differently. I love the little things people do all of the month of December.

All except for one thing: I have never liked Advent of Code.

I don’t like programming puzzles. I don’t like useless little programs. I want my code to do something.

I also like designing and building new, better things. I like pushing the state of the art forward. I like taking an impossible design problem and figuring out a design that makes it possible.

So I have never participated in Advent of Code.

That’s not to say I don’t think Advent of Code is a bad thing; I actually think it’s a great idea! I just never wanted to take part.

Until today.

See, I released a new project this past April. It is a monorepo of several projects. One of them is a build system Rig.

And another is Rig’s language, Yao.

Yao is especially appropriate for this time of year.

See, Yao, specifically yào (耀), is a Chinese word that means “shine, illuminate, dazzle” according to Pleco. The church that I am a member of, The Church of Jesus Christ of Latter-day Saints, often uses yào, especially in the scriptures, to denote “glory,” meaning the glory of God and Christ.

And that is the reason I named it as I did: if there is anything in it that is good, it is because Christ has helped me make it so, and I want the world to know that.

However, the name of the language is just “Yao” for simplicity.

After 11 years of design and implementation, Yao was born to the world two days after Easter this year.

It is only appropriate that I use this language, built for the glory of God and His Son, to count down the days to Christmas and the celebration of Christ’s glorious birth.

So that is what I will do. And I will probably do Advent of Code from now on.

It will actually be nice to stretch Yao’s limits every year and also add test cases to my test suite.

But I need some rules:

  1. I am not trying to solve everything, just as many as possible.

    Yao is still young and incomplete.

  2. I must stop working on puzzles 24 hours after the last puzzle is released, so just before Christmas.

  3. Since I implemented Yao, I can add features to it to solve puzzles, but the time limit still applies.

  4. All examples must work on the latest master branch when Advent of Code ends.

Advent of Code begins in a few hours. While I will not stay up late to start right away, and I have little time because of obligations to my wife, I will do my best to complete as many puzzles as possible.

Wish me luck!