Brendan Dolan-Gavitt (Moyix) writes about security research, dynamic analysis tools like PANDA, fuzzing, and bug injection.
HN links it mainly for the post on -ffast-math in a shared library disabling subnormal numbers across a whole program, as in the gevent and numpy case.
Someone else beat me to it. Will answer anyway.
Had a very similar experience to yours with one important exception. The visitor pattern is relevant for traversing ASTs in single dispatch languages. Most notably, this includes Java and C++.
The alternative concept is multiple dispatch and it is way more anti-fragile.
This is where the next step in college literally was to learn the concept of cargo-culting. The concept of multiple dispatch is considerably more useful than single dispatch.
Many years later the realization hit, that OOP, singletons, DB mocking and monads are the hard parts [1,2]. Then you can even skip multiple dispatch in favor of low latency. C++ wants this but its ecosystem has no idea (as in zero) of how to get there [3,4,5,6] (-Ofast -fno-fast-math). Then the "Patterns" (capital P) melt away.
On a semi-related note, it seems worth pondering whether strict typing requirements and/or a missing garbage collector make macro programming and AST work so hard in non-lisp languages. Think I read somewhere that some people considered Rust macros hard. Sounded like they were harder than they should be, which means that the language designers piled on incidental complexity. Macros are difficult enough as it is. And worth it. Even Python pilfered the "with" syntax.
[1] http://somethingdoneright.net/2015/07/30/when-object-orientation-works-a-rule-of-thumb.html
[2] https://lobste.rs/s/vbivyq/synchronous_core_asynchronous_shell
[3]…
> lpClass most likely is a class name in COM/OLE sense.
I don't think that is true. In the original Windows 3.1 registry, lpClass did not exist. You only had the RegCreateKey() function which had no lpClass parameter, that parameter was added in RegCreateKeyEx() which was only in NT (and later Windows 95 too).
COM/OLE never used lpClass. Out-of-the-box, very few Windows registry keys have lpClass set, and those that do it is mostly some meaningless value like "Shell" or "Setup", which COM/OLE completely ignores. The one place (that I know of) which it is (or was) actually used, is to store the syskey encryption key [0]. I think using lpClass for that is just abusing it for a bit of security-by-obscurity, it is a way to store data in the registry but hide it from most registry tools (which provide no access to lpClass because almost nobody uses it.) Possibly other people are doing the same thing (to store license keys, detect expiration of trial periods, malware hiding stuff, etc.)
[0] http://moyix.blogspot.com/2008/02/syskey-and-sam.html
AFL automates this to a large degree. It doesn't do it with the type of machine control and monitoring you are asking for, but if you can instrument it with AFL, this is a perfect use case for it. It will do the hard work for you.
If you want to control the computer, you have options. Qemu can give you fine grained CPU level logging you want: http://moyix.blogspot.jp/2014/07/breaking-spotify-drm-with-panda.html -- this is an article that walks through logging them instructions. (https://github.com/panda-re/panda)
Finally there are RE frameworks where you can instrument (hook) function calls (Frida being a good cross platform option).
I would try AFL first. But playing with Panda can be really fun too.
(edit: and a colleague just pointed out -- https://github.com/angr, which will also let you work right at the level you want to, I think).
I'm not going to try to debate the merits of Twitter threads vs blog posts, but I will note that I, like many others, have an abandoned blog [1] but manage to post plenty of Twitter threads. The activation energy needed is just way lower on Twitter, and (as an academic) if I need to write something much more serious it'll usually be a paper.
If you want people to blog more and tweet less, you probably have to find a way to make it easier than firing off a tweet thread.
Edit: Also, I have to say – if blogs are such an inherently superior readability experience, why is engagement so much higher for Twitter? Perhaps it's shallow engagement, but it seems like the height of nerd-think to say that a platform actively used by hundreds of millions is "unusable".
[1] https://moyix.blogspot.com/
> even package managers like pip
This reminds me of a blog post [1] I read before. Pertinent quote:
> Unbeknownst to me, even with --dry-run pip will execute arbitrary code found in the package's setup.py. In fact, merely asking pip to download a package can execute arbitrary code (see pip issues 7325 [2] and 1884 [3] for more details)!
Also seen on Twitter [4].
[1] https://moyix.blogspot.com/2022/09/someones-been-messing-with-my-subnormals.html
[2] https://github.com/pypa/pip/issues/7325
[3] https://github.com/pypa/pip/issues/1884
[4] https://twitter.com/moyix/status/1566561433898426368
I would. It's much safer than Python which has a package ecosystem that is known to be critically unsafe. https://pytorch.org/blog/compromised-nightly-dependency/ is just the latest example of security issues it's been having, https://moyix.blogspot.com/2022/09/someones-been-messing-with-my-subnormals.html is general numerical incorrectness which is non-local and cannot be turned off, and that's not even getting to the specific inaccuracies of Numba. I'd switch away from a numerically incorrect security issue today!