Introducing ProMotion, a Full-Featured RubyMotion Application Framework - <AUTHOR> http://blog.rubymotion.com/post/50523137515/introducing-promotion-a-full-featured-rubymotion

<comment><USER2> I've never seen a better tool for rapid prototyping a working iOS app... and it plays nice with teacup, pixate, all the friends!

Reminds me somehow of Sinatra - e.g. Promotion : Cocoa :: Sinatra : Rails

<comment><USER3> Don't be modest...Motion-Xray[1] is a pretty awesome prototyping tool as well.

[1] <https://github.com/colinta/motion-xray>

</comment></comment><comment><USER4> I'm on the fence about this and RubyMotion in general. By far the most time consuming part of app development is getting the visuals and animations looking right, and I don't see how this helps. The basic scaffolding (setting up view controllers, transitions and talking to the backend) is the easy bit.

On the other hand, I'm a Python guy and I've never fallen for Objective-C (although recent sugary additions have made it far more pleasant).

Can anyone who has made the jump enlighten me?

<comment><USER5> Visuals and animations are infinitely easier to get "looking right" when you can modify parameters directly in a running app via REPL. That's possible with RubyMotion. In particular, check out [https://github.com/rubymotion/sugarcube#repl-view- adjustment...](https://github.com/rubymotion/sugarcube#repl-view-adjustments) .

<comment><USER6> I second this. I demoed the Sugarcube repl for our mobile team (I'm primarily a JavaScript dev who has fallen in love with RM) and everyone was universally blown away. It's the most useful thing ever -- well that, combined with Teacup.

</comment></comment></comment><comment><USER7> This looks like it could be the thing that tips me over into buying RubyMotion. Well done guys.

</comment><comment><USER8> I hope this isn't Metrowerks CodeWarrior all over again. Hopefully, there won't develop a significant "underclass" of developers who simply won't venture away from the parts of iOS that haven't been given a "Ruby-like" facade. Right now, Apple has a wonderful situation where over 90% of the devs and users adopt the newest versions of the OS. They should hate to lose that.

(I am all for choice, though. I wish Apple had a way of "blessing" frameworks and languages that have automated and/or inherent ways of absorbing additions to iOS, and was specific about this.)

<comment><USER9> There's pretty much nothing you can do in Objective-C that you can't in RubyMotion.

RubyMotion exposes 100% of the Objective-C runtime with virtually no performance penalty. They are very on top of new iOS releases (released full iOS 6 support within a week).

In fact, I think that the RubyMotion community adopts new iOS technologies faster since it's new and doesn't have a lot of legacy code.

<comment><USER8> There is a significant difference between APIs that are named/structured in a Ruby-like way, and APIs that are named according to Objective-C/Smalltalk conventions. This can be a cause of significant pain. (For example, while refactoring, you have to search for all the ways a method could be called.)

RubyMotion is doing the right things. Much of the result also depends on community. It's a bad sign when supposedly smart programmers disdain a technology or a set of tech conventions simply because it's different. Especially when that tech has a great track record. It's really weird when they disdain the very thing they're building on. I've met some RubyMotion programmers like this, however. I hope they're just an aberration.

</comment></comment></comment><comment><USER10> So, where I'm getting a bit confused is the difference between RubyMotion and MacRuby. I gather it's a superset of MacRuby functionality? Having a "stupid day".

I'm wanting (aiming toward needing) to learn Ruby but trying to justify the cost without actually knowing the language is a bit tough.

<comment><USER11> MacRuby is an implementation of Ruby 1.9 built on top of Cocoa. It's also OS X-only. See <http://macruby.org>

RubyMotion is fully compiled, and built on top of LLVM. See <http://www.rubymotion.com/features/>

<comment><USER12> They are both compiled and built on top of LLVM. RubyMotion is a fork of MacRuby, not a different design.

<comment><USER6> And as of last week, with the 2.0 release, you can now build desktop apps using RubyMotion as well. I kind of think that was the nail in the MacRuby coffin, for better or for worse.

</comment></comment></comment></comment><comment><USER13> This is really awesome, so awesome that I'd like to pay for it!

<comment><AUTHOR> <https://www.gittip.com/jamonholmgren/>

</comment></comment><comment><USER14> I know it is early days for RubyMotion's OSX development support, but I will ask anyway: anything like ProMotion for the OSX side of the house?

</comment><comment><USER15> Trying it out now and it seems pretty awesome. Does anyone know of a great tutorial about connecting a new RubyMotion app to an existing ruby app?

</comment><comment><USER16> Unfortunate choice of name: <http://www.cosmigo.com/promotion/index.php>

<comment><USER3> Different industries, full featured desktop application vs. a software library. Windows software sold as a package versus a free development library for iOS that only runs on Macs.

I don't see there being much trademark confusion here.</comment></comment>


Improving performance with SIMD intrinsics in three use cases - <AUTHOR> https://stackoverflow.blog/2020/07/08/improving-performance-with-simd-intrinsics-in-three-use-cases/ <comment><USER2> It would be useful to add a recursively defined algorithm like trapezoidal integration, which is something that basically every autovectorization tool will fall over

        y[n] = (x[n] + x[n-1]) / 2 + y[n-1]

Which will quickly show you that you can't just replace the numeric operations with their intrinsic counterparts and get speed up (and if you did, you may wind up with incorrect code!).

It also shows you that sometimes more is less. To vectorize that code you wind up doing _more_ multiplication than you would normally require for the scalar, and depending on the conditions where you execute it, it might not be able to improve over the scalar implementation.

There are more formal methods for converting these kinds of operations (linear, time-invariant recursive systems/filters) to vector equivalents using state space matrix forms, but then you start having to benchmark whether or not you get any benefits.

<comment><USER3> I got nerd-sniped. Lets see...

        y[n] = (x[n] + x[n-1]) / 2
        y = prefixSum(y);

I'm pretty sure prefixsum over Y would solve the problem (see: [https://en.wikipedia.org/wiki/Prefix_sum#Algorithm_1:_Shorte...](https://en.wikipedia.org/wiki/Prefix_sum#Algorithm_1:_Shorter_span,_more_parallel) for the Vectorized solution to prefix sum).

Without the addition of y[n-1], the first line is now trivially parallelizable by most auto-vectorizers. The prefix-sum probably needs to be written with intrinsics by hand, but once written it generalizes to many operations. (Prefix-max, prefix-min, prefix-XOR).

"Prefix-sum" is sometimes called "scan" in the literature ([https://developer.nvidia.com/gpugems/gpugems3/part-vi-gpu- co...](https://developer.nvidia.com/gpugems/gpugems3/part-vi-gpu- computing/chapter-39-parallel-prefix-sum-scan-cuda))

\</comment></comment><comment>-----

EDIT: A surprising number of "recursive" definitions can become a prefix- operation (or scan). Associativity is the main requirement. (Note that floating-points are not associative: error builds up non-associatively). So you'd need to redo your error analysis if these were floats.

<comment> Const-me > the first line is now trivially parallelizable by most auto-vectorizers

It's not that trivial to vectorize, would be something like this for SSE:

        const __m128 x = _mm_loadu_ps( px );
        // Rotate the lanes
        __m128 xPrev = _mm_shuffle_ps( x, x, _MM_SHUFFLE( 2, 1, 0, 3 ) );
        // Insert the highest lane of previousStepX into lowest lane of xPrev
        // The IMM number means extract lane 3, insert into lane 0, don't zero out any lanes
        xPrev = _mm_insert_ps( xPrev, previousStepX, 0b11000000 );
        const __m128 halfSum = _mm_mul_ps( _mm_add_ps( x, xPrev ), _mm_set1_ps( 0.5f ) );
        previousStepX = x;

Which compiler do you think would do that automatically?

<comment><USER3> Why would you need to rotate the lanes?

        const __m128 x = _mm_loadu_ps( px );
        const __m128 xPrev  = _mm_loadu_ps( px + 4 );

_mm_loadu_ps: load-unaligned. There's no requirement for addresses to load/unload. There are probably penalties for loading across a cache line, but its perfectly valid to do this.

\</comment></comment></comment><comment>-----

> Which compiler do you think would do that automatically?

GCC simply does the unaligned load: [https://godbolt.org/z/2HwYMi](https://godbolt.org/z/2HwYMi)

Clang does the shuffle successfully: [https://godbolt.org/z/Y3hbQn](https://godbolt.org/z/Y3hbQn)

The shuffle is probably optimal... I'm surprised CLang is good enough to recognize the opportunity. But simply doing 2x loads from memory is probably fine, especially because the 2nd load is guaranteed to be from L1 cache. Besides, assuming 128-bit vectors, 2x 128-bit vectorized loads every 4-elements (averaging 1/2 a load per element) is still superior to scalar code (1-load per element).

Honestly, Clang surprised me by generating the superior shuffle code. I was expecting both GCC and Clang to generate the suboptimal (but simpler) unaligned loads.

<comment> Const-me > Why would you need to rotate the lanes?

To half the count of RAM access instructions. Even L1D cache hit is still slower than these two instructions for shuffle and insert, both are quite fast, they deliver the result on the next cycle.

> GCC simply does the unaligned load

Right, that's twice as many loads as necessary.

> Clang does the shuffle successfully

I wouldn't call that code "successfully". Clang uses shufps instructions to shuffle integer vectors. On many CPUs, especially older than a couple of years, there's a non-trivial latency, a few cycles, to pass data between integer and floating-point execution units. The approach is correct with these shuffles, but not the implementation. For integers it should have used at least _mm_shuffle_epi32 = pshufd or _mm_slli_si128 = pslldq, but ideally _mm_alignr_epi8 = palignr from SSSE3.

<comment><USER3> I guess we have different measures of "success". I don't expect any compiler to beat me in intrinsics or hand-crafted assembly. After all, I can use the compiler. But the compiler can't use my brain. So in all circumstances, I will always at least tie the compiler.

Its an "auto-vectorization success", because the pseudo-code I've laid out auto-vectorizes to SSE 128-bit, AVX 256-bit, and AVX512 512-bit code. Furthermore, CLang supports many architectures, and probably can convert my simple for-loop into SIMD on other architectures without any intervention (ie: ARM Neon)

The code doesn't need to be optimal, it just needs to be faster than the scalar form and portable.

<comment> Const-me Yes and no.

"yes" because what clang did is a very good job, pretty sure it substantially faster than scalar code. Especially on newish CPUs like Zen2.

"no" because from what they have currently for that particular test case, they only need a few improvements to make their code as fast as a manually vectorized version. Apparently, the compiler is already aware of the cost of RAM loads. They just need to account for these bypass delays between integer and FP execution units in their code generator.

<comment><USER4> Frequently, when one is using SIMD one is more concerned about throughput (how many operations you can do per second) and less about latency (how many nanoseconds until you get there first result back). I'm not sure if you are equating the two in your comments, or have an actual preference for lower latency, but realize that one can often gain in throughput by giving up some latency.

I mention this because I don't share your certainty that avoiding duplicate loads is necessarily "faster". I've occasionally been able beat compilers at getting higher throughput by making the duplicate load, despite the fact the latency increases. This is because vector shuffles (and I think aligns and inserts) are limited to a single execution port (at least on recent Intel processors), while loads can be executed twice per cycle. Depending on the mix of the rest of instructions, this means that sometimes the redundant load ends up being the better choice.

Which is to say, rather than being sure, measure!

<comment> Const-me I agree in general, and yes, I always use a profiler before writing these intrinsics.

But still, that particular clang output is suboptimal. They have already optimized loads with these shuffles. I think they did 80% of the work already. They are just using the wrong shuffles.

</comment></comment></comment></comment></comment></comment><comment><USER5> If you have a big need for SIMD on the CPU, you might want to look into ispc, the Intel Implicit SPMD Program Compiler. (It supports ARM NEON too.)

[https://ispc.github.io/](https://ispc.github.io/)

</comment><comment><USER6> It's great to see tables comparing the different approaches, but it's also a bit discouraging to think that you might have to solve the problem a dozen different ways. Fortunately, it does seem that naive vectorization, for lack of a better term, is pretty effective. For grayscale, "vector floats SSE2" and "vector floats AVX2" aren't far behind the winner. Similarly, for dot product, I might call it a day after AvxDpPs dropped my time from 193 to 34.

</comment><comment><USER7> Note that the code GCC generates for reductions (dot product, anyhow) will not be scalar with an option like -Ofast. That enables loop vectorization but also use of non-standard-conforming SIMD for the non-associative operations. It likely does as well as simple use of intrinsics. Level 1 operations are only worth worrying about much with small arrays, as they're ultimately memory- bound.

<comment><USER8> It's not even scalar at -O1.

[https://godbolt.org/z/TRS4W6](https://godbolt.org/z/TRS4W6)

It generates vector instructions for all k8-like architectures, with wider instructions starting from -march=sandybridge.

<comment> Const-me > It generates vector instructions

vmovss, vmulss and vaddss instructions are not vector. They only load/store, multiply or add the lowest lane of their operands. The equivalent vector instructions are vmovaps, vmulps and vaddps respectively, these would load, multiply or add complete vectors, not just the lowest lanes of them.

<comment><USER8> Right you are. I totally stopped reading at `vxorps` and didn't scan all the other `_ss` properly.

<comment><USER7> There would be something amiss if it was vectorizing at O1, and if it was disregarding arithmetic rules (as the Intel compiler would by default).

</comment></comment></comment></comment></comment><comment><USER9> Easy SIMD in the context of image processing is one of the cool things about Halide:

[https://halide-lang.org](https://halide-lang.org)

It was personally eye opening to see how vectorization can be the gift they keeps on giving when you can sprinkle it throughout a computational pipeline vs spreading work across cores.

</comment><comment><USER10> Does anyone know any more sources that would be useful to learn more about SIMD intrinsics and how to use them? I've tried a few times (with moderate success) to parse through source-code using them but I've never found a good introduction.

<comment><USER3> Honestly, most SIMD intrinsics are pretty simple and straightforward to use. You can probably get 90% of the way there by simply browsing Intel's intrinsic reference manual.

[https://software.intel.com/sites/landingpage/IntrinsicsGuide...](https://software.intel.com/sites/landingpage/IntrinsicsGuide/)

Intel's intrinsics guide has an approximate clock-count on all instructions. There are a few obscure details to memorize, but if you already understand super-scalar, pipelined, and OoO operations of modern CPUs, its all straight- forward.

\</comment></comment><comment>---

The last 10% of using SIMD successfully is obscure and eclectic. Its not "difficult", its just a whole bunch of tricks that you'll probably never figure out on your own. I'm talking about pshufb magic, prefix sum / scan patterns, gather/scatter patterns, and the like.

As complicated as pshufb is, the Intel intrinsic documentation does a great job precisely describing the operation: [https://software.intel.com/sites/landingpage/IntrinsicsGuide...](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=pshufb&expand=5194,5153,5153)

_mm_shuffle_epi8 gives you a register-to-register (no RAM touched, faster than even L1 cache) 16-byte lookup table. An alternative viewpoint: it gives you a register-to-register arbitrary gather command. I've seen so many tricks from this one instruction alone.

\</comment><comment>---

Another straightforward guide is Intel's optimization manual. Its straightforward, but a lot of material to read: [https://www.intel.com/content/dam/www/public/us/en/documents...](https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures- optimization-manual.pdf)

Chapters 4, 5, and 6 deal with SIMD coding.

</comment><comment><USER11> I always find code samples of SIMD instructions to be so esoteric it makes it harder to follow that necessary.

It's 2020, who uses variable names like 'acc', 'a' and 'b'?

There's also no real explanation of what 'a' and 'b' (or 'p1' and 'p2') actually are. It's just magic.

I get that it's just an example, but the example feels so useless it doesn't demonstrate why these SIMD calls are helpful at all.

<comment><USER12> > It's 2020, who uses variable names like 'acc', 'a' and 'b'?

Mathematicians, scientists, engineers, artists. Have you read any numerical work? They often use one-letter variables, or otherwise very abbreviated variables. Sometimes they differentiate variables with the same letter using by using different _fonts_. Seems strange to us, but clearly it works for them!

And then they keep doing the same thing when they translate to code. When I ask them they say they think our long variable names are unreadable. Maybe they're right and we're wrong? Who knows.

They generally don't use tests, linting, CI, anything like that either. But again, clearly it works for them!

<comment><USER13> If you write code that does basic arithmatic, a and b will do just fine in my experience. If I'm implementing an existing algorithm, I like to stick as close to the algoritm's symbol use as close as possible. I miss that I can't use greek symbols like ϕ or σ as variables, but that's just me probably.

<comment><USER14> Depending on your programming language, you can definitely use those greek symbols as variables.

<comment><USER15> Yup was just about to say this. That being said I usually avoid doing this even though I do a lot of numerical work. They are usually more of a pain to type out, and I don't trust that they will show up properly on every text editor that it might wind up in.</comment></comment></comment></comment></comment>


Cross-Platform In-App Subscription Management Service - <AUTHOR> I've been trying to find a service that allows a business, such as one that I work for, manage in app purchases (mainly for subscriptions). It would be great if this was done cross-platform and not just on the web. Most services like Recurly or Chargebee only seem to be tailored for the web or if you want to purchase physical goods or services outside the context of an app (like Uber).<p>How do magazine, gaming, or any other company types that leverage or rely on in-app purchases or subscriptions manage this data (Especially if they are building cross-platform products)? <comment><USER2> A friend of mine has mentioned using [https://xsolla.com](https://xsolla.com) in cross-platform games.

<comment><AUTHOR> Thanks, benologist.

I'm specifically looking for tracking users who pay for virtual goods using something like Apple's StoreKit API. Basically, I know that Apple and Google take a cut of in-app purchases including subscriptions for/to virtual goods/services.</comment></comment>


StackOverflow Clone - <AUTHOR> https://github.com/Mayank0255/StackOverflowClone <comment><AUTHOR> Created a clone of stackoverflow on a MERN stack and recently I have documented it as well. Will appreciate if you could take a look at it</comment>


Algorithms Implemented in Python - <AUTHOR> https://github.com/TheAlgorithms/Python <comment><USER2> This collection is bad. I had a look at several implementations and pretty much everything I looked at was bad, and not in a subtle way. It may well be that some of things in there are good, but given the amount of bad, you really shouldn't use this for learning.

Here's a short list of things I found that were really bad, all of which we teach our first-year students how to do correctly:

\- the entire `Graphs/` directory is a dumpster fire. The implementation of Dijkstra's algorithm doesn't use a priority queue, nor does that of Prim's MST algorithm. Both of these also use a strange hard-coded maximum distance of 100000 for no reason. Both Kruskal implementations are bad, too: one doesn't use any kind of Union-Find data structure, the other uses a naive version which has terrible worst case behaviour.

\- There is another implementation of Dijkstra's algorithm in `data_structures/Graph/dijkstra.py` that is just as bad.

\- The DFS implementation in `data_structures/Graph/DepthFirstSearch.py` isn't a DFS.

\- The sorting and selection algorithms are comically bad, too. `sorts/merge_sort_fastest.py` really takes the cake here. It is neither a mergesort nor fast (it's a weird non-inplace implementation of cocktail shaker sort, with quadratic best- and worst-case behaviour). The quicksort at `sorts/quick_sort.py` always uses the first element as a pivot, which is a bad idea. Its partitioning also copies the entire data _in every recursive step_ , which is an even worse idea. The quickselect in `searches/quick_select.py` at least uses a random pivot, but also partitions out-of-place.

\- Why does this contain an implementation of FTP?

<comment><USER3> Thanks for your warning! I'd love something like this with good implementations (and documentation as to why the implementation is good), does anyone know similar projects?

<comment><USER4> [https://github.com/keon/algorithms](https://github.com/keon/algorithms) has been previously submitted to HN.

[https://news.ycombinator.com/item?id=14188120](https://news.ycombinator.com/item?id=14188120)

<comment><USER5> Do you happen to know of a TypeScript/JavaScript equivalent?

<comment><USER4> [https://github.com/trekhleb/javascript- algorithms](https://github.com/trekhleb/javascript-algorithms)

Discussed here a month ago:

[https://news.ycombinator.com/item?id=17134831](https://news.ycombinator.com/item?id=17134831)

</comment></comment></comment></comment></comment><comment><USER6> I wouldn't recommend anyone to use this. Other than really poor implementation and quality of the algorithms (some of which are totally incorrect), code in that repo is anything but Pythonic - reimplementing a lot of things from the standard library, not using list, dict and set comprehensions, using indexes instead of iterators, copying things around for no reason etc. They didn't even care to use linter to PEP8-ify it.

</comment><comment><USER7> Oh my God, this is a horrible mess!

Others have already addressed the incorrectly implemented algorithms, so let me instead point out that there is an ebook about prehistoric humans in the "ciphers" folder: [https://github.com/TheAlgorithms/Python/blob/master/ciphers/...](https://github.com/TheAlgorithms/Python/blob/master/ciphers/Prehistoric%20Men.txt)

(Robert J. Braidwood - Prehistoric Men)

<comment><USER8> This cracked me up, but it turns out it's used as a source file for doing an encryption benchmark.

[https://github.com/TheAlgorithms/Python/blob/d4b4b7ba35cc4e1...](https://github.com/TheAlgorithms/Python/blob/d4b4b7ba35cc4e1ef9480ce1529afa388903133a/ciphers/transposition_cipher_encrypt- decrypt_file.py#L6)

</comment></comment><comment><USER9> This looks like a nice effort and is appreciated, but be aware that the quality of the python is REALLY bad. Don't follow these standards if you're looking at these algorithms. For example, in Quickselect, I saw this:

      pivot = random.randint(0, len(list) - 1)
      pivot = list[pivot]

which is bad at every possible level. First, it can be a one liner with `pivot = random.choice(list)`, but also, reusing the same variable over and over again is discouraged.

Again, congrats to the team that put this together for free and with probably the best intentions. But if you're using it, be aware that the code might be worth a refactor.

</comment><comment><USER10> Apparently no quality control or even rules on common standards among the file tree. A first look at the directory names is a good indicator for the mess. :/

</comment><comment><USER11> Dijkstra's algorithm without a priority queue?

<comment><USER12> Where?

<comment><USER13> [https://github.com/TheAlgorithms/Python/blob/master/Graphs/b...](https://github.com/TheAlgorithms/Python/blob/master/Graphs/basic- graphs.py#L113-L131)

<comment><USER2> This is terrible. The charitable interpretation would be that Dijkstra's original paper in 1959 didn't use a priority queue, either. But given the strange hard-coded distance maximum of 100000, that Prim's MST algorithm is implemented the same way, and that Kruskal is implemented without a Union Find datastructure, I'm going to have to say it again: this is terrible. Don't use this for learning.

<comment><USER13> I'd instead recommend Boost's Graph Library. It's not an easy piece of code to understand, but they have everything from Flord-Warshall and Kruskal's to Min- Cut and Dijkstra's in very generic implementations.

</comment></comment></comment></comment></comment><comment><USER14> I'm far from strong algorithmically, but I'd love to improve.

I like Human Ressource Machine, because it rates me on code length and complexity. But the types of algorithms seems limited.

I like project Euler for its variety, but I don't get any feedback on quality of my solutions.

Is there a good middle ground?

<comment><USER15> TIS-100 is a nice step up from human resource machine while keeping the feedback.

[https://store.steampowered.com/app/370360/TIS100/](https://store.steampowered.com/app/370360/TIS100/)

<comment><USER16> Yes Zachtronics games are amazing! I would say that Shenzhen I/O might be a bit easier to learn though.

</comment></comment></comment><comment><USER17> Note: these all _sorting_ algorithms implemented in Python.

Nice (even animated) illustrations in readme.

<comment><USER18> Not just sorting.

The categories are:

* Sorting

* Searching

* Ciphers

As well as others, which aren't listed in the README.</comment></comment>


AT&T and cable lobby are terrified of a California net neutrality bill - <AUTHOR> https://arstechnica.com/tech-policy/2018/04/att-and-cable-lobby-are-terrified-of-a-california-net-neutrality-bill <comment><USER2> Everyone in California (which presumably is a non trivial number of people here) call your assemblyman and senator: [http://findyourrep.legislature.ca.gov/](http://findyourrep.legislature.ca.gov/)</comment>


Filecoin's ICO opens today: raises $52M from investors - <AUTHOR> https://techcrunch.com/2017/08/10/filecoins-ico-opens-today-for-accredited-investors-after-raising-52m-from-advisers/ <comment><USER2> If there's one group that deserves to raise a ton of money through an ICO, it's the developers behind IPFS.

I wish Open Whisper Systems would do one, too, for a distributed Signal app of sorts.

<comment><AUTHOR> > HTTP downloads a file from a single computer at a time, instead of getting > pieces from multiple computers simultaneously. With video delivery, a P2P > approach could save 60% in bandwidth costs.

From the IPFS site. If true, then this is ground breaking tech. I honestly didn't know that HTTP was that wasteful.</comment></comment>


Extreme Light Intensities Using Optically Curved Relativistic Plasma Mirrors - <AUTHOR> https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.123.105001 <comment><USER2> Will read the paper later. It's interesting and the PIC sims which are state of the art seem interesting, I really want to know how resilient the focusing effect is to laser beam imperfections because that has been the bane of every experiment pushing the high intensities over the last few years.

The idea iterates from a hot topic in intense laser plasma physics, an already niche within a niche of fields. The idea is a "Plasma Mirror." In the world of high intensity laser physics which means lasers essentially more intense than 1e14 W/cm^2 ( by comparison, sunlight at the earth's distance from the sun is ~0.1 W/cm^2) and such, they very quickly ionize the matter they interact with. The lasers where "Plasma Mirrors" are relevant are even more intense than this, say 1e16 and above. However, given you are playing with high magnitude orders of intensity, you have long tails of intensity before the peak of the pulse that are a few orders down (say, 1e14 W/cm^2) but are intense enough to damage the target you want to interact with. The idea is to have a _thin target of something_ before the main target in the optical path which acts as a shutter. The idea is such, the probability in high field laser physics of ionization essentially approaches one the higher the intensity of the incident light. The thin target, called a plasma mirror, permits more low intensity light below some threshold and starts to ionize when the intensity ramps up well above 1e14, turning into a very good mirror. The effect is it only reflects the higher intensity light, creating a cleaner, shorter pulse of high intensity laser energy.

The second concept seems to be the geometrical shape of plasma mirror. I think this is the new idea, because plasma mirrors have been here for a while. The idea here seems to either statically or dynamically shape the plasma mirror so it also focuses the light. I believe the record for high intensity is 2e22 W/cm^2. There are plans to create a near 1e24 W/cm^2 facility in Europe. The sims here suggest an intensity of 1e25 W/cm^2, which is interesting for a number or reasons, because it is near the point where this field starts to touch strong field quantum effects, still a few orders down but approaching the strong field region of QED.

To be critical, as usual, these are simulations, which is fine, but it will be important to see how what physics they included in their simulations. Recent literature has shown the traditional methods we use to model this physics starts to break down as we increase the intensity of the laser above 1e24 or so.

<comment><USER3> 4000^3 cells is extremely large for a PiC simulation and the dispersion free Maxwell solvers are indeed state of the art (without them this simulation would be impossible and scaling those solvers is quite hard), but the 2 particles per cell is worryingly low, even for a 3d simulation with high order particles. Right now I can not read the supplemental material so I am not sure to which degree this was validate with more particles in2d, but if nature does not behave like this simulation, that is going to be the reason.

Source: I write PiC codes for a living.

</comment></comment><comment><USER4> Pre print from arXiv:

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

</comment><comment><USER5> What could someone use 10^25 W cm^-2 light intensity for? It that enough energy to trigger fission and/or fusion in an appropriate target?

<comment><USER4> One application (which I used to work on) is generating electric field strengths beyond the 'Schwinger limit'. This is a field strength below which various QED processes are exponentially damped, such as electron-positron pair production. Generating such field strengths in the laboratory (as opposed to, say, the surface of pulsars) will allow studies of strong-field QED.

</comment></comment><comment><USER6> Useful for a high velocity laser-sail or say, an ice rocket?

<comment><USER7> What's the reference re: "ice rocket"? Google search turned up _Losers in Space_.

<comment><USER8> Best bet I got is a reference to the book "Seveneves" which uses a nuclear reactor buried in primarily ice asteroid. They consume the ice and use steam essentially as a propellant.

</comment></comment></comment><comment><USER9> I see a hyperbole-filled abstract and a paywall.

<comment><USER10> Popular science write-up at Ars: [https://arstechnica.com/science/2019/09/trampoline-mirror- ma...](https://arstechnica.com/science/2019/09/trampoline-mirror-may-push- laser-pulse-through-fabric-of-the-universe/)

</comment></comment><comment><USER11> mother of god

</comment><comment><USER12> All I know is that high intensity light could revolutionize large-scale 3D printing.

<comment><USER2> This is beyond that level of intensity of light relevant for that sort of stuff.</comment></comment>


What Stopped You from Launching a Bootstrapped Product in 2015 - <AUTHOR> What will you do differently in 2016 to make it happen? <comment><USER2> Stop looking for productivity 'techniques' that others have found to work for them and just do the best thing I can think of now to get something done.

Momentum tends to work better than any one 'technique'.

</comment><comment><USER3> I didn't feel the user interface was ready. Also, as the system is a database at heart it has to be absolutely rock solid.

Planning to launch on the 5th of Feb, which is the date (4 years) since I wrecked my knee and started working on this project to keep my mind busy. See [https://velox.io](https://velox.io)

<comment><USER4> > _Our platform enables beginners to code & experanced developers to deliver, > fast!_

typo: *experienced

<comment><USER3> Thank you!

</comment></comment></comment><comment><USER5> Launched earlier this year with a $500 budget, now making ~1.2k revenue per month trying to grow it further. Still need to get a job though, $200/mo is not much fun for food in Seattle.

<comment><USER6> Still pretty cool--I'd be psyched w/ ~$1K/month, although obviously I'd be more psyched with more $.

</comment></comment><comment> nevi-me Too many hours devoted to employer. I already have something bootstrapped active (movinggauteng.co.za), but stagnating a bit. Wanted to launch a small December idea to take my mind off my 2 jobs. This year I'm aiming to work no more than 48 hours a week for employer, start making money on bootstrapped product, and enjoy my life more.

</comment><comment><USER7> I didn't launch sooner as I was focused on too many projects. Finally buckled it down and drove my project to completion. Official launch will occur in a week or two: [http://rallycoding.com/](http://rallycoding.com/)

<comment><USER8> Congratulations Stephen. I have taken your Udemy course, "Build Web Apps with React JS and Flux" and it is probably the best coding course that I've ever experienced. The level of support that you provide in the chat section of the course and by email is unbelievable. It's almost like getting 1:1 mentoring? I'm just starting your Native React Udemy course now.

Do you offer 1:1 mentoring?

<comment><USER7> Drop me a line, my email is in my profile, or you can find it all over the course on Udemy

</comment></comment></comment><comment><USER9> Nothing! Launched and now have profit! Going Lean and doing customer dev before product dev was a huge factor for success.

</comment><comment><USER10> Nothing, I launched, but I need to refine it and make it look better: bestfoodnearme.com

</comment><comment><USER11> Concern about if what I built was too specific to me and if others would even use it.

</comment><comment><USER12> Nothing. It launched. Then the co-founder quit and took it down.

It's coming back soon though.

</comment><comment><USER13> I have no idea what to build.

<comment><AUTHOR> I'm starting s podcast to help with this problem. The idea is I pick 1 small business / industry a week, and do 5 interviews with different business owners from that industry, asking about their business, the problems they face, etc.

Do you think you'd listen to something like this?

<comment><USER14> That sounds like something I'd listen to and would be super useful, sign me up.

</comment></comment></comment><comment><USER15> I was consumed with a product I launched in 2014 :)

</comment><comment><USER16> I was too lazy / busy to finish it.

</comment><comment><USER6> Launch.</comment>


Speeding Up AWS CodeBuild with Custom Build Environments - <AUTHOR> https://stephenmann.io/post/speeding-up-aws-codebuild-using-custom-build-containers/ <comment><AUTHOR> Hi all! A few months ago, I wrote a blog post about setting up continuous delivery using CodePipeline, CodeBuild, and Beanstalk. One of the commenters rightly pointed out how slow that process is, so I've put together this blog post showing a technique for speeding up builds on CodeBuild. I'd love to hear your thoughts!

</comment><comment><USER2> Personally, I benefit from the AWS specifics. I would imagine the majority of people are on AWS (more than azure and google cloud). Great article!

<comment><AUTHOR> Thanks! I've been wondering about this. Most of the articles start with a high level overview, and then they drill down into specific technologies. There are so many options to choose from that I'm never sure which platform I should write about (this article nearly ended up discussing custom Google Cloud Builders). I'm glad you enjoyed it!</comment></comment>


Coine – The free BTC advice bot - <AUTHOR> http://coine.xyz <comment><USER2> The results seem lack luster.</comment>


Justice Scalia Rules Deep-Dish Pizza is Not Pizza - <AUTHOR> http://www.delish.com/food/recalls-reviews/justice-scalia-rules-deep-dish-pizza-not-a-pizza-but-a-pie

<comment><USER2> For students of his jurisprudence this should come as no surprise whatsoever. Fortunately, he also feels Chicago not-actually-pizzerias have a first amendment right to lie about the product they sell.</comment>


Lowe's Invests In 42,000 iPhones To Improve Your Shopping Experience - <AUTHOR> http://techcrunch.com/2011/09/09/lowes-invests-in-42000-iphones-to-improve-your-shopping-experience/

<comment><USER2> Why would they want to pay more for iPhones with locked out features (like calls and email) instead of cheaper iPods? For the price of an iPhone, you're just a little bit away from an iPad, which in terms of retail style, is as hip as it gets.

<comment><USER3> >Why would they want to pay more for iPhones with locked out features (like calls and email) instead of cheaper iPods?

...Or even cheaper Android devices.

<comment><USER4> A little bit of fly-by fanboy there. I don't mind the claim, but I suspect there's a host of reasons. Perhaps there are some enterprise lock-out features (the article mentions this), a (slightly) higher bar to rooting, a known repository of "safe" apps (although these might be blocked), an appeal to customers' sensibilities (subjective "cool" factor), ...

... or maybe they just got a good deal as Apple works to unload back stock in preparation for the pending iPhone 5 debut.

You might argue with all of these criteria. I'm just saying that it's likely the company had a reason, and a considered response is better than Android v. iPhone sniping.

<comment><USER5> Being able to get (almost) the same model in the next many years might be important too: they don't need to update all their training, and system administration is simpler long-term with only a single type of phone.

Apple is the new Microsoft, who was the new IBM.

</comment></comment></comment></comment><comment><USER6> Probably not a bad initiative. I would still like to see large department store chains actually invest in their staff through salaries and education directly, instead of adding technology.

<comment><USER7> Most definitely. When I have a question about a product, having an employee read specs to me from his iPhone is not really what I think of as helpful.

</comment></comment><comment><USER8> It seems like a common experience at a hardware store to have an employee help you find what you need (versus, say, a grocery store), then finally direct you to the front of the store to pay. If that same employee could also ring you up on an iphone, I think it would at least be very cool, if not more efficient.

</comment><comment><USER9> They're going to need a really well-designed app or mobile site, preferably the former. I hope they don't try to do too much too fast, or they could end up with a bunch of confused workers and pissed off customers.</comment>


IE9, FF4, Chrome 6 Browser Benchmark - <AUTHOR> http://www.lucidchart.com/blog/2010/09/16/ie9-ff4-beta-in-real-world-benchmark/

<comment><USER2> Fx4b6 does not include the new JaegerMonkey javascript engine, so the lack of a speedup compared to Fx3.6 is not terribly surprising.

JaegerMonkey is in Fx nightly builds at the moment and is supposed to be featured in Fx4b7 (to be released later this month).

</comment><comment><USER3> Note that it's an "user drags something in the UI and we measure something" benchmark, so it's potentially suspicious if the things measured are comparable at all in different runs and browsers.

For example, in games, frames per seconds are measured under basic assumption that the game has the mode in which there's no limit the increase of frames per second other than the speed of rendering and that that mode is always identically reproducible.

Are we sure about that here?

And as others noted, they are using the old version of Opera, 10.53 instead of 10.62 which is current.

</comment><comment><AUTHOR> As an interesting comparison, I just saw that John Resig posted a benchmark of jQuery.css() performance across browsers. It doesn't include IE9, but does include Opera 10.62 and FF 4.0b6 - <http://www.flickr.com/photos/jeresig/4999526752/>

</comment><comment><USER4> Since you are testing all beta versions here, why not use Chrome 7 beta for a new benchmark ?

<comment><AUTHOR> Good question :) I didn't write the article, maybe ask @lucidchart on Twitter? According to the actual article title though, it seems the main interest was testing FF4 and IE9 against existing browsers, which would explain the absence of dev channel versions of Chrome.

<comment><USER5> Or more interestingly, they were looking at providing the best numbers to push their agenda the furthest.

As noted in a previous comment, a fair comparison would be to run a proper benchmark--which guarantees similar operating conditions.</comment></comment></comment>


Custom design your own Rings and Jewellery Online - <AUTHOR> https://www.zaqz.co <comment><USER2> what's this nonsense?</comment>


Linux Mint 17.2 "Rafaela" Cinnamon Released - <AUTHOR> http://blog.linuxmint.com/?p=2863

<comment><USER2> Have using Linux Mint for more than a half year,it's multimedia support is good.Previously using Ubuntu,Linux Mint feels far more better.

<comment><USER3> It feels better cuz it's less bloated. :) Eventually you'll be running Arch / Gentoo to cut out all the bloat 'cept what you need. :P

</comment></comment><comment><USER4> Here are the new features: [http://www.linuxmint.com/rel_rafaela_cinnamon_whatsnew.php](http://www.linuxmint.com/rel_rafaela_cinnamon_whatsnew.php)

Looks like GUI and performance improvements. Will have a read when after work.

<comment><AUTHOR> As far as the performance improvements, I haven't observed any significant improvements but certainly their haven't been any regressions. It was already pretty snappy, so it would have been difficult to improve upon that.

</comment></comment><comment><USER5> > If you want to upgrade from Linux Mint 17 or Linux Mint 17.1, please wait > for a few days while we release a new version of the Update Manager to you. > In the meantime, you do not need to download or to reinstall anything. We'll > make announcements next week when this is ready.

Have to wait till next week for auto update. Gggrrrrr.

<comment><AUTHOR> I just updated `/etc/apt/source.list.d/official-package-repositories.list` and performed a `sudo apt-get dist-upgrade`, worked surprisingly well.

The `rebecca` repository lines needed to be replaced with this:

      deb http://packages.linuxmint.com rafaela main upstream import  #id:linuxmint_main
      deb http://extra.linuxmint.com rafaela main #id:linuxmint_extra

edit: fixed formatting.

<comment><USER5> Cheers, all updated now.

<comment><AUTHOR> good to hear!

</comment></comment></comment></comment><comment><USER6> People still using MD5sums for file integrity?

Wut! Wut? Wut ?!

Collision attacks were successfully used in Flames. [http://www.forbes.com/sites/richardstiennon/2012/06/14/flame...](http://www.forbes.com/sites/richardstiennon/2012/06/14/flames- md5-collision-is-the-most-worrisome-security-discovery-of-2012/)

MD5 = obsolete.

<comment><USER7> > One researcher claims that the expense of carrying out the collision could > be as high as $200K. There is little doubt that Flame was created by a > nation state with considerable technical resources.

Somehow I doubt Linux Mint is worth that price tag. And you wouldn't use a rolling-based debian derivative for sensible data, would you ?

It's true SHA-1 costs the same as MD5 so it'd be easy to satisfy everyone though.

<comment><USER6> well it is like s2n (other news) providing the RC4 cipher that is also obsolete for 15 years at least.

Who cares, it is not as if your secrets or money were transiting on the internet.

<comment><USER7> Come on, that md5 hash is only useful for verifying the download wasn't corrupted or incomplete. Nobody aw re of security would rely on it for anything else.

A hash of the iso wouldn't prevent the tampering of critical files up the chain.</comment></comment></comment></comment>


Which email client provides what is depicted in todays xkcd? - <AUTHOR> https://xkcd.com/2093 <comment><USER2> The attachment reminder is part of Thunderbird since ages. It's based on simple keywords which are recognized.

The birthday reminder could easily be added to GMail but I haven't seen it so far (However, Google calendar has it). It is a comic, anyway! It tends to exaggerate.

</comment><comment><USER3> It seems to be riffing off the recent Gmail "Smart Compose" feature.

[https://www.blog.google/products/gmail/subject-write- emails-...](https://www.blog.google/products/gmail/subject-write-emails- faster-smart-compose-gmail/)

<comment><AUTHOR> Yes, but that only provides mail composition with commonly used phrases.

Is there something providing better reminders, based on the content? Basically, like in the comic.

Very often do I send a mail with a content of basically "sending something in the attachment" without actually attaching anything.

<comment><USER4> Gmail does that attachment reminder</comment></comment></comment>


Why Bing Is the Wrong Name - <AUTHOR> http://www.codingthewheel.com/archives/bing-they-shouldve-googled-a-better-name

<comment><USER2> A humorous article that makes some valid points, specifically the last one. The name won't necessarily restrict it from succeeding as a search engine, but it does nothing to help either.</comment>


Show HN: JobTweets – Find Real Time Job Tweets - <AUTHOR> https://github.com/flickz/jobtweets <comment><USER2> Twitter Search does pretty much the same: "(hiring OR job)"[1]. Easy to get relevant results with right keywords.

Also, Twitter already has filters for location and followers.

[1] [https://twitter.com/search?q=(hiring%20OR%20job)](https://twitter.com/search?q=\(hiring%20OR%20job\))

</comment><comment><USER3> The stream filter terms in server.js are 'we are hiring, looking for interns, we are employing, vacancy!, we have job available'. How did you pick them? I've never searched Twitter for a job but I can imagine there are _a lot_ of jobs that those terms are going to miss.

<comment><AUTHOR> It was just an initial experiment, help improve it! Thanks.

<comment><USER4> Use ML. Gather a bunch of tweets and learn a model that classifies tweets (job listing / not job listing). Then use the model as a filter. You can use it in concert with your current implementation: if the tweet contains any of your keywords, there's no need to invoke the model. Hope that helps.

<comment><AUTHOR> Cool. Thanks

</comment></comment></comment></comment><comment><USER5> Really neat - it would be interesting if there was an ability to (some how) filter the tweets based on the occupation they are hiring for (technical, sales, retail, etc).

Location based is "to do" which would really great.

<comment><AUTHOR> Thanks, I'm working on that and contributions are welcome.

</comment></comment><comment><USER6> This is pretty sweet. Very simple and the code base looks pretty easy to follow. I should get some time this evening to submit a PR to add a couple of small things :)

<comment><AUTHOR> Thanks!! The PR will mean a lot</comment></comment>


Show HN: Project To Help Me Lose Weight - <AUTHOR>

Hi!  I made http://weightgrapher.com/
Essentially, all the websites I've used between FitBit, LoseIT and MyFitnessPal have really poor graphing.
When I joined weight loss groups and forums I found most people are afraid of getting on the scale just because of how discouraging daily fluctuations can be.
I aimed to fix this problem by bringing exponentially damped averages into the weight graphing, and educating on using your trending weight to see how you're doing instead of the up-and-down of raw numbers.
Thoughts?  Feedback? <comment><USER3> The site leaves some unanswered questions in the minds of users that might consider using it.

If this is a free service, how do you plan to subsidize it if it becomes popular? Will your personal data remain private? Might the site stop working at some point without warning? Will you lose your data that you've entered?

Does the site work with other sites where you've tracked your weight, like MyFitnessPal, Nike+, Calorie Count, etc, at least for the purposes of importing data?

Will there be a community element of any kind for supporting each other? Will the site let you connect to other site APIs and export your weight if you log it and track it here?

<comment><AUTHOR> Those are some great points:

The service is free and all functionality that's currently in it will remain free. I plan to subsidize it through affiliate advertising. Currently the links to the Aria scale are aff links that give me 12% of the sale. I prefer unobtrusive methods such as that, and more so it's a product I use and recommend. I wrote a site around getting the data from it.

The first version supports importing weight data from LoseIT (only premium members of their site can export data), and FitBit (all users work through a pubsub channel and forced syncing if you're into that). MyFitnessPal, and Withings' Scale are both on my todo list.

A community element will be added eventually with forums/friends, but it hasn't been a priority for this initial version. Exporting data also wasn't a priority at this stage, but will become one when people actually want to export data.

</comment></comment><comment><USER4> I should note that the inspiration for a graph that uses exponentially damped averages to smooth away daily fluctuations was <http://www.fourmilab.ch/hackdiet/>. This site gives an automated way to get that information into a pretty picture with minimal work. Hopefully it will get more people to take advantage of the idea, without having to first read something aimed at engineers.

(For those who are curious as to how I know this, Kate is a friend of mine, and got the idea to do this after I explained how _Hacker's Diet_ works, and why it works better for men than women. Not that I deserve any credit here - my contribution amounts to heckling from the side lines as Kate came up with the ideas and did all of the work.)

</comment><comment><USER5> This works for exercise as well. When I was on a pushup/pullup kick last year, I made a graph that showed a moving average. It really was motivating to see the steadily trending upward line, in this case.

If you are successful with this app, you might try making a similar project for tracking criteria that someone wants to increase.

</comment><comment><USER6> As someone who has embarked on losing weight recently, this would definitely come of use. It's quite frustrating to lose a pound here and gain a pound there and not be able to see if you're losing weight overall.

</comment><comment><USER7> Feedback: I have no interest in signing up before I try it. It's not free - <USER2> get enough emails I don't want already.

Plus I'm lazy. Maybe that's why I'm fat?

</comment><comment><USER8> Seems similar to an Android app called Libra. Do you have a phone app?

</comment><comment><USER9> Show an example please. Many folks won't sign up to crit a project.

<comment><AUTHOR> <http://www.weightgrapher.com/about> Shows an example of the graphs and explanation of the site.

Things not shown: side bar of that page displays your weight, weight this day last week, last month, and a prediction of where you will be one month from now assuming linear extrapolation of weight shifting. Settings pages allow you to import data from LoseIT, link with a FitBit account, etc.

<comment><USER9> Perfect.

So you capture attention, make sure that's obvious on the landing page: Put a nice big link somewhere "See How it Works!"

<comment><AUTHOR> I'll try that. =)

I changed the primary hero button to a "See How It Works" that links to the about page.

</comment></comment></comment></comment><comment><USER10> This is fantastic. You've won a fan already :)

</comment><comment><USER11> looks interesting. any plans to open source it?

<comment><AUTHOR> Not at the moment. I did open source the FitBit API I wrote for it: <https://github.com/symkat/WebService-FitBit> however it's incomplete (I only have API definitions for the calls I actually use). So, while it's open- sourced, it's not of a quality yet I would put on CPAN.</comment></comment>


SpaceX Builds 120 Starlink Satellites, Costs Millions Each Month - <AUTHOR> https://interestingengineering.com/spacex-builds-120-starlink-satellites-costs-millions-each-month <comment><USER2> With a market potential of $30B / year, according to Elon. Starlink exists to fund Starship because launch revenues are not sufficient.

<comment><USER3> And to really make Starlink profitable, they need to launch it with Starship. Funny how it all comes around.

<comment><USER4> One of the reasons Musk is a genius is he can figure out these sorts of synergies.

</comment></comment></comment><comment><USER5> I didn't have any idea of the scale of things already in place. Why doesn't this get more press? (besides this article)

<comment><USER3> Unlike other SpaceX projects, SpaceX has been more quite about this, but fans new it was coming for a long time. However now that they start to show of ground systems and actually launch, you see more and more news about it come out.

I think once they start to roll it out to beta testers who are allowed to talk about it, you will see a much more.</comment></comment>


On reCAPTCHA Dread - <AUTHOR> https://blogs.gnome.org/mcatanzaro/2017/05/01/on-recaptcha-dread/ <comment><USER2> > My guess is that reCAPTCHA wants me to tag any bit of elevated land as a > mountain, but who knows, really.

noticed this too, and it often won't let me pass without selecting the hills

or when it asks for street signs, i have to select every vaguely street-sign- looking poster and advertising sign or it thinks i didn't select enough

i wonder how it's affecting their training

</comment><comment><USER3> > Now either the answer key is regularly wrong, or I just don't know what > street signs and mountains are.

Clearly, the author is a bot.</comment>


Facebook Now Lets You Take Your Data With You - <AUTHOR> http://gadgetwise.blogs.nytimes.com/2010/10/06/facebook-now-lets-you-take-your-data-with-you/

<comment><USER2> Pretty old. <http://news.ycombinator.com/item?id=1765002>

</comment><comment><USER3> Bold move indeed. Facebook is betting that individuals will never be able to rebuild their social graph on their own.

On the other hand, this is great PR for Facebook as they can now point to an example of their commitment to non-silo'd personal information.

Remains to be seen in what format(s) the information will be provided in, such that it will be accessible in a "simple, browseable [sic] manner."

</comment><comment><USER4> Why are you posting this?</comment>


The Hidden Dangers of Lead in Urban Gardens - <AUTHOR> http://modernfarmer.com/2014/07/lead-urban-gardens/ <comment><USER2> Urban gardening is a great example of faux-environmentalism. It feels good, but it's not an efficient or safe way to farm. Lead contamination is one reason. Another is pure logistics. While advocates claim local food reduces "food miles" and saves resources, the amount of miles food travels to get to your plate is just a fraction of it's carbon footprint. It's much more efficient to grow food where it grows best and ship it across the world compared to growing it locally and using excess resources to grow plants in poor conditions.

If you have time, read this:

[http://ntl.bts.gov/lib/15000/15100/15145/DE97763079.pdf](http://ntl.bts.gov/lib/15000/15100/15145/DE97763079.pdf)

Otherwise, get the short version:

[http://shrinkthatfootprint.com/food- miles](http://shrinkthatfootprint.com/food-miles)

That said, gardening is a great hobby that shouldn't be limited to rural communities. But we need to do this safely - perhaps raised beds and a green house. And we shouldn't expect urban farming to magically solve our food needs. Even if everyone had a garden in their back yard, it wouldn't substitute the amount we grow in large farms.

<comment><USER3> The associated benefits cannot be overstated: education, beauty, community, a connection to nature, health, and most assuredly tasting better. Urban community gardens are a very worthwhile pursuit. People should be encouraged to garden with their lawns instead of using so much wasteful, non-native grass.

Long term I hope to see LED-powered warehouses for urban produce production: [http://www.ledinside.com/news/2014/7/japanese_farmer_partner...](http://www.ledinside.com/news/2014/7/japanese_farmer_partners_with_ge_to_develop_world_largest_led_indoor_farm)

Fresh, local, efficient, and no need for pesticides.

<comment><USER4> Local urban farming is not assured to produce healthier nor tastier food. That squarely lies in the hands of the farmer. Farming is a skill; most people are not good at it.

LED powered farmhouses would be nice. But going back to the person that you commented on, now we're making energy to give to plants, instead of using the sun directly to make plants. This has the potential (especially in today's economy) to increase the carbon footprint of urban growing.

Certainly local. Fresh most likely. Efficient? Not so simple, probably not as efficient. And unless you're using GMOs that are resistant to invasive insect species, you'll still need pesticides (or lots of human hours....which severely decreases efficiency and increases cost).

<comment><USER3> >Local urban farming is not assured to produce healthier nor tastier food. That squarely lies in the hands of the farmer. Farming is a skill; most people are not good at it.

One word: tomato. Supermarket tomatoes are grown to survive shipping. Tomatoes that you grow yourself are always more delicious.

I'm not sure why I was downvoted without an explanation. What I've stated is 100% factual: [http://content.time.com/time/health/article/0,8599,2118455,0...](http://content.time.com/time/health/article/0,8599,2118455,00.html)

<comment><USER5> Because you can't generalize from a single datapoint. Tomatoes are pretty much the extreme example of this where it favors home grown plants. There's a large swath of plants where they aren't likely to be clearly better, and some where they're likely to be worse than the ones grown at scale (i.e. try growing an Apple tree from seed).

<comment><USER6> Yes but, generally speaking, urban farmers know which crops are worth growing and which ones aren't. This is why you won't find many of them attempting to grow apple trees, and a whole lot of them growing tomato and basil. Except for the occassional case of an idiot urban farmer (or, more kindly, an overly ambitious), it makes no sense to criticize urban farming on the ground that not all potential crops can be grown better in one's back yard. (Except the relatively extreme view that all agriculture can be replaced with people growing crops in their back yard -- a view that I've never heard a person espouse.)

</comment></comment></comment></comment></comment></comment><comment><USER7> Some plants, such as ragweed, mustard, oilseed rape, sunflower, cabbage, and duckweed (for semi-aquatic gardens) are metal hyperaccumulators.

If you have contaminated soil, you can grow these plants in the contaminated soil, then remove the plants and dispose of them safely. This will take several growing seasons to bring toxic metals levels down to acceptable parameters, but it has the advantage of being extremely inexpensive. Urban soils polluted by leaded paints and vehicle exhaust will likely be usable after one or two seasons of phytoremediation, but extremely polluted waste sites could take decades, starting with a narrower range of hyperaccumulator plants that can survive the initial high levels of contamination.

Adding mustard to your regular crop rotation is also useful for pest and weed control.

</comment><comment><USER8> Over the last 25 years lead has been phased out of paint, automobile gas and plumbing fixtures, but aviation gasoline, or "Avgas" remains leaded and is the number one source of airborne lead in the United States [0].

It frustrates me that the primary source of airborne lead stems from a mostly recreational source. Most planes that use Avgas are privately owned piston- engine/prop planes.

[0] [http://ehp.niehs.nih.gov/121-a54/](http://ehp.niehs.nih.gov/121-a54/)

<comment><USER9> As a recreational pilot, this bugs me too. Every time I fuel the aircraft, or check fuel samples, or stick the tanks, I'm interacting with lead. I'm sure that the amount is small enough that I'll never notice any difference, but, I'd really rather not have the lead. I'm hoping for a lead-free Avgas sooner rather than later.

<comment><USER10> Keep in mind that for lead there is no minimum safe exposure limit.

</comment></comment></comment><comment><USER11> This article from 2013 makes the argument that lead in the environment is responsible for violent crime. [http://www.motherjones.com/environment/2013/01/lead-crime- li...](http://www.motherjones.com/environment/2013/01/lead-crime-link- gasoline)

<comment><USER12> The problem with the lead-crime hypothesis is that the cause of lead and the effect of increased crime are 'too far apart' with many intervening links in the causal chain, to paraphrase Steven Pinker [1]. He calls the hypothesis 'provocative, but far from proven.' The intervening links in the causal chain involve a lot of sub-causal links and hypotheses that are as yet, unproven.

[1] [http://stevenpinker.com/files/pinker/files/pinker_comments_o...](http://stevenpinker.com/files/pinker/files/pinker_comments_on_lead_removal_and_declining_crime.pdf)

<comment><USER13> Even if lead can't be directly related to crime, lead poisoning causes many bad things to the human body, including learning disabilities, and reducing adult brain size in children exposed.

</comment></comment></comment><comment><USER14> Interesting article. I bought a CSA share with a local urban farm in St Paul and Minneapolis. I thought about soil and air contaminants when we made the purchase, but eventually decided to do it anyway. This article reassures me a bit that it's fine, especially since we always wash our veggies well.

</comment><comment><USER15> [http://dge.stanford.edu/SCOPE/SCOPE_31/SCOPE_31_2.05_Chapter...](http://dge.stanford.edu/SCOPE/SCOPE_31/SCOPE_31_2.05_Chapter10_119-146.pdf)

Read the summary at the bottom for the goods. Basically, different plants absorb different amounts of cadmium, and different soils have different levels of it, and it's all influenced by whether large human developments are churning Cd into the soils nearby. Nothing that hasn't been covered in studies for the past 30 or 40 years...

</comment><comment><USER16> while at elementary school age we were extracting lead from the old navy batteries and cables and smelt it in tin cans over open fire and made various stuff out of it - i guess new generations of children will have such fun no more :)

<comment><USER17> In science class, we played with mercury. After school we had BB gun battles. We stood up in the front seat of my dad's pickup truck; the one with the metal dash. Bicycle helmets hadn't been invented yet. I weep for the future of children now.

//Edit: OK, people, the comment about weeping for the future of children was meant in jest! Nearly killing ourselves as kids wasn't helpful. The notion that we did all right is survivors bias.

<comment><USER16> > After school we had BB gun battles.

reminded that nothing makes you run faster than an "enemy" with an air rifle with crafts-clay "bullet". Leaves nice haematoma even through wool pants :)

I'm all for the progress, yet i think abolishing BB guns/air-rifle battles isn't the one. Making sure that everybody wears safety glasses would be the one (we didn't have the ones, and that i think was unnecessary risk) Lead of course has to go.

Another - i see in the park children playing battles with "swords" which can't deliver any pain - foam wrapped by duct tape. We had "swords" we carved out of wood. They could deliver some pain, and that made the fight more lively i'd say :)

<comment><USER18> I fought battles with metal BBs. I fought battles with airsoft plastic BBs. I've never had to dig an airsoft BB out of my leg, can't say the same about metal BBs.

</comment></comment></comment></comment><comment><USER19> Gardens aren't the only potential vector; when we were raising chickens in out backyard in Oakland, we had an egg tested and found that its lead content was quite high. Still, visitors seemed to love that we had them, and we never received any commentary from the hens themselves.

</comment><comment><USER20> This kind of issue is why the food safety and modernization act (or some version thereof in US) is a necessary evil.

[http://www.fda.gov/Food/GuidanceRegulation/FSMA/](http://www.fda.gov/Food/GuidanceRegulation/FSMA/)

People on the internet (including HN) often consider this act a conspiracy by Monsanto and friends to seize control of the worlds food supply, but the simple fact is that people are regularly endangered by food they eat and there haven't been proper controls in place to address many easily preventable hazards. Just like restaurants, there needs to be some regulation and inspection of food production.

No, before you can even think it.... I'm not a paid Monsanto shill (was accused of this multiple times last time this came up here on HN) nor am I fan of big centralized seed/chemical companies. I am however a fan of safety and good sense. Just because a small producer does it doesn't mean it is necessarily better or more natural.</comment>


Hiring the Smartest People in the World - <AUTHOR> http://blog.tanyakhovanova.com/?p=402

<comment><USER6> People tend to hire, not so much the best people they can find, but the people who are most like themselves.

And if you hire people like yourself, and your job ad says "We hire the smartest people," then you must be the smartest people! I've found it to be a huge negative signal. These sorts of interviews seem to mostly be about developers patting themselves on the back about how they stumped the applicants in interviews.

I think we need to have the talk about the "hire the smartest developers" meme in our industry like the web hosting industry talks about five 9s of uptime. The first nine is writing FizzBuzz. The second nine is being able to design and maintain large systems. The third nine is knowing the finer points of Prim's and Dijkstra's and a copy of TAOCP with arbitrary dust coating on the shelf.

Do you really need talent that meets a higher standard than that? Maybe if you are Google or NASA. But if you are not launching things into space, you don't need to hire the world's smartest people. Certainly, there is a spectrum between 'we write CRUD software' vs 'we read journals and do some novel algorithms work', and a company in the second category will want to say something positive about the intelligence of their employees as a signal. But "we hire the smartest people" is absolutely the wrong thing to say.

"Smarter" is not even better once you've hit the threshold of "acceptable number of nines to write this program." I routinely pass over hiring extremely smart people. Some of them have abrasive personalities, or are the wrong cultural fit, or are not interested in the problem domain, etc.

<comment><USER7>
        Maybe if you are Google

Yes, ad sales is _the_ most pressing issue facing humankind.

<comment><USER8> While I don't specially disagree with you, the difficulty of a problem and its benefit to humanity are two completely orthogonal issues.

The fact that it's ultimately aimed at selling ads doesn't make what Google does (for example) in NLP an easy task.

<comment><USER9> How many google programmers are actually doing that though?

Compared to something inane and dull like the number trying to get the logins for all the different services actually working with each other properly?

</comment></comment></comment></comment><comment><USER10> Solution to problem 1: summing the numbers and then subtracting the sum from 1 + 2 + 3 + ... + n gives the deleted number x.

Solution to problem 2: let x be the deleted number and let y be the duplicated number. Summing the numbers and subtracting the sum from 1 + 2 + 3 + ... + n gives x - y.

Xor-ing the numbers and xor-ing the result with (1 xor 2 xor 3 xor ... xor n) gives x xor y. Now x xor y (expressed as a binary string) must contain at least one 1. So there is some digit where the binary representation of x differs from the binary representation of y. Let this digit be the ith digit.

Let's say that a number is _good_ if the ith digit of its binary representation is a 1. Let's call numbers that aren't good _bad_. Observe that exactly one of x, y is good, and the other one is bad.

Let S be the number that we get by doing this:

      S = 0

      for j in 1..n:

        if j is good: S = S + j

        if j is bad: S = S - <USER3>

Let T be the number that we get by doing this:

      T = 0

      for j in our_list_of_numbers:

        if j is good: T = T + j

        if j is bad: T = T - <USER3>

We find that S - T = x + y or -(x + y). Since x + y is positive, we can find x + y in either case.

We have x + y and x - y, so we can find x and y.

Solution to problem 3: imagine that we have a car, car 1, that has a really big tank with a bunch of gas in it. Put car 1 somewhere on the track and have it drive one complete revolution. The amount of gas G in the tank of car 1 varies over time, but at some point P on the track, G reaches its minimum value. P has to be at a gas station. (Otherwise G would be lower at a point right in front of P.)

If we take our regular car and start it (with an empty tank) at point P, it's pretty easy to see that it'll make it all the way around the loop.

Because if it didn't, then at some point Q it would run out of gas. Q wouldn't be a gas station, otherwise our car would refuel; so there's some point Q' in between Q and the next gas station from Q. Then driving a car from P to Q' results in a net loss of gas. Then when car 1 drove around the track, it should have had less gas at Q' than it had at P. (That's not 100% obvious in the case where car 1 drove past point Q' _before_ it drove past point P, but it follows from the fact that car 1 had the same amount of gas when it finished as when it started.) Contradiction.

Fuck yeah, I'm a badass.

<comment><USER11> 1\. Not constant space. Not linear time.

2\. Not constant space. Not linear time.

3\. Looks correct.

<comment><USER12> 1\. How is this not linear time?

<comment><USER13> Because as the numbers increase, their storage requirement also increases.

Suppose you have the array [1, 2, 3, ..., n]. How does _storage_ of that array scale? You need log(n) bits to store the largest element and you need about n elements of that size (at the very least the last n/2 will have the last bit set) -- so you are operating on a data source which has size O(n log n). At least, if n is the above number.

Given this, any algorithm which only uses O(n) instructions cannot asymptotically read the whole array, and this presents a fundamental limitation on the problem. Technically, there cannot be a solution better than O(n log n) for this reason -- unless you get lucky and find the duplicated element in the very first O(n) of the array, you will miss it in the last O(n log n) of the array.

The larger problem is that there is a fundamental confusion here. Really you should say that the array is some permutation of [1, 2, 3, ... m] and that n = m log m is the input size, and then ask whether algorithms run in linear time relative to n, not relative to m. This allows you to read in the array. You still have the problem that you have storage which grows like 1 + log m, though.

<comment><USER14> I disagree. The array is stored outside of your algorithm. The algorithm is constant space.

<comment><USER15> At least the sum needs ~log(N^2) bits. We typically assume that stuff fits in the native word size and thus takes a single cycle independent of the actual length of the number, but that's obviously not actually true (for numbers >= 2^32 or 2^64, etc.)

</comment></comment></comment></comment></comment></comment><comment><USER16> "Hiring the smartest people" is always great right up until the "paying slightly above market rate!" part.

If you really are hiring the _smartest_ people, what you are paying them should leave average people with their chins on the ground(1). If this is not the case, then I wish they'd quit bragging, because the smartest people aren't working there.

(1) This and/or have about the coolest place to work on the most interesting problems in the world.

<comment><USER17> There are people who volunteer to work on things like Presidential campaigns and for startups because of who they are working with rather than because of what they are being paid.

</comment></comment><comment><USER18> The last problem seems trivial enough, and I'm no mathematician. The trick lies in that you get to pick the starting point.

Imagine you have a circular track, and four segments of the circle, each representing the gas station's distance potential (the left edge shall be the gas station's location, the right edge shall be how far that station's gas will carry you). Place the segments any way you like on the track (though they may not overlap; overlap is double-burning gas. We 'compensate' for that by placing them adjacent, representing the total distance travellable on the gas in those two stations). You have a 5th segment representing the initial tank. All 5 segments form a complete circle.

In order for the trip to be impossible, you would have to arrange the 4 pieces in such a way that it would not be possible to cut up the 5th piece and fit it into the track without space left over. Since we know that the sum of the 5 segments (no matter what their division or arrangement) always equals a full circle, we can conclude that the trip must be possible.

We can then conclude that after placing the first 4 station pieces, any empty space in the track before the station with the most gas is a valid starting point that will enable you to complete the full trip.

In the edge case where your initial tank is empty (that is, your 5th segment is null-sized), you may start at the station with the most gas and complete the trip.

</comment><comment><USER19> I used to work at a company inordinately full of extremely smart people. The issue there was the lack of absolutely competent but not stellar thinkers - the people to do the grunt work. I'm convinced that in most engineering companies you need a good mix, biased towards the competent types.

</comment><comment><USER20> Most companies do not need to hire the 'smartest people in the world'. They also don't need the 'hardest working people in the world' or the 'most creative people in the world'.

Sometimes a company needs the very best people -- and they can try to define what this means to themselves and then filter for it. However, generally they need people that can solve the problems that they face to an above market-rate level of quality, and that are willing work for the least amount of money.

Unless your companies selling point is solving hard mathematical problems, or designing the most beautiful/elegant interfaces you should probably hire for 'good value', and a few people that you believe to be 'multipliers'.

<comment><USER21> You forget the value of people who work well together as a team. Individually they might not be anything special but together they can produce great results.

Personally, I hate the idea of abstracting people out to fungible goods that a company buys in because it's a cop-out and an over-simplification. Putting together a group of people in a team is as much a social challenge as it is ticking technical requirements.

</comment></comment><comment><USER22> I very much doubt that the OP can solve either problem 1 or problem 2 with constant space. Hint: even storing an additional integer N requires \Omega(log(N)) space.

Edit: For the down voter: I searched around and found a discussion of the puzzle [1]. Please go ahead and read it.

[1] [http://books.google.de/books?id=415loiMd_c0C&lpg=PP1&...](http://books.google.de/books?id=415loiMd_c0C&lpg=PP1&dq=muthukrishnan+data+stream+algorithms&hl=el&pg=PA1&redir_esc=y#v=onepage&q=muthukrishnan%20data%20stream%20algorithms&f=false)

<comment><USER23> I am not sure how you got downvoted but the constant space requirement seems a little puzzling. When the problem says that you are given a list of n numbers (or, more correctly, n-1) you are already in linear space. You have to store the list somehow.

Maybe they meant "constant additional space". Or constant space for the data you are using in addition to the space required for the inputs.

That however tends to go against the main principles of complexity theory and O-notation. The main principle of O notation is that you mostly care on how things grow as n becomes large. Thus, constant terms should be deleted if you have a linear term. In other words, if you have something that adds constant space to linear space, you get linear space. Thus, if you already have something that requires linear space, and have to add something else to it, it is not that important (for complexity theory purposes) if the second thing is in constant space, or log space or even linear space, as long as it is smaller or equal to linear space.

<comment><USER24> It's fairly standard to talk about how much auxiliary space an algorithm needs - in sorting, for example. I guess that's what the author means.

</comment></comment></comment><comment><USER25> For the first one, if they are in an order, and in an array, you can do a binary search, _O(log2 n)_ time - better than linear time. Perhaps the question was misstated. Also, the friend's relationship is accidentally disclosed as a son.

<comment><USER26> The problem wasn't misstated, when they aren't in order the solution isn't obvious unless you remember a bit about sums. Most interview problems, if restricted, can either be solved very quickly, or aren't interesting anymore. Either way, as it was stated, it's a fairly common interview question as another comment has pointed out.

<comment><USER25> The question states they _are_ in an order - ah, by that, they probably mean "not ordered".

<comment><USER26> You're probably right, although as of right now it reads "in some order", ergo there is no guarantee that i comes before i+1 for all i. It could have been updated though.

</comment></comment></comment></comment><comment><USER27> I always beware of the "we want the best of the best" companies. Usually they are looking for the "best that don't show it if they are smarter than the boss". That's a shame ...

</comment><comment><USER28> Better title: Acing The Interview Doesn't Mean You'll Be Hired. No explanation why though. Envy?

<comment><USER29> I'd suggest more that the interviewer felt threatened rather than envy. From their point of view, they would have someone smarter than them working under them, who might show them up to senior management or displace their current position in the company.

<comment><USER30> Problem solving is only part of what makes a good employee.

</comment></comment></comment><comment><USER31> So, here's the thing, and you can be guilty of this too!

If you're too worried about the answers matching your little pop quiz, sorry, you're doing it wrong

I know G needs the users to know what they ask, and their business stand on scalability, still

There is so much more! The article is just one example where google fails (yes, it doesn't say it's google: it's google) And you solved it in O(n) where they want an O(n log n) solution?! What are they thinking of refusing this?

You can be a specialist on several other technologies and techniques that are not asked in the interview it's not even funny. Discrete math, code optimization, machine learning (yeah, ok, Norvig is there, and they do that a lot, still), graphics rendering, etc, etc

</comment><comment><USER14> A quick Google will find you the answer to the first question. The second just requires an additional equation, where people are suggesting powers in finite groups. This seems rather complex. Can we not reach the same constraints by only summing the even numbers, for instance?

<comment><USER32> 1°: s is the sum of the numbers in the array, x = n _(n+1)/2-s

2°: s sum, p product, solve the linear system {n_(n+1)/2-x+y=s; n! _y = p_ x}

<comment><USER14> Sorry, can you expand on what you meant by that?

<comment><USER33> Sum of first n natural numbers is n(n+1)/2. The sum of the array, represented by s, is n(n+1)/2 - x + y (subtract x - the missing number and add y - <USER4> duplicated number) gives:

1: n(n+1)/2 - x + y = s

Product of first n natural numbers is represented as: n! The product of the numbers in array is p.

2: p x / y = n!

(multiply by x - add missing number to product and divide by y - <USER5> duplicated number from product).

</comment></comment></comment></comment><comment><USER34> so was it her friend or her son?

<comment><USER35> it was either Sergei or Alexey. Brenstein btw

</comment></comment><comment><USER36> Aren't the first two problems simple to solve:

1\. create an array length n of booleans set to false, set the each index i to true for the integers in the array, the index of one still false is the missing integer 2\. same as 1 but with a count

Both are O(N) but perhaps my understanding of what constant space means is flawed?

<comment><USER37> Your solution is in O(N) space, since you create a N sized array.

The elegant solution to the first problem requires big integers in a realistic setting, and simply involves summing all the numbers and comparing with what the sum of 1 to n should be (n(n+1)/2 iirc).

<comment><USER38> I don't think it requires big integers. If you do it with machine words, the overflow/underflow will exactly cancel out so you will be fine. I think.

If that's not true, then adding each x and subtract i as you process it is sufficient to ensure you only need integers comparable in size to N, not N^2.</comment></comment></comment>


Anne Hunter Retires from MIT - <AUTHOR> https://thetech.com/2019/09/26/anne-hunter-retires <comment><USER2> End of an Era. She was incredibly helpful and kind in helping students navigate MIT and Course 6. It's going to take an entire department to replace her.</comment>


The Great Works of Software - <AUTHOR> https://medium.com/p/705b87339971

<comment><USER2> I think that the Quake series really ought to be in there--it introduced the first really good implementation of networked gaming and culture, of realtime 3D for the masses, and a host of technical decisions that are very interesting in their own right.</comment>


Our Galaxy Has at Least 100 Billion Planets, Study Shows - <AUTHOR> http://www.jpl.nasa.gov/news/news.cfm?release=2012-010

<comment><USER2> Hmm, "Our Milky Way galaxy contains a minimum of 100 billion planets according to a detailed statistical study based on the detection of three extrasolar planets by an observational technique called microlensing."

So we looked in 3 places, found 3 planets and are extrapolating to 100 billion? Surely I would wait for a few more examples?

Edit: Reading the full story, "Of the approximately 40 microlensing events closely monitored, three showed evidence for exoplanets. Using a statistical analysis, the team found that one in six stars hosts a Jupiter-mass planet. What's more, half of the stars have Neptune-mass planets, and two-thirds of the stars have Earth-mass planets. Therefore, low-mass planets are more abundant than their massive counterparts."

I dont get it. Any explanation?

<comment><USER3> The reason it's OK to extrapolate in this way would appear to be in this fact (from TFA):

"Unlike other prominent planet-detection techniques, which measure the shadows of planets passing in front of their stars (transit) or measure the wobble of a star due to the gravitational tug of a planet (radial velocity and astrometry), the gravitational-lensing technique is unbiased in the selection of the host star."

To know more, we have to read the story in _Nature_ , which is here:

[http://www.nature.com/nature/journal/v481/n7380/full/nature1...](http://www.nature.com/nature/journal/v481/n7380/full/nature10684.html)

Look at the error bars on their percentages. Super-earths (planets of 5-10x earth mass) are present on "62 +35 -37"% of systems. So, your intuition that the extrapolation was shaky is correct.

<comment><USER4> Assuming the title and your numbers are correct they basically said. 'We estimate that there is a 95% chance that there are 250Billion stars +/- 60% which means there is a 97.5% chance that there are at least 100billion planets.'

However, the actual study costs US$32 so I am not buying it so somewhere in the game of telephone that we just played information could have mutated.

<comment><USER5> The paper can be found here:

[http://www.eso.org/public/archives/releases/sciencepapers/es...](http://www.eso.org/public/archives/releases/sciencepapers/eso1204/eso1204.pdf)

</comment></comment></comment></comment><comment><USER6> Sounds a little more lonely when you read "it's likely there are a minimum of 1,500 planets within just 50 light-years of Earth." 1,500 isn't that many, and 50 light-years is a really long distance.

<comment><USER7> We are pretty isolated. Had we belonged to a cluster of stars our chances of finding life would have been greater.

From Wikipedia: <http://en.wikipedia.org/wiki/Star_cluster>

Globular clusters, or GC, are roughly spherical groupings of from 10,000 to several million stars packed into regions of from 10 to 30 light years across.

<comment><USER8> From <http://en.wikipedia.org/wiki/Globular_cluster> :

"However, they are not thought to be favorable locations for the survival of planetary systems. Planetary orbits are dynamically unstable within the cores of dense clusters because of the perturbations of passing stars."

</comment></comment></comment><comment><USER9> This is very exciting.

On a related note, the number put forth by the study (at least one planet per star, on average) is roughly consistent with Drake's 1961 estimate that half of all stars will have planets, and stars with planets will have 2 planets capable of developing life.

Except, of course, that Drake estimated an average of >=1 _habitable_ planets per star. Still, it's good to see one of his estimates being corroborated.

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

<comment><USER10> Drake just pulled a bunch of numbers out of a hat and multiplied them. This is a much more serious scholarly effort.

<comment><USER11> Drake did no such thing. The Drake equation was not designed to give us an answer as to the number of civilisations out there, but to show us which questions needed to be answered to help us identify candidate search locations.

As an example, the Kepler mission is a direct result of the Drake equation, designed to resolve the first two parameters - fp and ne.

</comment></comment></comment><comment><USER12> Now all we need to do is get each of them to send us $150. US debt crisis solved.

<comment><USER13> Where should they take the money from? You print all the dollars. Unless there's been trade with aliens, they won't have any earthling money.

</comment></comment><comment><USER14> Eric Idle already told us that quite a long time ago.

<comment><USER15> <http://www.youtube.com/watch?v=buqtdpuZxvk>

</comment></comment><comment><USER16> I believe there are much more planets because not every planet has a star: [http://www.dailygalaxy.com/my_weblog/2011/09/billions-of- dar...](http://www.dailygalaxy.com/my_weblog/2011/09/billions-of-dark-planets- roam-the-milky-way.html)

</comment><comment><USER17> that's about one for every person that's ever lived.

<comment><USER18> very appropriate 2001 reference.

</comment></comment><comment><USER19> The headline reads even better if you imagine Carl Sagan saying " _billion_ ".

</comment><comment><USER20> So, where are the other kids? We want to play.

</comment><comment><USER21> I cannot even start to grasp the meaning of 100B planets.

I read that if the "Milky Way" was the size of China, then the the sun and 6 closest planets around together would be the size of one quarter.

<comment><USER22> I just did the math on that, it's about right. It's closer to a dime though.

<comment><USER23> If you really did the math, I love you.

<comment><USER22> It's straightforward math, the hardest part is coming up with a width for China (I ended up using an approximation of 5,000 km), all of the other figures are on wikipedia (radius of Saturn's orbit, size of the milky way). Also, if you want to be super lazy you can get google to convert units for you:

[https://www.google.com/search?ie=UTF-8&q=2.87+billion+km...](https://www.google.com/search?ie=UTF-8&q=2.87+billion+km+%2F+100%2C000+ly+*+5%2C000+km#sclient=psy- ab&hl=en&source=hp&q=2.87+billion+km+%2F+100%2C000+light+years+*+5%2C000+km&pbx=1&oq=2.87+billion+km+%2F+100%2C000+light+years+*+5%2C000+km&aq=f&aqi=&aql=&gs_sm=e)

</comment></comment></comment></comment><comment><USER24> Now I feel a bit of a loser for only having visited one so far.</comment>