Hidden features of Google - <AUTHOR> http://webapps.stackexchange.com/questions/753/hidden-features-of-google <comment><USER2> <http://google.com/search?q=sunset+in+paris> \- this will even tell you when the sun isn't going to set or rise in extreme latitudes.

</comment><comment><USER3> I like the tilde tip, but I've noticed Google does this by default quite a bit (and seems to be more and more nowadays). I'm sure that explicitly giving the tilde activates more of the synonym checking, but I'm sure Google's goal is to eventually make it unnecessary to use any of these keywords.

</comment><comment><USER4> You can turn on gmail-style hotkeys for Google search:

<http://www.google.com/experimental/>

</comment><comment><USER5> On the left side with the relatively new array of options I choose discussions and under I choose latest to find where people are talking about my industry (and what they are saying).

<comment><USER6> For some reason, it tickles me that on the left side where Google lists the various types of searches, it usually defaults to "Everything", but then under that there's a link labeled "more".

<comment><USER7> [http://www.amazon.com/Everything-More-Compact-Infinity- Disco...](http://www.amazon.com/Everything-More-Compact-Infinity- Discoveries/dp/0393003388)</comment></comment></comment>


Ask HN: Best way to collect payments under 3$? - <AUTHOR>

Which service to use if you intent to primarily collect payments under 3$? Needs to be able to collect payments from all over the world, not just the US. <comment><USER2> Paypal has Micropayments, 5% + $0.05 USD per transaction [http://www.ebay.com/gds/Micro-Payments-On-Paypal-HOW-TO- SETU...](http://www.ebay.com/gds/Micro-Payments-On-Paypal-HOW-TO- SETUP-05-transaction-/10000000002350945/g.html)

</comment><comment><USER3> How about bitcoins?

* Very low transaction cost * International Transfers is same as local transfers.

Suggest to read up more about pros/risks before proceeding.

</comment><comment><USER4> The solution in Iowa is Dwolla. [http://www.dwolla.com](http://www.dwolla.com)

</comment><comment><USER5> In Europe, the answer is _probably_ GoCardless. Depends what kind of payments though - if it's card type payments you need, (I.e instant, fore commerce type stuff), then not, but subscriptions, most bills/invoices, absolutely GoCardless.

</comment><comment><USER6> Square Cash - [https://square.com/cash](https://square.com/cash)

</comment><comment><USER7> I think amazon payments has special terms for this kind of thing

<comment><USER8> Yes they do (this was news to me). For Transactions < $10:

1.5% + $0.01 for Amazon Payments balance transfers

2.0% + $0.05 for bank account debits

5.0% + $0.05 for credit card

They also appear to support payment aggregation, which is another method of making micropayments via credit card profitable.

[https://payments.amazon.com/help/Amazon-Flexible-Payments- Se...](https://payments.amazon.com/help/Amazon-Flexible-Payments- Service/Flexible-Payments-Service-FAQ#suse_micro)

</comment></comment><comment><USER9> Check out Skrill (formerly Moneybookers).

<comment><USER10> Why? Their rate is 3.9% + €0.35 for non-european merchants and 2.9% + €0.25 for european merchants.

That's not exactly cheap. Do they offer a service I don't know about that makes them better suited for small payments than Stripe, Balanced or BrainTree?

<comment><USER9> I didn't know about their high fees. But I know they have a good international money transfer support. I used them for personal financial transactions for 4 years and found them very good.</comment></comment></comment>


The "C is Efficient" Language Fallacy (2006) - <AUTHOR> http://scienceblogs.com/goodmath/2006/11/the_c_is_efficient_language_fa.php <comment><USER2> Umm, yes C/C++ will not parallelize your code for you, whereas Language XYZ will. Im not sure how this is an argument against C/C++ being effective. C/C++ will not parallelize your code by design. It's was never meant to. I'd never blame my stick-shift car for not changing gears by itself - thats the first reason I didnt buy an automatic in the first place!

If your matrix manupuilation code performance becomes an issue, you, the C/C++ coder will have to parallelize it _and take responsibility for whatever assumptions have to be made_.

Im sure that the limit of what one considers as acceptable code alteration by the compiler/interpreter depends on the person. Personally I'd be very wary of a system trying to guess-parallelize my code - especially if I can do it myself whenever I see fit by adding a dozen boilerplate code lines. I'm sure most academics needing a numerical calculus system would be glad to have the system abstract away every possible optimization, so that they can stay as much as possible in the 'abstract math space'.

I am also kind of wary of the "look, I wrote the program in several languages and here is the perf comparison". Our skills with each language vary. What I liked was (i cant seem to find the link) a teacher who asked his class to write a program doing some text manipulation/indexing (iirc) in whatever language they wanted. The fastest code was in C, yet the worst C implementation was _significantly_ slower than an average java code. To sum all this up - the speed depends on the skill of the person in the particular language, much more than on the language itself.

<comment><USER3> You're missing the point. The target demographic for this article is someone who is not a computer scientist. He's someone who doesn't have time to deal with thread libraries and low-level matrix operations. He just needs to crunch his data quickly so that he can publish his valuable research. This person reads the same blog articles that computer scientists do, and comes to the conclusion that "I should learn C++ for my number crunching". That's simply not the case; you _can_ use C++ to get good performance, but the amount of knowledge you need to acquire to do so is an entire field. You aren't going to be the world's best human genome researcher _and_ C++ programmer; the time spent learning C++ could have been used to do research.

The idea is: if you use a tool that lets you describe your problem at a high level and let the computer worry about how to do the calculation efficiently, you'll beat your hand-rolled C++ every time. And, there is now the possibility of hiring a "Real Programmer" to hack your math library (Octave, Mathematica, Python + numpy, whatever), allowing you to delegate work. If every calculation was a brand new C++ program, you'd only be able to improve your application's performance by hacking on your application. Separating the problem description and the solution description allows the solution-finding code to be optimized without knowledge of the specific problem.

I think this approach scales to the work that practicing programmers, too. We don't see it a lot because writing tools is time consuming and we all have deadlines; so we pic k the "worse is better" solution and hard-code our applications in what amounts to glorified machine code.

Just because a practice is common doesn't mean it's a good idea.

<comment><USER4> Except that there are fine high-level matrix libraries, optimization libraries, etc. for C/C++. I needed an parameter estimator for maximum entropy models that was efficient for training rankers (e.g. for parse disambiguation, fluency ranking, etc.), that also had good support for feature selection. I just used an off-the-shelf optimizer (liblbfgs), implemented calculation of the objective and gradients, plus various feature selection methods.

Within no-time, we had an extremely fast estimator, that could also help answering my research question (what are the most discriminative features in our models).

Let me push this point somewhat further: C is a very simple language. It's something that someone with a certain level of intelligence can fairly quickly pick up. There is also a wealth of excellent libraries available. The problem with 'use high-level, the compiler/interpreter will take care of it' is that those languages are either a lot more complex (Haskell, OCaml) or a lot slower (Python, Perl, Ruby). In the latter case, you will end up implementing modules in C anyway.

<comment><USER5> _C is a very simple language._

It is? Out of curiosity, did you know about all the undefined behaviors described at [http://blog.llvm.org/2011/05/what-every-c-programmer- should-...](http://blog.llvm.org/2011/05/what-every-c-programmer-should- know.html) and did you understand how your C compiler takes advantage of them before you wrote that statement?

<comment><USER6> Yes, that's what makes C simple. If all of those edge cases were covered, the language would be much more complex.

Simple != Easy to use

<comment><USER5> So when people say that "C is simple", you think they really mean "C is simple to implement" or maybe "C is simple to specify"? I don't think the grandparent meant either of those things and I don't think either of them are true anyway.

<comment><USER4> Simple in the sense that it is a small language. There are not a lot of constructs, abstractions, etc. C lets you allocate blocks of memory, and perform operations on those blocks of memory. That's mostly it. In my experience, this very much maps to the problem domain (number crunching).

If you want to do performant number crunching with most other languages, you have to not only grasp the language, but also the underlying virtual machine or compiler. The more layers you pile on top, the harder it becomes to identify bottlenecks.

Sure, you can use fast implementations of common algorithms in a high-level language. But they are often written in C or C++. So, if you want to modify or extend such algorithms (which is likely, or you could just use an off-the- shelf program), you will end up in C-land anyway.

<comment><USER7> > C lets you allocate blocks of memory

It doesn't even let you do that -- those things are external library calls.

<comment><USER8> They're standardized, so they are part of the language.

They don't have special syntax, but, then, neither does practically anything you do in Common Lisp, and that's standardized as well.

<comment><USER9> _They're standardized, so they are part of the language._

"Language" has slightly different meanings in different contexts. Perhaps he's talking about something in a theoretic context, as opposed to practice? Smalltalk has no special syntax for allocation (creating new objects) either.

<comment><USER8> > Perhaps he's talking about something in a theoretic context, as opposed to > practice?

Then he's still wrong. A standardized part of the language is a part of the language.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Putting aside his general point C efficiency, I'm curious about his specific claim that Fortran compilers outperform C specifically because aliasing conceals optimization opportunities. John Reghr points [1] to a really interesting paper from 2004 that used a special analysis tool to mark every single pointer as restrict as it safely could in the SPEC benchmark. The result was a 1% performance improvement.

That suggests that at least circa 2004, if aliasing were a serious problem for C compilers, restrict annotations were not the solution, which calls Chu- Carroll's claim into question. But there might be other explanations. Any thoughts?

[1] <http://blog.regehr.org/archives/537>

ETA: Just to clarify what the 2004 paper involved: the researcher took the SPEC code and ran it through a dynamic analysis tool that identified every single use of non-restricted pointers that did not alias any other in-scope pointer at the time. He then took all of those pointers and marked them as restricted in the source text. The result was a program with every possible pointer marked as restricted that could be so marked. That's way more than a human annotater will ever do. And all that got him a 1% performance improvement.

<comment><USER10> Well maybe the reason performance improved only slightly is because not a lot of effort has gone into optimizing situations involving restrict pointers because it is so rare. If it is common in fortran it would make sense that a lot of effort has gone into special optimizations for that case, the same effort would not have been spent in c compilers because it is so rare.

<comment><USER11> I'm not sure it's as rare as you make it out to be - AFAIK most compilers that support restrict declare malloc() and new to return restrict pointers, so

        int *x = malloc(100), *y = malloc(100);

followed by some loop should be able to spot that x and y are not aliased. It should also be able to propagate the restrict as pointers are passed around, at least to some extent.

<comment><USER10> would the c compiler actually pull that restrict annotation forward without declaring the locals as restrict?

</comment></comment></comment></comment><comment><USER12> This is old (2006), and seems to base its argument around the problems with unrestricted pointers in C, that cause aliasing.

As of C99, of course, C has the "restrict" keyword which allows pointers to explicitly be declared to _not_ alias, thus enabling all these optimizations in C, too.

<comment><USER13> The problem with the C99 restrict is that its correct use is not (and cannot) be enforced by the compiler. For example, the following is legal C (in the sense that no compiler that I know of will issue as much as a warning):

void f(char * restrict p, char * restrict q); char * h() { static char s[10]; return s; } void g() { f(h(), h()); }

(Correctness of a program using restrict is, in general, not decidable.)

The tradeoff here is that while restrict can be used to allow for further aliasing, it is very easy to write code with undefined behavior as a result. Dennis Ritchie argued as much when he (successfully) kept "noalias", the precursor of "restrict", out of the C89 standard: <http://www.lysator.liu.se/c/dmr-on-noalias.html> (while "restrict" is not quite as dangerous as "noalias", it still has to be used with care).

<comment><USER14> I don't know the first thing about FORTRAN. How does it enforce this?

<comment><USER13> This is independent of what FORTRAN does. The problem with the "restrict" keyword in C99 is that introducing it can make otherwise correct code incorrect and the compiler can't tell you.

As to program analysis, programming languages without pointer arithmetic have it a lot easier than languages with. The pair (array, index) holds more information than the address of array[index]. For example, it is trival to perform array bound checks if you have the former information, but very hard if you deal with arbitrary pointers. Pointer arithmetic loses information.

</comment></comment></comment></comment><comment><USER15> _C and C++ suck rocks as languages for numerical computing. They are not the fastest, not by a longshot. In fact, the fundamental design of them makes it pretty much impossible to make really good, efficient code in C/C++._

I dare say this is more or less true of C, but following big improvements in the quality of C++ compilers (changes that happened well before 2006), C++ has proven itself as a language for high-performance scientific computing. Todd Veldhuizen provided a survey back in 1997 of the changing case in favour of C++ to accompany his Blitz C++ library: [http://www.autistici.org/sens/inf/scientificcomputingcfortra...](http://www.autistici.org/sens/inf/scientificcomputingcfortran.pdf)

Fortran still has considerable advantages, but it's been a long time since Fortran programmers could regard C++ as offering unserious performance.

I would also hesitate to say that C++ is lower level than Fortran. With a suitable coding style, C++ is a quite high-level language. In fact, it is precisely the abstractions that C++ offered (templates) that allow the optimisations to take place that have delivered these improvements in compiler performance. Was the author not aware that templates can be used in this way? The discussion of alias detection suggests so.

The high-level point is right, namely that abstractions make for safer languages and give compilers freedom to make optimisations that apparently more efficient, less safe languages cannot, and so deliver better performance. But it would have been a better article if it had not mentioned C++.

Another conclusion to draw is that benchmarks produced by people who are out to make a point are worthless.

<comment><USER16> I was going to post something similar, with one addition:

One performance problem with Blitz was that the expression templates obfuscated the code enough that the compiler bailed on doing SIMD vectorization of the evaluation loops. That was fixed this year at least for the Intel compiler (gcc doesn't have pragmas to control vectorization), so now performance can even exceed Fortran for large-ish arrays.

I made some plots while fiddling with this if you are interested: [http://governator.ucsc.edu/filer/blitzbench_r1845/blitzcomp....](http://governator.ucsc.edu/filer/blitzbench_r1845/blitzcomp.html)

</comment></comment><comment><USER17> The longest common substring problem (LCS) can be solved in O(n^2) time using dynamic programming, not O(n^3) as is stated by the author of that post. If the author is unable to get the basic fact right, I can hardly trust his benchmark. Also, I question the author's skill in C/C++: in my experiences, C is consistently faster than Java for such tasks and C++ is nearly as fast as C as long as we use it the right way. If we look at the computer benchmark games, OCaml never beats C in terms of speed. I doubt the conclusion was much different in 2006. The author should released the source code; otherwise the benchmark tells us nothing but his incapability in programming.

EDIT: in his comments to another commenter, the author was saying this: "[The OCaml compiler] could do some dramatic code rewriting that made it possible to merge loops, and hoist some local constants out of the restructured merged loop." A good C programmer should be able to do all the above simply by instinct. The author was not good enough. I buy the argument that being really good at C/C++ is more difficult than at other languages, but this is not the same thing as arguing C is inefficient.

<comment><USER18> What the author mentioned is longest common SUBSEQUENCE (not substring). And it's true that LCS requires O(n^2) if only need to find ONE LCS, using dynamic programming. But if it's required to find ALL longest common subsequence, it definitely requires higher order. [http://en.wikipedia.org/wiki/Longest_common_subsequence_prob...](http://en.wikipedia.org/wiki/Longest_common_subsequence_problem)

I agree that the author should post the code he used to benchmark different languages. Otherwise, it's not convincing

<comment><USER17> Can you find the proof that finding all LCS is O(n^3)? The author was talking about "the standard algorithm for computing LCS". I was assuming the standard algorithm finds one LCS only.

<comment><USER19> Indeed, finding all LCSs requires exponential time: The strings "abcdefghijkl..." and "badcfehgjilk..." have the 2^(N/2) LCSs "[ab][cd][ef][gh][ij][kl]..." and no algorithm can ever run faster than the amount of time it takes to print its output.

</comment></comment></comment></comment><comment><USER20> C and C++ are efficient for _general-purpose_ programming, if you know how to use them. C is here to stay because it is lingua franca of the computing world: OS APIs are defined in terms of C functions, and I know of no libraries in wide-spread use that do not offer a C or C++ interface.

People otherwise rightfully challenge his conclusions.

There's a funny comment there about matlab: "MATLAB struck me as being the wrong tool for every problem."

<comment><USER21> Matlab may be a pretty bad language, but it gives access to a huge (and growing) body of existing code.

<comment><USER22> If you're an engineer (like an engineer engineer, not a software engineer) 90% of the time matlab has some module built-in or for sale that simply solves the problem you have. For example: [http://www.mathworks.de/products/dsp- system/demos.html?file=...](http://www.mathworks.de/products/dsp- system/demos.html?file=/products/demos/shipping/dsp/adaptfxlmsdemo.html)

The code to construct an LMS filter ([http://en.wikipedia.org/wiki/Least_mean_squares_filter#LMS_a...](http://en.wikipedia.org/wiki/Least_mean_squares_filter#LMS_algorithm_summary)) is effectively one line:

       h = adaptfilt.filtxlms(L,muW,1,Hhat);

<comment><USER23> You've hit the nail on the head. This is exactly why Matlab is so pervasive in science. Not because it's actually good, but because it has so many handy libraries. The Mathworks is the Microsoft of science.

I had to use Matlab for seven years in neuroscience, and it's a terrible language for everything other than matrix math, data plotting, and (if you cough up for the Parallel Computing Toolbox) easy parallelization.

<comment><USER6> Somewhat off-topic: Have you heard of the Neural Engineering Framework? <http://ctn.uwaterloo.ca/~cnrglab/?q=node/10> It's got a Python (well, Jython) scripting interface and can also interact with Matlab.

<comment><USER23> No, I hadn't heard of it, but I was operating slightly higher, in cognitive neuroscience, and doing a lot of fMRI and intracranial EEG work. For those domains, the biggest packages are SPM and Fieldtrip, both of which run on Matlab.

I do, however, hope that Python will push out Matlab one day.

</comment></comment></comment></comment></comment></comment><comment><USER24> As someone who doesn't know Fortran, how does Fortran solve the aliasing problem? Even if pointers and arrays are different, how can you ensure two arrays don't alias each other? The only way I can think of to do this is to always copy arrays when they are passed to functions, but this seems expensive. Otherwise I don't see how you can avoid this pseudocode:

      void f(array1, array2) { /* somehow guaranteed not to alias? */ }
      void g() {
        array my_array[50];
        f(my_array, my_array);
      }

<comment><USER25> I thought about it, and I realized I didn't know. This is the best discussion I found: [http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/Aliasing- Assumed...](http://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/Aliasing-Assumed-To- Work.html)

Short answer: they don't. What you wrote is an undefined behavior, just like dereferencing a null pointer in C. If the compiler can't tell statically, then it just assumes they're not aliased.

I'm basing this conclusion mainly on this statement from that piece on aliasing: _Essentially, compilers are promised (by the standard and, therefore, by programmers who write code they claim to be standard-conforming) that if they cannot detect aliasing via static analysis of a single program unit's EQUIVALENCE and COMMON statements, no such aliasing exists. In such cases, compilers are free to assume that an assignment to one variable will not change the value of another variable, allowing it to avoid generating code to re-read the value of the other variable, to re-schedule reads and writes, and so on, to produce a faster executable_

<comment><USER24> Interesting, that sounds equivalent to just assuming "restrict" on all function parameters. If that's true, then C and Fortran aren't fundamentally that different in this respect except that C assumes things can be aliased by default and Fortran assumes they can't.

</comment></comment></comment><comment><USER26> > _Modern architectures have reached the point where people can't code > effectively in assembler anymore_

Someone should inform the guys over at ffmpeg that the jig is up.

<comment><USER27> The statement is overbroad but not wholly incorrect. The biggest challenge to writing good (I don't know about "effective") assembly language is indeed the complexity of processors and architectures which can greatly magnify the effects of imperfect instruction choices or instruction sequencing. Obviously, some people can code effectively within those constraints, but it's a very much more specialized skill than it used to be.

</comment></comment><comment><USER28> Arrays and pointers are most certainly _not_ the same thing in C. Check yourself here:

        char x[100];
        char* y = malloc(100*sizeof(char));
        printf("Array: %ld\nPointer: %ld\n", sizeof(x), sizeof(y));

</comment><comment><USER29> > In C and C++, there's no such thing as an array

Yes there is. `int a[10]` allocates 10 consecutive `int`s on the stack, and it's the only language construct to express that (with `alloca` but it's a builtin function).

<comment><USER30> The OP wants to point out that C hasn't got first class arrays the same way that Fortran does. The C kind of arrays get passed to and from functions using naked pointers and that makes lots of compiler optimizations more difficult because of aliasing issues while a Fortran compiler knows that two arrays cannot alias (use overlapping memory areas). By adding a "restricted" declaration to your pointer types in function signatures, the compiler assumes no aliasing occurs and goes on with the optimizations. It's the coders' responsibility to make sure no aliasing happens, but if it does, all hell can break loose.

<comment><USER3> Sort of true. In C99, you can:

      void f(int len){
        int array[len];
        printf("sizeof len: %zu\n", sizeof(array));
      }

Yes, I was weirded out when I saw this for the first time. But C does in fact have arrays; they're just not very good arrays.

<comment><USER31> If len is big enough your f() call will crash with a stack overflow.

<comment><USER32> I don't understand why stacks are still so small. On nice operating systems memory is only needed when it's touched, not when it's asked for, so making the stack large doesn't cost anything unless you need a large stack. On 64-bit systems you could make the stack a billion gigabytes and still have 95% of your process' virtual address space available for the heap.

On Windows the stack is one megabyte by default. We live in the future and we're still afraid of recursion without tail-call optimisation and arrays on the stack. Ridiculous.

<comment><USER33> Stacks are small because every thread in the system has to have one, it's that simple.

<comment><USER34> Who said stacks had to be contiguous and allocated ahead of time?

<comment><USER29> How would you manage non-contiguous stacks ? ie, how would you know (upon return) where is the caller's stack frame is ?

<comment><USER30> The stack is only contiguous in the virtual address space. The physical address space is a different beast. The operating system allocates a big chunk of virtual address space for the stack but doesn't allocate the physical memory to fill that. When an app wants to read or write from the unallocated part of the stack, a page fault interrupt is generated and the operating system allocates physical memory frames and assigns them to the virtual memory addresses of the stack. When the thread/process is interrupted for servicing, the operating system checks the value of the stack pointer register (rsp in x86_64) and frees the physical memory corresponding to the virtual addresses above that in the stack.

So having a large stack will only consume virtual address space which we have plenty of (2^48 bytes in most x86_64's) but will not consume physical memory, which is a more limited resource.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER35> I was actually under the impression that Fortran was used simply because the experts (in this case in fluid dynamics) was familiar with Fortran. It was the language they learned and used while back at the university. At least this is the impression I got from working in the field.

I never heard of anyone suggesting we should use Fortfran for performance reasons, instead there was an ongoing movement to evolve the code, moving it to use the OpenFOAM solver that's written in C++.

<comment><USER36> Matrix operations can be faster in FORTRAN than C because of differences in the way arrays are defined/implemented in each language.

<comment><USER37> This is just totally false. You can lay out your C arrays in exactly the same way that Fortran does, if you choose to. Or you can do something else, if that will give better performance. Tools are just tools; they don't determine what you can do with them. (I write matrix operations for a living, generally in C or Assembly; much of what I write is provably as fast as possible on the target hardware, so it could not possibly be faster if written in Fortran).

</comment></comment></comment><comment><USER38> Okay, so there are reasons why C is /difficult/ to make very efficient for numerical computations. Aliasing is not one of them since C99 for a sufficiently knowledgable programmer thanks to the restrict keyword.

The library is the real problem.

code.google.com/p/fridgescript - faster than C in some cases, only because it doesn't use the math library, but uses hardware without indirect calls and without caring for obscure edge cases.

</comment><comment><USER37> I write high-performance numerical software for a living. There are a lot of baseless claims in this post. You can write high performance software in C, C++, Fortran, Assembly, or a whole host of other languages. There are syntactic reasons to prefer one or another, but you should not choose among them for performance reasons.

I choose to write in C and Assembly, for example, and much of the code I write is provably as fast as possible on the targeted architecture. It is literally impossible that it would go faster if I wrote it in Fortran instead. All of these languages are just tools, and if you know your tool, you can do great things with it. The specifics of which tool you choose are often unimportant.

There are some syntactic niceties in fortran which make it more comfortable for people who don't want to think about certain low-level details. However, you cannot write software that runs as fast as possible without considering those details, so a programmer with that goal is forced to think about them no matter what tool he or she chooses.

Fortran _does_ have a (slightly) more relaxed numerics model than standard C, which allows a compiler to make some optimizations that a C or C++ program would need to explicitly license. However, these optimizations are disallowed in standard C and C++ because they are unsafe. The fact that Fortran enables them does not make Fortran a better language for numerical computation (from my perspective as low-level library writer, they make it _worse_ ). Performance without correctness is absolutely meaningless.

Write software in the language that is comfortable for you. Use libraries written by experts for performance critical operations. Use a profiler to identify operations that are hotspots in your code. Don't complain about your (or someone else's) tools.

</comment><comment><USER39> The author's point is well taken, but his example leaves a lot to be desired:

 _If you look at that loop, it can be parallelized or vectorized without any problem if and only if the array pointed to by x and the array pointed to by y are completely distinct with no overlap. But there's no way to write code in C or C++ that guarantees that._

        double* doMath(double** y) {
            double** x = allocateNew2DArray(20000, 20000);
            for (int i=0; i < 20000) {
                for (int j=0; j < 20000) {
                    x[i][j] = y[i-2][j+1] * y[i+1][j-2];
                }
            }
            return x;
        }

All you need to do for this example is replace the fortran coding style doMath(double* x , double* y) with the c coding style doMath(double* y).

I don't think any C compilers actually do parallelize code like this, or at least they don't do much beyond using SIMD. But in principle they could.

<comment><USER40> I think something may have been lost when you typed your code. y is a pointer to double, so can't accept two array subscripts (if it were "double * * y" it could, or you could keep it as a one-dimensional array and use something like y[(i - 2) * 20000 + j + 1]), and i and j don't appear to be incremented anywhere.

<comment><USER39> Thanks, fixed the "double * * y". The i and j not being incremented is actually an error in the original blog post - I'll leave it here for consistency.

<comment><USER40> _The i and j not being incremented is actually an error in the original blog post - I'll leave it here for consistency._

Ah. In that case, I wonder how the author managed to get an infinite loop to complete in 0.8 seconds ;).

</comment></comment></comment></comment><comment><USER41> C does not offer parallelization automatically, but you can pick a model, and a library, that is a good fit for turning your app into a parallel one. In this regard the following slides are interesting: <http://swtch.com/~rsc/talks/threads07/> The model proposed here may not be the right one for your application, so you can design your own (including multiple processes exchanging messages for instance, or the usual threading with locks, and so forth, it's up to you).

This requires efforts but to be honest, there is currently no language that is a good fit for system programming and that is able to parallelize your code magically and automatically. Such a language would give a strong competitive advantage to programmers using it, as C did in the past over other languages, so would become mainstream soon or later, or its ideas would incarnate in some other "better C" language. If this is not happening IMHO there is something wrong in languages that currently are able to do more than C in this regard.

In programming ideas tend to take years to be accepted, but there is a very clear trend over decades: something that is really better (as in code that is faster, or simpler to write (very useful abstraction XYZ), or more easy to debug, or with higher quality libraries, or even much simpler to deploy (PHP I'm looking at you)) eventually becomes mainstream.

</comment><comment><USER42> No mention of representation issues? Memory is a big optimisation target these days, and a weak point of languages like Java and OCaml.

</comment><comment><USER43> The missing meta lessons: don't fall for overly simple characterizations, and don't be a language bigot.

"C is Efficient" is largely true, but it's certainly not always true, and there are problem domains where it's seldom true. If you don't know that this is the case with any language then you're not qualified to be picking an implementation language anyway.

</comment><comment><USER44> What a dolt. It's possible to tell the compiler that two pointers aren't aliases: the "restrict" keyword. Unless I'm mistaken that is really his sole argument against "pointer-based languages".

</comment><comment><USER45> Well argued... until I realized that his argument hinges on C/++ compilers not being able to guarantee non-aliasing. That's why they introduced the `restrict` keyword in C99....

</comment><comment><USER46> Every language has it's pitfalls. There isn't one single greatest language for everything. Within an application domain one needs to consider the tradeoff between machine-time and human development-time and determine what the best tool for the job is.

A 5minute run-time in Python might be acceptable if it takes you 1 hour to write it and are only going to use it once; whereas you may not even know how to program in OCaml even though it offers the best run-time.

</comment><comment><USER47> While a lot of Scientific computing is done in FORTRAN, much of the lower- level `plumbing' is written in assembly, C or C++.

C isn't an efficient language, C is just thin layer on top of assembly. You can write shit code in C, I know that from experience, but you can also write really fast code in C.

<comment><USER30> > C isn't an efficient language, C is just thin layer on top of assembly.

This is a pretty common fallacy. These days a C compiler does so much magic that calling it sugared assembly doesn't describe it accurately.

With a 1970's single pass compiler your argument may have been more true.

<comment><USER3> Yes, but it would be just as easy to write an "assembly compiler" that did the same optimizations on your program text. C provides a layer above the machine that acts as we imagine a machine to work; the compiler adjusts our expectation to reality.

In the end, C has branching and memory access, and that's basically what our computers have too. The rest is details.

<comment><USER48> > Yes, but it would be just as easy to write an "assembly compiler" that did > the same optimizations on your program text.

While there are ways to optimize machine code without extra debug information, no, what you've said is not true. It is not nearly as easy to optimize machine code as it is to optimize C.

</comment></comment></comment></comment><comment><USER49> For me, the blinking and moving ads completely invalidate this site..

<comment><USER50> Because I've read this blog before, I can point you to this:

[http://scienceblogs.com/goodmath/2010/07/seed_conflicts_of_i...](http://scienceblogs.com/goodmath/2010/07/seed_conflicts_of_interest_and.php)

Don't blame the author

<comment><USER51> Given that you might like his new site better.

<http://scientopia.org/blogs/goodmath/></comment></comment></comment>


Ask HN: A coder who knows business or a business man who knows how to code? - <AUTHOR>

I first learned to code before I knew anything about business. Now that I've learned about the lean startup, user habits, and user acquisition, I've learned more about it than coding over the past few months. Do you think it is better to know more business than coding in a startup or vice versa? <comment><USER2> I'm in the same situation you are. In my (albeit limited) experience I've found that coders "get" the business stuff more than business people "get" the code. Maybe coders are better at learning the business stuff, maybe it's something inherent to the nature of code or business…

</comment><comment><USER3> It depends on the type of startup you're trying to do. If it's tech heavy then yes knowing coding may be more important. If it's a light on the tech side, for example something you can slap up in a weekend or month, then I would say the business side is more important.

<comment><USER4> >"If it's a light on the tech side,"

That sounds like the CMS-entrepreneur. Basically, they use tools like Drupal/Joomla/WP to quickly whip up an MVP, focus on the part that really matters (a paying customer) and end up building decent businesses.

</comment></comment><comment><USER5> m0llusk: I'd like to let you know that your account is hellbanned, meaning nobody can see your posts.</comment>


Ask HN: MOOCs taken in 2012, planned for 2013 - <AUTHOR>

2012 shall be hailed as the year of the MOOCs. Just wanted to check what fellow HNers were upto in 2012 and what are their plans for self-education via MOOCs in 2013.
Here's my modest little list:
Done in 2012: 1. Sebastian Thrun's ST101: Introduction to Statistics @ Udacity 2. Martin Odersky's Functional Programming Principles in Scala @Coursera
3. Few Sal Khan's videos on finance and economics @Khan Academy
Enrolled (so far) for 2013 with Coursera: 1. Game Theory (starts on Jan 7th) 2. Financial Engineering and Risk Management (Feb) <comment><USER2> 2011 - first ML course with Professor Andrew Ng @ coursera (octave)

2012 - First Stat 1 Professor Conway @ coursera (R)

2013 -

Computational Methods for Data Analysis @ coursera (R) or Data analysis (R)

NLP @ Coursera (hoping python)

Computer Vision @ Coursera (octave [hopeful for python])

Fundamentals of Personal Financial Planning (I think I'm going to just enroll in it and download the video, I don't think I can keep up with this if I take the other courses)

It's a lot and I might end up taking like 2 courses out of those listed but I can dl the rest and wait for when time free up.</comment>


Has the United States Become Ungovernable? - <AUTHOR> http://www.becker-posner-blog.com/2014/02/has-the-united-states-by-virtue-of-its-size-and-complexity-become-ungovernableposner.html <comment><USER2> The top comment pretty much sums it up:

"I have an idea. Since there is no way a large federal government can govern a nation of 315,000,000 people spread across 3,79,000 square miles, lets devise a system where the federal government is primarily responsible for defense, international trade and affairs, protecting rights, minting currency, and making sure states don't put up trade barriers. In fact, let's explicitly ban the federal government from doing anything else. Let's relegate all other such power to these individual entities called states, each of which will contain far less land, and far less population than the nation as a whole!!!!

Oh wait; I guess that's what the constitution was supposed to do."

The Founders already understood that complex organizations fail and they tried to craft the Constitution to avoid expansion of the federal government. Unfortunately they failed to anticipate the judiciary's quick power grab and the Congress' broad implementation of the Commerce clause.

<comment><USER3> Other causes of expansion of the federal government include economic changes brought about by technology and population growth; and cultural changes due to mass media.

There are definitely problems, but the US is still fairly free and prosperous, despite centuries of geopolitical events and economic / technological disruption that could not have been foreseen in the 18th century when it was written.

The Constitution works.

Because of its proven track record, let's try not to radically re-interpret it, pack it with frivolous amendments, or allow the continued exploitation of loopholes like the commerce clause.

</comment></comment><comment><USER4> "The most glaring deficiency is the limited authority of the President and the absence of an official corresponding to the Chief Operating Officer of a private corporation. ... The President should also be authorized to control the finances of the states, alter their boundaries, appoint their principal officials, and veto their laws."

Brilliant. What could _possibly_ go wrong with a stronger Executive Branch?

<comment><USER5> He's just theorizing on how he'd make the government more efficient, not that he'd actually want that (the Nazis were also pretty efficient).

</comment></comment><comment><USER6> Thank goodness we _don 't_ have a COO and a corporate structure. Corporations have specific and absolute missions, usually starting with making a profit for the shareholders.

However, countries generally don't have such specific missions but instead strive to provide an environment for their citizens to pursue their own goals, usually prosperity and health and happiness but not necessarily dictated by the state.

We usually don't think of corporate C-level leadership as being there to referee among many competing and disparate elements in the corporation. They are there to set direction, give orders, and generally keep the corporate body on track and working together toward a common goal.

In wartime, countries like the U.S. have come close to that type of effort, but otherwise it's every man and woman for themselves, free to set their own goals.

So, yes, the U.S. is by its nature ungovernable. It's remarkable that it has as much functional government as it does.</comment>


Ask HN: I'm interested in blockchain but put off by the hype. What should I do? - <AUTHOR> I have been dabbling with blockchain for a while, I see it's potential and would like to focus on it sincerely, but I'm  put off by the hype it surrounds. I feel I'm just following everyone else and soon I'll be too late as blockchain will enter the "trough of disillusionment" (Gartner hype cycle). Chasing hype makes me nervous so that a part of me tells me to focus better on something quieter, less "sexy". But I'm interested in the technology!
A broader question is: what to do if you are interested in a hyped technology?
Sorry in case this question doesn't make much sense, but do you feel the same? <comment><USER2> I believe Hinton was on the wrong end of the hype-cycle for the greater part of his career. Now he's an international celebrity. Persistence!

</comment><comment><USER3> The intelligent investor has to find the real value. What problem is blockchain solving for X industry and how strong is the proof?</comment>


Ask HN: Have You Written a Book? - <AUTHOR>

HNers frequently contribute to lists of the best books for this or that.  Which got me to wondering what have you published that would be of interest to the rest of us.  Product documentation or user's manuals dont count, because even I have done that.  Technical works are of most interest, but I'll take good SF.  And if you financed  your first start-up by writing bodice-rippers, that has to be of some interest. <comment><USER2> A gay novel about the bear subculture - probably not of interest to the majority of you, but there you are. :) <http://www.bearlikeme.com>

</comment><comment><USER3> I wrote a book, it might be of slight interest to the HN crowd. It's non- fiction. I wrote it for fun and I've sold over 60! copies of it. I self- published on Lulu.com and was shocked when Apple picked it up earlier this year and put it in the iBook store! It's "Outsourcing and using a Virtual Assistant for Fun and Profit" and it's avaialble in the iBook store, or on lulu.com: [http://www.lulu.com/product/ebook/outsourcing-and-using-a- vi...](http://www.lulu.com/product/ebook/outsourcing-and-using-a-virtual- assistant-for-fun-and-profit/17418675)

</comment><comment><USER4> Have never written a whole book but back in the day I contributed a number of chapters to various Wrox books on ADO.NET. Glad I did it but the Wrox editorial process was a bit of a shambles and it showed up in many of their books at the time.

If nothing else it means I can refer back to Amazon every now and then to remember what I looked like with hair. [http://www.amazon.com/ADO-NET- Programmers-Reference-Adil-Reh...](http://www.amazon.com/ADO-NET-Programmers- Reference-Adil-Rehan/dp/B0000B0SYL/ref=sr_1_3?ie=UTF8&qid=1319399449&sr=8-3)

</comment><comment><USER5> I published one of my thesis as a book. Always tried to get into writing a mainstream book, but working against a self set deadline with all the "other" distractions in life is tough.

What I can recommend you is taking a look at "Steve Manning How To Write A Book On Anything In 14 Days or less". Even so the title sounds very scammy and marketing'ish it provides really a solid advice for non-fiction books and gives a very structured approach. You can find of cause copies of it in various online "repositories".</comment>


Beautifully Hand Drawn Video Game like Machinarium for Linux, iOS, Mac & PC - <AUTHOR> http://www.kickstarter.com/projects/1657341933/circus-of-light We're a group of enthusiastic creative coder, illustrator and an interaction designer that just launched this beautiful hand-drawn video game project on Kickstarter and are looking for your help. <comment><USER2> Hope they get enough pledges</comment>


Announcing Price Reduction for Plivo Voice and SMS API in USA and Canada - <AUTHOR> https://plivo.com/blog/announcing-price-reduction-for-plivo-services-in-usa-and-canada/

<comment><USER2> How are you able to get it so cheap?

<comment><AUTHOR> @sashaeslami We started Plivo with a simple vision of helping businesses move to the cloud, use simple APIs for building Apps and not having to pay markups from telecom carriers. Our focus has always been to solve the Infrastructure problem.

This is the primary reason we want to allow our customers to have access to the best pricing possible (without crazy markups).

In some cases we may not be able to offer the best price, and hence we have Bring Your Own Carrier Model [1]

[1] - [http://plivo.com/byoc/](http://plivo.com/byoc/)</comment></comment>


Live coding using Fluxus, a 3D Game Engine in Racket (2010) - <AUTHOR> <comment><USER2> Probable link: [http://www.pawfal.org/fluxus/](http://www.pawfal.org/fluxus/)</comment>


A YC Clone in India - <AUTHOR> http://www.ciieindia.org/?page_id=93

<comment><USER6> > We don't want you to go to your accommodation before 12 midnight - so we > provide you mattresses near your workspace for resting. There's anyways a > security guard outside your work-area - so you don't get to leave the office > before 12 midnight and you don't get to sleep in the office. Attendance > happens at 9:30 am every morning. Sundays are off if you have met your > weekly goals!

Uh... nice try but no cigar, guys.

<comment><USER7> Wow. If I want that kind of treatment, I'll keep my current day job in IT.

Seriously, would this sort of arrangement be acceptable for most people in India? I don't think anyone could put up with that, but for so long.

<comment><USER8> (I am from India.) No, I think that's just bizarre.

As a people, we aren't as much averse to structure as US people are, but this is taking things a bit too far. And I honestly hope that these people are only kidding when they talk about all these "we will watch you" kind of things.

<comment><USER9> I think the problem is that we are notorious for slacking off!

</comment></comment></comment></comment><comment><USER10> Apologies for having done a bad cloning. I represent CIIE - group which is doing the iAccelerator. We definitely can't match what YC has done. We are still open to ideas and would love to get your advise and restructure the program.

However, we would like you guys to understand the Indian innovation scenario before any suggestions. In a space where there is limited innovation happening, very few university start-ups happening, very few "IT-expert students" creating anything world-class or anywhere closer (other than doing some outsourced software services) - we feel this is a step to try something new to push people into starting-up an innovative company.

Our aim is to change the statistics of number of kids starting up out of college. And believe us, if we can't make a huge difference and end up creating 3 start-ups out of this process - we would have succeeded.

For those who understand this space better, we would love to have your feedbacks and how we can use this model better.

Apologies PG and YC fans (believe me I am one of them), we are just trying to bring some disruption in our innovation system. Look forward to your inputs.

Best, Kunal

<comment><USER11> The main criticism was that you enforce draconian working standards. In YC, people work hard because they want to. You say you have a guard to prevent people from leaving. It sounds bizarre.

<comment><USER10> Yes, I understand. We were actually kidding. But I guess the message wasn't put across in the right manner. Have changed the text anyways.

I thought people would understand that we can't be so cruel and must have been kidding. Apologies for the assumption. Yes, we do provide people mattress next to their workplace - give them the luxury of resting as and when they want. We are trying to be as friendly as possible. Thanks for your feedback. It's not gonna be a jail believe me.

<comment><USER12> "I guess the message wasn't put across in the right manner. Have changed the text anyways."

As of one minute ago the "changed" text reads,

"We don't want you to go to your accommodation before 12 midnight - so we provide you mattresses near your workspace for resting (well, we've got limited resources - can't provide you AC accommodation - so thats the least we can do to ensure that you beat the summers in Ahmedabad). There's anyways a security guard outside your work-area - so you don't get to leave the office before 12 midnight and you don't get to sleep in the office. Attendance happens at 9:30 am every morning. Sundays are off if you have met your weekly goals! (we got to be kidding on this!!)

End results are more important to us !! "

we don't want you to leave before midnight - <USER5>

you don't get to sleep in the office - <USER5>

attendance happens at 09.30 - <USER5>

Sundays are off if you have met your weekly goals - <USER5>

Is the "(we got to be kidding on this!!)" supposed to indicate that all the above is just you guys trying to be funny?

Just a suggestion from one of the much despised Indian "hackers" who can't think of a business plan without the IIM-A grads chipping in ;-).

When you are writing about how your process works, just say what you mean. Don't try to be funny. Writing humour calls for exceptional skill in writing. All this description manages to do is make you sound like lunatics. (Note : I said "sound like". I don't say that you ARE crazy).

Just say " we'll pay each founder 200 $ (or 8000 rupees) per month and give you non AC accomodation and an office with PC s and internet connectivity".

See? It's that easy.

And your whole "YC clone" theme is a bit of a non starter. YC works because as someone pointed out earlier on this blog, It is promoted by PG (and others) who "walked the talk". One of the reasons YC can't be cloned easily is that unless you have people of roughly equal caliber backing it up it makes no sense. People don't join YC's program for the money.

A mental experiment.

Think of what YC would sound like if it was promoted by a bunch of people with no credentials in either business or programming. Err... we are MBA _students_ and we'll pay you 200 $ a month and make you go through hell (at the least you have to listen to our "humour" ;-) ) and give you ... ummm ... an internet connection. In return you will work your hearts out and try to create a killer startup.

Yeah that makes sense ;-)

Anyone who can hack can get (with ZERO experience) a 1500 $ / month job in Bangalore with no trouble at all. A couple of month's savings will give them more money than you guys can (and they can work whenever they feel like, with no security guards ;-) ). So what exactly is your value add? Pairing with an mba student?

This is not to discourage you from attempting to "incubate innovativeness" . Your deal just doesn't make any sense. But don't let me stop you. If you can get a world class product out of the door in three months with this deal structure , more power to you. We'll wait 90 days and see. (won't we? ;-) ).

Finally,

"give them the luxury of resting as and when they want"

resting when you are tired is not a "luxury" which you "give". It is a basic human right.

<comment><USER13> Read some of your posts Mr. ABCD. When was the last that you visited India? Ever tried starting up here? You aren't probably the best person to comment.

You seem to be a good for nothing migrant who can't appreciate a novel attempt to promote startups in India. More so, you must be one of those guys who couldn't make it to Google, couldn't make it to IIMs and now massages your ego criticizing everything good that happens in your motherland. Ridiculous !!

We are a bunch of IIT CS grads all set to apply to this program at IIMA and take our ideas to fruition. Look forward to more of your criticism anyways. That's what you are good at?.

<comment><USER14> Hey,

would you please take your sophomoric personal attacks elsewhere. Good luck with the IIMA program.

</comment></comment></comment></comment></comment></comment><comment><USER12> (I am Indian and I have friends in the IIMs).

Scarily enough these guys are _serious_. They think they are actually doing something "cool". The whole idea seems to be that "real hackers" (note the quotes) would feel "challenged" by such an environment and buy into it. After all why else would they want to attend a google interview? (ignoring the fact that Google India is no where near as cool - in terms of work done or quality of people hired - as Google California).

In short this is just managers living in their own fantasy world. No real hacker would take these guys seriously.

<comment><USER13> Read some of your posts. You seem to be a good for nothing migrant who can't appreciate a novel attempt to promote startups in India. More so, you must be one of those guys who couldn't make it to Google, couldn't make it to IIMs and now massages your ego criticizing everything good that happens in your motherland. Ridiculous !!

We are a bunch of IIT CS grads all set to apply to this program at IIMA and take our ideas to fruition. Look forward to your more of your criticism once we are successful.

<comment><USER15> control dude...lets not make it personal...plinkplonk does have a point but he cannot understand our requirements...it seems iima does....see you at iima hopefully...:)

</comment></comment></comment><comment><USER16> What are these people. 8K rupees a month = $200. Security guard - are you kidding me ?

the culture in india is risk averse. i grew up there, went to undergrad there and then come to an engineering school here. i had no trouble getting job offers, but declined them so I can do a startup, and my mom still feels so insecure that she asks me to take up a job with microsoft every time i talk to her.

<comment><USER9> Why do you hate MSFT? It makes sense to pursue your dream! What does that have to do with taking a job at MSFT vs any other company?

<comment><USER16> microsoft represents the old guard, the place where nobody gets fired and no superstar survives; the 'mediocre'.

it represents security, 'the known'

<comment><USER17> i guess that is how it is. a lot of people trade the joy of work for job security.

<comment><USER9> I think it is the company as a whole and the benefits that they provide make ppl very comfortable with where they are. Plus, a lot of them don't won't to take chances like us!

</comment></comment></comment></comment></comment><comment><USER18> Although they want to be a YC clone, it seems they haven't read their PG to understand the point of YC.

"We provide RescueTime (www.rescuetime.com) and 8aweek (www.8aweek.com) on your systems to keep an eye on what you are doing."

"We provide each one of you (individually) with a stipend of Rs 8k p.m."

"Microsoft would be the Technology and Mentorship Partners for the iAccelerator Program."

<comment><USER9> Seriously, I hope they are kidding with the rescuetime thing! Have they given birth to a new form of slavery??

<comment><USER10> Including Rescuetime and 8aweek in our content for promotion of the program was our attempt to highlight successful YC innovations. Believe me in India very few people (including VCs) know about YC - we'd hope more people get to know about YC. Not the clones, but the original YC.

<comment><USER12> "Including Rescuetime and 8aweek in our content for promotion of the program was our attempt to highlight successful YC innovations" - (A)

Hmm. The original sentence was

"We provide RescueTime (www.rescuetime.com) and 8aweek (www.8aweek.com) on your systems to keep an eye on what you are doing." (B)

How are the applicants supposed to infer A from B ? Is this another attempt at "humor on the internet"?

<comment><USER13> Proves my point. Failed to crack CAT uh? Trying another attempt at inference problems - alas! For someone who doesn't know what rescuetime is - he would have Googled and figured out that its a product from YC. I didn't know about YC till I came across this program in India.

</comment></comment></comment></comment></comment><comment><USER19> Wow, the first YC clone to actually admit they're one. An encouraging sign of honesty; I voted them up.

<comment><USER20> Since they actually name yc, it is my opinion that you should write a post about how their adaptation of it is (horribly) wrong. In addition to everything that is morally wrong with their rules, they make little business sense. If you don't trust the founders to manage their own time how can you trust them to be major share-holders and leaders of the company you are investing in?

<comment><USER19> Oops, didn't mean to seem to be endorsing them. In fact I haven't read the site.

</comment></comment></comment><comment><USER21> I think the most important couple of things a YC Clone needs is strong mentorship from someone who's been there, done that and a strong hacker community. Both of which seem to be missing at a cursory glance, and from the way they have worded it, seems like a prison of sorts :-)

<comment><USER22> MBA schools in India seem to be taking a lead in incubation.

Of course, you are not likely to find hackers, mentors (in a startup sense), or entrepreneurs there.

<comment><USER15> yes for sure....a lot of techies do end up doing their MBAs but rarely follow the tech-path post that...interestingly thou i've been reading about iim grads doing tech start-ups (not to mention the biggest successes of indian web 1.0 ventures - rediff, naukri n makemytrip were iim grad ventures and not iitians)....incubation is beginning to happen in India even at engineering colleges...i am from an NIT (comparable to some of the better IITs) and they've taken a leaf from IIMs to implement the placement holiday...i dont have to take the risk of not finding a good job in case my start-up fails...my college lets me sit in the placements over next 3 years

</comment></comment></comment><comment><USER23> Attendance at 9:30am? LOL.

I love my birth country but some things we just gotta learn, like trusting entrepreneurs to work when they like(DOH).

<comment><USER9> I agree! Seems more like a scout camp :D ... sundays off if you are on schedule?? It's a startup....you're never done!

</comment></comment><comment><USER20> For a second I was afraid (and happy) that they beat me to this. Then I looked at the details. Its a scary hybrid of archaic school rules and a lack of repsect for latent business abilities of hackers with the yc concept.

I hope someone beats me to it because my plan is to first start a startup, learn how to do it right, make money to invest and THEN instantiate an object of a subclass of yc.

<comment><USER8> Right on! You've got some competitors :)

</comment></comment><comment><USER24> RescueTime/8aweek why? Let founders manage what they want to do.

Am I applying to bschool or job; just checkout the application form.

project plan;milestones,timelines: Are we getting MS Project and free Manager there?

I would teach something to security guard and let him do some interestring work rather than keeping watch on us.

I hope it turns out well. I wish PG starts YC India chapter.

<comment><USER15> who is pg?....will be gud to have a yc in india

<comment><USER22> <http://en.wikipedia.org/wiki/Paul_Graham>

</comment></comment></comment><comment><USER25> "What better than Microsoft, for valuable insights on IT to our enthusiastic Participants"

...

<comment><USER9> Must be April fools?

</comment></comment><comment><USER26> It is foolish to make any very general statements about "India" (just as it would be to make very general statements about "America"). Too large an entity to make generalizations.

</comment><comment><USER27> No doubt that YC is a great idea, I don't think it is in anyway an 'internship' or 'sabbatical' . Am I missing something here?

<comment><USER13> Hmmm, maybe. But it does provide we students a similar platform for launching our innovative ideas into the market.

</comment></comment><comment><USER28> i'm extremely delighted to know this ... BRAVO !

Now i'm waiting for waiting for a clone in Canada ...

</comment><comment><USER9> _puke_

<comment><USER9> Oh come on...enough with the negative points :( ... I just hate the idea of third grade programs! YC is one of a kind and it should stay that way!!

<comment><AUTHOR> Yeah, you shouldn't be able to downmod below -1. That's enough to send the signal. Otherwise people will just keep downmodding and go in for the kill.

I heartily disagree about you wanting YC to stay one of a kind though. The beauty of our capitalist society is that if anyone wants to try to do it better, they can give it a shot. It's to YC's credit that so many people want to copy it. And I think they welcome that.</comment></comment></comment>


Looking for a Co-founder – H1 2017 - <AUTHOR> This is an experiment that I hope will catch on. Biannual (first weekday of Jan and July). Equity offered should be 20% or more; since this isn't about hiring.<p>Use the following format:<p>- Project Name<p>- Project Description<p>- Equity offered to co-founder (%)<p>- Time spent to date (Person-days)<p>- Estimated effort required to reach alpha (Person-days)<p>- Links to the project if any<p>- Technology, Frameworks, Skills etc: (eg: "DevOps, Docker, Go" or "Sales")<p>- Email address (obfuscate as necessary)<p>- Looking for Funding? How much? (optional) <comment><USER2> Why don't we have similar threads for open source projects (say single-author projects on GitHub) where the single author is looking for project partners or project contributors to share the responsibility?

</comment><comment><USER3> Project Name: Traquer

Project Description: Enables end-to-end testing automation for web applications

Equity offered to co-founder (%): 20%

Time spent to date (Person-days): so far ~100 days

Estimated effort required to reach alpha (Person-days): ~100 days

Links to the project if any: \- Code home: [https://github.com/nenadg/traquer](https://github.com/nenadg/traquer) \- example app: [http://statick.org:3008/examples/admin- dashboard/#dashboard](http://statick.org:3008/examples/admin- dashboard/#dashboard) \- introductory note: [http://lessgeneric.com/testing/traquer-testing-made- easy/](http://lessgeneric.com/testing/traquer-testing-made-easy/)

Technology, Frameworks, Skills etc: Node, Selenium, Jasmine or whatever-is- current-hype framework

Email address (obfuscate as necessary): in profile

Looking for Funding? How much?: Open for funding

</comment><comment><AUTHOR> Project: Isotropy (Isotropy.org)

Desc: Isotropy is an Open Source framework (tranpilers mostly) that enables developers to write backend functionality (such as database querying) using native JavaScript constructs.

      //This db agnostic code
      db.customers = [];
      db.customers = db.customers.concat(customer);

      //Transpiles into an insert
      await collection("customers").insert(customer);

We have a full specification for all DB, FileSystem and HTTP/RPC APIs that map to native JS objects like Arrays and Objects.

Finally the idea is to enable full app development inside Browser DevTools, with a button that transpiles and deploys to a server.

Equity offered: 25%

Time spent: 200 days

Effort to Alpha: 30 days

Links: [https://github.com/isotropy/simple- todos](https://github.com/isotropy/simple-todos)

Technology: Node.JS, Babel Plugins

Email: In profile

Looking for Funding: Not now

<comment><USER2> I am curious. Is this project going to be making money in future? If not, what does 25% equity mean?

</comment></comment><comment><USER4> I'd add: what kind of cofounder

</comment><comment><USER5> 12 lawyers upvoted this thread. More like who wants a lawsuit.

</comment><comment><USER6> Hi I'm interested. You can reach me at email@example.com

</comment><comment><USER7> any idea how someone would go about this when writing a description is near impossible without giving everyone the ability to walk away with the idea themselves?

<comment><USER8> I can assure you that if your idea is any good you would have to force it down peoples throat to get them to steal it.

Unless you post the instructions for a cure for cancer or infinite energy most ideas are born out of your personal experience and is something you see that no one else sees.

Otherwise someone else already have the idea and you are really competing on who will be the best on to build the business.

So decrypt your powerpoint and start sharing your ideas. Thats the best way to get to the next stage.</comment></comment>


David Cameron: new online data laws needed - <AUTHOR> http://bbc.co.uk/news/uk-politics-30778424

<comment><AUTHOR> There should be no "means of communication" which "we cannot read", he said.

Is he really so naiive to think he can stop people from using secure encryption on the internet?</comment>


Suggest HN: Second chance for submissions (delete) - <AUTHOR>

So I submitted this today http://samy.pl/pwnat/ and it didn't get a single vote while inane submissions (IMHO) got to the front page. After a while I deleted the submission and that allowed somebody else to repost it (http://news.ycombinator.com/item?id=1224905) I bet because of my other submission to Reddit got noticed.<p>HN front page rules aren't good if we need to resort to this trickery to have a second chance out of the noise of /newest. Meanwhile, perhaps this can help others. <comment><USER2> I agree that this is quite annoying. I can't count the number of times that I found a truly awesome article that I hadn't read before, I submitted it, and found that it was submitted 3 days ago but had a single upvote (probably a day later).

Here I take a fundamentally different attitude to jacquesm. Please, if you submit a truly awesome article, the kind you _know_ everyone will love, please, _TELL SOMEONE ABOUT IT_. Otherwise, unless it comes from an already popular news source that will get multiple submits, it will probably sink into forgetfulness.

One place to tell people about it is, as has oft been mentioned, the #startups channel on Freenode. Another place would probably be on Twitter. Here's a pledge: if you @swombat me a really awesome submission and I happen to see it in time, I will upvote it (if it's not worthy of an upvote, I will try to tell you why in 140 characters).

<comment><USER3> It seems that once something scrolls off the first page or two of 'new', or sits too long at a low count, there's no chance of it catching a flurry of new votes -- and even if it did, I don't think the rating function considers momentum enough for it to reach the front page.

(That is: if a 3-day-old article that was initially overlooked gets 4 votes today in rapid succession, while a brand-new article gets 3 votes today in the same period, the older article is still punished by averaging its new votes over the days when it wasn't even really being reviewed. At least that's how it seems to work.)

There needs to be a better way for items to get a second wind when the right readers show up.

A possibility would be to replace 'new' with 'newly worth a look'. Essentially, this would be the combination of new items (which have an implicit upvote from their submitter) mixed with older items that just got a fresh upvote, minus items that are already on the front page. That is, every upvote would bump an item back to the top 'worth a look', even if not to the 'top' rankings, so it has a chance again of a self-reinforcing rise.

Probably, once a user has upvoted or 'passed' (hypothetical new option) on an item, it would no longer appear in 'newly worth a look'.

</comment></comment><comment><USER4> I don't think the system needs changing - sometimes submissions just get unlucky and/or have a bad title. Just try again a while later, or hope someone else does. Nothing wrong with that as long as you aren't spamming the post (imo).

My highest voted submission of recent times was an article I thought was great, that someone else had submitted a few days earlier, which hadn't got any upvotes. So I made the title more appealing and tweaked the url, hey presto 100+ upvotes. The system works! (well enough)

</comment><comment><USER5> Could also have been a better title. What title did you use? The repost improved on original page title in a small but useful way. There is a lot of value generated by a good title.

<comment><USER6> I took the guidelines on titles to imply that if they were adequate then leave them alone. Perhaps I'm misreading them. <http://ycombinator.com/newsguidelines.html>

</comment></comment><comment><USER7> just have a bunch of friends vote your stuff up....that's what most people do. Otherwise it's really a crap shoot on whether or not you'll make it to the front page, unless you are submitting something that other people would try to submit(i.e. techcrunch articles)

<comment><USER8> This kind of defeats the point of any of these peer driven vote sites if you can get your friends to vote stuff up (cos you asked, not on merit).

Yes, yes, yes I know that is EXACTLY how it end up working on HN, Digg, Reddit and everywhere else. I'm just a crusty old purist.

<comment><USER9> As a purist of a different kind, I see it as more of a fundamental problem in the way HN/Digg/Reddit/etc. voting works, in that it's heavily sensitive to voting in the initial period, which is often pretty random, and then stuff that happens to get a few upvotes in that early period tends to snowball due to the feedback loop of being on the front page -> more people see it -> more people upvote.

Apart from its slower speed (too few stories per day), I actually see the Slashdot model, warts at all, as somewhat superior; or the Kuro5hin model as a vote-driven alternative. How's that for crusty purism. ;-)

I try to personally insulate myself from the fundamental brokenness by not using the HN front page, and only looking at the /newest page.</comment></comment></comment>


AMD "Ryzen C7" Smartphone SoC Specifications Listed - <AUTHOR> https://www.techpowerup.com/267935/amd-ryzen-c7-smartphone-soc-specifications-listed <comment><USER2> Why ARM's SOCs use multiple types of cores? I can understand low power ones for power saving, but three types?...

<comment><USER3> Power Budget, Transistor Budget.

But in reality Cortex X-1 ( by default excluding custom changes ) is pretty much the same as Cortex - A78 but increase both internal and external bandwidth and cache along with double NEON unit. While the low performance is a completely different design.

I still dont know how these thing schedule their workload.

</comment></comment><comment><USER4> Is this AMD entering the ARM market again or Samsung using their Ryzen branding?

<comment><USER5> Samsung and AMD are collaborating and coming up with a SoC with ARM Cortex X1, A78 and A55 based CPU and AMD is providing the GPU.

</comment></comment><comment><USER6> This looks pretty fake, although a future Exynos may have similar specs.

<comment><USER7> On other hand, it sounds way more real than previous rumours of AMD slapping ARM frontend onto Zen

<comment><USER6> That wasn't a rumor; that was AMD's official public roadmap. [https://www.anandtech.com/show/7990/amd- announces-k12-core-c...](https://www.anandtech.com/show/7990/amd- announces-k12-core-custom-64bit-arm-design-in-2016)

</comment></comment></comment><comment><USER8> > Manufactured on TSMC 5 nm process

Seems weird that Samsung would use a competitor's fab to manufacture their own SoC

<comment><USER3> If you consider when their collaboration were announced and product _shipping_ within ~18 months it seems the only choice would be to use TSMC instead of their own Fab, given both ARM and AMD has many experience with TSMC and the Cortex-X1 design likely have blueprint ready on TSMC.</comment></comment>


The day I reached the 1600 columns limit in PostgreSQL - <AUTHOR> https://rosenfeld.herokuapp.com/en/articles/programming/2017-09-26-the-day-i-reached-the-1600-columns-limit-in-postgresql <comment><AUTHOR> TLDR: PostgreSQL doesn't reclaim space when dropping a column. If you use some script that will add temporary columns and run it many times at some point it will reach the 1600 max columns per table limit.</comment>


Ask HN: What happened to the Williams Xjet and why no modern equivalent? - <AUTHOR> Most folks have neither seen or heard of the Williams Aerial Systems Platform (WASP Xjet), a functional VTOL aircraft abandoned by the US military in the 1980s, purportedly due to lack of practical application. Videos of the vehicle in operation are fascinating, arguably exhibiting a concept at least as appealing as the Wingsuit or Gyroplane - both of which have vigorous followings and aren't cheap to own and operate. Perhaps its role in warfare is impractical, but the Xjet would very practically tempt my hypothetical wallet if it were available. Why has such a neat design fallen into obscurity rather than public domain and recreation?<p>https://en.wikipedia.org/wiki/Williams_X-Jet <comment><USER2> For the same reason all of the other 50s, 60s and 70s flying platform/personal VTOL vehicles did. They're expensive, relatively hard to fly, have low endurance/range and not enough payload to be useful. Those F107s are much more cost effective cruising one-way at tree-top with a few hundred pounds (or KT) of boom for their recipient.

<comment><AUTHOR> > They're expensive, relatively hard to fly, have low endurance/range and not > enough payload to be useful.

Both the Wingsuit and gyroplane suffer these attributes too, yet there are many enthusiasts actively engaged in them.

Note the potential altitude of the Xjet (1970-80s version) is 10,000' and the operation-time is near 45 minutes - not trivial! The usefulness of the gyroplane isn't terribly extensive, and the Wingsuit less. Affordability seems a valid point of discouragement, but with modern availability of material, manufacturing, etc., maybe not. Sidenote: A former room-mate was building a gyroplane in our living room.

<comment><USER2> I don't believe the 10,000' ceiling number. There's no attribution on the Wikipedia page for it, directly or in references. The duration number is a range but at least the lower 30 min bound seems independently validated by other mentions of the X-Jet's predecessor.

<comment><AUTHOR> First, a possibly interesting article: [https://partners.nytimes.com/library/magazine/home/20000611m...](https://partners.nytimes.com/library/magazine/home/20000611mag- phenomenon.html)

Another article by The Guardian, states that the unabridged explanation for discontinuing the Xjet remains classified; but as you intimate, citations seem on walkabout. I combed some patents for refs on the ceiling-limit and found nothing, to my surprise. I also visited (virtually) both the National Museum of the US Air Force, and Museum of Flight, but curiously couldn't find any results for "X-jet", "Xjet", or "X jet" nor other related keywords. NoScript? Your replies are appreciated, but I remain sincerely perplexed by the persistent obscurity of this fantastic machine. More particularly perplexing is the present year, 2016, where despite solid evidence of a bona fide, functional dream-machine from the 80s offering ballistic capabilities that most humans still futilely fantasize about, we have no tangible modern counterpart to. Even if the X-jet could scarcely tower a hunched inch above the treeline as you mention, it's an inch more free and exhilarating than the best scripted and predictable tangent of any popular rollercoaster. So, respectfully, my question endures.

PS: I am no adversary of sausages and am wondering if pinewurst is a genuine product. I immediately think of rosemary, which is a necessary spice in many recipes.

<comment><USER2> I think the answer is that both don't have websites designed for people doing research beyond "what's the cafe menu?" I've been physically to both museums and the USAF museum is truly breathtaking. The Museum of Flight is far less so.

I think civilian flying platforms, without some sort of modern fail-safe stability augmentation, would be a regulatory and liability nightmare. Plus the costs would be crazy, if not to buy and operate, to maintain. Zero-timing a jet engine is not a small expense and it's continual.

P.S. My nom-de-HN is a tribute to a defunct project's code name. It was a sausage with a thin skin of delusion well stuffed with bad judgment and strongly seasoned with incompetence. Not to my taste at all.

P.P.S. There seems to be a lot more info under "WASP" than "X-jet".</comment></comment></comment></comment></comment>