Hacker Newsnew | past | comments | ask | show | jobs | submit | spacechild1's commentslogin

That's not downsampling, that's reducing the bit depth. The bit depth determines the resolution of a single sample, i.e. the number of possible values it can represent.

Luckily, with C++17's if-constexpr and C++20's concepts, SFINAE has become mostly obsolete for new C++ code (unless you have/want to support older C++ standards).

He is indeed a very technical and nerdy person. For example, he was an early adopter of the SuperCollider audio programming language.

Fun trivia: he was trolling the SuperCollider mailing list under the alias "eric hard jams" which is an anagram of Richard [D.] James. Some of his messages were truely horrendous and he got kicked out eventually. He is quite a character...


I should clarify that it hasn't been 100% confirmed that "eric_hard_jams" was really him, but many people on the list thought so, including James McCartney himself:

  Date: Wed, 17 Jan 2001 22:20:06 -0600
  From: James McCartney <---@---.--->
  Subject: Re: [ OT ]very low signal to noise ratio .
  
  on 1/17/01 9:18 PM, eric_hard_jams at eric_hard_jams@btinternet.com wrote:
  
  > 
  >> ok boss. i'm really sorry. back to normal now. much better.
  >> my apologies.
  >> 
  > ass licker.
  > 

  shut the F up already, richard.
https://www.audiosynth.com/files/sc-users-archive/v01.n226

JMC and RDJ know each personally and hung out together. Here's a picture of the two together: https://www.reddit.com/r/aphextwin/comments/6oheli/screen_ra...


It's worth little coming from some random HN guy, but I can confirm eric_hard_jams was Richard D James. We used to hang around similar circles online, and there were a couple meetups. There were a bunch of other Rephlex and Rephlex-adjacent musicians using pseudonyms, as well.

Richard was sort of annoying at times, in the way someone on the spectrum can be. A bit of a troll with poor timing, and poor social skills, but a good, kind lad who spent his time doing things completely orthogonal to anyone else and that made him quite interesting.

I lost touch with him in around 2000-2001. He kinda went dark in those circles. I don't know what he's up to these days, probably raising a family like me.


> probably raising a family like me.

That he did, according to a surprisingly extensive 2014 interview: https://www.pitchfork.com/features/cover-story/reader/aphex-...


That's interesting!

There is also this email from Tue, 16 Jan 2001 19:02:12 +0000 in https://www.audiosynth.com/files/sc-users-archive/v01.n225 where he is clearly talking as Aphex Twin. He might be just an impersonator, but given that he speaks directly to James and James calls him Richard has me pretty convinced that it's actually him.


Sure thing, Jake

Funny useless trivia: Jake is not my actual name. It's from a movie. :-P

That audiosynth link is a fine thread for anyone lamenting the loss of civility on the modern internet.

Was it confirmed that eric hard jams was actually him?

How strange it is that we so easily forgive bad behavior from people we love.


>How strange it is that we so easily forgive bad behavior from people we love.

That's part of what loving someone means. It's easy to love someone convenient who never does anything to bother or hurt you.

Besides, he was trolling. It's not like it's a big deal. If you were on a mailing list or usenet group or forum in the 80s and 90s everybody did that, and few if any had an issue with it, we could take it!

We not only forgive but tolerate 100000x worse stuff everyday that directly fucks our lives that we could prioritize not tolerating.


It's not in vogue these days, but rather than forgiving, we can compartmentalise and rationalise.

Being a bad person in one domain doesn't mean that someone can't generate value in another.


The genius label we bestow on a select few is often a license to behave badly. I always enjoyed Richard’s music but never quite bought the stories told about him.

Why are you putting "value" above human decency? Maybe you shouldn't be considered to generate any "value" if you put misery on others, how can any "value" make up for the direct suffering?

There are plenty people just the same, with the same capabilities without the quality of being a tarpit of suck.


>Why are you putting "value" above human decency?

Because human decency is often overrated and hard usable value is often underrated.

If we removed the value (changes, inventions, artworks, products, etc) made by people which were lacking in "human decency" in this or that aspect, billions would be poorer, sicker, die sooner, and have much worse cultures.

>There are plenty people just the same, with the same capabilities without the quality of being a tarpit of suck.

Understanding is a great component of human decency too, as is not being a sanctimonious hollier-than-thou type. For example, not labelling someone who "wrote something mean in a forum" as "a tarpit of suck", as if that defines them totally, or as if the persons making such statements shit doesn't smell.

Plus "plenty people just the same, with the same capabilities", really? As if the output of an artist is interchangeable with that of another, so that we can just discard those that have done such grave offenses as "being rude on a forum" and just listen to another?


Is there really a distinction? Isn't the altruistic concept that we all have innate value also a statement of offering value, even by our mere existence?

I find it so odd that people overlook severe faults in those whose other qualities they rather love and greatly appreciate. It seems so unjust, yet it's universal.


I know I have made many mistakes in my life, especially as a dumb kid.

We can't all be on your level of moral perfection.


A lot of James' discography is predicated on making other people suffer. The album art is offputting, the track listings are usually cluttered and useless, his music videos are scary and confusing, random tracks are designed to torture you (eg. Ventolin), and half of his music is released under unrelated aliases.

If you're not familiar with Aphex Twin, it's hard to understand that this hatred does nothing to inhibit his success.


Just because art is challenging and unpredictable doesn’t mean it’s interned to make you suffer.

Is Giger’s art created to cause suffering? How about Beksiński’s paintings? The emotions they invoke are not happiness or joy, but neither are they purely dread or loathing.

Aesthetic pursuit isn’t solely (or even primarily) about the emotions it conjures in the consumer.

Remember: the customer is always right in matters of taste.


What? Just because an artist makes artworks that some people find challenging does not mean that they hate their audience or want to make them suffer.

Also, what you personally find offputting, other people may enjoy. For example, I don't find 'Ventolin' particularly challenging to listen to.


Hofstadter's GEB is challenging. Francis Bacon's Popes are disturbing. Aphex Twin is irritating. None of these people hate their audience and they're all pushing boundaries.

Andy Kaufman was challenging, disturbing, and irritating in equal measure and he did hate his audience.


You guys are doing a lot of hand-wringing over what was likely just tongue-in-cheek trolling among people who considered each other friends. I could easily see creating a thinly veiled persona to do some annoyance of a close friend and call them an ass-licker in my early days. It’s a form of affection.

It hasn't been confirmed 100% but I remember reading a post by James McCartney (author of SuperCollider) himself, going something like "Shut the fuck up, Richard!". Since they both knew each other personally, I assume that JMC thought that "eric hard jams" was indeed Richard James.

It’s strange but common. I love the music of Miles Davis and consider him a genius. I also give him a pretty poor review in terms of his behavior as a human being.

People are complex.


There's also that fact that Miles Davis doesn't get to review our own behavior as human beings. He might not have liked us as his audience either. His behavior is publicized, and ours (whether it is) is not.

I mean, I haven't even seen any of the messages. Just a one sentence accusation and no proof that it was actually him. Jumping to the decision that there's anything to forgive would be weird based on this.

Even if it was true, who cares? I like the guy's music, it's had a strong influence on me at various times in my life. But I have never had a strong opinion of whether I like him, and I still don't. Why would I?


He (presumably) trolled a mailing list for a short period of time in the early 2000s. If that's the worst thing he's done, there's not much to forgive.

If you look in the right places, you'll find some meetup photos that essentially confirm it.

>Was it confirmed that eric hard jams was actually him?

Nope. By then RDJ (the actual person) was of course known for using anagrams so it would be an obvious thing to do for any troll.


Has anyone used SuperCollider or computer music framework to make anything resembling a pop song?

Look at how easily a producer can make a pop song in Ableton https://youtube.com/watch?v=F5CPQ8LU36w


SuperCollider would be the wrong tool for the job.

Ableton includes a fairly comprehensive SDK called Max for Live, it's been used in a handful of popular tracks before.

Pure algomusic/tracker setups are usually a poor fit for pop music, though. DAWs have indispensable tools for vocal processing that you cannot forego most of the time.


Ableton is like the modern day guitar.

SuperCollider and music programming languages are like the modern day bass clarinet.

There isn't much bass clarinet in modern pop music either. Part of what defines pop music is the familiarity of the sound and popular expectation of what music is supposed to be.


Why would anyone use SuperCollider or a computer music framework to make something resembling a pop song?

Yeah BT lol.

This is probably the best thing I’ve ever read on Hacker News .. seriously, honestly.

I mean, wtf, the mailing lists are astonishing if you think about them .. like, how UUCP and mailman and qmail/sendmail used to be all you need to get access to the archives …


The fact that we can still access and search these archives 20-30 years later is really amazing. It gives you a glimpse into a different time period. That's why mailing lists and forums are so important! Fortunately, SuperCollider still has a quite active forum (https://scsynth.org/). It makes me sad that so much communication has moved to proprietory platforms like FB groups or Discord servers, most of which will be forever lost in time.

Can you link to the horrendous messages or summarize them?


“Ooh look, a girl on the sc list. Let’s rape her”

I assume if this was brought to his attention today, he would denounce anything said. People mature. Boy, if League of Legends chat logs from 2012 ever got out...

> The artists are calling the AI companies oppressors because they are breaking the artist's stranglehold on the market.

Tt's because these companies profit from all the existing art without compensating the artists. Even worse, they are now putting the very people out of a job who (unwittingly) helped to create these tools in the first place. Not to mention how hurtful it must be for artists seeing their personal style imitated by a machine without their consent.

I totally see how it can empower regular people, but it also empowers the megacorps and bad actors. The jury is still out on whether AI is providing a net positive to society. Until then, let's not ignore the injustice and harm that went into creating these tools and the potential and real dangers that come with it.


Well, this thread certainly hasn't aged well. Lots of people here trying to spin this as an act of liberation while the real motivation has been more than obvious.

Turns out the Trump administration doesn't even bother to change the regime as long as it is willing to give up the oil reserves. They just kidnapped Maduro to set an example and coerce the regime to cooperate. Trump and Rubio aren't even trying to hide it, they are saying it plain and clear on national TV!


> To steel-man and provide a more charitable interpretation of last night:

But why? Why not stick with the most probable explanation? The idea that Trump's primary goal is to restore democracy in Venezuela is beyond absurd.


There's nothing to read between the lines. Trump has stated very clearly that he wants to "take back" the oil.

> Why? Maduro was smuggling drugs in USA. Huge operations.

What are you talking about? The war on drugs is just a bad excuse. Trump keeps claiming that Venezuela is responsible for the fentanyl crisis, which is demonstrably wrong.

And if the US administration was so worried about drugs, why did Trump pardon Juan Orlando Hernández, ex-president of Honduras, who had been sentenced to 45 years for drug trafficking? https://www.bbc.com/news/articles/c9qewln7912o


> Closures and precise control over memory allocation doesn't play very well together.

How so? In C++ a lambda is just a regular type that does not allocate any memory by itself. You have in fact precise control over how/where a lambda is allocated.


True, but once a capture needs to survive the parent function scope you'll need to store it somewhere, either via a std::function object which has opaque rules on whether a heap allocation happens or via your own std::function implementation where you define the heap allocation rules but then will have to face discussions about why you're rewriting the stdlib ;)

Any C implementation of capturing lambdas has the same problem of course, that's why the whole idea doesn't really fit into the C language IMHO.


I did a version with explicit capture objects for fun: https://github.com/fuhsnn/c-extensions#extended-capture

Basically, with each capturing lambda, a context type _Ctxof(fn) is created that users can then declare on stack or on heap themselves.


Interesting! Can you tell me about your experience? How does it compare to the versions in N3654? (where this idea comes from) https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3654.pdf

- Non-capturing isn't that much simpler to implement for the front-end, because they still need to distinguish between a file-scope name or a shadowing local in parent function. And once you have the code to do that distinction, it's not that far away from implementing captures.

- From implementor point of view I just don't like the idea of a new category of function qualifiers, so I used "_Wideof(int(void))" over "int(void) _Wide", and "int fn({...}, void)" over "int fn(void) _Closure/_Capture(...)".

- During prototype scope of the inner function, parameters may have VM type that reference from parent's local scope, so the capturing (or not) effectively start at prototype scope, earlier than C++'s model. My syntax has capture clause right before parameters so it is somewhat manage-able in one pass; for function qualifier syntax the parser probably need to either delay semantic checking the VMs or skip ahead to find _Closure/_Capture before processing the parameters.

- Both N3654-example6 and N3694-4.4.6 implicitly create capture context on stack then provide reference to it (N3654 with &_Closure(), N3694 with inner function's name). My version is lower level in that only the type of capture context (_Ctxof(fn)) is implicitly created, users then call a helper (modeled after va_start) to initialize the context object. I believe it also reduces surprises from by-value captures, since users clearly see where they initialize a context object relative to local variable changes.

- Sans syntax, N3654's "specified argument" is pretty close to my implementation, just need to change the source of context pointer from r10 to the argument in function prologue.

- I implemented wide function pointers as generalized "function pointers with context pointer pushed in r10", so it's also possible to make wide pointers from regular functions, they'll just be called with an extra nullptr in r10. I think it's more flexible this way.

What I did was mostly "the compiler will need these anyways" so should be adaptable to whatever WG14 settled on, or if I ever want to implement C++11 lambda.


Thanks! What I do not quite understand is the need for a capture clause that lists the captured variables. As a user, I do not want to list my captures. As a code reviewer I certainly do not want value capture that create a modifiable copy with the same name, or any ambiguity on whether something is a copy or not. I just want to access my variables. So what is really the point here?

Regarding "also possible to make wide pointers from regular functions", this exactly the reason why I like the qualifer version: The usual conversion rules for qualifiers would allow this conversion implicitly, while back-conversion is not allowed (or only with cast).


What kind of CVE would you expect? The destination buffer will always contain a valid null-terminated string (as long as the buffer size is not zero).


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: