skysight-inc/HackerNews huggingface dataset:
The law makers occasionally are outwardly racist, when they are unaware that the cameras are on.

The justification is usually made with respect to "urban environments", "public housing", and "poor people", eliding over the racial implications.

Also, street gangs like the Crips, Bloods, and Vice Lords were turning streets into war zones as they struggled to gain control over the crack trade. Nowadays, black gangs control the PCP market, and sentences for that are harsher than something like Ketamine, another dissociative anaesthetic. The media are also all too happy to put a naked psycho running around, punching passing cars, on their evening news.

The legislators can try to justify it all they like, but all of us watching can clearly see that whether it is intentional or not, causative or merely correlative, the mandatory sentencing laws are putting more black people into prison, and keeping them there longer. "Three strikes" laws are having a similar effect.
At the moment it seems like letting the atmosphere burn up debris is the usual procedure, but I wonder how much longer that can be sustained without any significant effects on the atmosphere - it's a somewhat similar concern that stopped us from dumping waste into the ocean and limited the burning of things at ground level and letting the smoke dissipate into the atmosphere. Thus, even if we could somehow deorbit all the current debris and let them burn in the atmosphere, it might not solve all the problems.
Joey Hess retires from Debian: "so long and thanks for all the fish"
Is java8 a true functional language?
Our company has been slowly converting a medium-sized (~100K LOC) Java codebase to take advantage of some Java 8 features. One example is a utility method that accepts a String DB query and then executes a Consumer<ResultSet> for each resulting row. The utility method creates the connection, uses try-with-resources to ensure that it's properly closed, etc. This makes a lot of code a lot cleaner.

But unfortunately, many ResultSet operations can throw SQLException. So we created a `ConsumerE<T, E extends Exception>` to use in such cases, so that we can allow some lambdas to throw exceptions where it is sensible (InterruptedException, SQLException, and IOException being the major culprits).

Pretty soon we ended up with FunctionE, BiFunctionE, and so on.

At the same time, we found a need for more interfaces, such as ObjIntFunction<T, R>, that are not provided by JDK 8.

Rather than continuing to implement these on an as-needed basis, I decided to just solve the problem once-and-for-all by creating this library.
Yeah fair point, though at that point most of the work for the day is probably done. I guess I just assumed OP worked a decent part of the day after drinking for some reason.
I could not agree more with your first paragraph. The only other language I've used that I've had that experience with was Haskell, and while there are good arguments to be made for using Haskell in production, it should be obvious that's not a language that will ever become mainstream.

I'm hoping that as Swift evolves over time, it will slowly become that sort of language. Right now it's pretty hard to write any real-world code in Swift that doesn't work with the Cocoa frameworks, and the Cocoa frameworks are typed in an objective-c-compatible way (even if new frameworks are written in Swift they'll need to maintain obj-c compatibility), which means you don't get the strong typing that's necessary for this property. Pure Swift code has the potential to behave like this, although you probably need to avoid the ImplicitlyUnwrappedOptional feature (the ! suffix on types), which of course primarily exists for ease of obj-c integration anyway.

I'm bringing up Swift because, with Apple's backing, it's very quickly becoming a "mainstream" language. I put that in quotes because it is only usable with iOS and OS X programming (for now at least), but iOS is large enough that obj-c should be considered a mainstream language despite the fact that almost nobody outside of iOS/OS X uses it, and therefore as Swift supplants obj-c it becomes appropriate to call it mainstream.

Regarding parallelism, I've been in love with Rust for a long time now, and one of the biggest reasons is because Rust makes parallelism safe. As an iOS/OS X programmer by trade, I think thread safety is far and away the biggest elephant in the room. Despite the fact that we've known that multithreading is the future for years, and despite the wonderful Grand Central Dispatch library on iOS/OS X, most programmers still think in a single-threaded mindset and don't even consider how their code should operate if invoked on a separate thread. This was one of my bugaboos with Go back when I was using that language (which was from the day it was announced right up until I discovered Rust, though admittedly my usage was in hobby projects and nothing serious).

I applaud the fact that Go has a data race detector now, which I used to finally uncover a lurking data race that plagued one of my programs for months (and which was ultimately caused by the Go library using two goroutines where I expected one, and therefore data which I expected to be on a single goroutine was actually mutated from two goroutines simultaneously). But I think Rust is absolute proof that a modern language can be designed such that data races are prohibited at compile-time without sacrificing any language flexibility.
But then the people would realize the potential value of the information they put online and will become prone to self-censoring making this voluntarily bought data much less valuable.
Thank you so much for such a thorough and informative answer.
I'm sure he's good at delegating. But in order to go to meetings and make good decisions there is still a ton of info to keep on top of. And people to talk to. Now multiple that by three.

We're not talking about running a restaurant chain here or a discount store. We're talking about three businesses that require the type of high level knowledge and attention that is difficult for any single person to do. No matter who they are.
On point 1. I hope you appreciate your angle is pretty oldschool and would beg to strongly disagree. I have read a lot of HN commenters over the past few years commenting on similar designs/redesigns that seem to share your viewpoint and desire for 'information density' and not needing to scroll, but I do suspect your opinion is basically that of a nerdish minority that is going the way of the dinosaur.

Scrolling is cheap.

A fat top-bar is not a negative, because you can't read 20 article titles at once and scrolling costs you nothing. I'd love to see a study on this but I suspect the number of article headlines we can cope with in one 'scan'(?) and get something useful from is around 5-10 max? Twitter on my phone shows me about 5 tweets at a time. Does it feel like a bad user experience to me? Hell no.

>> 4. the bottom orange footer now is a heavy-weight element that draws my eyes from the articles. [...] overall i feel like the articles ought to be the most important element and this takes away from the articles.

Sorry that is nonsense, we humans are not that easily distracted and know to look for content in the 'content area' between the header and footer area particularly when they're so clearly differentianted (content = white bit, header/footer = orange bit). My eyes go straight for the articles on every website with a coloured header/footer ever.

I have other issues with this redesign but namely that it still feels significantly inferior to the Georgify Chrome extension [1] that has been around for years now and just by virtue of good typography and minimal design is still kicking everyone of these redesign's respective asses.

That said good job and great post, it's definitely a big step up from the original and I love your header :)

[1] https://chrome.google.com/webstore/detail/georgify/ofjfdfale...
I do it while working on side projects once in a while, but I'm usually only effective when the task is something trivial such as adding a new basic feature to a web app. It can be a lot of fun as I tend not to not overthink my code and I can come up with some creative ideas. Like many others have said when answering this question at other times, the code can be sloppy sometimes so it's important for me to add comments and make sure that I refactor.
The problem with Apple's new plan for iOS attribution
Because blocking on tasks is a deadlock waiting to happen [0], and creates UI hiccups when the task takes longer than 16ms to complete.

In other words, the conditions you must satisfy for using Task.Wait or Task.Result are very complicated. They depend on and create global constraints of the entire program, and so you should avoid using them whenever possible.

0: http://blog.stephencleary.com/2012/07/dont-block-on-async-co...
As the article mentions, the best route I've found is through either working for yourself or freelancing. Other than that, it's almost the luck of the draw, as corporate rules/guidelines seem to vary over time (as do bosses).
Exactly. It comes in super handy when you have a free(ish) form text field where the users enter their number which you want to later use (say for 2FA).
Microsoft has an informal but firm no meetings before 11 pseudo-policy. All the white boards you can eat. General freedom to come and go and work when you want, most of the time. YMMV.
Discussions can be great, but I'm not sure that putting an article and a forum together (which is what most blogs tend to do) is a wise thing.

Think of it in the context of say someone giving a speech or presentation. In many cases the comments act like someone yelling "YOU SUCK!" in the middle or end of a speech. People tend not to do that in real life, but online the rules are different I guess.

There are so many places to leave comments, I just don't know that every article needs a comments section. The negative side of blog comments usually outweighs the positives. Leave commenting to more dedicated communities like HN, Reddit, LinkedIn, etc.
I agree (and am the person you replied to).
Desktop to go: today's omnipresent client interface travels with you
This comment seems like a way of criticizing tech feminists, while still trying to be relevant to the article? Why post this type of comment at all?
Yep, speaking as a pretty staunch feminist (though by no means any sort of formal spokesperson), it is exciting to see a move toward greater justice on this front. I'm sure it's not universal, but just about every feminist site that I've ever spent time on (and just about every feminist I've known) is upset by the ways in which the gender biases in our society hurt and constrain men as well as women. It's a very real and frequently stated hope that as social attitudes toward men and women become less polarized, everyone will be better off (and issues like criminal sentencing and fathers' rights are prime examples of that).

Mind you, different people have different senses of where the easiest or most urgent places are to advance that broad cause. But that's true of all of us, and not just in feminism: some people make charitable gifts to local soup kitchens, others to global malaria prevention, and yet others to the EFF. That's why it's so crucial for a wide range of people to be part of the feminist movement: to effect large-scale social change, we need people with passion working on as many fronts as possible.
How one extremely successful entrepreneur manages his time. - https://news.ycombinator.com/item?id=8574978
Over 16,000 classes. Better increase your PermGen.
I've heard this called the "mullet" approach -- news up front, inane comments in the rear.
"One of the most frequent questions I get from journalists during interviews is “how do you have time to do everything you do? You run Fon, you are an active angel investor in so many companies, you teach at Columbia University, speak at conferences, run your foundation, and on top of that you have your family, your wife, 6 children, you cycle, sail, and so on. How do you do it?”
> Rob Pike once expressed surprise that people migrating to Go weren't C++ programmers, but Ruby/Python/etc. programmers who needed more performance. That leads you to wonder: who is still using C/C++ in 2014, and why? Here are some ideas:

I (and many others) "still" use C++ (which is a very different language from C) in 2014 because it's an extremely powerful language that's still evolving and has produced many innovations that haven't been replicated by many other languages, such as destructors/RAII, strong compile-time type checking, generic programming, and ownership/move semantics. To me, Go looks like an update of C that has ignored all the good innovations of C++. It has no destructors, uses GC instead of ownership/move semantics, and requires runtime type checking instead of providing generics. I see it as a big step backward from C++, so unlike Rob Pike I'm not surprised it hasn't attracted C++ programmers.

Rust, on the other hand, has taken many of the good parts from C++ and developed them even further, without the baggage of C++. Thus, while I haven't coded any Rust yet, it looks like a step forward from C++ and has me quite excited.
I'm not suggesting that cell phones or this device are all constantly recording what we do and transmitting direct to the NSA right now

Thank you for the clarification, and I apologize if my tone earlier was excessively acerbic - the angle you just mentioned appears to be an undertone surrounding this discussion.

but that they could in a targeted manner be used to do so if someone became of interest

Here's where we diverge: This is an argument that can be applied to any internet-connected device, anywhere, anytime. We're dealing with a group of people that have proven themselves adept at twisting a device's programming to their own ends.

So: Why is this so special? Why are so many people sitting here in this thread slagging on this particular internet-connected mic when most of us carry one with us and work in front of one every single day?

I'm sure I'm not alone in growing weary of hearing the constant "NSA!!" bogeyman brought up anytime a new device featuring a microphone comes out. There's no new information here, no interesting discussion, just the same usual "X might do Y" scaremongering. With the previous paragraph in mind, these concerns ring hypocritical in addition to just hollow.
I really wonder what this says about children who wake up in the middle of the night, and the effect on parents. If you follow through with "everyone did segmented sleep", then at least the parents of children might be somewhat mismatched. Children wake up earlier, or take longer to wind back down to sleep. Is that still segmented sleep in the same vein? Maybe it was at one time natural for everyone to wake up at the same time basically, because they were so close together.

Either way, the explicit no children "rule" for experimenting with segmented sleep is an interesting thing to think about.

Of course, 9-5 jobs make it practically impossible anyway, which are assumed to go along with children in many cases
> Puritanism is based on morality

Puritanism is based on a morality. Your phrasing indicates how deep seated it is in our culture.
> I wonder what the suicide rates are over there.

High. Japan is in the top 10 countries world wide, roughly twice as many suicides per million as in the United States.
Oh... look how many people switched just to feedly after google shut their service down.

What I want to have out of a feed? Getting the updates/new stacks without daily checking the page.
These microscopic robots can swim through your eyeball fluids
> No, really, the most formidable Japanese low-touch SaaS entrepreneur I know figured out how to sell SaaS door-to-door in Tokyo.”

Seriously, from all the inefficiencies pointed out in this article, how is the economy of Japan not in the verge of collapse?

- They spend hours choosing the text of buttons,

- they're expected to learn the Way We Do Things In This Company until their 30s,

- they attend work for extended hours,

- the workforce capacities are planned dozens of years in advance,

- decision-making is centralized in the hands of the major companies, investments are interlocked between company-arranged rents, company-arranged investments and company-arranged paperwork,

- and they have competition from foreign products which were produced by more officient economies, e.g. the iPhone

I guess there are other employment markets like France and Russia which have friction too, and others like China which may lack the special salt of SV to be exactly as dominating, but how come Japan still succeeds to have major companies and keep selling products?
I've had a really good experience using that library in Rust. It just works without much code or hassle.
To met it's pretty clear that the language C++ programmers were waiting for is called C++ 14.
"White privilege" isn't an accusation, it's a cultural reality, along with all sorts of other types of privilege. The point of invoking the concept is not to make people feel bad about being white, but rather simply understand that society isn't actually meritocratic. Opportunities arise via combinations of what you've done, unearned privilege (who you are), and random circumstance.

If you're a white guy and you climb up for poverty, be proud of what you accomplished. Please just don't look back at everyone who hasn't made it and think that they all could have done the same.
A for loop is a general tool. It can be used for anything. Because of that, it conveys little or no information. As a reader I have to read the loop in detail to see that what it does is perform a mapping, and not something slightly different (the last item could be skipped, etc etc).

The expressiveness of higher order functions comes not from terseness (only) but by expressing intent more clearly.

E.g this expresses (in pseudo) A conversion followed by a filter.

> odd_ints = strings.map(parseInt).select(odd)

This was expressed in the forum, but there was no agreement that this was readable, so I fully expect you to also think the for loop to be more readable. I suspect there is a divide between those who prefer reading how something is done rather than what is intended, in order to understand it.
No more PermGen in Java 8. Besides, you only pay for the classes you use.
I think the point is that what we think of as an archetypal "general-purpose processor" is a somewhat arbitrary point in the space of possible architectures, and to think of other designs as in some sense secondary simply for failure to match this particular model is to lose sight of the true scope of general computation.

Is it uncontroversial? Perhaps no one would disagree after hearing it spelt out, but I think it certainly is the case that people often naively think of "general-purpose processor" in just the way the author worries about, and that reading something like this can bring about a helpful shift in perspective.
C#'s equivalent of GCD is, very roughly, Task. You can create tasks that compute results on the thread pool, give them continuations to run after, etc.

Async/await is an abstraction on top of tasks, where you write code with do-while loops and try-catch and it gets translated into GCD-esque continuation-using code. It lets you write the asynchronous code in an imperative style, so it looks more like the rest of the code you write in C#.
If you care about i18n and the physical world, there's also https://github.com/googlei18n/libaddressinput (and googlei18n in general)
who is still using C/C++ in 2014, and why?

Systems programmers. Embedded programmers. Kernel developers. Compiler developers. Language runtime developers. Safety critical software developers. I guess you can group them under "performance benefits" but it's as much about the ability to drop down, write arbitrary bits to arbitrary addresses, and (re)implement low-level constructs as it is about performance.

The most obvious example of the need for a powerful language is manual memory management. For C and C++ developers, manual memory management isn't a drawback of their language but a feature.

If you want that sort of freedom to rebuild from the ground up, the only mainstream choices are C and C++. We'll see if Rust gets it right too.

All that being said, I think there's more room in the systems programming space. Both C and C++ tend to pick fast (or reverse-compatible) over correct when deciding which way to go on a feature. There are many, many applications that could really benefit from a "safety first" attitude towards systems programming. Browsers are the driving example but encryption libraries, medical systems, safety-critical software, and many other domains would benefit from a new perspective on things.
barbers at least operate sharp tools in dangerous vicinity of your ears and they required to have at least some training as a condition of the license. What could go wrong what is supposedly stripper's license saving us from, and what kind of training government requires here?
Yeah, besides the Xilinx FGPA in the module, the PCB interconnect would have to be specifically the Vitesse Crosspoint VSC3144XHR-12 https://www.vitesse.com/products/product/VSC3144

and you can see from the product brief (https://www.vitesse.com/products/download.php?fid=4548&numbe...) many people use it in telco oriented gear for back-planes and the like.

Here is my take on why you shouldn't buy an ExaNIC from Exablaze (http://meanderful.blogspot.com/2014/11/dont-buy-exanic-from-...)

Just remember that I'm very biased...

--Matt.
If we're going to turn this into yet another United States - Europe comparison, you could also compare the flip side of the equation: high barriers to entry in starting a business in Japan being similar to Europe. In some ways Japan seems to have the worst of both worlds - regular jobs are low pay with deathmarch hours, yet it's seemingly impossible to escape by striking out on your own.
isn't this whole discussion predicated on not wanting to block? if you don't care about that there's no need to call a Task-returning method in the first place.
As a separate comment I want to address your final paragraph. Rust definitely provides a solution to buffer overflows. Specifically, all data structures that represent buffers of any sort always do bounds checking. This includes using the indexing operator (`foo[idx]`) on a fixed-length compile-time array. It's possible to skip the bounds check but you have to do so very intentionally, using an `unsafe {}` block (which defines a scope wherein certain features can be used that bypass some of Rust's safety). This should only ever be done in response to performance profiling when it turns out that bounds checking is a problem and when you can prove to yourself that it's safe to skip, and often there's another way to do the same thing that doesn't use `unsafe {}` (e.g. if you're iterating an array, use an iterator instead of indexing into the array each time; the iterator approach generally optimizes all the bounds checks away).

The basic rule is if you see a segfault or a data race, search your code for any `unsafe {}` blocks, and the cause will always be found inside one of those. And as a corollary, never use `unsafe {}` if you can possibly avoid it.
Magic Leap Draws from the Bay Area to Assemble Its Brain Trust
The endless camera roll using home storage
Never underestimate the legacy. I've resolved not to start another C++ project, but I'm learning MFC at the moment for working on a codebase that's 35 years old and was rewritten into C++ at some point in the 90s.
Rocky Road Ahead for Space Tourism
FYI, I have worked at several bay-area tech startups and none of them has meetings in the morning, probably because many engineers tend to work late at night.
Getting Started with Java Development on Docker
I noticed it was down a bit earlier as well, but I wouldn't say HN is down frequently. In fact, I can only think of today's incident and maybe one other where HN was down without any kind of advanced notice.