skysight-inc/HackerNews huggingface dataset:
It's been pretty common for compilers to require 3 different intermediate representations (parse tree, MIR, and LIR). My copy of Advanced Compiler Design and Optimization [1] (over 10 years old at this point) lists the 3-IR architecture on page 8. It references Sun's SPARC compilers, DEC's Alpha compilers, Intel's x86 compilers, and SGI's MIPS compilers as implementations that use it.

What has changed are the boundaries. Traditionally, semantic analysis (including typechecking) operated on the parse tree, which resembled the human-written language extensively. Optimization operated on MIR, then it'd be lowered to an architecture-specific LIR via register allocation and instruction selection, and another round of optimization (instruction scheduling, etc.) would be applied. The purpose of all of this was to provide multiple language front-ends on top of a single compiler. In the 80s and 90s, compilers were often written by the hardware vendor, so they would tightly optimize the MIR and LIR for their own architecture, and use the parse-tree => MIR lowering to support multiple surface languages.

LLVM chose a LIR that's closer to what many compilers had been using as MIR, and then moved the optimization passes into the LIR, and hid the architecture-specific backends within the LLVM project itself, out of the eyes of language designers. It could do this because of open-source: with a shared body of compiler code owned by everyone and gradual consolidation of the hardware market, it became easier to contribute your backend to LLVM than to maintain your own compiler stack and fight for adoption. (GCC actually had a fairly similar architecture first, but the GCC IR was very difficult to comprehend if you weren't a GCC maintainer, which made it impractical as a compilation target for outside projects. They generated C code instead and let GCC compile it.) That in turn made it much easier to write a compiler and experiment with language design, since you only had to figure out how to translate your language to LLVM's IR rather than work out the details of scheduling and register allocation. That, in turn, allowed greater complexity in language features: Swift and Rust have language features that go beyond what cutting-edge research was <10 years ago, and do so in a production language that you can use now. And so it's not surprising that they're now re-introducing a MIR to manage the additional complexity introduced by the new language features.

[1] http://www.amazon.com/Advanced-Compiler-Design-Implementatio...
It’s safe to say that the whole Internet of Things is still in its “feature phone” stage, if not the infancy of that.
I tried Vala once and didn't really like it.

It's me not Vala. I enjoyed proper tooling: SCM (e.g.: maven), test automation (unit-test framework), some form of IDE.
Classic joke: "Wow, that's a huge building. How many people work here?" - "Maybe half of them."
gcc also supports OpenMP 4.x and OpenACC, both of which are used extensively in the HPC world to support automated parallelization and offloading to accelerators like GPUs. clang only recently added support for OpenMP 3.1, and my understanding is that there are no plans for OpenACC support.
There is a long tradition of type-directed compilation. Haskell compilation system refers to it as the simplifier or "middle end".

The parsing and type-checking produces a IR known as 'Core'. The middle-end optimizes it as a series of source-to-source transformations on Core code.

The back end of the compiler transforms Core code into an internal representation of a C dialect called C--, via yet another intermediate language STG (short for "Spineless Tagless G-machine").

Finally, the C-- code output can either be printed as C code for compilation with GCC, converted directly into native binary, or converted to LLVM virtual machine code for compilation with LLVM. Any output is linked against the Haskell runtime.

The innovation would come in creating the optimizations in the middle-end that could not be possible in the LLVM backend. Proof is in the pudding. Introducing another layer without any meaningful results is how projects bloat (NIH syndrome).

There is a LLVM backend that implements most if not all of the GHC "middle-end" optimizations[0] and should provide you with details/context you are seeking.

[0] http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-ll...
RPC over RabbitMQ
different people have different styles of learning.
for some, building an overall idea first is more important than hacking something together. for other hacking something together is more important than getting the full overall picture.
stick with whatever works for you + be open to do things differently once in a while :)
My guess is that in the future, source code -> MIR could be cached (on disk) so that whole-program optimization/linking could happen without compiling all of the source to IR.
I'm just starting to go down the blood testing route for myself and my startup (we're going to pay for before/after blood tests for certain supplement reviews), and I find it hugely fascinating. Others do too, and because of that, there's going to be continued growth.

I am absolutely convinced that we'll someday get to where Theranos wants to go - possibly even better - but it's going to take more time and it's going to have to come far more slowly. Costs need to get down a lot more.

You can't advertise and get funding for step 100 when we're still on step 3. This was their fatal sin.

Either way, given the interest I'm seeing in our program, I know the future will push forward. We're clearly still on the very beginning part of the adoption curve with this one -- way earlier than Theranos led us to believe -- but someday I think we'll have the data we want, and in continuous fashion too.

It's still all very reactive stuff though -- until we can read what our nervous system is communicating to the body, we're just playing an ugly, rudimentary form of catch-up. I don't see that really changing in my lifetime though.
> I'd say I had a 10% offer rate. The most common "why didn't you select me?" follow up answer I got was "we need someone who is an expert in XYZ language."

I would think this is something that should have been made clear from the get-go in the initial technical phone interview.

Anyone who goes to an in-person interview should expect, at minimum, that the interviewers have done their homework.

For example, if they just want Stanford or MIT grads, fine. But to bring someone into an interview - which may involve more than a day of travel, lost vacation time etc - just to tell them they went to the wrong college afterwards, that's plain infuriating and shows complete lack of courtesy.
Out of inertia, I use gcc on all three platforms and it has been good towards me. Sometimes I need to compile a specific library on OSX with clang, but it works just fine with gcc ones as well (using ar provided with XCode CLI Tools). Mind you that I use C, not C++ and I tend to grab a GCC snapshot now and then and compile it and use it like that.
It was a mistake that she didn't check that her drug was banned, but it wasn't a mistake taking the drug. Usually you would take that drug for a couple of weeks. She was taking it for 5+ years, for its doping powers.
Money is finite. Money given to Theranos means the funds have less money to invest elsewhere. So yes, they did take money away from more deserving startups.
It's not a bug, and the answer is provided in the link:

"Faster execution time. You may have noticed that in the new compiler pipeline, optimization appears twice. That’s no accident: previously, the compiler relied solely on LLVM to perform optimizations, but with MIR, we can do some Rust-specific optimizations before ever hitting LLVM – or, for that matter, before monomorphizing code. Rust’s rich type system should provide fertile ground for going beyond LLVM’s optimizations."
Yes, but at the time that we actually do stabilize such a thing, we could choose a representation that looks completely different than this one, one that would be easier to parse.
> Looking over the engineering department, I saw, with one exception in fourty, young White or Asian males.

IME, that's much more a consequence of the limited diversity of candidates, not a limited diversity of hires. In most places I've worked at, even if they hired all women and blacks (or other non-Asian minorities), there would still be at most approximately 5% women and 0% blacks (the latter would probably be higher in the US).
Pure (vanilla) JavaScript will remain a bit of a rare unicorn in large projects, though, at least until HTTP/2 and maybe even after HTTP/2 for whatever other reasons [1]. Just about every large project has a bundler and/or minifier step and the Typescript transpilation fits right in there, instead of in the browser.

[1] People will always still want to shave bandwidth, and the new hotness is Tree Shakers which shave bandwidth and computation/JIT time for the browser...
If you're interested in this topic, the world of poker is ripe with cheaters and their apologists. This is the most recent scandal from just last week (the cheater shows up with a lousy attempt at defending himself):

http://forumserver.twoplustwo.com/29/news-views-gossip-spons...

No matter how many of these I see, I'll never fully understand their mindset. It is fascinating though.
It's just weird to compare philosophically different languages. ClojureScript fans are never going to switch to TypeScript. So saying TypeScript has won the transpiler wars is hilariously wrong.

Comparing TypeScript to transpilers in the same space, like Flow and Dart makes sense. They're trying to accomplish similar goals at least.
Viz magazine (http://viz.co.uk/) recently did a strip wherein a thinly-disguised Enterprise and crew are obliged to beam up Captain Thomas T. Cook and his landing party in the face of danger, but his messages requesting help come through via email to Outlook Express...
- This is open source, but I have no idea if it's anywhere near the FindFace capability: http://openbiometrics.org/

- Not open source, but it has a demo of face searching (http://www.faceplusplus.com/demo-search/), and an api.
Thanks for this series! I already got one based on an earlier list (a collection of Knuth's papers).

I love reading recommended books lists from interesting, informed people. Especially when, like this one, they include a number of eccentric or offbeat selections which reflect the personality of the author. There's so much junk out there that's meh or even hazardous to consume. A good list---the more idiosyncratic and personal the better---can bring a subtle and unique structure missing from Amazon generated recs or canon-by-committee lists.
And again, my favorite accidental usages of undefined behaviour in C++ are optimised into BS.

(1) if (this == NULL): this is super useful in non-virtual functions, because NULL is the object that subclasses all classes, so the only universal error object.

(2) memset in operator new: in C++03, we did not have initialisers inside struct{}, so quicky zero the obj to avoid error-prone manual inits of all embedded ints.

This is really becoming ridiculous. Having a notion of how C/C++ corresponds to what the machine will do seems to be more and more regarded as evil.
The attempt to excuse them is part and parcel of the new, hip, establishment HN.

There is a very strong pro-law-enforcement mentality that has suffused HN in the last few years, primarily due to the heavy influence of popular law-enforcement apologists like rayiner and tptacek.
If we (collectively) could fail faster it would help, but currently interviewing is incredibly time-consuming.
It was alleged, that the bike with the motor, was not her bike but a friend's bike, that was left in their tent, and mistaken to be the althlete's bike. But also supports your statement, if this wasn't the athlete's bike, why go through the effort to hide the switch or mechanism at all if you're not competing?

On the flip side, if the bike was actually a friend's bike, what do you say to that friend that got you banned?
Do you have any evidence of FIFA matches having rigged equipment?

And the Spanish national football team's string of success would have been after the investigation you linked to.
Agreed. Also there are typically legal repercussions for misrepresenting your business that are outlined in deal terms.
The difference is that Typescript isn't someone's side project where they accidentally typed `npm publish` when they should have typed `rm -r ./`

It's backed by M$ and the Github repo is super active, especially in langauge proposals. This will be around for a while.
I applied for a job with Jane Street. My school wasn't listed on their drop down. I was auto rejected.

For shits and giggles, I changed my school to a comparable one that was on their list and updated my resume accordingly (changing nothing but my school) and low and fking behold. "We would be very interested in moving forward with your application"... Wtf.
My favorite mobile projector – iCODIS CB-100W
This is a huge thing on Wall Street at the moment.

Bloomberg wrote about a couple of guys that started such a business and got bought for (maybe, exact terms not stated) $60 to $100 million.

http://www.bloomberg.com/news/features/2015-10-06/how-two-gu...
Wisdom is overrated. Also, I am probably older than you are :-) I am using "I" and "You" because I like direct communication instead of passive/aggressive snobishness.
What I want to see in a language would be a bunch of syntactic sugar which corresponds to a MIR like Rust's by a well-specified reduction that is likely to be consistent from build to build.

The reason that this could be really cool is that you could hypothetically hash these MIRs and store these hashes in a public database of open-source code. (You would have to include hashes of whatever functions they call/depend on, and you would have to solve foreign-function imports.)

Then you would have this cool language where modules are simply saying "here's a mapping of names to hashes in the public database," with automatic recognition of "hey, these two functions you're importing from these two modules are actually the same function, I don't need to disambiguate them." If your dependency graph isn't a tree and one of the branches can't cope with a dependency-upgrade, that's fine too -- you upgrade the dependency on the one branch only. The point is, all of your dependency-semantics are now reduced to a really straightforward reasoning about unique names.
Just about every large project has a bundler step for production. Many have for dev as well, but this is unequivocally an undesirable thing. You can't beat Refresh for dev workflows.
Mac SE w/ HD in 1987 — $3900, $8,175 adjusted for inflation. Makes the head spin, remarkable that I even got to see computers like that during my childhood.
> Information Engineer

What's this?
I once showed up to an interview only to discover that the people who were supposed to interview me had traveled to another state. This was only after I had taken time off work and been escorted from the military base security gate to the ramshackle, unmarked building that did not in any way resemble a clean and healthy workplace.

Someone eventually called me to reschedule, and it took every last ounce of my willpower not to perform a verbal auxiliary anus installation over the phone.

To name names and shame the shameful, it was SAIC (before they split into SAIC and Leidos).
The simplest algorithm for solving a maze is to pick between 'left' or 'right'; I'll pick 'left'. Then the algorithm is: Whenever you are presented with a choice on which direction to go, then follow the 'left' wall. In the worst case, you'll hit every square and there will be a lot of retracing, but it'll get the job done. It's the equivalent of bubble sort for solving mazes.

(My apologies, to zappo2938, I didn't dive into your code, though I did skim it. I didn't want to create a new top-level comment about the maze problem.)
Has this specific bike in question been show to the public?

I'm very much aware the technology exists where this can realistically be a problem, but I'm surprised that the actual smoking gun has not been shown.
I understand some of the authors sentiments. Still, they come off as entitled.

Perhaps OP should try avoiding recruiters and big sexy firms.

They report having a positive interview experience but were disappointed for being passed over.

"How is this possible — I have received emails from people all over the world, who praise and give me thanks for the work I’ve done on my open-source projects and tutorials (#humblebrag)"

Perhaps there was simply another qualified candidate? OP could use a little actual humility.

I do understand OPs point that the interview process can feel disconnected from the actual work. However writing software is only part of being a software engineer. Communication / working with others is also important. This is where attitude fits in. Being a professional isn't just about wearing the right clothes/etc.

Don't mean to beat up on the OP. Perhaps they would be a great employee and are feeling a little discouraged. Still, seems like all the praise for developers (e.g. being solicited by recruiters) has gone to their head.
Yes as I mentioned in a reply above these are very good points, but there is a significant difference of context, don't you think? Certification and licensing of medical personnel came about over many years because of the very great harm that could be done by those pretending to know what they were doing. What is at risk for most companies in hiring a programmer is more along the lines of a few hours of interview time, and the few weeks of ramp-up that might have been wasted. If an unqualified person can get in, go undetected, and do real harm to the company and its business then that is a failure of a different sort, imo.
> Is your wife re-certified every year or two?

License requirements are by state, but yes, there is a licensing process.

> Does she have to have a certain number of continuing education hours every year?

It depends on the state, but yes, some states require a minimum number of hours of education to renew a license.
What tech did the company develop? How is she obviously brilliant?
>>opaque to the point of dishonesty

I suspect the fee is not the same for everyone. They probably have some way of judging risk. Which would explain the secrecy.
I have been a happy Android user for years but was planning on switching to an iPhone next time for compatibility with my iPads.

I changed my mind because of the Google Fi service. I can get a compatible phone for $200, and I project my monthly service plan would be less than half than my Verizon plan, given my usage patterns. I do worry that Google might drop the Fi service, or change the features/cost in the future though.
Ask HN: How Much Reliance on 3rd Party Tech Is Too Much?
My partners and I came up with an idea for a product and simultaneously started building a product and scouting around the market to see what competition was out there. In that process we found a couple of API's available to use that basically took care of the data processing we needed to be done, so we started using them. So now our product is essentially repackaging these API's* and selling to the customer (with very little of our own proprietary IP). We're finding demand in the market place for the service and signing up customers. We all use 3rd party tech at some level (from AWS up the stack), but this tech goes to the core offering. I'm wondering what people think about businesses like this?

*Our API usage is in compliance with the terms of service, so this is really a business question, not a legal one.
Slack and GitHub are mentioned on their customers page.

There's a list with some more companies here: https://www.xamarin.com/customers
There were a bunch of rigged matches in Italy a while back.

https://en.wikipedia.org/wiki/2006_Italian_football_scandal

> And the Spanish national football team's string of success would have been after the investigation you linked to.

The one where no one but cyclists got singled out? Looks like they figured out they were pretty much in the clear.
Are GitHub star-bots the future?
Same problems with linters: people write weird code and/or introduce unnecessary changes to correct code that doesn't pass the check.

Also, optional type checkers throw away a lot of the upsides of type systems (safe refactoring, type-aware optimizations, useful generics) so they're kind of a worst-of-both-worlds solution.
Like your idea.

Maybe additionally create a gift idea generator.

Users will add products they wish to have, and other people with vote if they like them.

You can then suggest gifts for people with similar interests.
Everyone understands that the government and the criminal justice system is imperfect. We have them anyway, because the alternatives are worse. Sending an innocent man to jail for life is not fundamentally different from executing him. You can't give people back years of their life, and many people die in prison for various reasons.
Previously: https://news.ycombinator.com/item?id=11574753
How is "fake it til you make it", especially in the context of medical tech, not an outright scam?
> But I learn way more if I find a problem I want to solve.
Me too, that's why I only keep recommendations in a list, that I don't get/buy right away. However, many people have lists of 'totally essentials' that I try to read first (e.g. Jeff Atwoods recommending Code Complete)

> the moment you buy them you commit yourself to learn something from beginning to end
Well, not always, I remember studies (can't find the source) where the majority of the books bought are never even started. That's why I like subscriptions better, where you can just open a book to the parts that interest you.
Writing a book involves much more work than a blog post, and it's also motivated by other factors. Specially in technical books, I've heard the rewards are little, so authors usually write a book to gain reputations, which is fine, but definitely requires much more thought and effort, and some times you can tell.
Relevant articles by Atwood:
http://blog.codinghorror.com/programmers-dont-read-books-but...
http://blog.codinghorror.com/do-not-buy-this-book/
The hardest workers with the most successful can-do attitudes will simply reject your company if you ask them to do bullshit like algorithm trivia or HackerRank tests.

Such trivia is the opposite of useful hard work; preparation for it truly wastes time that could be better spent on other things; a can-do attitude would imply rejecting or ignoring requests to do such things.

As a result, the people who actually do take the time to complete it will not be completing it because of a good attitude or work ethic, yet you will mistakenly believe they are.
Have an Android app that notifies me via an SMS; this makes no sense!
No. The currency point clearly states that you are paying for a service, but you don't know by how much. Maybe that old painting in the attic didn't seem to be worth a lot, so you should it at a yard sale for $5, only later to find out it was worth millions. Maybe you thought your privacy had low value and traded it for online services, only to find out, you could have asked for so much more.

The article claims that you are working for free to make facebook money (which - at least to me - implies you deserve a kick back).

The bridge example is to show that things not being used are always worthless, so saying that Facebook only has value because of its users is a pointless statement. A bridge not being crossed is also worthless.
Sure and Traceur was backed by Google but that didn't stop it from losing the hype train to Babel (which was someone's side project).

The JavaScript hype cycle has no escape hatch. All that go up, must come down. Some things just last a little longer than others.
See some of us never tested that well. I sure as hell didn't but I seem to be ok when it comes to coding ability.
But paying out of pocket and commuting, wasn't that your decision to put yourself into that scenario? It's immediately (and clearly) lop-sided.