skysight-inc/HackerNews huggingface dataset:
Hi there, C# language designer here.

I don't really see your example in that way. Let's start with the latter one first:

> bar(out *); // oops, not I; was up too late coding

I'm not sure how this situation is any differnet from any other case where you need to pass some variable, and you pass the incorrect name. This is already possible all over the language. For example, you might have written "bar(out J)" when you meant "bar(out I)". As usual, the recommendations here are to use strong types and good names to help keep your code clear in intent and to allow the compiler to tell you when something seems awry.

Now let's look at your first example:

> foo(out int mvar);

This version immmediately screams at me that something is happening that requires my attention. First off, just the presence of 'out' is an immediate call that this is not a normal call. Nearly all calls pass by value, so out/ref stick out like a sore thumb (esp. in an IDE that classifies them accordingly). Second, the "out int" is another large indicator that this is doing stuff very special.

Finally, i'd point out that the mispelled name problem is really no different than what you might experience today with code like:

int myvar;
...
// much later and indented a bit ...
int mvar;
Foo (out mvar);

Here you've unintentionally introduced a new variable that you may or may not have intended to. Without a collision, there's no way to tell.

> it's this sort of bug that arises often in languages that allow implicit declaration of variants.

No implicit declarations are allowed. All declarations are explicit. We just don't force you to have to declare in one location and use in another. This is a pattern that many people hate, and which goes against a desire to immediately declare and initialize, and thus not have to track down how a variable is written to.
As a Ruby fan who is baffled by Python's continued popularity, I like this comment - I'm always interested to hear why people have such different experiences than me trying to move from the former to the latter.

That said, unless "recently" was years and years ago, Date#next_month is a thing:

require 'date'
date = Date.today
while (date < Date.today.next_year)
puts date
date = date.next_month
end

One thing that I think throws a lot of people is that the official Ruby docs are actually better than Google for figuring stuff like this out - it only takes a couple minutes to find #next_month by perusing the method listing at http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html, but do a web search and you get a bunch of Railsy crap.

Though I will grant you that even searches on ruby-doc.org keep bringing up results for Ruby 2.0.x and whatnot. That part is pretty bizarre.
I thought it effectively communicated the anger that the Prime Minister felt in having Australian citizens murdered.

Putin came off looking stupid and petty responding to words with nuclear submarines.
But technology that would be able to send spaceships significantly faster would probably cost significantly more, so it might not be worth pursuing given the cost.
25 Years of Linux – so far
If any of you guys are interested plotting total lines of code changes, do checkout https://github.com/kaihendry/graphsloc
> Bigger companies will even force you to take it once you've accrued a number of hours, as it can be a liability on the books

Interestingly, in the UK, managers are also liable for health and safety to some extent. So if you get burned out because you haven't taken any holiday for the last 3 years, your manager has to be able to say "I made him aware he had holiday left and encouraged him to take it" or something along those lines, otherwise they/the company is also on the hook (possibly).
You're basically asking something akin to "why didn't MIPS or any other RISC become dominant?" (Yes, I know about ARM. Despite its name and claims, ARM is not really RISC anymore. It has grown instructions and specialised hardware, so it could remain competitive with x86, and they also use micro-op translation: http://techreport.com/review/28189/inside-arm-cortex-a72-mic...)

I think it's safe to say that about 5-7 instructions are all that's needed to perform all computation tasks.

One instruction is needed to be Turing-complete. It's not very practical though, as you need many more simple instructions to do the work of a single complex one.

Consider memcpy(), one of my favourite examples. On a simple architecture like MIPS, the software has to explicitly perform each read and write along with updating the pointers, the address calculations, and the loop control. It also has to take into account alignment and when to use byte/word/dword accesses. This all requires instructions, which occupy precious cache space (and unrolling makes them take even more) and have to be fetched, decoded, and executed. It can only read and write e.g. 32 bits at a time, because that's the only size the architecture supports for individual load and store instructions. If a wider (e.g. 64 bit) revision appears, all existing memcpy() has to be rewritten to take advantage of it.

On the other hand, consider the CISC solution: REP MOVSB. A single two-byte instruction which the hardware decodes into whatever operations are most optimised for it. It handles updating the registers, the copy, and the loop using specialised hardware. It can transfer entire cache lines (64 bytes or more) per clock cycle. Software doesn't need to change to take advantage of e.g. a newer processor with a wider memory bus. It's tiny, so it uses next to no cache space, and once it's been fetched, decoded, and executing internally, the memory/cache buses are free for other purposes like transferring the data to be copied, or for the other cores to use. It's far easier for the CPU to decode a complex instruction internally into micro-ops and/or dispatch it to dedicated hardware than it is to try pattern-matching long sequences of simple instructions into a complex semantic unit for such hardware when it becomes available. It's hard enough for something as simple as memcpy(), never mind AES or SHA1.

- Why do compilers not strive to simplify their code-gen phase, or enable themselves to do advanced instruction-level program analysis, or both?

Compilers are complex because the CPUs they generate code for are also complex, and the CPUs are complex because of the reason above: this complexity is efficency. A compiler for a simple CPU could be simple, but that just means the CPU is so simple that there is nothing to optimise at the software level; hardly an ideal situation. I think it wouldn't be too hard to get GCC to generate only the subset of x86 instructions that most closely resembles MIPS, and compare the resulting binaries for size and speed. It should then be obvious why more complex instructions are good.
FYI - the XED decoder classifies instructions

https://software.intel.com/sites/landingpage/pintool/docs/65...
Link for this article goes off to some unrelated page (it's not related to Linux is 25, it's related to MINIX).
Hi there! C# language designer here.

You can see (and participate in) the discussion on records here if you'd like: https://github.com/dotnet/roslyn/issues/10154

> Seems like it'd be a cinch to implement

Ah... how i wish that were so :)
Rapidly growing Chinese mobile market poses a challenge to Western businesses
pfft, fluxbox ftw
The most productive I've been as a developer was 20 years ago when I was creating VB6 apps and components...
Unfortunately, even laser light has too much divergence (due to intrinsic behaviour of waves) to remain one focused tight spot by the time it reaches Proxima Centauri, or even the outskirts of our solar system. https://en.wikipedia.org/wiki/Laser#The_light_emitted does say that the rate of divergence is inversely proportional to the diameter of the beam, so maybe if we make the beam really wide, it could reach Proxima Centauri without spreading too much.. I don't know how wide that would have to be.
Serverless just means PaaS, right?
Except it does. And F# doesn't. F# just has in-order compilation. C# has an extra step to determine dependencies and compile them in dependency order.

The only thing for F# is that F# allows the user to determine the compilation order and show it in Visual Studio.
I'd guess because there are a lot of "sell stuff online" companies, but most of them leave it up to you to handle the shipping.
i wonder if there's a way to delay each keystroke to make the time between pressing more uniform to beat this
For item 1, extension methods and implicit conversions would get you really close:

Definition: https://gist.github.com/noblethrasher/5edffb4cb2efa4ed9174fb...

//Usage:

var is_match = " ".IsMatch("^\s+$");

//OR

regexp rgx = "^\s+$";

is_match = rgx.IsMatch(" ");
Forbidding benchmarks is the kind of thing that should draw the wrath of any state worth the name.

Alas.
I would have been happy with just that, but the explanations of how many boxes they had shipped where just as good: "If you stacked them all on top of each other they would be taller than the tallest man!"
Any hints on how to integrate the whole document for summarization? ;)

I've seen copynet, where you do seq2seq but also have a copy mechanism to copy rare words from the source sentence to the target sentence.
Adding features for the the subset of developers that need optional performance enhancements is great. However, it does seem ripe for misuse. As in the developer who makes everything a ref reference because they read it makes it "faster." Would there be a way to get Visual Studio to warn about this?
The rent here is insane. The prices these people are paying are on the cheaper side of things.
I simply speculate that no life in our galaxy has gotten much further than we have yet. If humanity manages to survive long enough to develop technology necessary for exploring our stellar neighbourhood, I'm still not sure we'll have completely figured out how to avoid all conflict yet.
Man, I would've killed for a CD set of Slackware.

It wouldn't have done me much good, though, as I didn't have a CD drive. I had to try to scroung up enough floppies to write out the "A" and "N" sets.
Every language has something missing, but C# has plenty of other great features so tuples weren't really that big of a problem. There are also plenty of built-in containers like the Tuple class that can offer the same functionality.
Hi David, language designer here.

Can you give an example of where you'd want to take advantage of this in C#?

Thanks!
Tesla Model 3 on 280
Whenever I hear serverless, I think of

http://dilbert.com/strip/2015-12-20
I would agree that most business managers who sponsor the purchase of such tools grossly overestimate their utility and underestimate the cost to get a self service solution in place.
Since in Brazil we have 0 self-service gas stations, should I understand that Brazilians do not have the skill necessary to pump gas?
Oh yes. Even though buying extra is effectively unpaid leave in most cases, it has so many advantages AFAIK. It's far less hassle with HR/managers. It's really useful if you're getting married or have a big trip planned. Both of these kind of boil down to that it looks way more professional to declare how much holiday you plan on taking at the start of the year.

Finally, depending on the way it's taxed, declaring it at the start of the year means it gets factored in to the monthly tax, and you don't need to get a rebate later.
It works fine in Chrome but it doesn't work in IE11, in case you care about IE.

Is it possible to generate two random answers and let the users vote the one they like more, and then modify the weights of the Markov chain? I don't know if someone tried this before ... Anyway, be careful in case users make it somehow converge to Hitler.
Err...you know who bought Sun right?
I really thought this was going to be my favorite yet evil puzzle game Blackbox. http://blackboxpuzzles.com/
Is there any JS package that lets you do this and is available without freemium pricing?
If I find a country in which most car owners repair their own cars, instead of delegating it to specialised mechanics, will you take back everything you said?
Graphene Doubles Up on Quantum Dots’ Promise in Quantum Computing
That's a jobs initiative anyway. Are you saying we need a jobs initiative for data analysts?
Was looking in Melbourne also, but there doesn't seem to be that many online postings for such a big city. Did you look in Sydney and if so, was there more?
You seem to be misunderstanding the generality at which I'm speaking. Take this:

>It's pretty hard to argue that more developer time is wasted

That's NOT what I'm arguing. I'm saying that it takes a different amount of time. Hence the concept of "trade-offs", AKA "cost."

With that said...

>Your alternatives are A. duplicate the classes yourself B. let the compiler duplicate them. Where's the bloat?

C. Monomorphise at runtime.

>Less human written code, so this reduces the surface area to the compiler; which is an "issue" no matter how low level your code is.

Yes, but it's a different issue. Again, there are trade-offs.

>What concrete thing do generics model? Tediously copy-pasted code?

No. They model the behavior of the algorithm as it physically exists in a machine.

>What? It's an abstraction over an already typed system that obviates the need to duplicate code, which after the generics are unwound produces the same code you would have had anyway. You're just as far or close to the low-level un-typed system as you were before.

Generics are part of your language. They do not abstract over the language. They abstract over the behavior of your program. It's just a feature of the language that does so with greater generality that the rest of the language.

And the code you "would have written anyway" is machine code. Which you are abstracting over. Generics allow you to pretend your algorithm doesn't need a fixed machine representation. The fact that you can produce two different machine representations for the same template code is an example of what I'm talking about, not a counter example. The abstraction leaks. You write one algorithm, and it has to be compiled into two different representations. That's the cost of the abstraction. You get increased generality at the cost of memory and time.
Ask HN: What Was the Most Effetive Thing You Did to Publicize a New Site or App?
I'm getting ready to launch my mvp, I'm looking for ideas other than spamming hackernews and reddit/r/programming with links. What did you do publicize your app or service?
Most people don't remember (or weren't around to see) what it was like before Linux. IMHO Linus's biggest contribution to the world was the modern open source development methodology.

In my 4th year at university I did a project on Mach and was very excited to continue working with it through the HURD. At the time, getting up to date source code for the HURD required sending an email to the team and requesting it. I dutifully did so and was greeted with a reply asking for my CV. I sent it in (as bare as you might imagine it would be as a university student) and was denied access since they only wanted experienced kernel developers to work on the project. I've often regretted not saving that email.

But this is the way it was back then. You waited until something was released to play with it, or you contacted the team to see if they would grant you access to the latest development code.

Linus changed all that by giving ubiquitous access to the code and taking patches from anyone. It was a huge revelation. Keep in mind that this coincided with more open access to the internet, so his attitude was facilitated by the fact that you didn't need to rely on UUCP to slowly distribute code. More and more, people had access to FTP (and soon the web).

The reason for Linux's success, IMHO, is down to that. Everyone flocked to Linux because it was obviously unencumbered by the BSD legal issues and Linus would look at any patch coming his way, regardless of who sent it. This is now de rigour -- to the point where I'm sure the vast majority of people using free software today believe that it's always been that way.

For me, RMS invented the concept of free software. Linus showed how to actually make it work. There were other good projects at the time, but from my perspective nothing came close to Linux.
If most specialised car repairers are deceivers who trick their clients, does that mean specialised data-analysers are also?
I think that is the the defining trope of the older generation.
I used the term JIT, because many tend to associate AOT to native compilation when it happens before the binary is shipped to the customers.

Regarding AS/400, doesn't the documentation refer to it as kernel JIT?

Thanks for the explanation.
$35 shipping to Canada for a box of fortune cookies. Pass.

Unless you _only_ want to sell stuff inside the US. Then it's okay.
Yeah, I'm old. I used blackbox on Linux in '98. Nostalgia.
Whoops, I missed the typo. Inadvertently proving your point.
blogspam of:

http://www.jpl.nasa.gov/visions-of-the-future/
This article is only available to subscribers, and the paywall seemingly can't be circumvented via the "web" link.

Here's another discussion of Linux's 25th anniversary:

https://news.ycombinator.com/item?id=12355298
Okay, but people are gigantic and heavy, and you have to feed them. Also, they usually have to breathe and go poop. They're like hundreds of thousands of grams, and then some, so 70M is less surprising.

Sending a working cell phone into low earth orbit probably wouldn't approach those numbers, I don't think.
Where the Tech Jobs Are: 2016
It would be interesting to study given a specific level of ice build up how big of an asteroid would have to hit it at the perfect angle to make it flip?
The entirety of capitalism is voluntary transactions with expectation of recompense. I'm not sure what your point is.
The main reason is probably that Australians qualify for the E3 visa, which makes it substantially easier for US companies to hire us over other foreign workers.

That said, there are plenty of other reasons Australians make great recruiting candidates for US companies. There are a lot of good Australian universities, the language/cultural barrier is minimal, and many Australians are wealthy enough to move internationally.

For such a small country there sure are a lot of us spread around the globe.

EDIT: Pivotal may have other reasons -- I don't work there, so I wouldn't know.
User-Friendly Language for Programming Efficient Simulations
That's sage advice right there. Would love to chat more, if you have the time. You know where to find us.
Mainline Linux runs on approximately 0% of the world's smartphones, it is forks all the way down.
Google to penalize ranking of Websites with Popups
Yup, when your founders were fathered by Mars and suckled by a she-wolf, you can only go downhill from there.
You’re Being Tracked (and Tracked and Tracked) on the Web
I'm curious about how the backwards computations work - how do you detect when the backwards computation can be easily calculated? For example, if we hash some input string and then change the value of the hash, it should be very difficult to do the backwards computation.

Does it literally do gradient descent on the input to try to match the output (as is suggested by the backpropagation terminology?) Can it handle discrete valued outputs?
In my experience "expertise in making sense of data" is only one piece of the puzzle, and often not even the most important one.

Domain expertise is hugely important at making sense of data. Self-service allows domain experts to quickly look at data themselves. They may have to learn skills in data-sensemaking, but the expert in data will have to learn about the specific domain (often much harder).

I'm noticing that more and more people in a variety of fields have at least a passable understanding of how to make sense of data. For quick questions, self-service access to data makes the process much faster with little risk.

I've been in organizations that tried to put data behind gatekeepers who would protect users from making mistakes. In those cases, we made a lot more mistakes because not enough analysis was done, or people didn't have access to data.

I've been in other organizations where we let everyone look at the data. Sure, some people made mistakes, but we used that as an opportunity to teach.

If I had to bet on which type of firm would win, I'd bet on the latter. I'm deeply skeptical of the promises made by BI vendors, but self-service analytics isn't one of them.
The Olympics didn’t stumble because of Millennials. It stumbled because of NBC
The average American family had the same wealth in 2013 as it did in 1989
Squishy 'Octobot' Moves Autonomously
As usual it depends. Some data is easy to analyze, and we don't have enough experts to rely on them for everything.
Those fond of the genre should pick up a copy of Laura Lee's "Bad Predictions", a great compendium of all sorts of now-foolish statements: https://www.amazon.com/Bad-Predictions-Laura-Lee/dp/09657345...
Not .NET developer here but the usual way is to use some sort of linting tool to "disable" the esoteric features.
A big advantage of this design over most of the other languages with tuples that I've seen is that their members can have names - that is, types can be anonymous but have named members. This I think hits a sweet spot as it's rare to not want fields to have names, but fairly common to want intermediate types that just bundle a few fields together where there's no good name that clarifies much.
Archiving cryptographic secrets on paper
I guess that's why you're not supposed to take your seatbelt off until you get to the gate...
Just downloaded and started playing it. This game is fun, weird, and I can already see frustration in my future.

ROT01 spoiler:

When I had to [ivou epxo nz ifbeqipoft] I knew this game meant business :)
Yeah, sort of. Wrapped in a nice Twitter-esq UI though.
CUDA Only. Is PGStrom in Active development? Or is it more of an proof of concept stage?
Indeed. While records are my favorite feature from F#, they could be improved.

I'd love it if record definitions were extensible (even abstractly--sometimes you want a record with just the data, and sometimes including db-centric "id, createdTime, etc"), and there should be a way of defining / converting between them without a ton of boilerplate. That would allow something like:

record DbStuff = { id: int; created: DateTime }

record UserRecord: DbStuff { name: string; ... }

var userRecord = new UserRecord(...)

var userData = userRecord.WithoutDbStuff() // but what would be the reflected name of this type?

var newRecord = userData.WithDbStuff(3, DateTime.Now)

----

Sometimes you want to be able to define records

PhotoData{source, metadata, yada, etc, url} and

PhotoDisp{source, metadata, yada, etc, bytes}

without the repetition, and again with an easy way to convert between the two. (And yes you could simplify the above by using containership but oftentimes there are cross-cutting things that containership doesn't solve. You really want a flattening solution.)

Easy integration with C# anonymous classes should be considered too.

C# has always been the more real-world-centric language so I'd hope these common use cases would be considered.
I'm not trying to be hostile, I just don't understand what you mean.

You still need some way to find what's "less important", which is what the topic is all about, like by using grammar dependency or keywords infrequency.

I have some experience in this area[1]. I found keyword frequency worked quite well.

[1] https://news.ycombinator.com/item?id=12356133
Not saying it's a bad thing - cheap computers are great.

It's just a silly comparison: different market segments
These tend to become cargo cult practices, "thou shalt never" that get in the way of those few places where they are useful.
The virtual surgeons of Syria