Initial Release of Mozilla's Open Source Speech Recognition Model and Voice Data - <AUTHOR> https://blog.mozilla.org/blog/2017/11/29/announcing-the-initial-release-of-mozillas-open-source-speech-recognition-model-and-voice-dataset/ <comment><USER2> I am very grateful for this release from Mozilla, and more generally for the broad vision of their effort.

As time passes, the quest for openness and freedom in software moves higher up in the stack. Thanks to the latest ~30 years of effort, we basically came to a point in which we have free OSes, basic infrastructure, building tools, end- user applications.

In the last ~10 years we changed paradigm: autonomous desktop computing progressively transitioned to mobile, with a lot of functionality offloaded to "the cloud".

What I feel is needed, going forward, is working towards building a viable free replacement for these distributed services. DeepSpeech is a step in the right direction.

Edit: just speaking about SW, here. HW is worth a different topic, and probably poses even more challenges.

<comment><USER3> This period is only a phase while CNNs offer the best bang. As algorithms improve, the amount of data needed to train a model will drop 1000x making the big5's data hoards not worth nearly as much. In five years, the power will shift away from petabyte sized datasets.

<comment><USER4> My understanding is that data needed (aka data complexity) is independent of the algorithm. It depends only on model complexity (roughly # of free parameters in model). AFAIK this is a fundamental principle of ML that has been proven mathematically and which is inescapable.

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

<comment><USER5> > _AFAIK this is a fundamental principle of ML that has been proven > mathematically and which is inescapable._

Well, the human brain manages to master several complex tasks using much smaller data sets than current machine learning algorithms. Natural language acquisition, for example, seems to require fewer than 10 million spoken words per year, and even academically successful 12-year-olds might be reading 1 to 4 million words per year. These are not exactly tiny data sets, but they don't require Google's scale to recreate, either.

Sure, the human genome probably "knows" what set of models to try when building the brain, which gives it an advantage. But I can't think of any reason why machine learning couldn't ultimately try similar techniques with similarly-sized data sets, and get competitive results.

<comment><USER4> You are right.

I didn't phrase it correctly. What is algorithm independent is the theoretical performance bound for a given data complexity.

Sure, not all algorithms are the same, but the best performance that can theoretically be achieved with a given iid sample of a given size is algorithm independent.

So yes, a better algo can get same performance with less data, but limit stays the same.

</comment></comment></comment></comment></comment><comment><USER6> This is very timely, as today I was thinking of caving in and getting an Echo Dot so I can control my smart home devices by voice.

I would love an open-hardware microphone array that I could use with a Pi or something similar, to write my own Alexa. Not only would I love this, I would store all my commands and send them to Mozilla to help with their speech recognition models.

I don't want to be the guy who wishes someone else would do all the work and then give it away for free, so I'll do what I can to help (which is probably limited to writing a bunch of code and documentation on how people can set this up more easily). Congratulations and thanks to Mozilla for this.

<comment><USER7> Not affiliated in any way but have you seen the MATRIX Creator or MATRIX Voice? Both contain microphone arrays that can interface with a Raspberry Pi.

I'd love to see one of these meshed together with this new Mozilla voice project for an open source Echo or Google Home. The only missing piece it seems at this point is NLP and all of the glue that converts commands to API calls.

<comment><USER6> Oh I hadn't, this is fantastic (and it integrates with an ESP32), thanks! I wonder if it includes software to do some live DSP to reduce noise... The fact that it can just connect to the Raspberry Pi's GPIOs and provide great sound is ideal, though. I'm very glad someone has made this, I wish I had known about it before so I could back it.

</comment></comment></comment><comment><USER8> This is super cool, but I'd be cautious about the usefulness of this data set.

Both this data set and LibriSpeech are read speech, where the speaker was prompted with a transcription and asked to say it out loud. In practice it's very rare that you're trying to transcribe speech that's already been transcribed. Speech patterns for computer-directed speech (e.g. for voice activated user interfaces) or human-to-human speech (e.g. for meeting transcription) are quite different.

<comment><USER9> Yup, this is an excellent point. We have, and will continue to explore ways to allow Common Voice users to speak more organically (for instance by answering a question, or responding free-form to some other sort of prompt). The problem with this approach is that it requires an extra step, transcription, which at the scale we are trying to achieve is pretty costly in either money or time (ie. tedium for our users). Eventually we hope that speech engines can take care of the transcription part, but for now we need people.

That said, we will definitely be exploring ways to build in organic speech and perhaps transcriptions to the Common Voice app. This will solve another problem for us too, which is getting public domain material for people to read. Doing this obviously requires a much more complex user experience, and we have more work to figure out how to make something that people will want to use and contribute to. Stay tuned for that :)

On the flip side, we hope that these datasets, models, and the tools (ie. DeepSpeech) can get more people (researchers, start-ups, hobbyist) over the hump of building an MVP of something useful in voice. Once you have people using your products, collecting useful in-context voice data becomes much easier.

On that note, another approach we are working on is partnering with universities and socially-aware startups like MyCroft, SNIPS, and Mythic. Imagine if voice products in market allowed their users to _opt-in_ to contributing their utterances to an open resource similar to Common Voice. Of course, sharing your voice publicly is not for everyone, or every product scenario. But it does work for some. And if we pool our resources, our hope is to indeed commoditize speech-to-text so that we can focus on more interesting challenges like building voice experiences people want to use. (For instance, could voice somehow be a "progressive enhancement" to the web?).

<comment><USER10> > could voice somehow be a "progressive enhancement" to the web?

I have created my own TamperMonkey plugin that adds TTS to web pages. It finds text, makes it clickable, and when a user clicks a word, it starts reading from there, highlighting text as it reads it, skipping menus and chrome. I find this helps me better focus on reading. Unfortunately I can only stand one single voice and it's been stagnating for years (Alex from Mac OS). Can't wait to hear the WaveNet voice Google has been threatening to give us.

<comment><USER11> Is it available for the rest of us perchance?

</comment></comment></comment></comment><comment><USER12> Awesome, we're so close to having a speech-to-text system I can trust.

I really wish Mozilla would release a keyboard app for Android. It would instantly be the single most trusted keyboard available.

<comment><USER13> Regarding Android keyboards, it is horrific that Google keyboard sends all your key presses, except passwords, to them.

<comment> yjftsjthsd-h ... it does what? Even if you disable the "Share Snippets" option?

<comment><USER13> There is no official statement of Google about this but there is a generic Android warning saying "This method can collect all of the text that you enter except passwords including personal data and credit card numbers.". I wonder why Google doesn't explicitly say what they are doing. I don't want to distribute FUD but this is a critical component.

<comment><USER14> That's because any keyboard could, theoretically, be a keylogger.

</comment></comment></comment></comment></comment><comment><USER15> For those who don't know that open source speech recognition that does not depend on AI already exists:

[http://cmusphinx.sourceforge.net/](http://cmusphinx.sourceforge.net/)

[http://julius.osdn.jp/en_index.php](http://julius.osdn.jp/en_index.php)

Maybe with this data set released eventually all that additional data will be used to improve those tools as well

<comment><USER9> Don't forget Kaldi!

[https://github.com/kaldi-asr/kaldi](https://github.com/kaldi-asr/kaldi)

<comment><USER16> The problem with Kaldi is that it's virtually impossible to get a dictation model working with Kaldi unless you have a doctorate in speech recognition. There is no "I know basic programming, but little about speech recognition" documentation for Kaldi.

<comment> yjftsjthsd-h Between learning curve and dependency hell, I've never managed good results with Kaldi, Simon, or Sphinx. It's unfortunate; hopefully we'll get an easy to use option soon.

<comment><USER15> When was the last time you tried sphinx? The library has changed a LOT. Their guides, new website and other resources basically walk you from zero knowledge to working demo.

<comment> yjftsjthsd-h On, I will have to try again:) Thanks for the tip; I always thought Sphinx _should_ be ideal, it was just too much work to get it working.

</comment></comment></comment></comment></comment></comment><comment><USER17> If you want to help them out you can visit [https://voice.mozilla.org/](https://voice.mozilla.org/) and record some sentences.

<comment><USER18> They have an iOS app too: [https://itunes.apple.com/us/app/project-common- voice-by-mozi...](https://itunes.apple.com/us/app/project-common-voice-by- mozilla/id1240588326?mt=8)

It's a great idea to crowd source this. Wonder if this project can turn voice recognition into a solved problem.

I just set a daily reminder so I can do 10 minutes a day.

<comment><USER9> Thank you so much!

I also want to emphasize the importance of listening (validating) as well as recording. Validation is an big part of the puzzle for building machine learning viable data.

<comment><USER19> Can I suggest is encourging user's to get recordings from their children as well, as most speech recognition libraries are pretty poor with children's voices. (IMO Alexa Voice Service is by far the best with children voices.)

<comment> yjftsjthsd-h Is that okay legally? Maybe parental permission is enough

</comment></comment></comment></comment></comment><comment><USER20> Really happy to see someone major looking at open source speech recognition. Due to the lack of a self-hosted or on-device solution, my assistant/automation software is basically designed for speech, but not currently doing recognition because I haven't found a non-cloud option that does what I need it to.

</comment><comment><USER21> Wowow. Time to build an open microphone array for impeoved speech pickup. That can be connected to RPi for voice control that respects privacy.

<comment><USER22> Sort of like this one?

[https://www.matrix.one/products/voice](https://www.matrix.one/products/voice)

<comment><USER21> That is a very nice board! The inclusion of a FPGA and ESP32 makes it very capable, and 65USD is a good price for such a package. And I found beamforming code for the microphone array (running on host computer) at [https://github.com/matrix-io/matrix-creator- hal/blob/master/...](https://github.com/matrix-io/matrix-creator- hal/blob/master/cpp/driver/microphone_array.cpp)

</comment></comment></comment><comment><USER23> How does Mozilla's 6.5% error rate on LibriSpeech's test-clean dataset compare to Google's, Apple's, Amazon's and other's voice recognition? I couldn't easily find any chart of comparisons.

<comment> TD-Linux In the Baidu Deep Speech 2 paper, the Baidu implementation is able to get 5.33%, and a human 5.83%. [https://arxiv.org/pdf/1512.02595v1.pdf](https://arxiv.org/pdf/1512.02595v1.pdf)

</comment></comment><comment><USER24> Does this relate or help at all with speaker identification? The Microsoft speech API also provides speaker recognition which is useful for many applications: [https://azure.microsoft.com/en-us/services/cognitive- service...](https://azure.microsoft.com/en-us/services/cognitive- services/speaker-recognition/)

<comment><USER25> No, this is for speech recognition only.

</comment></comment><comment><USER26> the world's second largest publicly available voice dataset, which was contributed to by nearly 20,000 people globally

Well done, people!

</comment><comment><USER27> This is tangential, but I wonder if something like this could be (mis)used to break captcha - by feeding in the disabled-friendly audio captcha and passing the results back to the captcha server.

As voice recognition becomes more sophisticated I think captchas are going to have to evolve to kjeep up as well.

<comment><USER28> Captchas are utterly beat, and more so, it's not the technology or difficulty : they are a lost cause. Pretty much any problem you might present in a captcha, machine learning performs better than humans.

So today, failure to captcha is actually an indication that the other end is human.

</comment></comment><comment><USER29> How does this compare with Snips.co which can do offline speech recognition on a Rapberry Pi 3?

Coyld this be used to train a model/engine that can be used that way?

<comment><USER30> The model we released today is not yet optimized for smaller devices like that, but our plan is to make it usable on targets like the RPi3.

<comment><USER19> Are you releasing any prebuilt models, I searched but couldn't find any, so people can go and play with your work without training?

Edit: NM found it under releases: [https://github.com/mozilla/DeepSpeech/releases](https://github.com/mozilla/DeepSpeech/releases).

<comment><USER31> OMG, C++??? I thought Mozilla folks would give Rust a spin.

<comment> TD-Linux It is Tensorflow based which has a C++ API. Though, it looks like they provide Rust bindings for the Deep Speech library itself.

</comment></comment></comment></comment></comment><comment><USER32> I don't see why Mozilla would do this kind of things except to spread ressources. I know that it is an anecdote, but I don't know anyone who uses any kind of speech to text in part because they all suck if you don't speak english and even then..

<comment><USER33> Personal assistant devices are selling like hotcakes, and there are tons of options for creating smart lighting and such. Maybe I hang around tinkerers too much, but I think it would be nice to have a method of speech control that doesn't rely on someone's remote speech recognition API.

<comment><USER32> As i stated above, it might be an anecdata or a cultural bias as I live in Montreal.

While i do believe that's interesting, I don't understand why that would be Mozilla's job.

<comment><USER33> Why not? They build free software and promote open standards; speech recognition is a prominent area that doesn't have any really good open solutions right now.

</comment></comment></comment></comment><comment><USER34> Does this foreshadow a day when Firefox starts spying on what I'm talking about?

<comment><USER35> Wouldn't this be the opposite? By bundling the speech model so that it's on the client device instead of their server, your speech need not leave your device.</comment></comment>


Monoprice drops the price of a dual extrusion 3D printer to $700 - <AUTHOR> http://www.monoprice.com/Product?p_id=11614 <comment><USER2> Planet Money on NPR did an interesting piece on Monoprice last November. How stuff gets cheaper:

[http://www.npr.org/blogs/money/2014/11/28/366793693/episode-...](http://www.npr.org/blogs/money/2014/11/28/366793693/episode-586-how- stuff-gets-cheaper)

<comment><USER3> I though monoprice just sells out - of - tolerance factory seconds, and covers the high failure rate which a free-replacement. The MicroUSB cables I got from them were junk.

<comment><USER4> While I'm leery of buying anything that requires a lot of "engineering" or "design" from them, I've been quite happy with the cables and simple accessories like memory card readers I've gotten from them. I've been studying cables and connectors for a long time, and have had loads of my own custom cables and connectors manufactured in China. While I haven't done an analysis on the connectors they use, I recognize that their cables are made from high quality cable stock - usually from Copartner, which I regard very highly and believe to be the top shelf of the cable stock that you can get from China. Their mains power cables are very nice too, and they stock enough variants that my spec is usually met from their stock (for instance, 14 or 16AWG, right angles, 10 feet) without having to special order.

I even have Monoprice supply some of the commodity accessory cables that I include in various bits of kit that I sell, such as plain serial cables. I thought it would reflect badly on me when they started molding their name into the cable ends, but so far it seems that nobody's been unhappy.

</comment></comment></comment><comment><USER5> Wow that is tempting, the electronics are crap of course and the MK8 extruders are known to be subject to heat creep but the frame and case and basics are there.

<comment><USER6> Is there an upgrade path for electronics & extruders that you would recommend?

<comment><USER5> Currently I'm loving the bondtech extruder and the E3D V6 hot end combination. Lots of control an very reliable in a wide variety of filament / control issues. Building that as a 'direct drive dual extruder' on this platform might be challenging given the available space but you could probably get it to work in a bowden configuration with the hot ends on the print head and the extruders attached to the back of the case next to the spools.

For electronics there is currently a big debate over the Replicape/Smoothieboard type tradeoffs. All serious folks have dumped the AVR/Arduino stuff in favor of either ARM Cortex-M stuff or the Beaglebone Black (like a RasPi but with more I/O). Most folks prefer the higher power 8825 stepper motor drivers over the older 4498 versions. There is a challenge there however, that if you're trying to run your motors that hot you are probably over driving your printer. I've currently got a CRAMPS board with a Beaglebone Black as a controller in my 'new' build, and I continue to print parts as needed on my Replicator Dual (which was the last fully opensource printer Makerbot made).

</comment></comment></comment><comment><USER7> This looks a lot like a Makerbot printer. I have heard that the dual extruder printers often get "jammed" more often. I like that they offer to replace any defective printer. For $700 this is a great deal.

</comment><comment><USER8> Not strictly related, but I love this design of a next-generation 3D printing technology.

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

</comment><comment><USER9> " _Black Metal_ Housing"</comment>


Ending the cults of personality in free software  - <AUTHOR> http://aseigo.blogspot.ch/2012/11/ending-cults-of-personality-in-free.html <comment><USER2> What nnq said [0] plus some more:

As the IT industry matures I can see a tendency to make everything Serious, Business Responsible, Grownup, etc. I don't like this development of things. Open Source started as a fun place. People were coding to Have Fun, in the broad hacker meaning of fun. See that recent (and reoccuring) flame against Crockford's "not for Evil" licence. Why are we denying people right to do that? It was a joke, he did it for fun. Hackers like jokes. Fun is a part of FLOSS.

I believe that Open Source community needs not to become adult. It needs place for fun, humour, role models, rockstars, religious preachers; place to agree or disagree, to judge people on their merits and just plainly do whatever one wants. It's how creativity is born.

[0] - <http://news.ycombinator.com/item?id=4769230>

<comment><USER3> "As the IT industry matures I can see a tendency to make everything Serious, Business Responsible, Grownup, etc. I don't like this development of things"

I guess it depends on your point of view, but I personally love the fact that: a) my field is becoming more grown up, which means more recognition of its importance to the world, and b) the field is growing up, meaning the people who nowadays hold huge amounts of power over many other people, are taking this power more seriously.

I also don't think it's a problem to still have fun in our field - but there should be professional limits. When some engineers get together to build an engine that goes into a car, I'm all for them having fun while doing it, and making jokes, etc. But I also want them to be professional and for the end product to do its job. Usually the two don't conflict. In cases like the "nor for Evil" license, some people think they did conflict. Perfectly valid for Crockford to do it, perfectly valid for other people to say "this kind of humor means we can't use your product, much as we'd like to".

<comment><USER4> Replying to this post and its parent: In the world of _distributions_ there is CentOS/RHEL for the blue shirted suit wearers and me on week days. Then there is Arch/Antix/Absolute and the truly wonderful #! and Puredyne/Dynebolic (which both appear to have died a death) as well as blag linux for the ones who want to do slightly mad stuff.

I suppose over time, we will have the same split in _applications_ and _services_. All of 'em will use the project that Torvalds manages, which is why I imagine he lets off steam in _irrelevant directions_.

</comment></comment></comment><comment><USER5> While there are some particularly bad examples of cult of personality in free software, I wouldn't say this is one of them. I think that people are relaying Linus's opinion on desktops so much because he's sharing our thought process and gives us an opportunity to spread our own opinion through his fame, rather than just following everything he says just because of his kernel expertise.

Look at the reaction people had when Gnome 3 was introduced, and Unity in Ubuntu. People didn't wait for Linus to complain against those changes driven by UI designers gone insane.

Lots, and lots of linux users had the SAME reaction Linus had, BEFORE he even publicly talked about it. I went to Gnome 2 from the KDE4 transition since I liked KDE3 but hated KDE4, and went to Xfce after the Gnome 3 and Unity debacle. And I didn't wait for Linus to talk about his thoughts on the linux desktop to switch everytime something bugged me.

Aaron Seigo is asking us to not care about Linus opinion ? But _we_ don't give a crap about yours, man, you're the reason why KDE4 went to hell, the man behind Plasma. After so many years acting like you know better what your users want than they do you're getting all hurt when people listen to someone like Linus instead of you ? the thing about Linus is, he's just a user like the rest of us rather than a desktop developer, but with his fame he can make his opinion reach your ears and it seems you don't quite like what regular users think of your "innovations".

<comment><USER4> _"Look at the reaction people had when Gnome 3 was introduced, and Unity in Ubuntu. People didn't wait for Linus to complain against those changes driven by UI designers gone insane."_

Not insane, just designing for a model of a user that does not include many here. I think the 'shock of the new' plays a part. I've been using GS 3.6 on the Gnome Ubuntu Remix (12.10) on the desktop for a bit and it isn't slowing me down much at all, but I'm basically an end user...

</comment></comment><comment><USER4> Do I need to write a Web page with the title _Ending the cult of the 'normal user' in Interface Design_?

The short version of such a Web page would contain a Venn diagram with a large number of intersecting circles representing the needs of different users. Under the diagram would be a simple question: "Are you designing for the intersection or the union set?".

What I actually think would be really neat is a UI authoring kit aimed at interested people and not requiring huge coding experience. Such a kit would _gently encourage_ users/UI authors to think about the flow of activities and would mirror the limitations of the widget libraries. Something visual working a bit like puredata. _That_ would get some interesting alternatives out there, it would let people who want something different design it for themselves, and it would give a wider range of people an insight into UI design principles.

<comment><USER6> _Do I need to write a Web page with the title Ending the cult of the 'normal user' in Interface Design?_

Actually, that would be a great idea. The industry in general doesn't seem to have cottoned on to that idea.

<comment><USER4> I suspect they have cottoned on but design for the mass audience and assume that niche needs will be covered by applications or that people will tweak.

</comment></comment></comment><comment><USER7> I believe Linus know something about software, and specially software for geeks.

Trying to discredit Linus opinions is a new low. If you don't agree with someone you don't need to discredit him, because something he is saying could be right.

What I'm not that much sure about knowing what they are doing is the GNOME guys, it seems nobody could criticize their actions, and they keep doing strange things only pleasing their selves. Total onanism.

It is obvious to me that they can't listen to the outside world, they support each other in their actions like the Kodak execs before bankruptcy still believing that "film was still the future".

<comment><USER8> But Aaron is not trying to discredit Linus' opinion, he is trying to put the importance of his opinion in perspective, that's completely different. He doesn't even say he disagrees with Linux.

<comment><USER9> _> But Aaron is not trying to discredit Linus' opinion_

I think the main point is that: People should think for themselves, and just because someone famous acts a certain way doesn't mean we should follow blindly

</comment></comment></comment><comment><USER10> _Let's step to the side and consider this from a different angle: Imagine that someone made Linus' perfect desktop environment. Something that satisfied him entirely and which he could happily talk about whenever he felt like it. Would that environment be interesting and useful for the general public, or would it be something great for kernel developers and grumpy-heads like Linus?_

I don't care about the general public. I'm not part of it (regarding Desktop Environments) nor do I develop DEs for them. I'm a developer who actually likes some of the same tools as Linus does, including those he developed (Git), so yes, he's position is potentially useful to me.

This idea that software isn't useful unless my mother can use it is a really annoying meme. It's like farmers claiming that reviews on combine harvesters aren't useful because they can't help uncle Tom harvest the tomatoes in his garden.

</comment><comment><USER11> Linus is a smart guy - if he offered an opinion on "rocket ships, film production, oil recovery techniques, sociology, religious history or automobile engineering" that opinion would influence my own opinion on the subject, and I think for good reason.

I.e. I think a model whereby the credibility of a person is specified by a single measure has value. The model could be improved by measuring credibility on multiple axes, but a single measure model is still useful.

Linus would clearly have a positive credibility by pretty much any measure you would reasonably want to use. Perhaps the author's complaint is really that this measure is elevated way beyond where it should be due to his celebrity status.

But how do you measure credibility of relative nobodies? Without good information on credibility, it is pretty rational for the casual observer to overweight the general opinions of people like Linus in forming their own opinions.

We are working very hard on this problem and more at backrecord.com. We don't have a go-live-notification list set up, but if you'd like to know when we make the website live, feel free to send me an email at the address in my profile.

<comment><USER12> Credibility is an amalgamation of measured predictions.

</comment></comment><comment><USER13> Great article.

I see this _cult-like_ behaviour quite a lot.

Particular examples, when it comes to open source and free software and gnu/unix, vim emacs etc...

It feels like most people just follow the cult's teachings and hold the same opinions that they saw.

I'm sure you guys all think open source software is fantastic and can give me 10 reasons and examples in support of your opinion.

But how much of it is truly your own conclusion and your findings vs just repeating what you were told before and what everyone else seems to be saying?

Have you ever stopped for a second and asked yourself about it? Have you tried to challenge the popular opinions of the cult?

What would you be doing, if every other hacker was bashing open source today and praising proprietary software?

There's a factor in here that I call 'Bandwagon Threshold Theory'. People react negatively to new and disrupting ideas until a critical mass of people start admiring it. By then they jump on the bandwagon and start preaching and telling everyone about how cool this thing is.

If you look around you can see it everywhere.

Older ideas and technologies have already established their bandwagon and therefore there's strong resistance and hesitance in saying anything negatively about them.

Don't believe me? just say something negative about open source and see how religiously people will defend it.

I guarantee you, the majority of those defenders will simply be doing so not as a result of deep understanding and knowledge but because of the teachings of the cult.

I have previously written a short rant here as well: <http://news.ycombinator.com/item?id=4601593>

PS: I just used the open source examples etc to make a point. My comment is general about the cult-like behaviour in the industry not about something specific. In summary, I think we should all stop worrying about standing out and start challenging the things we take for granted as a result of being surrounded and constantly fed a set of accepted and popular beliefs and opinions.

<comment> muuh-gnu > But how much of it is truly your own conclusion

You can not make an informed opinion on _everything_. There is too much information out there to fact check all bits of it. Sooner or later you will have to take somebody elses opinion on faith, i.e. to trust that he has fact checked something so you dont have to.

<comment><USER3> That is true about facts, e.g. I trust that other people have verified the fact that the earth is round.

Unfortunately, ideas like "is open-source good" are usually very difficult to turn into pure facts, and are therefore opinions. And these are usually very different depending on what different people think the world is or should be - there is no "correct" fact which I can trust someone else to verify.

<comment><USER14> Please write the sequel to my book, I will not be including my book, but someone who has read my book will provide a review.

The review may be in a language you speak (and may be in a language they speak,) and they may have understood my book, but I am a clever author and they were the cheapest reviewer I could find. They are not themselves an author, nor can they read, but they have talk to authors before and have looked at the pictures in my book (I had not realized they were there!) and asked me questions I did not understand.

Oh, and I will not correct, evaluate or pay you for your sequel but readers of my book can choose to also read your book. I can cancel or up the fee for my book whenever I feel like it, so future readers may not exist.

I would say that it is a "correct fact" that it is a disadvantage to undertake the project I suggest even though you may on occasion succeed. Similarly, I would suggest you avoid building on your own dime on a closed source framework. But hey, I can't prove that golfing in lightning storms is a bad plan, so go nuts..

</comment></comment></comment></comment><comment><USER15> I find this unconvincing. People who are smart enough to create something of great value will often have valuable input on other things as well. My favorite example is Richard Feynman. No matter what he says, it makes me wiser.

'But Feynman only has expertise in Physics'. Well. A more accurate picture might be: Feynman is a hell of a smart guy, he chose to dedicate most of his time to Physics, but that doesn't make him any less smarter when he talks about other things.

</comment><comment><USER16> I'd actually benefit a lot from Linus being more listened to. After all, he gets pissed when desktops remove features coders need to be productive, and I'm a coder. Should Linus have written git to be useful by non-techies? It wouldn't have been powerful enough to compete with CVS and Subversion and the like and many of us would still be stuck on centralized version control. Making stuff for the general public only is all well and good, but it's not all that's out there. In fact, it is kind of anti-open source since open source is all about being able to adapt software to your needs, and our desktops now are ripping out all the options waving the flag of needing to appeal to the general public.

<comment><USER17> Git having a horrible interface is orthogonal to it being a successful DVCS. In fact, I'm quite convinced that it's precisely due to the article's subject, cult of personality of Linus, that git took off.

Mercurial is a good example of a powerful DVCS (it can do everything git can) and yet a sane user interface that is easier to teach. Almost nobody "non- techie" that I know about learns git's command line. It's a horrible mess! Instead they rely on GUIs (Git Tower, gitk) or WUIs (Github). But almost anyone can learn hg's command line, since they go through great pains to make sure they pick user-facing names and words and concepts that map to familiar ideas.

<comment><USER18> Where the hell are you finding "non-techie"s that

A) use a VCS (explicitly not as like a transparent feature in some software package)

B) use one from a command line

because I'm pretty sure managing documents with hg from the command line qualifies you as "techie" at the very least "tech-ish"

<comment><USER17> At my current job we have MRI readers, almost all of them who come from medical backgrounds (neurologists, radiologists, the odd obstetrician here and there) and we have them use the command line all the while. We're transitioning them into using hg for some things, and they seem comfortable with it.

</comment></comment></comment></comment><comment><USER19> Doing what the OP challenges us to do: I don't care what Linus Torvalds uses on his computer. It's easy.

And I particularly don't like KDE Plasma, even if Linus does. But I _do_ like Linus Torvalds. He's a straight talking guy who has consistently walked his talk, even if some don't like what he has to say. AFAIK there is no cult of personality as far as he's concerned. Historically cults of personality are nurtured by the personality involved. Linus has done nothing of that sort.

</comment><comment><USER20> ...people like when they are being noticed and when their opinions are valued more than those of others ...it's a reward mechanism absolutely necessary for OS, and taking this away would make the OS world seem like a washed and grey socialist cooperative with no joy in it ...people like rockstars, and some people even deserve to become ones, so don't try to take this away from them!

</comment><comment><USER21> Personally I blame A. Seigo for having a large role in the mess that KDE 4 was. Linus was a big proponent of KDE, that is, until the big rewrite.

That's not to say that Seigo doesn't have some fair points, but as far as I'm concerned, everything coming from him on this subject just doesn't hold any value. If anything, it just emphasis just how out of touch the KDE devs are with their users.

</comment><comment><USER22> I'm a bit more concerned about the hordes of unexperienced, never- accomplished-something-worthwhile, Ruby / Javascript programmers that are ready to discredit work done by others, and to discredit people like Linus or RMS that provided us with an incredible amount of value. Linus trying to express his own opinions _on software_ is not a problem at all.

EDIT: oh and even worse, discredit others usually writing meaningless trolling tweets without any actual argument.

</comment><comment><USER23> <quote>as meaningful as his opinions on rocket ships, film production, oil recovery techniques, sociology, religious history, automobile engineering or any of the other topics he has no meaningful expertise in.<endquote>

I completely disagree with this line of argument that, you have to have worked as something before giving a valid opinion, I wish it were true in some case of tech journalists, but, in my opinion if you've been a user of a technology, then you can give an opinion.

On the flipside, positive case for cult of personality may be, a simple use of two words and middle finger can affect the decisions of major corporation like nVidia.

</comment><comment><USER24> I get kind of tired of comments like this:

"His opinion on desktop software is as meaningful as his opinions on rocket ships, film production, oil recovery techniques, sociology, religious history, automobile engineering or any of the other topics he has no meaningful expertise in."

His opinion on desktop software is valuable to me. Why? Because he's obviously a very smart person. And I listen to smart people a lot more closely than I listen to just anyone. I would trust a physicist giving his opinions on the state of medical care more than I would a guy who believed the earth was flat.

<comment><USER25> It's not because someone is an expert at one thing that their opinion on a totally different subject matters at all. that's the point the articles wants to make, and I totally agree with that principle. We see a bunch of artists taking political stances, for example, and I do not even bother listening to any of them because they just see thing through a very narrow window. Just like Linus when he says the default desktop resolution should be Retina-like, he completely ignores the effect of scale, the fact that you need new lines to make such screens, and that there will be a lag from the time it becomes standard. And he simply does not consider the fact that someone who buys a low to mid-end Laptop does not care about resolution at all. They just want something that works. If they cared about screen resolutions or even screen quality, then no laptop PC in the 500 dollars range would sell at all. But they do. And it's not Linus who buy them, so he does not understand these people and his opinion is only valid for his personal use case.

</comment></comment><comment><USER26> On the one hand, I dislike this "cult of personality" trend in general culture. (Not infrequently discussed with family and friends.)

On the other hand, even and especially in the conservative, corporate cultures I've experienced, there has been a small minority of people who are an order of magnitude smarter and more capable than their peers. And... this tends to generalize. They have their assignments. But sit down with them for a more general discussion, and they often have a better idea than most of what is going on and of its value or cost, in areas well outside their formal assignments. Further, when they -- one way or another -- end up responsible for addressing something "farther afield", they often do so better, quicker, and more insightfully than the dedicated, "expert" staff assigned to it.

That's why I pay attention to people like Linus. In my experience, when people like him address a topic, even casually, they've often been paying better attention than many others, and/or their ability and experience enables them to quickly cut through the crap and see to the heart of the matter.

Even when they are wrong, their thinking often brings up some very interesting and relevant points.

</comment><comment><USER27> You're not going to end the "cults of personality" in free software for the same reason it won't end in other types of software, in software companies, in companies in general or in the government (a really big company but without the fiscal constraints of having to be profitable).

The culture in these places, for better or worse, are initially driven by some small number of charismatic leaders who can create either a good culture or a bad culture. Entropy demands that well-maintained culture must tend towards chaos as an organization grows. At this point, inertia helps prolong the original culture initially, but then provides a huge barrier to reclaiming a favorable lost culture.

Finally, the organization's reliance on oral history (we're horrible at really documenting these things) fails as older members of the tribe leave and are replaced with idealistic whippersnappers. The cycle is complete when these young'ins become resigned to their position as a "cog-in-the-machine" and stop trying to effect change.

I'm not pessimistic ... I've just been around this cycle a few times.

</comment><comment><USER28> Open source is not "Free Software".

The Free Software movement is a political movement and requires leadership. The OP's critique of Linus (regardless of its merit) is entirely irrelevant to a discussion of Free Software Movement and the clear necessity for uncompromising and visionary leadership.

</comment><comment><USER29> Most OSS contributors work for free: if you remove both money and vanity, what remains as motivator?

</comment><comment><USER9> _> Of course, it goes even further than that. These cults of personality encourage others to mimic people like Linus when it comes to things like communication style._

I've met a number of personality cultists in tech who use the example of Steve Jobs as a justification to be a jerk. I find this to be inversely correlated with their actual insight and intelligence. (I am an iOS developer and owner of several Apple devices.)

</comment><comment><USER30> "We must change fundamental human nature!"

Yeah right.

Also, it's not like Linus does not provide reasoning for his opinions, and deriding him for not being a desktop developer is unfair.

</comment><comment><USER31> I think the "cult of personality" is a major reason why many people chose Python over Ruby/Rails. There are way too many strong personalities, strongly held opinions, drama and alpha geeks within the Ruby community. See [http://web.archive.org/web/20080103072111/http://www.zedshaw...](http://web.archive.org/web/20080103072111/http://www.zedshaw.com/rants/rails_is_a_ghetto.html)

</comment><comment><USER32> For context, the author Aaron Seigo is the project lead and developer of Plasma for KDE 4. I suspect he has been irritated by people taking Linus seriously in the matters of desktop Linux.</comment>


How we build a startup in less than a week. - <AUTHOR> http://www.sillytrader.com/offer.php?id=92

<comment><AUTHOR> How Sillytrader.com works:

1\. Seller (you put a service or a product on a sillytrader with a discount) value 200$, price 100$, discount 50%

2\. Reseller (you put a product or a servis of a seller to your blog, website, network...) you sell for 100$ and get 20% of the price.

3\. Buyer ( you can buy directly from sillytrader or from a reseller) you get 70% of the price.

4\. Sillytrade.com get's 10% of every deal</comment>


A Crypto Website Changes Its Data, and $100B in Market Value Vanishes - <AUTHOR> https://www.wsj.com/articles/a-crypto-website-changes-its-data-and-100-billion-in-market-value-vanishes-1515443100?mod=trending_now_1 <comment><USER2> Hmmm paywall, though the first 2 paragraphs give most of the information.</comment>


IPhone hacked via Mobile Safari and SMS database hijacked (at Pwn2Own 2010) - <AUTHOR> http://blogs.zdnet.com/security/?p=5836

<comment><USER2> It's news, and it's noteworthy, but I think the IE8 flaw Vreugdenhill used is a bigger deal:

[http://vreugdenhilresearch.nl/Pwn2Own-2010-Windows7-Internet...](http://vreugdenhilresearch.nl/Pwn2Own-2010-Windows7-InternetExplorer8.pdf)

</comment><comment><AUTHOR> Note that this is not a jail-broken iPhone. This is a regular iPhone with latest OS with code signing.

<comment><USER3> I enjoy the idea of return oriented programming, piecing together an exploit from your host app's binary.

Worth noting that they didn't break out of the sandbox, an app downloaded from the App Store could get access to the same data they did.

<comment><USER2> Did they ROP the iPhone, or was is a straight-up ret2libc? Ret2libc is an ancient technique.

<comment><USER3> More details here <http://blog.zynamics.com/> tomorrow - doesn't sound like it is straight up, depends what they mean by "chained".

<comment><USER2> Ok, it sounds like Halvar is just rejecting the term ROP, and you're right, that's what it is.

</comment></comment></comment></comment></comment><comment><USER4> I almost skipped this article assuming it was one of these "hacks that's not a hack" kind of things. This is a pretty major security issue, especially since the hack is claimed to potentially expose email as well. The Exchange server integration means some pretty sophisticated phishing could be done to get access to confidential info. Hope Apple patches this flaw fast.

</comment><comment><USER5> But hey, at least Apple saved a few bounds checks before memory writes!

</comment><comment><USER6> Not so much hijacked as it was downloaded to the server...</comment>


Automatic programming: write code that writes code - <AUTHOR> http://programmers.stackexchange.com/questions/103840/automatic-programming-write-code-that-writes-code

<comment><USER2> I use straightforward techniques to automatically generate about a third of my C++ code (108,000 lines of code or so). When I'm writing code, I keep an eye out for things that I'm doing which are very repetitious.

For instance, I have nine libraries which do the same things for different file formats. Ideally I'd like the main API for each library to be as similar as possible. So the files which implement the API are generated by a Perl template script. Each library implements a couple of core functions; then the code generated from the template calls those functions in various ways. So I implement LowLevelStepImport; the automatically generated code uses that to implement ArrayStepImport, ClassStepImport, CCallableStepImport, etc. Then I implement LowLevelJTImport, and it implements ArrayJtImport, ClassJTImport, CCallableStepImport, etc.

There are lots of advantages to this. It means I don't have to write a bunch of boring code which is essentially the same. It makes it very easy to keep the APIs consistent across all the libraries. If I need to change part of the API, I just change the template and all the libraries update automatically. And if I add a new library, it is trivial to get it added to the collection.

</comment><comment><USER3> See Philip Greenspun's problem set 4 from MIT course 6.916: Software Engineering of Innovative Web Services (<http://philip.greenspun.com/teaching/psets/ps4/ps4.adp>).

Its objective says, "Teach students the virtues of metadata. More specifically, they learn how to formally represent the requirements of a Web service and then build a computer program to generate the computer programs that implement that service."

This is one of the problem sets potential ArsDigita (<http://en.wikipedia.org/wiki/ArsDigita>) recruits were required to solve during the first bubble.

UPDATE: Philip explains automatic code generation here (<http://philip.greenspun.com/seia/metadata>), and the "SQL for Web Nerds" book he references in the pset has been moved to (<http://philip.greenspun.com/sql/>).

</comment><comment><USER4> I'm probably biased because of my years ago experiences w/writing compilers/vm's, but I'm a big fan of "code that writes code". Like any technique, there is a time and place for it though.

One use that is highly relevant to many shops is creating client tools for their APIs. That is, creating libraries in common/target client languages for higher order abstractions of some of the granular/repetitive stuff and/or some of the mechanical access actions.

Keeping this sort of stuff straight by hand as an API evolves is tedious and error prone. Creating the infrastructure to generate these sorts of libraries is a largish cost up front but pays off hugely downstream.

We are still working (very early stage) on our tools, but our tools code generator(s) works/will work off of the same infrastructure that generates our API model metadata (<https://sigkat.com/services/api/model>)

</comment><comment><USER5> I have worked on military communication software in Ada a few years ago. We had to encode and decode messages with a nested structure and irregular binary structures. These binary format were very well specified.
 We have developed manually encoding/decoding of a couple of message types, then I have coded in perl a code generator. I can not give you the code (classified), but the structure was trivial:
 \- first part: a copy of the format specification. Perl allows to have syntax very close to the structure of the specifications, reducing the risk of mistakes.
 \- second part: reorganize these specification in data structures more adapted for code generation
 \- third part: generate each source file.

 It has been very effective. Perl is ideal for generation of text files. Ada is very verbose. With the big number of messages, coding manually so many lines of code would introduce many bugs, hard to find.

 The generated code was very clean, fast and easily tested. It has been developed very fast. The business logic was added via inheritance, as a result it was possible to update the generator and regenerate everything each time a missing feature or a defect was identified.

<comment><USER6> FYI - use _two_ newlines to separate paragraphs. Eg " _abc\n\ndef_ ":

abc

def

Other handy formatting:

 _italics_ are done by placing * around the text

      indented text by putting two space characters before each line.
      Useful for code snippets and other preformatted text
      Or very long lines of text like this this this this this this this this this this this this this this this

</comment></comment><comment><USER7> We really go for this in libguestfs, generating about 300,000 lines of C boilerplate (mainly bindings for languages, and RPC generation). We use about 20,000 lines of OCaml to do this. This has proved itself over and over again to have been a smart move.

[https://github.com/libguestfs/libguestfs/tree/e275786cb2bce7...](https://github.com/libguestfs/libguestfs/tree/e275786cb2bce728b1a5c8c705cdf76a904be386/generator)

        $ ./generator/generator
        generated 300518 lines of code

<comment><USER8> FFTW takes a similar approach, generating huge gobs of specialized FFT code in C using an Ocaml program.

</comment></comment><comment><USER9> Metaprogramming is a good example of this, but it's not enough 'automatic' for my taste. I find inductive logic programming (ILP) and genetic programming a lot more interesting. Most researchers dropped these notions (in the 90s) mostly (for generic software purposes) as they are too slow and impractical, but I think, with faster computers, new insights and completely new hardware (memristors) on the horizon, they might get back in fashion to enable actual automatic programming instead of 'just' DSLs and DSL related code generation.

<comment><USER10> Here's an example of a recent tool that automatically generates code from a declarative specification written in linear integer arithmetic with operations on sets: <http://lara.epfl.ch/w/comfusy>. There is a plugin available for the Scala (2.7.7) compiler.

Assuming you want to break a number of seconds contained in variable secnum into hours, minutes, and seconds, you would write something like this:

      val secnum: Int = Console.readInt
         val (hours, minutes, seconds) = choose((h: Int, m: Int, s: Int) => (
             h * 3600 + m * 60 + s == secnum
            && 0 <= m
            && m < 60
            && 0 <= s
            && s < 60
          ) )

Code that computes the hours, minutes, and seconds will be generated at compile time (it's not interpreted).

<comment><USER11> This is super interesting but I am really curious about its performance assuming they dont just bruteforce it to exhaust all combinationss. Tons of portfolio optimization problems can be specified very succinctly just like above but the actual computation can be quite tricky. If you had to break up a hundred dollars to invest in google amazon and rest in a riskfree interest bearing bond the optimal constraints look just like the choose function above...so i can declaratively write out the sharpe but maximizing the sharpe is fairly nontrivial. I am going to check this out right now.

<comment><USER9> It's such a shame though that this kind of research usually stops when the author is done with his/her thesis. A lot of worthwhile papers and software are out there and together probably enough to create a small revolution in software development, but the problems are very hard and usually it's not even concrete enough to define the problem that well. So it would need a lot of these researchers combined to do something great; besides maybe DARPA, I don't see much interest in that at the moment unfortunately.

</comment></comment></comment></comment><comment><USER12> Ruby's attr_accessor is a great example of this. When you add the line

        attr_accessor :age

a bit of nifty metaprogramming kicks in and generates the following getter/setter methods in your class

        def age= value
          @age = value
        end

        def age
          @age
        end

<comment><USER13> Isn't that just syntactic sugar[1]? I cannot see any kind of metaprogramming going on here - unless you can define attr_accessor and similar parts yourself.

[1] <http://en.wikipedia.org/wiki/Syntactic_sugar>

<comment><USER14> _Isn't that just syntactic sugar[1]?_

Actually, it's runtime-during-parsing magic, IIRC.

</comment></comment></comment><comment><USER15> I'm a firm believer that if you write code that writes code, you are using inadequate tooling.

The primary concern of a problem should always be possible to solve without metaprogramming.

Metaprogramming is one of those things which sounds good but rapidly increases complexity beyond what is humanly manageable (even if you do it right i.e. LISP macros etc).

Building successive abstractions is the right way of doing things. I think even SICP tries to nail that into people's heads

<comment><USER16> You can build successive abstractions using meta-programming.

All you're talking about is taking your abstraction and calling it a "tool".

<comment><USER15> You can but you introduce a "forward-only" semantic translation prior to compilation which changes the meaning of the code irreversably.

A basic abstraction remains untouched in the underlying implementation. It's just a call away.

There are semantic and technical differences between abstraction and meta- programming.

</comment></comment></comment><comment><USER6> I once wrote a Python program that would generate Java classes for sending SNMP notifications. It would take a text file describing the messages and generate a MIB file and Java code for each message from it. A message description looked something like this (don't quite remember exactly now):

      oid  "188.8.131.52.4.1.12345"
      group "1"
      message "MyNotification"
      field string message_body

and it would generate a Java class called MyNotification which contained about 100 lines of code to handle sending and receiving of these notification messages, plus the MIB equivalent so that network management tools can understand the message.

Once the messages were defined, they rarely changed since customers would have to change their network management tool configuration, so it was mainly only used to add new notification types once the original set stabilized, but it saved a ton of time over having to hand craft each message type.

</comment><comment><USER17> don't forget the entire 'model-driven software engineering' world, which is very much about smart code generation from DSLs, and very much not anymore about that 'executable UML' nonsense that was once associated with the term.

I think MDSD is very undeservedly underrated in the web world.

</comment><comment><USER18> Caveat: There's a difference between code that writes code to dynamically expand/fulfill an abstraction, and code that is merely generated to satisfy what would otherwise be a copy-and-paste need. I know I missed this when I first was exposed to the concept of code generation.

I was ecstatic that I could write a large chunk of my code automatically. What I eventually realized was that I had missed abstractions that would have allowed me to achieve the same ends with generics and dynamic programming. Also a change of language (C++ at the time) would have drastically changed my perspective.

YMMV.

<comment><USER19> I did a similar thing when writing Java code for university assignments. Usually, generating test data required either writing a handler to pull it in from a file, or just writing a lot of Java code to manually load it into memory.

I wrote Python scripts which spat out the method calls with the appropriate arguments.

Yes, I could probably have written an abstraction to create the data set in Java, but it worked out faster to write it in Python, and one doesn't get marks for generating test data.

</comment></comment><comment><USER20> When we write source code, we are describing a process (ship an order) and providing the support for that process (persistence, move, copy, etc.). They are tightly coupled to each other via source code.

I am guessing code that writes code is an attempt to further decouple a process from the code providing the support for that process (data driven programming is another example but is often very domain specific).

It seems that full decoupling of a processes behavior from the code supporting that process would be the end goal. I don't think this is something that meta- programming fully solves.

</comment><comment><USER21> At first glance the idea of "code that writes code" sounds so advanced and high tech but once you see generated source you want to puke.

E.g. [http://sourceforge.net/projects/malclassifier.adobe/files/Ad...](http://sourceforge.net/projects/malclassifier.adobe/files/AdobeMalwareClassifier.py/view)

I daydream of a programming language to which I can fuzzily explain my needs and it automagically solves problem. Natural language processing might be hard to debug as part of a programming language though.

<comment><USER22> Of course the idea behind "generated code" is that you _don't_ look at it. Looking at generated code is like disassembling an .o file - unless you need to debug your compiler (or code generator), there's no reason to treat it as anything other than an opaque blob.

<comment><USER23> That's a real problem with generated code, though. It almost always ends up that there's some issue with either your original code or the code that generates the generated code, and you end up having to dive into the ugly generated code to figure out what the problem is. I'm pretty sure this is the major reason code generation isn't used more often.

<comment><USER24> Well, I guess you need a meta debugger here.

</comment></comment></comment></comment><comment><USER25> it's called a compiler :)

</comment><comment><USER26> UglifyJS (<https://github.com/mishoo/UglifyJS>) comes with a JavaScript code generator that is very handy, particularly for compiling DSLs into JavaScript.

</comment><comment><USER27> Interesting. I've often heard people on Hacker News, eg. edw519, express appreciation for code generators but I've never seen much documentation or blogging specifically about it.

</comment><comment><USER14> Never use this for any code you'd have to debug. (Though, it can be perfectly fine for code that you might debug-through.)

</comment><comment><USER28> Compiler (that's what code that writes code is) is still a relatively expensive thing to design, implement, and maintain. I think you should avoid it in general, although there are exceptions.

Protocol Buffers and Thrift seem to be good examples of code generation.

<comment><USER29> In languages with full macros (like all lisps), code generation becomes trivial.

<comment><USER28> Macros definitely do not make code generation trivial. Rather, macros make code generation that should be trivial trivial, but generating (say) serializer/deserializer does not become trivial.

<comment><USER30> It could be that macros are too low-level for the serializer/deserializer case. What you really want is a definition of the thing to be (de)serialized in some language and two different translations of the same definition. The translator might need to make multiple passes over the same definition in the course of even a single translation.

Another case that illustrates this point: Suppose you are defining a wire protocol between two communicating processes. The tool you want is a language in which the protocol is defined, from which sender and receiver code can be generated. A flexible tool would be able to generate sender and receiver in different languages, or, in fact, in multiple languages. It would be able to generate language-independent documentation of the protocol in multiple formats. It's not easy to see how macros embedded in a single programming language could produce these results.

</comment></comment></comment></comment><comment><USER31> Rails' method_missing is a great example of this and awesome to read through for a thorough mind fuck.

<comment><USER32> Rails doesn't have a method_missing, Ruby does, it copied it from Smalltalk's #doesNotUnderstand:. Rails is a framework, not a language.

<comment><USER31> Oh come on. I meant how it was implemented with AR

<comment><USER32> I have no idea what you meant, I can only comment on what you said. Had you said activerecord's implementation of method_missing, I'd have understood, but you said Rails.

</comment></comment></comment></comment><comment><USER33> I see the ascent of this type of coding to lead to some applications of AI and ML in common-day code.

</comment><comment><USER34> This method is not the least uncommon or "advanced" with those who still program assembler - in particular with the coders in the so called demoscene of lower level machines like the C-64 and Amiga - most often for creating unrolled loops to save a few cycles on removing the increase/compare/branch portion (or similar) of the loop.

<comment><USER35> If one was to be a smartass, one could say that all code is code that writes assembler. (Possibly with many levels of indirection.)</comment></comment>


Entrepreneur and philanthropist Peter Thiel on liberty and scientific progress - <AUTHOR> http://www.reason.com/news/show/125469.html

<comment><USER2> Is Peter being dishonest, or just glossing over things?

 _Basically creating this new payment system from scratch, which was one of these Holy Grail type of things that a lot of people had been focused on. The basic thought was if you could lessen the control of government over money and somehow shift the ability of people to control the money that was in their wallets, this would be a truly revolutionary shift._

He makes it sound like that's what he intended from the get go, but it took them a bunch of major changes in concept to land in the business they're in.

Regarding technological singularities, even super-human intelligences remain bound by the laws of physics, and therefore laws limiting computational complexity.

Why are the concepts 'the singularity', standing for an endless, unpredictable period of technological growth, and the more reasonable advent of super-human- AI, munged together?

<comment><USER3> When Paypal was first starting up, I saw Luke Nosek give a demo that involved creating an email account for firstname.lastname@example.com and sending $10 to it. I think they've got a pretty credible claim to libertarianism.

Re: munging of Singularity concepts, see [http://www.singinst.org/blog/2007/09/30/three-major- singular...](http://www.singinst.org/blog/2007/09/30/three-major-singularity- schools/)

</comment></comment><comment><USER4> One of Thiel's most recent investments is the anarchist seasteading project run by Patri Friedman, Googler and grandson of Milton Friedman:

<http://www.reason.com/news/show/126198.html>

The Seasteading Institute's homepage is here:

<http://seasteading.org/>

<comment><USER5> ah, that's right. the real-world equivalent of rapture city.

</comment></comment><comment><USER6> My Paypal experience as a UK citizen: They shut down my account for some obscure reason, and only re-opened it when I threatened to contact the Financial Services Authority.

So much for libertarianism, and yay for the FSA.

<comment><USER7> Thanks for sorting out any ideological issues anyone might have in three sentences. Or, of course, you could try to, you know, read a book about free markets, and then one on international financial regulations (I guarantee you the latter will be much longer and harder to read), and then try to put Paypal and libertarianism into the same box again.

<comment><USER6> The article in question compared them, not me, and the rest of the comment is based on my factual experience, not so subjective that I needed a book to verify it.

</comment></comment></comment><comment><USER8> This is a great interview. Good questions, intelligent answers. I'm impressed by Thiel the more I read about him/from him.

<comment><USER9> Must agree, his responses are very intelligent and technical. There isnt as much as I would like to read about him online. I guess hes not very public.

</comment></comment><comment><USER10> You've got to be skeptical of a magazine and website that calls itself "reason". Of course! Free-market thinkers are the only reasonable people out there.

<comment><USER11> I'm more skeptical of something that would call itself _The Nation_ or _The New Republic_. Wait, the _whole_ nation is expected to think this way?

<comment><USER12> And I'm skeptical of articles that lead to exchanges like these on hacker news.

<comment><USER11> Well, _I'm_ skeptical of people who would make a claim like that without noting that last time the article was submitted (<http://news.ycombinator.com/item?id=177504>) such comments didn't show up.

</comment></comment></comment></comment><comment><USER13> I'm rather disappointed that he never gave a decent justification for libertarianism in that interview. About all he said was "Totalitarianism is bad, that's why I'm a libertarian. Also, I read Tolkien."

<comment><USER11> People who read _Reason_ don't need to be told why one should be libertarian.

<comment><USER13> Well, I was reading it about 4 hours ago, and I'd like to be told why one should be libertarian. :)

But I'm genuinely curious to see what sort of reasoning led to Thiel's becoming a libertarian, and there's just not much to go on in the interview. People of many political persuasions, after all, maintain a healthy dislike for totalitarianism. And anyone who's taken Lord Acton's proverb to heart should recognize that corruption can manifest itself in those who hold market power just as easily as in those who hold political power.

<comment><USER11> _corruption can manifest itself in those who hold market power just as easily as in those who hold political power._

Not really. People in business pursue the profit-maximizing choice, which at its worst means providing something unique enough that you can charge a monopolistic price. People in government pursue the power-maximizing choice, which at its best means maintaining the status quo until the next election.

I guess it's too bad we don't have his whole conversion story, but I notice that NPR will not ask guests how they all became indistinguishable center- leftists.

<comment><USER13> "People in business pursue the profit-maximizing choice, which at its worst means providing something unique enough that you can charge a monopolistic price."

You're assuming they're bound by laws and aren't willing to subvert them to make a profit. At their worst, people in business have done a whole lot worse.

<comment><USER4> >At their worst, people in business have done a whole lot worse.

I challenge you to show me a single non-governmental entity that has done anything as bad as the Great Leap Forward, the Holocaust, the slayings of the Khmer Rouge, the starving of the Ukraine, etc. You aren't really competing with government in the killing-people field until you do it by the millions.</comment></comment></comment></comment></comment></comment>


"Fat model, skinny controller" is a load of rubbish - <AUTHOR> http://joncairns.com/2013/04/fat-model-skinny-controller-is-a-load-of-rubbish/

<comment><USER2> I find that it's a perfectly fine maxim to follow as long as you don't bleed in concerns that don't belong in the class. To call it rubbish would be unwise.</comment>


MH17 – The Open Source Investigation, Two Years Later - <AUTHOR> https://www.bellingcat.com/news/uk-and-europe/2016/07/15/mh17-the-open-source-investigation-two-years-later/ <comment><AUTHOR> Most interesting part of this to me is that the investigation has been the target of intense Russian misinformation for 2 years.

> Satellite imagery presented by the Russian Defence Ministry of July 21, 2014 > was "so heavily manipulated that it lacks any credibility as evidence."

> The quality of the satellite images that Russia released is poor and appear > altered. Therefore they recommend Russia should release the originals to the > Joint Investigation Team.</comment>


Is Big Tech's embrace of AI ethics boards helping anyone? - <AUTHOR> https://www.theverge.com/2019/4/3/18293410/ai-artificial-intelligence-ethics-boards-charters-problem-big-tech <comment><USER2> Really the biggest issue with AI Ethics boards is they are all Hollywood FUD instead of actual ethical issues. If you are worried about self driving cars killing people you shouldn't consult an ethicist but reliability engineers - design flaws are what ultimately kill.

What we need to fear are the users being stupid (misapplying it to be superstition or reinforce biases) or evil (knowingly abusing it).

Ethics boards failing to improve actual organizational ethics is no way unique however.</comment>


Scientists 'may have crossed ethical line' in growing human brains - <AUTHOR> https://www.theguardian.com/science/2019/oct/21/scientists-may-have-crossed-ethical-line-in-growing-human-brains <comment><USER2> even a full brain is just a computer without memory, ethical what</comment>


Self-distancing can help you make better decisions - <AUTHOR> https://effectiviology.com/self-distancing-rational-decisions/ <comment><USER2> Robert Sapolsky touches on this when discussing the effects of glucocorticoids on the prefrontal cortex. A stressed PFC is not an executive functioning PFC. When we're too close to an issue, we process with our periaqueductal gray (key in pain inhibition) and not with the part of our brain more adept at strategizing.

 _These stress effects on frontal function also make us perseverative—in a rut, set in our ways, running on automatic, being habitual. We all know this—what do we typically do during a stressful time when something isn't working? The same thing again, many more times, faster and more intensely—it becomes unimaginable that the usual isn't working. This is precisely where the frontal cortex makes you do the harder but more correct thing—recognize that it's time for a change. Except for a stressed frontal cortex, or one that's been exposed to a lot of glucocorticoids. In rats, monkeys, and humans, stress weakens frontal connections with the hippocampus—essential for incorporating the new information that should prompt shifting to a new strategy—while strengthening frontal connections with more habitual brain circuits._

R. Sapolsky, _Behave: The Biology of Humans at Our Best and Worst_ 130 (2017).

<comment><USER3> >When we're too close to an issue, we process with our periaqueductal gray (key in pain inhibition) and not with the part of our brain more adept at strategizing.

This must be what happens when you think of a funny comeback or joke several hours after the opportunity to use it.

<comment><USER4> The Treppenwitz or l'esprit de l'escalier: [https://en.wiktionary.org/wiki/l%27esprit_de_l%27escalier](https://en.wiktionary.org/wiki/l%27esprit_de_l%27escalier)

</comment></comment></comment><comment><USER5> Wow. This is something I'll probably remember for quite some time. It's intuitive and immediately applicable, and also a dose of awareness I've needed recently.

However, there's a catch to this. By distancing yourself like this, it seems like you may act quite rationally - but perhaps too locally rational. You may be a long time Java programmer and just feel incredibly unfulfilled about your day to day work, and you might be eyeing stuff like Scala and Clojure with dreams of a more fulfilling line of work. Perhaps the distanced rational self would say no, you are well invested in this Java skillset, and these new things could die out, or any new venture like this might not work out, so stick with what you know. But perhaps you take the more emotional route and say no, even if things pan out badly for me, i want a more fulfilling day to day rather than writing so much repetitive code or whatever (no offense to anyone happy with Java). And perhaps you land in a spot where you're much happier. Or hell, perhaps you really wanted to pursue music, art, etc.

It's my conjecture, but perhaps it's most concisely put as: the more you distance yoursef, the less risk you tolerate, and you will take the safe path, precluding the wild possibilities that are the spice of life.

<comment><USER6> I think you speak here to an important potential misunderstanding about self- distancing. It shouldn't be about eliminating emotions, it should be about seeing them clearly.

Even the first example quote about LeBron makes the point... he says he doesn't want to make an _emotional_ decision... he wants to make a decision that will make him _happy_.

Happy is an emotion too, and a totally valid goal. "Emotional" is really being used as a shortcut to "unconscious".

Even (perhaps especially) as inputs to the decision, emotions are valuable. If you feel joy at the thought of learning Scala and Clojure, that's an important piece of information! If you feel depressed and apathetic when writing Java code, that too is very important.

Make conscious emotional decisions, should be the take away here. And self- distancing, to see your own emotions clearly, will help with that.

<comment><USER5> I had considered this but I felt my comment was getting too long, and I still feel pretty opaque about it. And I might need to read the study itself to get a clearer picture - the article didn't quite answer all my questions.

Basically I feel some friction between distance and self-awareness. It seemed that this study was about choices and action, and that this technique is effective when you have a clear picture of what you want.

But to me, that's the catch: knowing the subjective part of finding out what I really want (beyond the immediate sense) is the hardest, and I feel that the critical self-reflection that requires is something you don't want to be distanced for (how can you understand yourself if you're thinking of yourself as someone else? You can understand your patterns of behavior this way, but that's a small piece of the puzzle). Hopefully this gets you to the point where you come out with exactly that set of emotional criteria, and then you can make well-reasoned decisions based on that, possibly using techniques like distancing.

So there's definitely potential for harmony between the two steps. Trouble is, it seems all too easy to skip or cut short that self-awareness part and go right to the decisions, which is usually what is prompting us to go about these efforts in the first place. So certainly, I can see how a technique like this can help people make objectively better decisions, by some objective criteria. But without that clear picture, applying distancing on its own seems like it would make someone even more prone to neglecting their desires, since they are separating themselves from the decision. But this is all conjecture of someone having only read the article with little background in psychology and being prone to making emotional short-term decisions all the time. Sorry for the post length; since I feel so conflicted about it it was hard to really distill my thoughts.

</comment></comment></comment><comment><USER7> >Self-distancing is the act of increasing the distance from your own egocentric perspective when assessing events and emotions that you experience.

It's odd that there's no mention of meditation as a way to achieve this effect, since that's arguably its biggest benefit.

Put another way, as someone once said: Wisdom is the ability to take your own advice.

<comment><USER8> I would go further and say that meditation is the only way to reliably and truly actualize such a state of mind.

<comment><USER9> I consider self-distancing to be one of the things I'm relatively good at. I've hardly ever successfully meditated, though. Furthermore, the article mentions a couple of other techniques that appear to reliably help with self- distancing.

I'm sure meditation helps, but I wouldn't rule out other options for achieving this particular goal.

</comment></comment></comment><comment><USER10> I always imagine myself in a movie. What would I want the protagonist to do? Usually leads me to be more outgoing and not staying at home.

<comment><USER11> But what if what you want the protagonist to do is a non-stop 80s montage?

<comment><USER12> You say that like it's a bad thing.

 _< turns up the Le Matos currently playing in headphones>_

</comment></comment></comment><comment><USER13> This reminded me of something which made it to the front page a while back about how people came to a different result when they considered Trolley Problems in their second language rather than their first.

But that article framed it as there being benefits to both the emotional approach and the more rational approach, depending on the problem being considered. This one seemed to discount the emotional baggage as totally unnecessary.

Edit: found the article, and now I'm not sure that I read it on HN after all, but for anyone curious (text is in Spanish): [https://elpais.com/elpais/2018/06/18/laboratorio_de_felicida...](https://elpais.com/elpais/2018/06/18/laboratorio_de_felicidad/1529301994_058189.html)

</comment><comment><USER14> This is called "detachment" in many areas of leadership like the military.

I'm sure everyone has personally experienced this, for example when giving advice to others. It's usually very rational and practical because you're not personally and emotionally invested in the events of their life.

<comment><USER15> " _We're all scared. You hid in that ditch because you think there's still hope. But Blithe, the only hope you have is to accept the fact that you're already dead. And the sooner you accept that, the sooner you'll be able to function as a soldier is supposed to function. Without mercy. Without compassion. Without remorse. All war depends upon it._ "

— Speirs, _Band of Brothers_ (2001)

<comment><USER16> If you don't have a need to, I'm not sure that its useful or healthy to adopt coping mechanisms that people use to endure the most traumatic experiences possible.

<comment><USER15> Just to be clear: I was certainly not making a recommendation. I agree with you.

</comment></comment></comment></comment><comment><USER17> This is such a simple and effective trick to think about problems involving you. It's very easy to do, for example you imagine how somebody else who is standing next to you can see you, like if you were that person. Sometimes I imagine how my grandpa would see what I do if he still would live and he could be proud of me or not.

<comment><USER18> I figured out for myself a while back, that if I suspect I'm taking the "easy" choice or making excuses for myself, if I imagine there was a great coach standing next to me who knew my mindset & goals and had my best interests in mind, what would he tell me to do right now. The right action will often become surprisingly clear.

</comment></comment><comment><USER19> This partially explains why many have epiphanies while on shrooms...you will experience "ego death" that lets you think much more objectively about issues affecting your life.

</comment><comment><USER20> Tried to get the primary source for the study behind the graphs there, links through to a paywalled study - so I can't find the sample size, methodologies used, how the study was controlled etc... I'm not disputing anything - I am however cautious of drawing conclusions from articles / posts without proper citations and primary source data. Paywalled study: [https://psycnet.apa.org/doiLanding?doi=10.1037%2Fa0035173](https://psycnet.apa.org/doiLanding?doi=10.1037%2Fa0035173)

It is promising however that this blog as a section on logical fallacies, without going through more articles I can't comment if they adhere to avoiding them or not, still - good to see.

<comment><USER21> Google Scholar pulls up many PDFs of it: [https://scholar.google.com/scholar?cluster=18169154965353534...](https://scholar.google.com/scholar?cluster=18169154965353534314&hl=en&as_sdt=0,21)

</comment></comment><comment><USER22> _> The researchers then measured participants' self-distance during their recollection of their past experiences_

How exactly did they perform this measurement?

</comment><comment><USER23> > self who is analyzing the event is considered to be distinct from the self > who experienced it

I have hard time following this, how can there be two selfs in a single mind.

Is the observer more nobler entity with higher self restraint than the entity being observed who is more emotional and lower self control?

<comment><USER24> One of the goals of mindfulness meditation is the "realization" that your stream of consciousness—the output of the "self who is analyzing the event"—is essentially just a sensory stimulus like any other. There is an agent in your head, thinking—an agent you have raised and constantly train and identify with very much, sure—but then there is you, separately, _observing_ that thinking coming _out_ of that agent. You, the thing that experiences qualia, would still exist even if that agent didn't! You just wouldn't be able to ponder or focus-on or decide-to-react to anything; only to passively sense and experience things as they happen. From your perspective as the perceiving agent, it'd just seem that a sense was shut off.

Once you have this perspective, you become aware that you don't have to identify with the thoughts coming out of the thinking-agent, or even to listen to them. You, the perceiving agent, can "tune out" the thinking agent's train of thought, just as well as you can tune out a five-year-old babbling in your ear. (And, helpfully, the brain has feedback mechanisms that make tuning out the thinking agent cause it to "speak" less. Unlike the five-year-old.)

<comment><USER23> > you don't have to identify with the thoughts coming out of the thinking- > agent,

I really have hard time with this . What is the difference between thinking and perceiving agents. Both entities are doing thinking and perceiving. One seems to be passing some sort of value judgement on the other self. Why would some thoughts be "invalid". They are coming out of you for a reason, why should those reasons be ignored.

How precisely is the self( the one we are strongly identifying with) coming up with validity criteria for other self's thoughts. Surely its your own ambitions. right? eg: Ignore the thought of eating icecream.

Wouldn't this process create some sort of constant internal conflict where two self are fighting and passing value judgement on each other.

<comment><USER25> Something that happens in daily life can invoke emotions but it doesn't mean one has to react with an immediate emotional response. Instead accept the input for what it is and choose how to act on it.

It's rational versus emotional

<comment><USER23> shouldn't unifying those two be the goal, instead of creating more distance.

I don't see how having a constant internal conflict between two selfs is a good idea.

</comment></comment></comment></comment></comment><comment><USER26> Huh. I've known this as "standing back from oneself" \- I've naturally used this technique for a long time when assessing a customer's situation/requirements.

Also comes in handy when assessing... onself, and one's needs and requirements.

</comment><comment><USER27> I used to do that. But people are dangerous, they just want to take benefit of others. So in some cases, if you self-distant, you won't see what could affect you, as outsiders are just outsiders.

A balance is needed, self-distant is not enough to deal with people.

<comment><USER28> I'm not sure you mean the same thing by self-distant as what the article is talking about.

It seems like you are talking about altruism, or looking at situations with an eye towards acting selflessly. Taking actions that will benefit others without regard to how they affect you.

The article is talking about visualizing a situation from a third-person perspective, so that "you" are an object to be analyzed in an emotionally detached way. Rather than viewing a situation from "your" perspective. The idea is looking at your 'self' as some other person helps you to detach from the emotions you feel internally. And this leads to making decisions based on reality rather than how you feel.

All the factors that might lead to you being exploited by other people are still visible when you self-distance. You can still see the co-worker waiting in the wings to throw you under the bus. But rather than _feel_ the discomfort and rage of knowing that the person is after you, you see objectively how you stand in relation to that person. This makes it less likely that you will take impulsive actions driven by instinct, and more likely to take a well-reasoned path that minimizes the likelihood/impact of being exploited.

</comment></comment><comment><USER29> Someone gave me a tip to being CTO: consider what the ideal CTO would do here and see why you can't. Surprisingly, I found it effective. Odd but I'm not one to throw out a functioning tool.

</comment><comment><USER30> I'm in the midst of a major decision... Just quit my job with a year of runway and I'm either considering putting that towards graduate school abroad or settling down, finding a better job, and buying a home. My emotions tell me to go study, but my rational mind tells me to settle down and buy a home.

<comment><USER31> Rational advice from a complete stranger; settle down, study, and consider buying a home. Buying a home can consume a year of runway quickly depending on how you go about it.

<comment><USER32> I like this advice. Unless you have a very large capital base, houses are a great way to reduce your optionality in many ways.

</comment></comment></comment><comment><USER33> I wonder if return1 can benefit from this. He also wonders if it helps other people to refer to them in the 3rd person.

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

</comment><comment><USER34> Isn't this related to how often we find people closer to the psychopathic part of the mental spectrum in leadership positions ? That distancing themselves from suffering and emotions of others comes naturally to them ?

</comment><comment><USER35> AA members (Alcoholics Anonymous) or any addicted people are doing the opposite. They talk about drinking, they're celebrating round dates. I think the approach in the article is more effective for them.

<comment><USER36> With all due respect, you're wrong.

In AA there is celebration around milestones (first days, then months then years of sobriety) and there is some discussion of past drinking. You'll often see a lot of both in movies, newcomer meetings or early treatment.

But substance abusers are selfish so a core function of working an aa program aside from trying to help others quit (objectively using ones own experience to help another) is actively taking inventory of past and present resentments, fears and selfishness to determine "what was/is your role in X?" and then making an amend to correct the wrong.

</comment></comment><comment><USER37> This is similar to Kahneman's "take the outside view" advice. It helps us distance the decision from our (self-)imperceptible biases.

</comment><comment><USER38> You may find it worth the time spending an hour reading through the work done by Yaacov Trope in this space, some that are referenced in the article

</comment><comment><USER39> What a great concept, article and discussion.

</comment><comment><USER40> They key is to understand who you are. That is more difficult than one might expect.

</comment><comment><USER41> This platitude paints a very shallow picture of human decisionmaking. Tecnically, eating oranges "can help you make better decisions" because getting scurvy is distressing.

Looking at yourself like an alien is not a catchall which will lead you to make 'better decisions.'

</comment><comment><USER42> This feels like Western science finding its own way towards the lessons already learned by Buddhist meditation. A lot of the same ideas, framed quite differently.

<comment><USER43> Over 2000 years back at that

</comment></comment><comment><USER44> This is really a powerful and understudied phenom that's very well exemplified in a very simple form of advice I once read concerning making decisions, self assessment:

Instead of thinking "what should I do in the situation?", consider "what advice would I give myself in this situation?"

It's almost a trivial differentiation, and yet, if one applies this concept immediately for any reason big or small, one will be astonished at how the _answers are different_. It's really amazing.

It's hard to put data behind it, but if you just try it, I suggest you'll probably see a difference as well. I can't think of any other psychological technique which yields 'results' (at least in terms of having different ideas given framing) for basically zero effort or practice. It's not even a 'learned skill', it's just framing. It's amazing.

I suggest more intellectual people, who might be more deep in their own thoughts, might make even better use of this than more gregarious 'in the moment' people who's attention is in the 'here and now'.

<comment><USER45> Often times when faced with a tough decision, I pretend I have a friend in the exact same situation and I think about what advice I without give them. It would actually take the form of a conversation and is quite productive.

<comment><USER44> Yes, that's it. So simple, so powerful.

</comment></comment></comment><comment><USER46> As I read this article, I thought to myself, "oh, this must be why we must make such good decisions, huh?"</comment>


Show HN: A Simple Imgur Alternative - <AUTHOR> https://imgrpost.com <comment><USER2> I'm only getting the Apache Test page.</comment>


Russia Tells Trump 'Enough Talk,' Time to Team Up in Syria Fight - <AUTHOR> https://www.bloomberg.com/politics/articles/2017-02-28/russia-tells-trump-enough-talk-time-to-team-up-in-syria-fight <comment><USER2> Trump: "Sorry, can't" Putin: "Yeah, Obama never would have done it either..." >.>.> CNN: US ground troops enter Syria today...</comment>


Show HN: Atom-Jsfmt - <AUTHOR> https://atom.io/packages/atom-jsfmt

<comment><AUTHOR> Hopefully this will help with the ease-of-adoption of jsfmt (having just written a bunch of go, I'm excited to see something like gofmt for javascript). It's not super fancy yet, but pull requests / recommendations are definitely welcome.

<comment><USER2> This is pretty cool, I'm going to give it a spin.</comment></comment>


On Being A Senior Engineer - <AUTHOR> http://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/?src=hn

<comment><AUTHOR> This was linked-to from the post corresponding to <https://news.ycombinator.com/item?id=4789747> as well as from its comments. Note that this was previously submitted as <https://news.ycombinator.com/item?id=4698111>, but didn't attract any discussion at the time.</comment>


Ask HN: How can someone get their work on ProductHunt without knowing a Hunter? - <AUTHOR> I'm currently in this situation and am looking to find a way through. <comment><USER2> You can post things on Product Hunt if you have an account that is a "contributor" [1]. When I did it, it meant fulfilling some easy requirements like upvoting items on the site for three days in a row.

[1] [https://help.producthunt.com/posting/how-can-i-get-access- to...](https://help.producthunt.com/posting/how-can-i-get-access-to-post)

</comment><comment><USER3> Quite new to Product Hunt myself but I believe you can publish/launch the product yourself or for more impact, you can reach out to some of the top hunters to see if they want to collaborate.

</comment><comment><USER4> the featured tab is manually curated. If they like your submission it's possible to end up on the front page the day after you submit, even with few votes (this happened to me a few times).

</comment><comment><USER5> same, please get in touch with me.</comment>


Raking through the parallelism tool-shed: matrix-matrix multiplication - <AUTHOR> http://blogs.msdn.com/b/nativeconcurrency/archive/2014/09/04/raking-through-the-parallelism-tool-shed-the-curious-case-of-matrix-matrix-multiplication.aspx

<comment><USER2> Matrix multiplication is one of the most abused computational kernels when showing off cache locality and vectorization optimizing compilers. Unfortunately very few scientific codes consist of massive matrix-matrix multiplies, and even more unfortunately quite a few of them require many vector additions and dot products - operations which are memory bound and confound the performance of scientific codes which make even the cleverest use of BLAS. Your CPU may be able to churn out a bajillion gigaflops on a matrix- matrix multiply, but once you get to the vector adds and dot products you just can't feed that FLOPS hungry beast fast enough to keep up the gains.</comment>