jonah's recent activity

  1. Comment on Are you tech-savvy enough? in ~tech

    jonah
    Link Parent
    Yeah I've been there before. It can certainly be stressful. Over the last six or so years I've accumulated enough hardware and done enough configuration to never really be that down a creek...

    Yeah I've been there before. It can certainly be stressful. Over the last six or so years I've accumulated enough hardware and done enough configuration to never really be that down a creek anymore. I understand that's a privilege!

    2 votes
  2. Comment on Are you tech-savvy enough? in ~tech

    jonah
    Link
    I get this perspective, but for me, this is part of the fun. Funny, ever since I started using Arch from scratch this problem went away entirely for me. I don't know if it was something about...

    I used to be a hardcore Linux guy until I realized I was spending more time perfecting things than using them.

    I get this perspective, but for me, this is part of the fun.

    Updates on Linux were always like Russian Roulette. I would restart and pray to every deity in human history for nothing to break. Mind you I didn’t use Arch, that was my experience on Ubuntu, Fedora and openSUSE.

    Funny, ever since I started using Arch from scratch this problem went away entirely for me. I don't know if it was something about Manjaro, but it used to crash randomly every once and a while. If I was extra lucky, it would crash during a system update. I started to get used to booting into a live USB and chroot-ing into my install so I could fix it. Once I switched to Arch, it's been surprisingly smooth sailing. I'm curious about anyone else's Linux experience that mirrors the article, because in general it hasn't been mine.

    All I’m saying is that not everyone wants to know how a car functions to drive one. We need to get from A to B, but also sometimes from C back to A, and it feels like on Linux or really any open platform, I need to plan ahead for major fuckups by the system that would be my problem to solve.

    I think this is a super fair critique of open platforms but that's also kind of what you're signing up for. I'm a technically minded person. I actually feel genuinely held back by macOS and Windows for most of what I spend my free time doing. I love the velocity that is granted to me by the particular flavor of Linux I've configured. And that's why it works for me.

    I could also just be really lucky and have finally found a setup that I enjoy and doesn't need much tinkering with. After all those years!

    1 vote
  3. Comment on Trapping misbehaving bots in an AI Labyrinth in ~tech

    jonah
    Link Parent
    You would have to go out of your way to find the hidden links in the web page that actually take you to the LLM garbage. Crawlers don’t see web pages like people do, they parse the HTML for hrefs....

    You would have to go out of your way to find the hidden links in the web page that actually take you to the LLM garbage. Crawlers don’t see web pages like people do, they parse the HTML for hrefs. Cloudflare is inserting hidden hrefs for crawlers to find that would probably be impossible for a regular actor to encounter by chance.

    This pre-generated content is seamlessly integrated as hidden links on existing pages via our custom HTML transformation process, without disrupting the original structure or content of the page. Each generated page includes appropriate meta directives to protect SEO by preventing search engine indexing. We also ensured that these links remain invisible to human visitors through carefully implemented attributes and styling.

    7 votes
  4. Comment on What are your goto cocktails? in ~food

    jonah
    Link
    My wife when not pregnant really enjoys an amaretto sour every now and again. She doesn’t like it with the egg, but I do! Because the egg (for me) is mostly for the foam, you can do fine without it.

    My wife when not pregnant really enjoys an amaretto sour every now and again. She doesn’t like it with the egg, but I do! Because the egg (for me) is mostly for the foam, you can do fine without it.

    1 vote
  5. Comment on How hard would it be to learn to code a Discord bot? in ~comp

    jonah
    Link Parent
    This is what I used for the few Discord bots I wrote for me and my friends. OP, if you're interested, this codebase is a few years old, but you can check out this code repository as an example....

    This is what I used for the few Discord bots I wrote for me and my friends. OP, if you're interested, this codebase is a few years old, but you can check out this code repository as an example.

    For context, we were playing a lot of Rocket League as we were in college and some virus was going around at the time so we couldn't be around each other. We wanted a way to all check our "session" stats and I didn't feel like building out a front end, so I threw together a Discord bot. Fair warning, there's probably a lot of not-so-great patterns and practices here, but for getting something started, this may be useful.

    4 votes
  6. Comment on How do you feel about your PTO? in ~life

    jonah
    Link
    US employee, salaried 25 PTO days 5 personal days 10 sick days 16 weeks parental leave (both birthing and non-birthing parents). I think compared to other companies I’ve worked at, the health...

    US employee, salaried

    25 PTO days
    5 personal days
    10 sick days
    16 weeks parental leave (both birthing and non-birthing parents).

    I think compared to other companies I’ve worked at, the health benefits could be better but I really shouldn’t complain. My job only offers high deductible plans for premiums I would expect to pay for… not high deductible plans. We have incredible coverage though, so like I said: I shouldn’t complain.

    Also, they match every dollar I contribute to my 401k (up to 6% of my salary) with $1.67.

    Truly wild benefits for living in the Midwest (in my limited experience).

    1 vote
  7. Comment on What programming/technical projects have you been working on? in ~comp

    jonah
    Link Parent
    I pay for premium so I don’t have to deal with ads anymore (especially on iOS and TVs), but man I miss Sponsor Block. How does that integrate with yt-dlp? Is it native, or do you do something...

    I pay for premium so I don’t have to deal with ads anymore (especially on iOS and TVs), but man I miss Sponsor Block. How does that integrate with yt-dlp? Is it native, or do you do something else? I’m interested in finding ways to integrate something like that with my home video consumption.

  8. Comment on Using Tails when your world doesn't feel safe anymore in ~tech

    jonah
    Link Parent
    I want you to know I just read that whole article and was choking back tears of laughter the entire time. Thanks for sharing

    I want you to know I just read that whole article and was choking back tears of laughter the entire time. Thanks for sharing

    2 votes
  9. Comment on To those who have been trying out Kagi: what do you think of it? in ~tech

    jonah
    Link
    I was not part of the trial give away, but I have purchased Kagi (the unlimited searches one) and am so far very much enjoying it. Up front I will say that my day job and a huge hobby of mine is...

    I was not part of the trial give away, but I have purchased Kagi (the unlimited searches one) and am so far very much enjoying it. Up front I will say that my day job and a huge hobby of mine is software engineering. I search a lot of things a lot of the time, and I would consider myself more of a power user. Nonetheless, I will give my reasonings for enjoyment:

    • In my previous attempts to use DuckDuckGo, I just found that the quality of search results were not that high. I always ended up back with Google. On the other hand, I find Kagi to give me much higher quality results for the types of queries that I'm sending (again, largely related to software). For some searches I find I have to massage the query which is obviously not desirable, but I'm used to doing that for some software questions anyways.
    • I find the highly customizable nature of the search engine to be wonderful for me. Things like bangs are super useful for me, and having custom, work specific bangs is a massive time saver. I have not yet gotten into all of the ways that I could possibly optimize what I'm seeing, but having the option is really incredible.
    • I do subscribe to the idea that if I'm not paying for the product, I am the product. At least for me, simply by paying for the service, I find that it's less likely they're selling my personal data. Maybe not a good argument for others, but it works for me.

    It's possible that I'll come across some issues that will pile up and become deal breakers for me in which case I will stop paying for Kagi and move to something else. But I am strongly motivated to move away from Google at this time, and currently, Kagi is the best private search engine I've used. And I'm in the financial position to pay for my privacy here, so it's not an issue for me personally.

    I do also feel, to close, that I am in the minority of someone who wants to pay for a search engine. I think most people should not pay for Kagi because it simply isn't worth it to most people. For me though, it's really awesome!

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

    jonah
    Link
    At my job I work fairly closely with HSMs and write software to interface with those in a cross-platform manner. Specifically, we use libraries that implement the PKCS #11 standard to generate and...

    At my job I work fairly closely with HSMs and write software to interface with those in a cross-platform manner. Specifically, we use libraries that implement the PKCS #11 standard to generate and manage cryptographic keys on said HSMs. Because I don't have a physical HSM at my disposal, I use software PKCS11 implementation libraries that essentially emulate the behavior of an HSM on my local machine. On my team we use Mozilla's NSS, but another popular software implementation is OpenDNSSEC's SoftHSM.

    I thought it would be a fun challenge over the winter break to start writing my own toy PKCS11 software implementation. I haven't even gotten to the actual cryptography yet (which I plan to implement with Botan). It's been mostly working with sessions and tokens and objects and representing those on the disk as needed. Lots and lots of reading through the specification. It's been really great because it's made me significantly more familiar with the standard which I imagine will be helpful in my day-to-day goings on at work and debugging various parts of the application. I'm looking forward to doing the actual cryptographic operations.

    Once I make more meaningful progress I will un-private the repository so everyone can make fun of my C++ code.

    2 votes
  11. Comment on Amazon One Medical telehealth provider sued for US patient death in ~health

    jonah
    Link Parent
    I had a similar thought initially. If I was coughing up blood and my feet were blue… I would’ve gone to the emergency room. However the onus is still on the healthcare professional for not...

    I had a similar thought initially. If I was coughing up blood and my feet were blue… I would’ve gone to the emergency room.

    However the onus is still on the healthcare professional for not immediately directing this man to do that and instead telling him to purchase an inhaler. I don’t know everything about this guy’s life and I can’t just make assumptions about his mental state or his ability to safely get to an urgent care or a hospital. What I may have done in that situation may not have been feasible for him for any number of reasons.

    7 votes
  12. Comment on Day 9: Disk Fragmenter in ~comp.advent_of_code

    jonah
    Link
    My solution for part 1 basically followed the way AoC walked through the solution so it was suuuuuuper slow but it got me the right answer. I ended up going with a pretty different approach for...

    My solution for part 1 basically followed the way AoC walked through the solution so it was suuuuuuper slow but it got me the right answer. I ended up going with a pretty different approach for part 2 that was significantly faster, and if I feel like it maybe I'll refactor my part 1 solution based on part 2.

    I'm feeling more comfortable with Python. I started using type hints to help me out with this one. I'm sure there's still some Python-y things I'm not doing or doing the "wrong way" but it's a process. Baby steps.

    Part 1 | Part 2

    2 votes
  13. Comment on Day 8: Resonant Collinearity in ~comp.advent_of_code

    jonah
    Link
    The last two days have been annoyingly challenging for me. I only obtained one star in the last two days :( So it was nice to get an easy one today. Part 1 | Part 2 Hopefully I'll have some time...

    The last two days have been annoyingly challenging for me. I only obtained one star in the last two days :(

    So it was nice to get an easy one today.

    Part 1 | Part 2

    Hopefully I'll have some time tonight and tomorrow to catch up on previous days.

    5 votes
  14. Comment on Day 5: Print Queue in ~comp.advent_of_code

    jonah
    Link Parent
    Incredible, I will remember this for next time. Thanks!

    Incredible, I will remember this for next time. Thanks!

    2 votes
  15. Comment on Day 5: Print Queue in ~comp.advent_of_code

    jonah
    Link
    Y'all, I way over engineered my solution and even after cutting back on a lot of it, it's still much longer than some of the other solutions here. I think my brain hurts from a long day at work...

    Y'all, I way over engineered my solution and even after cutting back on a lot of it, it's still much longer than some of the other solutions here. I think my brain hurts from a long day at work and then trying to figure this one out.

    Part 1 | Part 2

    2 votes
  16. Comment on Day 4: Ceres Search in ~comp.advent_of_code

    jonah
    Link
    Today's solution felt gross, but it's probably because I felt like I was hacking this one instead of coming up with a good solution. I still feel like I'm abusing Python instead of letting it work...

    Today's solution felt gross, but it's probably because I felt like I was hacking this one instead of coming up with a good solution. I still feel like I'm abusing Python instead of letting it work for me.

    Part 1 | Part 2

    I got tired of copy/pasting code and I've been publishing my solutions on GitHub anyways so shrug

    2 votes
  17. Comment on Day 2: Red-Nosed Reports in ~comp.advent_of_code

    jonah
    Link Parent
    Wonderful, thank you very much!

    Wonderful, thank you very much!

    1 vote
  18. Comment on Day 2: Red-Nosed Reports in ~comp.advent_of_code

    jonah
    Link
    Now that I'm off work I can post my solutions: Part 1 from common import load_input input = load_input() def get_direction(first, second): return 1 if second - first > 0 else -1 def...

    Now that I'm off work I can post my solutions:

    Part 1
    from common import load_input
    input = load_input()
    
    def get_direction(first, second):
        return 1 if second - first > 0 else -1
    
    def validate_report(levels):
        dir = get_direction(levels[0], levels[1])
        for i in range(0, len(levels) - 1):
            diff = levels[i + 1] - levels[i]
            adiff = abs(diff)
            if adiff > 3 or adiff < 1 or get_direction(levels[i], levels[i + 1]) != dir:
                return False
        return True
    
    score = 0
    reports = input.split("\n")
    for report in reports:
        levels = list(map(lambda x: int(x), report.split(" ")))
        if validate_report(levels):
            score += 1
        else:
            for i in range(0, len(levels)):
                copy = levels.copy()
                copy.pop(i)
                if validate_report(copy):
                    score += 1
                    break
    
    print(score)
    
    Part 2
    from common import load_input
    input = load_input()
    
    def get_direction(first, second):
        return 1 if second - first > 0 else -1
    
    def validate_report(levels):
        dir = get_direction(levels[0], levels[1])
        for i in range(0, len(levels) - 1):
            diff = levels[i + 1] - levels[i]
            adiff = abs(diff)
            if adiff > 3 or adiff < 1 or get_direction(levels[i], levels[i + 1]) != dir:
                return False
        return True
    
    score = 0
    reports = input.split("\n")
    for report in reports:
        levels = list(map(lambda x: int(x), report.split(" ")))
        if validate_report(levels):
            score += 1
        else:
            for i in range(0, len(levels)):
                copy = levels.copy()
                copy.pop(i)
                if validate_report(copy):
                    score += 1
                    break
    
    print(score)
    

    Part 2 took me a while because I was trying to be cute. I gave up and just brute forced it which seemed to work well enough. I'm still trying to get used to Python. For those who know, is there a cleaner way for me to convert my list of strings to a list of ints? I'm still stuck in functional Javascript world and want to use maps everywhere, but maybe there's an easier or more idiomatic way to do it.

    4 votes
  19. Comment on Day 1: Historian Hysteria in ~comp.advent_of_code

    jonah
    Link
    Hey folks, I didn't know how many of us were planning to (try to) keep up with Advent of Code this year. I see last year there ended up being a scheduled topic, but I wanted to just post here and...

    Hey folks, I didn't know how many of us were planning to (try to) keep up with Advent of Code this year. I see last year there ended up being a scheduled topic, but I wanted to just post here and remind anyone who's interested that today is the first day of December, which means it's the first day of Advent of Code! Last year was a lot of fun even when I couldn't keep up. I really enjoyed seeing everyone's solutions and discussions around the puzzles every day. I'm hoping that will continue this year :)

    Happy holidays!

    10 votes