"White diaspora" is blowing my mind a bit. I think I would have been slapped by my social studies teachers if I ever used that phrase to describe colonialism. (I'm white, US)
HN user
chancho
Careful, that pseudocode has a famous error in it. Finding it is an illuminating exercise.
JavaScript for Node? Isn't that a bit like saying "Java for Minecraft"? I can think of at least one popular use of JavaScrip that predates Node.
Boost.Intrusive does this, without the casting or offsetof'ing.
http://www.boost.org/doc/libs/1_47_0/doc/html/intrusive.html
Not that most of what you said isn't true. Just picking the nit that 'the container owns the data' holds only for the STL, not C++ in general.
You have a strange definition of "excel".
Totally agree, but I just have to pick one nit on your final point re GHC and unpacking: If you do this you forfeit all generic programming because a 'lifted' polymorphic type has to be represented by pointer to a heap object. This is where C++'s unique take on generic programming still wins big.
Have you looked at the Haskell Ix class? http://www.haskell.org/onlinereport/ix.html
It generalizes the choice of 0 or 1 to an arbitrary starting index. So when you create an array you specify not just where it ends but also where it begins. This lets you do neat things (consider a filter kernel with range [-s,+s]^n instead of [1,2s]^n) and the extra complexity it adds can be hidden when not needed using for-statements or higher order functions.
Nobody uses it because the implementation is not very efficient and Haskellers have a chip on their shoulder about performance. It subtracts the origin and computes strides on every index, but you could easily avoid this by storing the subtracted base pointer and strides with the array. Of course when you go to implement it you'll see light on 0-based indexing :)
Why is there not a service that tracks news stories and algorithmically relates them into the narrative of history, driven by the singular question of "why?"? Something in between google news and quora/stack exchange (anonymized to avoid embarrassment of dumb questions like "what are Israel and Palestine fighting over anyway?" but with a points/voting system to propagate quality answers.) Whoever makes this, please Tell HN so I can sign up for your beta.
I think a better analogy would be a farmer tending to his crops. Google users are not the customers, they're the product.
C++ template's aren't just unusual, they're unique among mainstream languages. They're C++'s secret weapon. These days, if you're not making heavy use of templates in your C++ code then you're using the wrong language. Like you said, many people use C++ to solve problems they could be solving more quickly and more safely with another language, but it's not C++'s fault, it's their fault.
In particular, the key feature of C++ templates (as opposed to other similar systems of polymorphism) is that they abstract over not just code but data representation. This is what CJefferson was getting at and it's orthogonal to macros. Ocaml and Scala don't offer it. It's about data, not code, so you'll never be able to gloss over it with extra parallelism.
In C++ a std::pair<double,double> really is just two doubles, 16 bytes. It can be passed into and returned from functions in registers. If I have a singly-linked list of them, each list cell is 24 bytes (16 for the pair, 8 for the next pointer.) In any other (mainstream) language, the pair is really a pair of pointers to boxed doubles which reside in the heap, and the list cell holds a pointer to that. The overhead of this is unacceptable in many situations, and these situations are where C++ still thrives. (cf. the Eigen linear algebra library for an example of "doing it right.")
Most languages have given up on this feature because of the drawbacks (code bloat) and the unified runtime representation of data (basically everything is a void*) makes many things easier (garbage collection, serialization, etc.) (I'm not super familiar with C# but I understand the struct types address this somewhat, but not without their own drawbacks.) But thanks to LLVM (written in C++ btw) people are pushing this area of language development forward (Rust, Deca, and others) in an attempt to fix the (many) problems of C++ while preserving its strengths.
Oh and BTW: A tank with wings is called an A-10 warthog :)
The more targeted the advertising, the more effective and therefore valuable it is.
But it's still hard to know what people want or need to buy right now
They can (and do) personalize it somewhat, but just aren't as well-placed as facebook, because they aren't as close to the user (people). People are ultimately where the money comes from. That's how advertisers get it.
So who's information is more valuable? Facebook's because they know more about you overall (your friends, your habits etc.) or Google's because they know what you want right now (because you just entered it right fucking there in the search box)
I'm leaning toward Google. If someone has a problem, they go to Google to search for ways to solve it, and as you point out, that's precisely when they're most amenable to advertising. People go to Facebook to connect with other people. Advertising will always be noise there. (Stupid mindless games notwithstanding.)
"Some of the best ideas may initially look like they're serving the movie and TV industries. Microsoft seemed like a technology supplier to IBM before eating their lunch, and Google did the same thing to Yahoo."
If the good costs more to make than the buyer is willing to pay then there is no price because there is no sale, so clearly price depends on cost. Functions can have more than one input.
I just about spat my coffee out when I saw that nio bytebuffers used 32 bit ints for everything. (I'm not normally a java guy.) I thought "oh hey a direct byte buffer will be a great way to keep all this data from blowing up the heap AW WTF!!?? ints?!?"
Does anyone know the rationale for this? If they had used 64 bit long values, like the underlying OS calls, his whole matrix could have been mapped into a single buffer, making all this list-of-mappings stuff unnecessary. That extra level of indirection normally wouldn't matter much but in this case he's paying the cost 1e12 times over.
What a treasure trove of open source project / startup names. Gobo, Boober, Mokey, Doozer, Gorg. One of them already ends in ly, Wembly.
The presence of "octonions" in the boost library kept me from seriously considering it for like 2 years. I understand the rationale--that by making it monolithic they're getting more libraries installed on more developer's machines--but come on. If I need threads, filesystem, date_time, foreach, etc. don't make me install wave, spirit, proto, phoenix, fusion, fucking octonions.
Because Google has a monopoly on non-shitty free email with GMail, in the same way that Microsoft has (had?) a monopoly on hardware-independent operating systems with DOS/Windows. (I wish I was really being sarcastic, you know because there are actually a billion web-based e-mail alternatives besides GMail that actually don't suck... right? Anybody know of any? At this point I'm earnestly inquiring.)
> what happens in HPC tends to filter down to servers
Is this conventional wisdom? How does a petaflop race affect app servers and databases? It seems like most traditional server workloads could get by without a single FPU. The only thing they have in common is IO. Are there many data centers using Infiniband? (Maybe there are I don't know.)
The Cell architecture is an evolutionary dead end. SPARC is no more of a threat to X86 now than before. GPUs may be the next big thing for HPC but its got a long way to go to get out of its niche in the server market. (That niche being... face detection for photo sharing sites? Black-Scholes? Help me out here.)
I mean, I agree with your overall point, but I think it's more likely that ARM will steal all the data center work before anything from the HPC world does. They are too focused on LINPACK.
What exactly does "viable" mean in this context? Because the husband and wife team behind NameVoyager have had the baby name trend visualization market cornered for years now.
http://www.babynamewizard.com/voyager#
They aren't just using it to drive ad traffic and promote the book, but are now (since I last looked) actually charging for the visualizations themselves. And presumably people are paying, but who knows...
On the plus side, this means there's a market, but you've got a long way to go to catch them, both in regards to the visualizations and the breadth of the name database. It's a good start, though.
Space leaks, stack overflows (foldl vs. foldl'), failed pattern matches (head []), etc. There are tons of bugs lurking in well-formed Haskell programs.
Just to pile on: 0-based indexing is also more convenient when you want to build a multi-dimensional array from a one-dimensional array primitive using the integer division and modulo operators to map between 1D and nD indices. E.g., a matrix with M rows and N columns can be mapped to the range 0 <= i < (NxM) by letting i = (row * N) + col, and the backward mapping is row = i / N, col = i % N.
If instead you use 1 <= i <= (NxM), 1 <= row <= M, 1 <= col <= N, then the mappings aren't nearly as clean. Sure, you could hide all this behind some kind of API, eg. Image.getPixel(x,y), but if you work with multidimensional arrays very often, eventually you'll need to marshal arrays back and forth between different containers that use different access APIs, and the simplest common representation to use for this kind of data is as a 1D array, so being able to work with nD data that is stored in a 1D array comes up fairly often.
> Take C++ for example. Everyone who has mastered C++ knows that you call a class that implements operator() a functor.
Nope. This is what dilettantes call them. Capable C++ programmers (I don't claim to be a master, that would be foolish) know how to grep the standard. The term "functor" is not found in it, at least not that draft that comes up first on Google. The plain and transparent term "function object" has its own section, 20.3.
Surely the premium costs will be higher than the subsidy, so in some sense the headline is right, although I'm not quite sure what point it's trying to make. Health care costs money. In Canada in 2009, it cost $5452 per person. http://en.wikipedia.org/wiki/Health_care_in_Canada#Economics
That's a good analogy to describe the current state of things, by why can't we aim for something better? For example, I would not be afraid to put a random CD in my CD player.
So, GSD is just "grep -r static . | grep -v class" then?
For the sake of argument:
What is an example of an optimization that a JIT compiler can make that a AOT compiler cannot?
If the developer is able to profile the application on typical end-user workloads, don't profile-guided optimizations provide the same benefit as JIT runtime profiling?
Why can't an AOT compiler just consider every path a "hot" path?
Last but not least: Got any benchmarks?
On the other hand, servicing the interest on the mortgage can be more expensive than rent, and the amortization schedule is such that for the early part of the mortgage you are only paying interest, not paying down principal in any substantial amount. The money you save by renting can be invested elsewhere. But if you say in the house long enough, then yes it makes sense. It depends on what market you live in and how long you plan to be there.
Where do Google Scholar and CiteSeer fit into this analogy?
Can't speak for other fields, but in CS any outlet worth submitting to will let you post a preprint on your own website, and from there Google Scholar will pick it up and place the link to your free copy right next to the paywall link. It's not a perfect system---it's like an extreme form price discrimination, like when Microsoft turns a blind eye to piracy in emerging markets---but it does give access to those who can't pay, and its not as dystopian as you make it out to be.
"In this field we don't rely on peer-reviewed journals...papers are also published in journals, but I believe this is a formality that has more to do with obtaining grants and such than with actual communication within the community."
So peer reviewed journals are only important for grants, but your community doesn't rely on peer reviewed journals. Do you not rely on grants? Who funds your work? Do you all work for free, in your spare time?
Likewise. I used the flash player in state A, then moved to state B and bought an iPhone, but I continually get adds related to state A on my phone. Never got a single add when I actually lived in state A, though.