jonah's recent activity

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. Comment on <deleted topic> in ~tech

    jonah
    Link
    Zendesk wrote a small retrospective with respect to this article: https://support.zendesk.com/hc/en-us/articles/8187090244506-Email-user-verification-bug-bounty-report-retrospective It’s worth...

    Zendesk wrote a small retrospective with respect to this article: https://support.zendesk.com/hc/en-us/articles/8187090244506-Email-user-verification-bug-bounty-report-retrospective

    It’s worth noting in their response that they leave out their original response which effectively ignores the first report. Their justification for not paying the bug bounty is that the bounty hunter did not wait for remediation before talking to third parties, but from the bounty hunter’s article, it looked like Zendesk themselves were not interested in remediation.

    I’m curious about any thoughts here, because I don’t think Zendesk should pay someone who caused them to allegedly lose business, but they also ignored the bug.

    8 votes
  14. Comment on AI is here. What now? in ~tech

    jonah
    Link Parent
    I don’t really disagree with any of this. I think the examples you listed here are far better than a pretty standard tech startup mindset about iterating quickly on a product. I agree with your...

    I don’t really disagree with any of this. I think the examples you listed here are far better than a pretty standard tech startup mindset about iterating quickly on a product. I agree with your characterization of Zuckerberg’s lack of accountability, I just wouldn’t use that quote as evidence of it. I don’t mean to be pedantic, I think it’s an important distinction.

    1 vote
  15. Comment on AI is here. What now? in ~tech

    jonah
    Link Parent
    Is there more context to that Zuckerberg quote? In my personal experience, this saying usually applies to breaking the things you’re building, not all the stuff around you. Another way of putting...

    Is there more context to that Zuckerberg quote? In my personal experience, this saying usually applies to breaking the things you’re building, not all the stuff around you. Another way of putting it would be that it’s worth breaking the product we’re building for a little bit every once in a while if it means we’re developing the product quickly. I don’t think it means if we’re not destroying things around us, we’re not going hard enough.

    It’s also possible that I’ve been interpreting this phrase incorrectly for my entire professional life

    8 votes
  16. Comment on Chevrolet Malibu heads for the junkyard as GM shifts focus to electric vehicles in ~transport

    jonah
    Link Parent
    Also x.com. All the old TLDs probably have no more two letter domain names left, and it's possible that when new TLDs are registered they reserve two letter domains for more established...

    Also x.com. All the old TLDs probably have no more two letter domain names left, and it's possible that when new TLDs are registered they reserve two letter domains for more established businesses. Just a guess, I actually have no idea.

    2 votes
  17. Comment on Chevrolet Malibu heads for the junkyard as GM shifts focus to electric vehicles in ~transport

    jonah
    Link
    Another step in the direction towards having more EV's on the road. As a Malibu driver, I'm a little sad to see them go, but I'm all for increasing production of electric vehicles.

    Another step in the direction towards having more EV's on the road. As a Malibu driver, I'm a little sad to see them go, but I'm all for increasing production of electric vehicles.

    4 votes
  18. Comment on Kansas City Chiefs score game-winning touchdown to beat San Francisco 49ers in overtime in ~sports.american_football

    jonah
    Link
    As a Chiefs fan myself, I always hated that last year’s SB ended on a questionably timed pass interference call. And it gave all the haters an asterisk next to the win like we didn’t ruin the...

    As a Chiefs fan myself, I always hated that last year’s SB ended on a questionably timed pass interference call. And it gave all the haters an asterisk next to the win like we didn’t ruin the Eagles the entire second half of the game.

    So I wanted to say that I’m just so glad that this game was officiated so cleanly so that there’s less room for excuses from the doubters. And also because it’s just nice to see a game officiated well after a season rife with bad calls and no calls.

    There was a moment in the game, I think close to the two minute warning in the final quarter when I had accepted that the Chiefs were going to lose and then to have the COMEBACK IN OT!! The basement exploded with roars and cheers and all that good stuff. What a fun game it turned out to be!

    5 votes