I'd be interested to know why Valgrind vs the Clang AddressSanitizer and MemorySaniziter. These normally find more types of errors (like use-after-return) and I find it significantly faster than Valgrind.
I'm interested too. I'm using a Go program that call a cpp library with SWING and I was interested in find out if that library had a memory leak, or maybe the SWING wrap I wrote. But this kind of problem can't be detected via pprof, so I tought, what if Go support Valgrind?? and find out this changes.
I'm not sure if this will work though, will it @bracewel?
Programs running under any Valgrind tool will be executed using a CPU emulator, making it quite a bit slower than, say, running the instrumented binaries as required by sanitizers; it's often an order of magnitude slower, but could be very well be close to two orders of magnitude slower in some cases. This also means that it just can't be attached to any running program, because, well, it's emulating a whole CPU to track everything it can.
(Valgrind using a CPU emulator allows for a lot of interesting things, such as also emulating cache behavior and whatnot; it may be slow and have other drawbacks -- it has to be updated every time the instruction set adds a new instruction for instance -- but it's able to do things that aren't usually possible otherwise precisely because it has a CPU emulator!)
You're right and I was wrong, but in my experience Valgrind has been way faster then the AdressSanitizer. I don't perceive a difference with Valgrind, while ASan makes the program slower around 10x.
The thing I don't like about day rates is where I've seen large consultancies pile in large inexperienced teams propped up by one or two seniors to do the actual job that needs doing.
With pay per day deals sometimes success for the consultancy is how many people they can get on a project, and less experienced people give higher profit margins. Being successful doesn't pay better than running late, and few clients have the knowledge or oversight to not get ripped off.
I know reality is far murkier than that and fixed price comes with different problems.
Looks like you can get a bit of a Node stack trace on mobile
```
Error: Choose failed Missing field "user_id" in context for bucket_val = user_idError: Choose failed Missing field "user_id" in context for bucket_val = user_id
at Decider.choose
(/src/packages/applications/monolith/bin/index.cjs:19115:41)
at isCustomFeedsDisabled
(/src/packages/applications/monolith/bin/index.cjs:266576:32)
at Object.shouldInclude
(/src/packages/applications/monolith/bin/index.cjs:266612:66)
at Resolver.shouldIncludeChild (/src/packages/applications/monolith/bin/index.cjs:175841:26)
at /src/packages/applications/monolith/bin/index.cjs:175901:40
at Array.reduce (<anonymous>)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175899:22)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
Yea, that’s what I’m getting Error: Choose failed Missing field "user_id" in context for bucket_val = user_idError: Choose failed Missing field "user_id" in context for bucket_val = user_id
at Decider.choose (/src/packages/applications/monolith/bin/index.cjs:19115:41)
at isCustomFeedsDisabled (/src/packages/applications/monolith/bin/index.cjs:266576:32)
at Object.shouldInclude (/src/packages/applications/monolith/bin/index.cjs:266612:66)
at Resolver.shouldIncludeChild (/src/packages/applications/monolith/bin/index.cjs:175841:26)
at /src/packages/applications/monolith/bin/index.cjs:175901:40
at Array.reduce (<anonymous>)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175899:22)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
Looks like you can get a bit of a Node stack trace on mobile
```
Error: Choose failed Missing field "user_id" in context for bucket_val = user_idError: Choose failed Missing field "user_id" in context for bucket_val = user_id
at Decider.choose
(/src/packages/applications/monolith/bin/index.cjs:19115:41)
at isCustomFeedsDisabled
(/src/packages/applications/monolith/bin/index.cjs:266576:32)
at Object.shouldInclude
(/src/packages/applications/monolith/bin/index.cjs:266612:66)
at Resolver.shouldIncludeChild (/src/packages/applications/monolith/bin/index.cjs:175841:26)
at /src/packages/applications/monolith/bin/index.cjs:175901:40
at Array.reduce (<anonymous>)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175899:22)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
at Resolver.iterate (/src/packages/applications/monolith/bin/index.cjs:175938:55)
I've had to do a lot of scraping recently and something that really helps is https://pypi.org/project/requests-cache/ . It's a drop in replacement for the requests library but it caches all the responses to a sqlite database.
Really helps if you need to tweak your script and you're being rated limited by the sites you're scraping.
To be honest, I'm pretty disappointed that this thread doesn't have some attempt at a root cause now that two major managed providers are having extended outtages linked to upgrades.
To think, I once was so in love with it. This kind of crap, and imagining the live-site chaos makes me so glad to have noped-out when I did. With my modest lifestyle, I probably passed on life changing money but I also have 1/10th the stress and anxiety I used to.
My cluster was down this morning around 11 UTC. Not sure when it started working again but I'm back in business. Some comms from DO that there was an active issue and they were investigating would have saved a lot of time trying to debug.
I've had a good experience doing a couple of bug fix bounties for urllib3 https://github.com/urllib3/urllib3/issues . I'd be interested in how the maintainers how found running the bug bounty and if it's given them more useful fixes or if it just adds more noise to deal with
Great write up on something I depend on a lot but don't understand well.
This also answers something I've always wondered about which is how Twisted and Tornado fit into the Python web framework landscape and whether I should use them. Tornado always seemed popular but slow and less intuitive than Flask/Django. And then Twisted was a far lower level library but people were still building APIs on it.
Where does Eventlet fit into the picture? Is it a similar box of magic monkey patches like GEvent?
I'd be interested to know why Valgrind vs the Clang AddressSanitizer and MemorySaniziter. These normally find more types of errors (like use-after-return) and I find it significantly faster than Valgrind.