Why is the function SHStripMneumonic misspelled? - <AUTHOR> https://blogs.msdn.microsoft.com/oldnewthing/20080519-00/?p=22273 <comment><USER4> > so there would have to be some coordination among the teams so everybody > fixed their spelling at the same time.

What a strange approach. Why not create a function with the correct name, put the code in it and redirect the misspelled function to it?

Mark the bad function deprecated, warn the teams and after a few release cycles, remove it.

<comment><USER5> One of the central reasons for Windows's success is backwards compatibility. 16-bit Windows 3.1 applications still work in Windows 10. There are countless teams at Microsoft whose sole purpose is to verify backwards compatibility with almost every piece of software that more than a handful of people are running.

Public API contracts are NEVER intentionally broken.

<comment><USER6> > 16-bit Windows 3.1 applications still work in Windows 10

No they don't, unless you're somehow running Windows 10 on a 32 bit machine.

Been bitten a few times by programs bundled using ancient 16-bit InstallShield. It _does not_ work on Windows 10.

<comment><USER7> "Somehow"?

32-bit Windows still exists.

<comment><USER6> Intel hasn't sold a 32bit chip in over 10 years.

<comment><USER8> These are still in production: [https://en.wikipedia.org/wiki/Intel_Quark](https://en.wikipedia.org/wiki/Intel_Quark)

They're essentially a 486 core with some Pentium instructions added.

<comment><USER9> While technically correct sth. like the Quark is probably not what he meant but some earlier models of the Atom lineup (<= 10y, 2008 onwards) are 32bit chips. There are chips released as late as 2011 [1] which lack 64 bit support.

[1] [http://ark.intel.com/products/55663/Intel-Atom- Processor-Z67...](http://ark.intel.com/products/55663/Intel-Atom- Processor-Z670-512K-Cache-1_50-GHz)

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> Okay so the ultimate cause is apparently "because Microsoft was _legally_ compelled to publicly document poorly-designed internal functions as part of the DOJ anti-trust suit".

Go figure why Raymond Chen decided to do a blog post on this though, since apparently that is a verboten topic which leads to a weirdly sparse article that doesn't answer its title question, and a censored comment thread.

It's annoying, but given that it's nearly a decade old it's probably not worth getting upset over it.

<comment><USER11> Thanks, this is the only thing that makes sense as the real answer.

</comment></comment><comment><USER12> Raymond Chen's blog post are always interesting and enlightening to read and we should be grateful that he takes the time and effort to write them - <USER2> his people skills appatently could use a good bit of improvement.

So he teases a significant detail of the answer, then notes that not only won't he explain but he will not allow anyone else to explain either - <USER3> reason given. Then, when people unsurprisingly do discuss it, he gets mad and deletes the comments.

That's in addition to a lot of aggressive or condescending answers I've read to what seem quite reasonable questions.

If commenters are such a problem, wouldn't it by now be better to simply close comments completely?

<comment><USER8> I don't follow his blog but it does turn up in searches, which is how I usually read his posts, and that was enough to see the same sort of attitude you allude to. He seems to really enjoy gloating over the fact that he knows some things about Windows but others don't.

It's a different type of aggression than e.g. Linus or Theo, whom one can often find themselves agreeing with.

</comment></comment><comment><USER13> See also: creat()

[https://linux.die.net/man/3/creat](https://linux.die.net/man/3/creat)

It goes way back to the murky beginnings of Unix.

Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: "I'd spell creat with an e."

<comment><USER14> That's not quite the same thing as it's not so much a misspelling as a result of being restricted to five chars. (on some certain system the details of which doesn't interest me)

But I do wish they had used one abbreviation for control rather than two - _fcntl_ vs _ioctl_.

<comment><USER15> Probably _fuctl_ was deemed undignified, and _icntl_ unhelpful.

<comment><USER16> fnctl

Naming is hard.

</comment></comment></comment></comment><comment><USER17> For anyone wanting to see the linked IOCCC program (now-broken link in the third paragraph), here it is: [http://ioccc.org/1987/hines/hines.c](http://ioccc.org/1987/hines/hines.c)

"This program was designed to maximize the bother function for structured programmers. This program takes goto statements to their logical conclusion. The layout and choice of names are classic."

</comment><comment><USER18> The order they are referring to is probably the DOJ settlement in 2002. There used to be a page called "Settlement Program Interfaces" in MSDN. This was also when winternl.h was invented.

<comment><USER19> Is this what you mentioned in the comment that Raymond deleted?

<comment><USER18> I should also mention these two posts:

[https://blogs.msdn.microsoft.com/oldnewthing/20100804-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20100804-00/?p=13233)

[https://blogs.msdn.microsoft.com/oldnewthing/20161104-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20161104-00/?p=94645)

It now says that "First-time commenters will be moderated." BTW. The feature the 2016 blog post talked about was invented in 2011 or so as part of Win8 BTW.

</comment></comment></comment><comment><USER20> Not sure why they couldn't rename it, make the previous function an alias of the new one, and deprecate it.

<comment><USER21> If it made it into a public Windows release, and is useful (well clearly it's useful, since multiple internal teams called it), the deprecation cycle is measured in decades. It's not worth deprecating something because it was poorly spelled, when there are lots of other things to deprecate for good reasons.

</comment></comment><comment><USER8> I pronounce "mnemonic" without any "u" sound, and I've almost never heard otherwise, so this particular misspelling is a little puzzling --- unless the original author was thinking of "pneumonic". I wonder if it is a UK vs. US difference.

<comment><USER22> I also pronounce it without an "u" sound. I'm never sure what to do with the "mn", though. For all I know, it is impossible to pronounce two consonants in that way, you'll have to add a (implicit) vowel.

Do people say "nemonic", or "me-nemonic" or "em-nemonic"? If I really try to avoid an implicit vowel, I could say "hmmm-nemonic", but that sounds weird, and there is still a vowel in there.

I once heard the suggestion to join the "impossible" consonant to the previous word, so "the mnemonic" would be "them nemonic". It came up with "chtonic" and "chtulu" (the chtonic gods = "theχ tonic gods" / "thek tonic gods"). I like that idea, although it seems highly nonstandard.

<comment><USER23> Where is the vowel between m and n in "hmmm-nemonic"? If you put your tongue tip up before you open your mouth (or even while you do it), the airflow is restricted throughout the whole transition.

If the consonants in the cluster are unvoiced, it is even easier to avoid an implicit vowel by simply not voicing anything and pronouncing the individual consonants in fast succession, just like "ch" is formed from "t" and "sh".

<comment><USER22> What I wrote as `h` functions as a vowel here. Is is by definition impossible to have a consonant without a vowel. When you say "mmm", it is really "ummm" or "emmm". Even if you just humm to make the m, you'll have an initial sound at the beginning.

I think of it a bit like fourier analysis. Like you automatically have higher frequency components when you have a rectangular wave form. Turning on the "m" out of nothing looks or sounds like an "e". I think you could make a recording of "mmmm", cut of the beginning or the end, and the transition from/to silence would still constitute a vowel.

You can choose to have the vowel before, or after the m. Most often I've heard "m(e)nemonic".

<comment><USER23> > Is is by definition impossible to have a consonant without a vowel.

I'm not sure what definition of vowel you subscribe to, but I tend to mean "a sound pronounced with an open vocal tract" [1], in which case you can have consonants without vowels. In particular, a simple transition from silence to voice does not constitute a vowel (nor does it sound very much like one, in my opinion).

I also don't understand how you could choose to have the vowel before or after the m; under your definition of vowel, it would seem like every "mmm" would have to be "(e)mmm(e)" instead.

[1] [https://en.wikipedia.org/wiki/Vowel](https://en.wikipedia.org/wiki/Vowel)

<comment><USER22> Just what I learned in elementary school (1st grade in the US). Vowels are the five letters of the english alphabet that are special, because the pronunciations of all other letters contain a vowel. That's why the others are called consonants (with-sounders).

I know that is highly unscientific, and probably doesn't reflect current linguistics, but it still makes sense to me :-)

<comment><USER23> What you learned is not completely wrong, but

1\. it only applies to English,

2\. aeiou are the five classical vowels of the Latin alphabet, but English has more than five vowels (see the table here: [https://en.wikipedia.org/wiki/Help:IPA_for_English](https://en.wikipedia.org/wiki/Help:IPA_for_English))

3\. although in English every consonant occurs in a syllable together with a vowel (as a with-sounder, if you will), there can be multiple consonants in one syllable. E.g. "claps" is a single syllable with one vowel "a" and four consonants. There is no vowel directly adjacent to "c" or "s". This is also the case for "mnemonic": the syllable "mne" has one vowel and two consonants. (Except in the English pronunciation, where the "m" is dropped.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> This story just teases that there will be an answer and then doesn't really give one. To paraphrase the ending: "We had to. To those writing in to explain that we didn't have to, trust me, we had to."

</comment><comment><USER25> Deprecation is a really good solution for fixing things "eventually" but _only_ if you pair it with a plan for making the old one go away forever (a plan _that you stick to_!).

If you aren't serious about _actually_ removing a bad API at some point, don't change anything. Otherwise, you create _two_ things that need to be tested/supported/kept binary-compatible/etc. instead of one, raising technical debt when you were supposed to lower it.

</comment><comment><USER26> TIL that "referer" is a misspelling of "referrer" (from the top comment).

</comment><comment><USER27> For the same reason the Referer header is misspelled in HTTP - because life can sometimes be that way.

[https://en.m.wikipedia.org/wiki/HTTP_referer](https://en.m.wikipedia.org/wiki/HTTP_referer)

<comment><USER11> Interesting, "referer" always looked believable to me as an alternative spelling from American English, by analogy with the likes of "traveler". But apparently not, because the accent is on the syllable that would be changed.

I found some answers about exactly when US and UK English differ on this point, though none of them is comprehensive: [https://english.stackexchange.com/questions/9192/cancelled-o...](https://english.stackexchange.com/questions/9192/cancelled- or-canceled)

</comment></comment><comment><USER28> The correct link to the IOCCC entry is:

[http://www0.us.ioccc.org/1987/hines/hines.c](http://www0.us.ioccc.org/1987/hines/hines.c)

</comment><comment><USER29> I hate it when people misspell functions and commands to save one letter. umount comes to mind.

<comment><USER30> While true, I don't think that's related to the OP.

</comment></comment><comment><USER31> See also Adobe's amusing apology in the PostScript Red book for "guillemot".

</comment><comment><USER32> > The effort required to fix the spelling was a bit more than usual, since the > function was used by multiple teams, so there would have to be some > coordination among the teams so everybody fixed their spelling at the same > time.

I thought all of Microsoft's code was in one giant repo anyway, so it would literally just be 1 commit to update this.</comment>


Increased Acetaminophen Use a Major Cause of Autism? - <AUTHOR> http://www.greatplainslaboratory.com/home/eng/Acetaminophen.asp

<comment><USER2> My first rule with any site claiming to have profound research on topics such as autism, gluten sensitivity in non-celiacs, "leaky gut", etc: is something being sold anywhere on the site? If so, most credibility is being lost, as there is clear motive for what I've come to call "selective science".

Second rule: how frequently are correlations between different groups, subjects or metrics referenced versus biochemical changes, group-vs-control measurements, etc. More frequently? Even more credibility lost.

Third rule, and more of a "gut instinct": is it written in an objective tone, or is there language priming the reader to react to something in fear or uncertainty. A paper shouldn't be trying to engender an emotional response. If it is: credibility lost. Puts the author in the realm of psychics who claim to speak to your dead relatives for you.

Fourth: Is there a statement of potential conflict of interest? If not, odds are there is one.

My son is autistic. He's not sensitive to gluten, he and his sister got all their vaccinations, he gets Tylenol or Ibuprofen when in pain, and he will not be subjected to chelation, rice water diets, or any other such nonsense. Real studies will change and influence how his condition is managed. Meta-papers like this are tantamount to numerology essays about the connection between JFK and Lincoln's assassinations.

<comment><USER2> Incidentally, and I don't want to influence or prime anyone reading this so I'll simply suggest you look it up yourself: Dr. Shaw runs a company that sells mail order tests for (among other things) "heavy metals" in your child. Your child is given a chelation agent to increase the excretion of said metals, and your child's resulting scores are compared to those of people who were not given the chelating agent. Then (surprise!) you can buy his books or his treatment medications, and even get more tests designed to instill fear, uncertainty and doubt.

Never you mind there's no science-based treatment option here, no double-blind studies (or, indeed, any at all). There are plenty of anecdotes, and if you want the best for your child, anecdotes are enough, right? Affirmations of success from people who paid out the ass to experiment on their unwitting children, each one of those is worth two or three subjects in a real scientific study, right?

Sorry. I'm passionate about this subject in particular.</comment></comment>


Ruby 2.0 Refinements: Monkey patches done right - <AUTHOR> http://yehudakatz.com/2010/11/30/ruby-2-0-refinements-in-practice/ <comment><USER2> Or wrong. The current thinking is that they won't go in at all unless some significant performance issues can be resolved, but separate to that, a _lot_ of people really dislike "refinements". Indeed, I've struggled to find anyone on IRC to speak in support of it :-)

<comment><AUTHOR> Seriously? Open classes have some many problems[1], that making the scoped, like implicits are in Scala, allow library creators to monkey patch to their hearts content without messing up with gem creators.

The comments on the thread were quite positive as well (Charles Nutter did raise some important questions though[2])

[1] [http://metaphysicaldeveloper.wordpress.com/2010/03/31/improv...](http://metaphysicaldeveloper.wordpress.com/2010/03/31/improving- ruby/)

[2] [https://groups.google.com/forum/#!msg/ruby-core- google/8SCc2...](https://groups.google.com/forum/#!msg/ruby-core- google/8SCc2rHOryg/PKLdBVk3zHwJ)

<comment><USER2> There's also this recent ruby-core discussion:

[http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby- cor...](http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby- core/39986?39811-40261+split-mode-vertical)

<comment><AUTHOR> Great discussion. Thanks for the link. I understand the sentiment of adding more and a bit complex features.

Of course, Ruby has continuations, which is probably one of the hardest things to use correctly, and very few people use it.

The problem is that the alternatives, assuming the performance can be solved, are worse: use class methods all over, wrapper objects for the pimped classes, or just ignore safety and use Open Classes.

All of which are more complex to gem creators. The more complex and the less fun we make it for people to create gems, the less gems we will have.

I'll see if I can use ruby macros to implement it on 1.8.7, and make a better case for it.</comment></comment></comment></comment>


Procedurally generated electronic music - <AUTHOR> http://signalsandsorcery.com/ <comment><USER2> Raymond Scott[0] (1908-1984) comes to mind.

He designed rhythm generators and automatic baseline sequencers. He died trying to complete building a monster electronic instrument called the "Electronium" of which only one incomplete and partially functional example exists, owned by Mark Mothersbaugh.

I only wish his devices were documented or understood such that simulators or reproductions could be built.

[0]: [https://en.m.wikipedia.org/wiki/Raymond_Scott](https://en.m.wikipedia.org/wiki/Raymond_Scott)

[1]: [https://youtu.be/0V2TZKcWnXE](https://youtu.be/0V2TZKcWnXE)

[2]: [https://youtu.be/o6VsZiNjjZE](https://youtu.be/o6VsZiNjjZE)

<comment><AUTHOR> Wow, that is awesome. I never heard of that guy.

<comment> uhoh-itsmaciek Scott was great. The Manhattan Research, Inc. compilation chronicles his electronic music work, and while a lot of it is outtakes and commercial jingles, it's fascinating.

Fun fact: Scott also had a jazz combo and, among other things, recorded Powerhouse [1], which became a cartoon staple.

[1]: [https://www.youtube.com/watch?v=qaC0vNLdLvY](https://www.youtube.com/watch?v=qaC0vNLdLvY)

</comment></comment></comment><comment><USER3> It's interesting: some of the earliest European polyphony could be described as "procedurally generated"; the cantus firmus was assigned liturgically, and the descant could be determined by what we would today call an algorithm (sacred music was at this point considered science rather than a creative art). Plus ça change...

<comment><USER4> Agree.

Music is by and large about structure. What made it worth listening to was this structure combined with human imperfection in the details and once in a blue moon melodies and harmonies that sound like they are there without being actually played.

Of known composers perhaps Bach was at the time the most mathematical of them.

Within the next decade I believe algos will be able to write hit's. Already today a lot of the things we like to hear is really using technology to create soundscapes and hooks we would never be able to create as humans.

<comment><AUTHOR> My bet is we will see DAWs that essentially offer composers shortlisted options to choose from. In my SignalsAndSorcery project I am really just using machine learning to find composition options that make sense in the give context (based on my data set). A DAW could just keep presenting a series of options to choose from and almost anyone could be a composer.

<comment><USER5> I'm currently working on a DAW, and this is definitely the direction we'd like to head. In our previous version, we added some basic chord progressions. The next most likely chords are suggested on statistics from popular music. But I'm stuck on where to take it next. I have some ideas for a melody generator, but I don't really know anything about machine learning, etc. When you are ready to implement you API, I'd be very interested in talking to you. Send me an email at email@example.com

<comment><USER3> I'm interested in this; mind if I tag in too?

</comment></comment></comment></comment></comment><comment><USER6> Here's a winning demoscene production, 256 bytes, on a Commodore 64.

[https://www.youtube.com/watch?v=sWblpsLZ-O8](https://www.youtube.com/watch?v=sWblpsLZ-O8)

Technical discussion here: [https://linusakesson.net/scene/a-mind-is- born/](https://linusakesson.net/scene/a-mind-is-born/)

<comment><AUTHOR> It blows my mind to think people could do anything with that little RAM. I'm the author of this project & it chews up about 32gb of ram to pump out one track.

<comment><USER6> Well, yours _is_ using significantly more advanced music sources and makes much more music.

</comment></comment></comment><comment><USER7> Academia is significantly behind the times in this area

Artists like Autechre and related links in this thread have been doing this for years using Max/MSP, to a much greater effect (albeit it's apparently a hybrid where the humans are at the "control panel" of the generative engine guiding it in the direction they want)

[https://www.youtube.com/watch?v=wdKIJHXzPkk](https://www.youtube.com/watch?v=wdKIJHXzPkk)

</comment><comment><USER8> Years ago I remember listening to algomusic on the Amiga. Every so often I do a search to see if anyone has made a version that works on Linux, but with no luck. This is getting there, but still feels a bit rough around the edges.

<comment><USER8> A quick search found the the author of AlgoMusic has moved on to a new project

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

Some of the examples sound even better. That's my evening sorted.

<comment><AUTHOR> The soundhelix examples sound really good.

</comment></comment></comment><comment><USER9> Oh this is very cool. The structure reminds me of Matthew Brown's "Music for Shuffle" project: [http://musicforshuffle.com/2014/04/06/session1/](http://musicforshuffle.com/2014/04/06/session1/)

</comment><comment><USER10> Who owns the copyright on procedurally generated music?

Mostly curious since some of these sound better than the ambient tracks you get in games. Even better, you could constrain the parameters of the generation to have each instance of a game generate different, but thematically similar, procedural music.

<comment><USER5> > 503.03(a) Works-not originated by a human author.

> In order to be entitled to copyright registration, a work must be the > product of human authorship. Works produced by mechanical processes or > random selection without any contribution by a human author are not > registrable.

Possibly nobody, but it depends how much input the program requires to generate the output. Just press a button and a song comes out -- can't be copyrighted. User has to enter a lot of parameters to generate output, user gets get copyright.

<comment><USER11> _Just press a button and a song comes out -- can 't be copyrighted._

I wonder: what would it take for a machine-generated work to be considered a work derived from a human-generated work? While the machine-generated work still wouldn't be copyrightable[0], would that prevent others from using the machine-generated work without an appropriate license?

(IANAL.)

[0] «To be copyrightable, a derivative work must incorporate some or all of a preexisting "work" and add new original copyrightable authorship to that work.» [https://www.copyright.gov/circs/circ14.pdf](https://www.copyright.gov/circs/circ14.pdf) [PDF]

</comment></comment></comment><comment><USER12> This was actually much better than I expected. Wondering what kind of neural net can do this, and what are the outputs. It sounds a bit "phasey" as if there is an IFFT step.

<comment><AUTHOR> So its not just a single neural net. Its a bunch of different ML algorithms chained together. I'm essentially automating a 12(ish) piece electronic band. So first I have a ML algorithm that makes a chord progression. Then another that makes a bassline from the chords. Then another that makes a beat from the bassline & the chords and so on. At each step it uses the selected patterns to predict the next layer to be added. So to answer the question directly you can use RNN for some timeseries stuff. To decide if rhythm pattern are compatible I found success with CNN, random forests, and support vector machines. I even found you can make reasonable chord progressions just using N-grams. What I'm trying to say is I found I had to make an entire audio production pipeline that uses ML at each step of the way.

<comment><USER13> Are you planning to describe all that in more detail? I skimmed the 4 blog posts you published, but it's still not clear to me how the music is being generated.

Also, why did you decide to separate the "layers"? Technically, an RNN trained on similar music should be able to generate all "layers" simultaneously.

<comment><AUTHOR> I will hopefully add more detail eventually. When I say layer I am taking about a music layer like a melody not a layer of neurons. Most of the music is midi rendered with vst synths or sound fonts.

<comment><USER13> Yes, that was what I meant when I said "layers" as well. RNN can generate all layers at once (more than one note per time step for a single instrument, and more than one instrument per time step overall). Basically what I'm saying is if you train it on such complex music, it will learn to generate it.

<comment><AUTHOR> Ah!, I think I understand what you are saying. I'm not sure if you used a NN before but you will notice that there is an exponential relationship with the number of inputs and the size of the training set required. Because I don't have millions of perfect training data I need to break down the problem and make ML models to deal with specific problems. For example predicting if a drum beat is compatible with a bassline etc.

<comment><USER13> What exponential relationship? Can you point me to any papers about it?

It's actually quite easy to generate polyphonic (classical style) music with an RNN: just predict the entire note frequency range of one time step as a binary encoded vector. But yes, I can see how for multiple instruments, the sparsity of inputs might require more training samples.

I'm wondering if the "layered" approach has some advantages, perhaps more control over some aspects of the music?

<comment><AUTHOR> Ya, there is no official relationship. From my experiments the more inputs you have the larger the dataset required. I do not know what is best way to do this but the layered approach is how humans compose music so it made sense to try that. I'm not sure I agree that its easy to generate polyphonic music. I would like to be wrong but when you say "easy" I don't think you're referring to music that follows a harmonic structure or factors in timbre. Most music I hear follows structure with repeating themes etc. Not just a stream of conscious series of notes.

<comment><USER13> Well, I just tried googling "rnn generated music": [https://youtu.be/A2gyidoFsoI?t=1m44s](https://youtu.be/A2gyidoFsoI?t=1m44s) Sounds like a pretty good polyphony, but of course, it could be just overfitting on Bach training samples.

Here are a couple of more sophisticated (and original) pieces: [https://soundcloud.com/user-95265362/op-1-for-piano-solo- in-...](https://soundcloud.com/user-95265362/op-1-for-piano-solo-in-d-major) [https://soundcloud.com/user-95265362/op-21-for-piano-solo- ge...](https://soundcloud.com/user-95265362/op-21-for-piano-solo-genesis)

<comment><AUTHOR> Those do sound amazing! My goal is to create interactive music. If you noticed in my UI it can change at any point. In order to do that I think I need to premeditate the harmonic structure. i.e chord progression. I suspect that those RNN are not conforming to a predetermined harmonic structure. I doubt if you ask it say generate a piece following Dmaj9/Amaj/Bmin/Bmin it will understand that but I dont know.

<comment><USER13> _if you ask it say generate a piece following Dmaj9 /Amaj/Bmin/Bmin it will understand that_

Dmaj9/Amaj/Bmin/Bmin will be the seed sequence to the RNN. Of course, the network might ignore the seed, or if it's overfitting it will produce a chunk of the training sample which has this sequence in it, but you can definitely specify the starting point (and you usually do with RNNs).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> What do the icons mean? I can't figure it out.

<comment><AUTHOR> (project author here) Ya, sorry, its not clear at all. About 6 months ago I got the system working sorta ok, but i found it a bit boring. So I thought maybe if the algorithm generates N interchangeable variations associated with an emotion I could maybe make the music interactive. So the icons are going to represent a different emotion that a user can switch to at any point. Obviously its not really work very well. This site is ultimately a tool for me to test switching between variations. The end goal is not a website but to expose a music generating api that could be integrated into say, VR/game or something that might want interactive music.

</comment></comment><comment><USER15> Procedural music is really hard to get right.

</comment><comment><USER16> The breaks are unpredictable, kinda dope.

</comment><comment><USER17> jesus christ, BEWARE ITS LOUD</comment>


London Stock Exchange contractor 'suspended' after huge IT hit - <AUTHOR> http://www.computerworlduk.com/news/open-source/3247347/london-stock-exchange-contractor-suspended-after-massive-network-hit/

<comment><USER2> Some backstory from the article: "Last month, the LSE made the important step of allowing more IT personnel into its datacentre, expanding co-location beyond trading firms and to software firms – to install hosted systems and their own market data distribution platforms. It is not known if any of this raft of new companies entering the datacentre played a part in the outage."

</comment><comment><USER3> The exchange needs ot come clean about what happened. There is too much speculation.

<comment><USER4> On the contrary, there's just not enough of the right kind of speculation ;-)

<comment><AUTHOR> Gaius, I wonder if one vendor or trading firm was trying to cause trouble for another...

<comment><USER4> Ultimate insider trading, inside your rival's infrastructure...

</comment></comment></comment></comment><comment><USER5> I wonder how the contractor did this. If it was a physical attack (unplugged a bunch of cables), then it would mean that the LSE has a rather weak SPF vulnerable. If it was a software attack, it's probably even worse: it means that developers have way too much access to the production systems. In a startup, it's fine (necessary even) for devs to get access to production, but in a large financial institution, that's a huge no-no, both in terms of data protection issues and security.

<comment><USER4> HFT relies on colocation, which means, there's only a cage between different vendor's hardware.</comment></comment>


Show HN: A visualization of how far songs have traveled through space - <AUTHOR> http://lightyear.fm

<comment><USER2> This is really neat. I may be blind but I couldn't find a volume control and that music is darn loud.</comment>


Introducing Bwoken, UIAutomation test runner - <AUTHOR> http://bendyworks.com/geekville/lab_projects/2012/4/introducing-bwoken

<comment><USER2> Besides being incredibly slick, this looks very useful! I definitely will try this out with the tests we are writing for our iPhone app.</comment>


Shuttleworth reaffirms Canonical's lead design role in Ubuntu - <AUTHOR> http://www.markshuttleworth.com/archives/805

<comment><USER5> I hope that they will settle on the stock apps they are putting resources behind. I haven't used Linux on my workstation for a while now, but every time I look at Ubuntu it seems like they have new apps for core things like photos and such, and I feel sorry for people trying to migrate their data around and keep up with the latest releases.

It's really important that such fundamental apps are stable. Mom and grandma don't want to migrate their photos from F-Spot to <photo app of the year>. That is a pretty cruel task to burden average people with.

Best of luck to them though, and I agree that they have a better chance of mainstream success than any other distro. However, it's still going to be a lot of work to get there. Windows and OS X are not standing still.

<comment><USER6> A good point but I wonder how many Mom's and grandma's install operating systems on their computers. :)

<comment><USER7> You're right there are not many grand parents able to install an OS. But in our family the children offered a laptop three years ago to their mother - <USER2> never had a computer before. We installed Ubuntu on it and she is using it happily now for 3 years. We do not have a single problem with viruses and such. This is what was behind the decision to install Linux.

But to come back to the topic, the author of the parent comment is right - <USER3> is already difficult for old people to get used to their application, but if then every 6 month the applications for photos is changing it is a pain. So for my mother in law we go with Ubuntu LTS. I am a little bit worried how it will work out with the next LTS if it is going to be Unity :D

</comment></comment></comment><comment><USER8> I know it is a trivial point, but it's annoying to see somebody as bright as Shuttleworth misuse the phrase "begs the question."

<comment><USER9> How is that a misuse? Meaning changes depending on context, it's a well known feature of natural languages.

<comment><USER8> Meaning changes, but that doesn't mean that it is impossible for a native speaker to make an error. In this case, the phrase has a well-documented meaning (and a long history), and the usage here is clearly a misuse.

<comment><USER9> When lots of people make the same error, it gradually becomes part of the language.

</comment></comment></comment></comment><comment><USER10> I like it.

The last version had promise, but was somewhat half-finished. This time it's pretty good (though it still has bugs).

I love all the changes that make tiny netbook screens more usable (auto-hiding dock, the dissapearing menu bar, easy access to other apps, e.g. music skip, via the menu bar, auto-hiding scrollbars).

I'm somewhat unique in having a touchscreen netbook. It's mostly for the kids but the touch-able dock seems to be working for them.

For me, I like that they've went with a power-user friendly keyboard launcher similar to Blacktree's Quicksilver for Mac OS X (which Apple later copied into Spotlight).

Less importantly, I like the looks and the general simplification of the UI.

</comment><comment><USER11> I think that's good news. Designing by (the GNU/Linux) community has not really proved to yield impressive results in the past.

</comment><comment><USER12> That would be wonderful if their products weren't so disappointing. You can't throw a stick around here without hitting someone who has tried Unity and hated it, uTouch is utterly irrelevant to Linux on the Desktop (I thought this is what Ubuntu was about but I have been proven wrong). Juju might go somewhere, I haven't used it, but they've definitely got some competition in that space and considering their tone-deaf responses to users in the past I'm not confident it'll get any traction.

But this is all fine. They're trying new shit. I wouldn't complain if it was just that. It's the heel-digging that bothers me. It seems that Mark Shuttleworth has, rhetorically, tied his reputation somewhat to the success of these projects and especially to Unity. That is, it will be hard for him at this point to just say "well we tried something new, it didn't work out like we hoped, and now we're going to iterate on the next thing." If you listen to him it's as though their new desktop is already a rousing success. If you use Ubuntu and you are hoping they switch back to another desktop in a later release I would humbly suggest that _you_ switch to a different OS. With a more traditional business model (i.e. if they sold the OS) they would immediately sack Mark and switch strategies with someone who isn't so married to its success, when sales fell off a cliff. That's not going to happen.

<comment><USER13> _You can't throw a stick around here without hitting someone who has tried Unity and hated it_

Maybe, but I, and a good number of other people really like it. There's sizable support for unity, and my guess is a lot of non-power users (who are silent on HN) like it even more.

<comment><USER14> I'm a power user and I like it, except for application centric alt+tab and top menu bar. That is a non-starter for me. Going to use something else.

<comment><USER15> I hated application centric alt+tab when I first started using OSX but after a few days I got used to it. Now I prefer it.

<comment><USER16> I think the nice thing for me is that it creates a hierarchical method of finding my next activity - app > window > tab

The MS Windows-specific alt+tab model means way too many things to choose from without context.

What I'd love in Mac OS X is a _standard_ way that I could drill in - <USER4> enough context - using keyboard short cuts to window and then tab level.

Perhaps something like that exists, but I haven't found the consistent way of doing it yet!

<comment><USER14> For me, it's essential that I can fluidly switch between last 2-3 or even 4 windows, no matter what they are. (I regularly move tabs into new window in firefox when I need to do this).</comment></comment></comment></comment></comment></comment>


Corporations and the Culture Wars - <AUTHOR> https://corpgov.law.harvard.edu/2018/03/23/corporations-and-the-culture-wars/ <comment><USER2> _Data show that diverse boards lead to better performance, risk management, and returns._

[citation needed]

As far as I know, the studies show a correlation, but no one has been able to show there's causation. Is anyone aware of a study that shows causation?

Also, what kind of diversity? It would make the most sense that diversity by social class and diversity by subcultural group would make much more sense than, say, having approximately equally privileged people with different skin colors all coming from the same schools.

Magically attributing significant qualities to people because of their race is racism. Magically attributing significant qualities to people because of highly salient surface characteristics is bigotry.

The significant differences between people are primarily cultural. The most powerful generator of value is the mind. There is usually more diversity within most such easily defined groups than there is between groups. Most such divisions result in greatly overlapping normal distributions. This is precisely why we should strive to see the "content of character" within each other.

<comment><USER3> If "better performance, risk management, and returns" lead to diverse boards, what's the difference?

> Magically attributing significant qualities to people because of their race > is racism.

Oh, please.

<comment><USER2> _> Magically attributing significant qualities to people because of their race is racism._

 _Oh, please._

Listen and believe. I've been racially bashed, to the extent that police investigators got involved. I've literally been told that I am a less real and inferior order of human, with less real feelings. I've been in times and places where I could reliably predict what people would be saying to me in the near future, because so many of them would jump to conclusions about me due to race. I literally broke down sobbing in the shower just before I graduated high school, so convinced I was of my inner lesser-humanity -- and all of it was based on things directly said to me.

Racism is reducing someone to their race. To be Liberal is to honor the value of people and to attempt to see a person for their character.

This is why the recent trend of attributing racism and other guilt to people _on the basis of their racial characteristics_ is just about the most racist thing I've ever seen. The fact that such ideas can propagate is another stark indictment of the failure of the education system to get people to actually think.

<comment><USER4> Your argument seems to be that racism is perpetuated by any discussion of race.

Another perspective is that race is obvious, and racism is a particular view of race that is passed down through family and culture--so therefore we can only fight racism by consciously acknowledging and addressing it.

<comment><USER2> _Your argument seems to be that racism is perpetuated by any discussion of race._

No. What I'm actually saying is that it's acerbic groupthink that engenders more acerbic groupthink. It's blame and acrimony that engenders more blame and acrimony. It's an eye for an eye making the whole world blind, as Ben Kingsley's character said in the movie. If it happens to be about race, then it's racism.

 _so therefore we can only fight racism by consciously acknowledging and addressing it._

We can only fight toxic group-think by acknowledging it. It's hard to acknowledge and easy to fall into. The danger that the struggle against racism would itself fall to such group think is something that both MLK and Gandhi were keenly aware of; a level of self awareness which is starkly lacking today. Ascribing guilt to people on the basis of their skin color, eye shape, nose shape, or any other indelible characteristics is obnoxious and wrong. It's bigotry. People should be judged on the content of their character, not on their characteristics.

</comment></comment></comment></comment></comment><comment><USER5> _Friedman cautioned decades ago that "the doctrine of 'social responsibility' taken seriously would extend the scope of the political mechanism to every human activity."_

This is one of the things that always struck me as odd in my undergrad economics classes. That somehow we can realistically de-couple our actions in one domain (work) from those of another (politics) when in fact they all lie in the space of human action. This is where I found myself in agreement with Mises - in that all actions have impact socially and thus all economic activity has a social impact.

Thinking or behaving otherwise is a cop-out and a way to try and mentally compartmentalize behavior - it's cognitive dissonance and I see it all the time when people try and "separate" their work life from their personal life. It's a synthetic distinction.

<comment><USER6> Most people spend a little bit more than half of their time working, and the rest of their time aggressively not working. For most people, the distinction between public and private self is the most important one in their lives.

<comment><USER2> _For most people, the distinction between public and private self is the most important one in their lives._

Marx and Engels would have called this, "alienation." I think that they are onto something in this dimension of their critique. Isn't a part of the startup ethos a rebellion against this?

<comment><USER6> My understanding is that with a startup you eliminate the distinction by spending 100% of your time in work mode.

<comment><USER2> _My understanding is that with a startup you eliminate the distinction by spending 100% of your time in work mode._

My understanding is that with a startup you eliminate the distinction between work-mode and personal-fulfillment mode, thus making yourself 100% productive/engaged and 0% alienated.

<comment><USER7> You say that like it's a good thing. Having work take over your life is pretty definitively worse than being able to have some private time.

</comment></comment></comment></comment></comment></comment><comment><USER8> _> Delta—under public pressure—ended a discount available to members of the National Rifle Association to travel to their annual convention, a type of discount routinely offered to many other groups. Delta announced that this step was an attempt "to refrain from entering this debate and focus on its business." Nonetheless, Delta immediately encountered fierce political pushback from the State of Georgia, where the airline is based, as well as from the NRA and its supporters, which resulted in Delta losing a $38 million tax break._

Whenever I see these sorts of controversies blowing up, I always wonder if it wouldn't have been better for the company to just play deaf and not acknowledge the controversy to begin with.

<comment><USER9> I think you may be onto something there. Sure, by continuing the discount they may have lost some business, but it is also possible that there would have been no #boycottDelta, or that it would have been another case of temporary social media posturing that is soon forgotten. However, by taking proactive action they almost guarantee that it will be picked up by the media, and will be noticed and anger NRA supporters. They may have faced backlash, but then again there hasn't been any uproar about NRA corporate discounts after other shootings, so why take the chance?

</comment></comment><comment><USER10> I agree with the basic premise - that the best way for companies to be good citizens is to be good, ethical, companies. Pay your employees fairly, provide good benefits, obey the spirit of the law (not just the letter), and do the right thing for your customers. Companies that spend a lot of time vocally supporting social issues while being bad corporate actors are just virtue signalling for PR purposes

<comment><USER2> _Companies that spend a lot of time vocally supporting social issues while being bad corporate actors are just virtue signalling for PR purposes_

This is common sense. Persons are best judged by their actions. As Shakespeare once wrote, you can tell where people are truly crazy by how they spend their money.

</comment></comment><comment><USER11> The problem is going to be companies not doing what they should in fear of being accused of not supporting free speech.

Google can not monetize Alex Jones on YouTube yet they allow the content to still exist and Google pays the bills in supporting through infrastructure cost.

They should just remove when no advertisers.

<comment> wu-ikkyu Youtube is not solely funded by advertisers, they have a paid ad-free subscription service.

<comment><USER11> Yes but is minimal and not sure how it even matters?

Why on earth would someone buy a subscription for content that has NO ads?

Can you explain?

<comment> wu-ikkyu >Why on earth would someone buy a subscription for content that has NO ads?

Are you being satirical? Because ads are terribly annoying, a waste of my time, and I prefer not to be manipulated into buying things I don't need.

<comment><USER11> There is NO ads. So there is nothing terribly annoying.

Why your comment on buying a subscription for something without ads does NOT make any sense?

</comment></comment></comment></comment></comment><comment><USER12> Corporations have no stakes in the culture wars- the only interest they got is to ursurp the Original Cooperation that contains the ecosystem they move in. So they will support whatever side it takes to weaken the state and propel there interest.

You can have a left and liberal party, but when cooperations support you- all that will be left is a liberal party.

You can have a right-wing and conservative party, but when cooperations support you- all that will be left is a big interst- conservation party.

Cooperations with a surplus of influence, will use that influence to corrode away the containment system of the state. Thats why they are taxed. If they are not taxed, the contained usefull accid eats through the stomache and kills societys stability. And in a wicked, twist, as there is always a biggest fish- something like amazon, can burst free- and become state instead of the state.

Unfortunatly, people trading on non-amazon plattforms, have to pay a little extra, for the disruption they cause to the logistic masterpiece.

Its not a tax. Its your ticket to a priviliged life style.

Have you paid your prime today?</comment>


Google's "Oprah Moment": An Android Phone For Everyone At Google I/O - <AUTHOR> http://www.techcrunch.com/2009/05/27/googles-oprah-moment-an-android-phone-for-everyone-at-google-io/ <comment><USER2> Very cool. Especially good deal for people who registered early and paid only $300 for the conference. For people in academia, it was only $50.

<http://code.google.com/events/io/faq.html>

</comment><comment><USER3> I'm pretty happy with my iPhone, so I decided to sell my Google I/O phone. If you're interested in trying it out, I'm sure others are doing the same too.

<comment><USER4> Definitely interested! I don't believe a U.S. G2 release has been announced.

</comment></comment><comment><USER5> This is a pretty awesome move from Google, but don't be fooled. Google has everything to gain, both from gaining would-be developers, and the PR.

Tech Crunch saying something like, "What will we see next week from Apple at its WWDC event? Probably nothing." is really ignorant on a lot of levels.

<comment><USER6> It may be a shrewd move for Google, but the net effect for attendees remains unchanged - they got a free phone, which is awesome no matter which way you cut it.

TC is right, we won't see anything like this from Apple - but then again Apple doesn't seem to have _any_ problems attracting developers. You gotta do what you gotta do...

</comment></comment><comment><USER2> If this is truly an "Oprah Moment", then attendees will also have to pay tax on the phone just like any other prize:

[http://money.cnn.com/2004/09/22/news/newsmakers/oprah_car_ta...](http://money.cnn.com/2004/09/22/news/newsmakers/oprah_car_tax/index.htm)

<comment><USER7> The tax on the phone however is significantly lower than the tax on a brand new car and most people shouldn't notice the impact on their tax return documents from a several hundred dollar gift.

<comment><USER8> You don't pay tax on gifts only winnings.

In the US giving someone that does not work for you up to ~12k/year is tax free, but the person giving the gift needs to pay tax on gifts larger than that. With some paperwork there is a lifetime exception up to 1 million but it comes out of the estate tax exemption.

So, if Bill Gates gave his child 1 billion Bill would need to pay ~400 million to the IRS. However, there is an exception for anyone you are married to, and I think educational / heath care gifts are also excluded.

PS: I don't know if it counts as a "prize" or a "gift" if you hand it out to everyone that shows up, but I just wanted to make the difference clear.

</comment></comment></comment><comment><USER9> This post, and the comments on it, are a good reason _not_ to ban TechCrunch, as I've seen a few calls to do.</comment>


Why Women Had Better Sex Under Socialism - <AUTHOR> https://www.nytimes.com/2017/08/12/opinion/why-women-had-better-sex-under-socialism.html <comment><USER2> [https://outline.com/CcbTY9](https://outline.com/CcbTY9)</comment>


In Praise of Irrational Exuberance  - <AUTHOR> http://www.bigquestionsonline.com/columns/virginia-postrel/in-praise-of-irrational-exuberance <comment><USER2> _Many entrepreneurs aren't even that lucky. They wildly overestimate their chances of success. But this second delusion, suggests economic historian John V.C. Nye, may be essential to maintaining an entrepreneurial culture. In a 1991 article titled "Lucky Fools and Cautious Businessmen," Nye, now at George Mason University, argues that countries become economically stagnant when their business people become too mature and rational._

This made me think of what Paul Graham said in his essay, "Why YC", that springing new startups on the world was virtuous.

But of course we don't want to be told that we are wildly overestimating our chances of success.</comment>


Rob Pike discovers sendfile(2) - <AUTHOR> http://groups.google.com/group/golang-nuts/msg/623dd6d97a9156b0 <comment><USER2> Hi, I'm the guy who came up with the splice idea. It's based on what I learned doing this:

www.connectathon.org/talks96/bds.pdf

which was for the EIS (Earth Imaging System) project, a government effort to image the earth about 15 years ago. That project eventually had 200Mhz MIPS SMP boxes moving data through NFS at close to 1Gbyte/sec 24x7. So far as I know, nobody else has ever come close to that even with 10x faster CPUs.

Most of the people in this thread pretty clearly don't understand the issues involved, Rob included (sorry, Rob, go talk to Greg). Moving lots and lots of data very quickly precludes looking at each byte by the CPU. The only thing that should look at each byte is a DMA engine.

Sendfile(2) is a hack, that's true. It is a subset of what I imagined splice(2) could be (actually splice(3), the syscalls are pull(2) and push(2)). But it's a necessary hack.

Jens' splice() implementation was a start but wasn't really what I imagined for splice(), to really go there you need to rethink how the OS thinks about moving data. Unless the buyin is pervasive splice() is sort of a wart.

<comment><USER3> I'm assuming that the real objection to an interface like sendfile() is that you shouldn't need to copy_from_user() just to construct an SKB if the user address being referred to is pointing at a file backed VMA. If we could do a zero-copy send() from userspace, there would be no need for sendfile() in the first place.

IOW, { data = mmap(fd, ...); ...; send(fd, data + offset, length); } could be just as fast as sendfile() if we were smarter.

We're starting to build infrastructure to do zero-copy networking in userspace specifically for KVM. So far, it's not at the socket level but instead at the macvtap level but that's arguably another problem with the networking stack-- macvtap/tap should just be an address family :-)

<comment><USER4> I'm not so sure. The problem is that when send() returns, the application is free to modify the buffer and expect that the modifications won't be visible to the other side of the link - the data has already been "sent" as far as the app is concerned.

So this implies that if you wished to send by DMAing directly from the page cache to the NIC, send() would have to block - not just until the data (and all previous buffered written data on the connection) has been passed to the NIC, but until the TCP ACK from the other side has been recieved (or RST). (Non-blocking sockets could obviously never use this method - they would have to perform the copy).

sendfile() obviously has this limitation already, but if you were to do it for send() you'd at least have to hide it behind a setsockopt(). Otherwise the weird behaviour is likely to upset existing applications (eg. select() says that write() will not block - but it does anyway, because the buffer you sent from was mmap()ed?)

<comment><USER3> No, TCP ACK has nothing to do with this. All that matters is when the NIC has completed DMA'ing the packet. At that point, userspace can be unblocked.

Non-blocking sockets only make sense when there's an intermediate buffer.

<comment><USER5> What happens if you need to retransmit a packet?

<comment><USER4> Exactly right. SOCK_STREAM sockets can't unblock the process until it knows that it won't need that buffer again for a retransmission.

</comment></comment></comment></comment></comment></comment><comment><USER6> The unnecessary data copying problem, as Robert Pike suggests, can be also solved by a more generic Zero-Copy approach, instead of adding a specific single purpose system call.

<http://www.linuxjournal.com/article/6345> <http://kerneltrap.org/node/294> <http://www.cs.duke.edu/ari/trapeze/freenix/node6.html>

It has to be noted however that often the term Zero-Copy is used to describe a technique which avoids memory copying by employing virtual memory remapping.

VM tricks are also expensive because, depending on the architecture, it might require flushing the TLBs and impact subsequent memory accesses. The advantage of this way of zero copy approach thus depends on several factors such as the amount of data being transferred to the kernel's buffers.

I don't have any recent data regarding real word performances, any references are welcome. However it's far from being self-evident that VM tricks can rival the performance of a dedicated 'sendfile' like system call.

<comment><USER7> For the uninitiated, the TLB is the thing that keeps your MMU hardware from having to trawl through the page directory in memory every time it accesses a virtual address; it's a cache, and you generally want to avoid flushing it.

<comment><USER8> Oh that made it so much more clearer :)

<comment><USER9> <http://lwn.net/Articles/253361/>

</comment></comment></comment></comment><comment><USER10> For the un-initiated, sendfile() is a system call that sends data between two file descriptors. The intent is to make the kernel do the read/write cycle instead of the application (user-level) code, thereby cutting down the number of times the data needs to be mapped between kernel and userspace memory spaces.

The manual page: <[http://linux.die.net/man/2/sendfile>](http://linux.die.net/man/2/sendfile>). A related Linux Journal article: <[http://www.linuxjournal.com/article/6345>](http://www.linuxjournal.com/article/6345>).

<comment><USER11> Yeah, it's all about context switching, which is just unnecessary work. Doesn't matter if you are serving 10 dynamic HTTP requests a day on a 16-core super machine. Does matter if you are serving the same file 100,000 times a second from your phone :)

(I do wish it worked for any fd to any other fd, because I have to write that code myself rather frequently. Example: copying data from a pty to the real terminal.)

<comment><USER12> Would splice help? <http://en.wikipedia.org/wiki/Splice_(system_call)>

<comment><USER13> Unfortunately not, splice requires that one of the fds is a file. I want to forward data from a socket to another.

<comment><USER14> In 2.6.31, support was added to

> Allow splice(2) to work when both the input and the output is a pipe.

[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6...](http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=7c77f0b3f9208c339a4b40737bb2cb0f0319bb8d)

<comment><USER15> This goes half way toward solving the problem. What most people want is a pure socket->socket. As evidenced by haproxy, you must still use a pipe intermediary, requiring multiple data copies (on the plus side, it's still fast).

      ret = splice(fd, NULL, b->pipe->prod, NULL, max,
                   SPLICE_F_MOVE|SPLICE_F_NONBLOCK);

edited to add (because I couldn't reply): It almost certainly is faster than read/write, because it's straight memcpy's (which are pretty fast on modern hardware), instead of memcpy's, context switching, special read()/write() logic, and other stuff.

<comment><USER4> The pipe intermediary doesn't necessarily add a copy. You SPLICE_F_MOVE the data from the first fd to the pipe, then SPLICE_F_MOVE it from the pipe to the second fd. If either or both of those can be done zero-copy, they will be. The pipe intermediary is just a way of holding onto the reference-counted pages.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Rob Pike should read about D-Bus in the kernel[1], next. Maybe he'll have some comments. No, I mispoke, I think he'll definitely have some comments.

[1] [http://git.collabora.co.uk/?p=user/alban/linux-2.6.35.y/.git...](http://git.collabora.co.uk/?p=user/alban/linux-2.6.35.y/.git;a=summary)

<comment><USER17> There is a legitimate debate about the performance vs. elegance tradeoff that sendfile represents. Putting D-Bus in the kernel is just a bad idea.

<comment><USER16> I disagree. I think it's nothing but a good idea compared to its current state, for the following reasons:

\- IPC in userspace is insecure, and currently easily subverted by rootkits.

\- When a system is under heavy load, the dbus daemon becomes a choke point for scheduling. "Spammy" processes can prevent messages from reaching higher priority processes.

\- It is a _lifesaver_ for embedded devices with poor multitasking capabilities. Think about ucLinux.

\- It's not for everyone. It's like PF_RING for packet capturing.

\- It makes sense not only for performance, but also reliability.

\- Even though DBus can be improved in several other aspects, I think it's nice that someone sat down and wrote this instead of bikeshedding on some website.

2c

</comment></comment></comment><comment><USER18> >It can be written in a few lines of efficient user code.

I'm not sure he's understanding what this is. There is no copying needed here at all. The kernel could make the hard drive write to a place in memory, have the NIC read from that place and just manage interrupts between the two. The kernel wouldn't have to touch the data at all. This may not be how Linux does it (given the requirement for a memmap'able file descriptor) but that would be possible at least. I don't think you could do anything near this in user code.

<comment><USER19> Rob Pike deserves the benefit of your doubt when discussing UNIX implementations.

<http://en.wikipedia.org/wiki/Rob_Pike>

The read(2)/write(2) solution from userspace would involve no copying as well, assuming a competent kernel implementation. The only "overheads" to speak of relative to what's possible with sendfile("2") would be those associated with writing one contiguous page table entry for every 4KB of data to set up the mappings; since sendfile(2) requires that you use mmap'able input, it probably incurs the same overheads.

Fine, let's say doing the right thing with read(2)/write(2) is hard, even really hard, and sendfile(2) is faster today. Making expedient shortcuts to performance in _the system call API_ has historically not turned out well in UNIX. People write software which depends on this interface, and that software may well outlive any existing hardware and its quirks.

<comment><USER20> > The read(2)/write(2) solution from userspace would involve no copying as > well, assuming a competent kernel implementation.

Wouldn't the userspace application have to ensure that the buffers being passed to read(2) and write(2) are page-aligned?

<comment><USER17> I think the kernel could copy the un-page-aligned head and tail while remapping the body.

<comment><USER21> Which kernels actually do this?

Also, if I read(2), it's supposed to be putting stuff in my buffer (obtained with malloc or whatever). It would seem very complicated to change the mapping for addresses in this buffer. And if I write to the buffer, it must be copy- on-write (in fact, it has to copy the page if I dereference any pointer into it, because most hardware doesn't distinguish between read-only and read-write at the instruction level.

It just seems like if the kernel really did this level of mapping tricks, that MPI implementations could do something better without this patch. <http://lkml.org/lkml/2010/9/14/468>

<comment><USER2> IRIX did page flipping on the way out to users (read(2)) and copy-on-write page borrowing on the way in from users (write(2)). That's for networking.

For file I/O, if you used O_DIRECT, then the data was dma-ed to/from your pages directly, never went through the kernel's file cache at all.

All the file performance came from getting many disk DMA engines running in parallel.

<comment><USER4> The "copy-on-write borrowing" on write() is where the problem lies. To turn the writable pages into COWs you have to update the process's page tables to remove write permission, which requires a TLB flush. These kinds of games are a net loss, at least on modern hardware.

(And then the app likely reuses the buffer for the next `read()` anyway, requiring either replacing the page or faulting in a fresh one and doing the C in COW).

<comment><USER2> Huh. Like to see some numbers on that. Not arguing, just a little surprised. So you have data that shows bcopy() to be faster than the copy-on-write stuff?

As for the buffers, known problem, all the apps that used this sort of thing cycled through N buffers for exactly that reason. I think N=4 was way more than enough.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> I was just doing research on using sendfile's modern zero-copy replacement(s), splice & tee: <http://kerneltrap.org/node/6505>

They were linked elsewhere here, but worth repeating in a top-level comment. :) Possibly a handy tool for the rare times you need to squeeze blood out of a stone.</comment>


Hackers use homoglyph domains and favicons for card skimming - <AUTHOR> https://www.bleepingcomputer.com/news/security/hackers-abuse-lookalike-domains-and-favicons-for-credit-card-theft/ <comment><AUTHOR> Hackers abuse lookalike domains and favicons for credit card theft using a variation of older Magecart technique. This time they throw in homograph domains.</comment>


Show HN: Building serverless web application with Webtask and Firebase - <AUTHOR> http://codewithstyle.info/building-serverless-web-application-angular-2-webtask-firebase/ <comment><USER2> Why don't you use just Firebase? This Webtask part seems just like an inefficient, uncontrollable way of having a server. If you can do something simple enough that doesn't need a server you can do it all on Firebase.

<comment><AUTHOR> True, I wrote something similiar in the conclusion section. However, you can easily imagine a scenario when you need to perform some complex validation that cannot be handled by Firebase rules but it doesn't justify having to maintain a server.

The implementation in the tutorial is just an example - I wanted to provide a starting point for people who want to do something more complex.</comment></comment>


Making Google Analytics even speedier (bye bye Flash, welcome SVG) - <AUTHOR> http://analytics.blogspot.com/2012/02/making-google-analytics-even-speedier.html

<comment><AUTHOR> I just received an update on my GA and after inspecting the new graph elements I found SVG instead of Flash.</comment>


China Hijacks Popular BitTorrent Sites - <AUTHOR> http://torrentfreak.com/china-hijacks-popular-bittorrent-sites-081108/ <comment><USER2> Ironic: "This webpage is not available."</comment>


Compilers and Compiler Generators - <AUTHOR> http://scifac.ru.ac.za/compilers/conts.htm <comment><USER2> Wow amazing timing, just started reading the course materials at <http://www.antlr.org/wiki/display/CS652/CS652+Home> and finding them very informative. Also just purchased the PragProg book of the same author.

This seems really informative and timely for me.

Thanks a ton fogus!

<comment><USER3> A compiler has both a front-end and a back-end. Both the book that is linked to by the OP and CS 652, the course you refer to, have a heavy emphasis on the front-end.

Personally, I am very partial to the back-end, which involves very, very different data structures, algorithms, and theory. Once you make your way through this, I highly recommend taking a look. I would say it constitutes a different field entirely!

Here is a list of some such algorithms.

<http://llvm.org/docs/Passes.html>

What boggles my mind is that some of these algorithms can be made to do useful things besides generating efficient code (which includes code that runs on several cores!), such as finding bugs and security flaws.

Have fun!

<comment><USER2> I'm just now starting to dip my toes into the field so any advice like this is helpful.

Thanks!

</comment></comment></comment><comment><USER4> As a self taught programmer, I am puzzled by the importance people seem to put on understanding the internals of compilers. Given that I already know what a compiler is and does (at least I think I do), can somebody explain why studying compiler design is more edifying than, say, spreadsheet design?

<comment><USER5> Compilers are amongst the most complex programs that get written and exist at a sort of theoretical/practical junction. Compilers attract both academics, for the theory, and low-level hackers who want their language to be as fast as possible.

For instance, parsing is one area that has been researched in incredible depth and the parsers that you find in modern compilers (often) reflect this research.

There are also many interesting algorithms found in things such as register allocation, control flow analysis etc.

Personally, I find working on compilers fascinating. If you've never written any sort of interpreter or compiler, I would recommend giving it a go. Creating a language that you actually use to program is immensely satisfying.

There's also the point that if you are interested in optimisation then compilers are a fantastic place to get stuck in Optimise a part of a spreadsheet program and, well, your spreadsheet program will be quicker. But improve the code generator of your compiler and every program will be quicker!

</comment></comment><comment><USER6> I just found about this page yesterday while doing a google search for various compiler books and posted it to reddit in /r/compilers, looks like it's now spreading. I'm really interested if anyone has read this book yet. I've just started and am currently reading Chapter 3.

It seems as if nobody seems to recommend this book, perhaps it just wasn't noticed before? Thanks for posting to hn.

</comment><comment><USER7> This could use some CSS - its amazing how much that impacts on feeling the material is high quality/correct/still valid.</comment>


Instagram is deleting the accounts of hundreds of porn stars - <AUTHOR> https://www.bbc.com/news/blogs-trending-50222380 <comment><USER3> tldr; because some vigilantes keep reporting them, and Instagram's content moderation team is massively inconsistent.

<comment><USER4> Seems dumb.... I though reporting e-girls to the IRS was the most effective play if you're prudish?

<comment><USER5> I don't know what an e-girl is, but I can assure you pornstars pay taxes. Income earned is reported to the government by the studio.

<comment><USER4> That's my point, the target is wrong. If you want to be a general dick online there are better ways to go about it.

</comment></comment></comment></comment><comment><USER6> Paid ads for violent conspiracy theories are fine but god forbid you use an eggplant emoji.

</comment><comment><USER7> Porn is not advertiser friendly. Hence the need for a decentralized web and decentralized payments.

<comment><USER8> There is no actual pornographic content posted by these accounts - they're being banned because of who they are.

<comment><USER7> Presumably advertisers don't want their content interspersed in the middle of a porn stars instagram story, whether the actual content is pornographic or not.

<comment><USER9> Then it should be enough to flag those accounts, and only show ads which are explicietly ok with showing it there. This even is an advantage, because some products who already work on the border of sex-ads would surely be very happy to be shown in that context.

<comment><USER10> Once you are notified of a possible SESTA/FOSTA violation, you are required to act.

</comment></comment></comment></comment></comment><comment><USER11> This taboo against sex, one of the most natural acts of almost all lifeforms, is THE single most bizarre facet of human society.

Porn stars and sex workers should be celebrated instead of being ostracized.

There aren't many other professions who contribute as much to reducing stress and fulfilling the fantasies of so many people across the world. Most sex workers do it without any thanks and barely make enough from it to survive. Not only they have to brave a constant risk of disease and violence, they have to carry this outdated stigma throughout their lives, not only for themselves but also their families, even after they quit.

<comment><USER12> >This taboo against sex, one of the most natural acts of almost all lifeforms

We're not talking about just 'sex', we are talking about the creation of entertainment media were a person is paid to have sex with another person/persons. I wouldn't call it a 'natural act'.

I used to be totally fine with porn, and to some extent I still am, however I do see it as a problem as well.

First off I think that the ease with which really hardcore porn is increasingly accessable today means very young kids are able to get their first views of sex being extremely warped. This creates expectations of what sex is that many are likely uncomfortable with, but will perform because porn has made it 'the norm'. Add to this how most porn turns sex into something borderline mechanical and/or centered around a fetish, which makes perfect sense from a 'product standpoint', but it also means that practically all porn sells the whole idea of sex as merely people using eachother to 'get off'.

The second problem I have is with the industry and its employees, I can't recall any ex-porn worker having anything good to say about their previous profession, instead what I've seen described comes across as a really shitty situation, where many turn to drugs in order to make it through 'shoots' and then again to forget.

<comment><USER11> > The second problem I have is with the industry and its employees, I can't > recall any ex-porn worker having anything good to say about their previous > profession, instead what I've seen described comes across as a really shitty > situation, where many turn to drugs in order to make it through 'shoots' and > then again to forget.

This can be said about the "mainstream" showbiz industry as well. Remember all the child stars with ugly adulthoods?

As for spawning fetishes and promoting unrealistic expectations, again, you can say this about a lot of mainstream media too.

Critics of porn seem to ignore other industries with the same problems when singling out porn for these criticisms, because !!sex!!

<comment><USER12> Sure, but sex is something practically every human will engage in, and typically starting at a young age.

I don't know exactly what the fetishes/unrealistic expectations you say mainstream media is promoting, but I doubt they have as direct impact as porn does.

As for mainstream showbiz, I certainly don't hold it in high regard either, but I do think it does better than the porn industry. Basically I would be very hesitant about my kid going into showbiz, meanwhile I would do anything in my power to dissuade my kid from going into porn.

<comment><USER13> Porn is a huge world of a bajillion sites. Some are good, some are meh, some aren't.

Coming from Australia, I find the whole anti-nudity-sex view of US extremely bizarre.

One one side Netflix and friends have figured out that Booms, Bullets, Bucks, Boobs and Butts are a golden formula. Like most HBO series involve some form of nudity.

On the other side the big media mafias are heavily censoring totally normal things.

</comment></comment></comment></comment></comment><comment><USER14> I believe companies should be free to set their terms of use and/or whom they provide services. Like in a real life, if you don't like someone or you don't follow her/his ideas, you are free to not answer his questions or concerns, why it should be different in corporate world?

If you think company does wrong, just fight with them in a same way.

In other words, why I should demand from local bar to serve me a kosher beer? They feel like it is not profitable for them to serve all kind of minorities (or even some majorities depending on type of bar) and I should be ok with that.

<comment><USER15> You can always go to another bar which does serve what you want. Name an alternative to Facebook/Instagram/Twitter that has similar reach. It's not a very good analogy IMHO. It's all well and good to say that companies should be free to set the terms and conditions of use but when said companies have such a large impact on people's livelihood and have a near monopoly, I'm not sure.

<comment><USER16> I agree with grandparent analogy. If Starbucks doesn't serve your need, you can go to other cafe. But you will never have the same experience. The same thing for Instagram/Facebook. You will find the alternative, PCMag listed 9 alternatives in their website.

</comment></comment></comment><comment><USER11> It seems that even HN has censored this topic. I couldn't see this post on any page without searching for it.

</comment><comment><USER17> it is insane that people let FB regulate their lives and communication . encrypt and decentralize is the ultimate solution

<comment><USER18> Lets remove all moderators! Free speech, yay! Racism and bulling is form of communication, too!

<comment><USER17> this isn't about free speech anymore, but about freedom of association and communication

</comment></comment></comment><comment><USER19> Doesn't really make sense if they're not posting porn. They might as well ban the BBC...

</comment><comment><USER20> When you do everything right, and follow the platform rules, and still get banned after all your hard work

It's just a manner of time until this platform will fall.

<comment><USER21> And the Media Goblin shall rise from the ashes

</comment></comment><comment><USER22> just let these platforms die.

</comment><comment><USER23> Why? 4chan and other assorted incels took the tactics used by the left to silence and deplatform people (mass flagging/reporting), and applied it to e-thots: women who often don't pay taxes, yet receive massive donations for sharing private pictures, often from sad young men who want to know what it is like to have a girlfriend, and get taken for a ride (they get automated "personal" messages on whatsapp, stringing them along with fake promises for more cash).

It was a bad idea when the left applied it to popular right speakers, and it is a bad idea when the right applies it in their misguided quest/troll to make society more puritan, help a brother incel escape the clutches of e-prostitution and try for a real girlfriend.

Viewed in a certain light, these accounts are nothing more than fronts for digital prostitution, all carefully made to guide people to one of their profitable monetizations. Even Youtube allows "performers" to use their suitable-for-work videos to advertise their Patreon, where kids can buy the bath water or access to lewd Snapchat of their favorite cosplayer or ASMR star.

This is not about sexual liberation, and platforms shunning porn stars. It never was. It is all about trolling/culture hacking these very gameable report buttons. It is what happens when you allow a vocal activist minority to moderate your platform. The BBC reporting it as a crackdown by big evil business (completely ignorant of the real cause, or the 1000$ per month blowjobs these stars are offering one click away) tells you we still have a way to go with investigative journalism. Big evil site owners used to pay Ginger Banks (the first time I saw her, she was live streaming her vagina from a public library PC), they love all the attention and engagement these women bring.

If the owners kick them off their platform, it is because they risk breaking the law or have their hand forced by activism/trolls. Anything else is eating into their business.

</comment><comment><USER24> This represents an opportunity: these folks should just build their own apps which distribute content to their fans. Thats kind of what apps are for - <USER2> commoditisation of networks like Instagram and so on, is only really necessary because the technological barrier to entry is too high.

All it would take is for someone to open source a decent image browsing/payment transfer application, stick it on Github with a decent license that allows for re-use of the code, and 'services' like Instagram and Facebook will die the deserved death.

This is only a thing because the OS vendors are gate-keeping, and because they work hard to make it more and more difficult for people to write and distribute apps themselves...

<comment><USER25> You'd never get an app like that onto the iOS App Store - you can't distribute NSFW content.

<comment><USER26> The app store is full of violent games, which personally I'd regard as far more NSFW than anything referring indirectly to porn.</comment></comment></comment>


Tesla's market cap is now double Ford's - <AUTHOR> https://qz.com/1779609/teslas-market-cap-is-now-more-than-double-fords/ <comment><USER2> Have you driven a Ford lately?

(sorry)

...but I did, and tried really hard to like it, but it was kind of dispiriting, especially considering the msrp.

They are using three cylinder engines now - ok, I can keep an open mind, but a day after test driving one, I saw that another local dealer is simply _lying_ and listing all the three cylinder trims as four cylinder.

Maybe their software just doesn't allow for selecting an inline-3, who knows. But it feels like there is a disconnect, that at a high level management is making disastrous decisions without any comprehension of the consequences.</comment>


How Linux is being subverted. - <AUTHOR> http://blogs.ittoolbox.com/linux/locutus/archives/how-linux-is-being-subverted-18960 <comment><USER2> I can't even figure out what this article is about. I think it's about Microsoft's attempt to use the threat of patent litigation to insert itself into the corporate Linux market and thereby gain influence over open source software projects, but the article never uses the word "patent"!

It reads like an outtake from the 47th minute of an hour-long private meeting. It assumes that the audience already knows the issues, the players, and the buzzwords by heart. It's a textbook example of how _not_ to write for the public.

The irony is that there's a really good chance that I agree with this guy, but I just can't tell.</comment>


A quick overview of an app I built in 9 hours based on the new Twilio SMS API - <AUTHOR> http://screenr.com/69d

<comment><USER2> The idea is to delegate responsibility of paying for infrastructure resources (SMS) from the developer to the user. At $5/mo for 160 messages, that's roughly what you would be pay using Twilio directly at 3 cents a message. The unused texts _do_ count as profit, but most of my other services are free so I'm hoping this might help support them.

</comment><comment><USER3> N.B. Despite the title, submitter is did not build the app; this guy did: <http://news.ycombinator.com/user?id=progrium>

</comment><comment><USER4> So developers pay this guy to use an API that wraps the functionality of another free API and then charge them for it?

<comment><USER3> According to the video, it's not a free API; it's 3 cents per message.

See also: <http://www.twilio.com/pricing-signup>

<comment><USER4> Touche. But if hes charging for a similar service (where there is obviously a margin), unless his API is easier to use the value added doesn't immediately jump out at me.</comment></comment></comment>


The mystery of the Zombie RAM (2014) - <AUTHOR> http://wp.josh.com/2014/03/03/the-mystery-of-the-zombie-ram/ <comment><AUTHOR> "LED as power generator" on Electrical Engineering Stack Exchange: [https://electronics.stackexchange.com/q/217765](https://electronics.stackexchange.com/q/217765)

</comment><comment><USER2> I was developing a test rig for a cmos rom back in the 70's (yes, HP made cmos roms). I was testing my test rig and as usual I tested removing the power pin. The test kept passing so I thought my rig was screwed up. It turns out that the input signals were powering up the chip through the same protection diodes mentioned in the article.

Edit: One would think that if the input test vector included an all-zeros case the chip would fail. It turns out this didn't happen because there were two chip-enables, one true and one false.</comment>


Rethinking PID 1 - <AUTHOR> http://0pointer.de/blog/projects/systemd.html <comment><USER2> _A good metric for measuring shell script infestation of the boot process is the PID number of the first process you can start after the system is fully booted up. Boot up, log in, open a terminal, and type echo $$. Try that on your Linux system, and then compare the result with MacOS! (Hint, it's something like this: Linux PID 1823; MacOS PID 154, measured on test systems we own.)_

</comment><comment><USER3> I think this is another instance of the transition of efficient serial computations opposed to runtime efficient parallel computations, at least the changes look very similar to the adaptions we did to algorithms in our parallel computation lectures.

Just compare this with pushing a computation through an operation-annotated DAG: A good serial program computes a topological order and annotates each node with the result so far. This is efficient, because each node is considered as little as possible (once for the computation, once for each successor), but requires pre-computations and allows only a single thread to compute things.

The program with the least possible parallel runtime just assigns a computation unit to each and every node and during each parallel step, each unit computes the value if it is possible. This requires syncronization and does unnecessary steps, but overall, this scales pretty good with more units.

I think that is a neat coincidence :)

</comment><comment><USER4> I have to say I feel skeptical about this.

In some situations (servers) we just don't care about how long it takes to do this part of the boot: my SMTP/HTTP/SSH server in the basement has been up 155 days. I think it only goes down when I loose (residential) power.

I'd rather have a correct startup than a fast, subtly incorrect startup. I expect that this would introduce a lot of concurrency-related bugs, and make dinking with startup scripts into something of a Black Art.

</comment><comment><USER5> tldr: What if we could open a bunch of listening sockets and start services in parrallel instead of serializing them the way that sysvinit does? That'd be neat. And faster. Oh yeah, we're doing that.

<comment><USER5> Really? Downvoted for providing a summary of the (very long) post? I don't see the logic here.</comment></comment>


Principal component analysis explained visually - <AUTHOR> http://setosa.io/ev/principal-component-analysis/ <comment><USER3> Seeing how each visualization adjusts as I change the original dataset is so useful. The technique reminds me of Bret Victor's amazing work.

Ladder of Abstraction Essay: [http://worrydream.com/#!2/LadderOfAbstraction](http://worrydream.com/#!2/LadderOfAbstraction)

Stop Drawing Dead Fish Video: [https://vimeo.com/64895205](https://vimeo.com/64895205)

This is awesome, thanks for sharing!

</comment><comment><USER4> Very nice! I actually used the featured example from Mark Richardson's class notes on Principal Component Analysis ([http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdf](http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdf)) in teaching. It was astounding how clear it was to some people and how unclear to others.

I did a singular value decomposition on a data set similar to the one Richardson used (except with international data). The original post here looks at the projection to country-coordinates, looking at what axes describe primary differences between countries. My students had no problem with that -- Wales and North Ireland are most different, in your example, and 'give' the first principal axis. But then I continued to do it with the foods, as Richardson did (look at Figure 4 in the linked file). Students concluded in large numbers that people just don't like fresh fruit and do like fresh potatoes. Hm. They didn't conclude that people don't like Wales and do like North Ireland; they accurately saw it as an axis. But once we were talking about food instead of countries, students saw projection to the eigenspace as being indicative of some percentage of approval.

How could we visually display both parts of this principal component analysis to combat this prejudice that sometimes leads us to read left to right as worse to better?

<comment><USER5> By labelling the axes longitude and latitude ;) Or you could show the mean first and explain that the mean describes which foodstuffs are popular, and PC1 / PC2 refers to deviations from that mean.

</comment></comment><comment><USER6> How differently is linear regression than PCA? I understand the procedure and methods are completely different, but isn't linear regression also going to give the same solution on these data sets?

<comment><AUTHOR> PCA minimizes the error along the PC axis. Here's a nice article that goes into more detail: [http://www.r-bloggers.com/principal-component-analysis- pca-v...](http://www.r-bloggers.com/principal-component-analysis-pca-vs- ordinary-least-squares-ols-a-visual-explanation/)

</comment></comment><comment><USER7> This is truly fantastic.

Excuse me for being daft, but how do you transform back into 'what does this mean'?

For instance, in ex 3, we see that N. Ireland is an outlier. It wasn't obvious to me that the cause was potatoes and fruit.

How does PCA help you with the fundamental meaning?

<comment><USER8> They kind of skipped a step. What you would do is then look at what the first principle axis is. In this particular case, it would be a 17-D vector, each element corresponding a food type. You would then look at which elements (food types) have the greatest magnitude.

In a toy example, imagine we had a 5D case where we have beer, cereal, fruit, beef, chicken, and salad, and we found out that the first principle axis is {0.3, 0.1, -0.5, 0.0. 0.2} (in the same order). Then the cause of the change would be due to primarily fruit and beer consumption.

<comment><USER9> I was looking for the same information. The article has a link to pdf with a more deep discussion of this case, and the explanation and the values of the weight of each product. [http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdf](http://people.maths.ox.ac.uk/richardsonm/SignalProcPCA.pdf)

From the figure 4, after rescaling and rounding the coefficients

The pc1 that separate N Ireland is approximately:

      PC1 = FreshPotatoes + SoftDrinks/2 - FreshFruits/2 - AlcoholicDrinks/2

The pc2 that separate the other three countries is approximately:

      PC2 = FreshPotatoes - <USER2>

</comment></comment></comment><comment><USER10> A webapp for doing SVD/PCA:

[http://biographserv.com/bgs/docs/svd_graph_editor/](http://biographserv.com/bgs/docs/svd_graph_editor/)

</comment><comment><USER11> I think the 3D chart requires a WebGL plug-in... Where can I download one for Chrome 40.x?

</comment><comment><USER12> PCA is a pretty okay method for dimensionality reduction. Latent Dirichlet allocation is pretty good too. It depends on what you're trying to do and how the data is distributed in N-dimensional space.

<comment><USER13> dont forget latent semantic indexing :)

</comment></comment><comment><USER14> This is great. The only thing I'm missing is explanation of the various methods of rotating the principal axes (varimax, oblimin, etc.)

</comment><comment><USER15> Hope I'm not late to the party...Does anyone have an implementation(s) to recommend in Python?

<comment><USER16> This post seems to cover PCA in Python quite well: [http://sebastianraschka.com/Articles/2014_pca_step_by_step.h...](http://sebastianraschka.com/Articles/2014_pca_step_by_step.html)

</comment></comment><comment><USER17> Strange font, particularly the 's'. It's hard to read. Anyone else having the same experience?

<comment><USER18> I frequently use this Chrome extension (and even used it on this article, in fact): [https://chrome.google.com/webstore/detail/text- fix/ofafkoecd...](https://chrome.google.com/webstore/detail/text- fix/ofafkoecdjghmmjibcbelabbllfoeidb?hl=en-US)

</comment></comment><comment><USER19> Pretty nice page, but it doesn't say much about PCA. "Visualizing PCA output" would be a more appropiate post title.</comment>


Ask HN: Employee, Partner or Co-Founder? - <AUTHOR>

Someone I know has run into a little dilemma regarding "status" in a new company. Let's just say that this friend started a company and brought on their first actual employee after winning a few contracts about 6 months after the company was legally formed. My friend, the founder, never took a salary since the inception of the company, instead plowing all earnings and savings into this new employee's salary, taxes and other reimbursements to grow the business.
This employee eventually transitioned to working on a lower than market rate salary in exchange for equity at a later date. Now, this employee doesn't want to be referred to as a "partner" in the company but rather as a "co-founder" because of an increase in interest and activity, though not revenue (yet), that has occurred as a result of them coming on board to handle business development (which my founder friend actually trained this person to do while paying them over several months).
So, to make a long story short. Would you consider this person, who drew a salary (albeit at a lower than market rate), was paid with company revenue since joining about 4-6 months after incorporation, and who has put no personal guarantees on company debt(s) but does own some equity a "co-founder," "partner," or simply "employee?"
If not co-founder, how does my friend get through to this person and explain why they aren't really a "co-founder" without causing unnecessary tension? <comment><USER2> Simply being a part of a company from the start does not make you a founder, or even a partner. There are plenty of firms that pay in both salary and equity. Unless there was some form agreement, this person in my eyes is an employee.

What I would do in that position is sit down with the employee and explain in clear terms why they are not a founder or parter. If the owner is open to a partner, possibly offer up an agreement. However, I doubt there is any way to go over this without some tension. I would get it over with sooner rather than later, as the company grows it will only become more problematic.

<comment><AUTHOR> Those are great points. Appreciate the feedback.

</comment></comment><comment><USER3> "Co-founder" is a fuzzy title that means exactly what the people in actual positions of authority want it to mean. But usually its an explicit up-front agreement at the time a person is brought on, or one made with a real status change later (even though an after the fact "co-founder" seems at odds with the common understanding of the term.) The firm might want to grant the person the title of "co-founder" if they feel the past and ongoing contribution warrants it (and, particularly, if the value of keeping them happy is high.)

"Partner" is a legal relationship; you can only be a partner in a firm which is a partnership (not a corporation).

Otherwise, the person is just an employee.

</comment><comment><USER4> It sounds like you are attributing a lot of value to several months work and a few months pay. Consider this venture over the next decade - these months are just a rounding error in the lifetime of a successful startup.

It matters a lot more whether this person can influence the success of the company - you describe someone who can learn and grow into additional roles, those are really good talents on top of which they have a functioning work relationship.

So really it comes down to whether your friend _wants_ a cofounder, and secondary to that is whether this person meets the grade looking _forward_ where almost all the work is yet to be done. If not then your friend needs to take that possibility off the table and explain how the employee's future exists within their larger plans.

</comment><comment><USER5> The term "associate" is sufficiently vague and meaningless to be a perfect match for this situation. I know from experience because I was, once in another lifetime, an associate in a similar situation.

If the employee stays longer and acquires a bit more equity, they can become a senior associate.

</comment><comment><USER6> Titles are cheap. If it makes him happier to be called "cofounder" it would be foolish to bicker over it. Explain why he's not a cofounder, then grant him "cofounder" status to make the carrot explicit.

</comment><comment><USER7> This seems like an excellent pawn to negotiate with.

This person identified something which they value greatly( a new title) which presumably doesn't cost you anything.

Figure out what this is worth to this person, whether its a lower salary, having them put money on the line, etc and give them something that costs you very little, a new title.

</comment><comment><USER8> Can't they compromise with some sort of "Business Lead, Launch Stage" or "VP Sales" type title that satisfies the early hire's desire for recognition of their early influence without confusing potential investors into believing they hold founder-level responsibility at the company?

</comment><comment><USER9> Tell the person they're an employee, because they are. That's the position they agreed to and _were paid for_. If they don't like it, they can leave.</comment>