2,407 karma · joined September 10, 2010
https://github.com/rickhull
Cybersecurity on the tech side, for most firms, is laughable. It indeed follows the herd model, where no one ever got fired for following "best practices", like forced password rotation every two weeks with no password reuse and absurd character requirements.
It takes a firm like Google to innovate with BeyondCorp / ZeroTrust initiatives and innovations. The rest of us are waiting for npm update to finish while CrowdStrike is consuming half the CPU of our MacBook Airs.
What I realized, eventually, is that blocking is a beautiful thing. Embrace the thread of execution going to sleep, as another thread may now execute on the (single core at the time) CPU.
Now you have an organization problem, how to distribute threads across different tasks, some sequential, some parallel, some blocking, some nonblocking. Thread-per-request? Thread-per-connection?
And now a management problem. Spawning threads. Killing threads. Thread pools. Multithreaded logging. Exceptions and error handling.
Totally manageable in mild cases, and big wins in throughput, but scaling limits will present themselves.
I confront many of these tradeoffs in a fun little exercise I call "Miner Mover", implemented in Ruby using many different concurrency primitives here: https://github.com/rickhull/miner_mover
So you download a folder or a zip file (anyone remember PKZIP?) and try to determine what its purpose or "application" is. I mean, there is almost certainly an app in here, right?
So, why have I downloaded this .zip file? Not sure, had an interesting title, and yeah, let's see what the author has to say. First stop: README.txt
As you said, 4 stroke has intake, compression, combustion, and exhaust. That's expansion, compression, expansion, compression. It fires between compression and combustion.
A 2 stroke motor has compression and expansion. It fires between compression and expansion. Intake, exhaust, and combustion happen during the expansion phase.
A rotary motor is traditionally 4 stroke, and I'm not sure a 2 stroke version is feasible. The LiquidPiston rotary appears to be a 4 stroke to me, despite the article text.
Concrete jungle where dreams are smothered
There’s nothing you can do
Because you’re in Newark
The README goes in some depth about kernel events and timestamps and time implementations on 32-bit vs 64-bit systems.
I have a small project to explore the various multitasking paradigms in Ruby, here: https://github.com/rickhull/miner_mover
This is not a real solution. The real world is full of unreliable actors and byzantine generals. Any solution that depends on a perfect environment isn’t one.
"Pulling the strings" is a puppet metaphor. The puppet represents a figurehead who does not make the real decisions. The puppeteer pulls the strings, and it looks like the puppet has agency. Using a puppet and "pulling the strings" is a way to camouflage one's actions and identity.