HackerTrans
TopNewTrendsCommentsPastAskShowJobs

hoytech

no profile record

comments

hoytech
·letztes Jahr·discuss
Flamenco can be a very challenging and technical style, but it doesn't have to be. I don't know your background, but if you just want to have fun and sound good quickly, try this.

Get a nylon string guitar. It doesn't have to be a flamenco guitar per-se, any classical will do. But steel string acoustic guitars will absolutely not work for this style. The sound is wrong and the strings are too close together.

Learn the Andalusian cadence. It's the chords A minor, G, F, and E, in that order. This is the characteristic "Spanish" sound recognisable by everyone, and is in fact a fundamental building block of Flamenco style (por arriba). The chords can be played barred or open, your choice. You can instead start in D minor (por medio) if you like.

Practice a basic rumba strumming pattern until it is drilled into your muscle memory. The easiest is to just strum, counting from 1 to 8, and on beat 5 slap the strings instead of strumming.

Do not use a pick. There are several right-hand techniques you'll want to learn. The most important is probably rasgueado ("gypsy strumming"). You essentially flick your fingers so that each one strums the strings in rapid succession. It's challenging at first, but try to make the timing in between fingers roughly even. Next is tremolo: rapidly plucking the same string with alternating fingers, while playing bass notes with your thumb. This is a common classical guitar technique too, but Flamenco takes it further, often using 4 plucks instead of 3. Actually flamenco technique breaks many classical guitar "rules".

Once you want to start mastering more specific styles ("palos"), just get some tabs and work through them. You'll probably want to start with soleares, alegrias, farruca, fandango. Unlike classical guitar, nobody will look down at you for using tabs (or learning by ear) instead of notation. Paco de Lucia famously does not read notation.

Hope this helps. Have fun!
hoytech
·vor 2 Jahren·discuss
The Measure of All Things: The Seven-Year Odyssey and Hidden Error That Transformed the World by Ken Alder

These guys went through quite some hardships to define the length of a meter. Good read!
hoytech
·vor 2 Jahren·discuss
What I like about nostr is the experimentation with different clients, and the fact that your identity is portable to any of them. It's just a really cool model.

I'm working on a nostr-based discussion site heavily inspired by HN/reddit: https://oddbean.com/

No login required, and you can switch to a different client any time you want. We try to keep the bitcoin/politics stuff to a minimum on the homepage. There's a lot of that on nostr, but also a lot of kind and thoughtful discussion about diverse subjects.
hoytech
·vor 2 Jahren·discuss
I'm working on a nostr-based discussion site that should be (very) familiar to Hacker News users:

https://oddbean.com/
hoytech
·vor 2 Jahren·discuss
> The plant’s introduction to the New World came with European settlers, who brought hops to North America in the 17th century.

This is not true. Hops were widespread in North America before European contact. There are broadly speaking 4 major land races of hops: European, Asian, and 2 from North America.

The history of hops breeding is pretty fascinating (at least to a nerd like me). Almost all of the trendy modern varieties that you would recognise from IPAs and NEIPAs (such as the "C" strains: your Cascades, Citras, etc) are the result of cross breeding a North American variety (probably Cluster) with a European variety (probably Fuggle), and can be traced back to a breeder who imported an "unknown strain from Manitoba" back to England, and bred and categorised hundreds of hybrids. I believe the goal was to breed a strain that was disease resistant but with less of the (now desirable) intense flavours characteristic of the North American strains.

I grow hops in Canada (Cascade, Centennial, Chinook, and Perle varieties). They are a really cool plant: I've never seen anything grow as quickly as they do (Benjamin Franklin once wrote about how impressive it was to watch hops grow), and their smell is really wonderful at harvest time. I dry, vacuum seal, and freeze them, and produce more whole leaf hops than I need for a year of brewing (which would otherwise cost several hundred dollars).
hoytech
·vor 2 Jahren·discuss
While I agree that sheet notation is superior, it actually is fairly common to indicate duration and articulation in tablature, especially classical. See many of the tabs on classtab.org: https://www.classtab.org/tabbing.htm#key

Surprisingly (to me), tablature is apparently older than sheet music. Tabs are also pretty nice when you're dealing with non-standard tunings.

Lastly, even with standard notation, guitar music is often "unnecessarily" annotated with numbers for left hand fingering, roman numerals for barres, "pima" for the right hand, diamonds for harmonics, etc.
hoytech
·vor 2 Jahren·discuss
Reminds me of the "Bob Wehadababyitsaboy" GEICO commercial:

https://www.youtube.com/watch?v=9JxhTnWrKYs
hoytech
·vor 2 Jahren·discuss
Great article! I have some miscellaneous comments, in no particular order.

The digital commitment scheme as described has a subtle vulnerability. Suppose there are two participants, A and B. B decides to wait until A's hash is shared. Once A shares it, B shares that same hash as their commitment. Then, after A reveals their number, B also "reveals" that same number.

Since the described protocol is to XOR these revealed numbers together, the resulting output will be 0 and B will have known that in advance, meaning it was not fair. With N honest participants and 2N (or more) dishonest colluding participants it gets worse. Consider participants A (honest) and B and C (dishonest/colluding). B "cancels out" A's result as described above, and then C's result is XORed in, allowing the dishonest participants to chose whatever arbitrary output bits they like.

There are several solutions, of course. You could specifically check for and disallow duplicated commitments, or use something other than XOR to combine. Note that addition is not a great choice here: since N+N is even, the least-significant bit is certain to be 0. Better would be to sort the numbers and then hash their concatenation.

Another serious problem with commitment schemes in practice is last-revealer bias. After everyone has committed, and everyone has revealed except for the last participant, that last participant knows the final outcome and nobody else does. If the resulting random number is disadvantageous to the last revealer for any reason, they may simply choose to not reveal it. Then what does the protocol do? After a timeout period, use all the values except for the unrevealed one? If so, the last-revealer gets "another chance", and has managed to bias the result in their favour. This also gets worse with colluding participants. After everyone has revealed except the dishonest cartel of N participants, they have 2^N possible outcomes they can choose from, by choosing which combination of their N numbers to reveal.

The only general solution to this is to have some sort of punishment for failure to reveal (slashing your stake, in blockchain lingo).

> A random stream's fairness can also be compromised if it continues to be used beyond the point of a player's decision. For example, if you decide to play a game of Monopoly over the internet then you will probably have to re-seed the RNG on each player's turn.

An interesting solution to this is a "progressive reveal scheme". Each participant generates a random number and hashes it. And then they hash that hash, and keep doing this N times. Then each commits to the Nth hash with the usual commit-reveal scheme. Afterwards, at every turn in the game, each player reveals their previous pre-image, which they're locked in to (assuming a collision-resistant hash function).

> the rejection sampling method described earlier will sometimes require that you "re-roll" a die

The average number of attempts you'll have to make is 1/P, where P is the probability of any one being accepted. The wikipedia article shows this using calculus, but I wrote up a much simpler derivation here: https://metacpan.org/pod/Session::Token#EFFICIENCY-OF-RE-ROL...

> The Fisher-Yates shuffle [...] guarantees equal probability of all possible orderings.

A somewhat counter-intuitive observation is that the number of possible orderings often exceeds the number of possible seeds for your PRNG. For example, even if you're using 256 bits of seed, lists of size 58 or greater cannot possibly have all possible orderings equally probable, simply because 58! > 2^256.

> If you're comfortable with the idea that physical or analog finger dice can simulate a coin flip by holding up either one or two fingers

I found it strange the author feels the need to introduce and describe "finger dice" in such an elementary way. This game is universally known as odds and evens, and has been played continuously at least since the days of ancient Greece: https://en.wikipedia.org/wiki/Odds_and_evens_(hand_game)
hoytech
·vor 2 Jahren·discuss
Easiest way is to Deparse it:

    $ perl -MO=Deparse tp.pl 
    'division'->Illegal('zero'->by('at' / 'tmp' / 'quine' . 'line'->pl(1)));
    tp.pl syntax OK
So I believe this is what causes it (note that "at" and "tmp" and such are "barewords"):

    $ perl -e 'at / tmp'
    Illegal division by zero at -e line 1.
hoytech
·vor 3 Jahren·discuss
Ahhh, I understand now. Yes, this is an interesting observation. Thanks!
hoytech
·vor 3 Jahren·discuss
I linked to the paper because it wasn't clear if OP's goal was to increase the security with the cascaded hashes or not, and also because I personally found this result very surprising and interesting when I first learned about it.

If you have a moment can you please elaborate a little more on your second paragraph? Are you describing applying a similar method inside the compression function of the hash function? Any hash function? Where does the parallelism come in? Thank you!
hoytech
·vor 3 Jahren·discuss
Thanks! Does this attack actually depend on extremely large files in any way? My understanding is that this method can always find fixed-size pre-images for collision attacks, and is unaffected by the pre-image size in a pre-image attack.

That makes sense about newer functions being immune. However, note that both of the cascaded hashes must be immune to prevent this attack (as described in the paper).
hoytech
·vor 3 Jahren·discuss
This is not necessarily as secure as you might expect.

See Joux's "Multicollisions in Iterated Hash Functions. Application to Cascaded Constructions"

https://link.springer.com/content/pdf/10.1007/978-3-540-2862...
hoytech
·vor 3 Jahren·discuss
LMDB works like this. The MDB_env struct keeps pointers to both meta pages:

https://github.com/LMDB/lmdb/blob/30288c72573ceac719627183f1...

Which meta-page used is determined by the transaction ID (even IDs use first, odd IDs second).

This is the earliest description I can find of the "shadow paging" concept: https://dl.acm.org/doi/10.1145/320521.320540

And I believe its first implementation was in IBM's System R.
hoytech
·vor 3 Jahren·discuss
LMDB [0] was derived from this project, as mentioned in its copyright notice section [1].

[0] http://www.lmdb.tech/doc/ [1] https://github.com/LMDB/lmdb/blob/30288c72573ceac719627183f1...