skysight-inc/HackerNews huggingface dataset:
My profile[0] has a quote about Marx and Smith hitting on the same idea, and this piece is a good illustration of that.

We have two competing sentiments - that workers are exploited by capitalists for the value they provide via their labor, and that the overall efficiency of an economy is dependent on people working in their own self interest.

I think the problem we face is not how best to redistribute wealth, but how to align these two sentiments instead of creating an adversarial relationship between labor and entrepreneur.

And I think Marx was right - workers should own the means of production. However, the historical methods to achieve this have been overwhelmingly inefficient and usually enforced at the point of a gun. That's a mistake.

Meanwhile, in capitalist economies, joint ownership enterprises rose up and the cost of automation came down. Anyone can now buy a share of Apple stock for a day's wage[1], and carry around one of their super computers for a week's wage[2].

The real problem is one of culture. The Luddites had enough organization to mount frontal assaults on the textile mills that threatened them, so why couldn't they pool their resources and start their own mills?

Today, we encourage young people to take on loads of debt to go to college, ensuring they leave college subject to the whims of capitalists. The sentiment is right: it makes sense to encourage young people to carve out a living for themselves early in life. But the cultural method of achieving this makes no sense. It would make more sense to encourage young people to take minimum wage jobs when they turn 15 and investing every spare dime that they have - thus giving themselves a basic income early in life.

The article suggests minimum wages, public pension funds, and higher taxes on business is the answer. I think it's absurd to penalize the most efficient, most product parts of an economy for being more efficient and more productive.

If coercive redistribution is something we deem necessary as a society, then we should be redistributing ownership of our most profitable corporations to those who are least able to fend for themselves. An equity tax that takes shares of APPL from Tim Cook and gives them to people on food stamps.

That way, marginal increases in productivity are not disincentivized by tax policy, and laborers who now own the means of production are no longer exploited, but rather rewarded in tandem with the entrepreneur.

[0]https://news.ycombinator.com/user?id=padobson

[1]https://finance.yahoo.com/quote/AAPL?ltr=1

[2]https://www.apple.com/shop/buy-iphone/iphone-7
off topic. we can debate the law until we're blue in the face, but it really only matters if Congress is debating the law, not you and I.

the reality right now is that that is the law and corporations based in the U.S. go to great lengths to avoid their legal tax burdens.
Gingko is really amazing and very refined. Highly recommended -- one of a handful of tools that have changed how I work.
The Downside of Policing Violent Videos
The largest new feature in Python 2.0 is a new fundamental data type: Unicode strings. Unicode uses 16-bit numbers to represent characters instead of the 8-bit number used by ASCII, meaning that 65,536 distinct characters can be supported.

It's interesting that both Python 2.0 and Python 3.0 made fundamental changes to how the language deals with text.
Those sums aren't some arbitrarily thought up "exit fees"

They are, actually:

1) The number being cited keeps changing (upwards)

2) When asked how they calculated those figures, and what the legal basis was, the Commission said it wasn't going to tell you.

There is a useful analysis of what's going on here:

https://www.cer.org.uk/sites/default/files/pb_barker_brexit_...
Interesting tidbit to file away, thanks.

Irrefutable point though - it's one thing to want something for free as a consumer, but quite a different story as a creator or developer. I totally get the rationale behind charging to keep quality high.

Charging also creates a contract and with that contract be able to enforce a minimum standard. That helps greatly too.
They could not have shot less flattering photos of the students, holy moly.[0]

[0]: https://static01.nyt.com/images/2017/05/07/business/07VW-EWI...
There are many people with Jewish background who oppose his agenda.

That has nothing to do with how his name is used by online posters as an antisemitic shorthand.
The anti-pattern I've seen in dysfunctional enterprise development shops (i.e. most of them) is that checked exceptions mean exceptions that "we'll never have" get buried lower in the stack; so code can fail silently and continue running just to avoid the monstrous checking code and propagation of exception type declarations up the call stack.

I don't see how the Rust approach would avoid this fate but I doubt it will ever be used in these contexts to begin with.
82 freed Chibok schoolgirls arrive in Nigeria’s capital
Maybe it's because the Brits (as in the civil population) never really got to experience the horrors of war for the last 200 years, at least.

Are you serious? What do you think the Blitz was?
America’s ‘Miracle Machine’ is in desperate need of, well, a miracle
I agree with you but until there is an empirical basis for our opinion-probably-honed-by-years-of-coding, these 2 languages will just continue to chug along without real exceptions

My argument would be this: What is a runtime exception, really? It's a state that the programmer did not handle (either due to lack of thoroughness or flaws in mental model). Suppose the error is just ignored: To this I ask, why would you ever want code to continue in some state that has gone off the rails of determinism relative to the mind of the programmer? Imagine a bug that goes undetected because the corrupt state it generates only becomes a real problem many stack levels later under some corner case. Can you imagine a more hellish debugging scenario?
According to your sibling, there are already off-the-shelf sensors that detect some malodors. Maybe we just need to source already-existing components and convince an EE/manufacturing engineer to do a kickstarter?
> No, I'm referring to the idea that the Brexit vote wouldn't have come out as it did absent, essentially, a conspiracy.

Nobody upthread has disagreed with you on that. So why are you arguing?
Yes, if you try to see things from their perspective, regarding how they have been treated over the centuries, it makes sense. Regarding closed source -- my wife is teaching a class on indigenous intellectual property in the iSchool at Univ of Washington right now, and it is mostly about protecting traditional knowledge from exploitation. A lot of what she says and her perspectives takes me a while to process, since I'm a big open source software advocate (e.g., I founded SageMath).
With all the talk about healthcare these days I wonder as an experiment what a "machine" could detect if you gave it saliva,urine,stool,hair sample.

Privacy concerns aside I would assume many basic medical issues could be diagnosed through those without the need for a "doctor".
Quite feasibly when you look at the geographical split. It's not like it was 52-48 across the country, there were very real regional divides.

While in London it may be more equal (including the famous Remain voter who asked who was going to make all the sandwiches in Pret), in somewhere like Grimsby, Scunthorpe, Lincoln, absolutely.
Any chance you might come out with a model that detects body odor or mouth odor?

Given them mentions of cancer in this thread, do you already have in place a policy to avoid accidentally advertising a cancer cure in the UK (which is illegal)?
It is an already crowded space. Quickbase, Fusioo, Ragic, Knack, Zoho Creator, Google App Maker, etc.

I've used most of them, and they end up being frustrating. Quickbase was the most flexible of the lot, but it's expensive. I haven't tried Google's. It sounds like it has a problem many of these tools share though. Per user pricing, with no notion of "external users". Think something like job applicant tracking. You couldn't offer an external user portal to upload a resume without paying a license for every applicant.
I find that pairing is good for this. One of us usually chimes in about whether we've reached a good commit point.

Sometimes we'll keep a running list of things we want to loop back to. For example, a rename to cuts across multiple files, some unrelated. I like those to be in separate commits for a cleaner history.

While it is, as others have pointed out, sometimes easier to commit "messily" and clean up the history.

This is very helpful in some cases, but I see it as tactical and not strategic. In particular it is easy to go far enough down a road that it becomes difficult to disentangle what ought to be separate commits, especially because you need to go back and run the tests on each independently before committing to master.

So if I see a decent commit point (the tests pass!) I will prefer to take it then and there, before turning to refactoring or to the next step in the work.

On those occasions where the ultimate solution was so unclear that we wandered around on a WIP branch for longer than a day or two, I sometimes forced into what I call Athena Commits (they spring fully-formed from the brow of Zeus).

I tend to hold to the short headline, but typically I find we write longer narrative blocks and then longer dotpoint lists of subsumed changes. I dislike this position but, if I have to do it, then my successors to deserve to know why it happened and what, in an ideal world, the shorter steps in smaller commits might have looked like.

One last tip: always always use `git add -p`. I've caught so many commented lines and half-baked thoughts and things intended for later commits this way.
Monads are a superior form of error handling than exceptions... The only problem is that AFAIK (but I'm still learning it) Rust is missing something equivalent to Haskell's do notation.
Yet in Australia, we've been told that the "fix" is in most cases a mere software update:

"The update for the majority of affected vehicles is an update to the vehicle software. This adjustment will be relatively quick and has been made possible with advances in diesel engine technology. Some vehicles will additionally be fitted with a minor hardware update." (1)

It just doesn't add up. If it was so minor, why do it in the first place? Or was it a case of Australia's emission regulations being so hopelessly behind the times that they were close to being in line at any rate? I can't wait for the diesel engine to die altogether - and that includes heavy trucks.

1) https://au.volkswagen.com.au/emission
Hello Justin Turpin! Sorry to hear your struggles with rust. It's always going to be a bit more verbose using rust than Python due to type information, but I think there are some things we could do to simplify your code. Would you be comfortable posting the 20 line code for us to review? I didn't see a link in your post.

Anyway, so some things that could make your script easier:

* for simple scripts I tend to use the `.expect` method if I plan on killing the program if there is an error. It's just like unwrap, but it will print out a custom error message. So you could write something like this to get a file:

let mut file = File::open("conf.json")
.expect("could not open file");

(Aside: I never liked the method name `expect` for this, but is too late to do anything about that now).

* next, you don't have to create a struct for serde if you don't want to. serde_derive is definitely cool and magical, but it can be too magical for one off scripts. Instead you could use serde_jaon::Value [0], which is roughly equivalent to when python's json parser would produce.
* next, serde_json has a function called from from_reader [1], which you can use to parse directly from a `Read` type. So combined with Value you would get:

let config: Value = serde::from_reader(file)
.expect("config has invalid json");

* Next you could get the config values out with some methods on Value:

let jenkins_server = config.get("jenkins_server")
.expect("jenkins_server key not in config")
.as_str()
.expect("jenkins_server key is not a string");

There might be some other things we could simplify. Just let us know how to help.

[0]: https://docs.serde.rs/serde_json/enum.Value.html

[1] https://docs.serde.rs/serde_json/de/fn.from_reader.html
This is a worrying story. And not only because it highlights the possible role that outside factors might have played in swinging key elections to the right.

It's worrying because it runs a great risk in making those living in the London bubble (myself very much included) of thinking Brexit was caused by malignant forces rather than poverty and lack of opportunity. The latter being a hard problem to solve, the former something we can uncomfortably accept.

Brexit was a democratic vote. It was about as democratic as you can get with no possibility for gerrymandering, first past the post or any other sort of voter suppression.

It's a damn shame it happened, but when those of us living comfortable college educated lives choose to endorse policies which allow vast swathes of less skilled labour to be automated and hammered down with zero hour contracts, as the so called 'Brexit heart-lands' have been, then what do we expect but to see a resurgence of fear and the consequent nationalism that arises?

Certainly Cambridge Analytica might have some effect on marginal elections like Brexit or Trump/Clinton, but at the end of the day we've built a system which provides no safety net or training for those whose jobs we're replacing with automation and over efficiencies of scheduling and the introduction of the 'gig' economy.

I think the roots behind these problems are your age old problems of increasing inequality, poor educational opportunities and gutted job markets in northern towns. We've basically shafted a whole generation of folk who unsurprisingly voted for a nationalist agenda out of sheer desperation.
The problem is that you need to know what chemical you are looking for that's causing the smell. Are there any sensors that can detect a wide range of smells?
Yes, this thing in chrome: https://developers.google.com/web/tools/chrome-devtools/netw...

PWA should help somewhat, but there is still quite a bit of javascript bloat and "too many assets" to combat. When my phone runs out of the included 4G and drops to 3G, many sites are unbearably slow.
Tooling makes interactive rebasing a bit easier. Magit in Emacs makes it simple and it's just part of my normal flow now. The other thing you can do is do git add -p. In CLI, that menu sucks, but in emacs you can simply stage and unstage hunks or even individual lines from the diff with a few keys. Using those has made committing small chunks much smoother of an experience for me.
I love the screenshot! I even realized I'm not even looking at the title and metadata anymore unless the image is borked.
It is legitimate but it is also of the sophomoric category of questions. As for Islam that you mention, there are no such issues in Islam.

Stephen Fry is arguing the same position that Satan does in the Qur'an, pointing out 'errors' in God's judgment.

The Angels question God too in the Qur'an, but they do it very politely ..
Hashtag Campaign: #MacronLeaks
Ask HN: What to say on an interview for a Junior position?
Hey HN, I'm learning to code (web, JS, React) for the last 6 months and now I am looking for my first job as a software developer. I'm 37 yo, my professional background is mostly in marketing.

I have 3 interviews tomorrow and 1 more Wednesday (and a few more to come I expect).

All tech interview advice out there talks about algorithms and whiteboards, but from what I saw in my first two interviews, they are not this kind of interview. Maybe it was chance, but I have the impression that these algorithm questions are more common to senior positions. Mostly so far saw my code through my portfolio or asking me to build them challenges.

So, what do you think senior developers expect to get from a junior developer they are hiring?

I understand that this changes a lot from place to place, but of my 4 interviews, one is for a local, fairly big e-commerce (I live in São Paulo, Brazil); one is for the local office of an international, but small startup; one is remote for a British small startup; and one is remote for a german funded startup. So a diversity of opinions is good too.

Thanks!
"The question 'Do computers think?' is as interesting as the question 'Do submarines swim?'"

- Dijkstra
I think I would dislike that style as well. My goals in committing and editing history are, in order:

1. Is master always safe and deployable?
2. Does the history tell the logical story?
3. Does the history tell the physical story?

That is, I prefer safety/deployability above all other considerations. Then I prefer a history that makes sense and can be comprehended. Then and only then do I care about the actual order and content of commits.

Rebasing down to a single commit satisfies 1, but ignores 2 and 3. In my experience 1 and 2 go together very well.
I think Facebook does/used to do something like this[1]

[1] https://blogs.wsj.com/digits/2015/10/27/facebook-slows-the-i...
Thanks for pointing that out!

I am guessing it will be as easy as Excel for the non-programmers to use the tools generated using my tool. But, only the users can say.

In fact, we were debating on providing an Excel like interface (which will be auto-created if the table has too many columns, and can be manually created if required) that just boosts productivity when performing data manipulation jobs.

We saw that most non-programmers, when confused, just look for an export option first, so that the data can be analyzed in Excel. Then they modify it in Excel, upload it on to the systems again - so yes, have a tough competition here with Excel, but we are trying to get that easy to use factor into the online interface to make sure the non-programmers won't have to use multiple tools to get a single job done.

But I really hope we come with a product that generates tools that are super-easy to use. Might take time, but that's where we want to go.
The author seems to want to not use unwrap() in the rust version when that is basically what is done in the python version. The python version will die with an exception if:

1) the file does not exist

2) the file is not readable

3) the file cannot be parsed

Rust forces you to say you want to panic in these cases (by using unwrap), but beyond that, the behavior is similar.
Read more--Yes!

1) It's a habit.

2) Cultivate the garden of your interests.

- Find resources for reading recommendations (NY Review of Books, NYT Book Review, POD casts, NPR radio);

- Devise a system to collect reading recommendations and to revisit (ie. 3x5 cards, *.txt files you can grep);

3) Get books. Find a convenient and impulsive source for books.

- Visit your public library!

- Reduce the stress of putting down a book that's boring (unless you're wealthy, then Amazon to you heart's content).

- Most public libraries let you search online, reserve, call you when your book is ready, then just go pick it up.

4) Develop better reading habits (mostly for non-fiction):

- Can't get into a book? Start at the index (in the most xtreme cases I list my interests reading the index, then tally which chapters have the most points of interest and read those first!)

- Learn the vocabulary.

- Pencil marginalia. Limited set of what I call "sign-posts". A small check-mark to flag an important passage or line is sufficient. (Underlining is awful; don't do it. If everything is important, than nothing is most important).

- Keep a piece of scrap paper and write down a great idea you had while reading--this will clear your mind of your great idea, and let you get back to reading. And it also keeps your interest, because who doesn't like having great ideas?

5) Write a brief book review for every book you read for the rest of you life. Save this as a simple text file. MLA bibliographic entry. Few paragraphs about the book. Done.
From the article:
Posobiec’s first tweet about the leaked Macron “campaign documents” occurred at 14:49 EST (18:49 UTC). This was then retweeted fifteen times in the first minute and 87 times in five minutes, suggesting the use of automated bots to amplify the signal.

Building tools to automatically analyze sources of these info op campaigns would make it easier for journalists to cover these stories with right angle.
Yes - and I agree with you, it's banal and in some ways a very Stephen Fryish question to ask - but asking a simplistic question is not to my knowledge, a crime.
Unfortunately, you can't quit alcoholism.
Also troubling: what if the child service algo happens to predict that brown families are more abusive?
The upvote score should be displayed bigger, also a "classic" mode would be great.
> The only problem is that AFAIK (but I'm still learning it) Rust is missing something equivalent to Haskell's do notation.

Rust has essentially specialized do-notation for error handling called the `try!` macro, or more recently, `?`. (`try!` and `?` are exactly equivalent in today's Rust.) Actually, it does just a bit more than standard do-notation would: it also tries to convert your error value at the call site to the error type expected by the return type of the current function.

The problems posed in the OP are pedagogical ones IMO that I hope can be solved. I think the current resource on error handling in the book is good for folks who really want to dive in and figure out the complete story, but it's bad for folks who just want to write code that works without spending a couple hours doing a deep dive. So I think there's room for more targeted pedagogy here.
Microsoft’s killer feature for its Chromebook competitor is Office
JavaScript library for building user interfaces with Custom Elements, Shadow DOM
I'd simply prefer to see: a larger default font on this site and a way to get to the parent of a comment in a single click.
What about fuzzy logic? It's not giving you probabilities of something being true; rather, it gives you a measure "how true" something is (rather than being 100% true or 100% false).
The author doesn't really justify why he needed to port the python script to rust in the first place.

Pulling down some JSON, doing a bit of transformation and sending alerts seems like a perfect candidate for a high level language, I don't see any reason why you would port it to Rust unless you had significant performance concerns
Given that the late, unlamented, Windows RT had Office, it's not entirely clear why this is a "killer feature".
@tyingq. That's a brilliant point, and am glad that you pointed it out.

We were thinking of per-user pricing only for the employees. The tools generated will have an "Allow external user signups" option that would allow external people to signup, and then the external users' traffic would be charged by the hosting company (or by us if the user chooses us to host their tools for them). I think this is a normal way of doing it, and I believe these tools will soon switch into this mode, if not, I am glad :D
Tomb of Unknown Saint Found in Israel, Archaeologists Deduce
Deep learning is a perfectly useful engineering solution.

As a tool for basic research, particularly in the biomedical realm, it's awful. You get a system that performs pretty well most of the time, but tells you nothing of interest.

That's fine, as far as it goes, but "performs pretty well" is so much more useful in industry than "we know how X biological system works" that entire fields that are interested in the mechanics of how perceptual biological systems work and may be fixed are getting eaten alive. To our collective detriment, I think.
Isn't nim built for pythonists to do just this sort of thing?