Ask HN: What's Wrong with My Resume? - <AUTHOR> Hi HN,
Over the years this community has given me amazing advice and support that I can't thank you enough for. I'm now looking for jobs/internships and I'm having a rough time.
I'm about to graduate this semester from college and in the past two years I have applied to over 150 internship/job apps but I get a frustratingly low interview rate.
The hiring process at tech companies is frustratingly opaque, I have no idea what I'm doing wrong.
Could you guys give me some constructive/actionable criticism of my resume?
Here's my resume (with phone and address removed): [redacted] <comment><USER2> Put relevant coursework at the bottom or, better, get rid of it entirely. It's already understood you've taken classes relevant to your field of study, and no employer is going to base whether to hire you or not based on which specific classes you took. Your internships are most important and it should look like what you value the most. This makes it seem as if you are excited about working and felt you did good while working.

As far as projects, they're all school homework assignments, right? I'd get rid of all them except the ones you really are proud of, and if possible have a link to the source code on the resume. Otherwise it looks like your desperately padding.

It's alright to have a short resume. If you are straight out of college, it's expected, and some employers _prefer_ younger, less experienced workers because they are more likely to do what their told. What isn't cool, though, is to try and make it look like you have more experience then you do, and then when someone reads your resume more closely, they discover that you've been trying to look like something you're not.

<comment><AUTHOR> Thanks for the advice. Last time I went with with a shorter resume and from like 20 or 30 applications (with cover letters) I got 2 interviews. So this time I went with a different approach I added every significant project to my resume (in my major every coding class has a 2-4 person, 6-8 week final project).

So last time I got some feedback that they were "looking for someone more experienced" (for an internship) so this time I just went with enumerating the coding experiences I had.

I'll cut it back down, thanks!

</comment></comment><comment><USER3> couple of things:

\- first, I would highly recommend to stop blindly submitting resumes... go talk to some people. Meetup is great for it, but there are all sorts of ways to network with other developers, they can refer you if they like you.

\- it looks like you literally put everything that you've ever done with computers on that resume. This makes reading it tedious. It also doesn't leave much to the imagination.

\- The vast majority of your resume are projects and coursework (physically it takes up 2/5) cut that down to the most important stuff.

\- Your linkedin needs to be fixed asap.

\- Whether or not it is true... you have a massive amount of frameworks, languages, and libraries on there as well... for those of use that have been in the industry for a while its kind of a red flag that you don't know any of them particularly well. Try honing it into your best skills and your favorite technologies... it will help when you interview.

<comment><AUTHOR> > It also doesn't leave much to the imagination.

I never thought of it this way, thanks! Last year I went with a short resume without the coursework and I got 2 interviews from 30 apps with a cover letter. I managed to get feedback last time that they were "looking for someone more experienced" so this time around I tried to enumerate my experiences...but I guess I overdid it.

> Whether or not it is true... you have a massive amount of frameworks, > languages, and libraries on there as well... for those of use that have been > in the industry for a while its kind of a red flag that you don't know any > of them particularly well. Try honing it into your best skills and your > favorite technologies

Thanks! I didn't think about this, I basically tried to write out a summary of what languages/frameworks I used in that project. I guess I should cut it down to be less specific like just python, SQL, google cloud instead of going into particular libraries and technologies.

Thanks for your feedback, I really appreciate the time and perspective!</comment></comment>


Ask HN: Please suggest uses for an old Mac - <AUTHOR> Hi HN,
Long time lurker (2007 or so onwards), first time poster.
I have a Mac Mini, circa 2010, 2.4GHz Intel Core2 Duo processor(s), 2GB RAM, 320 GB storage. OS: Mac OS X 10.6 (Snow Leopard, cant be upgraded beyond this). Its from my iOS app development days.
Since the power usage by a Mac Mini is low [1], I am keen to run something good on it. It may not be on the network, more of a standalone.
I am not into mining. I dont want to run shared-computing-for-a-cause type of applications.
What can I run on this, other than dynamic photo frames.
Thanks for your time. Cheers. Stay safe.
[1]: https://support.apple.com/en-us/HT201897 <comment><USER2> Multi-boot it and use it for testing or legacy app development! I did that with a MacBook Pro 2007 that I was kindly given.

I've needed to use it to jailbreak & downgrade iPhone 4S to iOS 6.1.3, and more recently, to build an app to use an old iPhone to generate a clean HDMI camera feed.

If your Mac Mini can run 10.4 Tiger, you'll even be able to use some Classic apps (e.g. Age of Empires). There's a couple of sites with some good software collections:

[https://macintoshgarden.org/](https://macintoshgarden.org/)

[https://www.macintoshrepository.org](https://www.macintoshrepository.org)

</comment><comment><USER3> Sell it on eBay and donate the money to your local food bank.</comment>


Static Typing Where Possible, Dynamic Typing When Needed (2004) [pdf] - <AUTHOR> https://www.ics.uci.edu/~lopes/teaching/inf212W12/readings/rdl04meijer.pdf <comment><USER2> Yeah, it was pretty clear from the outset that the author(s) had a biased view against static typing when they describe static type "fanatics" versus dynamic type "advocates", and go on to discuss all the ways static types are unfeasible whereas dynamic types are "indispensable".

I enjoy programming in Python and JavaScript sometimes, but dynamic typing is never "needed". Furthermore, no static type aficionado that I know would go so far as to say "well-typed programs cannot go wrong", as this paper claims we say. However, a good compiler for a static-typed language can be a wonderful tool and ally for programmers who are serious about building robust programs. To take just one example, if I can get an OCaml program to compile, it's extraordinarily rare for there to be a runtime problem to occur that is not related to a conceptual or algorithmic error. Careless errors just aren't an issue when I use OCaml, Rust, etc.

<comment><USER3> I'm a fan of static typing and I only have a cursory understanding of Godel's incompleteness theoroms, but

> but dynamic typing is never "needed".

my understanding is that it's not possible to construct a single static type system that simultaneously accepts all correctly typed programs and rejects all incorrectly typed programs.

In practice, most sound static type systems minimize the corner cases where they reject correctly typed programs, and provide an escape hatch for subverting the type checker if necessary. The presence of the escape hatch is basically an admission that dynamic typing is (rarely) necessary.

<comment><USER2> Yes, it's not possible to construct a static type system that accepts all correctly-typed programs. They only accept correctly-typed programs within their type system.

So just because you can't devise a type system that accepts all correctly- typed programs doesn't mean that a statically-typed language can't create equivalents to any dynamically-typed program, assuming it's Turing complete. That's a misconception.

What falls under correctly-typed within most modern type systems is more than enough to write expressive programs. In fact, sometimes a static type system can be even more expressive than even the most expressive dynamic one (as is the case with Haskell, for example). As some evidence for this, I assert that one can re-create any dynamic type system within a Haskell program, using simple algebraic data types.

That's what I meant about dynamic typing not being needed. Yes, even languages like Haskell have runtime typing "escape hatches" but they're never necessary except for use with FFIs (ie, other languages) and are definitely a major code smell if you use them for normal coding. They're just not necessary.

<comment><USER4> What do you do about runtime environments that may diverge from the static environment? For example, your code may typecheck in the browser you tested, but it has to run in other browsers which have differences in their APIs. How would you gracefully handle that without dynamic types?

<comment><USER5> If the APIs are different, they are differently typed. You still don't need dynamic types, you need to correctly account for both APIs.

Doing it gracefully requires that you say what 'graceful' means in this context. It may or may not mean doing it _correctly_.

<comment><USER4> Having a single static type system that captures all differences across all versions of all browsers is not realistic. But even if it were, there's a bigger problem: static type checking happens too early. The browser can rev and change its APIs after your static type checking is performed.

You want to type check with the actual runtime environment, not just a static guess at it.

I guess by "graceful," not segfaulting would be a good start.

<comment><USER6> > Having a single static type system that captures all differences across all > versions of all browsers is not realistic.

Why? Standards and abstractions are useful.

> But even if it were, there's a bigger problem: static type checking happens > too early. The browser can rev and change its APIs after your static type > checking is performed.

At that case your program's behaviour may become inconsistent

> You want to type check with the actual runtime environment, not just a > static guess at it.

That's not typechecking and there's no guarantee that your program will work with dynamic typing if the API changes.

> I guess by "graceful," not segfaulting would be a good start.

Is runtime type error better? If the type of your value changes and your assumption was false about the type then it can fail anyway with an incorrect function call.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> > Requiring explicit type declarations is usually unnecessary and always a > nuisance.

Except at function declarations and similar - they help to make the code more readable. It's not feasible to dig in code where the only clue about the nature of the input and output in a function are variable names.

> Static typing provides a false sense of safety, since it can only prove the > absence of certain errors statically.

This sentence contradicts itself: if it proves the absence of certain errors, doesn't it provide a certain level of safety? Also, it seems like the author never heard about substructural and dependent typing...

> Static typing fanatics try to make us believe that "well-typed programs > cannot go wrong". While this certainly sounds im-pressive, it is a rather > vacuous statement. Static typechecking is a compile-time abstraction of the > runtime behavior of your program, and hence it is necessarily only partially > sound and incomplete.

And dynamic typing fanatics want us to believe that the only thing we need is unit tests...

Modern, statically and strongly typed programming languages are capable of making us forget many common errors like data races, incorrect resource management etc. The authors enumerate what "us" \- the "fanatics" state about static types but what does dynamic typing gives us besides uncertainty? And how could they question the documentational value of static types?

The authors of this "research" paper should do more research about contemporary PLT because it seems like they've only programmed in 10-20 years old OOP languages. Also, what is the case for dynamic typing in this paper? I'm really curious because it feels like they're just biased towards dynamic typing.

</comment><comment><USER7> > Static typing provides a false sense of safety, since it can only prove the > absence of certain errors statically.

That is as blatant a straw man as I have seen recently. I have never met someone who mistook static types for a guarantee of correctness, though I have met several people who did not understand why testing to 100% statement coverage does not do that.

The authors would be well-advised to remove this sort of thing if they want to be taken seriously, and in general, striving to "do our best to make it provocative" is not an effective way to influence people, no matter how smart it makes you feel.

<comment><USER8> I constantly see people discuss Haskell as if it prevented you from writing incorrect programs. But in fact static typing as it's usually implemented does nothing for numeric programs/math errors. It won't even catch dividing by 0.

Related: saying a program is correct because it's been "security audited" (someone read the source once) or "formally verified" (someone wrote the program twice and didn't make any typos).

<comment><USER7> Your dismissive characterizations of security auditing and formal verification are way off the mark.

</comment></comment></comment><comment><USER9> Quick question: is it enough to create guards/checks in languages like Ruby or Javascript to make sure that a parameter that is passed in is the type you expect? I try to set default values in the method/function declarations to at least return an empty set if I can live with it.

Only time I have had a dynamic language do weird things is with PHP, but that was due to my lack of understanding of how PHP handles empty strings.

<comment><USER10> One problem with runtime checks is that they of course only work at runtime but you also must manually assert against them. A bulk of your test suite now exists just to execute runtime paths through your code to trigger your guards at all. Then your tests often have to duplicate the very assertions that you already specified in your guards.

Another problem is that your runtime guards are often ad-hoc and can drift from your data model, turning into debt that you need to manually reevaluate and clean up. In my experience, there's nothing quite so permanent as a defensive nil guard that everyone is too timid to remove.

But it's not clear what you mean by "is it enough". I definitely use runtime asserts in dynamically-typed languages like Javascript to try and fail as fast as possible in critical functions.

<comment><USER9> I meant "enough" as to ask "do I need to do more than writing a check?".

You do bring up a good point with testing (which I don't always do, but I try to at least do runtime checks).

I follow you on the data model part. I think that's where a test framework is super handy.

</comment></comment></comment><comment><USER11> The argument over static and dynamic typing is so boring at this point. It's semi-intellectual "bike shedding". Practically speaking it doesn't make much difference one way or the other.

I wish the industry as a whole would get over it and focus on bigger issues.

<comment><USER4> It matters a lot! The fact that ObjC, Java, and JS have dynamic type system is what enables iOS, Android, and web browsers to be revved independently from the apps that use them. This is a key feature that languages without dynamic types cannot provide.

<comment><USER12> JS is the only one of those that has dynamic typing, at least by the conventional meaning of the term.

<comment><USER4> Do you mean it's the only one without static types? All three are dynamically typed to some degree. For example, in ObjC, messages dispatch on the dynamic type of the object.

<comment><USER6> Both Objective-C and Java are statically and strongly typed. What you're thinking about is probably a runtime-reflection mechanism. The JVM, java's host is capable of supporting dynamic languages through 'invokevirtual' but it doesn't make java dynamically typed.

</comment></comment></comment></comment></comment><comment><USER13> This reads like the Julia manual!</comment>


Mathematician's 'Mysterious' New Method Just Solved a 30-Year-Old Problem - <AUTHOR> https://www.livescience.com/66065-sensitivity-conjecture-mysterious-math-proof.html <comment><USER2> Dupe.

We covered this about a month back [0]. The link was much better too: Scott Arronson's blog.

Also, Knuth/Ben-David's shortened proof [1], announced as a comment on Arronson's blog.

[0] [https://news.ycombinator.com/item?id=20338281](https://news.ycombinator.com/item?id=20338281)

[1] [https://news.ycombinator.com/item?id=20589216](https://news.ycombinator.com/item?id=20589216)</comment>


What's Driving Google's Wild Moonshots? Desperation - <AUTHOR> http://www.wired.com/2014/04/desperation-is-driving-google-to-invent-our-crazy-future/

<comment><USER2> Google has money, brilliant engineers/software developers, and visionary leaders who want to progress humanity, that's why it's doing moonshots.

It's moonshots help recruit more of the top engineers and developers to work for the company.

The high risk / high reward moonshots help fuel competition and keep the company from becoming boring and stagnant. A small number of them might even generate massive revenue in the future, but nobody is stressing if they don't, at least they tried and the research gained is still very valuable.

If companies didn't constantly try to push the boundaries of what's possible we wouldn't have ANY of the awesome technology and gadgets we have now. Look at DARPA, same philosophy as Google X Labs, it's most successful moonshot was the Internet. Thank you Google for continuing to think outside-the-box and for trying to develop what other companies are too scared to attempt.

Google is developing things such as self-driving cars because that technology needs to be built and is largely a software problem. They have several advantages such as their massive amount of engineering talent and their Maps databases which are playing a key role in the self-driving vehicles.

Don't forget all of the research that Google employees do on a wide variety of subjects. Test products such as Google Glass isn't for everyone, but it has several uses-cases which would make it valuable and it was undoubtedly worth trying.

Why would anyone not support companies like Google? The company doesn't harm people, creates amazing technology, inspires millions, employees tens of thousands, and has made the world a better place.

</comment><comment><USER3> Google is becoming mature corporation. Nothing new here. The same way Facebook will go. You cant just grow forever. There is a point where you will stop and realize that your strong brand might be vulnerable to markets humors. They are reinventing themselves so they can diversify portfolio. The method is pretty unique though.

</comment><comment><USER4> I am reminded of PG's essay on black swan farming [http://paulgraham.com/swan.html](http://paulgraham.com/swan.html)

They are probably playing the same game with these moon shots.

<comment><USER5> We used to call it "throw some shit to a wall and see what sticks" back in my day.

Doesn't have any better chances when you do it with billions.

</comment></comment><comment><USER6> This is my theory, just idle speculation:

I don't think Google is desperate. I think Google is a personal playground for Larry and Sergey to invest in whatever takes their fancy - they have the money, and they don't answer to shareholders, given Google's unusual voting structure.

Sadly, they seem to favor flashy but questionable technology demonstrations (self-driving cars, glass, ara). Which is not to deny that some of the spending has been great (street view, google translate, etc.) They're no Bell labs, though, or IBM in its heyday, which is a real shame.

<comment><USER7> Why do you think self-driving cars are questionable? Maybe I've missed something, but it seems very plausible to me that they will take off; and even if Google didn't profit directly from the cars, their core business would profit from people having more free time to stare at a screen.

<comment><USER2> Many people are on the complete opposite side of the spectrum. I personally believe that autonomous vehicles are undoubtedly the future. They'll save an enormous amount of lives, allow new businesses to be created, eliminate the need for a drivers license (bye DMV), reduce insurance costs, and allow people to work, socialize, and actually have meals in vehicles (can turn the seats around and put a table in the middle). There are probably dozens of advantages that I missed in this post, but I don't see any reason to not aggressively pursue this technology.

</comment></comment></comment><comment><USER8> Xerox squandered a lot of what was invented at Parc, but the completion of the development of the laser printer more than paid back the years of investment.

</comment><comment><USER9> The most terrifying reality Google faces is that it cannot effectively productize any of these "moonshots" it's working on.

That includes Glass, Self-Driving Cars, Drones, and all the other superfluous stuff they're throwing money at.

My suggestion -- focus -- on search. Redefine how we find information again; we're still looking at blue links on a white background with pagination.

In that regard, Google's been stagnant for over 10 years.

<comment><USER10> I think the Knowledge Graph technology, which I used while I was a contractor, is very good. I think that Knowledge Graph will continue to make Google Now more awesome/useful and help somewhat with search results.

The SaaS/PaaS business will also be huge, but I think Google has a long climb uphill competing with Amazon, IBM, etc.

And, if Google makes a real AI then the value of the company goes through the roof.</comment></comment>


Explain like I'm 5: Kerberos (2013) - <AUTHOR> http://www.roguelynn.com/words/explain-like-im-5-kerberos/ <comment><USER2> Seems like no one remembers [https://web.mit.edu/kerberos/dialogue.html](https://web.mit.edu/kerberos/dialogue.html) anymore...?

<comment><USER3> This is a very nice exposition of the problem statement. However --

"Athena: You could solve the problem clumsily by requiring the mail server to ask for a password before I could use it. I prove who I am to the server by giving it my password.

Euripides: That's clumsy all right. In a system like that, every server has to know your password. If the network has one thousand users, each server has to know one thousand passwords. If you want to change your password, you have to contact all servers and notify them of the change. I take it your system isn't this stupid."

\-- if this isn't a problem for you, as it isn't (or can't really be worked around) on a decentralized network like the internet, then Kerberos seems like an over-engineered marvel for a bygone era. For a closed intranet though, like universities or corporate networks, Kerberos is still around.

<comment><USER4> Kerberos 5 is somewhat distributed—"realms" loosely map to domains. Kerberos's architecture is very similar to Shibboleth, which is web-based and has a certain level of popularity.

<comment><USER5> Shibboleth is SAML.

</comment></comment></comment></comment><comment><USER6> This is a great high level guide but not _so_ useful when it comes to setting up Kerberos.

Some of the typical issues are: 1. ensuring time synchronisation 2. dealing with the woeful error messages from Kerberos and AD. 3. configuring Firefox to do Kerberos auth. 4. tweaking Windows AD and Gpol/Registry to allow or disallow certain algo strengths. 5. ensuring names (host and principal and server) agree precisely (including case) between the ticket and the AD attributes and various config files. 6\. dealing with bugs and other incompatibilities in Windows (e.g. ktpass) and Linux/Unix implementations. (thankfully mostly historical now). 7. firewalls (host and network)

I really should write up these in more details but in the meantime probably the best docs can be found on the official Kerberos site and within MS technet.

<comment><USER7> Absolutely. I have a maxim - "Time and DNS - come back when both are fixed"

Nowadays good sources of time are "free" \- use them. If you can't manage your DNS then hand in your nerd card. You should have A->PTR->A record sorted. The Windows DNS and DHCP make this embarrassingly easy to get right. Be careful about using OpenDNS and co which will happily respond to incorrect queries with their own IP addresses.

For docs on using krb and Samba and co. see Gentoo and Arch wikis - lots of info there.

<comment><USER8> > _If you can 't manage your DNS then hand in your nerd card._

Here you go :(.

       +</comment></comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+
       |                  NERD CARD                        |
       | ISSUED: 1988                 LOCATION: INTERWEBZ  |
       |                                                   |
       |  This is to certify the card holder,              |
       |                                                   |
       |                   TeMPOraL                        |
       |   _____________________________________________   |
       |                                                   |
       |   is a certified Nerd of                          |
       |                                                   |
       |   [x] space                  [ ] cryptography     |
       |   [x] programming            [ ] literature       |
       |   [ ] networking             [ ] language         |
       |                                                   |
       +</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---+

I do intend to take it back though. Any hints on good sources to grok DNS?

<comment><USER9> At what level do you want to understand things? I feel that getting the basics is best done by trying it out yourself, though a badly configured public server can be used to attack other people, so be mindful of who has access to your server when you're trying things out. If you just want the theory, Wikipedia is a pretty good resource for technical things.

If you just want to see how DNS works, set up a server yourself. You could start with a simple caching one like unbound, and then get yourself a domain and set up a real server (eg. nsd or bind) for that. You could for example use Hurricane Electric's free DNS service as your main nameservers and make use of zone transfers and notifications to keep things up-to-date from your local server, giving you a small-scale "real-world" DNS setup.

<comment><USER10> And what if i somehow landed a job at a small office without any expert knowledge (only from tinkering with my own unix machines since years) and now i need to set up a simple DNS in a virutal machine of us ?

We have all clients in one network. So i really need only a simple DNS without any complex setup. But sadly i cant find any good tutorial what i have to expect and be aware of. All i can find are some three line tutorials (do this and then this and here you go, now you have a DNS), but not more. Cant you point me to some good guide ?

<comment><USER11> dnsmasq is simple enough. If you just need to define some local names, you can literally just install it and configure those addresses in /etc/hosts on the same machine. The server will pick them up automatically and serve them as A records.

</comment></comment></comment></comment><comment><USER12> I am also a fan of this very practical Hadoop/Kerberos guide [https://steveloughran.gitbooks.io/kerberos_and_hadoop/conten...](https://steveloughran.gitbooks.io/kerberos_and_hadoop/content/)

<comment><USER13> I was going to mention the same guide. Not only it has been really helpful but also the Kerberos/Lovecraft analogies are spot on. Also, it has the best introduction I've ever read in a technical manual:

 _When HP Lovecraft wrote his books about forbidden knowledge which would reduce the reader to insanity, of "Elder Gods" to whom all of humanity were a passing inconvenience, most people assumed that he was making up a fantasy world. In fact he was documenting Kerberos._

 _What is remarkable is that he did this fifty years before kerberos was developed. This makes him less of an author, instead: a prophet._

 _What he wrote was true: there are some things humanity was not meant to know. Most people are better off living lives of naive innocence, never having to see an error message about SASL or GSS, never fear building up scripts of incantations to kadmin.local, incantations which you hope to keep evil and chaos away. To never stare in dismay at the code whose true name must never be spoken, but instead it 's initials whispered, "UGI". For those of us who have done all this, our lives are forever ruined. From now on we will cherish any interaction with a secure Hadoop cluster —from a client application to HDFS, or application launch on a YARN cluster, and simply viewing a web page in a locked down web UI —all as a miracle against the odds, against the forces of chaos struggling to destroy order. And forever more, we shall fear those voices calling out to us in the night, the machines by our bed talking to us, saying things like "we have an urgent support call related to REST clients on a remote kerberos cluster —can you help?"_

</comment></comment><comment><USER14> ELI5 Kerberos:

When you go to an arcade or carnival, there are many people playing many games and it can be hard to make sure everyone gets to play how much they paid. So you get a ticket from the ticket booth, take it to the game you want to play, put it in, and play! If you don't pay, you won't get a ticket. Without a ticket, you can't play. So even though the games don't use money directly, they know that your ticket means you paid. Other kids can't steal your tickets because when you buy them, the ticket guy prints your fingerprint on each one!

Sometimes, adults like to make work into games too. So they make tickets for using their computers and they get those tickets at the Kerberos booth.

</comment><comment> m-j-fox ELI5? This is a at-least a 3rd-grade reading level and I mean at-least.

I've looked into Kerberos before. Who hasn't looked into Kerberos is the IT department at my day job. You can walk up to an open Ethernet jack, declare yourself root and access anyone's NFS.

Don't worry. All we make is security processors, the things that do the bulk encryption for the internet. No problem. Leave that source code flapping in the wind.

<comment> semi-extrinsic To be fair, the first paragraph goes

"While this topic probably can not be explained to a 5 year-old and be understood, this is my attempt at defragmenting documentation"

Regarding the unsecured network jack problem, I once saw it "fixed" at $large_oil_company by using stickers above all the Ethernet jacks saying in angry letters "It is forbidden to connect non-$company machines!".

</comment></comment><comment><USER15> I understand that "signing-in with Facebook/Google/Twitter" is done using OAuth or Open ID Connect.

Why is Kerberos insufficient to solve the sign-in problem that we had to invent new protocols?

<comment><USER16> Kerberos doesn't work through NAT, for one. (I think that there might have been an extension, but it never took off.)

Open ID Connect will support the more complicated "delegation" scenarios that Kerberos enabled. Think, authentication across multiple service boundaries. That kind of thing.

<comment><USER17> Kerberos absolutely works through NAT.

I used it to connect to campus servers back in college, through my home NAT.

There is an optional field in the Kerberos ticket that can contain your client address, as an additional point of validation to prevent certain classes of replay attack. That particular feature can conflict with NATs. But it's optional.

<comment><USER16> Touche. As one other commenter pointed out, it's naming that can be difficult with NAT and that can break Kerberos. Good point.

</comment></comment></comment></comment><comment><USER18> My favorite when talking Kerberos back in school days - the "Ticket Granting Ticket". Which the author goes over. Love me some ticket granting tickets!

</comment><comment><USER19> Curious question: Where is Kerberos actively used today?

I remember there was a general disinterest even back when Kerberos was still a thing ...

<comment><USER20> Microsoft Active Directory (ADS) uses Kerberos for single sign on. As soon as you login to an domain you get a Kerberos ticket. So it's actually quite wide spread.

<comment><USER6> Yes, I have setup Java and Apache servers to do authentication with Kerberos. The support is quite mature now. The only hassles tend to be with the Windows servers and PCs deprecating weaker algorithms which require tweaking krb5.conf and occasionally digging into AD attributes.

<comment><USER21> Could you recommend some good sources for this?

</comment></comment></comment></comment><comment><USER22> Kerberos is awesome and reliable. But when it breaks, it's the worst!

<comment><USER16> This and double this.

</comment></comment><comment><USER23> A video explaining kerberos which could be understood by 5yo [https://vimeo.com/150247674](https://vimeo.com/150247674)

</comment><comment><USER24> OT: Is there a ELI5aaS (explain-like-Im-5-as-a-Service)?

<comment><USER25> [https://www.reddit.com/r/explainlikeimfive/](https://www.reddit.com/r/explainlikeimfive/)

</comment></comment><comment><USER26> Clickbait... "Explain like I'm 5... this topic probably can not be explained to a 5 year-old"

</comment><comment><USER27> Definitely not ELI5</comment>


Planetary Data Backup System - <AUTHOR> https://starbase.jpl.nasa.gov/ <comment><USER2> This is really cool! It has a bunch of rover data, altitude tracking, etc.

See: [https://starbase.jpl.nasa.gov/mgs-m- accel-5-altitude-v1.1/mg...](https://starbase.jpl.nasa.gov/mgs-m- accel-5-altitude-v1.1/mgsa_0002/data/profile/p01xx/p0101.tab)

Which has some headers like this:

INSTRUMENT_HOST_NAME = "MARS GLOBAL SURVEYOR"

INSTRUMENT_NAME = ACCELEROMETER

DATA_SET_ID = "MGS-M-ACCEL-5-PROFILE-V1.2"

TARGET_NAME = MARS

PRODUCT_CREATION_TIME = 2001-01-12T13:29:25.39

START_TIME = 1998-01-22T05:33:03.17Z

STOP_TIME = 1998-01-22T05:39:36.17Z

SOLAR_LONGITUDE = 258.21

ORBIT_NUMBER = 101

PERIAPSIS_LATITUDE = 45.95

PERIAPSIS_LONGITUDE = 83.93

Parsing through this stuff makes me feel like I'm in a Stross or Stephenson novel. Does anyone know of any visualizations or interesting insights drawn from this?</comment>


Vegetarian diet and mental disorders: results from repres. community survey 2012 - <AUTHOR> https://www.ncbi.nlm.nih.gov/pubmed/22676203/ <comment><USER2> Even if we were to accept the paper's conclusion, we should take into account that for many people a vegetarian or vegan diet is an ethical choice, because they are concerned about the killing of non-human animals for the purpose of ingesting their carcasses.

If a person lives within a community of perpetrators of an on-going mass- killing of non-human animals (that they themselves may have previously participated in), is it then unreasonable to be more likely to display symptoms of mental disorders, such as anxiety or depression?

 _Should_ we not be distressed by awareness of the pain of others?

Claude Etherly, who was piloting Straight Flush, suffered from anxiety and schizophrenia after dropping the bomb. His letter exchange with pacifist philosopher Günther Anders is worth a read[0].

[0]: [http://www.history.ucsb.edu/faculty/marcuse/projects/anders/...](http://www.history.ucsb.edu/faculty/marcuse/projects/anders/Anders1962BurningConscienceEatherlyOCR.pdf)

</comment><comment><USER3> I'm a lazy vegetarian, not for animal cruelty reasons but for the bigger, self-preservation issues: artficial pandemic evolution, antibiotic resistance, pollution and climate change contribution.

If you don't get enough bioavailabile vitamin b12, depression is just one of the symptoms. I saw it in the dorms of my university of a few vegans who didn't manage their nutrition. [https://en.wikipedia.org/wiki/Vitamin_B12_deficiency](https://en.wikipedia.org/wiki/Vitamin_B12_deficiency)</comment>


A Rebuttal for CSS Lint  - <AUTHOR> http://alexkessinger.net/2011/07/11/a-quick-rebuttle-for-css-lint/

<comment><USER2> This is extremely week argument for CSS Lint. CSS is not the starting point (unless you are talking about CSS sprites) for the performance optimization, and, frankly, it may never be a point. On a normal page it would be hard even measure difference between performance of class vs. descendent selector and littering your markup with classes may offset any benefits by simply getting bigger document which takes longer to parse.

And tell me, how making id selector (the fastest) persona non grata helps performance?

"Rebutting" a single point (which was not even a point, just a note, based on how do you "fee" about the author, does not rebut anything.

I am a programmer and I tell you: CSS Lint won't make your pages faster. It may make the slower, but that does not matter, cause nobody will notice it either way.

</comment><comment><USER3> The author mentions PEP 8. In the Python community, there is a style checker called pep8, which implements the PEP 8 guidelines. Style only. There's also a tool called pyflakes, which does static code analysis. Obviously, it can't catch much, but it does alright. Then, there are lints: pylint and pychecker. These last two are horribly dogmatic and cannot stand Python which isn't written in their style. We usually don't recommend pylint and pychecker because of their overbearing nature and insistence on Java-in-Python code.

I recently built a couple websites, and we used Sass for the CSS, so we ended up with very nicely formatted SCSS maintained by hand, and minified CSS for deployment. I tried CSS Lint and was horrified at what it did to our CSS, so it's no longer part of our cycle.

If people wanna use it, fine, but it's not helpful to me.

<comment><USER4> What exactly do you mean by Java-in-Python code? Do you have examples? I find that code written using Pythonic idioms gets a high Pylint score, without having the slightest whiff of Java about it. That's not to say that its defaults aren't excessively fussy in some cases, but it's easy to tweak so that it doesn't whine about too many public methods or using __magic &c.

<comment><USER3> Bingo. It's really annoying that I can't use tuple/dict (un)packing without it complaining, let alone that if I have a class which is too big, too small, or does too much/too little, it throws a fit. Worse, it doesn't understand zope.interface and gets quite irate when confronted with interface-heavy code.

I'm usually working in Twisted or Django, and it's so very unfun to try to get pychecker/pylint to be okay with those libraries. I'd rather have pyflakes.</comment></comment></comment>


How to Design Classes (2012) [pdf] - <AUTHOR> http://www.ccs.neu.edu/home/matthias/HtDC/htdc.pdf <comment><AUTHOR> The first four chapters are written with the ProfessorJ teaching environment in mind (cf. page xiii).

[http://www.professorj.org/](http://www.professorj.org/)

For the later chapters, the reader is encouraged to explore the concepts within a full-fledged Java or C# development environment such as Eclipse, IntelliJ, Visual Studio, etc.

</comment><comment><USER2> For those interested, it looks like programming examples are in JAVA. Probably a good read for those who never quite get classes.

</comment><comment><USER3> Very excited to see how they project their vision (htdp, etc) onto OOP in full details.

</comment><comment><USER4> Is there a mirror of this anywhere? I can't get to it right now.

Edit: working again

</comment><comment><USER5> 666 pages... Coincidence? I don't think so.</comment>


Ask HN: How to deal with product managers slowing down product release cycle? - <AUTHOR> Every startup I've been at, when the company's in the 'growth stage', things get shipped nearly every day. It's great, and gives the team more control over the product and iterations. However, as always, once growth hits a certain point, people in charge of product are hired. After that, things slow down considerably. It drives me crazy. We go from shipping daily, to not releasing features for WEEKS because they nit pick every little damn thing. And of course, 'crunch time' happens more frequently because projects take forever to push forward, causing the arbitrary deadlines to be missed.<p>Is this normal for startups or have I simply been unlucky? Anything I can do to remedy? <comment><USER2> Full disclosure i'm a product manager- good PMs care about ship speed just as much as you do, they should also care about reducing the risk that what you ship will not solve the right problem for the customer or solve the right problem in the wrong way. A PM that nitpicks every little thing is doing it wrong. A PM that excludes engineering from the de-risking/validation process is doing it wrong. A PM that doesn't involve engineering at the earliest stage of the process is also doing it wrong. A PM that takes credit for the team's work, doesn't fight for the team and blames the team for missteps is also doing it wrong. There are many bad PMs out there (thus the hate for the profession among the HN crowd), I'm not saying I'm that good, but I'm trying.

</comment><comment><USER3> You describe two separate items (that can build off each other, but are separate): - Not releasing as fast as you'd like \- Bad schedule estimation/deadline setting

As with anything you want to change, you have to make the case that your idea is better for the business. What is the business value in pushing a feature to production today rather than letting it sit on the shelf until all stakeholders are satisfied it's ready? In the beginning you're scrambling to have a product online at all. Now that you have some users, how quickly do they need those new features? And how well do they respond to churn and/or half-baked implementations? Is not having those features costing you potential new customers? Answer these questions to yourself, honestly, and you'll have the beginnings of a case you can present for what turnaround time should be.

If you want to push back on scheduling, you have to get better at time estimates than the person setting the schedule. How are the changes to process causing more developer time to be spent? How do they impact wall-clock time to deployment? Once you know that, you can say "This timeline covers a preliminary implementation, but doesn't include time for PM review or iterating on that feedback, here's why..."

Frankly, you seem more concerned with your particular taste in release cadence than building a product.

</comment><comment><USER4> Launch your own company and hire PM's that does things the right way.

(Then watch for anon HN posts complaining about you and your PM's styles :) )

</comment><comment><USER5> PM chiming in here, but only for SaaS B2B. I work for a growing SaaS provider that caters to F500 companies. No PM I know of wants things to slow down, that's crazy. What I've seen though is that as a company gains customers, keeping them happy starts to raise in priority. Large customers customers in particular are extremely change averse. Some things I've seen:

\- adding any bit of 3rd party software can be a nightmare, it might cause the entire contract to come under review again (like having a new analytics provider)

\- some customers require 90 days notice of any material change in functionality, like moving a button to a new screen

\- changes need to be communicated to marketing, CSM, and then to the admins of the customers

\- and on and on

So I think that having many large customers, slowing things down just sort of happens. You can blame PMs or whatever, but it is just a thing that happens, at least with SaaS B2B companies.

</comment><comment><USER6> If you want to remedy it, you'll need to take some time to figure out why it happens.

Sometimes, it happens because during the growth stage, a founder is in charge of product. Handing the reins to a hired PM is hard for even experienced founders to do. Sometimes, the tendency is to micromanage to such a point that the hired PM is more like a product administrator than a product manager.

Other times, it happens because as you reach scale, there's more risk to every release. It's one thing to move fast and break things when you have 100 customers. It's another thing entirely to move fast and break things when you have 10k customers and a wack of SLAs.

And still other times, it happens because developers haven't scaled with the company. Growth stage developers are a different breed than scale stage developers. As a company reaches scale, things generally need to get more formal and experts take favour over generalists.

Once you understand what's going on, you can start making changes. I don't know how to fix the issue where a founder has trouble giving up the reins, so when I worked for startups, I liked to stick with startups where a founder planned to stay in charge of product. Derisking a release is complicated and relies on strong communication between many departments. Scaling up to a scale stage developer requires being open to change.

</comment><comment><USER7> How did "things got shipped nearly every day" work in practice? A common version of this is "the automated tests are passing, therefore it's good to go". But is your project manager actually on board with this, and if not where do their concerns lie?

It's possible that if you were to wave a copy of "The Phoenix Project" at them, they'd come back next week with the zeal of the converted. But I do think that there are valid arguments for _not_ saying that everything that passes automated tests is releasable, especially when dealing with more interactive user-facing tools. Manual testing, especially when it's relatively exploratory rather than focussed on the "correctness" of specific features can be really valuable for making sure that the user interfaces are coherent and pleasant to use, and finding odd interactions which are hard to imagine when looking at the code. Perhaps your PM wants to see more of that? Is there a way to fit this in while maintaining a release frequency which everyone is happy with?

</comment><comment><USER8> I've worked as a PM for a few startups and scale-ups and can confirm that sometimes one of our responsibilities is to slow down the release speed. Why? Because, after (and even before) the customer base passes a certain threshold in size and complexity, there are many more hidden variables in the "what and how to build" equation.

This being said, as a PM (or at least as the specific "story writing and prioritizing" sub-category of PMs known as a Product Owner) you _sometimes_ have the feeling that you're adding complexity and overhead to the process without actually contributing much. I guess this is true mostly when you're new to the company and have a long way to becoming an integral part of the product development machine.

In addition, I have to agree with this line taken from another comment: "Growth stage developers are a different breed than scale stage developers. As a company reaches scale, things generally need to get more formal and experts take favour over generalists."

</comment><comment><USER9> Product managers are valuable to have involved in product planning and design and in big picture acceptance testing, but they shouldn't be gatekeepers. If you can, create a policy that prevents them from blocking deployment.

If you can't do that: Give them access early when it's still in a rough stage so that big things can be fixed early and so that they can feel they've had their way by reporting (obvious) real bugs instead of bikeshedding.

Then as you approach launch, set a cutoff date. Anything not fixed by then will be treated as a bug to be priorized and fixed as part of the general backlog.

Then the product manager can decide whether they'd rather fix their bikeshed nitpick or some other real bug.

</comment><comment><USER10> I have tried it myself that Product wants to control what is going on, and I read the Phoenix Project which gives a pretty good description of your project. It is really good!

But the solution is really to introduce different kind of users that you can deploy to, so that you can deploy to the betausers without asking and if you can prove it improves the product then deploy it futher, just like Facebook have talked about as well.

</comment><comment><USER11> Try to do things in smaller chunks. Can't nitpick something for weeks if there aren't that many details.

</comment><comment><USER12> The longer people use your product, the more resistant they will be to unexpected changes in the product. One of a product manager's primary responsibilities is preparing customers for upcoming product changes so that they are well received.

</comment><comment><USER13> PM's and other charlatans who are trying to trade on the software engineer's profession will use every trick in the book. They will try to sell you a car and headlights, wipers, tires separately. The reason they slow down projects is they want to sell each tiny part to executives as a big accomplishment. They don't really care about moving the needle and the tiny parts have high chance of success on the software dev side. What you need to understand is they are focused on spoon feeding dumb executives "huge" accomplishments. If you want to disrupt this, focus on this communication. For instance, finish the project ahead of time and find out how to communicate this to executives around the PM. When the PM tries to take credit for only a tiny bit of what was delivered and unaware of the rest, they will look like fools. When they seek retribution against you, try to amplify the fact they are out of the loop and trying to slow things down. You will have to be devious to carry out this strategy successfully, but PM's are people trying to sell what you spent decades learning to do for yourself, so all is fair.</comment>


Elon Musk calls for 'break up' of Amazon - <AUTHOR> https://www.bbc.com/news/technology-52941394 <comment><USER2> Another random Elon Musk tweet. What a waste of my time.</comment>


Undergraduate thesis saves 601 Lexington - <AUTHOR> http://99percentinvisible.org/episode/structural-integrity/ <comment><USER2> Note: this is a podcast transcript, but the transcript is missing all the words spoken by people they interviewed. Click Listen/Download for the full interviews.

</comment><comment><USER3> An architect did his job badly, thankfully an undergraduate student noticed the fault and the building occupant's lives were saved.

<comment><USER4> I think you missed the point that the undergrad was unknown for many years until she saw a documentary about the emergency repairs which resulted from the phone call she made to alert them to the problem. No-one bothered to take her details or respond to her in any way and she never received credit (until now).

Perhaps it's just me, but I have a feeling some misogyny may have been involved in the way she was forgotten at the time. Thankfully someone thought to check her claim rather than dismissing it outright which was a very real risk - something I think was clear in the telling of the story.</comment></comment>


Seattle's Minimum Wage Killed the 'Five-Dollar Footlong' - <AUTHOR> https://reason.com/blog/2018/01/10/seattles-minimum-wage-killed-the-five <comment><USER2> I'm pretty right wing and have opinions about minimum wage that a lot of other hn users would disagree with, but this article is garbage. Basically one store owner said that he can't afford to offer the new promotion because of the minimum wage and other social spendings. That is all the facts we are given. Of course another reason could be because people don't want that product, or that the store owner isn't running the store as efficiently as other nearby stores are. The article then criticises the new sugar tax because the cost of soda is higher. Of course the price of soda is higher, that is the intention.

<comment><USER3> Everything I know about economics tells me that anytime that you artificially put price floors and price ceilings on anything - including wages - there are unintended consequences. I don't think they should have raised the minimum wage at all. Let the market decide what a fair wage is.

On the other hand, I do care about other people and think that people who are willing to go to work everyday deserve some minimum amount of money. I don't know what that minimum should be.

How do we square that circle? Increase the Earned Income Tax Credit and come up with a way to allow businesses to distribute the credit back to their employees just like we have a way now for employers to take payroll taxes.

Historically, raising the EITC has been popular among Republican and Democratic presidents. Giving more to the poor - who will definitely spend it - does a lot more for the economy than giving it to people who already have enough.

<comment><USER4> One thing I am curious about is what really would happen if we had no minimum wage. Anchoring bias is a pretty well known phenomenon. If you have a "cheap" item priced at $10, an "economic" item priced at $15 and an "expensive" item at $20 and they are functionally the same. People will choose the middle item.

I wonder if something similar is happening with wages. Because of the minimum wage, a business owner can hire someone to the minimum wage, or something slightly above, without too much thought other than knowing they can afford it generally. So the minimum may be artificially "sticking" wages lower than what they may otherwise be. Of course this is all conjecture and I have no kind of proof for this.

Also, while minimum wage laws are almost universally praised, they (along with a lot of things in the US) have a pretty sad history. [https://mises.org/blog/racist-history-minimum-wage- laws](https://mises.org/blog/racist-history-minimum-wage-laws)

<comment><USER5> Minimum wage laws are not universally praised, those from the Austrian economic side would disagree with that statement. The minimum wage is as bad as licensing for hair wraps, it is a program to drive undesirables out of a market.

<comment><USER4> I said "almost" because I happen to be a person who pretty strongly agrees with Austrian economics. I'd think that linking a mises.org article might hint at that pretty strongly.

</comment></comment></comment></comment></comment><comment><USER6> I assume the Costco they mentioned in passing still has the nation wide 1.50 hot dog and soda deal and Costco is a lot better place for workers in terms of wages and benefits over Subway. Did the writer forget this detail or did he drop it because it didn't match his narrative?

<comment><USER7> Subway is a franchise. Costco can spread the loss of the 1.50 hot dog over membership fees, and marginal markup of products from across the country. A Seattle Subway franchise can not, as they are not charging a membership fee nor do they have other business areas that they can spread the cost over.

Oversimplification and False Analogy.

<comment><USER8> > Costco can spread the loss of the 1.50 hot dog over membership fees,

Costco is profitable before membership fees, though that profit is less than the amount of membership fees. It's not covering any loss with membership fees, it's piling them on top of a small profit to make a bigger profit.

</comment></comment></comment><comment><USER9> If you're interested in this story, Google for "Tim Horton's minimum wage Ontario" and you'll find plenty of similar coverage, and not just Timmies... A few weeks ago, minimum wage was CA$11.60 an hour in Ontario, it's now $14 an hour, and will increase to $15 in 2019. But most chain stores haven't raised prices, so you get conflict, and where there's conflict, there's no end to the news coverage...

<comment><USER10> Businesses in Ontario and Seattle were handed a perfect opportunity to raise their prices. Normally a price increase would cause a loss of business to competitors, but a price raise blamed on the minimum wage hike would have been tolerated much better.

\- competitors should be raising their prices too, so there shouldn't be competitors to desert to \- opponents of the wage hike will blame the government instead of the business for the wage hike \- supporters of the wage hike should be happy to support the higher wages

Yet businesses in Ontario have responded by cutting employee benefits and increasing tip splitting, resulting in significant negative publicity and boycotts.

<comment><USER5> The companies do not need to raise prices, they have a few strategies to take:

1\. Keep prices the same and hope to make it up on the increased traffic if competitors increase prices; employment costs stay the same.

2\. Keep prices the same; adjusting the costs in employees to offset the higher value they must be returning.

</comment></comment></comment><comment><USER11> Higher minimum wage, IMHO, leads to a zero sum game. Wages increase, then prices increase, returning us right back to where we started. Businesses are not going to give up profit, and I think it's basic Econ 101 that if your fixed costs rise, you increase prices, or you shut down. The minimum wage in Sydney, Australia is $17.70 per hour. This has led to an increase in everything - from food to apartments. Sure you're making $17.70 an hour, but that apartment that was previously 1,000 a month is now $2,000, so you've really gained nothing.

<comment><USER12> Any real data to back all these assertions up? Say, a price/minimum wage chart?

One Subway does not a correlation make. Neither does a price hike that can be caused by a myriad of causes not necessarily related to minimum wage.

<comment><USER13> If you compare minimum wage hikes to inflation you can see they're very closely linked – to the point that a minimum wage hike only ever results in very short buying power increases.

</comment></comment></comment><comment><USER14> We made it illegal to sell something for what it's worth. What's the worst that can happen?

<comment><USER15> Economics 101 says supply equals demand at all price levels. So there is no one "what it's worth."

Baking in (no pun intended) externalities into the price is better than just shuffling it off into the wastelands of government deficits.

The market and I are not obligated to make a profit for Subway just because conditions have changed. If their entire value proposition was to be the lowewt cost food provider, that's on them.

</comment></comment><comment><USER16> "The net outcome: In 2016, the 'higher' minimum wage actually _lowered_ low- wage workers' earnings by an average of $125 a month."

No, it turned some of the low-wage workers into higher-wage workers, leaving not as many low-wage workers and therefore less total work done and money earned by low-wage workers. Which was the goal.

Now if the goal of raising the minimum wage were to ensure wages were low, you're right, it's a disaster!

<comment><USER4> I bet that the people priced out of a job totally love getting $0/hour vs the evil wage they were receiving before.

</comment></comment><comment><USER17> > The biggest cost driver, as Jones' sign mentions, is Seattle's highest-in- > the-nation minimum wage. It went from $9.47 to $11 per hour in 2015, then to > $13 per hour in 2016, with a further increase to $15 per hour planned.

Good thing businesses just got a big tax cut which will help offset those wage increases. Some companies even voluntarily raised their minimum hourly wage to $15 as a result of it.

<comment><USER18> If the business was breaking even before the tax cut, how would it help them to absorb increased costs?

</comment></comment><comment><USER19> I lived in LA several years ago and there were quite a few places that did not honor the same pricing as the rest of the national chain including Subway so I think there's more than a minimum wage impact.

</comment><comment><USER20> The _real_ "minimum wage" is actually "zero."

<comment><USER21> It's slightly above zero but a race toward zero.

<comment><USER10> I think the parent was implying that the real minimum wage is no job.

<comment><USER12> Real minimum wage is chattel slavery. You get paid in bare minimum living expenses.

</comment></comment></comment></comment><comment><USER22> Tl;dr: Seattle firms need to pay employees decently which is bad for hungry right-wing journalist's wallet.

(Edit: my argument is not that this is somehow a bad thing to write, but that it's an opinion piece disguised as neutral reporting)

<comment><USER23> Seriously. "the consequences of high minimum wages, excessive taxation, and mandate-happy public policy are not limited to the death of cheap sandwiches." No leap to conclusions about causality there. Nope. Can't possibly be that greedy bastards simply used this policy change as an excuse to make a statement.

<comment><USER24> Haha. You and I both just simultaneously quoted the same absurdity and both followed it up with sarcasm. :)</comment></comment></comment>


Stanza: A Python natural language processing toolkit for many human languages - <AUTHOR> https://arxiv.org/abs/2003.07082 <comment><USER2> I was rather curious to see how this handled Garden Path Sentences[0]. For "The old man the boat.", Stanza interprets "man" as a noun rather than a verb. Similarly, for "The complex houses married and single soldiers and their families." "houses" is also interpreted as a noun rather than a verb. These sentences are mostly corner-cases, but was an interesting little experiment nonetheless.

[0] [https://en.wikipedia.org/wiki/Garden- path_sentence](https://en.wikipedia.org/wiki/Garden-path_sentence)

<comment><USER3> Most humans struggle when reading garden-path sentences, so I would be quite impressed if an NLP toolkit handled them easily out-of-the-box.

EDIT: On a related note, when I was an undergrad there was a group on campus that was doing research on how humans repair garden-path sentences when their first reading is incorrect. They were measuring ERPs to see if something akin to a backtracking algorithm was used + eye-tracking to see which word/words triggered the repair. I graduated before the work was complete, but I might go digging for it to see if it was ever published.

EDIT 2: Apparently this is better researched than I realized: [https://en.wikipedia.org/wiki/P600_(neuroscience)](https://en.wikipedia.org/wiki/P600_\(neuroscience\))

<comment><USER4> Very interesting! Thanks for the link, and if you find out more about the research the group at you uni was doing, please post!

</comment></comment></comment><comment><USER5> This does use spaCy for english tokenization, but has a bit wider support for languages in general.

eg spaCy has just finished their Chinese models in beta Discussion: [https://github.com/howl- anderson/Chinese_models_for_SpaCy/is...](https://github.com/howl- anderson/Chinese_models_for_SpaCy/issues/26)

<comment><USER6> You can use spacy for english tokenization or you can use their neural model. The neural model will generally do better, especially sentence segmentation, but will be slower.

</comment></comment><comment><USER7> Nice to see an alternative or rather a complementary library to the well worn nltk.

Hopefully Stanza provides for supplemental training for their models.

<comment><USER8> NLTK, for my uses, has been dethroned by Spacy for years now. I'm very curious to see how Stanza compares. It looks like it's built on PyTorch, so very interested to check it out.

<comment><USER9> Interestingly I had trouble using Spacy as it requires an internet connection to AWS to load their models and therefore work. This was blocked by deep packet inspection in my use case.

I looked a bit for a workaround but finally decided to just do the work in NLTK.

That's one disadvantage of Spacy.

<comment><USER5> you can absolutely download the models locally:

# download best-matching version of specific model for your spaCy installation

      python -m spacy download en_core_web_sm

</comment></comment></comment></comment><comment><USER10> This is basically hugging face with more languages?

<comment><USER11> The BERT multilingual models from HuggingFace [1] have even more languages than Stanza (100+ vs. 66) .

Edit: And they also have a pipeline abstraction [2], so you could say that HuggingFace is also a full toolkit.

[1]: [https://huggingface.co/transformers/multilingual.html](https://huggingface.co/transformers/multilingual.html)

[2]: [https://huggingface.co/transformers/main_classes/pipelines.h...](https://huggingface.co/transformers/main_classes/pipelines.html)

</comment></comment><comment><USER12> How does this differ from stanfordnlp (the previous version)? Is this simply a rebranding of stanfordnlp?

</comment><comment><USER13> First glance at the examples in the repo (not in depth by any means), I'm getting a lot of spacy vibes.

</comment><comment><USER14> Do these libraries use deep learning models? It's not entirely clear from the doco.

</comment><comment><USER15> You can also try out Stanza in spaCy --- Ines updated the spacy-stanfordnlp wrapper to use the new version pretty much immediately: [https://github.com/explosion/spacy- stanza](https://github.com/explosion/spacy-stanza)

I was asked by a friend about Stanza in a private DM, I'll paste the answer here as I think others might find it helpful:

        Q: are stanza models more accurate and consistent than
        spacy as this tweet claims?

        A: Yeah definitely, our models are quite a bit behind
        state-of-the-art atm because we're still optimized for
        CPU. We're hoping to have a spacy-nightly up soon that
        builds on the new version of Thinc.

        The main thing we want to do differently is having
        shared encoding layers across the pipeline, with several
        components backproping to at least some shared layers of
        that. So that took a fair bit of redesign, especially to
        make sure that people could customize it well.

        We never released models that were built on wide and
        deep BiLSTM architectures because we see that as an
        unappealing speed/accuracy trade-off. It also makes the
        architecture hard to train on few examples, it's very
        hyper-parameter intensive which is bad for Prodigy.

        Their experiments do undercount us a bit, especially
        since they didn't use pretrained vectors, while they
        did use pretrained vectors for their own and Flair's
        models. We also perform really poorly on the CoNLL-03
        task. I've never understood why --- I hate that dataset.
        I looked at it and it's like, these soccer match
        reports, and the dev and test sets don't correlate well.
        So I've never wanted to figure out why we do poorly on
        that data specifically.

As an example of what I mean by "under counting", we can get to 78% on the GermEval data, while their table has as on 68%, while FLAIR and Stanza are on 85%. So we're still behind, but by less. The thing is, the difference between 85 and 78 is actually quite a lot -- probably more than most people would intuit.

I hope we can get back to them with some updates for specific figures, or perhaps some datasets can be shown as missing values for spaCy. Running experiments with a bunch of different software and making sure it's all 100% compatible is pretty tedious, and it won't add much information. The bottom- line anyone should care about is, "Am I likely to see a difference in accuracy between Stanza and spaCy on my problem". At the moment I think the answer is "yes". (Although spaCy's default models are still cheaper to run on large datasets).

We're a bit behind the current research atm, and the improvements from that research are definitely real. We're looking forward to releasing new models, but in the meantime you can also use the Stanza models with very little change to your spaCy code, to see if they help on your problem.

</comment><comment><USER16> I'd like to know:

How the language model-based tokenizers fare on domain-specific documents, since language models don't have context for unknown tokens.

Are language model-based tokenizers any better at identifying abbreviations than rule-based ones?</comment>


Raytheon has secretly created tracking software to predict movements - <AUTHOR> http://launch.co/story/raytheon-has-secretly-developed-software-capable-of-tracking-peoples-movements-and-predicting

<comment><USER2> <http://news.ycombinator.com/item?id=5196888></comment>


Show HN: Monocle – Minimalist and productivity-focused news reader - <AUTHOR> https://monoclereader.com/ <comment><USER2> Cool. I gotta congratulate you on the copy. It might sound like a backhanded compliment, but I have a lot of respect for how you managed to pitch some of the limitations (desktop only, no Readability) as features. It comes across as a very specific vision, and makes it sound more compelling.

<comment><AUTHOR> Thanks man, appreciate it!</comment></comment>


Scientists find 7.2M-year-old pre-human remains in the Balkans - <AUTHOR> https://www.phys.org/news/2017-05-scientists-million-year-old-pre-human-balkans.html <comment><USER2> I'm not remotely an anthropologist, but my very-simple take on this is that it has no impact on the out-of-africa hypothesis which happened relatively recently (~60k years ago) -- this just suggests that ~7mm years ago, earlier human hominids were found in Europe.

(think, maybe Lucy's ancestors came from Bulgaria. or had a dead family tree which lived in Bulgaria.)

<comment><USER3> Rather than disputing the out of Africa theory, it seems to propose an earlier "into africa" stage. It may lend some credence to the multi-regional hypothesis though.

<comment><USER4> [http://www.bbc.com/earth/story/20151013-how-interbreeding- sh...](http://www.bbc.com/earth/story/20151013-how-interbreeding-shaped-us)

Seems likely.

</comment></comment></comment><comment><USER5> For a somewhat skeptical take: [http://johnhawks.net/weblog/fossils/miocene/graecopithecus/g...](http://johnhawks.net/weblog/fossils/miocene/graecopithecus/graecopithecus- fuss-2017.html)

<comment><USER6> This is a good take which, IMHO, fits the dominant out-of-Africa data

Quote: >I think we should take seriously that Graecopithecus premolar root morphology may be yet another demonstration that supposed "hominin" characters actually evolved in other branches of apes during the Miocene. This feature is far from alone. Many other features that supposedly link Ardipithecus or Sahelanthropus with hominins are also found in other Miocene fossils. My colleagues and I documented some of these Miocene ape-like features in Sahelanthropus in 2006.

So the tooth-form that appears only in hominins could not be a marker, but a very similar tooth-form could have developed in non-hominins

</comment></comment><comment><USER7> The human evolutionary 'tree' is very tangled, and evidence exists for the emergence of homonim from Africa, some of which moved into Europe, and some of which could have then possibly migrated back to Africa. As sea levels rose and fell, new routes were forged or land disappeared, enabling all this back and forth.

Homo Sapiens is a descendant of this tree, and emerged from Africa. So that has not changed. What they find is that a hominim in Europe could have been an ancestor to Homo Sapiens way back in the tree. So the potential explanation is that this or a descendant found its way to Africa, and then gave rise eventually to Homo Sapiens.

<comment><USER8> >So the potential explanation is that this or a descendant found its way to Africa, and then gave rise eventually to Homo Sapiens.

given that Mediterranean dried out completely about 1M years later, back then there weren't 2 different things - Europe and Africa - like today, just a huge valley where may be a large part of our ancestors' evolution took place.

<comment><USER9> Wow, did not know that. The idea that the Mediterranean was a huge valley with some areas more than a mile below sea level is crazy.

[https://en.m.wikipedia.org/wiki/Messinian_salinity_crisis](https://en.m.wikipedia.org/wiki/Messinian_salinity_crisis)

</comment></comment></comment><comment><USER10> This article goes into the supporters and detractors of the research

[https://www.newscientist.com/article/2132026-our-common- ance...](https://www.newscientist.com/article/2132026-our-common-ancestor- with-chimps-may-be-from-europe-not-africa/)

</comment><comment><USER11> Could someone "explain like I'm five" the article?

<comment><USER12> They found two really old skeletons in Europe that are older than other skeletons. They are skeletons of a "modern"-ish human. They know because the teeth of the skeletons have a specific thing that the teeth of humans have but not the teeth of other primates.

The older skeleton is 1 million years older than old skeletons found in Africa. So now the oldest skeletons that we know about come from Europe not Africa, raising the possibility that humans evolved in Europe.

<comment><USER13> > They know because the teeth of the skeletons have a specific thing that the > teeth of humans have but not the teeth of other primates.

What is the "specific thing"?

<comment><USER14> I don't care to explain like to a five year old, but the authors of the paper propose that only the modern human lineage have a total of four premolars in the lower jaw with a single root each. They claim these were never present in other hominid species.

<comment><USER15> I was under the impression that it was because humans learned to control fire, meaning we could eat softer food which altered the human teeth. However, 7.2m years massively predates our current understanding of when fire was first utilised..

</comment></comment></comment></comment></comment><comment><USER16> an idea: Early humans walked a lot. We might have been season movers.

</comment><comment><USER17> TL;DR: They found some fossils in Greece and Bulgaria, the jaws and teeth of which suggest they belonged to an evolutionary ancestor of _Homo sapiens sapiens_ , and which seem to be older than any other such fossil records.

"If this status is confirmed by additional fossil evidence, Graecopithecus would be the oldest known hominin..." where _hominin_ is defined in the paper to mean "humans and their non-ape ancestors".

EDIT: phrasing and clarity.

<comment><USER18> it's weird to find just one fossil, with all the excavations going on and around in Europe.

<comment><USER19> There are roughly about 200 Neanderthal/Denisovan/older skeletons (whole or partially) found. Or, according to 'A short history of nearly everything', the amount of bones of our ancient ancestors fit in the back of a small pickup truck.

Let that sink in: over 4 million years of human history, and all remains we have found fit in the back of a pickup truck.

Scientists draw conclusions based on evidence found, but truth is, we really don't know that much about our ancestors. The vast majority of bones don't fossilize and just decay. You can excavate all you want, but it takes very specific circumstances for organic material to be preserved over a course of hundreds of thousands or even millions of years. Most of it is just gone.

<comment><USER20> Add that that humans millions years ago were not in billions as today. They were actually in very small numbers, like tens of thousands on the entire planet.

</comment></comment></comment></comment><comment><USER21> The title on this needs to be corrected to match the article.

<comment><USER22> "Potential hominin affinities of Graecopithecus from the Late Miocene of Europe"

I have no idea what that even says :(

<comment><USER23> I'll take a stab

"Evolutionary Ancestors of Modern Humans Originate from Greece Instead of Africa"

<comment><USER24> Some people may read it as immediate ancestors. But I don't know how we can clarify that in a succinct manner.

</comment></comment></comment></comment><comment><USER23> This is #1 on the front page right now. 41 people have voted for it.

Please, someone explain this article; I like others have noted, have no idea what is going on and the title is a fairly large claim (at least from my understanding which is that of a high schooler's).

<comment><USER25> While there's little doubt of a "recent" spread of humanity out of Africa, 100 000 years ago or so and also development of earlier humans there. This is perhaps what you've learned. But this article talks about an earlier period of time, it discusses some fossils in Greece / Bulgaria that are some 7 million year old and are more human than ape. It's possible that the well known and documented development of humanity in Africa was preceded by a migration of these into Africa perhaps seeking warmer places during a cooler period millions of years ago. We simple do not know much about the transition from ape to human and this might be an important step. An emphasis on might. We know little.

</comment></comment><comment><USER26> The title is misleading (as written on HN) because the meaning of "hominim" is more to do with what we, humans, and other hominim (like neanderthals etc) evolved from. See linked chart:

[http://1.bp.blogspot.com/-yEUEavwMSCE/ULtMp3e_cVI/AAAAAAAAAD...](http://1.bp.blogspot.com/-yEUEavwMSCE/ULtMp3e_cVI/AAAAAAAAADQ/Y_JxBB5ag0s/s1600/familytree_page.tif)

This isn't our specific species but rather whatever we and similar species evolved from.

I'm absolutely no expert on the subject.

I actually find the title offensive if I'm right but I'd happily be wrong. Mostly because I'm sensitive to how unlikely it is people are up voting this because they understand it and rather they want it to reflect their world views.

Edit: for those downvoting me, could you explain why? I'm happy to learn. It's just weird to see a sudden surge in down votes with no comments explaining how I am ignorant or wrong.

<comment><USER27> Adding on to this:

The human ancestors before this single instance were all from Africa. This title picks one particular definition of human and uses that as the basis for its claim. The ancestors of this species were certainly from Africa, and many later human descendants were also from Africa. Africa has much stronger ties to Human kind's birth than Europe does.

Also, it's very possible that this species died out and left no descendants. There are many examples of this at many stages in humanity's histories-- Paranthropus robustus, homo neanderthalensis, and Denisovans. If a common ancestor of Anatomically Modern Homo Sapiens really originated in Europe, we should be finding more evidence soon. Even if we find more evidence of that, we still can't say that Europe is the birthplace of mankind, because so much of Mankind's evolution (Homo erectus, Homo heidelbergensis, etc) took place in Africa.

It's just silly to call Europe the birthplace of mankind.

<comment><USER28> Maybe it's silly to say that either Africa or the Mediterranean (or wherever) is "the birthplace of mankind". That is, maybe there was considerable migration and interbreeding throughout the process. We know now that both Neanderthals and Denisovans contributed to the modern human genome. So why not more backcrossing, going back further?

<comment><USER3> This is known as the multi-regional hypothesis: [https://en.wikipedia.org/wiki/Multiregional_origin_of_modern...](https://en.wikipedia.org/wiki/Multiregional_origin_of_modern_humans)

</comment></comment></comment></comment><comment><USER29> Article title: Potential hominin affinities of Graecopithecus from the Late Miocene of Europe

</comment><comment><USER30> What is up with the resurgence of euro-pride among young white guys? I'm genuinely curious were it's coming from, it definitely feels like a new phenomenon in the last 2-3 years.

<comment><USER31> It's push back against the toxic strands of SJW culture that have gone from "diversity is good" to "white culure is bad".

It's a small but very vocal branch of SJWs against a small and very vocal branch of counter SJWs, but both sides of it are in a meme war (using the scientific definition of meme: a mechanism to transfer ideas and culture) and the effects of their culture clashes are large enough for you and I to notice.

<comment><USER32> Is it really so toxic to point out that the average white male in American society enjoys certain privileges that are unavailable to the average member of any other class? Or that the average black male is subject to multiple _dis_ advantages that members of other classes don't usually experience?

Also, the use of the term SJW might appear 'edgy' but its overuse has turned it into a marker of nothing but intellectual vapidity.

<comment><USER33> See it like this: You know how the other side has those incredibly stupid people who can't even make a coherent argument, tout a blog post as a credible source and react to rational argument with insults and threats?

Well, your side has them, too. If you care about social issues, they are toxic SJWs. If you are a patriot, they are white supremacists. If you are a Muslim, they are Islamist terrorists.

Arguments are not soldiers [0]. Don't let a disagreement turn into a war. If you see someone support a cause you care about, but for the wrong reasons; and do so in a manner that alienates anyone who disagrees, you should call them out on it.

[0] [http://lesswrong.com/lw/gz/policy_debates_should_not_appear_...](http://lesswrong.com/lw/gz/policy_debates_should_not_appear_onesided/)

</comment></comment></comment></comment><comment><USER34> I knew it!

<comment><USER35> How?

Aside from that, this are just the oldest known fossils with human traits, how will your world view change if we find evidence of an even older ancestor outside Europe?

</comment></comment><comment><USER36> The problem with these scientists is they are far too young to have played Ultima II and thus missed out on the opportunity to learn about Pangea.

</comment><comment><USER37> Look up Kumari Kandam for what (we) Tamils think as the origin of mankind.

Edit - Not sure why I am being downvoted. I didn't claim it to be true. It seemed relevant and a lot of folks around me believe it.

<comment><USER3> TLDR: It's Lemuria, the Atlantis of the subcontinent ([https://en.wikipedia.org/wiki/Kumari_Kandam](https://en.wikipedia.org/wiki/Kumari_Kandam)). It has about as much relevance as the biblical garden of eden.</comment></comment>