xavdid's recent activity

  1. Comment on Day 22: Sand Slabs in ~comp.advent_of_code

    xavdid
    Link
    Step-by-step explanation | full code Publishing this way late, since life got busy on me. The puzzle itself was a little more straightforward, so I ended up spending more time on my writeup...

    Step-by-step explanation | full code

    Publishing this way late, since life got busy on me. The puzzle itself was a little more straightforward, so I ended up spending more time on my writeup talking about design decisions around how to structure the Brick class. Very pleased with how that exploration went!

    2 votes
  2. Comment on What games have you been playing, and what's your opinion on them? in ~games

    xavdid
    Link
    Am partway through Final Fantasy XVI. It's... an interesting one. The good parts are great and the rest of it is baffling amateurish? The combat system is pretty good and rewards experimentation...

    Am partway through Final Fantasy XVI. It's... an interesting one. The good parts are great and the rest of it is baffling amateurish? The combat system is pretty good and rewards experimentation and finesse.

    But, none of the other systems really make sense. The quests are bad, the equipment is bad, the exploration is bad (seriously, 3 gil as a random pickup reward?).

    You sort of have to judge it on two levels:

    1. is this a good game based on what they set out to do (make a streamlined action game)?
    2. is this a good Final Fantasy game?

    I think the answer for #1 is "yeah, mostly, but I disagree with what they set out to do being good enough". For #2 it's closer to "probably not, since it lacks basically any RPG elements (insultingly so).

    I'll likely stick with it (since, like I said, the fun parts are fun) but boy were there some choices made.

    3 votes
  3. Comment on What is a software you wish existed? in ~comp

    xavdid
    Link Parent
    The lack of a thing like this is what lead me to build one of my own: https://david.reviews/ Unlike all the other sites you mentioned, it's not a site where anyone can sign up and post. Its just a...

    The lack of a thing like this is what lead me to build one of my own:

    https://david.reviews/

    Unlike all the other sites you mentioned, it's not a site where anyone can sign up and post. Its just a front end for my reviews database, which has movies, games, and books. That removed a bunch of headaches (storing login info, moderation, etc) while still giving me what I wanted (to be able to share my reviews).

    Of course, there's also no community or algorithm recommendation features, but that's an ok trade off.

    The whole front end is open source. The backend is airtable, but I've been meaning to publish my schema in a reuseable way (at least so people can produce similar results). All the data entry is automated too, so I just type a review and thoughts.

    Anyway, all that is to say, a spreadsheet with some automation is probably best if you're just tracking for you! cc @ButteredToast

    1 vote
  4. Comment on What games have you been playing, and what's your opinion on them? in ~games

    xavdid
    Link Parent
    Yes, I think it would have been really notable at the time. For instance, there's an entire chapter without dialogue, just caveman noises and gestures, which is still pretty unusual and...

    Yes, I think it would have been really notable at the time. For instance, there's an entire chapter without dialogue, just caveman noises and gestures, which is still pretty unusual and interesting. The overall vibe and writing is probably still its strongest point but that's only because the gameplay is weak.

    As for modern storytelling, it's much more varied now, I think. You have games like Pentiment and Frog Detective which use their writing and voice to tell a very specific story. - it's very novel-like. There's also things like The Last of Us which certainly has a narrative, but there's a ton of world building through background text and reading between the lines of dialogue. So that's also great storytelling, but less direct. On the far other end, you have things like Jusant which have story told almost exclusively in the background which the player can engage with as little or as much as they want.

    Live A Live waded into some of those waters when (I would imagine) not many other games were, which is neat! I'm just not sure it's something people have to play today when there are better options (that take inspiration from Live A Live) available.

    1 vote
  5. Comment on What games have you been playing, and what's your opinion on them? in ~games

    xavdid
    Link
    I've been playing the Live A Live remake which is... fine. The art and narrative would have been way ahead of its time in 1994 and holds up quite well. Unfortunately, the rest of the gameplay is...

    I've been playing the Live A Live remake which is... fine. The art and narrative would have been way ahead of its time in 1994 and holds up quite well.

    Unfortunately, the rest of the gameplay is pretty lacking. It uses gameplay to support the story (which is cool!) but the gameplay itself isn't anything worth mentioning. The battle system itself is ok, but if that's all there was, it wouldn't be a good game. Battles are simplistic and abilities are mostly bad except for your One Best One. That would be fine if the rest of the game carried, but you spend a lot of time in combat which can really drag.

    Overall I think I'll see it through, but it's something I mostly want to see the end of vs am enjoying sitting down and playing.

    4 votes
  6. Comment on What games have you been playing, and what's your opinion on them? in ~games

    xavdid
    Link Parent
    I loved Thronebreaker! It was one of my GotY back in 2021: https://david.reviews/games/thronebreaker-the-witcher-tales/ I really loved how much the story was expressed through gameplay (like a...

    I loved Thronebreaker! It was one of my GotY back in 2021: https://david.reviews/games/thronebreaker-the-witcher-tales/

    I really loved how much the story was expressed through gameplay (like a "rock" card moving towards your heroes to simulate a rockslide). And how impactful choices were - it was super well done!

    2 votes
  7. Comment on Day 19: Aplenty in ~comp.advent_of_code

    xavdid
    Link
    Step-by-step explanation | full code This one was a lot of fun! I separated out the workflow parsing (using operator.gt/lt and simple string indexing), the part parsing (using a regex that found...

    Step-by-step explanation | full code

    This one was a lot of fun! I separated out the workflow parsing (using operator.gt/lt and simple string indexing), the part parsing (using a regex that found tuples), and the recursing (to get answers) so you can look at each individually.

    I had some trouble visualizing part 2 at first, so there's some good diagrams in there if you're having trouble as well!

    Solution wise, A workflow is parsed into a dynamically-defined function which gets the next workflow(s) based on the input. For part 1, that's:

    Python code
    def build_workflow(raw_filters: str, default: str) -> Callable[[Part], str]:
        def _get_next_destination(part: Part):
            for raw_filter in raw_filters.split(","):
                category, op, value, destination = extract_filter_components(raw_filter)
                if op(part[category], value):
                    return destination
    
            return default
    
        return _get_next_destination
    

    For part 2 I passed around a Part as a dict[str, range], so its workflow runner was:

    Python code
    def build_counting_workflow(
        raw_filters: str, default: str
    ) -> Callable[[RangedPart], list[tuple[str, RangedPart]]]:
        def _get_next_destinations(part: RangedPart):
            ranges: list[tuple[str, RangedPart]] = []
    
            for raw_filter in raw_filters.split(","):
                category, op, value, dest = extract_filter_components(raw_filter)
    
                if op == gt:
                    keep, send = bisect_range(part[category], value + 1)
                else:
                    send, keep = bisect_range(part[category], value)
    
                ranges.append((dest, {**part, category: send}))
                part = {**part, category: keep}
    
            # whatever is left also goes
            return ranges + [(default, part)]
    
        return _get_next_destinations
    

    Very fun today, and nothing too cursed!

    2 votes
  8. Comment on Day 26 in ~comp.advent_of_code

    xavdid
    Link
    There are 2 truly difficult problems in computer science: naming things, cache invalidation, and off-by-one errors. 😁

    There are 2 truly difficult problems in computer science: naming things, cache invalidation, and off-by-one errors. 😁

    3 votes
  9. Comment on Day 16: The Floor Will Be Lava in ~comp.advent_of_code

    xavdid
    Link
    Step-by-step explanation | full Python code Very pleased with today. Ended up with a State that could generate the next State based on its location and direction. Put those in a queue and bail if...

    Step-by-step explanation | full Python code

    Very pleased with today. Ended up with a State that could generate the next State based on its location and direction. Put those in a queue and bail if the next state is out of bounds or has already been seen. I liked the architecture today, which focused on separation of concerns. Also, got to use some features of pattern matching, which is always exciting.

    Also, spent a bunch of time at the end of the post discussion performance optimizations. Got the (both parts) runtime from ~ 4.6 seconds down to ~ 1.1 with 3 1-line changes!

    1 vote
  10. Comment on Day 2: Cube Conundrum in ~comp.advent_of_code

    xavdid
    Link Parent
    Ah, that's awesome! I always use sum but never knew there was a multiplication version!

    Ah, that's awesome! I always use sum but never knew there was a multiplication version!

    1 vote
  11. Comment on Looking for games like wordle in ~games

    xavdid
    Link Parent
    Cinerdle is a favorite of mine! Not too hard, but not too easy. I do love film trivia.

    Cinerdle is a favorite of mine! Not too hard, but not too easy. I do love film trivia.

  12. Comment on Day 2: Cube Conundrum in ~comp.advent_of_code

    xavdid
    Link Parent
    Nice! I've been really digging just as a program. Is powerful, but stays out of my way.

    Nice! I've been really digging just as a program. Is powerful, but stays out of my way.

    1 vote
  13. Comment on Day 2: Cube Conundrum in ~comp.advent_of_code

    xavdid
    Link
    Step-by-step Python explanation: https://advent-of-code.xavd.id/writeups/2023/day/2/ Pretty straightforward today - Python's re.findall and a regex got me all the pairs of count + color and a...

    Step-by-step Python explanation: https://advent-of-code.xavd.id/writeups/2023/day/2/

    Pretty straightforward today - Python's re.findall and a regex got me all the pairs of count + color and a defaultdict made it easy to calculate the min number required. Oddly, this felt more like a day 1 than yesterday did 😅

    2 votes
  14. Comment on Day 1: Trebuchet?! in ~comp.advent_of_code

    xavdid
    Link
    AoC is routinely my favorite event of the year. Day 1 had some fun edge cases, but nothing too crazy. If anyone gets stuck (not necessarily today, but at some point in here), I'll be posting...

    AoC is routinely my favorite event of the year. Day 1 had some fun edge cases, but nothing too crazy.

    If anyone gets stuck (not necessarily today, but at some point in here), I'll be posting explanations of each puzzle and my Python solution on my website: https://advent-of-code.xavd.id/writeups/2023/day/1/

    Should be a fun year!

    2 votes
  15. Comment on What programming/technical projects have you been working on? in ~comp

    xavdid
    Link
    For the past few years of Advent of Code, I've written step-by-step explanations for how each puzzle is solved. This has been an important step in my learning, plus it's fun. Previously, these...

    For the past few years of Advent of Code, I've written step-by-step explanations for how each puzzle is solved. This has been an important step in my learning, plus it's fun.

    Previously, these writeups have been available as GitHub READMEs, which is fine. But, in an effort to really showcase them, I'm making a little static site to host them. This has a few advantages:

    • I can get a little fancier with my syntax highlighting (e.g. line numbers or highlighting new rows)
    • They'll be easier to find rather than buried in a repo
    • I can add things like an RSS feed

    I'm building it with Astro and am very impressed so far!

    10 votes
  16. Comment on As the Halloween season begins, what are your favorite spooky reads? in ~books

    xavdid
    Link Parent
    TIL! That's very cool.

    TIL! That's very cool.

  17. Comment on As the Halloween season begins, what are your favorite spooky reads? in ~books

    xavdid
    Link Parent
    Definitely witchy- they're running around doing magic and stuff. I actually don't remember loving the movie, but I think it would fit the season.

    Definitely witchy- they're running around doing magic and stuff. I actually don't remember loving the movie, but I think it would fit the season.

  18. Comment on As the Halloween season begins, what are your favorite spooky reads? in ~books

    xavdid
    Link Parent
    Nice! Seems appropriate. I've seen the Eastwick movie, but didn't realize it was a book.

    Nice! Seems appropriate. I've seen the Eastwick movie, but didn't realize it was a book.

  19. Comment on As the Halloween season begins, what are your favorite spooky reads? in ~books

    xavdid
    Link Parent
    Oh fun! I like frame stories like that - I'll check it out.

    Oh fun! I like frame stories like that - I'll check it out.

    1 vote
  20. Comment on As the Halloween season begins, what are your favorite spooky reads? in ~books

    xavdid
    Link Parent
    Hey, can't be the classics. Thank you!

    Hey, can't be the classics. Thank you!

    2 votes