Intel will add deep-learning instructions to its processors - <AUTHOR> http://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/ <comment><USER3> That's a good news! About that, two days ago I modified the implementation of neural networks inside Neural Redis in order to use AVX2. It was a pretty interesting experience and in the end after modifying most of it, the implementation is 2x faster compared to the vanilla C implementation (already optimized to be cache obvious).

I never touched AVX or SSE in the past, so this was a great learning experience. In 30 minutes you can get 90% of it, but I think that to really do great stuff you need to also understand the relative cost of every AVX operation. There is an incredible user at Stack Overflow that replies to most AVX / SSE questions, if you check the AVX / SSE tag you'll find it easily.

However I noticed that when there were many load/store operations to do, there was no particular gain. See for example this code:

        #ifdef USE_AVX
                __m256 es = _mm256_set1_ps(error_signal);

                int psteps = prevunits/8;
                for (int x = 0; x < psteps; x++) {
                    __m256 outputs = _mm256_loadu_ps(o);
                    __m256 gradients = _mm256_mul_ps(es,outputs);
                    _mm256_storeu_ps(g,gradients);
                    o += 8;
                    g += 8;
                }
                k += 8*psteps;
        #endif

What I do here is to calculate the gradient after I computed the error signal (error * derivative of the activation function). The code is equivalent to:

        for (; k < prevunits; k++) *g++ = error_signal*(*o++);

Any hint about exploiting AVX at its max in this use case? Thanks. Ok probably this was more a thing for Stack Overflow, but too late, hitting enter.

<comment><USER4> Assuming this is your code: [https://github.com/antirez/neural- redis/blob/master/nn.c](https://github.com/antirez/neural- redis/blob/master/nn.c)

You're really just implementing a vector*matrix multiply. You probably want to just use BLAS's sgemv routine. On macOS, link Accelerate and use cblas_sgemv(); on Linux consider installing Intel MKL or OpenBLAS.

If you're just looking to learn what a reasonably state-of-the-art SGEMV kernel looks like for a modern chip like Haswell, check out OpenBLAS's code:

[https://github.com/xianyi/OpenBLAS/blob/develop/kernel/x86_6...](https://github.com/xianyi/OpenBLAS/blob/develop/kernel/x86_64/sgemv_n_microk_haswell-4.c)

<comment><USER3> That sounds a great advice, I'll check this library. I've the feeling that the fact I've non aligned addresses in the current weights scheme will be a problem and padding will be required. That's why I used AVX "loadu" that deals with non aligned addresses, but perhaps I'm paying a lot of performances because of this. Thanks.

EDIT: apparently on modern CPUs that's not the case and magically LOADU can be as fast as LOAD.

<comment><USER5> Don't do unaligned memory access, whatever your cpu flags say.

Another thing you can do, if you don't plan on using the results immediately, is to use non-temporal store (movntps for SSE2). If you do plan to use the results right away, then just use them without storing in main memory.

And you can do the usual unrolling of loop.

<comment><USER6> _Don 't do unaligned memory access, whatever your cpu flags say._

I don't think this is good advice. Do you have an example of poor performance of unaligned memory access on a processor that supports AVX?

I think the better advice is:

1) Prefer aligned access if possible, favoring writes over reads.

2) A single unaligned access per cycle usually does not cause a slowdown.

3) Accesses that cross 64B cachelines essentially act as two accesses, thus may add a cycle.

4) You can only sustain multiple accesses per cycle if you avoid crossing cachelines.

5) Writes that cross 4KB pages have a 100+ cycle penalty on pre-Skylake Intel (down to 5 cycles on Skylake).

<comment><USER5> Does anybody have an example of good performance of unaligned memory access on modern cpus ? And note that it doesn't matter if the cpu supports AVX, but if it has a flag that says it can do fast unaligned memory access (i don't remember, is it misalignsse ?).

Common sense says that unaligned access can't be faster then aligned. And if you have data that fits into a ymm register, then you might as well use aligned access (a neural network is usually an example of such).

I did test it a while ago. Problem is that i don't remember if it was on this, modern, cpu or the older one. I could test if i cared enough for other peoples opinion, but alas i don't (only usage of unaligned AVX access i found to be from newbies to SIMD). An example, that you request, would be to look at glibc memcpy, that uses ssse3 [0] so that it could always get aligned access (ssse3 has per-byte operations).

In other words, how about that the people who claim that operations that do extra work are as fast as the ones that don't prove it ? Instead of the burden of proof falling on people that don't have such an opinion/experience ? Then i will bow my head and say "You are right. Thank you for pointing that out". But alas google-ing for 10min and have found no such benchmark anywhere. And writing such a test isn't hard, not in the slightest.

[0][https://github.com/lattera/glibc/blob/master/sysdeps/x86_64/...](https://github.com/lattera/glibc/blob/master/sysdeps/x86_64/multiarch/memcpy- ssse3.S)

<comment><USER6> _In other words, how about that the people who claim that operations that do extra work are as fast as the ones that don 't prove it? Instead of the burden of proof falling on people that don't have such an opinion/experience ? Then i will bow my head and say "You are right. Thank you for pointing that out". But alas google-ing for 10min and have found no such benchmark anywhere. And writing such a test isn't hard, not in the slightest._

I tend to the opposite view: those saying "do not do X" are in fact obligated to explain why X should be avoided. But perhaps this is just a difference in worldview.

One good reference for the "alignment doesn't matter" view is an earlier post on the same blog that is being discussed here: [http://lemire.me/blog/2012/05/31/data-alignment-for-speed- my...](http://lemire.me/blog/2012/05/31/data-alignment-for-speed-myth-or- reality/)

I linked elsewhere in the thread to my more detailed experiments regarding unaligned vector access on Haswell and Skylake: [http://www.agner.org/optimize/blog/read.php?i=415#423](http://www.agner.org/optimize/blog/read.php?i=415#423). This is the source of my conclusion that alignment is not a significant factor when reading from L3 or memory, but does matter when attempting multiple reads per cycle from L1.

Both of these link to code that can be run for further tests. If you find an example of an unaligned access that is significantly slower than an aligned on a recent processor (and they certainly may exist) I'll nudge Daniel into writing an update to his blog post.

<comment><USER5> >I tend to the opposite view: those saying "do not do X" are in fact obligated to explain why X should be avoided. But perhaps this is just a difference in worldview.

For me it depends on the context. Here aligned access makes more sense so unaligned should be defended.

I hacked together a test, feel free to point out mistakes.

c part: [http://pastebin.com/zMha8Fre](http://pastebin.com/zMha8Fre)

asm part(SSE and SSE2 for nt): [http://pastebin.com/mxEFC8Cw](http://pastebin.com/mxEFC8Cw)

results:

aligned: 0 sec, 69049070 nsec

unaligned on aligned data: 0 sec, 69210069 nsec

unaligned on one byte unaligned data: 0 sec, 70278354 nsec

unaligned on three bytes unaligned data: 0 sec, 70315162 nsec

aligned nontemporal: 0 sec, 42549571 nsec

naive: 0 sec, 67741031 nsec

Repeating the test only shows non-temporal to be of benefit. The difference of, on average, 1-2% is not much, that i yield. But it is measurable.

But that is not all! Changing the copy size to something that fits in the cache (1MB) showed completely different results.

aligned: 0 sec, 160536 nsec

unaligned on aligned data: 0 sec, 179999 nsec

unaligned on one byte unaligned data: 0 sec, 375108 nsec

aligned nontemporal: 0 sec, 374811 nsec // usually a bit slower then one byte unaligned

And, out of interest, i made all the copy-s skip every second 16 bytes, (relative) results are the same as the original test except non-temporal being over 3x slower then anything else.

And this is on a amd fx8320 that has the misalignsse flag. On my former cpu (can't remember if it was the celeron or the amd 3800+) the results were _very_ much in favor of aligned access.

So yea, align things. It's not hard to just add " __attribute__ ((aligned (16))) " (for gcc, idk anything else).

PS It may seem like the naive way is good, but memcpy is a bit more complicated then that.

<comment><USER7> See what happens when you change HALF_OF_BUFFER_SIZE from 1M to 1M+64. Or 128 or 1024. I think what you observed is the result of loads and stores hitting the same cache set at the same time, all while misalignment additionally increases the number of cache banks involved in any given operation. But that's just hand-waving, I don't know the internals enough to say with confidence what's going on exactly.

BTW, changing misalignment from 1 to 8 reduces this effect by half on my Thuban. Which is important, because nobody sane would misalign an array of doubles by 1 byte, while processing part of an array starting somewhere in the middle is a real thing.

Also, your assembly isn't really that great. In particular, LOOP is microcoded and sucks on AMD. I got better results with this:

      typedef float sse_a __attribute__ ((vector_size(16), aligned(16)));
      typedef float sse_u __attribute__ ((vector_size(16), aligned(1)));

      void c_is_faster_than_asm_a(sse_a *dst, sse_a *src, int count) {
              for (int i = 0; i < count/sizeof(sse_a); i += 8) {
                      dst[i] = src[i+0];
                      dst[i] = src[i+1];
                      dst[i] = src[i+2];
                      dst[i] = src[i+3];
                      dst[i] = src[i+4];
                      dst[i] = src[i+5];
                      dst[i] = src[i+6];
                      dst[i] = src[i+7];
              }
      }
      void c_is_faster_than_asm_u(sse_u *dst, sse_u *src, int count) {
              // ditto

<comment><USER5> >See what happens when you change HALF_OF_BUFFER_SIZE from 1M to 1M+64. Or 128 or 1024.

Tested. There's a greater difference between aligned and aligned_unaligned. But that made the test go over my cache size (2MB per core), so i tested with 512kB with and without your +128. Results were (relatively) similar to the original 1MB test.

>Which is important, because nobody sane would misalign an array of doubles by 1 byte [...]

Adobe flash would, for starters (idk if doubles but it calls unaligned memcpy all the time). The code from the person above also does because compilers sometimes do (aligned mov sometimes segfaults if you don't tell the compiler to aligned an array, especially if it's in a struct).

>Also, your assembly isn't really that great. In particular, LOOP is microcoded and sucks on AMD. I got better results with this:

Of course you did, you unrolled the loop. The whole point was to test memory access, not to write a fast copy function.

>c_is_faster_than_asm_a()

First of all, that is not in the C specification. It is a gcc/clang/idk_if_others extension to C. It compiles to similar what I would write if i had unrolled the loop. Actually worse, here's what it compiled to [http://pastebin.com/yL31spR2](http://pastebin.com/yL31spR2) . Note that this is still _a lot_ slower then movnpts when going over cache size.

edit: I didn't notice at first. Your code copies 8 16byte... chunks to the first. You forgot to add +n to dst.

<comment><USER7> Crap, that was bad. Fixed. And removed the insane unrolling, now 2x is sufficient.

You are right, 128 is not enough on Piledriver. Still,

      ./test $(( 512*1024+1024*0 ))
      aligned: 0 sec, 134539 nsec
      unaligned on aligned data: 0 sec, 101471 nsec
      unaligned on one byte unaligned data: 0 sec, 190368 nsec
      unaligned on three bytes unaligned data: 0 sec, 181823 nsec
      aligned nontemporal: 0 sec, 359920 nsec
      naive: 0 sec, 214007 nsec
      c_is_faster_than_asm_a:   0 sec, 92437 nsec
      c_is_faster_than_asm_u:   0 sec, 92643 nsec
      c_is_faster_than_asm_u+1: 0 sec, 156574 nsec
      c_is_faster_than_asm_u+3: 0 sec, 156359 nsec
      c_is_faster_than_asm_u+4: 0 sec, 154932 nsec
      c_is_faster_than_asm_u+8: 0 sec, 155784 nsec

      ./test $(( 512*1024+1024*1 ))
      aligned: 0 sec, 107036 nsec
      unaligned on aligned data: 0 sec, 94861 nsec
      unaligned on one byte unaligned data: 0 sec, 114444 nsec
      unaligned on three bytes unaligned data: 0 sec, 115915 nsec
      aligned nontemporal: 0 sec, 407951 nsec
      naive: 0 sec, 219215 nsec
      c_is_faster_than_asm_a:   0 sec, 82474 nsec
      c_is_faster_than_asm_u:   0 sec, 82554 nsec
      c_is_faster_than_asm_u+1: 0 sec, 112544 nsec
      c_is_faster_than_asm_u+3: 0 sec, 115159 nsec
      c_is_faster_than_asm_u+4: 0 sec, 198434 nsec
      c_is_faster_than_asm_u+8: 0 sec, 118952 nsec

4k is the stride of L1, your code slows down 1.5x:

      ./test $(( 512*1024+1024*4 ))
      aligned: 0 sec, 107576 nsec
      unaligned on aligned data: 0 sec, 94010 nsec
      unaligned on one byte unaligned data: 0 sec, 140534 nsec
      unaligned on three bytes unaligned data: 0 sec, 140517 nsec
      aligned nontemporal: 0 sec, 467981 nsec
      naive: 0 sec, 206891 nsec
      c_is_faster_than_asm_a:   0 sec, 85294 nsec
      c_is_faster_than_asm_u:   0 sec, 85174 nsec
      c_is_faster_than_asm_u+1: 0 sec, 118674 nsec
      c_is_faster_than_asm_u+3: 0 sec, 118902 nsec
      c_is_faster_than_asm_u+4: 0 sec, 118370 nsec
      c_is_faster_than_asm_u+8: 0 sec, 118638 nsec

128k is the stride of L2, both codes slow down further:

      ./test $(( 512*1024+1024*128 ))
      aligned: 0 sec, 167906 nsec
      unaligned on aligned data: 0 sec, 140650 nsec
      unaligned on one byte unaligned data: 0 sec, 239271 nsec
      unaligned on three bytes unaligned data: 0 sec, 251342 nsec
      aligned nontemporal: 0 sec, 458850 nsec
      naive: 0 sec, 364731 nsec
      c_is_faster_than_asm_a:   0 sec, 125240 nsec
      c_is_faster_than_asm_u:   0 sec, 118917 nsec
      c_is_faster_than_asm_u+1: 0 sec, 197348 nsec
      c_is_faster_than_asm_u+3: 0 sec, 196755 nsec
      c_is_faster_than_asm_u+4: 0 sec, 199757 nsec
      c_is_faster_than_asm_u+8: 0 sec, 197842 nsec

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Blogspam, kinda. Post just links to [https://software.intel.com/sites/default/files/managed/69/78...](https://software.intel.com/sites/default/files/managed/69/78/319433-025.pdf) and says it mentions two new instructions: AVX512_4VNNIW (Vector instructions for deep learning enhanced word variable precision) and AVX512_4FMAPS (Vector instructions for deep learning floating-point single precision)

On Intel's part, it seems kinda... late? It's like adding Bitcoin instructions when you already know everyone's racing to make Bitcoin ASICs. How could it beat dedicated hardware, or even GPUs, on ops/watt? Maybe it's intended for inference, not training, but that doesn't sound compelling either.

<comment><USER9> Intel is also adding FPGAs[1] right next to their CPUs, which can possibly become a next big thing in HPC.

[1] [http://www.extremetech.com/extreme/184828-intel-unveils- new-...](http://www.extremetech.com/extreme/184828-intel-unveils-new-xeon- chip-with-integrated-fpga-touts-20x-performance-boost)

<comment><USER10> This aspect of their new chips is massively underrated. An FPGA is the future- proof solution here, not chip-level instructions for the soup-du-jour in machine learning.

Edit: which is not to say that I'm not welcoming the new instructions with open arms...

<comment><USER11> I'm not as hyped about FPGA-in-CPU so much as I am of having Intel release a specification for their FPGAs that will allow development of third-party tools to program them.

Right now the various vendors seem to insist on their own proprietary _everything_ which makes it hard to streamline your development toolchain. Many of the tools I've used are inseparably linked to a Windows-only GUI application.

<comment><USER12> I'm not too familiar with FPGAs, but isn't the tradeoff that since they are flexible they are usually much slower than CPUs/GPUs and it is usually used to prototype an ASIC? How is FPGA-in-CPU going to be a good thing?

<comment><USER11> They're slower in terms of clock speed, but they're not slower in terms of results.

You can do things in an FPGA that a CPU can't even touch, it can be configured to do massively parallel computations for example.

If Bitcoin is any example, GPU is faster than CPU, FPGA is faster than GPU, and ASIC is faster than FPGA. Each one is at least an order of magnitude faster than the other.

A GPU can do thousands of calculations in parallel, but an FPGA can do even more if you have enough gates to support it.

I haven't looked too closely at the SHA256 implementations for Bitcoin, but it is possible to not only do a lot of calculations in parallel, but also have them pipelined so each round of your logic is actually executing simultaneously on different data rather than sequentially.

</comment></comment></comment></comment></comment></comment><comment><USER13> Apologies if I'm dumb, but did Intel actually tell exactly what operations these "deep learning" instructions do?

I skimmed through the linked Intel manual, but it seems that it just defines two instruction family names (AVX512_4VNNIW and AVX512_4FMAPS) without actually saying what they do.

* It almost feels like a marketing term, in the same way everything was "multimedia instructions" back in the 90s.

<comment><USER14> It's been a long time since I look at machine language but, if I understand correctly, the difference is the capacity of the operation. Instead of performing an addition operation on 1 or 2 bytes at a time the operation can be performed on 64 bytes at a time. Given that 'deep learning' requires a number of parallel simple operations expanding the volume of parallel operations in a single CPU instruction boost capacity.

 __Seriously, just supposition until someone with better understanding chimes in.

<comment><USER15> heh, if this is the case then we're going to benefit in a lot of areas from this.

</comment></comment></comment><comment><USER16> Really curious how Intel (others?) determined that these new instructions are for deep learning. The instructions are for permutation, packed multiply+low/high accumulate, and a sort of masked byte move. Are these super common in deep learning?

<comment><USER17> Deep learning is all about GEMM operations: matrix-matrix, or matrix-vector multiplications. And the values in these matrices are typically low precision (16 or even 8 bits is enough). So if you can pack many of such low precision values into vectors, and perform a dot product in parallel, you will get a pretty much linear speedup.

</comment></comment><comment><USER18> Cool stuff, but unfortunately Intel has really delayed AVX512 instructions for their main consumer processors (ffs, it was supposed to hit on Skylake). It looks like we have another die shrink to go after Kaby Lake before we get that sweet ultra-wide SIMD:

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

<comment><USER17> Skylake Xeons are still on track to have AVX512, last I checked.

</comment></comment><comment><USER19> Hugged. Google cache link: [http://webcache.googleusercontent.com/search?q=cache:lemire....](http://webcache.googleusercontent.com/search?q=cache:lemire.me/blog/2016/10/14/intel- will-add-deep-learning-instructions-to-its- processors/&ie=utf-8&oe=utf-8&client=firefox-b- ab&gws_rd=cr&ei=yg0BWIaKIIzVvgSfr4uIDQ)

</comment><comment><USER20> I did tests with Torch7 few days ago to compare it with OpenBLAS library on multiple cores against CUDNN.

Single core difference was around 100x.

Using multiple cores improved the situation but there still was about 15x difference that did not improve by adding more cores (I tested with up to Xeon 64 cores on a single machine).

I did not test with Intel MKL library as I did not have time for this.

I wonder how much these instructions would improve the situation and does anybody here have experience with Intel MKL library.

</comment><comment><USER21> Not holding my breath, since they haven't gotten AVX512 into desktops yet! (Kaby Lake might be worth something if they did... but nope, just more lie7's mostly...)

</comment><comment><USER22> There is actually an undocumented neural net engine within the Intel chip on the Arduino 101.

<comment><USER22> I guess it's documented now: [http://www.general- vision.com/products/curieneurons/](http://www.general- vision.com/products/curieneurons/)

</comment></comment><comment><USER23> Could someone explain how these are deep-learning optimized? All I see is that they're part of the 512-bit vector family that has previously existed.

</comment><comment><USER24> Isn't this basically just wider SIMD? Is this in anyway actually tailored specifically to deep learning?

</comment><comment><USER25> How much will this help? Neural networks work so well on distributed computing systems because the operations run in parallel. With a neural network, you can leverage tens of thousands of separate computing cores. Top intel processors have around a dozen cores or so.

What am I missing here?

<comment><USER26> > What am I missing here?

There may be a market sweet spot between dedicated high-performance machine learning that's ideal for experts who are willing to buy/lease dedicated hardware and regular developers who want to use simpler machine learning toolkits to solve easier problems. Toolsets like Julia, NumPy, R, etc would take advantage of the new instruction and basically give your average a speed boost for simply having an Intel PC.

<comment><USER27> This reminds me when you had to buy crypto accelerator cards for your webservers (does anyone remember Soekris?)...

The market stalled after Intel started adding support for crypto operations on-die.

This looks like Intel is protecting his server chip business shooting at nVidia before they start selling Titan-X with other server chip (what chip - <USER2> don't know; but I bet there's a business plan on a spreadsheet somewhere).

I guess training neural nets will a GPUs / custom chips task for some time; but as soon as you have developed the classifier / predictor you have to run it on whatever hardware you have and that means you might need less parallel computing power and it doesn't make (financial) sense buying GPUs for that.

</comment></comment></comment><comment><USER28> You can also try a binarized neural network.

[https://arxiv.org/abs/1602.02830](https://arxiv.org/abs/1602.02830)

</comment><comment><USER29> > Intel is hoping that the Xeon+FPGA package is enticing enough to convince > enterprises to stick with x86, rather than moving over to a competing > architecture (such as Nvidia's Tesla GPGPUs ).

Then let it prove its performance on a few deep learning benchmarks. If is so fast and accessible, we'll be impressed.

</comment><comment><USER30> Is this the moment when Sarah Connor shows up to ruin the party?

</comment><comment><USER31> Excuse my ignorance, but isn't "deep learning instructions" an oxymoron

</comment><comment><USER32> So Intel CPUs will be able to perform 16 operations at a time, when Nvidia can do thousands?

<comment><USER33> Latency

<comment><USER34> > Latency

This. Also, trying to slow the loss of customers purchasing what are essentially Nvidia GPU-heavy systems with Nvidia CPUs tacked on to act as the controllers.

</comment></comment></comment><comment><USER35> Sounds good to me. Let's hope this is not just a marketing move.

</comment><comment><USER36> What are the implications of this? Faster processing?

<comment><USER24> TL;DR: You can basically do 8 operations at once (but of course, it's not that simple).

Think about a normal 64-bit register: you can add and subtract 64-bit numbers, OR and AND them, etc. Now think about a 64- _byte_ register. What could you do with that? Well, suppose you're looping through contiguous memory and changing each word AND the change that your making to each word is independent of the change you make to any other word. With a normal 64-bit register you'd have to do one operation on each word. But with a 64-byte "register", you can load 8 words into it and do just one operation for the same effect as applying that operation 8 times (once to each word). Thus, some code--- _vectorizable_ code ---can be sped up nearly 8x.

</comment></comment><comment><USER37> Great, another extension to the ever-growing instruction x86 instruction set...

I'd question why, but at this point, we're just going to keep bolting things on to an existing architecture.

"Microcode it. Why not?"

</comment><comment><USER38> Well. I guess I'm going to be using Intel!

</comment><comment><USER39> I hope they will be more useful than MPX.

</comment><comment><USER40> "get me a beer' would be an appreciated instruction to add.</comment>


How a fake story about Angela Merkel led to a far-right cluster on Reddit - <AUTHOR> https://medium.com/@DFRLab/spread-it-on-reddit-3170a463e787 <comment><USER2> It's good to see this analysed; conspiracy theory of this kind has long been a plague on US politics and now it seems to be spreading to Europe. It takes a remarkably small number of people to put it in front of the meme-susceptible, who will then themselves spread it.

(What I don't really understand is why US conspiracyism limits itself only to things that don't exist - you don't hear so much about Watergate, Iran-Contra, COINTELPRO and so on.)

<comment><USER3> >(What I don't really understand is why US conspiracyism limits itself only to things that don't exist - you don't hear so much about Watergate, Iran-Contra, COINTELPRO and so on.)

There's an easy answer: you can't wildly speculate when you have the facts. This is why "PizzaGate" is still being talked about. There will _never_ be proof, because it's a ridiculous conspiracy. That leaves the conspiracy enthusiasts free to hunt for evidence and clues forever.

It's almost tautological: once we know something happened, it's no longer a conspiracy. Therefore, conspiracy enthusiasts will no longer care about it.

<comment><USER4> > It's almost tautological: once we know something happened, it's no longer a > conspiracy.

That's... not actually what "conspiracy" means.

<comment><USER3> Typing "define:conspiracy" into Google, I get:

"conspiracy (noun): a secret plan by a group to do something unlawful or harmful"

<comment><USER4> Could you make your point more clearly? I agree that an exposed conspiracy is no longer an _ongoing_ conspiracy, but I don't think that is necessary for a conspiracy theory.

</comment></comment></comment></comment></comment><comment><USER5> I feel that internet discussions have turned for the worse over the last decade or so. There has always been plenty of trolls and weird conspiracy theories, but there used to be a sense that the truth wins out in the end. It was difficult to keep defending an obvious falsehood when faced with rational arguments. Some tried anyway, but they failed to convince others. Online discussions were never perfect of course, even reasonable people will often disagree about what is true.

Now, it seems like people do not care if what they write is true or not, as long as it gets repeated and upvoted enough. There is no self-correction either. When something like pizzagate turns out to be complete nonsense, they people who spread it are not discouraged from doing the same thing again. In their eyes it was a very successful social media campaign.

<comment><USER2> > In their eyes it was a very successful social media campaign.

Unfortunately the internet is now a theatre for propaganda war, in addition to regular electioneering and marketing.

</comment></comment><comment><USER6> > ...so that she could unleash an "EU Army" against fellow EU member states.

The article puts "EU Army" in scare quotes, but that part is actually true; Merkel does support the creation of an EU Army:

> "Mrs Merkel is backing a push by Mr Juncker to create an EU army." [1]

[1] [http://www.telegraph.co.uk/news/worldnews/europe/eu/11861247...](http://www.telegraph.co.uk/news/worldnews/europe/eu/11861247/Merkel- expects-Cameron-to-back-EU-army-in-exchange-for-renegotiation.html)

<comment><USER7> The most convincing lies are based on some truth, then interpreted in a completely wrong fashion. Yes, Angela Merkel, and other European heads of state are pushing for an European Army. That is, an army to defend Europe against aggression from the outside, and have even less national armies who could potentially fight against each other inside Europe. So the idea is to have less dangers of "unleashing" any forces against fellow EU member states.

</comment></comment><comment><USER8> I wonder if flooding the internet with obviously-fake news (eg. markov model it) is one way to immunize people against the more slick kind of fake news.

<comment><USER9> It's also a sure way to inoculate them against every news in general... which wouldn't be a very positive outcome.

<comment><USER8> Yes you may be right. I guess a _positive_ outcome would involve people using their brain more and checking their sources (of information) and just generally being less credulous.

</comment></comment></comment><comment><USER10> Ok, now take a look at the same overlap for reddit powermods.

/u/qgyh2 , for example, mods a ton of default subs in addition to the following country subs: canada, australia, greece, israel, malaysia, pakistan, england, srilanka.

How are we so sure that this is isolated to only shaping a far right narrative?

<comment><USER11> Do we know who qgyh2 is? Because unless they're a shared account or a bot, I don't see how one person could possibly moderate so many highly active subreddits, let alone do so in a way to promote whatever agenda you think is being promoted.

<comment><USER12> qgyh2 was an early Reddit user and does not actively moderate those subreddits. They've addressed this directly:

[https://www.reddit.com/r/ModSupport/comments/4xhyyh/okay_adm...](https://www.reddit.com/r/ModSupport/comments/4xhyyh/okay_admins_enough_is_enough_can_you_do_something/d6vzaz1/?context=3&st=iz07raaw&sh=6a0e9e10)

</comment></comment></comment><comment><USER13> Is she deliberately trying to "Hitlerize Europe" or is she just somebody whose heart is in the right place but repeatedly making poor policy choices? Regardless, she's running Europe into the ground.

We can't know what Merkel's end goal is because we cannot read her mind, so this theory is obviously just conjecture that fits some of the facts and cannot be proven or disproven.

</comment><comment><USER12> This is interesting as a work of network analysis, but I'm not sure how to connect this back to politics. It seems pretty clear to me whenever I browse /r/The_Donald that they're actively uninterested in fact-checking. There are posts hating on the new Netflix TV series "Dear White People" where people ask questions like "Do I even want to know what it's about?". There was a highly- upvoted image about Pizzagate with a leaked Podesta email on the left and a UrbanDictionary screenshot on the right defining some word as a lewd sex act—from the fourth page of results. Anyone who's ever been to UrbanDictionary knows that literally every word has a definition somewhere about it being a lewd sex act.

Are the majority of Trump (and Farage, and Petry, and so forth) voters similarly uninterested in actual facts? That seems unlikely to me, although certainly possible. I worry that the fringe of loud people on the internet isn't actually connected in a meaningful way to voters, and so analyzing the fringe isn't a good way to learn anything about the world at large, just about loud people on the internet.

<comment><USER14> I'm curious about Pizzagate. Some of those emails are clearly trying to hide something. The language in them is obviously "code" for something or other. Has there been any other plausible/implausible theories apart from the Pizzagate one?

Edit: Getting downvoted for asking a question. To be clear I have no idea what the emails are about and zero agenda here. The emails came across as very weird to me which is why I am asking.

<comment><USER13> We can't know for certain what's going on there, but you will notice that some people are desperate to declare that this has been "debunked" without there being any sort of investigation.

<comment><USER15> We can't know for certain if there has been an investigation, but you will notice that some people are desperate to declare that this has not been investigated by the relevant authorities.

<comment><USER13> Supposedly, somebody filed a FOIA request to get info on the DC police's investigation into these allegations and despite previously saying that their investigation hasn't yielded any proof of a crime, it turns out that the police never even investigated it.

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

Nothing conclusive here, but again, there are so many voices here who are so hysterically adamant about something that can't be proven either way that it makes me think that there's more to this.

<comment><USER15> Perhaps the DC police are part of the pedophile ring? I haven't heard anyone disprove that yet, and it would make the conspiracy even more evil. I'm stunned that you haven't made this obvious leap of logic.

The hysteria stems from the concept that your algorithm for detecting conspiracy is to grant credence to theories in direct proportion to their nefariousness. Your hypotheses are not falsifiable.

This guarantees that you will reject reasonable and logical explanations which are discordant with the conspiracy.

Your last sentence is a perfect example of this. The most villainous explanation for what you see as hysterical adamance is that every commenter here is covering up a pedophile ring.

<comment><USER13> That last sentence wasn't too precisely worded so I can understand your response...but when I said "so many voices here" I was more thinking about the media entities who were so adamant that there's nothing to see here than the genuine posters on this site. Many of the posters here are well-intentioned, I'm sure, but misled by the media.

Pedophile rings have been uncovered in many walks of life: religion, sports, hollywood and media, business, foreign governments, even Dennis Hastert and many others. Yet somehow the current US political establishment is immune to this?

Look, I'm not saying to lock up anybody without a trial or anything. We admittedly don't know if there's even a crime here yet. I just think the pile of circumstantial evidence is enough to at least warrant some kind of investigation. The media declared this "fake news" and brushed much of the weirdest facts under the rug.

<comment><USER15> The fallacy you are touting is that it is established fact that the media is misleading its viewers with respect to the pizzagate conspiracy. For this to be the case, both you and the media would need to possess the truth. Since that is clearly not the case, you are once again jumping to the conclusion that the conspiracy must be true, and from there, working backwards to the media misleading people. You are conflating possibility with actuality.

Yes the media has misled it's viewers in the past. The media will mislead it's viewers in the future. But these facts are not sufficient to logically conclude that the media is misleading it's viewers on the pizzagate conspiracy. Journalism is not 100% misleading.

Yes pedophile rings have existed in the past, and will likely exist in the future. However, starting from the position that all organizations are assumed to be pedophile rings until proven otherwise is a complete inversion of our entire judicial system. The existence of other pedophile rings within powerful organizations does not infer that all powerful organizations contain pedophile rings.

Bias in journalism is an unavoidable reality. Choosing which stories to report upon is an example of bias. But the existence of bias does not infer an agenda. It is possible that journalists have an agenda, but it is not a requirement.

A simple analogy is that all squares are rectangles, but not all rectangles are squares. Many of your arguments are analogous to saying that since some rectangles are squares, and we can't directly observe this particular rectangle, we must conclude that this rectangle is a square.

<comment><USER13> Thanks for your thoughtful response and attempt to provide logic and reason. I respect that. Just to quickly reply to some of this though.

> both you and the media would need to possess the truth. Since that is > clearly not the case, you are once again jumping to the conclusion that the > conspiracy must be true,

I am not rushing to jump to the conclusion that this conspiracy is true. I said the allegations should have some type of investigation. It is actually the media that has determined, with no conclusive proof one way or another, that this story is absolutely false.

> However, starting from the position that all organizations are assumed to be > pedophile rings until proven otherwise is a complete inversion of our entire > judicial system.

I never stated this. When speaking about Pizzagate in the past, I've always maintained that everybody is innocent until proven guilty. Given the types of allegations being spread here however, I support some type of investigation.

> Many of your arguments are analogous to saying that since some rectangles > are squares, and we can't directly observe this particular rectangle, we > must conclude that this rectangle is a square.

No, I'm saying that since we can't directly observe this particular rectangle, I think it's wise to investigate before making a determination about it's shape. The media are the ones that have already decided what shape it is before having proof.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Show HN: SunOpps – Go solar the easy way - <AUTHOR> http://www.sunopps.com/

<comment><AUTHOR> We just launched the first version of SunOpps a week ago. I would love to hear your feedback. Thanks, Hussein!

</comment><comment><USER2> This is pretty cool! The app store buttons aren't showing up correctly for me though.

<comment><AUTHOR> Thanks! Weird on the App Store link. Any chance you don't mind sharing more details on what platform and browser you are using?

<comment><USER2> I'm using Firefox 35.0 on 64-bit Windows 7.

It looks like this: [https://i.imgur.com/uo6nhpA.png](https://i.imgur.com/uo6nhpA.png).</comment></comment></comment>


A Guide to Synthesizing Adversarial Examples - <AUTHOR> http://www.anishathalye.com/2017/07/25/synthesizing-adversarial-examples/ <comment><AUTHOR> Last week, I wrote a blog post ([https://blog.openai.com/robust-adversarial- inputs/](https://blog.openai.com/robust-adversarial-inputs/)) about how it's possible to synthesize really robust adversarial inputs for neural networks. The response was great, and I got several requests to write a tutorial on the subject because what was already out there wasn't all that accessible. This post, written in the form of an executable Jupyter notebook, is that tutorial!

Security/ML is a fairly new area of research, but I think it's going to be pretty important in the next few years. There's even a very timely Kaggle competition about this ([https://www.kaggle.com/c/nips-2017-defense-against- adversari...](https://www.kaggle.com/c/nips-2017-defense-against-adversarial- attack)) run by Google Brain. I hope that this blog post will help make this really neat area of research slightly more approachable/accessible! Also, the attacks don't require that much compute power, so you should be able to run the code from the post on your laptop.

<comment><USER2> Thank you very much! I requested this and I think I might have possibly come off as rude or entitled but I am so happy you donated your time to create this tutorial!

<comment><AUTHOR> Oh, I didn't take it that way at all. In fact, I thought it was a great idea! :)

</comment></comment></comment><comment><USER3> > This adversarial image is visually indistinguishable from the original, with > no visual artifacts. However, it's classified as "guacamole" with high > probability!

May "guacamole" become as prominent as "Alice and Bob".

</comment><comment><USER4> This is delightful. As someone who uses AI/ML/MI/... for security, I find there is not nearly enough understanding for how attackers can subvert decision systems in practice.

Keep up the good work!

<comment><USER2> I was introduced to this from a Defcon panel I went to in 2016. See [https://www.youtube.com/watch?v=JAGDpJFFM2A](https://www.youtube.com/watch?v=JAGDpJFFM2A) . It gives a good conceptual overview.

</comment></comment><comment><USER5> I have the feeling that the fact that imperceptible peturbations changes the labels, means that our networks/models don't yet look at the "right" parts of the input data.

Hopefully, this means research will focus on more robust classifiers based on weakness identified by adversarial approaches!

</comment><comment><USER6> Is the next step generating adversarial examples and injecting them into the training pipeline?

<comment><USER7> I think there have been some papers on that already. Sorry, I don't know them off the top of my head. It's definitely a good idea.

<comment><USER8> Yes:

> Adversarial training seeks to improve the generalization of a model when > presented with adversarial examples at test time by proactively generating > adversarial examples as part of the training procedure. This idea was first > introduced by Szegedy et al. [SZS13] but was not yet practical because of > the high computation cost of generating adversarial examples. Goodfellow et > al. showed how to generate adversarial examples inexpensively with the fast > gradient sign method and made it computationally efficient to generate large > batches of adversarial examples during the training process [GSS14]. The > model is then trained to assign the same label to the adversarial example as > to the original example—for example, we might take a picture of a cat, and > adversarially perturb it to fool the model into thinking it is a vulture, > then tell the model it should learn that this picture is still a cat. An > open-source implementation of adversarial training is available in the > cleverhans library and its use illustrated in the following tutorial.

[http://www.cleverhans.io/security/privacy/ml/2017/02/15/why-...](http://www.cleverhans.io/security/privacy/ml/2017/02/15/why- attacking-machine-learning-is-easier-than-defending-it.html)

[https://arxiv.org/abs/1312.6199](https://arxiv.org/abs/1312.6199)

[https://arxiv.org/abs/1412.6572](https://arxiv.org/abs/1412.6572)

</comment></comment></comment><comment><USER9> I was really inspired by this paper at USENIX [1]. This looks like very _very_ early research, but the outline it provides leaves lots of room for adversarial ML research.

Bonus, if you tackle this problem you get several semi-orthogonal technologies for "free".

1 - [https://www.usenix.org/system/files/conference/cset16/cset16...](https://www.usenix.org/system/files/conference/cset16/cset16_paper- kaufman.pdf)

</comment><comment><USER10> If it is so easy to fool deep learning, why is it so hyped? Seems a great security risk.

<comment><USER11> Many machine learning and reinforcement learning models are susceptible to adversarial attacks; it's not unique to deep learning. However, because so many systems that are currently deployed in applications use deep learning, it's under particular scrutiny.

<comment><USER10> Then it seems the hype of machine learning is not well founded. Machine learning in general is a big risk if it so easily fooled.

</comment></comment></comment><comment><USER12> This seems like a direct argument against camera only systems for autonomous vehicles.

<comment><USER5> Robustly synthesizing and delivering adversarial input to cameras in the wild in real time is a very different problem. Easier to just blind then with a laser. Which you could also do to humans, if you're adversarial enough.

<comment><USER13> But randomly "running into" a naturaly generated adversial input in the wild should be a more common problem.

The end result will vary depending if the adversial input is a child or the rear end of a truck illuminated by sunshine at a certain angle.

So far only the second one have been tested IRL but for some reason I'm not really fond of the idea that we should be gathering more field data of adversial input...

My main fear with current autonomous driving applications of ML is that they might not be that ready for prime time and that we are only a few deadly accidents away from a major setback in public trust relating to autonomous driving.</comment></comment></comment>


Image hosting that doesn't suck - just drag and drop - <AUTHOR> http://min.us/

<comment><USER2> Is there any other way to drop a picture? Even though drag & drop seems to be the easiest and most comfortable way, for me, it is not :-) I'd have to run some kind of file manager, find the directory, image, carefully position both file manager window and the browser, do the job and then put everything back. Surprisingly hard, but that's a real setup that I have (and many people I know too).

<comment><USER3> Are you saying that you'd like to do image hosting from command line? I think you might be opposite to the target audience of this site.

<comment><AUTHOR> That _would_ be cool, though.

Personally, I either want to upload stuff from Finder, or upload stuff from the command line.

What I _hate_ doing is browsing to an image from a file picker.

Something like <http://sprunge.us/> for images would be great!

<comment><USER4> You can use the built-in photo sharing on Dropbox, or use Dropbox integration with <http://ourdoings.com/>

</comment></comment></comment></comment><comment><USER5> Love it! Clean, so simple it requires almost no instructions and it JUST WORKS. I also love the fact that I don't have to wait for the current image (or batch) to finish uploading and can immediately drag more files in.

(Actually, that last feature made me feel stupid for a moment: I wondered how images seemed to be uploaded so "instantly" and only after testing it on a large image file did I realise that you're just displaying the local image!)

<comment><USER6> This is Carl (Minus cofounder). Exactly, Evgeny: When you drop an image into Minus, we immediately show the local image to offer the user immediate usability. The image is uploaded in the background. We'll add indicators to make this more obvious. Thanks for the feedback!

</comment></comment><comment><USER7> The cynical side of me makes me think that this will go down the road of all other image hosting services that didn't suck: To cover the immense bandwidth costs, sooner or later, it will have to suck like everybody else.

At that point, a new service that "doesn't suck" will pop up.

<comment><USER8> actually, Imgur.com was announced with exactly the same title at reddit some time ago...

edit: found it [http://www.reddit.com/r/reddit.com/comments/7zlyd/my_gift_to...](http://www.reddit.com/r/reddit.com/comments/7zlyd/my_gift_to_reddit_i_created_an_image_hosting/)

<comment><USER7> that's what I had in mind, but I didn't know whether imgur was known here.

</comment></comment></comment><comment><USER9> Works as advertised! Minimal and clean.

I just tried to copy the url of my 3.1mb image into my browser but it hanged; turns out you use a base64 encoded string of the whole image to display it like:

data:image/png;base64,... etc

Was this technically necessary? I guess so, but since you show the direct link underneath it, why not replace it with that one?

<comment><USER10> Thanks for the feedback/comment :) We display the image that way so you are able to Preview it while the image uploads to our server in the backend. Once it finishes however you refresh and will see the images loaded from our server.

We also convert larger images into shrunken sizes for the gallery so it can be viewed without too much lag, but the full size image will still be available via the "Link to Image" or "Download all as Zip" function :)

John

</comment></comment><comment><USER11> Works great, but when I tested it out as an anonymous user, then decided to sign up, it didn't import the gallery I just made.

<comment><USER6> Our thinking was that the galleries people create anonymously are different than the galleries people want to associate their user with, so we make sure to make those two histories completely separate. Any ideas on how we can make this more clear from a UX design perspective?

</comment></comment><comment><USER12> Photos are best viewed on dark background (e.g Flickriver), can you provide some templates and a quick way to switch between them ?

Also, could we have slideshow for playback where nothing will be displayed except the photos themselves ?

<comment><USER10> Thanks, both features we have on our to-do list already, be sure to vote them up in <http://feedback.min.us> , we're doing our best to prioritize them.

</comment></comment><comment><USER13> Correct me if I'm wrong but it's impossible to cover S3 costs with ads displayed near pictures. According to FAQ you are going to leave picture unlimited time (and paying for space in S3) even if no one is visiting page with picture.

<comment><USER10> Thanks for bringing that up. We are exploring many monetization strategies and business models but we will definitely keep that in mind.

We may implement few different models but in the end our mission is to keep Minus free, simple and minimal in making sharing easy and fast :)

</comment></comment><comment><USER14> There are other services with drag/drop to upload your photos. The one I use even works dragging directly from Picasa, so I don't even have to touch my own file system.

From what I can tell, min.us has no other features, so I'm very confused as to why this "doesn't suck". It seems to be a non-unique UI interface to plain old photo sharing.

<comment><AUTHOR> If you're confused as to why this "doesn't suck", then please tell me why it sucks!

Please note that I didn't make the claim that it's amazing or ground-breaking. :)

</comment></comment><comment><USER15> This is really nice and clean. Personally, I think it's a bad name though. Minus? I appreciate it does "emphasize simplicity and minimalism", but it's got nothing at all to do with images. Also, it would be even better if you could include some form of federated login so I don't have to sign up.

<comment><USER6> This is Carl, cofounder of Minus. Thank you for the suggestions. We are looking into adding OpenID and Google Login soon. In the mean time, we designed Minus in the hope that you can use Minus effectively without having to sign up at all!

</comment></comment><comment><USER16> This is spurred more by your username than anything else, but how is it pronounced? Minus, or "Min dot us"?

<comment><USER10> Pronounced Minus. Sorry, we've been having to use "mindotus" as username on twitter,facebook etc.. as minus is taken. Still trying to get twitter to release Minus w/o any luck :\

<comment><USER17> If you get a US tradmark number Twitter should release it in short order.

<comment><USER18> Can you trademark an existing word?

<comment><USER17> You can trademark anything you want. It just might not hold up if it gets challenged.

</comment></comment></comment></comment></comment><comment><USER19> And I thought Dropbox photos folder was the lazy man's photo hosting thus far... +1 for the minus team!

</comment><comment><USER20> I'd really like to be able to drag and drop images from other tabs, as saving to disk is a pain in the ass. I suspect, however, that that's a Chrome issue, not a minus issue. Still, great site!

<comment><USER21> It's actually possible to drag and drop images from other tabs, but there's some weird almost unavoidable issues. Google Docs's presentation app allows you to drag and drop images.

</comment></comment><comment><USER22> As a photographer, I love that you guys are allowing for the high res uploads. I'm also a fan of the minimalist feel. The animations are very cool but they need to be smoother. :)

<comment><USER10> Thanks :) We're definitely working on optimizing things for the user end and keeping it minimal/simple is our top priority. If anyone can contribute in terms of optimizing the frontend loading/speed for "larger images" feel free to drop me at email@example.com

</comment></comment><comment><USER23> Excellent design. Big question: how will they make money?

<comment><USER10> We have few business models in mind and monetization strategies. We will explore them as time goes on very carefully, but right now our goal is to make Minus better and increase compatibility for mobile platforms and more such as allowing documents and other filetypes.

John

<comment><USER23> Do any of your business plans involve putting ads on your fantastically minimal design? I'm visualizing min.us transforming into yfrog.com.

<comment><USER10> We have few ideas that shall not look like yfrog ;)

</comment></comment></comment></comment><comment><USER24> This looks similar to <http://dropmocks.com> same people with new domain?

<comment><AUTHOR> See below. <http://news.ycombinator.com/item?id=1929010> (and replies)

</comment></comment><comment><USER25> Neat service! Would like to have a copy to clipboard button (A low hanging fruit, I suppose), for the image url.

<comment><USER10> That is coming this week :D

John

<comment><USER26> Curious: Can this be done in pure html/js or is Flash still the way to go to make this work cross-browser/cross-platform?

John: Great implementation. Wishing you much success. I'll be using it for my public images.

<comment><USER10> Thanks, appreciate it :) As for the copy to clipboard implementation, we're still exploring the best way to do it for max compatibility. If anyone has suggestions feel free to buzz me at email@example.com

<comment><AUTHOR> You really do need to use Flash, AFAIK. I investigated this a while ago.

Firefox has an API, but the user has to change an option to specifically allow access to the clipboard.

In the end, I figured it wasn't worth it, and that programmatically selecting the textbox was 90% of the functionality without all the headache.

<comment><USER10> Thanks for the advice, we will definitely look into it!

</comment></comment></comment></comment></comment></comment><comment><USER26> Headline could be: The Imgur-Killer

<comment><USER10> :) Look out for document support soon on Minus including PDF, TXT, DOC, PPT and more!

<comment><USER20> Will your documents be crawlable??

<comment><USER10> We have not yet decided on that at this point. Definitely something to consider.

</comment></comment></comment></comment><comment><USER27> Works great

<http://min.us/ip99S.gif>

<comment><USER10> Glad to see it in action :)

</comment></comment><comment><AUTHOR> I'm surprised it took this long for someone to create such a simple image hosting service.

<comment><USER28> :( <http://news.ycombinator.com/item?id=1703197>

<comment><USER29> Wow. It may just be the simplicity of the two sites, but they share a lot of similar characteristics and design choices. Do you know if that was done on purpose?

Update: Found this on their about page. "The first prototype for Minus was inspired by Glen Murphy's design and was launched on October 13th, 2010."

</comment></comment></comment><comment><USER30> Awesome!

</comment><comment><USER31> iOS! iOS! iOS! ...please!</comment>


AutoTagger--making tagging on Facebook easier - <AUTHOR> http://www.new.facebook.com/apps/application.php?id=52782630253

<comment><AUTHOR> Hi everyone,

This is a startup I have been working on with two friends. We're all UC Berkeley 2008 graduates. Any feedback would be greatly appreciated!

Ken

</comment><comment><USER2> I had a chance to use this app as an early beta and have been thoroughly pleased. It is now my method of choice for tagging albums.

</comment><comment><USER3> Does this do the actual face recognition and assign a tag automatically?

<comment><AUTHOR> We're currently working on face recognition. Facebook's existing tags are a great training set :) In the meantime, the application detects faces and gives you a much more efficient (and pretty!) interface for tagging since the faces are known.</comment></comment>


One Year Ago Today - Lehman Brothers Holdings Inc. Filed for Bankruptcy - <AUTHOR>

I just realized it had been a year to the day, and posted this for the purpose of reflection. Thoughts? <comment><AUTHOR> Stock Prices: LEH - Sept 15th 2008: $49.37/share --> Sept 15th 2009: $00.13/share</comment>


Are our romantic relationships ever really mutual? - <AUTHOR> http://www.theatlantic.com/health/archive/2012/02/a-lopsided-affair-are-romantic-relationships-ever-really-mutual/252972/

<comment><USER2> This is a great story of one person's experiences. It doesn't generalize. The whole idea that you can only "really" love one person, and that longing for someone else proves you don't love who you're with is horribly misguided.

I'm polyamorous, and while I know it isn't for everyone, I think everyone should at least consider the possibility. Not every relationship fits into the traditional storybook archetype. Some people really can love more than one person, and every relationship is qualitatively different anyway. Comparing love levels like it's some scalar quantity in a video game is a pointless and frustrating endeavor.

</comment><comment><USER3> What do you mean with "really" and what do you mean with "mutual" ? In the article, the situation is described where the man in the relationship desires the woman and the woman desires another man. If you're asking "is it always like this?" then answer is simply "No." I don't even think it is very common, but that's judging from anecdotal evidence.

If you would forgive me for being so unromantic on valentine's day, the experience of being in love has similarities to a drug addiction and obsessive compulsive disorder. For most people, such infatuation is short-term, and in long-term romantic relationships usually replaced by feelings similar to friendship and attachment.

In my opinion, fretting over whether your significant other is really as addicted to you as you are to the SO is not productive. Focus on whether you are happy and whether you are getting your needs met in the relationship. If you are not, you are perfectly entitled to do something about it (starting with talking it over). If you are happy and getting your needs met, stop worrying.

<comment><USER4> For what its worth, my experience backs yours. Earlier in my life relationships were more lopsided, but as I acquired more experience and kept searching for for somebody, things have oscillated a bit and evened out.

I think its hard to understand that things can be better until you've experienced them that way.

</comment></comment><comment><USER5> "My parents were married for 30-something years, and he said (it was) because they never wanted to get divorced at the same time." Gwyneth Paltrow

</comment><comment><USER6> This is the most depressing title I've ever read.

<comment><USER7> Not really. The answer to the narrowly defined title is "yes".

Now percentages, that could be depressing.</comment></comment>


Ask HN: Desperate for a HN Frontpage RSS feed  - <AUTHOR>

...which includes "number of comments".
I don't believe this is a complex request, yet there seem to be no RSS feeds that show this.https://www.hnsearch.com/bigrss - no longer supports this (and is closing down)
I see no way of getting a frontpage feed from its replacement - http://hn.algolia.com
I will even go as far as to offer $30 in bitcoin for a working feed. ( I am that desperate ). <comment><USER2> It's not RSS, but you may enjoy this alternate interface:

[http://hckrnews.com/](http://hckrnews.com/)

I have no affiliation, it's just how I read HN.

<comment><AUTHOR> I guess I am going to have to use a webscraper = (

Thanks for the link - they seem to have ordered their items differently?

</comment></comment><comment><USER3> I'm working on this as we speak :)</comment>


(Literally) Drawing the HTML 5 Logo in Canvas with Javascript - <AUTHOR> http://richwchan.com/2011/01/25/literally-drawing-the-html-5-logo-in-canvas-with-javascript/

<comment><USER2> I don't understand why people are impressed by HTML Canvas demos. It's like getting impressed by a calculator adding two numbers together. Or being impressed by a for loop statement in a language. Or being impressed by an fopen statement to read files.

A collection of drawRect, drawCircle and setBrushColor calls isn't impressive just because it's done in JS. That's what graphics libraries are supposed to do. Maybe I'm missing something here...

<comment><USER3> You have (understandably) been led astray by a poorly considered title.

The article demonstrates a vector based 'hand drawing' algorithm that happens to use the HTML5 logo and be implemented in javascript with canvas.

Unfortunately it doesn't appear to implement a generalised library for scruffy drawing.

</comment></comment><comment><USER4> Click the redraw button a bunch of times while it's still drawing for an interesting effect.

<comment><AUTHOR> Yep.. Apparently calling jquery ui's disable method doesn't disable the handler -- guess I should've read the docs...

Anyway, thanks for pointing it out. I will try to fix it when I get home. Before then, have fun with the "interesting effects". =)

<comment><USER5> How did you generate the "var levelX" arrays?

<comment><AUTHOR> I would love to say that I made a very sophisticated automated tool for this.. but it was mostly just me hacking a simple script that lets me manually select coordinates and preview the lines; while console.log()ing the coordinates and copy-and-pasting into the arrays.

The "borders" for each layer are easier -- all the coordinates come from the SVG, after translating and scaling.

</comment></comment></comment></comment><comment><USER6> Increasing the sloppiness makes this way cooler. +1

<comment><USER7> I like upping the sloppiness on layers 2 and 4 to make a sort of "Two-Face" logo: <http://imgur.com/z1iSH>

</comment></comment><comment><USER8> Semi-related: Whats a good fall-back for when webgl isn't directly supported in the browser?

</comment><comment><USER9> Cool, but needs a cancel button that stops drawing and re-enables the sliders.

<comment><AUTHOR> Done! As a bonus, you can now dynamically change the parameters while it is drawing.

</comment></comment><comment><USER10> This is hacker news, shouldn't they be evolving the shape, instead of just straight drawing it? Also, it should be powered by node.js somehow, and have $3 million in seed funding.</comment>


Ask HN: How important is it to have a "lite" version of your mobile app? - <AUTHOR>

I've just released my first paid app into the Android market and I was wondering how important it is to have a "lite" version of your app.<p>It makes sense for games but what about other kinds of apps, such as my MeterRec app? http://blog.rabidgremlin.com/2010/10/17/meterrec-released/ <comment><USER2> Why not try a limited/free with ads version if you are going to do one? With the Android Market having a 24 hour return period on purchases, seems a "lite" or "try before you buy" version would be more suited towards iOS.

<comment><AUTHOR> I'm not a big fan of ad-supported apps as they leak so much info: <http://appanalysis.org/demo/index.html>

So was avoiding them on principle...

</comment></comment><comment><USER3> Clickable: <http://blog.rabidgremlin.com/2010/10/17/meterrec-released>

<comment><AUTHOR> Much better...

How do you do that BTW? I had a look through the FAQ etc. but didn't see any formatting help.

EDIT: I see it just works if you don't have a trailing slash?

<comment><USER3> No, from what I've seen I think the main box has links disabled while comments have linkability.

How about making a Blackberry version?

<comment><AUTHOR> Ah I see.

Don't really like the Blackberry platform, however if MeterRec is a hit (unlikely) I may port it to other platforms. If I did then iPhone would be next likely platform I would target.

<comment><USER3> What don't you like about the BlackBerry platform?

Also, your app may become a hit faster if you offer a freemium version. It will be great exposure and promotion for ya!

<comment><AUTHOR> Well its been a few years but the RIM Java framework was very messy and its J2ME support was average.

Last thing I built that had Blackberry support was this <http://blog.rabidgremlin.com/2008/11/01/mpass-is-live/>

Blackberry devices had the most support issues :(</comment></comment></comment></comment></comment></comment>