skysight-inc/HackerNews huggingface dataset:
OP here. Something I forgot to mention on the page is how much this simplified life for a server admin. Using "ps" you can see each connection, the memory overhead, CPU usage. It's easy for a sysadmin to kill bad connections without taking down the whole server.
I enjoyed the documentary as well as the article, but I don't fully approve of Jiro's teachings and the movie could be grossly misunderstood by bad managers. The lifestyle of Jiro and his employees seem extremely unbalanced: there's no home outside of the restaurant and no family other than the coworkers. The obsession with perfection, while good in some cases, imho has crippled other parts of owner's life, i.e. the relationship with his two sons. I understand his work ethic has also roots in the zen tradition, but I prefer identity not to be uniquely defined by craftsmanship. However, the way the documentary puts it, Jiro doesn't even understand how to keep living outside of his working space.

Yet, the article picks very good lessons out of Jiro, especially the last one: your suppliers are part of your team is such an important, yet overlooked part in any company's success.
Nice! I hadn't seen that. Yeah, that's pretty sweet.
The Plan 9 support was contributed by other people. I'm sure that if there was nobody left to maintain it, it would have been dropped long ago.
I think it depends on what is distracting you. Is it because you have a functional social life, good friends or like to spend time with your girlfriend? Or have other positive ways to spend your time competing for you attention? If so I wouldn't sweat it too much. You're like 99% of the rest of us who don't have super human powers of concentration and discipline, and this counts double in your early 20s. Speaking personally, the times when I feel like I "levelled up" in terms of personal, professional or technical skills are when there have been powerful outside forces motivating me ... for example, starting a new job where you want to do well, in over you head on a project using an unfamiliar language or don't want to let a friend or respected colleague down. You sound like a conscientious student who's interested in your subject; I'd say simply enjoy life, enjoy your friends, enjoy your mental life and don't beat yourself up about it - like you say there's a lot of information out there in our field, it'll come in time and you'll find your niche. If on the other hand you feel like negative patterns of behaviour are making you sad and stopping you motivate yourself academically then it could be time to take a look at things - but that doesn't sound like the case to me though :-)
How I Learned to Stop Worrying and Love Inflation
Hi sprkyco, I appreciate the feedback. Since launching over 80 students have signed up, and the things they're saying are great. I'm happy to list some testimonials. I'm also happy to offer you access to the course to see for yourself. Personally, I'd really like to do that for you. I think the product speaks for itself and I'm living proof that the numbers are realistic. I'm curious as to why you're seeing it differently. Also, if you have copy suggestions that I could improve upon, I'd like to know alternatives so that people don't share the same perspective as what you've listed here.
Yeah, what an outrage this is.

1.3 megabytes. That's like $0.00004 USD worth of hard drive space.

Does the go team think we are all rich or something?
Depending on the job. If your job involve long lasting connections, overhead of setting up websocket connection and spawning new process wouldn't matter.

But this is clearly will not cut for typical HTTP static stuff.

So if your server side keeps connection for a long period of time (think IRC server, or netcat?) - this might be good.
I'll try this. Looks good!
Why not accept pull requests?
Oops. I can't edit. For posterity, I meant to say I have a few thousand pages like the one I linked to. Right now Google has correctly figured out they're useful to list separately. But this whocalledus precedent worries me that someday Google might decide that my pages aren't "different enough" even though there's no better way to arrange them and they were designed for humans.
I agree that this was the situation a while ago. But, recently, I've seen very encouraging signs that the wider programming community is waking up to the value of FP. Languages like Scala and Clojure, whatever else you think about them, will hopefully act as gateway drugs.
> Also aren't financial transactions reversible among banks?

Maybe, but when they steal from ATMs, there's no other bank involved in that transaction.
Last time I looked at Nim, I was put off by the lack of algebraic data types and pattern matching. I still can't find anything about them in the manual. Am I missing something, or is this something it just doesn't have?
Prevent Your Raspberry Pi from Sleeping
So are you saying that bank IT is no better than corporate IT? They don't have any special software or policies? (like the star network thing I mentioned)

I would honestly expect it to be a bit better than average. I suppose there are many different types of banks and they all vary. Let's just consider your chain banks like Wells Fargo or BoA, since I'm sure somebody around here has worked at one of those places.
Is that really a Weyland-Yutani T-shirt?

http://alienanthology.wikia.com/wiki/Weyland-Yutani
> The usual process to get Google employees to reconsider indexing the website again is called a reconsideration request https://support.google.com/webmasters/answer/35843?hl=en

Doesn't that just get filed to dev/null and marked closed after being sent some copypasta that suggests no one ever read the email? That does seem to be the Google Way.
Create dynamic notifications on login in Salesforce
Most of career has been spent doing web programming, so maybe I'm ignorant, but if you have to build Go with a Go binary, instead of C, doesn't this break OSS's value proposition? (obviously I'd have to start with a C compiler, but that feels a bit purer in my mind, as I can start with a pretty bare-bones OS)
It's a tool for giving presentations, not necessarily for reading them.

But I've just sent a change to add some help text to these pages: https://go-review.googlesource.com/4910

edit: The change is now live. No more easter egg navigation. Yay!
> Better bindings for calling Go from Java.

If that is available for general Java code (i.e. uses JNI) and not just for Android, that could be really huge for Go. Writing performance-sensitive low-level code in Java is still fairly painful, wheras Go still isn't great for writing big programs. I can imagine (for example) Hadoop, Lucene/Elasticsearch and PrestoDB all using this.
No need to ask permission to quote me, but thanks for asking anyways. I definitely agree that shifting focus towards industrial use cases is what we need.
"But the largest sums were stolen by hacking into a bank’s accounting systems and briefly manipulating account balances. Using the access gained by impersonating the banking officers, the criminals first would inflate a balance — for example, an account with $1,000 would be altered to show $10,000. Then $9,000 would be transferred outside the bank. The actual account holder would not suspect a problem, and it would take the bank some time to figure out what had happened."

A naive thought...if they leave with the exact amount of money (left) in the bank, should it be seen as just "illegal inflation", rather than seeing it as a theft. Someone made a gain but nobody made a loss in any case. Banks have always created more liquidity officially through loans, except that it is legal.
MBTI is mostly BS[1][2] (although I do find it entertaining)

1. http://www.reddit.com/r/askscience/comments/1p2cki/how_scien...

2. https://www.psychologytoday.com/blog/give-and-take/201309/go...
> "Run-time support and type information", why is it linked into a an executable that never allocates memory and does no introspection of any kind?

fmt.Print does use reflection.

Besides, bickering over the size of hello world is pretty pointless; better to compare the size of programs that actually do something.

We do recognise that Go binaries can and should be smaller, but probably not as small as you might hope.

https://github.com/golang/go/issues/6853
Are you sure that fmt doesn't allocate memory or do introspection?
You can go back and find posts that aggressively argue that any new technology will succeed or fail.

Right now, you can find people saying that Tesla has a bright future or that it's going down the toilet. Extreme viewpoints get clicks, especially when they're contrary to popular opinion (like OP).
I don't understand the basis of your question. What does the bootstrapping process for a compiler have to do with "OSS's value proposition?" (By OSS I'm assuming you mean "Open Source Software"?)

To build gcc, you need a C compiler. To build Go, you need a Go compiler. To compile anything you need to start with some kind of compiler.
If you have an ADT but want pattern matching, try Scott Encoding.

For instance, here we have Option

module Option = struct
let scott (some : 'a -> 'r)
(none : 'r)
(opt : 'a option) =
match opt with
| Some a -> some a
| None -> none
end

For Option, since it's non-recursive, the Scott Encoding and the recursor/inductor/Church Encoding are identical. Here's a linked list, though

module LL : sig
type 'a t
val fold : ('a -> 'r -> 'r) -> 'r -> ('a t -> 'r)
val scott : ('a -> 'a t -> 'r) -> 'r -> ('a t -> 'r)
end = struct
type 'a t = Cons of 'a * 'a t | Nil
let rec fold cons nil = function
| Cons (h, t) -> cons h (fold cons nil t)
| Nil -> nil
let scott cons nil = function
| Cons (h, t) -> cons h t
| Nil -> nil
end

Anyway, the pattern should be more clear now. These provide effectively "functionalized" pattern matching which you can apply whenever you need. In particular, you can think of these as expressing a (potentially partial) "view" of the abstract type. For instance, my linked list might have not been a linked list exactly but instead some kind of tree, but `scott` and `fold` let me expose a "view" of that tree as though it were a linked list.
If you're going to satisfy a type-checker, you might as well negotiate with a reasonable one that understands what you mean and doesn't confuse the obvious :)
I guess I was alluding that if one is in a consulting situation where he can no longer estimate, one possible solution may be to increase quality by being more like a product team, and the resulting clarity of thought will help out his estimates
There is a great plugin for sublime for that. It is called simple tasks if I recall correctly (Always forget the name of this plug in because of it generic name) It allows to still be using plain txt file but adds nice shortcuts and allows to make checkboxes.
> A simple C "hello, world" program compiled and linked statically using gcc

Statically. Care to check "ldd hello" of your binary?
Nice post! There are a lot of good reasons to use OCaml over Haskell which are more compelling than “JavaScript”, though. A few of them are:

1. modularity (and now that they have added generative functors à la SML, you can have true abstraction)

2. benign effects: in Haskell "proper", you do not have effects; rather you have "codes" for effects, which get interpreted into effects by the RTS; this rules out the possibility of, e.g., using effects to implement a semantically pure interface. On the other hand, OCaml has actual effects, which can be used in an open-ended way to implement all sorts of functional interfaces.

3. strictness: arguments abound about whether laziness or strictness is better; for me, it comes down to the fact that with some pain, you can embed laziness in a strict language with effects, but you cannot embed full-on ML-style strictness into a language like Haskell; moreover, strictness-by-default permits safe uses of benign effects.

I'd call Haskell an expression-oriented programming language, since the types end up classifying expressions and algorithms (i.e. the particular "effects" you used get put into the type). Whereas I'd say (OCa)ML is a value-oriented language, since values (canonical forms) are considered separately from general expressions (canonical and non-canonical forms); moreover, implementation details don't end up in the types, so you can really consider them to be classifying values and functions (i.e. equivalence classes of algorithms, not algorithms themselves). This is largely orthogonal from strictness vs laziness, but as soon as you add partiality in, strictness becomes the only tractable way to have canonical-form-based meaning explanations for the judgements of the theory.

P.S. My day job is writing Haskell. (In case the Pedagogical Brethren wish to come and "correct" me.)
Shrug, you left out:

- Conservative GC marking of the stack.

- No stack overflow check in release mode.

Compiling to C is not tricky, it is horrible and we don't do it for the fun of it! That said, clang has lots of options to tame C's undefined behaviour. Guess what, you can enable these too for C code generated by Nim.
This is really cool - have a read of the tutorial it presents what's going on in a concise manner. Makes it all seem quite simple... until it gets to the end. "Nice work" to the author.
So, I'm specifically asking about protecting employees' machines. My reading of the article is that the attackers got a foothold on employees' machines and credentials, and just piggybacked their malicious transactions along with normal transactions.

In that case, it doesn't matter how much security you have in your data center. Employees need access to central systems to do their job, so client security is paramount.

For instance, for a bank or Bitcoin exchange, I think it would relevant how many client operating systems can access your crown jewels. I think if you're just using Mac or Windows with antivirus or whatever, there's already a pretty low upper bound on your client security and thus your overall system security.

What I'm wondering if anybody is deploying some kind of custom client OS similar in spirit to Qubes OS, or a build of Chromium OS or Android, which have application sandboxing beyond what stock Linux, Mac or Windows have.

Also, I would imagine that each teller has their own credentials, and the bank should have policies about the transaction rate / total for a single teller. It sounds like the attackers would have to compromise multiple employee accounts to steal that much money. So you also want to protect employees machines from each other as much as possible (not just "outside" attackers).

I'm guessing that a Bitcoin Exchange doesn't have that many employees, since the whole industry is new. You probably have people just accessing stuff with their personal MacBooks or whatever, and that's fine for now (there are bigger risks). But when you start to have 100, 1000, 10,000 employees capable of doing financial damage, then I think this type of thing will start to matter more.

EDIT: Actually I remember one large deposit I made required three people at a bank to approve it. The teller said, "Wait my boss has to approve this." Then the boss said, "Wait my boss has to approve this". So they are probably using the presence of three credentials and credentials at a sufficient employee level to authorize large transactions. So I take it the attackers would have to target employees with those credentials.

But that can cause problems for customers -- e.g. if the branch manager isn't around, you might not be able to do what you wanted. To some degree, they are using meat space protocols to mitigate risk that their software systems can't handle.
To run with your analogy a bit I occassionally see CEO types with "bodyguards". Because the kidnapping attempt is theoretical and not happened for ten years the bodyguard is carrying the luggage or opening the doors or answering the phone.

The analogy is fairly clear - you can spend the money on security in depth. But humans tend to use those in segments for other things eventually. Banks hav been around long enough that all their bodyguards are now bellboys.
To be honest, I have no experience - so I can't say, if the description in the article is at all accurate though, they're in a pretty bad way:

"The cybercriminals sent their victims infected emails — a news clip or message that appeared to come from a colleague — as bait. When the bank employees clicked on the email, they inadvertently downloaded malicious code. That allowed the hackers to crawl across a bank’s network"

There must be plenty of people on HN with experience in this field, so it'll be interesting to hear their take on it.

My (very ranting/rambling) point was that I've seen other large organisations pretending to do security (and probably believing it themselves), where it's really just security theatre.
Working with "northern european" retailers myself, I can tell you're in for a bumpy ride (their scale is so huge they can basically force your suppliers to stop supplying you if they want to), but there's definitely a market for food at reasonable prices from small producers.
Good luck in your endeavour!
> History has shown mass surveillance to be antithetical to individual freedom. So our goal is to abolish mass surveillance.

It has? When?
Agreed. What I like most about GitHub pull requests is that they encourage splitting commits into smaller ones. Gerrit is focused on doing a change in one big commit.
You jest?

Go is GC'd just like JVM. The only possible benefit -- even if Go catches up at runtime -- is the compact form of memory objects in Go vs Java object. But then again, if you are writing such systems (in either language) you are very likely to spend quite a lot of time in 'unsafe' land.
I thought tamagoyaki (卵焼き) was fried/grilled egg? 卵 tamago = egg, 焼き yaki = fried/grilled.
As far as I understand it, the money that was transferred out did not come from nowhere... Ultimately it was the bank's money.

Edit: Meant to also mention also that the whole making-it-look-like-an-account-had-more-money concept was about making the fact that they were taking the bank's money harder to notice. It was not actually creating money that did not exist before.
Show HN: Learn to code via chat
The CPU branch predictor can predict/"specialise" virtual calls too.
That's an interesting point, though it's a pretty thin silver lining on a very dark cloud. Being able to undo the operation doesn't really soften the blow of having hackers inside your bank sending outgoing video feeds of employee's screens.

Do you think they'll be getting back the money in this case? Presumably the people involved know enough about the operations to have moved the cash to somewhere out of reach before being exposed.
My guess is probably the same reason why the author writes "NONE" in the "Ease of / Desire to programming" section for Java... because brackets, pointers, for loops, using : to declare types, and other such C-derived language constructs / tokens.

This may be a generalization, but from my experiences so far, it seems there are two major schools of programmers in today's world: those who come from Java / C, and those who come from Python / Ruby.

The Java/C school likely did a lot of low-level stuff, hardware, OS, compilers, and the like college. If required, they can probably crack open the gnu debugger and crank through assembly. They concern themselves primarily with systems that the computer can efficient perform. In their work, the reader will find lots of loops, indexing temp variables, and comments documenting that does what. Today, they tolerate working with higher level tools like Go, vanilla js, Rust, Typescript, etc.

The Python/Ruby school likely did a lot of math and scientific computations in college. In their hard drives, you can probably find Matlab, R, or (more recently) Julia files containing everything from implementations of Newton's method to routines for calculating Navier Stokes. They concern themselves primarily theory and models, and prefer elegant and beautiful models/code to optimized performance. In their work, the reader will find tons of maps-filter-reduce chains, "arrows", and few comments (they argue their code is clear). Today, their higher-level tool chain include things like Haskell, Coffeescript, HAML, etc.
It is a valid point considering the lack of dynamic linking. Go (as is) strongly suggests having lots of "small programs" compose a larger (modular) system on a node. So those 1.9MBs do add up.
At Business School, Networking Can Cost $18,000 a Year
Does GitHub still not support "fast-forward only" commits? The "ugly merge" thing is easily avoided with a rebase before committing.
I've been looking for something like this. If I understand correctly, you're suggesting something similar to the mapping of scientific paradigm(s): http://seedmagazine.com/content/article/scientific_method_re...

From a learner's perspective, the map would be more like a route-planner, highlighting the particular paths to take to get from one point of knowledge to another - but it would presumably need to be able to account for what a learner already knows (what if, for example, a route requires the learner to acquire advanced algebra, but they don't yet have basic algebra?).
What is the better alternative Go is using?

"Can only view diffs on a single page"

You don't need to use GitHub to view diffs.

"To create a patch one must fork the repository publicly (weird and unnecessary)."

I don't think it's weird.

"Accepting a patch creates a "merge commit" (ugly repo history)."

You don't need to have a merge commit, although I don't think that creates an ugly repo history.

"In general, pull request culture is not about code review."

I have no idea what this means.
What are the differences? Do I miss anything?

1. websocketify allows binary, while websocketd is text-only

2. websocketify does I/O through a socket that the program uses (and that it sniffes through rebind.so), while websocketd relies on stdin / stdout

3. The arguments are different

websocketd --port=8080 my-program

websocketify 8080 -D -- my-program
I think the point he tried to make was that if only "hello world" produces a 1.3 megabytes executable, the file size of a fairly complicated program made in Go will be significantly larger than the same program implemented in another language.
Apple may be working on a self-driving car
Yeah, it's almost like it's a complete waste of time to even enter the debate. Still we do it every day all over the Internet.
This makes me laugh, considering at Google we regularly deploy statically linked C++ programs that are two orders of magnitude larger.

"You call that a big binary? THIS..." etc
The only userspace application is busybox. I think it is statically linked against whatever you have installed on the machine doing the build.
Everybody was embarrassed about that day. It was a lot of toxicity over an issue that had already been resolved in technical terms, and dragged on for hours, but Andreas was mostly gracious throughout. I give him a lot of credit for being willing to trade blows with aggressive users without using Linus-style shame tactics himself. However there is also some recognition of how disruptive it is to allow discussion to spiral out of control like that. The channel is considering a more policy-driven approach to handling these kinds of situations. It has never banned anyone in its history to date, but it may have to cross that bridge soon.