The term "visible life" refers to multicellular from before people knew there was life in the proterozoic.
After filtration, all DNA should present in the filter, so we cut the paper up with scissors and put the pieces into an Eppendorf: Video 1. "Cutting vacuum pump filter and placing it in Eppendorf".
Now that we had the DNA in Eppendorfs, we were ready to continue the purification in a simpler and more standardized lab pipeline fashion.
First we added some small specialized beads and chemicals to the water and shook them Eppendorfs hard in a Scientific Industries Inc. Vortex-Genie 2 machine to break the cell and free the DNA.
Once that was done, we added several reagents which split the solution into two phases: one containing the DNA and the other not. We would then pipette the phase with the DNA out to the next Eppendorf, and continue the process.
In one step for example, the DNA was present as a white precipitate at the bottom of the tube, and we threw away the supernatant liquid: Figure 1. "White precipitate formed with Qiagen DNeasy PowerWater Kit".
At various stages, centrifuging was also necessary. Much like the previous vacuum pump step, this adds extra gravity to speed up the separation of phases with different molecular masses.
In our case, we used a VWR Micro Star 17 microcentrifuge for those steps:
Then, when we had finally finished all the purification steps, we measured the quantity of DNA with a Biochrom SimpliNano spectrophotometer to check that the purification went well:
And because the readings were good, we put it in our -20 C fridge to preserve it until the second day of the workshop and called it a day:
This is mostly stuff from before 2016 when Ciro was anxious to document his contributions to get a job.
Most of the projects here are also minor contributions, or Ciro later noticed that the projects were not useful enough to work on and that he was actually wasting his time.
Tribute to computer security researcher Len Sassaman, who killed himself on 2011-07-03, starting with an ASCII art portrait followed by text.
Because it comes so early in the blockchain, and because it is the first ASCII art on the blochain as far as we can see, and because is so well done, this is by far the most visible ASCII art of the Bitcoin blockchain.
Present at tx 930a2114cdaa86e1fac46d15c74e81c09eee1d4150ff9d48e76cb0697d8e1d72. It does not show well on Bitcoin Inscription Indexer however with rationale described at: github.com/cirosantilli/bitcoin-inscription-indexer/tree/3f53e152ec9bb0d070dbcb8f9249d92f89effa70#smart-newline-joining
But it can be seen at on bitcoinStrings.com at: bitcoinstrings.com/blk00003.txt.
Transaction: www.blockchain.com/btc/tx/930a2114cdaa86e1fac46d15c74e81c09eee1d4150ff9d48e76cb0697d8e1d72 from 2011-07-30, a few weeks after the suicide.
Discussion: bitcoin.stackexchange.com/questions/3370/in-which-block-was-len-sassaman-memorialised/101276#101276
Created by famous computer security researcher Dan Kaminsky and Travis Goodspeed, presumably this other security researcher, evidence:
- signature on the tribute
- the art is highlighted at Video 1. "Black OPS of TCP/IP by Dan Kaminsky (2011)", which happened very few days after the art was uploaded to the blockchain, thus making it exceedingly unlikely that someone else could have done it
"Bernanke" is a reference to Ben Bernanke, who was one of the economists in power in the US Government during the financial crisis of 2007-2008, and much criticized by some, as shown for example in the documentary Inside Job (2010). As hinted in the Genesis block message, the United States Government bailed out many big banks that were going to go bankrupt with taxpayer money, even though it was precisly those banks that had started the crisis through their reckless investment, thus violating principles of the free market and business accountability. This was one of the motivations for the creation Bitcoin, which could reduce government power over economic policy.
It is worth mentioning that there do exist some slightly earlier "artistic" inscriptions in the form Punycode inscription in the Namecoin blockchain, but as far as we've seen, the are all trivial compared to
BitLen
in terms of artistic value/size.---BEGIN TRIBUTE---
#./BitLen
:::::::::::::::::::
:::::::.::.::.:.:::
:.: :.' ' ' ' ' : :
:.:'' ,,xiW,"4x, ''
: ,dWWWXXXXi,4WX,
' dWWWXXX7" `X,
lWWWXX7 __ _ X
:WWWXX7 ,xXX7' "^^X
lWWWX7, _.+,, _.+.,
:WWW7,. `^"-" ,^-'
WW",X: X,
"7^^Xl. _(_x7'
l ( :X: __ _
`. " XX ,xxWWWWX7
)X- "" 4X" .___.
,W X :Xi _,,_
WW X 4XiyXWWXd
"" ,, 4XWWWWXX
, R7X, "^447^
R, "4RXk, _, ,
TWk "4RXXi, X',x
lTWk, "4RRR7' 4 XH
:lWWWk, ^" `4
::TTXWWi,_ Xll :..
=-=-=-=-=-=-=-=-=-=
LEN "rabbi" SASSAMA
1980-2011
Len was our friend.
A brilliant mind,
a kind soul, and
a devious schemer;
husband to Meredith
brother to Calvin,
son to Jim and
Dana Hartshorn,
coauthor and
cofounder and
Shmoo and so much
more. We dedicate
this silly hack to
Len, who would have
found it absolutely
hilarious.
--Dan Kaminsky,
Travis Goodspeed
P.S. My apologies,
BitCoin people. He
also would have
LOL'd at BitCoin's
new dependency upon
ASCII BERNANKE
:'::.:::::.:::.::.:
: :.: ' ' ' ' : :':
:.: _.__ '.:
: _,^" "^x, :
' x7' `4,
XX7 4XX
XX XX
Xl ,xxx, ,xxx,XX
( ' _,+o, | ,o+,"
4 "-^' X "^-'" 7
l, ( )) ,X
:Xx,_ ,xXXXxx,_,XX
4XXiX'-___-`XXXX'
4XXi,_ _iXX7'
, `4XXXXXXXXX^ _,
Xx, ""^^^XX7,xX
W,"4WWx,_ _,XxWWX7'
Xwi, "4WW7""4WW7',W
TXXWw, ^7 Xk 47 ,WH
:TXXXWw,_ "), ,wWT:
::TTXXWWW lXl WWT:
----END TRIBUTE----
From the JSON transaction we understand the encoding format:So it is really encoded one line at a time in the
"out":[
{
"spent":false,
"tx_index":0,
"type":0,
"addr":"1CqKQ2EqUscMkeYRFMmgepNGtfKynXzKW7",
"value":1000000,
"n":0,
"script":"76a91481ccb4ee682bc1da3bda70176b7ccc616a6ba9da88ac"
},
{
"spent":false,
"tx_index":0,
"type":0,
"addr":"157sXa7duStAvq3dPLWe7J449sgh47eHzw",
"value":1000000,
"n":1,
"script":"76a9142d2d2d424547494e20545249425554452d2d2d2088ac"
},
...
{
"spent":false,
"tx_index":0,
"type":0,
"addr":"157sXYpjvAyEJ6TdVFaVzmoETAQnHB6FGU",
"value":1000000,
"n":77,
"script":"76a9142d2d2d2d454e4420545249425554452d2d2d2d2088ac"
}
script
of the transaction outputs.This section is about ordinals that are interesting primarily due to technical reasons linked to edge cases of the protocol.
Interesting MIME types:
- ordinals.com/inscription/dad86d722156b8c384c1f3243e40aa7a0f6f5be496bc24e19485831584f9803fi0: mime type is an UTF-8 orange emoji "🟠"
- ordinals.com/inscription/bc7b86245159cdf8bc63489687909f766a0a0e08279d23fb077cdd60ab1e9f22i0: mime type is an XSS attempt:
<script>alert('xss in content type')</script> tx=bc7b86245159cdf8bc63489687909f766a0a0e08279d23fb077cdd60ab1e9f22
- ordinals.com/inscription/bc7b86245159cdf8bc63489687909f766a0a0e08279d23fb077cdd60ab1e9f22i0: mime type is "FuckYou"
- ordinals.com/inscription/00b0ece72217ce49b637b3f9bf5335bc245e588568aa0676581b40c1bedc521di0: the mime is a long JSON. However, it does appear to be a valid feature as it rendered specially on ordinals.com.
Different
ord
markers:- 71e85885522047240a9e70542145dbf2385e1bd468e6ac6002aa755422ea10f5 uses
takingnames
. Decode with:gives the PNG of the wireframe draing of a washing machine with transparent background.bitcoin-core.cli decodescript "$(bitcoin-core.cli getrawtransaction 71e85885522047240a9e70542145dbf2385e1bd468e6ac6002aa755422ea10f5 true | jq -r '.vin[0].txinwitness[1]')" | jq -r .asm | sed 's/.* 0 //;s/ OP_ENDIF//;s/ //g' | xxd -r -p > 71e85885522047240a9e70542145dbf2385e1bd468e6ac6002aa755422ea10f5.png
Molecules that are the same if you just look at "what atom is linked to what atom", they are only different if you consider the relative spacial positions of atoms.
The literal Chinese name says it all: "Fake Mountain". The stones evoke the feeling of the beautiful rock mountains of China.
The term "奇石假山" (qi2 shi2 jia3 shan1, lit. "weird shaped stone fake mountain") is also used, almost as a synonym by many people, since the stones are often chose in interesting shapes. Choosing the right stone is basically an art form in itself.
The stones used are generally limestone, which as a sedimentary rock is weaker, and more likely to be eroded into interesting shapes.
Includes its own copy of sqlite3, you don't use the system one, which is good to ensure compatibility. The version is shown at: github.com/mapbox/node-sqlite3/blob/918052b538b0effe6c4a44c74a16b2749c08a0d2/deps/common-sqlite.gypi#L3 SQLite source is tracked compressed in-tree: github.com/mapbox/node-sqlite3/blob/918052b538b0effe6c4a44c74a16b2749c08a0d2/deps/sqlite-autoconf-3360000.tar.gz horrendous. This explains why it takes forever to clone that repository. People who don't believe in git submodules, there's even an official Git mirror at: github.com/sqlite/sqlite
It appears to spawn its own threads via its C extension (since JavaScript is single threaded and and SQLite is not server-based), which allows for parallel queries using multiple threads: github.com/mapbox/node-sqlite3/blob/v5.0.2/src/threading.h
Hello world example: nodejs/node-sqlite3/index.js.
As of 2021, this had slumped back a bit, as maintainers got tired. Unmerged pull requests started piling more, and
better-sqlite3
Node.js package started pulling ahead a little.- github.com/mapbox/node-sqlite3/issues/1381
FATAL ERROR: Error::ThrowAsJavaScriptException napi_throw
with Node.jsworker_threads
vsbetter-sqlite3
Node.js package github.com/JoshuaWise/better-sqlite3/issues/237
The first thing we did was to filter the water samples with a membrane filter that is so fine that not even bacteria can pass through, but water can.
Therefore, after filtration, we would have all particles such as bacteria and larger dirt pieces in the filter.
From the 1 liter in each bottle, we only used 400 ml because previous experiments showed that filtering the remaining 600 ml is very time consuming because the membrane filter gets clogged up.
Therefore, the filtration step allows us to reduce those 400 ml volumes to more manageable Eppendorf tube volumes: Figure 1. "An Eppendorf tube". Reagents are expensive, and lab bench centrifuges are small!
Since the filter is so fine, filtering by gravity alone would take forever, and so we used a vacuum pump to speed thing up!
Year 3 of the physics course of the University of Oxford Updated 2025-01-10 +Created 1970-01-01
5660d06bd69326c18ec63127b37fb3b32ea763c3846b3334c51beb6a800c57d3 Updated 2025-01-10 +Created 1970-01-01
In this malformed Coinbase transaction, the mining pool "nicehash" produced a provably unspendable Bitcoin output script due to a bug, and therefore lost most of the entire block reward of 6.25 BTC then worth about $ 123,000.
The output is unspendable because it ends in a constant 0, the disassembly of the first and main output is this series of constants:and for the second smaller one:the third one being an OP_RETURN message.
0 017fed86bba5f31f955f8b316c7fb9bd45cb6cbc 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
aa21a9ed62ec16bf1a388c7884e9778ddb0e26c0bf982dada47aaa5952347c0993da 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
This event received some coverage:
bitfossil.com/78f0e6de0ce007f4dd4a09085e649d7e354f70bc7da06d697b167f353f115b8e/ in block 273536 (2013-12-07).
This is one of the earliest AtomSea & EMBII uploads.
Ciro's ideal city to live in contains the following in order of decreasing importance:
- high tech
- beach and warm weather, influenced by Ciro's love for the City of Santos where he once lived
- enough recent Chinese immigrants to sustain Chinese cuisine
Could California be Ciro's Mecca?
The highly underdocumented built-in module, that supports SQL spatial index and a lot more.
Quite horrendous as it only seems to work on geometric types and not existing columns. But why.
And it uses custom operatores, where standard operators would have been just fine for points...
Minimal runnable example with points:The index creation unfortunately took 100s, so it will not scale to 1B points very well whic his a shame.
set -x
time psql -c 'drop table if exists t'
time psql -c 'create table t(p point)'
time psql -c "insert into t select (point ('(' || generate_series || ',' || generate_series || ')')) from generate_series(1, 10000000)"
time psql -c 'create index on t using gist(p)'
time psql -c "select count(*) from t where p <@ box '(1000000,1000000),(9000000,2000000)'"
77822fd6663c665104119cb7635352756dfc50da76a92d417ec1a12c518fad69 Updated 2025-01-10 +Created 1970-01-01
Ouptut 0 disassembles as:The large constant contains an ASCII Bitcoin Core patch entitled
OP_IF OP_INVALIDOPCODE 4effffffff <large constant> OP_ENDIF
Remove (SINGLE|DOUBLE)BYTE
so presumably this is a proof of concept:From a3a61fef43309b9fb23225df7910b03afc5465b9 Mon Sep 17 00:00:00 2001
From: Satoshi Nakamoto <satoshin@gmx.com>
Date: Mon, 12 Aug 2013 02:28:02 -0200
Subject: [PATCH] Remove (SINGLE|DOUBLE)BYTE
I removed this from Bitcoin in f1e1fb4bdef878c8fc1564fa418d44e7541a7e83
in Sept 7 2010, almost three years ago. Be warned that I have not
actually tested this patch.
---
backends/bitcoind/deserialize.py | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/backends/bitcoind/deserialize.py b/backends/bitcoind/deserialize.py
index 6620583..89b9b1b 100644
--- a/backends/bitcoind/deserialize.py
+++ b/backends/bitcoind/deserialize.py
@@ -280,10 +280,8 @@ opcodes = Enumeration("Opcodes", [
"OP_WITHIN", "OP_RIPEMD160", "OP_SHA1", "OP_SHA256", "OP_HASH160",
"OP_HASH256", "OP_CODESEPARATOR", "OP_CHECKSIG", "OP_CHECKSIGVERIFY", "OP_CHECKMULTISIG",
"OP_CHECKMULTISIGVERIFY",
- ("OP_SINGLEBYTE_END", 0xF0),
- ("OP_DOUBLEBYTE_BEGIN", 0xF000),
"OP_PUBKEY", "OP_PUBKEYHASH",
- ("OP_INVALIDOPCODE", 0xFFFF),
+ ("OP_INVALIDOPCODE", 0xFF),
])
@@ -293,10 +291,6 @@ def script_GetOp(bytes):
vch = None
opcode = ord(bytes[i])
i += 1
- if opcode >= opcodes.OP_SINGLEBYTE_END and i < len(bytes):
- opcode <<= 8
- opcode |= ord(bytes[i])
- i += 1
if opcode <= opcodes.OP_PUSHDATA4:
nSize = opcode
--
1.7.9.4
bitcointalk.org/index.php?topic=5231222.0 discusses what happens if there is an invalid opcode in a branch that is not taken.
Unlisted articles are being shown, click here to show only listed articles.