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.
Sorry I went traveling for a week right after asking my question. I've already ordered a nylon string guitar - thank you for your detailed reply, it was very helpful as a reference.
This is a good comment! But I'll add that many classical learners use tab, and I think there's absolutely no shame there. The music is what counts, and I think rarely would someone look down on a learner.
Guitarists love other ppl learning or playing guitar!
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.
> 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).
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.
There are often several strings that could be usedeto play the same note. However getting the right one is important as they are not substitutable. Thus standard notation isn't enough.
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)
That attack is one of the reasons why the one-way hash functions based on the Merkle-Damgaard structure, like SHA-2 and the older hashes, are considered obsolete for hashing extremely large files.
The newer one-way hash structures, like those used by SHA-3 or by BLAKE/BLAKE2/BLAKE3 are immune to this kind of attacks (because they use either a sponge automaton or a structure similar to Merkle-Damgaard but augmented with a counter input for hashing each block, which is equivalent to using distinct hashing functions for all data blocks, instead of iterating the same hashing function, which can be exploited by the Joux attack mentioned by you).
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).
The paper refers to the case where you build a even more secure hash function by concatenating output of multiple presumably secure hash functions. The resulting construction will still be as secure as the strongest component hash function used, which is what you want for the case of long term archival hashes/signatures (the obvious question is exactly what asymetric construction you are going to use to sign the resulting hash which preserves this property).
Of note is that when you look at the multiple parallel executions of an iterated hash function at the level of whatever round structure that it is inside its compression function it becomes quite obvious that the result will not have the security level of 2^(m+n+...) as one would expect from the output length, but somewhere around 2^m+2^n (=2^m if m>n) as there is absolutely no mixing of state between the parallel executions.
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!
As for the second paragraph: it is not an parallelism in the traditional sense, but as an shortcut in description of the design. To rephrase it in concrete terms: if you implement 128b block cipher as an two independent 64b wide SPN networks, you will not get the same security level as in 128b wide SPN network and the reason why is obvious from the SPN network diagram. (Compression function of hash function based on Merkle-Damgard construction is effectively an block cipher with somewhat large key)
In fact, the paper even mentions inverse of this in the context of the sketch of wider RIPEMD, where the sketch recommends some mixing between between the separate streams (particularly, exchanging one word of the state) between rounds, which the authrs view as enough to make their multi-collision attack infeasible.
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!