How to play the guitar by ear, for mathematicians and physicists (2000) [pdf] - <AUTHOR> http://www.foundationwebsite.org/Guitar.pdf <comment><USER3> I have been a software developer for 35 years (started learning in 1985, I've accomplished several pretty successful things in this time), and it's also taken me over three decades to become a good musician (which I've only allowed myself to call my self very, very recently - I play piano and sing, a little bit of guitar and drums too). Programming and music are very different beasts, both very tough, both very worthwhile. I just wanted to post because the documenta above has a lot of great information (on a quick browse) and I'm sure it's filled with good intentions, but it's a very poor way to learn music. If you're a mathematician or physicist or software engineer trying to learn how to play the guitar, be it by ear or in any other way, it's not going to cut it. It's great if you read it and learn the information, but only the last 6 pages or so really talk about actually playing, and they are not going to teach you.

If you want to learn to write and play music, don't delve into the math except as a side project. Learn to play a few simple songs that you like, using 3-4 simple chords (there are a ton of tutorials for that), and then spend 1,000 hours playing around on the vicinity of that musical environment. There is no shortcut, it is not about learning patterns, music is a different language, and learning music is about awakening your musical self.

Learning to accompany yourself while you sing a few songs needs no understanding of the mathematical foundations at all (and they don't really help), it's mostly about learning a few basic patterns (3-4 chord finger positions) and then being good at performing (mostly tied to self-confidence). Learning to play common songs doesn't take much more. Learning to improvise and to write your own songs requires 1,000+ hours of the type of "playing/dancing/exploring" I was mentioning above. You'll learn the theory on the 10% of those 1,000 hours that you are resting and browsing the internet.

<comment><USER4> Chaun C. Chang's _The Fundamentals of Piano Practice_ [0] does a fantastic job of describing the relationship between practice and improvement, and how to make the most of your time.

You'll probably come across advice you've already figured out on your own, but there is a wealth of information for even experienced musicians.

> Learn to play a few simple songs that you like, using 3-4 simple chords > (there are a ton of tutorials for that), and then spend 1,000 hours playing > around on the vicinity of that musical environment.

I would fundamentally disagree. I picked up guitar 12 months ago, and while I couldn't play you a single cover song, I have written over a hundred fleshed out songs. My practice time and creative time were intertwined, and I let my practice sessions inspire my songwriting and vice versa.

It created a clear path of progression for me, and through learning about and writing dozens of different genres I successfully brute-forced my songwriting skills into maturity. I didn't get locked into any particular style as to not limit myself; I intentionally didn't learn 12-bar blues, for example, until about two months ago. I'm not boxed into referring to the Circle of Fifths every time I write a progression.

I still have a long way to go, for sure, but my fundamentals are solid, cohesive, and broad instead of defined by a narrow perspective of playing three-chord songs for 1000 hours. I have written a hundred songs and am preparing to gig, while my friends who have been playing guitar for 10+ years are still struggling to write their first full original song.

[0] [https://fundamentals-of-piano- practice.readthedocs.io/](https://fundamentals-of-piano- practice.readthedocs.io/)

<comment><USER5> I would take your audacious claims with a grain of salt. Unconventional progressions don't equate to creative or good song writing. You could be the next Nick Drake or Erik Satie, and I am all for deliberate focused practice, but you have to crawl before you can walk. Limit yourself to three chords and write a song, you might learn something.

<comment><USER4> Audacious? I never said most of them were good. Most of them were awful. But I followed through till I was finished.

I never made any claims as to my abilities, just my personal accomplishments. I didn't mention unconventional progressions. You need to read my post again, because your criticism is unwarranted.

> Limit yourself to three chords and write a song, you might learn something.

Learn more than three chords and write a song, you just might learn more than the average guitarist. _Fundamentals of Piano Practice_ emphasizes the importance of never getting comfortable, of always pushing yourself during practice. Why settle for mediocrity?

<comment><USER5> > Most of them were awful.

In that case let me rephrase: Limit yourself to three chords and try to write a really good song ;)

<comment><USER4> Now you're assuming they're _all_ bad songs, and you're also making the ridiculous assumption that every song someone writes is supposed to be good. The whole point of practicing songwriting is to get better at it.

Stop being a jerk for a second, stop being aloof, and try to consider that I might actually know what I'm talking about, that I actually might be a decent musician. Your attitude is just toxic and mean.

<comment><USER5> I did not want to push your buttons. Good luck with your songwriting.

<comment><USER4> Such language is an attempt to deflect responsibility from you to me, but I assure you, the problem here is how you approached this conversation.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> On the fourth page he talks a bit about inability to sing a certain note.

My first ever exposure to learning an instrument was a particularly cruel violin teacher - before he would let me pick up the violin he pressed a note on the piano and have everyone sing it. Everyone could do it, except to my shock, me.

We went through this routine for weeks, (while my friends were actually being taught how to play their instruments) every time I sang I knew I was singing the wrong note - the problem wasn't that I couldn't hear the note, it was that I couldn't replicate it with my voice - I also couldn't fathom what the relationship between singing and violin playing was (and still couldn't until I wrote this up where I see now that it is obvious, but hilariously misguided) - but I persisited, fighting back tears of frustration until I eventually got right.

I still can't play violin - but I do have a lifetime hatred of singing.

<comment><USER7> Pro guitar teacher her. TLDR: Pitch skills are incredibly hard to reliably improve.

Inability to vocally reproduce pitch is a reliable filter for limited musical talent, _but_ it should always be used together with other filters because on its own, it produces some very important false positives. Your teacher was being lazy filtering students based on just that filter. He was probably trying to discourage you from continuing to study with him. That's cruel, the opposite of what a good teacher should be, whatever your abilities.

You being able to catch the right frequency, but not being able to reproduce it by voice is very rare, but not unheard of! Anecdotal evidence: I had a friend at music conservatory with perfect pitch hearing, and zero pitch control of his vocal cords. Our professors came to this conclusion in very early screening.

Another interesting to know is that there are incredibly many pro musicians who have less than optimal pitch recognition. I'll tell you even more: most are bad at recognising chords, let alone imagining them. I can tell, because I'm in the top decile of pro musicians on this. And before you think I'm bragging, I'll admit I'm situated much lower when it comes to fine motor skills...

<comment><USER6> Yes - it took me a long time to realise he was cruel and lazy, years later I picked up the saxophone and was always lauded for my intonation.

I can hear the notes (and I also seem to be way more sensitive to key clashes than anyone else I know)

I just can't sing very well.

</comment></comment></comment><comment><USER8> It doesn't work for chords for me, but for playing the melody by ear without any talent whatsoever there's a very simple trick that my uncle (who's a proffesional musician and plays many instruments) taught me in less than 1 hour:

1\. start with any note (don't need to be in the same key as the original song - if you don't have absolute hearing just don't worry about that)

2\. remember the song you're trying to play in your head and consider if the next note sounds higher in your head than the first one or lower

3\. guess how much higher/lower and try to play it quietly - usually 2 or 3 tones is a good guess, if it's not 2 try 3 if it's not 3 try 1, etc. - <USER2> sounds bad after the first note if you hit the wrong one so you will know when you hit the right one, and there's not that many reasonable options, usually you will get it in 2 or 3 tries

4\. when it sounds good you know it's the right note so you hit it hard to have a reference fresh in your memory and go to the next note in your head and repeat the steps

This is all you need to learn to play any melody from hearing it by trying it for 15 minutes or so. Eventually you get very good at guessing the intervals and can play any melody by ear in real time

I still can't play chords by ear (I can kinda cheat by playing chords based on every second note in the melody or so - it isn't dissonant but sound meh).

<comment><USER9> This is when I learned I really am tone deaf. I have an extremely difficult time deciding if something is higher or lower in my head. I can tell something isn't right when I play them but I can't discern how much it's off nor if it's higher or lower if it's really close.

<comment><USER10> I generally only would have trouble if there are multiple notes played simultaneously (I can't figure out which one to focus on), or if they are different instruments (the different timber distracts from the pitch).

This reminds me of this test about whether you can tell if one pitch is higher or lower than another: [http://jakemandell.com/adaptivepitch/](http://jakemandell.com/adaptivepitch/)

Unfortunately it requires Flash. Maybe I should try to duplicate it with webaudio.

<comment><USER9> Well I found this one:

[https://www.nidcd.nih.gov/tunestest/hearing-test- results-0](https://www.nidcd.nih.gov/tunestest/hearing-test-results-0)

> You correctly identified 25 tunes (out of 26) on the Distorted Tunes Test. > Congratulations!

That was easier tho because it was identifying very popular tunes that were off.

</comment></comment></comment></comment><comment><USER11> This is something I struggled with for longer than I should have. For me, the turning point was just diving in and practicing playing along with real songs every day until the patterns became clearer. No matter who uncomfortable and hopeless it felt at first.

I recommend going to HookTheory and working your way through every song you're familiar with in the "beginner" section. These songs tend to stick to the big four chords (I IV V vi) and once you nail them, you're half-way there for most pop and rock. [https://www.hooktheory.com/theorytab/difficulties/beginner](https://www.hooktheory.com/theorytab/difficulties/beginner)

You'll make more progress doing that for an hour a day over a month than you will in five years of theory.

<comment><USER12> Another thing that will help you get good fast is that after learning I-IV-V- VI, learn how to play those chords everywhere they can be played on the neck.

</comment></comment><comment><USER13> > The particular selection of notes used for a song is called the "key." It is > also called a "scale." For a piece written in the key of C, the notes that > are used are A B C D E F G. For a piece written in the key of F, the notes > are F G A Bflat C D E. I will say more about keys later on, and why most > music is based on a scale of just _eight_ notes

I'm not sure if I'm missing something, but why does he repeatedly refer scales having eight notes when (common Western) scales have _seven_ notes, like the examples he gives?

<comment><USER14> It's about playing by ear. Play only the first seven notes of a scale, and you'll likely find that your ear _really_ wants that 8th tone to resolve it.

<comment><USER13> Isn't that simply because of the final half-step in major scale, and as such dependant on the scale/mode played? For example in mixolydian has full step in the end so it should not have such tension towards the octave

</comment></comment></comment><comment><USER15> I accidentally discovered playing by ear. So I play acoustic/electric guitar and electric bass.

It helps if you like to sing and actually have a decent singing voice.

I am a Christian. One of our daily activities is to just pray and sing Christian music (we call this activity worship) every morning after wake up and every night before bed.

One of my friend at church taught me Nashville number system. However he told only one key, G to me since that was the easiest.

I began to just look for worship music that I can play and sing comfortably in G. I found around 3-5 songs and did that daily. After a month, I realized that I did not need to look at the chord book anymore because I memorized it. Then my friend taught me other keys such as C. Then I tried to transcribe the songs that I already know to C and played it and tried to sing it as best as I can. Since those songs weren't comfortable to be sung in C I tried to find 3 other songs, then proceed for another month to just play these.

Then my friend taught me D, and then he mentioned that if I know how to play D then playing E is just moving it up. Then he told me that I already knew A because it is just G moved up.

So I began to play around with various type of songs, slow and fast, and suddenly everything click, because it seems that majority of Christian music are 90% the same. I developed an ear for knowing which chord to play at what key.

It is really not that hard. It is like driving. Hard at first but once you got it you got it. I applied this technique to bass as well. It is mostly just patterns.

I have successfully taught one student this technique. She actually did it faster than me. I acquired CAGED keys by ear in about 6 months, around 1 key per month. she managed to play just in key of E in 2 weeks. Granted, she practiced longer than me daily.

</comment><comment><USER16> I think light gauge strings tune just fine, and non-12-tone music might be interesting (I want to hear it, though, not read about it)

I'm an average guitar player, and I don't teach. If you want to play a song, of course pull up the tab/gpro/songbook. But find video of the original artist playing it, look on youtube for the "guitar track" version (no vocals, drums), and try to see _where_ they play/"voice" their chords and how they dish out upstrokes / downstrokes, these things are very subtle when heard.

If you can find a video of the original guitarist teaching you their own song on their own guitar, almost nothing can beat that.

Do Not look at your hands! (play in the dark if you have to) Play the song on the computer, and just try to follow.

</comment><comment><USER17> I sort of feel like playing or singing by ear is one of those things that you can either just do, or you can't. I remember being 8 years old and standing next to my parents in church, and noticing the choir singing in harmony, I would invent my own harmony line to go with it. It never seemed difficult at all but I don't think I could explain what I was doing. Most skills can be taught but in my experience when it comes to music, you've either got it, or you don't. If you've got it, you know you've got it. It's just _easy_ the same way that walking or talking is easy, but easier, because I could hum on key before I could talk.

<comment><USER18> I don't agree with this - I think that practicing your listening skills will make a huge difference in this area. I've been teaching guitar and music technology for about 20 years (and playing for 35), and it all comes from practice if you haven't got perfect pitch (I don't).

Doing ear-training drills (listening for intervals, starting out with a simple one, such as the difference between an octave and a fifth) and slowly building on this so that you can quickly (and eventually, instantly) tell the difference between any of the diatonic intervals makes a huge difference. I've had kids who started out literally not able to know if a note was 'up' or 'down' from a previous one eventually be able to accurately discern any of the 12 semitone steps in an octave up or down, just by weekly practice using GNU solfege.

Yes, some just 'get it' and don't know what they're doing - particularly with the voice - but most need fine-tuning and practice both in their heads and on their instruments, but after doing it for long enough it's possible to get really, really good at it.

<comment><USER17> It sounds like you're doing really great things for your students, I'm glad that pitch can be taught. It just feels so weird to me, I can't imagine not being able to hear pitch! It would be like not being able to see the difference between yellow and green.

</comment></comment></comment><comment><USER19> For those who want to know the whys of Music Theory, without math: [https://books.google.com.br/books/about/Theory_of_Harmony.ht...](https://books.google.com.br/books/about/Theory_of_Harmony.html?id=5Y5MyjbU87oC&redir_esc=y)

This book has all explanations you need. The best monography in subject

</comment><comment><USER20> I really enjoy the fact that the seemingly simple equation 2^n = 3^p has so much implication for how me make music.

</comment><comment><USER21> Maybe I missed something but he never actually addresses how to play by ear. I opened the PDF and started reading, and eventually found myself jumping past the mathematical harmonic mumbo-jumbo and into the good stuff, and unfortunately I was disappointed. He ended up covering the basics of Music Theory found in a lot of books with no real application to ear training.

1) Learning Material

I can sympathize with the author's plight about not having access to good learning materials or schools. For those who want to pick up guitar and want a bit of extra "why things are the way they are" explanations, I have found books such as "Fretboard Logic" and "The Advancing Guitarist" to be useful. There are plenty more, like Ted Greene's "Chord Chemistry" and whatnot that have insight on ear training. Also, you have software today like Ear Master, Rocksmith and others that can help and are fun as well. YouTube is full of backing tracks that you can use to practice and hear how various notes, phrasings, melodies sound on top of the backing chords.

2) Notes

Personally I have not found using "natural" note names to be that useful; using relative note names like root, second, third is to me much more functional, because the third of any key sounds like a third. The whole "returning to _root_" thing he mentions should be hint enough.

3) Ear Training

His story of his dad being a multi-instrumentalist struck a chord with me (sorry). I have friends and teachers who are like this and I've come to believe that it's less about knowing any of what he is talking about (although it is important) and more about their storytelling ability and translating it over into music. I doubt his dad was a shredder, but his dad's ability to pick up and play an instrument wowed him all the same.

To put another way - most people are lucky if they can passably play one instrument. The question is, how is it that there are people that can pick up an instrument and leave an impression on others? I doubt they have a massive IQ or some arcane knowledge of music theory.

Storytelling and Composition are the same thing. All the high brow shit about Principles of Composition and Counterpoint and whatnot does not matter. Being able to evoke imagery in someone's mind or make them feel a certain way with music is something that the first half of the author's paper cannot begin to rationalize.

I believe it's important to really _hear_ the music you are listening to. It doesn't matter if there are no vocals explicitly telling you how to feel (ie. pop music); it is on you to allow yourself to engage with what you're hearing and to eventually formulate an opinion on how something sounds and how it makes you feel. I've heard music teachers expressing this sentiment, and it's no surprise that it goes over most people's heads. It's not a subject for the dabblers. Composers for film, Classical composers etc excel at this. Learning from them is a masterclass in both ear training and storytelling. They've written plenty of books on this subject.

Take a song you know, and start hearing it on a deeper level. Start transcribing it first by singing/humming/whistling along to it and then with your instrument. Take a chunk of it, and alter it in some way. Slow it down, add vibrato if there isn't already, elongate certain passages.

I can't stress enough listening to music that actually tries to tell a story, because that's when you will hear the most _functional_ use of chord changes, progressions, melodies and vocals, which will ultimately aid in your ear training abilities and answer "why" better than the first half of the paper. Yes, you still have to sit down and woodshed (scales, progressions, metronome practice, etc) and whatnot, but that's assumed to be the case.

PS. Lastly, you can find most of his mathematical explanations on Music Theory Stack Exchange. None of it will help you play by ear any better.</comment>


Honey: A Game Engine and Game Engine Tutorial – First Post - <AUTHOR> http://www.friendsonmountains.com/blog/2018/06/26/lets-make-honey-version-0-00/ <comment><AUTHOR> Ayo! I'm making a game engine and writing a tutorial about it!

Whyyy?

Unity makes painfully clunky games, good languages like Python and Javascript are only good for making smallish games, and C++ is still super unpleasant to work with.

C++ is my least favorite programming language, but it's also still the best way to make professional games, the kind you can put on the Switch and in the Steam store. I'm not good at C++ and neither are most of the people I know, especially in the game making community.

I figure we could learn together and make something really nice. So I give you Honey, a free open source C++ game engine with a focus on simplicity, cuteness, and smoothness. Honey is a work in progress and always will be. Every piece of code ever committed to Honey will come with a teaching blog post.

I'm about 12 commits into making Honey, so it's still preliminary, though I can use it to make simple stuff like [http://friendsonmountains.com/ABearCs/](http://friendsonmountains.com/ABearCs/). But I'm making decently speedy progress, so some time later this year, it should be something people might want to use.

Join me, and let's learn to make a horrible thing into a nice one!</comment>


Minimum-wage push could bring robots to restaurants - <AUTHOR> http://www.msn.com/en-us/news/us/minimum-wage-push-could-bring-robots-to-restaurants/ar-BBlNiTA

<comment><USER2> Robots are the excuse, not the reason. The fact is, a robot is cheaper than a $15/hour burger-flipping employee, but it's also cheaper than a $7.50/hour employee, so the automation is practically inevitable. All the robot 'cost savings' are coming regardless, and fewer people will be employed (or they'll change employment to something else).

The only reason to keep wages low is to save money on the salary costs of jobs where a robot _can 't_ replace a human. Arguing that wages shouldn't go up for those people who robots won't replace only serves to protect profits and income for the people at the top.

<comment><USER3> Even accepting your argument, there still comes a point where:

      [wages of robot-replaceable employees] + [current wages of non-replaceable employees] > [robots] + [higher wages of non-replaceable employees]

And $15/hr for robot-replaceables may well be that point.

<comment><USER4> I think the idea is that $7.25/hr is already that point.

Let's say that each of these robots costs $10k per year, including R&D and maintenance. Let's also say that because of inefficiencies with having people order their own food or with assembly ultimately being done by hand, a store has to install 6 robots to replace 3 workers.

        3 workers * $7.25/hr * 8hrs/day * 365days/year = $63,510
        6 robots * $10k/robot = $60,000

So it is actually less expensive already to replace minimum-wage workers with robots. The minimum-wage issue has very little to do with it besides trying to keep wages low in general.

<comment><USER5> A blogger created a calculator that allows you to determine (over a 5-year time frame) whether it is cheaper to buy an expensive robot and do automation or to just use manual labor and to save the excess in Treasury bonds. He found that when the minimum wage is at $7.25, it would be slightly cheaper to hire humans, and if the minimum wage is raised to $10.10, then it would be slightly cheaper to hire robots.

The blogger assumes that it would cost $150,000 to build the robot, including R&D and maintenance. This comes out to $30,000 per year (while your assumptions claim that the bots only cost $20,000 per year to replace one human).

[http://politicalcalculations.blogspot.com/2014/01/business-m...](http://politicalcalculations.blogspot.com/2014/01/business- math-robots-or-minimum-wage.html#.VdHwijZRHIU).

I don't know which assumption is correct, though I would guess that eventually bots will be cheaper as we get better making them.

<comment><USER4> I'm thinking specifically in the case of McDonalds and other large chains where the costs of R&D and dedicated maintenance staff would be spread over thousands of restaurants.

</comment></comment></comment></comment></comment><comment><USER6> I look forward to an entirely robotic fast-food joint. Drive up, wave your rfid card, get a list of your last 5 menu choices, poke at one, food comes out the slot in a bag. No human involved.

</comment><comment><USER7> Restaurant means different things to different people. To me, I do not care if a fast food establishment (McDonald's, Qdoba, Panera, etc...) replaces workers with robots. The food and experience already feels autonomous and disconnected.

I do not see robots replacing servers at non-fast food places for a long time if ever.

They bring up grocery stores but I think most employees, especially check out clerks, will be replaced by machines. As much as I love to talk to the older person about their grandkids while they, slowly, scan my items I would be OK with dumping my items onto a tray and having the machine do all the work. Almost like self checkout except for a robot replacing me.

</comment><comment><USER8> Robots are comming to restaurants regardless. There is already touch kiosks where you can order in some restaurants, there is one at a Panera Bread near me, and many in some airports.

</comment><comment><USER9> Woohoo! About time we got to automating the tedium away!</comment>


Wolfram Alpha on Android free today - <AUTHOR> http://www.amazon.com/Wolfram-Alpha-LLC/dp/B004J1DBJI

<comment><USER2> Good find. Sucks that Amazon bundles their software with it...makes it annoying to have to install just for Wolfram then uninstall.

E: I'd like to note that I use Wolfram maybe a few times a month, if that, so the mobile app isn't really worth it for me to pay for... but if it's free? Eh, even if I never actually use it on my phone... I might.</comment>


Using JDK 9 Memory Order Modes - <AUTHOR> http://gee.cs.oswego.edu/dl/html/j9mm.html <comment><USER2> > This guide is mainly intended for expert programmers familiar with Java > concurrency, but unfamiliar with the memory order modes available in JDK 9 > provided by VarHandles.

I think it's important to emphasise this. You should think extremely carefully before reaching for features like these and should have a very good reason for not using the existing concurrency tools and data structures. That said, if you do need to build your own concurrent data structures then these do provide excellent primitives with which to do it.

<comment><USER3> Right; the proper consumer of material like this (for anything other than intellectual-curiosity purposes) isn't your regular line-of-business developer; it's more the the developers of the concurrency libraries such developers consume, e.g. actor frameworks like Akka or Vert.x.

<comment><USER2> I was going to say it was even more limited than that, but vert.x does seem to have quite a few uses of AtomicLong, Integer, and Boolean which could be replaced by primitive fields and VarHandles. Whether it's worth it depends on how many of them are actually used at run time and whether removing the extra indirection and footprint is important.

It also makes heavy use of the JDK's concurrent maps, latches, and other structures which it would probably be unwise to try and re-implement.

<comment><USER4> Those uses of AtomicFoo classes could probably be updated to use AtomicFooUpdater fields (e.g. AtomicIntegerFieldUpdater). VarHandle is like AtomicFieldUpdater but with all of the concurrency semantics that were accessible only via Unsafe access.

<comment><USER5> In Java 9, all updaters have been rewritten in term of VarHandle. All reference updaters are less efficient that their VarHandle counterparts because they rely on generics.

In Java generics are erased at runtime, so the reference updater code has some supplementary runtime checks.

<comment><USER6> This isn't correct. The atomic updater classes don't rely on generics to do anything. What they do is perform safety checks on every access to ensure you don't segfault your JVM, resulting in heavy performance losses compared to sun.misc.Unsafe.

<comment><USER7> Actually it is true (about generics and erasure) when it comes to AtomicReferenceFieldUpdater. The check is likely to be around 1 cpu cycle since the branch is virtually always predicted.

<comment><USER5> It can be one mov + cmp + je in assembly, but it's not always the case.

It's an instanceof check, if the class of the field is final (or can be proven to be effectively final by CHA) then it's a null check follow by a pointer check. Theoretically, the null check can proved to be unnecessary, be fused with another or be transformed to an implicitly nullcheck but in specific the case of an AtomicReferenceFieldUpdater, null is usually a valid value (by example, null is used as tombstone in many concurrent data structure implementations) so it's usually more than just a getClass() and a pointer check.

<comment><USER6> From what I've read, until recently this wasn't actually the case for the field updater classes. Instead, Java does things like not trusting your fields' finality and not treating anything as constant. Let me see if I can find the blog post.

Here we go: [https://www.google.com/webhp?sourceid=chrome- instant&ion=1&e...](https://www.google.com/webhp?sourceid=chrome- instant&ion=1&espv=2&ie=UTF-8#q=atomic+field+updater+optimizations+java+8&*)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> tl;dr for people familiar with the C/C++11 MM: It's very similar. `relaxed` -> `Opaque`, `seq_cst` -> `volatile`. `acquire` and `release` map more or less the same.

Interestingly, there's no equivalent to C++ `acq_rel` on the RMW operations -- you have to either choose the stronger `volatile` ordering, or do a release fence followed by an acquire RMW (or the reverse).

Regular loads/stores may be mixed with atomic ones, but don't give any coherence or forward progress guarantees, and may see word tearing for longs or doubles.

The java `fullFence()` is stronger than a C++ `seq_cst` one; inserting one between every pair of Opaque accesses gives them sequential consistency (though, I understand that C++ is probably going to strengthen the semantics of `seq_cst` fences eventually).

<comment><USER9> It is not surprising, the work on the C++ MM model was based on the Java one. I suspect there is a large overlap on the people working on both.

</comment></comment><comment><USER10> It's early in the morning, brain not fully functional... what can you do with a VarHandle that you couldn't do with reflection?

<comment><USER2> There's two real differences. The security checks are done at lookup rather than when the handle is used, and they provide atomic operations and memory ordering which reflection doesn't give you. Think of them as type safe versions of some of the field access methods in sun.misc.Unsafe.

<comment><USER5> var handles also uses the polymorphic signature trick to avoid boxing/unboxing of the arguments you get with the reflection (the same trick also allows to introduce 64 bits index array in the future BTW).

and you can also do all memory operations on arrayish values (array or ByteBuffer) even un-aligned acces.

<comment><USER11> Care to extend on that "polymorphic signature trick"?

<comment><USER2> There is an annotation that can be used in the JDK to mark methods as polymorphic. The compiler will declare the method call with the types of the arguments and result where it is called, and the VM will handle it. This allows a very small set of core methods to take variable numbers or types of arguments without boxing them or having to put them in an array.

</comment></comment></comment></comment></comment><comment><USER6> a couple of examples in RA mode involving constructors and final fields look unnecessary to me. I thought the java memory model already guaranteed a release/acquire fence at the end of constructor for final fields. Basically if a thread sees an object post-construction, it is already guaranteed to see the correct values for the object's final fields. Am I mistaken here?

<comment><USER12> Indeed. It is possible to see an object half-way through construction if you are viewing it unsynchronised from a different thread to the thread constructing it.

This is why the common pattern of double-checked locking is bad. This is:

      class Thing {
          private Thing thing = null;
          public Thing getThing() {
              if (thing == null) {
                  synchronized (this) {
                      if (thing == null) {
                          thing = new Thing();
                      }
                  }
              }
              return thing;
          }
      }

Don't do that. You could get hold of a partially-constructed Thing.

<comment><USER6> It's actually not possible to get a hold of partially-constructed thing in this manner, assuming the thing only has final variables. See [http://g.oswego.edu/dl/jmm/cookbook.html](http://g.oswego.edu/dl/jmm/cookbook.html).

"The initial load (i.e., the very first encounter by a thread) of a final field cannot be reordered with the initial load of the reference to the object containing the final field. This comes into play in: x = sharedRef; ... ; i = x.finalField; A compiler would never reorder these since they are dependent, but there can be consequences of this rule on some processors."

Note that there are no constraints placed on sharedRef. It does not need to be volatile, for instance.

This link also has more useful info and examples: [https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.ht...](https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html#finalRight)

<comment><USER13> > there can be consequences of this rule on some processors

Right - I think the processor can still reorder. I've never been sure why the compiler is not allowed to reorder in this case, since this doesn't help you if the processor will do it anyway.

<comment><USER6> The "consequences on some processors" simply means that a conforming java compiler/VM may need to insert memory barriers to enforce the memory model for constructors, resulting in a performance penalty. A conforming compiler or VM cannot generate code that would allow processor re-orderings to break the memory model.

</comment></comment></comment></comment></comment><comment><USER14> A lot of great topics are covered in this.</comment>


Ask HN: I'm talking to a potential investor tomorrow.  What should I ask? - <AUTHOR>

One of my users of FolderBoy is an angel investor (http://www.dnjournal.com/cover/2009/february.htm).  He likes my product (obviously, he's a user), and he wants to see if there's a good investor-hacker fit.
What are some questions I should ask?  And what are some points that I should nail?  Considering he already sees the merits of FB,  I was thinking:
* The direction I want to take FolderBoy in the next 6 months, year, two years, five etc.
* Finance and business advice requirements in the next 6 months etc.
* His interest in the personal-organization space
What else?
Also, one catch: he's in the US, and I'm in Australia.  If things go well, I will need to meet him at some stage, how would I broach the subject of travelling over to the states?  E.g., tickets cost ~AUS$1,800. <comment><USER2> First of all, congrats! Let me turn around your question ... Ask _yourself_ these questions first: "Do I need the money at this stage?", "Which are the non-monetary benefits the angel provides?" & "How will this benefit my existing customers?". Good luck!</comment>


737 Max Scandal Cuts Boeing's Once Rock-Solid Image - <AUTHOR> https://www.npr.org/2019/11/26/783197253/737-max-scandal-cuts-boeings-once-rock-solid-image <comment><USER2> They're still treating it like a PR problem instead of an engineering/management one. They cant just fire a few people or run some newspaper ads to make the plane safe. The entire world is watching and will not be satisfied unless they _actually_ make it safe.

<comment><USER3> I agree with your last sentence... It's weird though. Why won't smooth marketing talk work this time? It has worked many times, for many companies, independent of factual reason. What's particular about this time?

I understand the HN consensus about what actually went wrong inside Boeing. Maybe the HN consensus is right, maybe it isn't. What I find weird is that this time, the PR works differently.

<comment><USER4> This will have been the biggest, or at least the most visible, collective failure of aviation regulators in a very long time, if not ever, to provide checks on a company. So they are all pissed. And now that the FAA has fucked up other regulators are not keen to just blindly follow their guidance, particularly those in jurisdiction with existing or potential Boeing competitors.

</comment></comment></comment><comment><USER5> There will need to be wholesale resignations -- all of top management, and a new board -- before Boeing will ever regain credibility.

Every day they fail to resign costs them more. At the time, two or three resignations would have done it. Now we know how deep the rot runs.

</comment><comment><USER6> We all know that,idk why it's being circle jerked over and over again.

Not just the 737 max but also the problems with the 787. Boeing is a good example of what happens when enginnering is taken over by management.

<comment><USER7> This does seem like a rehashing, but I think the subtext is - from my perspective anyway - that there's no clear end in sight to the 737 MAX issue.

<comment><USER5> When experienced pilots who knew all about the details crashed a simulator programmed with what was supposed to be the fix, that was the end of any credibility the current management could muster.

<comment><USER8> Hey do you have a source for this story?

<comment><USER4> [https://www.bloomberg.com/amp/news/articles/2019-11-08/delay...](https://www.bloomberg.com/amp/news/articles/2019-11-08/delays- in-boeing-max-return-began-with-near-crash-in-simulator)</comment></comment></comment></comment></comment>


Ask HN: How do you know contrarian ideas? - <AUTHOR> if possible name startups that had bad ideas but became unicorns. <comment><USER2> It's when no one believes in your idea for some time and you have just a few people who agree with your idea.

Airbnb SpaceX Amazon Echo?</comment>


Nexus 7 tablets begin shipping from Google Play - <AUTHOR> http://arstechnica.com/gadgets/2012/07/nexus-7-tablets-begin-shipping-from-google-play/

<comment><USER2> What the hell does this mean? I preordered my Nexus7 weeks ago and the charge finally finalized and hit my card today. I have not received any emails or any information of any kind from Google since I preordered.

Google I love you, but please stop leaving your power users and developers out to dry...</comment>


Fluc - Mobile Social Network - <AUTHOR> http://www.fluc.com

<comment><USER2> Interesting Idea. Amazed that I haven't heard of this before to be honest.

<comment><USER3> A newspaper article here in Spain covered it in January I believe. It's got a bit of press over here.

</comment></comment><comment><USER4> i have never seen a revenue share model that worked(besides google). Maybe they'll prove me wrong.</comment>


Ask HN: Need help in identifying the tech stack I need - <AUTHOR> I am trying to build an app that will match readers based on books that they have liked. Essentially, whenever a new user is signed up, I want to go through the list of all users and give them a score depending on their match with the new user (2 points for each book match, 1 point for genre match) and then send the new user top 5 users with the highest score. Problem is this really sounds inefficient. What would be a good way of doing this? Should I look into graph dbs? <comment><USER2> Hi! You probably don't want to go with all users, you just need to pick matched once. When a new user signs up, you need to take his books and genres and find users with the same or mostly the same.</comment>


Corporate Leadership Development App - <AUTHOR>

If you're interested in gaining some knowledge for good leadership development, my company's released a pocket handbook app for you.  Any and all feedback is appreciated!<p>http://itunes.apple.com/us/app/climate/id437880907?mt=8 https://market.android.com/details?id=com.aptima.climate.android&feature=search_result and even http://appworld.blackberry.com/webstore/content/44596?lang=en <comment><AUTHOR> now, with links: <http://itunes.apple.com/us/app/climate/id437880907?mt=8> [https://market.android.com/details?id=com.aptima.climate.and...](https://market.android.com/details?id=com.aptima.climate.android&feature=search_result) and even [http://appworld.blackberry.com/webstore/content/44596?lang=e...](http://appworld.blackberry.com/webstore/content/44596?lang=en)</comment>


Comment spam random text template - <AUTHOR> https://gist.github.com/shanselman/5422230 <comment><USER2> Its a sad moment when you first have to explain to your mother/client/etc that no, Discount Oakley Sunglasses didn't really enjoy your superb post.

Its a shockingly effective spam tactic. People cannot resist praise.

<comment><USER3> I must say that you've done an excellent job with commenting on Hacker News. These are genuinely fascinating ideas and I have spent 3 hours today reading your comments. If more people left comments like you do then the Internet would be a better place.

<comment><USER4> I really enjoy listening to your podcasts. I always learn something from them. In the last episode you featured a new project that is very close to one I'm working on right now. It'd be great if you checked it out, because it has features the other project doesn't. Features that I think make it better and easier to use. But enough about that. Any news on the new podcasts?

 _That's how you do it._ (:

<comment><USER3> Except you're clearly not spamming but actually referring to my work.. or are you! Oh, you win..

<comment><USER4> That's why I get paid the big bucks. =P

In all seriousness, I do listen to your podcasts. Proof: You forgot to renew the domains once, and joked about it.

</comment></comment></comment></comment></comment><comment><USER5> I have a friend who works for a large marketing company where they write website content for companies that looks almost identical to this. The company hires hundreds of young writers at a time and pays them minimum wage to come up with a few of these every day. They pass their paragraphs around to other writers who reword it again so it will show up as a unique site for search engines. I call it the spam factory.

<comment><USER6> What's the company?

<comment><USER7> By commenting here you just proved that google has trouble identifying these kinds of sites algorithmically.

<comment><USER8> Or he's just curious who his adversary is. I would be.

<comment><USER9> Or he is doing his job!

</comment></comment></comment></comment></comment><comment><USER10> I love a good con, and it's instructive to teach people how they are tricked so that it doesn't happen to them.

One of my favorite spams happened a couple of weeks ago. The spammer said he had written a very long post about my excellent article, but his computer crashed, so he wasn't going to repeat it.

This is very similar to "Gee, if you could only have read my comment, you would have loved how on-topic and awesome it was!"

We've created this system where we are paying people to drop by our blogs and tell us how awesome we are. Strange world.

</comment><comment><USER11> Isn't a trivial templating system like this a very easy thing to train a bayesian spamfilter on, even without the source template? I guess blogspammers mostly prey on entirely unmaintained sites for something like this to work.

But I'm going to have a hard time avoiding using "fastidious!" as a general expression of approval now.

<comment><USER12> Naïve Bayesian filtering might not work very well on this kind of text. It basically looks like a regular comment, until you start recognizing that it always follows the same pattern. Your basic Bayesian classifier will throw all of the words in a set before analyzing them, which loses all of the information about patterns and word order. The resulting words are considered "independent" which means that even though the template might generate the words "pretty worth bloggers content online" every time it uses the first template, the naïve Bayesian classifier will _never_ figure that part out.

My suspicion is that existing Bayesian classifiers have pushed the spammers to develop more natural-seeming templates, like this one.

<comment><USER13> You can run a Bayesian filter over pairs (or even triplets) of words (although this could cause the probabilities to be a bit off, because pairs like "although this" and "this could" are not truly independent). The downside is that as you do this, you drastically increase the size of the model and the amount of training data required.

Bayesian filters can also take more than just the words in the text into account - for example, they can take the submitting IP address (or perhaps /24 or ASN) into account, or a spam classification from external sources.

There are certainly better methods that could be built for recognising unknown templates - a simple known-state Markov model would be sufficient for the cases where templates substitute one word at a time, and you could conceivably use an unsupervised learning algorithm to discover an unknown number of models from a large corpus of comments.

</comment></comment></comment><comment><AUTHOR> It looks like this factors out to 4,351,250,624 unique comments.

<comment><USER14> How did you calculate this?

<comment><USER13> The set of strings is isomorphic to a Cartesian Product of sets of the same cardinalities as the set of options (for example, if the template was "{I,We} like {HTML, CSS, Javascript}", you can make a set {0,1}x{0,1,2}, where each element in the product set maps to one string and vice versa. For example (0,0) might represent I like HTML, and (1,2) might represent We like Javascript).

Because there is a one to one map (bijection) between the Cartesian Product set and the set of strings, the size of the product set is the same as the size of the set of strings.

The cardinality of a cartesian product AxB, where A and B are sets, is |AxB|=|A|x|B|, so to find the size of the set of strings, you just need to multiply together the number of options at each point in the template where you have a choice.

<comment><USER14> Multiply the count in each set, gotcha. But did he just count it for each set? It seems like that would be time consuming. Is there some shortcut? or did he just write a quick program to do it?

<comment><AUTHOR> I used [https://github.com/flintinatux/spintax_parser/blob/c356ebd88...](https://github.com/flintinatux/spintax_parser/blob/c356ebd88a4e6da51dd6bd6d480a00fbe9883809/lib/spintax_parser.rb#L16-L26)

</comment></comment></comment></comment></comment><comment><USER15> It's called "Spintax". People in the internet marketing business use this all the time. Not just for comment spam, but to generate different versions of entire articles for submission to article directories and what not.

This is one of the more well known "spinners" as they are called: <http://thebestspinner.com/>

</comment><comment><USER16> 1 Million results on Google for "I have been surfing online more than 2 hours today, yet I never found any interesting article like yours" [1]

[1]: [https://www.google.com/search?q=I+have+been+surfing+online+m...](https://www.google.com/search?q=I+have+been+surfing+online+more+than+2+hours+today%2C+yet+I+never+found+any+interesting+article+like+yours)

<comment><USER17> Since that's only one of 16 combinations, I checked another. 7.7mil results if you change the 2 to a 3. Well then.

</comment></comment><comment><AUTHOR> Here's a quick script that spins the text.

        gem install spintax_parser

        ruby -rspintax_parser -ropen-uri -e 'String.send(:include, SpintaxParser); puts open("https://bit.ly/Ziv9Aw").read.gsub("\n", " ").unspin'

<comment><USER18> Whoa, `spintax_parser`? ...are there legitimate uses for this?

<comment><USER19> Perhaps generating contents to use with a testing suite?

</comment></comment></comment><comment><USER20> Man... I'd actually get to an ATM, but I took during supervised visitation to see if they actually had to talk to any judgment. I don't know what is written so we could draw the appropriate details. I had the Sponge Bob Lego set. Not only did they change the social worker again - if lowering the lien can be cancelled or reduced, Windows Vista would not let that get in contact with me. Will we ever know the rest? I told her my name when I signed in today... and then cashed it and put six graveyard cards down on them and that trying to get used to have the present ability to make a deposit. This is the reason it was too much time as an and the house was not there. Maybe whoever poured stuff on my answering machine fell... and now they can't even eat a slice without it tearing and falling to pieces. She is now one of my underwear that is being hacked into, they probably figured out how much it would cost for the attic that flew off the bus. It did install when I told her that she was first soldered, but me... how important a father to a building! I walked there from 2003! Yesterday, I called my lawyer and said that I will clean the apartment tomorrow.

<comment><USER21> Markov chain?

I'm going to make one when I get home today.

</comment></comment><comment><USER22> Oh god that is priceless. In the right hands you could create a regex that would block all spam from this guy!

<comment><USER23> It's an expensive operation, though. I doubt it scales, but I'm sure it's great for smaller services. WordPress and Disqus are probably going to use this somehow.

<comment><USER24> Disagreed. This is a super cheap operation to test

</comment></comment></comment><comment><USER25> Nice, I should update my old blog post about this: [http://denis.papathanasiou.org/2010/08/24/spam-apalooza-a- su...](http://denis.papathanasiou.org/2010/08/24/spam-apalooza-a-survey-of- modern-blog-comment-spam/)

</comment><comment><USER26> This kind of thing really depresses me. Akismet tells me my blog [1] has had 1,364 spam comments. It's had 22 real comments.

[1] <http://supplementsos.com/blog/>

<comment><USER27> My site gets about 15,000 spam submissions a month. You are able to make a submission without being logged in but you have to signup as soon as you do for it to be published. Spammers don't do this, so the spam doesn't get published, yet they continue on regardless.

I also get spam signups who just signup for an account, some of the more sophisticated accounts will verify their email address but then they don't do anything. Very few ever come back again (if they do within a certain period of time their IP block gets extended).

For some reason, no spammer has ever put these two scenarios together to successfully spam my site. I wonder how they found it and why they continue to try, surely if you notice your spamming isn't working, you take the site off your list, or if you a really determined, try a bit harder.

Edit: What has annoyed me is, as soon as I became aggressive at tackling the spam (even though none ever got published) by 403'ing their IP's, they started spamming other sites with links to mine. Even with my explanations to Google about how it is not my doing, my site has been penalised, so I guess they win that way.

<comment><USER28> Remove any identifiable "footprints" from software you run on your server, like "Powered by wordpress" that should help you out...

</comment></comment></comment><comment><USER29> I especially hate the kind of spam you find in the comments over at rockpapershotgun.com, which looks similar, but is more annoying as it interrupts the comment tree:

Joshua. I just agree… Bonnie`s postlng is good, on sunday I bought a gorgeous Acura after bringing in $7140 thiss month and-more than, $10,000 last-munth. this is certainly the coolest job I've ever done. I began this seven months/ago and straight away was bringin in over $81 per-hour. I follow instructions here <url>

It was very pervasive for some months, but it looks like the guys finally found a way to block most of it. Shouldn't be too hard with alle the numbers and dollar signs.

</comment><comment><USER30> What is the point of this? I thought the point of spamming was to insert links to your website or promote some product. This just looks like random compliments.

<comment><USER31> From <http://codex.wordpress.org/Comments_in_WordPress>

Depending on your site's settings, comments display slightly differently from site to site. The basic comment form includes:

Name

Email

 _Website_

Comment

<comment><USER32> I have the website field turned off -- it's not visible if you are a real user using the form, and "website" doesn't show up next to comments.

But I still get a lot of spam containing the website field; it seems like the bot is just automatically submitting POST requests with website included. This should be trivial to detect -- is there a plugin that just immediately deletes all of these out of hand before passing them on to an antispam tool?

<comment><USER33> There's a way of setting the 'hidden' property on an input field and checking if the field is blank.

If it's a bot sending POST requests, there's a high chance a "Website:" field would be filled out. Innocent users will not be able to fill out the field, in the case of a legitimate comment.

<comment><USER34> This is called a honeypot field. Basically spam bots are stupid and try to fill in every field (especially ones with phone, email, website, etc in the name). The honeypot is a hidden field that if filled out causes the form to not submit completely. There are some plugins for Wordpress that handle this for contact forms (Contact Form 7) and for comment forms. If you search Honeypot from the WordPress plugin directory, you will find them.

Also, many spammers hit the wp-comments-post.php file directly. Since they hit it directly there is no referrer passed like there would be if a POST was sent to it from a page on your site. This page: <http://goo.gl/n5VHm> on WordPress.com has information on code that can be added to your .htaccess file that will crush bots that POST to wp-comments-post.php with no referrer present.

</comment></comment></comment></comment></comment><comment><USER35> I got this one myself the other day.

Have a {great|good|excellent|fantastic} day!I'm very {happy|glad|pleased} when see your post.I quite {agree with|endorse|approve of} your {point of view|viewpoint|standpoint|views on politics|opinion on public affairs}.I will continue to {focus|atte...

</comment><comment><USER36> Oh Well! I just wrote CanOfSpam <https://gist.github.com/mardix/5438589>, a PHP implementation to get random text. It randomly picks a comment, and randomly picks optional text in the { } tags.

</comment><comment><USER37> Add in dynamic content (like mentioning a blurb from a past blog post, or a tweet from the writer, or - even better - a tweet @ the author from someone else prominent) and you've got yourself one slick marketer... erm, I mean spammer.

</comment><comment><USER38> Don't captchas solve this ? Are spam tools able to bypass them too often, or is it because people find captchas annoying ?

<comment><USER39> Even a captcha that can separate humans from machines with 100% accuracy does not defend against cheap labour ($1-5 / 1000 captchas) in developing countries like India.

</comment></comment><comment><USER40> Have others been seeing a huge increase in spam getting past akismet filter on wordpress lately, or is it just me?

</comment><comment><USER28> As much as you guys are going to hate on my comment, well written spintax is an art form.

</comment><comment><USER41> about this they use spamming software for internet marketing which works thou!</comment>


Ask HN: Sources of remote jobs for people based in UK? - <AUTHOR> I'm a developer and I'm about to move to the middle of nowhere. I'm looking for remote work, but most of the job boards dedicated to remote work I've found online are for companies based in the US which seem to make the implicit assumption that you're a US citizen.<p>Are there any remote-focussed job boards that allow you to specify the country the employer is based in, so I can limit my results to UK companies? <comment><USER2> Moonlight supports UK developers -

[https://www.moonlightwork.com](https://www.moonlightwork.com)

</comment><comment><USER3> [https://www.cwjobs.co.uk/jobs/remote](https://www.cwjobs.co.uk/jobs/remote) might get you started for the UK specifically.

</comment><comment><USER4> Use a thing called google? Most uk job sites let you specify remote only in the search options anyway. You could really find this out in like 2min.

<comment><USER3> No, you could find out that several UK job sites let you specify remote in 20 seconds. In the remaining 1m 40s you could find out that the number of remote jobs being advertised on the major UK jobs boards is tiny, far less than the number of remote jobs you know are out there.

So at that point you might consider whether maybe there are any specialist sites that focus on remote jobs - like the USA-specific remote-only jobs boards that occasionally get mentioned on HN, only for the UK. And you might think it would be worth asking on HN if someone could point you in the right direction... only to receive obnoxious responses like gain_sky's.

Sorry OP, not all of HN is as rude and unhelpful as 'gain_sky'

</comment></comment><comment><USER5> Look at specific slack group's job boards. At the python dev group, I see more UK/Germany remote job posts than US.</comment>


Ripple, the First True Bitcoin Competitor - <AUTHOR> https://www.privateinternetaccess.com/blog/2013/02/vpn-accepts-ripple-the-first-true-bitcoin-competitor/ <comment><USER2> I've been playing with Ripple for a couple of weeks now, and I find the best way to describe it is as a network that will finally enable freedom of banking over the Internet.

Sure, we all log on to our online bank accounts, but they don't really let you take your money anywhere. Ripple will be supported by a rapidly expanding network of Gateways that will allow you to get money from your bank account onto the Ripple network, and from there, an unlimited number of financial options will be available to you.

You'll be able to spend your money with any merchant with a ripple account or with a bank account tied to a Gateway. You'll be able to exchange your currency for USD/EUR/CAD/GBP/JPY/BTC/whatever you want.

We'll finally be done with the archaic ACH network. $50 bank wire fees and 3% currency conversion fees will cease to exist. We have an Internet, why not use it to move money?

</comment><comment><USER3> So, ripple authors keep 20% of it all. That sounds kinda shady to me. Like someone wanting to score a quick instabuck using the valuation.

<comment><USER4> They could have made it a blockchain-based merged mining altcoin, then it would be compatible with Bitcoin and far more accepted. The fact that they are using a centralized issuance model should make you very suspicious.

<comment><USER5> Do altcoins have any legitimate reason to exist? The whole "silver to bitcoin's gold" shtick is terribly unconvincing.

<comment><USER6> They can be useful experimental platforms... also, the fundamental rules of Bitcoin are fixed— changing how Bitcoin works could be rightfully argued as theft from all the people who hold Bitcoin at the current moment.

If you wanted something like Bitcoin but with different properties, different security, different inflation— an altcoin is the only way to get it.

Unfortunately, practically all altcoins have been almost identical to Bitcoin.

<comment><USER5> What would be interesting deviations from the bitcoin model if breaking compatibility wasn't an issue?

<comment><USER6> <https://en.bitcoin.it/wiki/Hardfork_Wishlist>

<https://en.bitcoin.it/wiki/User:Gmaxwell/alt_ideas>

</comment></comment></comment></comment></comment></comment><comment><USER6> I don't know how anyone can call it a Bitcoin competitor.

Instead of a proof of work decentralized consensus ripple depends on a consensus of _trusted servers_. In Bitcoin language ripple is distributed but not decentralized.

Then multiply that out by the fact that its native currency XRP was all pre- created and given to the founders and their org... people like to call Bitcoin a ponzi scheme, but policies like this make me wonder if Ripple isn't a joke designed to point out the comparative equality Bitcoin provides.

It might be more accurate to call it a paypal competitor but it retains the Bitcoin scalability challenge of requiring global synchronization, so its unlikely to be a great one.

<comment><USER7> It is positioned to compete with other payment systems. As for scalability, it uses data structures specifically designed for rapid synchronization. But you're absolutely right that scaling it to thousands of transactions per second will be a challenge.

</comment></comment><comment><USER8> Is there any document that details how ripple works? Something like "Bitcoin: A Peer-to-Peer Electronic Currency"[1]. I browsed the site and right now it looks like a lot of individual wiki pages. Surely there is a defining document?

[1] <http://bitcoin.org/bitcoin.pdf>

<comment><USER9> I got these from someone on reddit: <http://188.8.131.52/themusicgod1/doc/ripple/>

<comment><USER7> Those are about Ryan Fugger's Ripple, not the new Ripple. The new Ripple does include the peer-to-peer credit of the original Ripple. But there are major differences. For example, the new Ripple is positioned initially as a payment system competing with things like PayPal and checks.

<comment><USER10> snippet of email from Ryan Fugger Sep last year (2012) seems relevant

.. group would like to take over the Ripple project and call their system "Ripple". They have offered me xx for this, which would give them ownership of all Ripple software I've written...[and] ripplepay.com domains... I could continue my work independently, but I would need to give it a different name.

</comment></comment></comment></comment><comment><USER11> Ripple appears to essentially be Hawala (<http://en.wikipedia.org/wiki/Hawala>) in digital form.

I'm actually not sure of the necessity of XRP; since bitcoin, or any other currency can propagate across the network.

<comment><USER12> I was surprised by XRP as well. Apparently they introduced it as an anti-DOS mechanism, meaning that you have to destroy some XRP to do a ripple transaction[1]. To me it would have made more sense if each of the accounts involved in a ripple transaction could simply charge a transaction fee nominated in the currency being transacted.

 __edit __: it seems that such transaction fees are possible[2]. Not sure why XRP is needed then.

[1] <https://ripple.com/wiki/Ripple_credits>

[2] [http://bitcoin.stackexchange.com/questions/7590/does- ripple-...](http://bitcoin.stackexchange.com/questions/7590/does-ripple-ever- charge-proportional-transaction-fees)

</comment></comment><comment><USER13> The key to the technology seems to be <https://ripple.com/wiki/Consensus>, which is the problem Bitcoin elegantly solved. I like this solution as well. But Bitcoin is relatively battle hardened (both theoretically and in the field), and I trust the work I have seen done on the subject.

Is there some forum like bitcoin.stackexchange where I can ask/read theoretical questions of Ripple?

<comment><USER6> > which is the problem Bitcoin elegantly solved. I like this solution as well.

Why do you like it? The ripple model depends on picking trusted servers which cannot be controlled by the same party/common interests. The system cannot automatically pick trusted servers because there is no electronic way to determine independence, except the way that it currently works— fiat of the developers: they hardcode the servers.

To me it seems that when encountering the fundamental problem bitcoin solved, "How do you achieve a fair consensus when its cheap to make sibyls?" their response was to completely punt on the issue.

<comment><USER7> It's not cheap to make sibyls because you have to get people to trust you and there's no easy way to do that.

There are simple ways to gather lists of likely independent servers. For example, agencies you trust could publish such lists. You could pick three such lists and only trust organizations that appear on two of them.

And if you betray that trust, it will nearly always be easily detectable in an automated way. At that point, everyone will stop trusting you and you'll be back at zero. By contrast, if you accumulate 51% of the mining power, there's no easy way for people to take that away from you and make you start over.

<comment><USER6> > There are simple ways to gather lists of likely independent servers. For > example, agencies you trust could publish such lists.

This isn't a procedure, it's a hand-wave. How do the agencies make their lists? And why should I trust them? If I can trust the agencies, why don't I just have them process all the transactions and then dispense with the inefficient global consensus stuff? What happens when courts order the agencies to direct people to processors who seize particular funds or block particular traffic? When the agency servers are hacked?

</comment></comment></comment></comment><comment><USER14> "... inventing a decentralized way to send and exchange non Ripple currencies over its network. The latter enables two things which will truly allow Bitcoin to flourish: 1) Most Bitcoin transactions can be done through the Ripple network, only to be settled on the blockchain when absolutely necessary. 2) True decentralized Bitcoin exchanges will now be possible via trading on the Ripple network."

I still didn't quite get how does this work but the fact that the technology enables you to do it besides the fact that it has its own currency is pretty interesting.

</comment><comment><USER15> So rather than the opportunist/capitalist/democratic solution of bitcoin, we have a benevolent dictator handing out 'money' to whoever would like to be on the network?

<comment><USER7> You're looking at Ripple as if it were a currency rather than as what it is, a payment system.

<comment><USER16> FTA ' Ripple (XRP) is a new decentralized Bitcoin-like currency '

<comment><USER7> There are people who want to promote it that way, but that doesn't include the people who designed and built it. Check out <http://ripple.com/>

<comment><USER17> But the point is that if they (XRP) come to have any monetary value at all, the whole thing reduces to a ponzi scheme with benefits.

</comment></comment></comment></comment></comment><comment><USER18> How are the ripples exactly put in circulation? There's a giveaway on bitcointalk.org, but that's it? Or people just buy them from OpenCoin?

<comment><USER7> There will be giveaways of tens of billions of ripples. By the time the giveaways end, there should be a plentiful supply.

</comment></comment><comment><USER19> Claimed my 10,000. Why not? Not sure I see them having much value though.</comment>


The United Nations Meets 13 Principles Against Unchecked Surveillance - <AUTHOR> https://www.eff.org/deeplinks/2013/09/united-nations-meets-thirteen-principles-against-unchecked-surveillance <comment><USER2> This train wreck keeps getting avoided by the community, but the choo bloody choo is pulling in at the station with a big bomb that has already gone off, but people are just slow to notice.

Snowden killed the USA-centric internet.

Let's see what we can make out of the rubble.

<comment><USER3> No...the NSA killed the USA centric internet...Snowden just revealed the reason why it shouldn't be trusted.

<comment><USER4> It's okay, dude. Snowden has already been canonized by the Hacker Church. You don't have to defend him anymore.

</comment></comment></comment><comment><USER5> Too bad this will do practically nothing, just like everything else the U.N. "does".

<comment><USER6> Just to be clear (as someone working at one organization that helped develop these principles and the consensus around them), the principles were not developed or published by the U.N. They were created by a consensus of voluntary nongovernmental organizations from all around the world that work in the area of human rights.

Here, the principles were being presented to the United Nations -- not by the United Nations!

</comment></comment><comment><USER7> > To fix it properly, we need to fix it everywhere, and for everyone in the > world.

Assuming they _will_ say one day "ok, we fixed it", how can we ever trust them again?

<comment><USER8> This line lost me. They're making the perfect the enemy of the good. I would rather see effective means in some states than ineffective means in all states.</comment></comment>


Show HN: My startup aggregates social media taken at events. Here's "The Boss" - <AUTHOR> http://wesawit.com/events/bruce-springsteen-at-us-bank-arena-2014-04-08-52fa25c1468c3

<comment><USER2> This is your _ninth_ "Show HN" for your startup in 6 months (yes, I counted)

If you're not getting responses, you might want to try a different strategy.

<comment><AUTHOR> Any ideas?</comment></comment>


Deep Learning: An MIT Press Book in Preparation - <AUTHOR> http://goodfeli.github.io/dlbook/ <comment><USER2> Why publish via MIT press if the authors want to be able to distribute it freely, why not self publish?

<comment><USER3> Surely this one is obvious? They want the distribution channels that come with traditional academic press.

</comment></comment><comment><USER4> Add to reading list in iOS works well for this sort of thing as it caches offline. I tried converting this sort of thing to PDF so I could read it on my kindle, but I found that my 6 inch kindle was terrible for this sort of thing. Also, the amazon conversion process couldn't handle images very well.

There really is, I think, a market for a large form factor e-reader for reading stuff offline. Nice and distraction free, long battery life, etc.

<comment><USER5> Sony has a 13" e-book reader. Onyx will be launching one soon, I think.

<comment><USER6> Are you talking about the $800 13" Sony one? or is there another one out that I haven't heard about?

</comment></comment></comment><comment><USER7> Would be nice if MIT Press did something like Manning's "early access" progress and started selling the book even though it is not yet finished. I would be happy to pay €€€ to get access to the evolving PDF version.

</comment><comment><USER8> I remember there was another machine learning textbook being drafted on the web. I can't remember the name, author or url though. Anyone know what I'm talking about? Any other resources would be appreciated, too.

<comment><USER9> Amusingly, you're probably thinking of this book. It's been linked to many times here, probably at this URL: [http://www.iro.umontreal.ca/~bengioy/dlbook/version-07-08-20...](http://www.iro.umontreal.ca/~bengioy/dlbook/version-07-08-2015/dlbook.html)

<comment><USER10> Isn't that the same book as the one posted by OP, but an older version?

Also, latest version seems to have some ugly boxes around text. Latest version that seems ok here is this one: [http://goodfeli.github.io/dlbook/version-2015-11-24/index.ht...](http://goodfeli.github.io/dlbook/version-2015-11-24/index.html)

<comment><USER9> Yes, that's what I said. The parent was confused because previously he saw this book posted at the link I provided, and hadn't made the connection that the OP's link is the same.

Edit: when I said "this book" I was referring to the book linked to by the URL from the OP.

</comment></comment></comment></comment><comment><USER11> It's a great read, but it doesn't load correctly on the iPad. A few pages into a chapter and the remainder refuses to load...

</comment><comment><USER12> Excellent! Thank you!

Guys, do you consider making an edX/MITx course on Deep Learning based on this book as well?

</comment><comment><USER13> I've read parts of this, and it's excellent. Bengio is one of the best teachers of deep learning out there.

<comment><USER14> It seems a gentle enough introduction and yet not over-simplifying.

</comment></comment><comment><USER15> Very surprising that the PDF is not downloadable and the HTML is very hard on the eyes :(</comment>


Today (until 4pm): MIT Open House - <AUTHOR> http://mit150.mit.edu/open-house

<comment><USER2> Some friends and I demo'd our autonomous mobile robot <http://maslab.mit.edu/2011/wiki/Team_Two/Final_Paper> for this and it was a lot of fun. I nearly lost my voice after only two hours. I wish it was more than just 5 hours though, at the very least because I would've liked to see all the neat things myself. Unfortunately, MIT can't realistically have 20,000-30,000 extra people on campus for long periods of time.

<comment><AUTHOR> Yeah, I didn't even know about it until today. I saw fliers for the Cambridge science festival, but it was basically just a calendar of events and I didn't notice anything on the scale of the open house.

</comment></comment><comment><USER3> It was like Geek Disneyland - frustrating because there's so much wonderful stuff and not enough time to see even a tenth of it. Man I love MIT.

<comment><AUTHOR> Yeah I probably saw even less than you, I definitely wish it was on for tomorrow too. One of my friends had to work today and would have loved to see some of the architecture talks. It makes me think I should be a little more proactive about checking calendars since I'm sure there are other opportunities to see exhibits and lectures, even if they aren't as extensive as today.</comment></comment>


Architectural Changes in Math.js v2 - <AUTHOR> http://josdejong.com/blog/2015/08/08/architectural-changes-in-mathjs-v2/

<comment><USER3> Something I'd really like Math.js to do is to be able to simplify expressions.

Say I had "abx + c = y", I'd like to substitute values into a,b and c and get something like "5x - 1 = y" back. But Math.js won't allow you to have these kinds of "symbolic" variables in their expressions - trying to eval statements such as the ones above will just return an error saying x and y are undefined. Huge bummer in my view.

Anyone know about easy solutions to this problem? I may end up doing it server-side before I render the equations I need, but I'd _really_ like to use someone else's open source project rather than try to figure this stuff out myself...

<comment><USER4> You should check out this algebra.js project I've been working on for funsies.

      var exp = new Expression("a");
      exp = exp.multiply("b");
      exp = exp.multiply("x");
      exp = exp.add("c");

      console.log(exp.toString());

      exp = exp.evaluateAt({a:5, b:1, c:-1})
      console.log(exp.toString());

      var eq = new Equation(exp, new Expression("y"));
      console.log(eq.toString());

      var x = eq.solveFor("x");
      console.log("x = " + x.toString());

Yields:

      abx + c
      5x - <USER2>
      5x - 1 = y
      x = 1/5y + 1/5

You can play with it here: [http://algebra.js.org/](http://algebra.js.org/)

<comment><USER5> @nicolewhite algebra.js looks really interesting. I hadn't seen it before. Maybe we can somehow join forces (I'm the author or math.js). If you're interested just drop me a mail or open a discussion on github.

<comment><USER4> Sure. I just looked at the expression tree you linked to above and it looks like pretty similar functionality.

</comment></comment></comment></comment><comment><USER6> Sounds like a library like this would be a great place to use ES7 decorators - except that function hoisting spoils the party :(</comment>