Thinking about doing Advent of Code in my own tiny language mu this year.

mu is:

  • Dynamically typed
  • Lexically scoped with closures
  • Has a Go-like curly-brace syntax
  • Built around lists, maps, and first-class functions

Key syntax:

  • Functions use fn and braces:
fn add(a, b) {
    return a + b
}
  • Variables use := for declaration and = for assignment:
x := 10
x = x + 1
  • Control flow includes if / else and while:
if x > 5 {
    println("big")
} else {
    println("small")
}
while x < 10 {
    x = x + 1
}
  • Lists and maps:
nums := [1, 2, 3]
nums[1] = 42
ages := {"alice": 30, "bob": 25}
ages["bob"] = ages["bob"] + 1

Supported types:

  • int
  • bool
  • string
  • list
  • map
  • fn
  • nil

mu feels like a tiny little Go-ish, Python-ish language — curious to see how far I can get with it for Advent of Code this year. šŸŽ„


#qsrwpva

Advent of Code 2025 starts tomorrow. šŸ„³šŸŽ„

This year, I’m going to use Python 1 on SuSE Linux 6.4, writing the code on my trusty old Pentium 133 with its 64 MB of RAM. No idea if that old version of Python will be fast enough for later puzzles. We’ll see.


#ftqfrta

(#d2pj7pq) @lyse@lyse.isobeef.org Damn. That was stupid of me. I should have posted examples using 2026-03-01 as cutoff date. šŸ˜‚

In my actual test suite, everything uses 2027-01-01 and then I have this, hoping that that’s good enough. 🄓

def test_rollover():
    d = jenny.HASHV2_CUTOFF_DATE
    assert len(jenny.make_twt_hash(URL, d - timedelta(days=7), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=3), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=2), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=1), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d, TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=1), TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=2), TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=3), TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(days=7), TEXT)) == 12

(In other words, I don’t care as long as it’s before 2027-01-01. šŸ˜šŸ˜…)


#vezpyua

The classified information in the future classified information the surface so classified information is classified information and I wasn’t hurt

In fact, look at how soft this ball is

~ Mikuru Asahina The Elder (The Melancholy of Suzumiya Haruhi-chan)


#c2xbjca

@kentonvarda.com That is a fair point. It is also not very cohesive in a ā€œI don’t know what you want, but I’m required to say somethingā€ way. It managed to cover your grammar, the source of food insecurity, telling you ā€œjust eat somethingā€ (which is how I respond to family members who say they’re hungry), and tops it off with a funny video.


#tmw5zsa

@kentonvarda.com I really hate to defend an AI model, or Google, but you did not give it much to go on here. I would’ve assumed you were telling the machine you were hungry and wanted it to suggest food near you.


#cbyflfq