100% also recommend the Sinclair Method. It weirds me out that it's not more widely known and is not being prescribed by doctors.
I had to stop taking naltrexone after ~6 months because it was giving me insomnia / I started noticing an irregular heartbeat during the night (don't think this was naltrexone related though). But the effects persisted for a long time. It was like a complete reset with respect to my response to alcohol.
Unfortunately after a year or two of drinking again without it, I was back to binge drinking again. Very similar pattern to OP.
In the end I made the decision that it's not worth the hassle - had my last few parties with family and friends over Xmas & new year and then quit altogether from Jan 1st this year. Difficult at first but non-alcoholic beers have been amazing to trick my brain into thinking I'm having a drink with everyone else when out and about and, honestly, recently I haven't been missing it at all.
Funnily enough, I came to similar conclusions and have been describing myself and some colleagues as Product Engineers for years now!
Software engineering is just a means to delivering product value.
In interviews I now primarily drill down on the company's business model, target customers and wider organisational structures outside of the engineering team. I have found these have the biggest impact on your ability to deliver product value. Everything within the engineering team (technologies, architecture etc.) is well within your realm of influence but you're going to face a massive uphill battle if the core business model is amiss.
While I can totally imagine that being true, I imagine this is probably more a response to cloud providers wanting to subdivide each physical GPU into virtual/multi-tenant GPUs.
They'll want to be able to provide strong security guarantees to customers who're renting compute on a multi-tenant GPU and are pushing their sensitive data onto it
Adding network addressing to the GPU interconnect is kind of fascinating
Am I right in thinking the GPU-to-GPU communication is just shuttling chunks of data around for sharing inputs/outputs of computations? Or is there some other coordination going on between the GPUs directly with regards to the actual computations each is running? (Or is that still being managed wholly by the CPUs they're attached to?)
Really you should have those tests upfront. After that noone should be scared of changing any part of the codebase. Let alone 'never' changing stuff.
Releasing rewrites / redesigns behind a feature flag, with a couple of strategic if statements is usually good enough. Noone cares that you had to change code outside of your interface for a release or two.