Crespyl's recent activity

  1. Comment on Dan Reeder - Born A Worm (2017) in ~music

    Crespyl
    Link
    I can tell this is going to be stuck in my head for a while.

    I can tell this is going to be stuck in my head for a while.

  2. Comment on New users: Ask your questions about Tildes here! (v4) in ~tildes

  3. Comment on What are your favourite time-loop based books, movies and video games? in ~talk

    Crespyl
    Link Parent
    Outer Wilds is one of my all-time favorites, for sure. Another good time-loop game is The Forgotten City, which started life as a Skyrim mod and was rebuilt into a (quite good) standalone game.

    Outer Wilds is one of my all-time favorites, for sure.

    Another good time-loop game is The Forgotten City, which started life as a Skyrim mod and was rebuilt into a (quite good) standalone game.

    14 votes
  4. Comment on Looking for some recommendations for games where you can build your own spaceships etc in ~games

    Crespyl
    Link Parent
    That description reminds me of Shores of Hazeron. Very jank, but a lot of fun with friends.

    That description reminds me of Shores of Hazeron. Very jank, but a lot of fun with friends.

    2 votes
  5. Comment on Looking for a new mouse (maybe) in ~tech

    Crespyl
    Link Parent
    I haven't noticed that kind of failure, but I also don't typically use the trackball for gaming in any case. I know some people aren't satisfied with the rolling/feel of the HUGE (possibly other...

    I haven't noticed that kind of failure, but I also don't typically use the trackball for gaming in any case.

    I know some people aren't satisfied with the rolling/feel of the HUGE (possibly other Elecoms too) and will replace the bearings with ceramics (iirc), but I don't know if that would also affect the tracking too.

  6. Comment on Looking for a new mouse (maybe) in ~tech

    Crespyl
    Link Parent
    Thanks, those look decent! I tend to prefer the slight off-center design of the Logitech and Elecom I linked, having never used a dead-center design like what you shared. I'll keep them in mind...

    Thanks, those look decent! I tend to prefer the slight off-center design of the Logitech and Elecom I linked, having never used a dead-center design like what you shared.

    I'll keep them in mind for my next purchase though, maybe I'll branch out and try one.

    1 vote
  7. Comment on Looking for a new mouse (maybe) in ~tech

    Crespyl
    Link
    I love trackballs, but not the kind that uses your thumb for everything, I like the whole-hand/index finger kind. Logitech used to make a fantastic trackball that I grew up with, but they've long...

    I love trackballs, but not the kind that uses your thumb for everything, I like the whole-hand/index finger kind.

    Logitech used to make a fantastic trackball that I grew up with, but they've long since discontinued it.

    These days it seems like Elecom is the only one making the style I like. Their "HUGE" model is the one I use now. Unfortunately I just had to replace mine because the old one started double-clicking a little too often. Build quality isn't the greatest, but the design and extra buttons are great. Some people complain about the bearings being stiff. I kind of see what they mean, but for me it's not a big enough issue to go and replace the bearings myself (which is apparently doable, just fiddly).

    The Elecom works great on Linux, although I do use Input Remapper (on KWin/Wayland) to rebind the middle click off of the scroll wheel and onto one of the easier-to-click extra buttons.

    I really wish there was more competition in this space.

    All that said, as much as I love my trackball, I still keep around an old Logitech mx518 for Dota 2 and the occasional other game.

    5 votes
  8. Comment on Sunsetting cursed terminal emulation in ~comp

    Crespyl
    Link
    I've been watching Arcan development for a few years now, and every time a new post comes out it feels like I'm reading about technology from a parallel universe. I really hope it catches on...

    I've been watching Arcan development for a few years now, and every time a new post comes out it feels like I'm reading about technology from a parallel universe.

    I really hope it catches on somehow, but I feel like there needs to be a polished distro with the full Arcan shell/userland to make it easier to show off to people.

    5 votes
  9. Comment on Tildes Book Club discussion - The Ministry for the Future by Kim Stanley Robinson in ~books

    Crespyl
    Link Parent
    Neal Stephenson's Termination Shock is another with some similar themes. It's definitely a Stephenson book, so if you already know how you feel about his work you'll know what to expect. Lots of...

    Neal Stephenson's Termination Shock is another with some similar themes. It's definitely a Stephenson book, so if you already know how you feel about his work you'll know what to expect. Lots of info-dumps, tech-optimism, but unusually for him I thought the ending was actually pretty solid.

    Like MftF, it also features deploying sulfur dioxide into the air, explicitly at "Pinatubo" scale, (though this time by an excentric billionaire) with India playing a significant opposition role. There's also some interesting use of drones and social media as well, among other things.

    I found it a lot easier to get through than MftF (which I haven't finished yet, ~40% so far).

    5 votes
  10. Comment on Pluvia: Lightweight unofficial Steam client for Android in ~games

    Crespyl
    Link
    At first I thought this was just an alternative to the normal Steam phone-app, but no; it's a full client that supports downloading and even playing (some) games. It uses a translation layer to...

    At first I thought this was just an alternative to the normal Steam phone-app, but no; it's a full client that supports downloading and even playing (some) games. It uses a translation layer to let you run games compiled for x86 on your (usually) Arm phone.

    14 votes
  11. Comment on Your favorite game OSTs in ~games

    Crespyl
    (edited )
    Link
    The Dustforce OST is one of my favorites. I liked the game quite a bit, but I spent way more time listening to the soundtrack than I did playing the game. If you're into chiptune/electronic, I...

    The Dustforce OST is one of my favorites. I liked the game quite a bit, but I spent way more time listening to the soundtrack than I did playing the game.

    If you're into chiptune/electronic, I like the VVVVVV OST too.

    Cave Story has a charming soundtrack, but I haven't found any kind of official version on Spotify. It is up on YouTube though.

    Edit: Oh, also, if you're feeling in an intense/aggressive mood, Hotline Miami has a lot of great music. M|O|O|N, Perturbator, and Carpenter Brut were all good finds that I first heard in that game.

    11 votes
  12. Comment on HTML is the most significant computing language ever developed. Underestimate it at your peril. in ~tech

    Crespyl
    Link Parent
    I almost commented pretty much the same thing, but decided that I was too irritated by the tone of the article to feel like I'd be commenting in good faith. The subtitle as used for this thread is...

    I almost commented pretty much the same thing, but decided that I was too irritated by the tone of the article to feel like I'd be commenting in good faith. The subtitle as used for this thread is a fine statement that could've lead to an at least okay article; the actual title less so.

    14 votes
  13. Comment on What hard scifi books could you recommend? in ~books

    Crespyl
    Link Parent
    I so rarely see the Honor Harrington series mentioned! I read the whole thing when I was younger, and loved the way the technology and military doctrine advanced throughout the series. David Weber...

    I so rarely see the Honor Harrington series mentioned! I read the whole thing when I was younger, and loved the way the technology and military doctrine advanced throughout the series.

    David Weber is still one of my favorite authors, though I haven't kept up as much with him lately. I also really enjoyed his collaboration with (IIRC) Ringo on the March Upcountry trilogy.

    5 votes
  14. Comment on You make friends *HERE*?! in ~tildes

    Crespyl
    Link Parent
    The "tildeverse" is a collection of public unixy servers that are a kind of old-school social media/programming environment. See https://tildeverse.org/ The name comes from the unix standard of...

    The "tildeverse" is a collection of public unixy servers that are a kind of old-school social media/programming environment. See https://tildeverse.org/

    The name comes from the unix standard of referring to users with a ~, like ~foo, which you sometimes see in urls for some old-fashioned university sites.

    No relation to this site.

    7 votes
  15. Comment on You make friends *HERE*?! in ~tildes

    Crespyl
    Link Parent
    Some googling suggests that it's appeared a few times in the "tildeverse" networks, but as far as I know this is the first time it's been applied here. I wasn't aware of any previous uses when it...

    Some googling suggests that it's appeared a few times in the "tildeverse" networks, but as far as I know this is the first time it's been applied here. I wasn't aware of any previous uses when it popped into my head, and it was just too perfect not to share.

    7 votes
  16. Comment on You make friends *HERE*?! in ~tildes

    Crespyl
    Link Parent
    "Tildebeasts"

    The name for a group of people who use Tildes is deliberately unclear, to the point that it's an injoke to use a different name every time.

    "Tildebeasts"

    45 votes
  17. Comment on Astro Bot wins Game of the Year 2024 in ~games

    Crespyl
    Link Parent
    I was confused for a moment, but it turns out Astro's Playroom is a different game from The Playroom, though both are, as you say, focused on showcasing PlayStation features.

    I was confused for a moment, but it turns out Astro's Playroom is a different game from The Playroom, though both are, as you say, focused on showcasing PlayStation features.

    2 votes
  18. Comment on Podcast app recs in ~tech

    Crespyl
    Link
    I'm a big fan of AntennaPod. It's basic, but it does what I want with no hassle, and is open source (available on FDroid, even). It does support syncing across devices, but I think you have to...

    I'm a big fan of AntennaPod.

    It's basic, but it does what I want with no hassle, and is open source (available on FDroid, even). It does support syncing across devices, but I think you have to self-host that if it's something you need.

    Supports chapters, playback speed control, OPML import/export, etc.

    Edit: unfortunately it looks like there's not a version for iOS, so it's probably not a great fit for your use case, but maybe it'll be useful for others.

    12 votes
  19. Comment on Day 6: Guard Gallivant in ~comp.advent_of_code

    Crespyl
    Link
    Oof, I was slow on this one. Part 1 wasn't too bad with my usual "simulation" approach, but Part 2 took three minutes to run. Definitely room for optimization. Part 1 def compute_p1(input) map =...

    Oof, I was slow on this one. Part 1 wasn't too bad with my usual "simulation" approach, but Part 2 took three minutes to run. Definitely room for optimization.

    Part 1
    def compute_p1(input)
      map = Grid.new(input)
      guard_pos = map.coords_where { |ch| ch == "^" }.first
      map.set(guard_pos[0], guard_pos[1], ".")
      direction = :up
      visited = Set.new([guard_pos])
      while map.in_bounds?(guard_pos[0],guard_pos[1])
        guard_pos, direction = step(map, guard_pos, direction)
        visited.add(guard_pos) if map.in_bounds?(guard_pos[0], guard_pos[1])
      end
      return visited.count
    end
    
    def step(grid, guard_pos, direction)
      facing_coords = case direction
               when :up
                 [guard_pos[0],guard_pos[1]-1]
               when :down
                 [guard_pos[0],guard_pos[1]+1]
               when :left
                 [guard_pos[0]-1,guard_pos[1]]
               when :right
                 [guard_pos[0]+1,guard_pos[1]]
               end
      facing = grid.get(facing_coords[0], facing_coords[1])
      case facing
      when ".", nil
        guard_pos = facing_coords
      when "#", "O"
        direction = case direction
                    when :up
                      :right
                    when :right
                      :down
                    when :down
                      :left
                    when :left
                      :up
                    end
      end
      return [guard_pos, direction]
    end
    
    Part 2
    def loops?(map, start_pos)
      guard_pos = start_pos
      direction = :up
      visited = Set.new([guard_pos])
      while map.in_bounds?(guard_pos[0],guard_pos[1])
        guard_pos, direction = step(map, guard_pos, direction)
        if visited.include?([guard_pos, direction])
          return true
        end
        visited.add([guard_pos, direction])
      end
      return false
    end
    
    def compute_p2(input)
      map = Grid.new(input)
      start_pos = map.coords_where { |ch| ch == "^" }.first
      map.set(start_pos[0], start_pos[1], ".")
      count = 0
      map.each_index do |x, y|
        next if map.get(x,y) == "#"
        map.set(x,y, "O")
        count += 1 if loops?(map, start_pos)
        map.set(x,y, ".")
      end
      return count
    end
    
    2 votes
  20. Comment on Day 5: Print Queue in ~comp.advent_of_code

    Crespyl
    Link
    My code is pretty slow, it's probably possible to speed things up with a hash table of rules instead of just using a big list, but I was in a lazy mood. Part 1 def compute_p1(input) rules, updates...

    My code is pretty slow, it's probably possible to speed things up with a hash table of rules instead of just using a big list, but I was in a lazy mood.

    Part 1
    def compute_p1(input)
      rules, updates = input.split("\n\n")
      rules = rules.lines.map { |line|
        line.split("|").map(&:to_i)
      }.sort
      updates = updates.lines.map { |line|
        line.split(",").map(&:to_i)
      }
      correct_updates = updates.filter { |update| check_update(rules, update) }
      return correct_updates.map { |update| update[update.length/2] }.sum
    end
    
    def check_update(rules, update)
      update.each_with_index do |page, idx|
        # for each page, verify that all rules put the following pages after, and
        # the preceeding pages before
        before = update[0...idx]
        before.each do |before_page|
          if is_rule?(rules, before_page, page)
            next
          elsif is_rule?(rules, page, before_page)
            return false
          end
        end
    
        after = update[(idx+1)...]
        after.each do |after_page|
          if is_rule?(rules, page, after_page)
            next
          elsif is_rule?(rules, after_page, page)
            return false
          end
        end
      end
      return true
    end
    
    def is_rule?(rules, before, after)
      rules.index([before, after])
    end
    
    Part 2
    def compute_p2(input)
      rules, updates = input.split("\n\n")
      rules = rules.lines.map { |line|
        line.split("|").map(&:to_i)
      }.sort
      updates = updates.lines.map { |line|
        line.split(",").map(&:to_i)
      }
      incorrect_updates = updates.filter { |update| ! check_update(rules, update) }
      return incorrect_updates.map { |update| fix_update(rules, update) }.map { |update| update[update.length/2] }.sum
    end
    
    def fix_update(rules, update)
      return update.sort { |a, b|
        if is_rule?(rules, a, b)
          -1
        elsif is_rule?(rules, b, a)
          1
        else
          0
        end
      }
    end
    
    1 vote