Ultraviolet by Ciro Santilli 34 Updated +Created
Other run variants by Ciro Santilli 34 Updated +Created
Besides time series run variants, conditions can also be selected directly without a time series as in:
python runscripts/manual/runSim.py --variant condition 1 1
which select row indices from reconstruction/ecoli/flat/condition/condition_defs.tsv. The above 1 1 would mean the second line of that file which starts with:
"condition" "nutrients" "genotype perturbations" "doubling time (units.min)" "active TFs"
"basal" "minimal" {} 44.0 []
"no_oxygen" "minimal_minus_oxygen" {} 100.0 []
"with_aa" "minimal_plus_amino_acids" {} 25.0 ["CPLX-125", "MONOMER0-162", "CPLX0-7671", "CPLX0-228", "MONOMER0-155"]
so 1 means no_oxygen.
Snap (package manager) by Ciro Santilli 34 Updated +Created
merlijn.sebrechts.be/blog/2020-08-02-why-one-snap-store/ has some very good comments on how snap is more closed than Flatpak.
Snap's permission system is extremely annoying, notably restricting access to home files. They need a popup that says "permission required by app, accept?" urgently!!!
cryptograffiti.info by Ciro Santilli 34 Updated +Created
twitter.com/cryptograffiti (marked as joined March 2014)
Bitcoin blockchain image indexer and uploader. Uses fake P2PKH address.
At some point it stopped using Bitcoin mainline and moved to Bitcoin Cash instead: www.newsbtc.com/news/bitcoin/cryptograffiti-rejects-bitcoin-core-bch-now-available-payment-method/ and therefore became useless. Existing indexes seem to have been broken as well.
Also, based on the timing of Figure "Erich Erstu", this service may be responsible for a large part of the raw JPEG images present in the blockchain from block 416527 (2016) onwards. This is also suggested by the comments at Figure "Tank Man".
A Quantitative Analysis of the Impact of Arbitrary Blockchain Content on Bitcoin gives the interesting insight that all its transactions seem to return change/fees to one or two given addresses, thus making it very easy to list all their uploads if they were consistent! So all we need are some starting points, which we have mostly due to ASCII mentions of the site on known inscriptions, all of which have a few common spent addresses at the very end:
so we just have to solve get all Bitcoin transactions from and to a given address and we are done. Blockchair shows about 800 entries as of February 2024, between 4f94f97eb156b8563a213bb292314a0bd9c95b39afc521fc5965d050daab2a78 (2014-03-02) and ac5f4ea03597b43a72fb8ab42bd5384629f87f4f4abc534f38b8c15148ccaf9f (2017-10-12): blockchair.com/bitcoin/outputs?s=time(desc)&q=recipient(1MVpQJA7FtcDrwKC6zATkZvZcxqma4JixS)
Other related transactions:
TODO understand what these are:
  • ae92dc4c31943955ad6e3e45a4eb0067f488fdd9aecca65c946460dd2a85488d
  • 3020dbd7c850bf8c19ebacf670a2830fe50999a8b2560a202af21d536760eea4
  • d65384a21cb1c327cc42416a0b1e2a78ad0296cb7a15312bdcd67ef169ecb309
  • a3e3100d2b9a86e310430945c001df97a70626220a9e151208aecbb613f1f152
  • a9c82ebc47fabd1eed7eeea7760d0a3c99288af3c3a17e396ec790fc280698a2
  • 92bfd5c0fb0f24efa6ca568c4475f44e94dfc8d0d4d5da04dfafc6261bf17f45
  • 73c22adb21b93f9220d00d2614a50350824be95b8ea966349e6f35fe5ac5537b
  • 099c0fd06d18953c886121ff143ea0a20d0baf29999f424fa1ac707a81cf4987
  • 3ad6677303fb6f700a4f2f977fe86e5324e0ddb0d3b33a649e513d7e88904e85
  • 31a2ddaf4b146e021246e1f82e28121f5c9c8729620978309004515c7e559910
  • adaae897fd286aefb64a69e88a53e9af17ee98611ea595c3c92d038f3274d723
  • d8bf48e9ad3de62c695ff34a96e340912bd62e0a0282b94da6386b837c31a30d
BusyBox by Ciro Santilli 34 Updated +Created
How to convert async to sync in JavaScript by Ciro Santilli 34 Updated +Created
God, it's impossible! You just have to convert the entire fucking call stack all the way up to async functions. It could mean refactoring hundreds of functions.
To be fair, there is a logic to this, if you put yourself within the crappiness of the JavaScript threading model. And Python is not that much better with its Global Interpreter Lock.
The problem is that async was introduced relatively late, previously we just had to use infinitely deep callback trees, which was worse:
myAsync().then(ret => myAsync2(ret).then(ret2 => myAsync3(re3)))
compared to the new infinitely more readable:
ret = await myAsync()
ret2 = await myAsync2(ret)
ret3 = await myAsync3(ret3)
But now we are in an endless period of transition between both worlds.
It is also worth mentioning that callbacks are still inescapable if you really want to fan out into a non-linear dependency graph, usually with Promise.all:
await Promise.all([
  myAsync(1).then(ret => myAsync2(ret)),
  myAsync(2).then(ret => myAsync2(ret)),
])
And then, after many many hours of this work, you might notice that the new code is way, way way slower than before, because making small functions async has a large performance impact: madelinemiller.dev/blog/javascript-promise-overhead/. Real world case with a 4x slowdown: github.com/ourbigbook/ourbigbook/tree/async-slow.
Anyways, since you Googled here, you might as well learn the standard pattern to convert callbacks functions into async functions using a promise: stackoverflow.com/questions/4708787/get-password-from-input-using-node-js/71868483#71868483
Figure 1.
async function Teletubbies meme
. Source. TODO find original source.
F-Droid by Ciro Santilli 34 Updated +Created
Annapurna Labs by Ciro Santilli 34 Updated +Created
Page contains a good summary of their hardware to date. They seem to still be the centerpiece of silicon development. There are still however people outside of Israel doing it, e.g.: www.linkedin.com/in/laurasharpless/ says as of 2021:
My team develops software for our next-generation Machine Learning accelerators: HAL, firmware, and SoC models.
2021: networking chip reports emerge: www.theverge.com/circuitbreaker/2021/3/30/22358633/amazon-reportedly-custom-network-switch-silicon-aws, presumably contesting with the likes of Cisco?
Intel manual by Ciro Santilli 34 Updated +Created
Although it is impossible to understand without examples in mind, try to get familiar with the manuals as soon as possible.
Specially interesting is Figure 4-4 "Formats of CR3 and Paging-Structure Entries with 32-Bit Paging", which gives the key data structures.
Example: multi-level paging scheme by Ciro Santilli 34 Updated +Created
TLB by Ciro Santilli 34 Updated +Created
The Translation Lookahead Buffer (TLB) is a cache for paging addresses.
Since it is a cache, it shares many of the design issues of the CPU cache, such as associativity level.
This section shall describe a simplified fully associative TLB with 4 single address entries. Note that like other caches, real TLBs are not usually fully associative.
Bibliography by Ciro Santilli 34 Updated +Created
Free:
  • rutgers-pxk-416 chapter "Memory management: lecture notes"
    Good historical review of memory organization techniques used by older OS.
Non-free:
  • bovet05 chapter "Memory addressing"
    Reasonable intro to x86 memory addressing. Missing some good and simple examples.
Voltmeter by Ciro Santilli 34 Updated +Created
Uracil vs thymine by Ciro Santilli 34 Updated +Created
University of California, Davies by Ciro Santilli 34 Updated +Created

Unlisted articles are being shown, click here to show only listed articles.